/* * Copyright (C) 2004-2015 L2J DataPack * * This file is part of L2J DataPack. * * L2J DataPack is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * L2J DataPack is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ package quests.Q00114_ResurrectionOfAnOldManager; import quests.Q00121_PavelTheGiant.Q00121_PavelTheGiant; import com.l2jserver.gameserver.ai.CtrlIntention; import com.l2jserver.gameserver.model.actor.L2Attackable; import com.l2jserver.gameserver.model.actor.L2Character; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.itemcontainer.Inventory; import com.l2jserver.gameserver.model.quest.Quest; import com.l2jserver.gameserver.model.quest.QuestState; import com.l2jserver.gameserver.model.quest.State; import com.l2jserver.gameserver.network.NpcStringId; import com.l2jserver.gameserver.network.clientpackets.Say2; import com.l2jserver.gameserver.network.serverpackets.NpcSay; /** * Resurrection of an Old Manager (114)
* Original Jython script by Kerberos * @author malyelfik */ public class Q00114_ResurrectionOfAnOldManager extends Quest { // NPCs private static final int NEWYEAR = 31961; private static final int YUMI = 32041; private static final int STONES = 32046; private static final int WENDY = 32047; private static final int BOX = 32050; // Items private static final int STARSTONE = 8287; private static final int LETTER = 8288; private static final int STARSTONE2 = 8289; private static final int DETCTOR = 8090; private static final int DETCTOR2 = 8091; // Monster private static final int GUARDIAN = 27318; private static L2Attackable golem = null; public Q00114_ResurrectionOfAnOldManager() { super(114, Q00114_ResurrectionOfAnOldManager.class.getSimpleName(), "Resurrection of an Old Manager"); addStartNpc(YUMI); addTalkId(YUMI, WENDY, BOX, STONES, NEWYEAR); addKillId(GUARDIAN); addSeeCreatureId(STONES); registerQuestItems(STARSTONE, STARSTONE2, DETCTOR, DETCTOR2, LETTER); } @Override public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { final QuestState st = getQuestState(player, false); if (st == null) { return null; } String htmltext = event; switch (event) { // Yumi case "32041-04.htm": st.startQuest(); break; case "32041-08.html": st.set("talk", "1"); break; case "32041-09.html": st.setCond(2, true); st.unset("talk"); break; case "32041-12.html": switch (st.getCond()) { case 3: htmltext = "32041-12.html"; break; case 4: htmltext = "32041-13.html"; break; case 5: htmltext = "32041-14.html"; break; } break; case "32041-15.html": st.set("talk", "1"); break; case "32041-23.html": st.set("talk", "2"); break; case "32041-26.html": st.setCond(6, true); st.unset("talk"); break; case "32041-31.html": st.giveItems(DETCTOR, 1); st.setCond(17, true); break; case "32041-34.html": st.set("talk", "1"); st.takeItems(DETCTOR2, 1); break; case "32041-38.html": if (st.getInt("choice") == 2) { htmltext = "32041-37.html"; } break; case "32041-39.html": st.unset("talk"); st.setCond(20, true); break; case "32041-40.html": st.setCond(21, true); st.unset("talk"); st.giveItems(LETTER, 1); break; // Suspicious-Looking Pile of Stones case "32046-03.html": st.setCond(19, true); break; case "32046-07.html": st.addExpAndSp(1846611, 144270); st.exitQuest(false, true); break; // Wendy case "32047-02.html": if (st.getInt("talk") == 0) { st.set("talk", "1"); } break; case "32047-03.html": if (st.getInt("talk1") == 0) { st.set("talk1", "1"); } break; case "32047-05.html": if ((st.getInt("talk") == 0) || (st.getInt("talk1") == 0)) { htmltext = "32047-04.html"; } break; case "32047-06.html": st.set("choice", "1"); st.setCond(3, true); st.unset("talk1"); st.unset("talk"); break; case "32047-07.html": st.set("choice", "2"); st.setCond(4, true); st.unset("talk1"); st.unset("talk"); break; case "32047-09.html": st.set("choice", "3"); st.setCond(5, true); st.unset("talk1"); st.unset("talk"); break; case "32047-14ab.html": st.set("choice", "3"); st.setCond(7, true); break; case "32047-14b.html": st.setCond(10, true); break; case "32047-15b.html": if ((golem == null) || ((golem != null) && golem.isDead())) { golem = (L2Attackable) addSpawn(GUARDIAN, 96977, -110625, -3280, 0, false, 0); golem.broadcastPacket(new NpcSay(golem.getObjectId(), Say2.NPC_ALL, golem.getId(), NpcStringId.YOU_S1_YOU_ATTACKED_WENDY_PREPARE_TO_DIE).addStringParameter(player.getName())); golem.setRunning(); golem.addDamageHate(player, 0, 999); golem.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, player); st.set("spawned", "1"); startQuestTimer("golem_despawn", 300000, null, player); } else if (st.getInt("spawned") == 1) { htmltext = "32047-17b.html"; } else { htmltext = "32047-16b.html"; } break; case "32047-20a.html": st.setCond(8, true); break; case "32047-20b.html": st.setCond(12, true); break; case "32047-20c.html": st.setCond(13, true); break; case "32047-21a.html": st.setCond(9, true); break; case "32047-23a.html": st.setCond(23, true); break; case "32047-23c.html": st.takeItems(STARSTONE, 1); st.setCond(15, true); break; case "32047-29c.html": if (player.getAdena() >= 3000) { st.giveItems(STARSTONE2, 1); st.takeItems(Inventory.ADENA_ID, 3000); st.unset("talk"); st.setCond(26, true); } else { htmltext = "32047-29ca.html"; } break; case "32047-30c.html": st.set("talk", "1"); break; // Box case "32050-01r.html": st.set("talk", "1"); break; case "32050-03.html": st.giveItems(STARSTONE, 1); st.setCond(14, true); st.unset("talk"); break; case "32050-05.html": st.setCond(24, true); st.giveItems(STARSTONE2, 1); break; // Newyear case "31961-02.html": st.takeItems(LETTER, 1); st.giveItems(STARSTONE2, 1); st.setCond(22, true); break; // Quest timer case "golem_despawn": st.unset("spawned"); golem.broadcastPacket(new NpcSay(golem.getObjectId(), Say2.NPC_ALL, golem.getId(), NpcStringId.S1_YOUR_ENEMY_WAS_DRIVEN_OUT_I_WILL_NOW_WITHDRAW_AND_AWAIT_YOUR_NEXT_COMMAND).addStringParameter(player.getName())); golem.deleteMe(); golem = null; htmltext = null; break; // HTMLs case "32041-05.html": case "32041-06.html": case "32041-07.html": case "32041-17.html": case "32041-18.html": case "32041-19.html": case "32041-20.html": case "32041-21.html": case "32041-22.html": case "32041-25.html": case "32041-29.html": case "32041-30.html": case "32041-35.html": case "32041-36.html": case "32046-05.html": case "32046-06.html": case "32047-06a.html": case "32047-12a.html": case "32047-12b.html": case "32047-12c.html": case "32047-13a.html": case "32047-14a.html": case "32047-13b.html": case "32047-13c.html": case "32047-14c.html": case "32047-15c.html": case "32047-17c.html": case "32047-13ab.html": case "32047-15a.html": case "32047-16a.html": case "32047-16c.html": case "32047-18a.html": case "32047-19a.html": case "32047-18ab.html": case "32047-19ab.html": case "32047-18c.html": case "32047-17a.html": case "32047-19c.html": case "32047-21b.html": case "32047-27c.html": case "32047-28c.html": break; default: htmltext = null; break; } return htmltext; } @Override public String onKill(L2Npc npc, L2PcInstance player, boolean isSummon) { final QuestState st = getQuestState(player, false); if ((st != null) && st.isCond(10) && (st.getInt("spawned") == 1)) { npc.broadcastPacket(new NpcSay(npc.getObjectId(), Say2.NPC_ALL, npc.getId(), NpcStringId.THIS_ENEMY_IS_FAR_TOO_POWERFUL_FOR_ME_TO_FIGHT_I_MUST_WITHDRAW)); st.setCond(11, true); st.unset("spawned"); cancelQuestTimers("golem_despawn"); } return super.onKill(npc, player, isSummon); } @Override public String onSeeCreature(L2Npc npc, L2Character creature, boolean isSummon) { if (creature.isPlayer()) { final QuestState st = creature.getActingPlayer().getQuestState(getName()); if ((st != null) && st.isCond(17)) { st.takeItems(DETCTOR, 1); st.giveItems(DETCTOR2, 1); st.setCond(18, true); showOnScreenMsg(creature.getActingPlayer(), NpcStringId.THE_RADIO_SIGNAL_DETECTOR_IS_RESPONDING_A_SUSPICIOUS_PILE_OF_STONES_CATCHES_YOUR_EYE, 2, 4500); } } return super.onSeeCreature(npc, creature, isSummon); } @Override public String onTalk(L2Npc npc, L2PcInstance player) { String htmltext = getNoQuestMsg(player); final QuestState st = getQuestState(player, true); if (st == null) { return getNoQuestMsg(player); } int talk = st.getInt("talk"); switch (npc.getId()) { case YUMI: switch (st.getState()) { case State.CREATED: final QuestState prev = player.getQuestState(Q00121_PavelTheGiant.class.getSimpleName()); if ((prev != null) && prev.isCompleted()) { htmltext = (player.getLevel() >= 70) ? "32041-02.htm" : "32041-03.htm"; } else { htmltext = "32041-01.htm"; } break; case State.STARTED: switch (st.getCond()) { case 1: htmltext = (talk == 1) ? "32041-08.html" : "32041-04.htm"; break; case 2: htmltext = "32041-10.html"; break; case 3: case 4: case 5: switch (talk) { case 0: htmltext = "32041-11.html"; break; case 1: htmltext = "32041-16.html"; break; case 2: htmltext = "32041-24.html"; break; } break; case 6: case 7: case 8: case 10: case 11: case 13: case 14: case 15: htmltext = "32041-27.html"; break; case 9: case 12: case 16: htmltext = "32041-28.html"; break; case 17: case 18: htmltext = "32041-32.html"; break; case 19: htmltext = (talk == 1) ? "32041-34z.html" : "32041-33.html"; break; case 20: htmltext = "32041-39z.html"; break; case 21: htmltext = "32041-40z.html"; break; case 22: case 25: case 26: st.setCond(27, true); htmltext = "32041-41.html"; break; case 27: htmltext = "32041-42.html"; break; } break; case State.COMPLETED: htmltext = getAlreadyCompletedMsg(player); break; } break; case WENDY: if (st.isStarted()) { switch (st.getCond()) { case 2: htmltext = ((talk == 1) && (st.getInt("talk1") == 1)) ? "32047-05.html" : "32047-01.html"; break; case 3: htmltext = "32047-06b.html"; break; case 4: htmltext = "32047-08.html"; break; case 5: htmltext = "32047-10.html"; break; case 6: switch (st.getInt("choice")) { case 1: htmltext = "32047-11a.html"; break; case 2: htmltext = "32047-11b.html"; break; case 3: htmltext = "32047-11c.html"; break; } break; case 7: htmltext = "32047-11c.html"; break; case 8: htmltext = "32047-17a.html"; break; case 9: case 12: case 16: htmltext = "32047-25c.html"; break; case 10: htmltext = "32047-18b.html"; break; case 11: htmltext = "32047-19b.html"; break; case 13: htmltext = "32047-21c.html"; break; case 14: htmltext = "32047-22c.html"; break; case 15: st.setCond(16, true); htmltext = "32047-24c.html"; break; case 20: if (st.getInt("choice") == 1) { htmltext = "32047-22a.html"; } else { htmltext = (talk == 1) ? "32047-31c.html" : "32047-26c.html"; } break; case 23: htmltext = "32047-23z.html"; break; case 24: st.setCond(25, true); htmltext = "32047-24a.html"; break; case 25: htmltext = "32047-24a.html"; break; case 26: htmltext = "32047-32c.html"; break; } } break; case NEWYEAR: if (st.isStarted()) { switch (st.getCond()) { case 21: htmltext = "31961-01.html"; break; case 22: htmltext = "31961-03.html"; break; } } break; case BOX: if (st.isStarted()) { switch (st.getCond()) { case 13: htmltext = (talk == 1) ? "32050-02.html" : "32050-01.html"; break; case 14: htmltext = "32050-04.html"; break; case 23: htmltext = "32050-04b.html"; break; case 24: htmltext = "32050-05z.html"; break; } } break; case STONES: if (st.isStarted()) { switch (st.getCond()) { case 18: htmltext = "32046-02.html"; break; case 19: htmltext = "32046-03.html"; break; case 27: htmltext = "32046-04.html"; break; } } break; } return htmltext; } }