@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 == 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("droph_q307_2.htm")) { st.setCond(1); st.setState(STARTED); } else if (event.equalsIgnoreCase("loc1")) { htmltext = "droph_q307_2a_1.htm"; RadarControlPacket rc = new RadarControlPacket(0, 1, GorgolosLoc); st.getPlayer().sendPacket(rc); } else if (event.equalsIgnoreCase("loc2")) { htmltext = "droph_q307_2a_2.htm"; RadarControlPacket rc = new RadarControlPacket(0, 1, LastTitanUtenusLoc); st.getPlayer().sendPacket(rc); } else if (event.equalsIgnoreCase("loc3")) { htmltext = "droph_q307_2a_3.htm"; RadarControlPacket rc = new RadarControlPacket(0, 1, GiantMarpanakLoc); st.getPlayer().sendPacket(rc); } else if (event.equalsIgnoreCase("summon_rb")) { if (ServerVariables.getLong("HekatonPrimeRespawn", 0) < System.currentTimeMillis() && st.getQuestItemsCount(CaveExplorationText1Sheet) >= 1 && st.getQuestItemsCount(CaveExplorationText2Sheet) >= 1 && st.getQuestItemsCount(CaveExplorationText3Sheet) >= 1) { st.takeItems(CaveExplorationText1Sheet, 1); st.takeItems(CaveExplorationText2Sheet, 1); st.takeItems(CaveExplorationText3Sheet, 1); ServerVariables.set( "HekatonPrimeRespawn", System.currentTimeMillis() + HekatonPrimeRespawn); NpcInstance boss = st.addSpawn( HekatonPrime, HekatonPrimeLoc.x, HekatonPrimeLoc.y, HekatonPrimeLoc.z, HekatonPrimeLoc.h, 0, 0); boss.getMinionList().spawnMinions(); htmltext = "droph_q307_3a.htm"; } else htmltext = "droph_q307_2b.htm"; } return htmltext; }
@Override public void runImpl() throws Exception { makeAnnouncement( SystemMessage .FIRST_PRIZE_GOES_TO_THE_PLAYER_IN_LANE_S1_SECOND_PRIZE_GOES_TO_THE_PLAYER_IN_LANE_S2); makeAnnouncement(SystemMessage.MONSTER_RACE_S1_IS_FINISHED); _raceNumber++; ServerVariables.set("monster_race", _raceNumber); for (int i = 0; i < 8; i++) broadcast(new DeleteObject(MonsterRace.getInstance().getMonsters()[i])); }
@Override public String onTalk(NpcInstance npc, QuestState st) { int _state = st.getState(); int npcId = npc.getNpcId(); if (_state == CREATED) { if (npcId != Jeremy) return "noquest"; if (st.getPlayer().getLevel() < 73) { st.exitCurrentQuest(true); return "jeremy_q0625_0103.htm"; } if (st.getQuestItemsCount(Soy_Sauce_Jar) == 0) { st.exitCurrentQuest(true); return "jeremy_q0625_0102.htm"; } st.setCond(0); return "jeremy_q0625_0101.htm"; } if (_state != STARTED) return "noquest"; int cond = st.getCond(); if (npcId == Jeremy) { if (cond == 1) return "jeremy_q0625_0105.htm"; if (cond == 2) return "jeremy_q0625_0202.htm"; if (cond == 3) return "jeremy_q0625_0201.htm"; } if (npcId == Yetis_Table) { if (ServerVariables.getLong(_625_TheFinestIngredientsPart2.class.getSimpleName(), 0) + 3 * 60 * 60 * 1000 > System.currentTimeMillis()) return "yetis_table_q0625_0204.htm"; if (cond == 1) return "yetis_table_q0625_0101.htm"; if (cond == 2) { if (BumbalumpSpawned()) return "yetis_table_q0625_0202.htm"; ThreadPoolManager.getInstance().schedule(new BumbalumpSpawner(), 1000); return "yetis_table_q0625_0201.htm"; } if (cond == 3) return "yetis_table_q0625_0204.htm"; } return "noquest"; }
@Override public void onDeath(Creature actor, Creature killer) { ServerVariables.set( _625_TheFinestIngredientsPart2.class.getSimpleName(), String.valueOf(System.currentTimeMillis())); }
public RaceManagerInstance(int objectId, NpcTemplate template) { super(objectId, template); if (!Config.ALLOW_MONSTER_RACE) return; if (notInitialized) { notInitialized = false; _raceNumber = ServerVariables.getInt("monster_race", 1); history = new ArrayList<Race>(); managers = new CopyOnWriteArraySet<RaceManagerInstance>(); ThreadPoolManager s = ThreadPoolManager.getInstance(); s.scheduleAtFixedRate( new Announcement(SystemMessage.TICKETS_ARE_NOW_AVAILABLE_FOR_THE_S1TH_MONSTER_RACE), 0, 10 * MINUTE); s.scheduleAtFixedRate( new Announcement(SystemMessage.WE_ARE_NOW_SELLING_TICKETS_FOR_THE_S1TH_MONSTER_RACE), 30 * SECOND, 10 * MINUTE); s.scheduleAtFixedRate( new Announcement(SystemMessage.TICKETS_ARE_NOW_AVAILABLE_FOR_THE_S1TH_MONSTER_RACE), MINUTE, 10 * MINUTE); s.scheduleAtFixedRate( new Announcement(SystemMessage.WE_ARE_NOW_SELLING_TICKETS_FOR_THE_S1TH_MONSTER_RACE), MINUTE + 30 * SECOND, 10 * MINUTE); s.scheduleAtFixedRate( new Announcement( SystemMessage.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_CEASE_IN_S1_MINUTE_S), 2 * MINUTE, 10 * MINUTE); s.scheduleAtFixedRate( new Announcement( SystemMessage.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_CEASE_IN_S1_MINUTE_S), 3 * MINUTE, 10 * MINUTE); s.scheduleAtFixedRate( new Announcement( SystemMessage.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_CEASE_IN_S1_MINUTE_S), 4 * MINUTE, 10 * MINUTE); s.scheduleAtFixedRate( new Announcement( SystemMessage.TICKET_SALES_FOR_THE_MONSTER_RACE_WILL_CEASE_IN_S1_MINUTE_S), 5 * MINUTE, 10 * MINUTE); s.scheduleAtFixedRate( new Announcement( SystemMessage.TICKETS_SALES_ARE_CLOSED_FOR_THE_S1TH_MONSTER_RACE_ODDS_ARE_POSTED), 6 * MINUTE, 10 * MINUTE); s.scheduleAtFixedRate( new Announcement( SystemMessage.TICKETS_SALES_ARE_CLOSED_FOR_THE_S1TH_MONSTER_RACE_ODDS_ARE_POSTED), 7 * MINUTE, 10 * MINUTE); s.scheduleAtFixedRate( new Announcement(SystemMessage.THE_S2TH_MONSTER_RACE_WILL_BEGIN_IN_S1_MINUTES), 7 * MINUTE, 10 * MINUTE); s.scheduleAtFixedRate( new Announcement(SystemMessage.THE_S2TH_MONSTER_RACE_WILL_BEGIN_IN_S1_MINUTES), 8 * MINUTE, 10 * MINUTE); s.scheduleAtFixedRate( new Announcement(SystemMessage.THE_S1TH_MONSTER_RACE_WILL_BEGIN_IN_30_SECONDS), 8 * MINUTE + 30 * SECOND, 10 * MINUTE); s.scheduleAtFixedRate( new Announcement( SystemMessage.THE_S1TH_MONSTER_RACE_IS_ABOUT_TO_BEGIN_COUNTDOWN_IN_FIVE_SECONDS), 8 * MINUTE + 50 * SECOND, 10 * MINUTE); s.scheduleAtFixedRate( new Announcement(SystemMessage.THE_RACE_WILL_BEGIN_IN_S1_SECONDS), 8 * MINUTE + 55 * SECOND, 10 * MINUTE); s.scheduleAtFixedRate( new Announcement(SystemMessage.THE_RACE_WILL_BEGIN_IN_S1_SECONDS), 8 * MINUTE + 56 * SECOND, 10 * MINUTE); s.scheduleAtFixedRate( new Announcement(SystemMessage.THE_RACE_WILL_BEGIN_IN_S1_SECONDS), 8 * MINUTE + 57 * SECOND, 10 * MINUTE); s.scheduleAtFixedRate( new Announcement(SystemMessage.THE_RACE_WILL_BEGIN_IN_S1_SECONDS), 8 * MINUTE + 58 * SECOND, 10 * MINUTE); s.scheduleAtFixedRate( new Announcement(SystemMessage.THE_RACE_WILL_BEGIN_IN_S1_SECONDS), 8 * MINUTE + 59 * SECOND, 10 * MINUTE); s.scheduleAtFixedRate(new Announcement(SystemMessage.THEYRE_OFF), 9 * MINUTE, 10 * MINUTE); } managers.add(this); }