123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479 |
- /*
- * 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 <http://www.gnu.org/licenses/>.
- */
- package quests.Q00111_ElrokianHuntersProof;
- import java.util.HashMap;
- import java.util.Map;
- import com.l2jserver.gameserver.enums.QuestSound;
- import com.l2jserver.gameserver.model.actor.L2Npc;
- import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
- import com.l2jserver.gameserver.model.holders.ItemChanceHolder;
- import com.l2jserver.gameserver.model.quest.Quest;
- import com.l2jserver.gameserver.model.quest.QuestState;
- import com.l2jserver.gameserver.model.quest.State;
- /**
- * Elrokian Hunter's Proof (111)
- * @author Adry_85
- */
- public final class Q00111_ElrokianHuntersProof extends Quest
- {
- // NPCs
- private static final int MARQUEZ = 32113;
- private static final int MUSHIKA = 32114;
- private static final int ASAMAH = 32115;
- private static final int KIRIKACHIN = 32116;
- // Items
- private static final int ELROKIAN_TRAP = 8763;
- private static final int TRAP_STONE = 8764;
- private static final int DIARY_FRAGMENT = 8768;
- private static final int EXPEDITION_MEMBERS_LETTER = 8769;
- private static final int ORNITHOMINUS_CLAW = 8770;
- private static final int DEINONYCHUS_BONE = 8771;
- private static final int PACHYCEPHALOSAURUS_SKIN = 8772;
- private static final int PRACTICE_ELROKIAN_TRAP = 8773;
- // Misc
- private static final int MIN_LEVEL = 75;
- // Mobs
- private static final Map<Integer, ItemChanceHolder> MOBS_DROP_CHANCES = new HashMap<>();
- static
- {
- MOBS_DROP_CHANCES.put(22196, new ItemChanceHolder(DIARY_FRAGMENT, 0.51, 4)); // velociraptor_leader
- MOBS_DROP_CHANCES.put(22197, new ItemChanceHolder(DIARY_FRAGMENT, 0.51, 4)); // velociraptor
- MOBS_DROP_CHANCES.put(22198, new ItemChanceHolder(DIARY_FRAGMENT, 0.51, 4)); // velociraptor_s
- MOBS_DROP_CHANCES.put(22218, new ItemChanceHolder(DIARY_FRAGMENT, 0.25, 4)); // velociraptor_n
- MOBS_DROP_CHANCES.put(22223, new ItemChanceHolder(DIARY_FRAGMENT, 0.26, 4)); // velociraptor_leader2
- MOBS_DROP_CHANCES.put(22200, new ItemChanceHolder(ORNITHOMINUS_CLAW, 0.66, 11)); // ornithomimus_leader
- MOBS_DROP_CHANCES.put(22201, new ItemChanceHolder(ORNITHOMINUS_CLAW, 0.33, 11)); // ornithomimus
- MOBS_DROP_CHANCES.put(22202, new ItemChanceHolder(ORNITHOMINUS_CLAW, 0.66, 11)); // ornithomimus_s
- MOBS_DROP_CHANCES.put(22219, new ItemChanceHolder(ORNITHOMINUS_CLAW, 0.33, 11)); // ornithomimus_n
- MOBS_DROP_CHANCES.put(22224, new ItemChanceHolder(ORNITHOMINUS_CLAW, 0.33, 11)); // ornithomimus_leader2
- MOBS_DROP_CHANCES.put(22203, new ItemChanceHolder(DEINONYCHUS_BONE, 0.65, 11)); // deinonychus_leader
- MOBS_DROP_CHANCES.put(22204, new ItemChanceHolder(DEINONYCHUS_BONE, 0.32, 11)); // deinonychus
- MOBS_DROP_CHANCES.put(22205, new ItemChanceHolder(DEINONYCHUS_BONE, 0.66, 11)); // deinonychus_s
- MOBS_DROP_CHANCES.put(22220, new ItemChanceHolder(DEINONYCHUS_BONE, 0.32, 11)); // deinonychus_n
- MOBS_DROP_CHANCES.put(22225, new ItemChanceHolder(DEINONYCHUS_BONE, 0.32, 11)); // deinonychus_leader2
- MOBS_DROP_CHANCES.put(22208, new ItemChanceHolder(PACHYCEPHALOSAURUS_SKIN, 0.50, 11)); // pachycephalosaurus_ldr
- MOBS_DROP_CHANCES.put(22209, new ItemChanceHolder(PACHYCEPHALOSAURUS_SKIN, 0.50, 11)); // pachycephalosaurus
- MOBS_DROP_CHANCES.put(22210, new ItemChanceHolder(PACHYCEPHALOSAURUS_SKIN, 0.50, 11)); // pachycephalosaurus_s
- MOBS_DROP_CHANCES.put(22221, new ItemChanceHolder(PACHYCEPHALOSAURUS_SKIN, 0.49, 11)); // pachycephalosaurus_n
- MOBS_DROP_CHANCES.put(22226, new ItemChanceHolder(PACHYCEPHALOSAURUS_SKIN, 0.50, 11)); // pachycephalosaurus_ldr2
- }
-
- public Q00111_ElrokianHuntersProof()
- {
- super(111, Q00111_ElrokianHuntersProof.class.getSimpleName(), "Elrokian Hunter's Proof");
- addStartNpc(MARQUEZ);
- addTalkId(MARQUEZ, MUSHIKA, ASAMAH, KIRIKACHIN);
- addKillId(MOBS_DROP_CHANCES.keySet());
- registerQuestItems(DIARY_FRAGMENT, EXPEDITION_MEMBERS_LETTER, ORNITHOMINUS_CLAW, DEINONYCHUS_BONE, PACHYCEPHALOSAURUS_SKIN, PRACTICE_ELROKIAN_TRAP);
- }
-
- @Override
- public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
- {
- final QuestState qs = getQuestState(player, false);
- String htmltext = null;
- if (qs == null)
- {
- return htmltext;
- }
-
- switch (event)
- {
- case "32113-02.htm":
- case "32113-05.htm":
- case "32113-04.html":
- case "32113-10.html":
- case "32113-11.html":
- case "32113-12.html":
- case "32113-13.html":
- case "32113-14.html":
- case "32113-18.html":
- case "32113-19.html":
- case "32113-20.html":
- case "32113-21.html":
- case "32113-22.html":
- case "32113-23.html":
- case "32113-24.html":
- case "32115-08.html":
- case "32116-03.html":
- {
- htmltext = event;
- break;
- }
- case "32113-03.html":
- {
- qs.startQuest();
- qs.setMemoState(1);
- htmltext = event;
- break;
- }
- case "32113-15.html":
- {
- if (qs.isMemoState(3))
- {
- qs.setMemoState(4);
- qs.setCond(4, true);
- htmltext = event;
- }
- break;
- }
- case "32113-25.html":
- {
- if (qs.isMemoState(5))
- {
- qs.setMemoState(6);
- qs.setCond(6, true);
- giveItems(player, EXPEDITION_MEMBERS_LETTER, 1);
- htmltext = event;
- }
- break;
- }
- case "32115-03.html":
- {
- if (qs.isMemoState(2))
- {
- qs.setMemoState(3);
- qs.setCond(3, true);
- htmltext = event;
- }
- break;
- }
- case "32115-06.html":
- {
- if (qs.isMemoState(9))
- {
- qs.setMemoState(10);
- qs.setCond(9);
- playSound(player, QuestSound.ETCSOUND_ELROKI_SONG_FULL);
- htmltext = event;
- }
- break;
- }
- case "32115-09.html":
- {
- if (qs.isMemoState(10))
- {
- qs.setMemoState(11);
- qs.setCond(10, true);
- htmltext = event;
- }
- break;
- }
- case "32116-04.html":
- {
- if (qs.isMemoState(7))
- {
- qs.setMemoState(8);
- playSound(player, QuestSound.ETCSOUND_ELROKI_SONG_FULL);
- htmltext = event;
- }
- break;
- }
- case "32116-07.html":
- {
- if (qs.isMemoState(8))
- {
- qs.setMemoState(9);
- qs.setCond(8, true);
- htmltext = event;
- }
- break;
- }
- case "32116-10.html":
- {
- if (qs.isMemoState(12) && hasQuestItems(player, PRACTICE_ELROKIAN_TRAP))
- {
- takeItems(player, PRACTICE_ELROKIAN_TRAP, -1);
- giveItems(player, ELROKIAN_TRAP, 1);
- giveItems(player, TRAP_STONE, 100);
- giveAdena(player, 1071691, true);
- addExpAndSp(player, 553524, 55538);
- qs.exitQuest(false, true);
- htmltext = event;
- }
- break;
- }
- }
- return htmltext;
- }
-
- @Override
- public String onKill(L2Npc npc, L2PcInstance player, boolean isSummon)
- {
- final QuestState qs = getRandomPartyMemberState(player, -1, 3, npc);
- if (qs != null)
- {
- final ItemChanceHolder item = MOBS_DROP_CHANCES.get(npc.getId());
- if (item.getCount() == qs.getMemoState())
- {
- if (qs.isCond(4))
- {
- if (giveItemRandomly(qs.getPlayer(), npc, item.getId(), 1, 50, item.getChance(), true))
- {
- qs.setCond(5);
- }
- }
- else if (qs.isCond(10))
- {
- if (giveItemRandomly(qs.getPlayer(), npc, item.getId(), 1, 10, item.getChance(), true) //
- && (getQuestItemsCount(qs.getPlayer(), ORNITHOMINUS_CLAW) >= 10) //
- && (getQuestItemsCount(qs.getPlayer(), DEINONYCHUS_BONE) >= 10) //
- && (getQuestItemsCount(qs.getPlayer(), PACHYCEPHALOSAURUS_SKIN) >= 10))
- {
- qs.setCond(11);
- }
- }
- }
- }
- return super.onKill(npc, player, isSummon);
- }
-
- @Override
- public String onTalk(L2Npc npc, L2PcInstance player)
- {
- QuestState qs = getQuestState(player, true);
- String htmltext = getNoQuestMsg(player);
- if (qs == null)
- {
- return htmltext;
- }
-
- switch (qs.getState())
- {
- case State.COMPLETED:
- {
- if (npc.getId() == MARQUEZ)
- {
- htmltext = getAlreadyCompletedMsg(player);
- }
- break;
- }
- case State.CREATED:
- {
- if (npc.getId() == MARQUEZ)
- {
- htmltext = ((player.getLevel() >= MIN_LEVEL) ? "32113-01.htm" : "32113-06.html");
- }
- break;
- }
- case State.STARTED:
- {
- switch (npc.getId())
- {
- case MARQUEZ:
- {
- switch (qs.getMemoState())
- {
- case 1:
- {
- htmltext = "32113-07.html";
- break;
- }
- case 2:
- {
- htmltext = "32113-08.html";
- break;
- }
- case 3:
- {
- htmltext = "32113-09.html";
- break;
- }
- case 4:
- {
- if (getQuestItemsCount(player, DIARY_FRAGMENT) < 50)
- {
- htmltext = "32113-16.html";
- }
- else
- {
- takeItems(player, DIARY_FRAGMENT, -1);
- qs.setMemoState(5);
- htmltext = "32113-17.html";
- }
- break;
- }
- case 5:
- {
- htmltext = "32113-26.html";
- break;
- }
- case 6:
- {
- htmltext = "32113-27.html";
- break;
- }
- case 7:
- case 8:
- {
- htmltext = "32113-28.html";
- break;
- }
- case 9:
- {
- htmltext = "32113-29.html";
- break;
- }
- case 10:
- case 11:
- case 12:
- {
- htmltext = "32113-30.html";
- break;
- }
- }
- break;
- }
- case MUSHIKA:
- {
- if (qs.isMemoState(1))
- {
- qs.setCond(2, true);
- qs.setMemoState(2);
- htmltext = "32114-01.html";
- }
- else if ((qs.getMemoState() > 1) && (qs.getMemoState() < 10))
- {
- htmltext = "32114-02.html";
- }
- else
- {
- htmltext = "32114-03.html";
- }
- break;
- }
- case ASAMAH:
- {
- switch (qs.getMemoState())
- {
- case 1:
- {
- htmltext = "32115-01.html";
- break;
- }
- case 2:
- {
- htmltext = "32115-02.html";
- break;
- }
- case 3:
- case 4:
- case 5:
- case 6:
- case 7:
- case 8:
- {
- htmltext = "32115-04.html";
- break;
- }
- case 9:
- {
- htmltext = "32115-05.html";
- break;
- }
- case 10:
- {
- htmltext = "32115-07.html";
- break;
- }
- case 11:
- {
- if ((getQuestItemsCount(player, ORNITHOMINUS_CLAW) < 10) || (getQuestItemsCount(player, DEINONYCHUS_BONE) < 10) || (getQuestItemsCount(player, PACHYCEPHALOSAURUS_SKIN) < 10))
- {
- htmltext = "32115-10.html";
- }
- else
- {
- qs.setMemoState(12);
- qs.setCond(12, true);
- giveItems(player, PRACTICE_ELROKIAN_TRAP, 1);
- takeItems(player, ORNITHOMINUS_CLAW, -1);
- takeItems(player, DEINONYCHUS_BONE, -1);
- takeItems(player, PACHYCEPHALOSAURUS_SKIN, -1);
- htmltext = "32115-11.html";
- }
- break;
- }
- case 12:
- {
- htmltext = "32115-12.html";
- break;
- }
- }
- break;
- }
- case KIRIKACHIN:
- {
- switch (qs.getMemoState())
- {
- case 1:
- case 2:
- case 3:
- case 4:
- case 5:
- {
- htmltext = "32116-01.html";
- break;
- }
- case 6:
- {
- if (hasQuestItems(player, EXPEDITION_MEMBERS_LETTER))
- {
- qs.setMemoState(7);
- qs.setCond(7, true);
- takeItems(player, EXPEDITION_MEMBERS_LETTER, -1);
- htmltext = "32116-02.html";
- }
- break;
- }
- case 7:
- {
- htmltext = "32116-05.html";
- break;
- }
- case 8:
- {
- htmltext = "32116-06.html";
- break;
- }
- case 9:
- case 10:
- case 11:
- {
- htmltext = "32116-08.html";
- break;
- }
- case 12:
- {
- htmltext = "32116-09.html";
- break;
- }
- }
- break;
- }
- }
- break;
- }
- }
- return htmltext;
- }
- }
|