/** Talk with captains and using of the escape teleporter */ @Override public final String onTalk(L2Npc npc, L2PcInstance player) { QuestState st = player.getQuestState(qn); if (st == null) newQuestState(player); final int npcId = npc.getNpcId(); if (npcId == TELEPORTER) { final L2Party party = player.getParty(); // only party leader can talk with escape teleporter if (party != null && party.isLeader(player)) { final InstanceWorld world = InstanceManager.getInstance().getWorld(npc.getInstanceId()); if (world instanceof KamaWorld) { // party members must be in the instance if (world.allowed.contains(player.getObjectId())) { Instance inst = InstanceManager.getInstance().getInstance(world.instanceId); // teleports entire party away for (L2PcInstance partyMember : party.getPartyMembers()) if (partyMember != null && partyMember.getInstanceId() == world.instanceId) teleportPlayer(partyMember, inst.getSpawnLoc(), 0); } } } } else return npcId + ".htm"; return ""; }
@Override public String onTalk(L2Npc npc, L2PcInstance player) { String htmltext = getNoQuestMsg(player); QuestState st = player.getQuestState(qn); if (st == null) return htmltext; if (npc.getNpcId() == JAKAN) { switch (st.getState()) { case State.CREATED: if (player.getLevel() >= 84) htmltext = "32773-1.htm"; else htmltext = "32773-0.htm"; break; case State.STARTED: if (st.getInt("cond") == 1) htmltext = "32773-4.htm"; else if (st.getInt("cond") == 2) { htmltext = "32773-5.htm"; st.unset("cond"); st.takeItems(TAG_ID, 1); st.giveItems(57, 95200); st.addExpAndSp(435024, 50366); st.playSound("ItemSound.quest_finish"); st.exitQuest(false); Calendar reDo = Calendar.getInstance(); reDo.set(Calendar.MINUTE, RESET_MIN); if (reDo.get(Calendar.HOUR_OF_DAY) >= RESET_HOUR) reDo.add(Calendar.DATE, 1); reDo.set(Calendar.HOUR_OF_DAY, RESET_HOUR); st.set("reDoTime", String.valueOf(reDo.getTimeInMillis())); } break; case State.COMPLETED: Long reDoTime = Long.parseLong(st.get("reDoTime")); if (reDoTime > System.currentTimeMillis()) htmltext = "32773-6.htm"; else { st.setState(State.CREATED); if (player.getLevel() >= 84) htmltext = "32773-1.htm"; else htmltext = "32773-0.htm"; } break; } } else if (Util.contains(SOLDIER_CORPSES, npc.getNpcId())) { if (st.getInt("cond") == 1) htmltext = "corpse-1.htm"; } return htmltext; }
/** Only escape teleporters first talk handled */ @Override public final String onFirstTalk(L2Npc npc, L2PcInstance player) { if (npc.getNpcId() == TELEPORTER) { if (player.isInParty() && player.getParty().isLeader(player)) return "32496.htm"; else return "32496-no.htm"; } return ""; }
@Override public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { String htmltext = event; QuestState st = player.getQuestState(qn); if (st == null) return htmltext; if (npc.getNpcId() == JAKAN) { if (event.equalsIgnoreCase("32773-3.htm")) { st.setState(State.STARTED); st.set("cond", "1"); st.playSound("ItemSound.quest_accept"); } } else if (Util.contains(SOLDIER_CORPSES, npc.getNpcId())) { if (st.getInt("cond") == 1) { st.giveItems(TAG_ID, 1); st.set("cond", "2"); st.playSound("ItemSound.quest_middle"); npc.deleteMe(); } else htmltext = getNoQuestMsg(player); } return htmltext; }
@Override public String onKill(L2Npc npc, L2PcInstance player, boolean isPet) { L2PcInstance partyMember = getRandomPartyMember(player, "1"); if (partyMember == null) return null; final QuestState st = partyMember.getQuestState(qn); int chance = Rnd.get(1000); boolean giveItem = false; switch (npc.getNpcId()) { case 22771: // Tanta Lizardman Berserker if (chance < 159) giveItem = true; break; case 22770: // Tanta Lizardman Soldier if (chance < 123) giveItem = true; break; case 22774: // Tanta Lizardman Summoner if (chance < 261) giveItem = true; break; case 22769: // Tanta Lizardman Warrior if (chance < 689) giveItem = true; break; case 22772: // Tanta Lizardman Archer if (chance < 739) giveItem = true; break; case 22768: // Tanta Lizardman Scout if (chance < 509) giveItem = true; break; case 22773: // Tanta Lizardman Magician if (chance < 737) giveItem = true; break; } if (giveItem) { st.giveItems(VialOfTantaBlood, 1); st.playSound("ItemSound.quest_itemget"); } return null; }
@Override public final String onKill(L2Npc npc, L2PcInstance player, boolean isPet) { L2PcInstance pl = null; switch (npc.getNpcId()) { case DEMON_PRINCE: pl = getRandomPartyMember(player, "rewarded_prince", "1"); if (pl != null) { final QuestState st = pl.getQuestState(qn); st.giveItems(BLUEPRINT_PRINCE, 1); st.set("rewarded_prince", "2"); if (st.hasQuestItems(BLUEPRINT_RANKU)) { st.playSound("ItemSound.quest_middle"); st.set("cond", "2"); } else { st.playSound("ItemSound.quest_itemget"); } } break; case RANKU: pl = getRandomPartyMember(player, "rewarded_ranku", "1"); if (pl != null) { final QuestState st = pl.getQuestState(qn); st.giveItems(BLUEPRINT_RANKU, 1); st.set("rewarded_ranku", "2"); if (st.getQuestItemsCount(BLUEPRINT_PRINCE) > 0) { st.playSound("ItemSound.quest_middle"); st.set("cond", "2"); } else { st.playSound("ItemSound.quest_itemget"); } } break; } return null; }