/* * 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.Q00128_PailakaSongOfIceAndFire; import com.l2jserver.gameserver.enums.QuestSound; import com.l2jserver.gameserver.instancemanager.InstanceManager; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.entity.Instance; 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; /** * Pailaka - Song of Ice and Fire (128) * @author Gnacik, St3eT */ public final class Q00128_PailakaSongOfIceAndFire extends Quest { // NPCs private static final int ADLER1 = 32497; private static final int ADLER2 = 32510; private static final int SINAI = 32500; private static final int INSPECTOR = 32507; private static final int HILLAS = 18610; private static final int PAPION = 18609; private static final int KINSUS = 18608; private static final int GARGOS = 18607; private static final int ADIANTUM = 18620; // Items private static final int SWORD = 13034; private static final int ENH_SWORD1 = 13035; private static final int ENH_SWORD2 = 13036; private static final int BOOK1 = 13130; private static final int BOOK2 = 13131; private static final int BOOK3 = 13132; private static final int BOOK4 = 13133; private static final int BOOK5 = 13134; private static final int BOOK6 = 13135; private static final int BOOK7 = 13136; private static final int WATER_ESSENCE = 13038; private static final int FIRE_ESSENCE = 13039; private static final int SHIELD_POTION = 13032; private static final int HEAL_POTION = 13033; private static final int FIRE_ENHANCER = 13040; private static final int WATER_ENHANCER = 13041; private static final int[] REWARDS = { 13294, // Pailaka Ring 13293, // Pailaka Earring 736, // Scroll of Escape }; // Skills private static SkillHolder VITALITY_REPLENISHING = new SkillHolder(5774, 1); // Misc private static final int MIN_LEVEL = 36; private static final int MAX_LEVEL = 42; private static final int EXIT_TIME = 5; public Q00128_PailakaSongOfIceAndFire() { super(128, Q00128_PailakaSongOfIceAndFire.class.getSimpleName(), "Pailaka - Song of Ice and Fire"); addStartNpc(ADLER1); addTalkId(ADLER1, ADLER2, SINAI, INSPECTOR); addKillId(HILLAS, PAPION, KINSUS, GARGOS, ADIANTUM); registerQuestItems(SWORD, ENH_SWORD1, ENH_SWORD2, BOOK1, BOOK2, BOOK3, BOOK4, BOOK5, BOOK6, BOOK7, WATER_ESSENCE, FIRE_ESSENCE, SHIELD_POTION, HEAL_POTION, FIRE_ENHANCER, WATER_ENHANCER); } @Override public final String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { String htmltext = null; final QuestState st = getQuestState(player, false); if (st == null) { return getNoQuestMsg(player); } switch (event) { case "32500-02.htm": case "32500-03.htm": case "32500-04.htm": case "32500-05.htm": case "32497-02.htm": case "32507-07.htm": case "32497-04.htm": { htmltext = event; break; } case "32497-03.htm": { if (!st.isStarted()) { st.startQuest(); htmltext = event; } break; } case "32500-06.htm": { if (st.isCond(1)) { st.setCond(2, true); giveItems(player, SWORD, 1); giveItems(player, BOOK1, 1); htmltext = event; } break; } case "32507-04.htm": { if (st.isCond(3)) { st.setCond(4, true); takeItems(player, SWORD, -1); takeItems(player, WATER_ESSENCE, -1); takeItems(player, BOOK2, -1); giveItems(player, BOOK3, 1); giveItems(player, ENH_SWORD1, 1); htmltext = event; } break; } case "32507-08.htm": { if (st.isCond(6)) { st.setCond(7, true); takeItems(player, ENH_SWORD1, -1); takeItems(player, BOOK5, -1); takeItems(player, FIRE_ESSENCE, -1); giveItems(player, ENH_SWORD2, 1); giveItems(player, BOOK6, 1); htmltext = event; } break; } case "32510-02.htm": { st.exitQuest(false, true); Instance inst = InstanceManager.getInstance().getInstance(npc.getInstanceId()); inst.setDuration(EXIT_TIME * 60000); inst.setEmptyDestroyTime(0); if (inst.containsPlayer(player.getObjectId())) { npc.setTarget(player); npc.doCast(VITALITY_REPLENISHING.getSkill()); addExpAndSp(player, 810000, 50000); for (int id : REWARDS) { giveItems(player, id, 1); } } htmltext = event; break; } } return htmltext; } @Override public final 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 ADLER1: { switch (st.getState()) { case State.CREATED: { if (player.getLevel() < MIN_LEVEL) { htmltext = "32497-05.htm"; } else if (player.getLevel() > MAX_LEVEL) { htmltext = "32497-06.htm"; } else { htmltext = "32497-01.htm"; } break; } case State.STARTED: { if (st.getCond() > 1) { htmltext = "32497-00.htm"; } else { htmltext = "32497-03.htm"; } break; } case State.COMPLETED: { htmltext = "32497-07.htm"; break; } default: { htmltext = "32497-01.htm"; break; } } break; } case SINAI: { if (st.getCond() > 1) { htmltext = "32500-00.htm"; } else { htmltext = "32500-01.htm"; } break; } case INSPECTOR: { switch (st.getCond()) { case 1: { htmltext = "32507-01.htm"; break; } case 2: { htmltext = "32507-02.htm"; break; } case 3: { htmltext = "32507-03.htm"; break; } case 4: case 5: { htmltext = "32507-05.htm"; break; } case 6: { htmltext = "32507-06.htm"; break; } default: { htmltext = "32507-09.htm"; break; } } break; } case ADLER2: { if (st.isCompleted()) { htmltext = "32510-00.htm"; } else if (st.isCond(9)) { htmltext = "32510-01.htm"; } break; } } return htmltext; } @Override public final String onKill(L2Npc npc, L2PcInstance player, boolean isSummon) { final QuestState st = getQuestState(player, false); if ((st != null) && st.isStarted()) { switch (npc.getId()) { case HILLAS: { if (st.isCond(2)) { st.setCond(3); playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); takeItems(player, BOOK1, -1); giveItems(player, BOOK2, 1); giveItems(player, WATER_ESSENCE, 1); } addSpawn(PAPION, -53903, 181484, -4555, 30456, false, 0, false, npc.getInstanceId()); break; } case PAPION: { if (st.isCond(4)) { st.setCond(5); takeItems(player, BOOK3, -1); giveItems(player, BOOK4, 1); playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); } addSpawn(KINSUS, -61415, 181418, -4818, 63852, false, 0, false, npc.getInstanceId()); break; } case KINSUS: { if (st.isCond(5)) { st.setCond(6); playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); takeItems(player, BOOK4, -1); giveItems(player, BOOK5, 1); giveItems(player, FIRE_ESSENCE, 1); } addSpawn(GARGOS, -61354, 183624, -4821, 63613, false, 0, false, npc.getInstanceId()); break; } case GARGOS: { if (st.isCond(7)) { st.setCond(8); playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); takeItems(player, BOOK6, -1); giveItems(player, BOOK7, 1); } addSpawn(ADIANTUM, -53297, 185027, -4617, 1512, false, 0, false, npc.getInstanceId()); break; } case ADIANTUM: { if (st.isCond(8)) { st.setCond(9); playSound(player, QuestSound.ITEMSOUND_QUEST_MIDDLE); takeItems(player, BOOK7, -1); addSpawn(ADLER2, -53297, 185027, -4617, 33486, false, 0, false, npc.getInstanceId()); } break; } } } return super.onKill(npc, player, isSummon); } }