/* * 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.Q00615_MagicalPowerOfFirePart1; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.holders.SkillHolder; 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; /** * Magical Power of Fire - Part 1 (615) * @author Joxit */ public class Q00615_MagicalPowerOfFirePart1 extends Quest { // NPCs private static final int NARAN = 31378; private static final int UDAN = 31379; private static final int ASEFA_BOX = 31559; private static final int ASEFA_EYE = 31684; // Monsters private static final int[] KETRA_MOBS = { 21324, // Ketra Orc Footman 21325, // Ketra's War Hound 21327, // Ketra Orc Raider 21328, // Ketra Orc Scout 21329, // Ketra Orc Shaman 21331, // Ketra Orc Warrior 21332, // Ketra Orc Lieutenant 21334, // Ketra Orc Medium 21335, // Ketra Orc Elite Soldier 21336, // Ketra Orc White Captain 21338, // Ketra Orc Seer 21339, // Ketra Orc General 21340, // Ketra Orc Battalion Commander 21342, // Ketra Orc Grand Seer 21343, // Ketra Commander 21344, // Ketra Elite Guard 21345, // Ketra's Head Shaman 21346, // Ketra's Head Guard 21347, // Ketra Prophet 21348, // Prophet's Guard 21349, // Prophet's Aide }; // Items private static final int KEY = 1661; private static final int STOLEN_RED_TOTEM = 7242; private static final int WISDOM_STONE = 7081; private static final int RED_TOTEM = 7243; private static final int[] VARKA_MARKS = { 7221, // Mark of Varka's Alliance - Level 1 7222, // Mark of Varka's Alliance - Level 2 7223, // Mark of Varka's Alliance - Level 3 7224, // Mark of Varka's Alliance - Level 4 7225, // Mark of Varka's Alliance - Level 5 }; // Skills private static SkillHolder GOW = new SkillHolder(4547, 1); // Gaze of Watcher private static SkillHolder DISPEL_GOW = new SkillHolder(4548, 1); // Quest - Dispel Watcher Gaze // Misc private static final int MIN_LEVEL = 74; public Q00615_MagicalPowerOfFirePart1() { super(615, Q00615_MagicalPowerOfFirePart1.class.getSimpleName(), "Magical Power of Fire - Part 1"); addStartNpc(NARAN); addTalkId(UDAN, NARAN, ASEFA_BOX); addAttackId(KETRA_MOBS); registerQuestItems(STOLEN_RED_TOTEM); } @Override public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { final QuestState st = getQuestState(player, false); if (st == null) { return null; } String htmltext = null; switch (event) { case "31378-02.html": st.startQuest(); htmltext = event; break; case "open_box": if (!st.hasQuestItems(KEY)) { htmltext = "31559-02.html"; } else if (st.isCond(2)) { if (st.isSet("spawned")) { st.takeItems(KEY, 1); htmltext = "31559-04.html"; } else { st.giveItems(STOLEN_RED_TOTEM, 1); st.takeItems(KEY, 1); st.setCond(3, true); htmltext = "31559-03.html"; } } break; case "eye_despawn": npc.broadcastPacket(new NpcSay(npc, Say2.NPC_ALL, NpcStringId.ASEFA_HAS_ALREADY_SEEN_YOUR_FACE)); npc.deleteMe(); break; } return htmltext; } @Override public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon) { final QuestState st = getQuestState(attacker, false); if ((st != null) && st.isCond(2) && !st.isSet("spawned")) { st.set("spawned", "1"); npc.setTarget(attacker); npc.doCast(GOW.getSkill()); final L2Npc eye = addSpawn(ASEFA_EYE, npc); eye.broadcastPacket(new NpcSay(eye, Say2.NPC_ALL, NpcStringId.YOU_CANT_AVOID_THE_EYES_OF_ASEFA)); startQuestTimer("eye_despawn", 10000, eye, attacker); } return super.onAttack(npc, attacker, damage, isSummon); } @Override public String onTalk(L2Npc npc, L2PcInstance player) { String htmltext = getNoQuestMsg(player); final QuestState st = getQuestState(player, true); if (st == null) { return htmltext; } switch (npc.getId()) { case NARAN: switch (st.getState()) { case State.CREATED: htmltext = (player.getLevel() >= MIN_LEVEL) ? (hasAtLeastOneQuestItem(player, VARKA_MARKS)) ? "31378-01.htm" : "31378-00a.html" : "31378-00b.html"; break; case State.STARTED: if (st.isCond(1)) { htmltext = "31378-03.html"; } break; } break; case UDAN: if (st.isStarted()) { switch (st.getCond()) { case 1: htmltext = "31379-01.html"; st.setCond(2, true); break; case 2: if (st.isSet("spawned")) { st.unset("spawned"); npc.setTarget(player); npc.doCast(DISPEL_GOW.getSkill()); htmltext = "31379-03.html"; } else { htmltext = "31379-02.html"; } break; case 3: st.giveItems(RED_TOTEM, 1); st.giveItems(WISDOM_STONE, 1); st.exitQuest(true, true); htmltext = "31379-04.html"; break; } } break; case ASEFA_BOX: if (st.isCond(2)) { htmltext = "31559-01.html"; } break; } return htmltext; } }