@Override public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { String htmltext = event; QuestState st = player.getQuestState(qn); if (st == null) return htmltext; if (event.equalsIgnoreCase("30828-01.htm")) { st.set("cond", "1"); st.setState(STATE_STARTED); st.playSound(QuestState.SOUND_ACCEPT); } else if (event.equalsIgnoreCase("30828-03.htm") && st.hasQuestItems(TRIDENT)) { st.set("cond", "2"); st.takeItems(TRIDENT, 1); st.playSound(QuestState.SOUND_MIDDLE); } else if (event.equalsIgnoreCase("30828-05.htm")) { st.takeItems(MAP_PIECE, 30); st.giveItems(MAP, 1); st.set("cond", "4"); st.playSound(QuestState.SOUND_MIDDLE); } else if (event.equalsIgnoreCase("30735-06.htm")) { st.takeItems(MAP, 1); st.set("cond", "5"); st.playSound(QuestState.SOUND_MIDDLE); } else if (event.equalsIgnoreCase("30828-07.htm")) { st.giveItems(PET_TICKET, 1); st.playSound(QuestState.SOUND_FINISH); st.exitQuest(false); } return htmltext; }
private void rewards(QuestState st, int npcId) { switch (npcId) { case ORVEN: if (st.hasQuestItems(CRUCIFIX)) { st.set("success", "1"); st.takeItems(CRUCIFIX, -1); final int chance = Rnd.get(100); if (chance < 80) st.giveItems(1875, 19); else if (chance < 95) st.giveItems(952, 5); else st.giveItems(2437, 1); } break; case GARVARENTZ: if (st.hasQuestItems(OLD_TOTEM)) { st.set("success", "1"); st.takeItems(OLD_TOTEM, -1); final int chance = Rnd.get(100); if (chance < 55) st.giveItems(1882, 70); else if (chance < 99) st.giveItems(1881, 50); else st.giveItems(191, 1); } break; case KAIEN: if (st.hasQuestItems(OLD_HILT)) { st.set("success", "1"); st.takeItems(OLD_HILT, -1); final int chance = Rnd.get(100); if (chance < 60) st.giveItems(1874, 25); else if (chance < 85) st.giveItems(1887, 10); else if (chance < 99) st.giveItems(951, 1); else st.giveItems(133, 1); } break; case RODEMAI: if (st.hasQuestItems(OLD_KEY)) { st.set("success", "1"); st.takeItems(OLD_KEY, -1); final int chance = Rnd.get(100); if (chance < 80) st.giveItems(1879, 55); else if (chance < 95) st.giveItems(951, 1); else st.giveItems(885, 1); } break; } }
@Override public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { String htmltext = event; QuestState st = player.getQuestState(qn); if (st == null) return htmltext; if (event.equalsIgnoreCase("30754-04.htm")) { st.setState(STATE_STARTED); st.set("cond", "1"); st.playSound(QuestState.SOUND_ACCEPT); } else if (event.equalsIgnoreCase("30754-07.htm")) { if (st.get("success") != null) { st.set("cond", "1"); st.unset("success"); st.playSound(QuestState.SOUND_MIDDLE); } } else if (event.equalsIgnoreCase("30754-08.htm")) { st.playSound(QuestState.SOUND_FINISH); st.exitQuest(true); } else if (event.equalsIgnoreCase("30754-06.htm")) { if (!st.hasQuestItems(ARTICLE_DEAD_HERO)) htmltext = "30754-06a.htm"; else { final int amount = st.getQuestItemsCount(ARTICLE_DEAD_HERO); st.takeItems(ARTICLE_DEAD_HERO, -1); st.giveItems(57, amount * 60); // Special item, % based on actual number of qItems. if (Rnd.get(1000) < Math.min(10, Math.max(1, amount / 10))) htmltext = "30754-10.htm"; } } else if (event.equalsIgnoreCase("30754-11.htm")) { final int random = Rnd.get(4); if (random < 1) { htmltext = "30754-12.htm"; st.giveItems(OLD_KEY, 1); } else if (random < 2) { htmltext = "30754-13.htm"; st.giveItems(OLD_HILT, 1); } else if (random < 3) { htmltext = "30754-14.htm"; st.giveItems(OLD_TOTEM, 1); } else st.giveItems(CRUCIFIX, 1); st.set("cond", "2"); st.playSound(QuestState.SOUND_MIDDLE); } return htmltext; }
@Override public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { String htmltext = event; QuestState st = player.getQuestState(qn); if (st == null) return htmltext; if (event.equalsIgnoreCase("30686-2.htm")) { st.setState(STATE_STARTED); st.set("cond", "1"); st.playSound(QuestState.SOUND_ACCEPT); } else if (event.equalsIgnoreCase("30686-7.htm")) { final int count = st.getQuestItemsCount(JADE_CRYSTAL); if (count == 0) htmltext = "30686-4.htm"; else { int reward = (count * 425) + 3500; if (count >= 100) reward += 7400; st.takeItems(JADE_CRYSTAL, -1); st.rewardItems(57, reward); } } else if (event.equalsIgnoreCase("30686-8.htm")) { st.playSound(QuestState.SOUND_FINISH); st.exitQuest(true); } return htmltext; }
@Override public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { String htmltext = event; QuestState st = player.getQuestState(qn); if (st == null) return htmltext; // Start the quest. if (event.endsWith("-04.htm")) { st.setState(Quest.STATE_STARTED); st.set("cond", "1"); st.playSound(QuestState.SOUND_ACCEPT); } // Give Red Soul Crystal. else if (event.endsWith("-09.htm")) { st.playSound(QuestState.SOUND_MIDDLE); st.giveItems(4629, 1); } // Give Green Soul Crystal. else if (event.endsWith("-10.htm")) { st.playSound(QuestState.SOUND_MIDDLE); st.giveItems(4640, 1); } // Give Blue Soul Crystal. else if (event.endsWith("-11.htm")) { st.playSound(QuestState.SOUND_MIDDLE); st.giveItems(4651, 1); } // Terminate the quest. else if (event.endsWith("-exit.htm")) st.exitQuest(true); return htmltext; }
@Override public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { String htmltext = event; QuestState st = player.getQuestState(qn); if (st == null) return htmltext; if (event.equalsIgnoreCase("30623-04.htm")) { if (player.getRace() == Race.Orc) htmltext = "30623-05.htm"; } else if (event.equalsIgnoreCase("30623-07.htm")) { st.setState(STATE_STARTED); st.set("cond", "1"); st.set("cond", "2"); st.playSound(QuestState.SOUND_ACCEPT); st.giveItems(ORDER_GLUDIO, 1); st.giveItems(ORDER_DION, 1); st.giveItems(ORDER_GIRAN, 1); st.giveItems(ORDER_OREN, 1); st.giveItems(ORDER_ADEN, 1); st.giveItems(DIMENSIONAL_DIAMOND, 72); } else if (event.equalsIgnoreCase("30623-16.htm")) { if (st.getInt("cond") == 3) { st.set("cond", "4"); st.playSound(QuestState.SOUND_MIDDLE); st.takeItems(ORDER_GLUDIO, 1); st.takeItems(ORDER_DION, 1); st.takeItems(ORDER_GIRAN, 1); st.takeItems(ORDER_OREN, 1); st.takeItems(ORDER_ADEN, 1); st.takeItems(PUNCHER_SHARD, -1); st.takeItems(NOBLE_ANT_FEELER, -1); st.takeItems(DRONE_CHITIN, -1); st.takeItems(DEAD_SEEKER_FANG, -1); st.takeItems(OVERLORD_NECKLACE, -1); st.takeItems(FETTERED_SOUL_CHAIN, -1); st.takeItems(CHIEF_AMULET, -1); st.takeItems(ENCHANTED_EYE_MEAT, -1); st.takeItems(TAMRIN_ORC_RING, -1); st.takeItems(TAMRIN_ORC_ARROW, -1); st.giveItems(FINAL_ORDER, 1); } } return htmltext; }
@Override public String onKill(L2Npc npc, L2PcInstance player, boolean isPet) { QuestState st = checkPlayerCondition(player, npc, "cond", "2"); if (st == null) return null; if (st.dropItemsAlways(MAP_PIECE, 1, 30)) st.set("cond", "3"); return null; }
@Override public String onKill(L2Npc npc, L2PcInstance player, boolean isPet) { QuestState st = checkPlayerCondition(player, npc, "cond", "1"); if (st == null) return null; if (st.dropItems(POISON_SAC, 1, 1, 200000)) st.set("cond", "2"); return null; }
@Override public String onKill(L2Npc npc, L2PcInstance player, boolean isPet) { L2PcInstance partyMember = getRandomPartyMember(player, npc, "1"); if (partyMember == null) return null; QuestState st = partyMember.getQuestState(qn); if (st.dropItems(CURSED_GRAVE_GOODS, 1, 180, 750000)) st.set("cond", "2"); return null; }
@Override public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { String htmltext = event; QuestState st = player.getQuestState(qn); if (st == null) return htmltext; // Manakia if (event.equalsIgnoreCase("30515-03.htm")) { st.setState(STATE_STARTED); st.set("cond", "1"); st.set("condStone", "1"); st.playSound(QuestState.SOUND_ACCEPT); } else if (event.startsWith("30515-06-")) { if (st.getQuestItemsCount(CAVE_BEAST_TOOTH) >= 65 && st.getQuestItemsCount(DEATH_WAVE_LIGHT) >= 65) { htmltext = "30515-06.htm"; st.playSound(QuestState.SOUND_MIDDLE); int[] reward = REWARDS[Integer.parseInt(event.substring(9, 10))]; st.takeItems(CAVE_BEAST_TOOTH, -1); st.takeItems(DEATH_WAVE_LIGHT, -1); st.rewardItems(57, reward[2]); st.giveItems(reward[0], reward[1]); } else htmltext = "30515-07.htm"; } else if (event.equalsIgnoreCase("30515-08.htm")) { st.playSound(QuestState.SOUND_FINISH); st.exitQuest(true); } // Torai else if (event.equalsIgnoreCase("30557-02.htm")) { if (st.getInt("cond") == 2 && st.hasQuestItems(SEALED_MYSTERIOUS_STONE)) { st.set("cond", "3"); st.takeItems(SEALED_MYSTERIOUS_STONE, -1); st.giveItems(MYSTERIOUS_STONE, 1); st.playSound(QuestState.SOUND_MIDDLE); } else htmltext = "30557-03.htm"; } return htmltext; }
@Override public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { String htmltext = event; QuestState st = player.getQuestState(qn); if (st == null) return htmltext; if (event.equalsIgnoreCase("30050-03.htm")) { st.setState(STATE_STARTED); st.set("cond", "1"); st.playSound(QuestState.SOUND_ACCEPT); } return htmltext; }
@Override public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { String htmltext = event; QuestState st = player.getQuestState(qn); if (st == null) return htmltext; if (event.equalsIgnoreCase("31314-03.htm")) { st.setState(STATE_STARTED); st.set("cond", "1"); st.playSound(QuestState.SOUND_ACCEPT); } else if (event.equalsIgnoreCase("31315-02.htm")) { st.set("cond", "2"); st.playSound(QuestState.SOUND_MIDDLE); st.giveItems(SUPPLY_BOX, 1); } else if (event.equalsIgnoreCase("31555-02.htm")) { st.takeItems(SUPPLY_BOX, 1); st.rewardItems(57, 15000); st.rewardExpAndSp(50000, 0); st.playSound(QuestState.SOUND_FINISH); st.exitQuest(false); } return htmltext; }
@Override public String onTalk(L2Npc npc, L2PcInstance player) { String htmltext = getNoQuestMsg(); QuestState st = player.getQuestState(qn); if (st == null) return htmltext; switch (st.getState()) { case STATE_CREATED: htmltext = (player.getLevel() < 15) ? "30050-01.htm" : "30050-02.htm"; break; case STATE_STARTED: int cond = st.getInt("cond"); switch (npc.getNpcId()) { case ELIAS: if (cond == 1) htmltext = "30050-04.htm"; else if (cond == 2) htmltext = "30050-05.htm"; else if (cond == 3) { htmltext = "30050-06.htm"; st.takeItems(FEVER_MEDICINE, 1); st.giveItems(102, 1); st.playSound(QuestState.SOUND_FINISH); st.exitQuest(false); } break; case YOHANES: if (cond == 2) { htmltext = "30032-01.htm"; st.set("cond", "3"); st.playSound(QuestState.SOUND_MIDDLE); st.takeItems(POISON_SAC, 1); st.giveItems(FEVER_MEDICINE, 1); } else if (cond == 3) htmltext = "30032-02.htm"; break; } break; case STATE_COMPLETED: htmltext = getAlreadyCompletedMsg(); break; } return htmltext; }
@Override public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { String htmltext = event; QuestState st = player.getQuestState(qn); if (st == null) return htmltext; if (event.equalsIgnoreCase("32017-03.htm")) { st.setState(STATE_STARTED); st.set("cond", "1"); st.playSound(QuestState.SOUND_ACCEPT); } else if (Util.isDigit(event)) { htmltext = "32017-07.htm"; st.takeItems(CURSED_GRAVE_GOODS, -1); final int reward[] = REWARDS[Integer.parseInt(event)]; st.giveItems(reward[0], reward[1]); st.playSound(QuestState.SOUND_FINISH); st.exitQuest(true); } return htmltext; }
@Override public String onTalk(L2Npc npc, L2PcInstance player) { String htmltext = getNoQuestMsg(); QuestState st = player.getQuestState(qn); if (st == null) return htmltext; switch (st.getState()) { case STATE_CREATED: htmltext = (player.getLevel() < 56) ? "30515-01.htm" : "30515-02.htm"; break; case STATE_STARTED: final int cond = st.getInt("cond"); switch (npc.getNpcId()) { case MANAKIA: if (!(st.hasQuestItems(SEALED_MYSTERIOUS_STONE))) { if (st.getQuestItemsCount(CAVE_BEAST_TOOTH) >= 65 && st.getQuestItemsCount(DEATH_WAVE_LIGHT) >= 65) htmltext = "30515-05.htm"; else htmltext = "30515-04.htm"; } else { if (cond == 1) { htmltext = "30515-09.htm"; st.set("cond", "2"); st.playSound(QuestState.SOUND_MIDDLE); } else htmltext = "30515-10.htm"; } break; case TORAI: if (cond == 2 && st.hasQuestItems(SEALED_MYSTERIOUS_STONE)) htmltext = "30557-01.htm"; break; } break; } return htmltext; }
@Override public String onKill(L2Npc npc, L2PcInstance player, boolean isPet) { QuestState st = checkPlayerState(player, npc, STATE_STARTED); if (st == null) return null; if (st.getInt("cond") == 2) { switch (npc.getNpcId()) { case PUNCHER: if (st.dropItemsAlways(PUNCHER_SHARD, 1, 10)) if (st.getQuestItemsCount(NOBLE_ANT_FEELER) >= 10 && st.getQuestItemsCount(DRONE_CHITIN) >= 10 && st.getQuestItemsCount(DEAD_SEEKER_FANG) >= 10 && st.getQuestItemsCount(OVERLORD_NECKLACE) >= 10 && st.getQuestItemsCount(FETTERED_SOUL_CHAIN) >= 10 && st.getQuestItemsCount(CHIEF_AMULET) >= 10 && st.getQuestItemsCount(ENCHANTED_EYE_MEAT) >= 10 && st.getQuestItemsCount(TAMRIN_ORC_RING) >= 10 && st.getQuestItemsCount(TAMRIN_ORC_ARROW) >= 10) st.set("cond", "3"); break; case NOBLE_ANT_LEADER: if (st.dropItemsAlways(NOBLE_ANT_FEELER, 1, 10)) if (st.getQuestItemsCount(PUNCHER_SHARD) >= 10 && st.getQuestItemsCount(DRONE_CHITIN) >= 10 && st.getQuestItemsCount(DEAD_SEEKER_FANG) >= 10 && st.getQuestItemsCount(OVERLORD_NECKLACE) >= 10 && st.getQuestItemsCount(FETTERED_SOUL_CHAIN) >= 10 && st.getQuestItemsCount(CHIEF_AMULET) >= 10 && st.getQuestItemsCount(ENCHANTED_EYE_MEAT) >= 10 && st.getQuestItemsCount(TAMRIN_ORC_RING) >= 10 && st.getQuestItemsCount(TAMRIN_ORC_ARROW) >= 10) st.set("cond", "3"); break; case MARSH_STAKATO_DRONE: if (st.dropItemsAlways(DRONE_CHITIN, 1, 10)) if (st.getQuestItemsCount(PUNCHER_SHARD) >= 10 && st.getQuestItemsCount(NOBLE_ANT_FEELER) >= 10 && st.getQuestItemsCount(DEAD_SEEKER_FANG) >= 10 && st.getQuestItemsCount(OVERLORD_NECKLACE) >= 10 && st.getQuestItemsCount(FETTERED_SOUL_CHAIN) >= 10 && st.getQuestItemsCount(CHIEF_AMULET) >= 10 && st.getQuestItemsCount(ENCHANTED_EYE_MEAT) >= 10 && st.getQuestItemsCount(TAMRIN_ORC_RING) >= 10 && st.getQuestItemsCount(TAMRIN_ORC_ARROW) >= 10) st.set("cond", "3"); break; case DEAD_SEEKER: if (st.dropItemsAlways(DEAD_SEEKER_FANG, 1, 10)) if (st.getQuestItemsCount(PUNCHER_SHARD) >= 10 && st.getQuestItemsCount(NOBLE_ANT_FEELER) >= 10 && st.getQuestItemsCount(DRONE_CHITIN) >= 10 && st.getQuestItemsCount(OVERLORD_NECKLACE) >= 10 && st.getQuestItemsCount(FETTERED_SOUL_CHAIN) >= 10 && st.getQuestItemsCount(CHIEF_AMULET) >= 10 && st.getQuestItemsCount(ENCHANTED_EYE_MEAT) >= 10 && st.getQuestItemsCount(TAMRIN_ORC_RING) >= 10 && st.getQuestItemsCount(TAMRIN_ORC_ARROW) >= 10) st.set("cond", "3"); break; case BREKA_ORC_OVERLORD: if (st.dropItemsAlways(OVERLORD_NECKLACE, 1, 10)) if (st.getQuestItemsCount(PUNCHER_SHARD) >= 10 && st.getQuestItemsCount(NOBLE_ANT_FEELER) >= 10 && st.getQuestItemsCount(DRONE_CHITIN) >= 10 && st.getQuestItemsCount(DEAD_SEEKER_FANG) >= 10 && st.getQuestItemsCount(FETTERED_SOUL_CHAIN) >= 10 && st.getQuestItemsCount(CHIEF_AMULET) >= 10 && st.getQuestItemsCount(ENCHANTED_EYE_MEAT) >= 10 && st.getQuestItemsCount(TAMRIN_ORC_RING) >= 10 && st.getQuestItemsCount(TAMRIN_ORC_ARROW) >= 10) st.set("cond", "3"); break; case FETTERED_SOUL: if (st.dropItemsAlways(FETTERED_SOUL_CHAIN, 1, 10)) if (st.getQuestItemsCount(PUNCHER_SHARD) >= 10 && st.getQuestItemsCount(NOBLE_ANT_FEELER) >= 10 && st.getQuestItemsCount(DRONE_CHITIN) >= 10 && st.getQuestItemsCount(DEAD_SEEKER_FANG) >= 10 && st.getQuestItemsCount(OVERLORD_NECKLACE) >= 10 && st.getQuestItemsCount(CHIEF_AMULET) >= 10 && st.getQuestItemsCount(ENCHANTED_EYE_MEAT) >= 10 && st.getQuestItemsCount(TAMRIN_ORC_RING) >= 10 && st.getQuestItemsCount(TAMRIN_ORC_ARROW) >= 10) st.set("cond", "3"); break; case LETO_LIZARDMAN_OVERLORD: if (st.dropItemsAlways(CHIEF_AMULET, 1, 10)) if (st.getQuestItemsCount(PUNCHER_SHARD) >= 10 && st.getQuestItemsCount(NOBLE_ANT_FEELER) >= 10 && st.getQuestItemsCount(DRONE_CHITIN) >= 10 && st.getQuestItemsCount(DEAD_SEEKER_FANG) >= 10 && st.getQuestItemsCount(OVERLORD_NECKLACE) >= 10 && st.getQuestItemsCount(FETTERED_SOUL_CHAIN) >= 10 && st.getQuestItemsCount(ENCHANTED_EYE_MEAT) >= 10 && st.getQuestItemsCount(TAMRIN_ORC_RING) >= 10 && st.getQuestItemsCount(TAMRIN_ORC_ARROW) >= 10) st.set("cond", "3"); break; case ENCHANTED_MONSTEREYE: if (st.dropItemsAlways(ENCHANTED_EYE_MEAT, 1, 10)) if (st.getQuestItemsCount(PUNCHER_SHARD) >= 10 && st.getQuestItemsCount(NOBLE_ANT_FEELER) >= 10 && st.getQuestItemsCount(DRONE_CHITIN) >= 10 && st.getQuestItemsCount(DEAD_SEEKER_FANG) >= 10 && st.getQuestItemsCount(OVERLORD_NECKLACE) >= 10 && st.getQuestItemsCount(FETTERED_SOUL_CHAIN) >= 10 && st.getQuestItemsCount(CHIEF_AMULET) >= 10 && st.getQuestItemsCount(TAMRIN_ORC_RING) >= 10 && st.getQuestItemsCount(TAMRIN_ORC_ARROW) >= 10) st.set("cond", "3"); break; case TAMLIN_ORC: if (st.dropItemsAlways(TAMRIN_ORC_RING, 1, 10)) if (st.getQuestItemsCount(PUNCHER_SHARD) >= 10 && st.getQuestItemsCount(NOBLE_ANT_FEELER) >= 10 && st.getQuestItemsCount(DRONE_CHITIN) >= 10 && st.getQuestItemsCount(DEAD_SEEKER_FANG) >= 10 && st.getQuestItemsCount(OVERLORD_NECKLACE) >= 10 && st.getQuestItemsCount(FETTERED_SOUL_CHAIN) >= 10 && st.getQuestItemsCount(CHIEF_AMULET) >= 10 && st.getQuestItemsCount(ENCHANTED_EYE_MEAT) >= 10 && st.getQuestItemsCount(TAMRIN_ORC_ARROW) >= 10) st.set("cond", "3"); break; case TAMLIN_ORC_ARCHER: if (st.dropItemsAlways(TAMRIN_ORC_ARROW, 1, 10)) if (st.getQuestItemsCount(PUNCHER_SHARD) >= 10 && st.getQuestItemsCount(NOBLE_ANT_FEELER) >= 10 && st.getQuestItemsCount(DRONE_CHITIN) >= 10 && st.getQuestItemsCount(DEAD_SEEKER_FANG) >= 10 && st.getQuestItemsCount(OVERLORD_NECKLACE) >= 10 && st.getQuestItemsCount(FETTERED_SOUL_CHAIN) >= 10 && st.getQuestItemsCount(CHIEF_AMULET) >= 10 && st.getQuestItemsCount(ENCHANTED_EYE_MEAT) >= 10 && st.getQuestItemsCount(TAMRIN_ORC_RING) >= 10) st.set("cond", "3"); break; } } else if (st.getInt("cond") == 4) { switch (npc.getNpcId()) { case EXCURO: if (st.dropItemsAlways(EXCURO_SKIN, 1, 3)) if (st.getQuestItemsCount(KRATOR_SHARD) >= 3 && st.getQuestItemsCount(LAKIN_MACE) >= 3 && st.getQuestItemsCount(GRANDIS_SKIN) >= 3 && st.getQuestItemsCount(TIMAK_ORC_BELT) >= 3) st.set("cond", "5"); break; case KRATOR: if (st.dropItemsAlways(KRATOR_SHARD, 1, 3)) if (st.getQuestItemsCount(EXCURO_SKIN) >= 3 && st.getQuestItemsCount(LAKIN_MACE) >= 3 && st.getQuestItemsCount(GRANDIS_SKIN) >= 3 && st.getQuestItemsCount(TIMAK_ORC_BELT) >= 3) st.set("cond", "5"); break; case LAKIN: if (st.dropItemsAlways(LAKIN_MACE, 1, 3)) if (st.getQuestItemsCount(EXCURO_SKIN) >= 3 && st.getQuestItemsCount(KRATOR_SHARD) >= 3 && st.getQuestItemsCount(GRANDIS_SKIN) >= 3 && st.getQuestItemsCount(TIMAK_ORC_BELT) >= 3) st.set("cond", "5"); break; case GRANDIS: if (st.dropItemsAlways(GRANDIS_SKIN, 1, 3)) if (st.getQuestItemsCount(EXCURO_SKIN) >= 3 && st.getQuestItemsCount(KRATOR_SHARD) >= 3 && st.getQuestItemsCount(LAKIN_MACE) >= 3 && st.getQuestItemsCount(TIMAK_ORC_BELT) >= 3) st.set("cond", "5"); break; case TIMAK_ORC_OVERLORD: if (st.dropItemsAlways(TIMAK_ORC_BELT, 1, 3)) if (st.getQuestItemsCount(EXCURO_SKIN) >= 3 && st.getQuestItemsCount(KRATOR_SHARD) >= 3 && st.getQuestItemsCount(LAKIN_MACE) >= 3 && st.getQuestItemsCount(GRANDIS_SKIN) >= 3) st.set("cond", "5"); break; } } return null; }
@Override public String onTalk(L2Npc npc, L2PcInstance player) { QuestState st = player.getQuestState(qn); String htmltext = getNoQuestMsg(); if (st == null) return htmltext; switch (st.getState()) { case STATE_CREATED: if (player.getRace() == Race.Elf) { if (player.getLevel() >= 3) htmltext = "30370-03.htm"; else { htmltext = "30370-02.htm"; st.exitQuest(true); } } else { htmltext = "30370-00.htm"; st.exitQuest(true); } break; case STATE_STARTED: int cond = st.getInt("cond"); switch (npc.getNpcId()) { case NERUPA: if (cond >= 1 && cond <= 3) htmltext = "30370-05.htm"; else if (cond == 4) { if (st.getQuestItemsCount(NIGHTSHADE_LEAF) == 1) { htmltext = "30370-06.htm"; st.playSound(QuestState.SOUND_FINISH); st.takeItems(NIGHTSHADE_LEAF, 1); st.rewardItems(LESSER_HEALING_POTION, 5); st.rewardExpAndSp(1000, 0); st.exitQuest(false); } } break; case UNOREN: if (cond == 1) { st.set("cond", "2"); htmltext = "30147-01.htm"; st.playSound(QuestState.SOUND_MIDDLE); st.takeItems(SILVERY_SPIDERSILK, 1); st.giveItems(UNOS_RECEIPT, 1); } else if (cond == 2) htmltext = "30147-02.htm"; else if (cond == 4) htmltext = "30147-03.htm"; break; case CREAMEES: if (cond == 2) { st.set("cond", "3"); htmltext = "30149-01.htm"; st.takeItems(UNOS_RECEIPT, 1); st.giveItems(CELS_TICKET, 1); st.playSound(QuestState.SOUND_MIDDLE); } else if (cond == 3) htmltext = "30149-02.htm"; else if (cond == 4) htmltext = "30149-03.htm"; break; case JULIA: if (cond == 3) { st.set("cond", "4"); htmltext = "30152-01.htm"; st.takeItems(CELS_TICKET, -1); st.giveItems(NIGHTSHADE_LEAF, 1); st.playSound(QuestState.SOUND_MIDDLE); } else if (cond == 4) htmltext = "30152-02.htm"; break; } break; case STATE_COMPLETED: htmltext = getAlreadyCompletedMsg(); break; } return htmltext; }
@Override public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { String htmltext = event; QuestState st = player.getQuestState(qn); if (st == null) return htmltext; if (event.equalsIgnoreCase("31522-02.htm")) { st.setState(STATE_STARTED); st.set("cond", "1"); st.playSound(QuestState.SOUND_ACCEPT); } else if (event.equalsIgnoreCase("31523-03.htm")) { st.set("cond", "2"); st.playSound(QuestState.SOUND_MIDDLE); spawnVonHellmann(st); } else if (event.equalsIgnoreCase("31524-06.htm")) { st.set("cond", "3"); st.playSound(QuestState.SOUND_MIDDLE); // Spawn the page. if (_vonHellmannPage == null) { _vonHellmannPage = addSpawn(VON_HELLMAN_PAGE, 51462, -54539, -3176, 0, false, 90000, true); _vonHellmannPage.broadcastNpcSay( "My master has instructed me to be your guide, " + player.getName() + "."); // Make it move. startQuestTimer("1", 4000, _vonHellmannPage, player, false); startQuestTimer("pageDespawn", 88000, _vonHellmannPage, player, false); } } else if (event.equalsIgnoreCase("31526-08.htm")) { st.set("cond", "5"); st.playSound(QuestState.SOUND_MIDDLE); } else if (event.equalsIgnoreCase("31526-14.htm")) { st.set("cond", "6"); st.playSound(QuestState.SOUND_MIDDLE); st.giveItems(CROSS_OF_EINHASAD, 1); } else if (event.equalsIgnoreCase("1")) { _vonHellmannPage .getAI() .setIntention(CtrlIntention.MOVE_TO, new L2CharPosition(52373, -54296, -3136, 0)); _vonHellmannPage.broadcastNpcSay("Follow me..."); startQuestTimer("2", 5000, _vonHellmannPage, player, false); return null; } else if (event.equalsIgnoreCase("2")) { _vonHellmannPage .getAI() .setIntention(CtrlIntention.MOVE_TO, new L2CharPosition(52279, -53064, -3161, 0)); startQuestTimer("3", 12000, _vonHellmannPage, player, false); return null; } else if (event.equalsIgnoreCase("3")) { _vonHellmannPage .getAI() .setIntention(CtrlIntention.MOVE_TO, new L2CharPosition(51909, -51725, -3125, 0)); startQuestTimer("4", 15000, _vonHellmannPage, player, false); return null; } else if (event.equalsIgnoreCase("4")) { _vonHellmannPage .getAI() .setIntention(CtrlIntention.MOVE_TO, new L2CharPosition(52438, -51240, -3097, 0)); _vonHellmannPage.broadcastNpcSay("This where that here..."); startQuestTimer("5", 5000, _vonHellmannPage, player, false); return null; } else if (event.equalsIgnoreCase("5")) { _vonHellmannPage .getAI() .setIntention(CtrlIntention.MOVE_TO, new L2CharPosition(52143, -51418, -3085, 0)); _vonHellmannPage.broadcastNpcSay("I want to speak to you..."); return null; } else if (event.equalsIgnoreCase("31328-05.htm")) { if (st.hasQuestItems(CROSS_OF_EINHASAD)) { st.takeItems(CROSS_OF_EINHASAD, 1); st.giveItems(CROSS_OF_EINHASAD_NEXT_QUEST, 1); st.playSound(QuestState.SOUND_FINISH); st.exitQuest(false); } } else if (event.equalsIgnoreCase("pageDespawn")) _vonHellmannPage = null; return htmltext; }
@Override public String onTalk(L2Npc npc, L2PcInstance player) { String htmltext = getNoQuestMsg(); QuestState st = player.getQuestState(qn); if (st == null) return htmltext; switch (st.getState()) { case STATE_CREATED: htmltext = (player.getLevel() < 63) ? "31522-03.htm" : "31522-01.htm"; break; case STATE_STARTED: int cond = st.getInt("cond"); switch (npc.getNpcId()) { case MYSTERIOUS_WIZARD: htmltext = "31522-05.htm"; break; case TOMBSTONE: if (cond == 1) htmltext = "31523-01.htm"; else if (cond == 2 || cond == 3) { htmltext = "31523-04.htm"; spawnVonHellmann(st); } else if (cond > 3) htmltext = "31523-04.htm"; break; case VON_HELLMAN: if (cond == 2) htmltext = "31524-01.htm"; else if (cond == 3) htmltext = "31524-07.htm"; else if (cond > 3) htmltext = "31524-07a.htm"; break; case VON_HELLMAN_PAGE: if (cond == 3 || cond == 4) { htmltext = "31525-01.htm"; if (!_vonHellmannPage.isMoving()) { htmltext = "31525-02.htm"; if (cond == 3) { st.set("cond", "4"); st.playSound(QuestState.SOUND_MIDDLE); } } } break; case BROKEN_BOOKSHELF: if (cond == 3 || cond == 4) { htmltext = "31526-01.htm"; if (!_vonHellmannPage.isMoving()) { st.set("cond", "5"); st.playSound(QuestState.SOUND_MIDDLE); if (_vonHellmannPage != null) { _vonHellmannPage.deleteMe(); _vonHellmannPage = null; cancelQuestTimer("pageDespawn", null, player); } if (_vonHellmann != null) { _vonHellmann.deleteMe(); _vonHellmann = null; } } } else if (cond == 5) htmltext = "31526-10.htm"; else if (cond > 5) htmltext = "31526-15.htm"; break; case AGRIPEL: case BENEDICT: case DOMINIC: if ((cond == 6 || cond == 7) && st.hasQuestItems(CROSS_OF_EINHASAD)) { int npcId = npc.getNpcId(); // For cond 6, make checks until cond 7 is activated. if (cond == 6) { int npcId1 = 0, npcId2 = 0; if (npcId == AGRIPEL) { npcId1 = BENEDICT; npcId2 = DOMINIC; } else if (npcId == BENEDICT) { npcId1 = AGRIPEL; npcId2 = DOMINIC; } else if (npcId == DOMINIC) { npcId1 = AGRIPEL; npcId2 = BENEDICT; } if (st.getInt(String.valueOf(npcId1)) == 1 && st.getInt(String.valueOf(npcId2)) == 1) { st.set("cond", "7"); st.playSound(QuestState.SOUND_MIDDLE); } else st.set(String.valueOf(npcId), "1"); } htmltext = npcId + "-01.htm"; } break; case INNOCENTIN: if (cond == 7 && st.hasQuestItems(CROSS_OF_EINHASAD)) htmltext = "31328-01.htm"; break; } break; case STATE_COMPLETED: if (npc.getNpcId() == INNOCENTIN) htmltext = "31328-06.htm"; else htmltext = getAlreadyCompletedMsg(); break; } return htmltext; }