@Override public String onEvent(String event, QuestState st, NpcInstance npc) { int _state = st.getState(); int cond = st.getCond(); if (event.equalsIgnoreCase("jeremy_q0625_0104.htm") && _state == CREATED) { if (st.getQuestItemsCount(Soy_Sauce_Jar) == 0) { st.exitCurrentQuest(true); return "jeremy_q0625_0102.htm"; } st.setState(STARTED); st.setCond(1); st.takeItems(Soy_Sauce_Jar, 1); st.giveItems(Food_for_Bumbalump, 1); st.playSound(SOUND_ACCEPT); } else if (event.equalsIgnoreCase("jeremy_q0625_0301.htm") && _state == STARTED && cond == 3) { st.exitCurrentQuest(true); if (st.getQuestItemsCount(Special_Yeti_Meat) == 0) return "jeremy_q0625_0302.htm"; st.takeItems(Special_Yeti_Meat, 1); st.giveItems(Rnd.get(Reward_First, Reward_Last), 5, true); } else if (event.equalsIgnoreCase("yetis_table_q0625_0201.htm") && _state == STARTED && cond == 1) { if (ServerVariables.getLong(_625_TheFinestIngredientsPart2.class.getSimpleName(), 0) + 3 * 60 * 60 * 1000 > System.currentTimeMillis()) return "yetis_table_q0625_0204.htm"; if (st.getQuestItemsCount(Food_for_Bumbalump) == 0) return "yetis_table_q0625_0203.htm"; if (BumbalumpSpawned()) return "yetis_table_q0625_0202.htm"; st.takeItems(Food_for_Bumbalump, 1); st.setCond(2); ThreadPoolManager.getInstance().schedule(new BumbalumpSpawner(), 1000); } return event; }
@Override public String onTalk(NpcInstance npc, QuestState st) { String htmltext = "noquest"; int npcId = npc.getNpcId(); int cond = st.getCond(); if (npcId == THEODRIC) { if (cond == 0) { if (st.getPlayer().getLevel() < 84) htmltext = "antharas_watchman_theodric_q10504_00.htm"; else if (st.getQuestItemsCount(PORTAL_STONE) < 1) htmltext = "antharas_watchman_theodric_q10504_00a.htm"; else if (st.isNowAvailable()) htmltext = "antharas_watchman_theodric_q10504_01.htm"; else htmltext = "antharas_watchman_theodric_q10504_09.htm"; } else if (cond == 1) { if (st.getQuestItemsCount(CLEAR_CRYSTAL) < 1) { htmltext = "antharas_watchman_theodric_q10504_08.htm"; st.giveItems(CLEAR_CRYSTAL, 1); } else htmltext = "antharas_watchman_theodric_q10504_05.htm"; } else if (cond == 2) { if (st.getQuestItemsCount(FILLED_CRYSTAL_ANTHARAS) >= 1) { htmltext = "antharas_watchman_theodric_q10504_07.htm"; st.takeAllItems(FILLED_CRYSTAL_ANTHARAS); st.giveItems(JEWEL_OF_ANTHARAS, 1); st.playSound(SOUND_FINISH); st.exitCurrentQuest(this); } else htmltext = "antharas_watchman_theodric_q10504_06.htm"; } } return htmltext; }
@Override public String onKill(NpcInstance npc, QuestState st) { int npcId = npc.getNpcId(); int cond = st.getCond(); if (cond == 3 && ArrayUtils.contains(MOBS_1, npcId) && Rnd.chance(70)) { st.giveItems(ELCARDIAS_MARK, 1); if (st.getQuestItemsCount(ELCARDIAS_MARK) < 10) st.playSound(SOUND_ITEMGET); else { st.playSound(SOUND_MIDDLE); st.setCond(4); } } else if (npcId == CREATURE_OF_THE_DUSK_1) { st.set("CreatureOfTheDusk1", 2); if (st.get("CreatureOfTheDusk2") != null && Integer.parseInt(st.get("CreatureOfTheDusk2")) == 2) { st.playSound(SOUND_MIDDLE); st.setCond(6); } } else if (npcId == CREATURE_OF_THE_DUSK_2) { st.set("CreatureOfTheDusk2", 2); if (st.get("CreatureOfTheDusk1") != null && Integer.parseInt(st.get("CreatureOfTheDusk1")) == 2) { st.playSound(SOUND_MIDDLE); st.setCond(6); } } return null; }
@Override public String onTalk(NpcInstance npc, QuestState st) { String htmltext = "noquest"; int npcId = npc.getNpcId(); int cond = st.getCond(); if (npcId == Droph) if (cond == 0) { if (st.getPlayer().getLevel() >= 79) htmltext = "droph_q307_1.htm"; else { htmltext = "droph_q307_0.htm"; st.exitCurrentQuest(true); } } else if (cond == 1) { if (st.getQuestItemsCount(CaveExplorationText1Sheet) >= 1 && st.getQuestItemsCount(CaveExplorationText2Sheet) >= 1 && st.getQuestItemsCount(CaveExplorationText3Sheet) >= 1) if (ServerVariables.getLong("HekatonPrimeRespawn", 0) < System.currentTimeMillis()) htmltext = "droph_q307_3.htm"; else htmltext = "droph_q307_4.htm"; else htmltext = "droph_q307_2a.htm"; } else if (cond == 2) { htmltext = "droph_q307_5.htm"; st.giveItems(DrophsSupportItems, 1); st.playSound(SOUND_FINISH); st.exitCurrentQuest(true); } return htmltext; }
@Override public String onEvent(String event, QuestState st, NpcInstance npc) { String htmltext = event; if (event.equalsIgnoreCase("antharas_watchman_theodric_q10504_04.htm")) { st.setState(STARTED); st.setCond(1); st.playSound(SOUND_ACCEPT); st.giveItems(CLEAR_CRYSTAL, 1); } return htmltext; }
@Override public String onKill(NpcInstance npc, QuestState st) { int npcId = npc.getNpcId(); int cond = st.getCond(); if (cond == 1 && npcId == ULTIMATE_ANTHARAS) { st.takeAllItems(CLEAR_CRYSTAL); st.giveItems(FILLED_CRYSTAL_ANTHARAS, 1); st.setCond(2); } return null; }
@Override public String onKill(NpcInstance npc, QuestState st) { if (st.getCond() == 1 || st.getCond() == 2) { if (st.getQuestItemsCount(Food_for_Bumbalump) > 0) st.takeItems(Food_for_Bumbalump, 1); st.giveItems(Special_Yeti_Meat, 1); st.setCond(3); st.playSound(SOUND_MIDDLE); } return null; }
@Override public String onEvent(String event, QuestState st, NpcInstance npc) { String htmltext = event; if (event.equalsIgnoreCase("warden_endrigo_q10380_06.htm")) { st.setCond(1); st.setState(STARTED); st.playSound(SOUND_ACCEPT); } else if (event.equalsIgnoreCase("warden_endrigo_q10380_10.htm")) { st.addExpAndSp(0, 458117910); st.giveItems(GLORIOUS_T_SHIRT, 1); st.playSound(SOUND_FINISH); st.exitCurrentQuest(false); } return htmltext; }
private void alertLetterReceived(QuestState st) { if (st == null) return; st.getPlayer() .sendPacket( new ExShowScreenMessage( LETTER_ALERT_STRING, 7000, ExShowScreenMessage.ScreenMessageAlign.TOP_CENTER, true)); st.showQuestionMark(10779); st.playSound(SOUND_TUTORIAL); st.giveItems(SOE_OREN, 1); st.getPlayer().setVar("@received_navari_letter_6th", true); }
@Override public String onEvent(String event, QuestState st, NpcInstance npc) { Player player = st.getPlayer(); if (player == null) return null; String htmltext = event; System.out.println("quest event " + event.toString()); int classId = player.getClassId().getId(); if (event.startsWith("UC")) { if (checkStartCondition(player)) { Quest q = QuestManager.getQuest(10779); player.processQuestEvent(q.getName(), "start_quest", null); } htmltext = ""; } if (event.equalsIgnoreCase("start_quest") || event.equalsIgnoreCase("start_quest_7s")) { st.setCond(1); st.setState(STARTED); alertLetterReceived(st); st.showQuestHTML(st.getQuest(), "queen_letter.htm"); htmltext = ""; } if (event.equalsIgnoreCase("start_quest_delay")) { st.startQuestTimer("start_quest_7s", 7000); // only start quest after 7s to avoid crash on enterworld htmltext = ""; } if (event.equalsIgnoreCase("Quest _10779_LetterFromTheQueen_SeaOfSpores to_oren")) { // System.out.println("in Quest _10779_LetterFromTheQueen_SeaOfSpores to_dion"); if (st.getCond() == 1) { if (getItemCountById(player, SOE_OREN) > 0) { st.takeItems(SOE_OREN, 1); player.teleToLocation(83633, 53064, -1456); player.sendPacket(TutorialCloseHtmlPacket.STATIC); } else { player.sendMessage("Không tìm thấy Scroll of Escape: Town of Oren"); } } htmltext = ""; } // System.out.println("out " + event); if (event.equalsIgnoreCase("Quest _10779_LetterFromTheQueen_SeaOfSpores close_window")) { // System.out.println("in Quest _10779_LetterFromTheQueen_SeaOfSpores close_window"); player.sendPacket(TutorialCloseHtmlPacket.STATIC); htmltext = ""; } // Question mark clicked if (event.startsWith("QM")) { int MarkId = Integer.valueOf(event.substring(2)); // System.out.println("Mark id " + MarkId); if (MarkId == 10779) { if (player.getRace() == Race.ERTHEIA) st.showQuestHTML(st.getQuest(), "queen_letter.htm"); htmltext = ""; } } if (event.equalsIgnoreCase("30191-3.htm")) { st.giveItems(SOE_SEA_OF_SPORES, 1); st.setCond(2); htmltext = "30191-3.htm"; } if (event.equalsIgnoreCase("33845-2.htm")) { st.giveItems(STEEL_DOOR_COIN, 37, true); st.giveItems(SCROLL_EWB, 3, true); st.addExpAndSp(635250, 152); st.setState(COMPLETED); st.exitCurrentQuest(false); st.playSound(SOUND_FINISH); st.getPlayer() .sendPacket( new ExShowScreenMessage( NEXT_LETTER_STRING, 7000, ExShowScreenMessage.ScreenMessageAlign.TOP_CENTER, true)); htmltext = "33845-2.htm"; } if (htmltext.isEmpty()) return null; else return htmltext; }