123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886 |
- /*
- * 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.Q00420_LittleWing;
- import java.util.Arrays;
- import java.util.HashMap;
- import java.util.List;
- 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.quest.Quest;
- import com.l2jserver.gameserver.model.quest.QuestState;
- import com.l2jserver.gameserver.model.quest.State;
- import com.l2jserver.gameserver.network.NpcStringId;
- import com.l2jserver.gameserver.network.clientpackets.Say2;
- import com.l2jserver.gameserver.network.serverpackets.NpcSay;
- /**
- * Little Wing (420)
- * @author Pandragon
- */
- public final class Q00420_LittleWing extends Quest
- {
- // NPCs
- private static final int MARIA = 30608;
- private static final int CRONOS = 30610;
- private static final int BYRON = 30711;
- private static final int MIMYU = 30747;
- private static final int EXARION = 30748;
- private static final int ZWOV = 30749;
- private static final int KALIBRAN = 30750;
- private static final int SUZET = 30751;
- private static final int SHAMHAI = 30752;
- private static final int COOPER = 30829;
- // Items
- private static final int COAL = 1870;
- private static final int CHARCOAL = 1871;
- private static final int SILVER_NUGGET = 1873;
- private static final int STONE_OF_PURITY = 1875;
- private static final int GEMSTONE_D = 2130;
- private static final int GEMSTONE_C = 2131;
- private static final int FAIRY_DUST = 3499;
- private static final int FAIRY_STONE = 3816;
- private static final int DELUXE_FAIRY_STONE = 3817;
- private static final int FAIRY_STONE_LIST = 3818;
- private static final int DELUXE_STONE_LIST = 3819;
- private static final int TOAD_SKIN = 3820;
- private static final int MONKSHOOD_JUICE = 3821;
- private static final int EXARION_SCALE = 3822;
- private static final int EXARION_EGG = 3823;
- private static final int ZWOV_SCALE = 3824;
- private static final int ZWOV_EGG = 3825;
- private static final int KALIBRAN_SCALE = 3826;
- private static final int KALIBRAN_EGG = 3827;
- private static final int SUZET_SCALE = 3828;
- private static final int SUZET_EGG = 3829;
- private static final int SHAMHAI_SCALE = 3830;
- private static final int SHAMHAI_EGG = 3831;
- // Monsters
- private static final int DEAD_SEEKER = 20202;
- private static final int TOAD_LORD = 20231;
- private static final int MARSH_SPIDER = 20233;
- private static final int BREKA_OVERLORD = 20270;
- private static final int ROAD_SCAVENGER = 20551;
- private static final int LETO_WARRIOR = 20580;
- private static final int[] DELUXE_STONE_BREAKERS =
- {
- 20589, // Fline
- 20590, // Liele
- 20591, // Valley Treant
- 20592, // Satyr
- 20593, // Unicorn
- 20594, // Forest Runner
- 20595, // Fline Elder
- 20596, // Liele Elder
- 20597, // Valley Treant Elder
- 20598, // Satyr Elder
- 20599, // Unicorn Elder
- 27185, // Fairy Tree of Wind (Quest Monster)
- 27186, // Fairy Tree of Star (Quest Monster)
- 27187, // Fairy Tree of Twilight (Quest Monster)
- 27188, // Fairy Tree of Abyss (Quest Monster)
- 27189, // Soul of Tree Guardian (Quest Monster)
- };
- // Rewards
- private static final int DRAGONFLUTE_OF_WIND = 3500;
- private static final int DRAGONFLUTE_OF_STAR = 3501;
- private static final int DRAGONFLUTE_OF_TWILIGHT = 3502;
- private static final int HATCHLING_ARMOR = 3912;
- private static final int HATCHLING_FOOD = 4038;
- private static final List<Integer> EGGS = Arrays.asList(EXARION_EGG, SUZET_EGG, KALIBRAN_EGG, SHAMHAI_EGG, ZWOV_EGG);
- // Drake Drops
- private static final Map<Integer, Integer> EGG_DROPS = new HashMap<>();
- {
- EGG_DROPS.put(DEAD_SEEKER, SHAMHAI_EGG);
- EGG_DROPS.put(MARSH_SPIDER, ZWOV_EGG);
- EGG_DROPS.put(BREKA_OVERLORD, SUZET_EGG);
- EGG_DROPS.put(ROAD_SCAVENGER, KALIBRAN_EGG);
- EGG_DROPS.put(LETO_WARRIOR, EXARION_EGG);
- }
- // Misc
- private static final int MIN_LVL = 35;
-
- public Q00420_LittleWing()
- {
- super(420, Q00420_LittleWing.class.getSimpleName(), "Little Wing");
- addStartNpc(COOPER);
- addTalkId(MARIA, CRONOS, BYRON, MIMYU, EXARION, ZWOV, KALIBRAN, SUZET, SHAMHAI, COOPER);
- addAttackId(DELUXE_STONE_BREAKERS);
- addKillId(TOAD_LORD, DEAD_SEEKER, MARSH_SPIDER, BREKA_OVERLORD, ROAD_SCAVENGER, LETO_WARRIOR);
- registerQuestItems(FAIRY_DUST, FAIRY_STONE, DELUXE_FAIRY_STONE, FAIRY_STONE_LIST, DELUXE_STONE_LIST, TOAD_SKIN, MONKSHOOD_JUICE, EXARION_SCALE, EXARION_EGG, ZWOV_SCALE, ZWOV_EGG, KALIBRAN_SCALE, KALIBRAN_EGG, SUZET_SCALE, SUZET_EGG, SHAMHAI_SCALE, SHAMHAI_EGG);
- }
-
- @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 "30610-02.html":
- case "30610-03.html":
- case "30610-04.html":
- case "30711-02.html":
- case "30747-05.html":
- case "30747-06.html":
- case "30751-02.html":
- {
- htmltext = event;
- break;
- }
- case "30829-02.htm":
- {
- if (qs.isCreated())
- {
- qs.startQuest();
- htmltext = event;
- }
- break;
- }
- case "30610-05.html":
- {
- if (qs.isCond(1))
- {
- qs.setCond(2, true);
- qs.set("old_stone", 0);
- qs.set("fairy_stone", 1);
- giveItems(player, FAIRY_STONE_LIST, 1);
- htmltext = event;
- }
- break;
- }
- case "30610-06.html":
- {
- if (qs.isCond(1))
- {
- qs.setCond(2, true);
- qs.set("old_stone", 0);
- qs.set("fairy_stone", 2);
- giveItems(player, DELUXE_STONE_LIST, 1);
- htmltext = event;
- }
- break;
- }
- case "30610-12.html":
- {
- if (qs.isCond(5))
- {
- qs.setCond(2, true);
- qs.set("old_stone", qs.getInt("fairy_stone"));
- qs.set("fairy_stone", 1);
- giveItems(player, FAIRY_STONE_LIST, 1);
- htmltext = event;
- }
- break;
- }
- case "30610-13.html":
- {
- if (qs.isCond(5))
- {
- qs.setCond(2, true);
- qs.set("old_stone", qs.getInt("fairy_stone"));
- qs.set("fairy_stone", 2);
- giveItems(player, DELUXE_STONE_LIST, 1);
- htmltext = event;
- }
- break;
- }
- case "30608-03.html":
- {
- if (qs.isCond(2))
- {
- if ((qs.getInt("fairy_stone") == 1) && (getQuestItemsCount(player, COAL) >= 10) && (getQuestItemsCount(player, CHARCOAL) >= 10) && (getQuestItemsCount(player, GEMSTONE_D) >= 1) && (getQuestItemsCount(player, SILVER_NUGGET) >= 3) && (getQuestItemsCount(player, TOAD_SKIN) >= 10))
- {
- takeItems(player, FAIRY_STONE_LIST, -1);
- takeItems(player, COAL, 10);
- takeItems(player, CHARCOAL, 10);
- takeItems(player, GEMSTONE_D, 1);
- takeItems(player, SILVER_NUGGET, 3);
- takeItems(player, TOAD_SKIN, -1);
- giveItems(player, FAIRY_STONE, 1);
- }
- qs.setCond(3, true);
- htmltext = event;
- }
- break;
- }
- case "30608-05.html":
- {
- if (qs.isCond(2))
- {
- if ((qs.getInt("fairy_stone") == 2) && (getQuestItemsCount(player, COAL) >= 10) && (getQuestItemsCount(player, CHARCOAL) >= 10) && (getQuestItemsCount(player, GEMSTONE_C) >= 1) && (getQuestItemsCount(player, STONE_OF_PURITY) >= 1) && (getQuestItemsCount(player, SILVER_NUGGET) >= 5) && (getQuestItemsCount(player, TOAD_SKIN) >= 20))
- {
- takeItems(player, DELUXE_STONE_LIST, -1);
- takeItems(player, COAL, 10);
- takeItems(player, CHARCOAL, 10);
- takeItems(player, GEMSTONE_C, 1);
- takeItems(player, STONE_OF_PURITY, 1);
- takeItems(player, SILVER_NUGGET, 5);
- takeItems(player, TOAD_SKIN, -1);
- giveItems(player, DELUXE_FAIRY_STONE, 1);
- }
- qs.setCond(3, true);
- htmltext = event;
- }
- break;
- }
- case "30711-03.html":
- {
- if (qs.isCond(3))
- {
- qs.setCond(4, true);
- if (qs.getInt("fairy_stone") == 2)
- {
- htmltext = "30711-04.html";
- }
- else
- {
- htmltext = event;
- }
- }
- break;
- }
- case "30747-02.html":
- case "30747-04.html":
- {
- if (qs.isCond(4) && ((getQuestItemsCount(player, FAIRY_STONE) + getQuestItemsCount(player, DELUXE_FAIRY_STONE)) > 0))
- {
- takeItems(player, -1, FAIRY_STONE, DELUXE_FAIRY_STONE);
- if (qs.getInt("fairy_stone") == 2)
- {
- giveItems(player, FAIRY_DUST, 1);
- }
- qs.setCond(5, true);
- htmltext = event;
- }
- break;
- }
- case "30747-07.html":
- case "30747-08.html":
- {
- if (qs.isCond(5) && (getQuestItemsCount(player, MONKSHOOD_JUICE) == 0))
- {
- giveItems(player, MONKSHOOD_JUICE, 1);
- htmltext = event;
- }
- break;
- }
- case "30747-12.html":
- {
- if (qs.isCond(7))
- {
- if ((qs.getInt("fairy_stone") == 1) || (getQuestItemsCount(player, FAIRY_DUST) == 0))
- {
- giveReward(player);
- qs.exitQuest(true, true);
- htmltext = "30747-16.html";
- }
- else
- {
- qs.setCond(8, false);
- htmltext = event;
- }
- }
- else if (qs.isCond(8))
- {
- htmltext = event;
- }
- break;
- }
- case "30747-13.html":
- {
- if (qs.isCond(8))
- {
- giveReward(player);
- qs.exitQuest(true, true);
- htmltext = event;
- }
- break;
- }
- case "30747-15.html":
- {
- if (qs.isCond(8) && (getQuestItemsCount(player, FAIRY_DUST) > 1))
- {
- if (getRandom(100) < 5)
- {
- giveItems(player, HATCHLING_ARMOR, 1);
- htmltext = "30747-14.html";
- }
- else
- {
- giveItems(player, HATCHLING_FOOD, 20);
- htmltext = event;
- }
- giveReward(player);
- takeItems(player, FAIRY_DUST, -1);
- qs.exitQuest(true, true);
- }
- break;
- }
- case "30748-02.html":
- {
- if (qs.isCond(5))
- {
- takeItems(player, MONKSHOOD_JUICE, -1);
- giveItems(player, EXARION_SCALE, 1);
- qs.setCond(6, true);
- qs.set("drake_hunt", LETO_WARRIOR);
- htmltext = event;
- }
- break;
- }
- case "30749-02.html":
- {
- if (qs.isCond(5))
- {
- takeItems(player, MONKSHOOD_JUICE, -1);
- giveItems(player, ZWOV_SCALE, 1);
- qs.setCond(6, true);
- qs.set("drake_hunt", MARSH_SPIDER);
- htmltext = event;
- }
- break;
- }
- case "30750-02.html":
- {
- if (qs.isCond(5))
- {
- takeItems(player, MONKSHOOD_JUICE, -1);
- giveItems(player, KALIBRAN_SCALE, 1);
- qs.setCond(6, true);
- qs.set("drake_hunt", ROAD_SCAVENGER);
- htmltext = event;
- }
- break;
- }
- case "30750-05.html":
- {
- if (qs.isCond(6) && (getQuestItemsCount(player, KALIBRAN_EGG) >= 20))
- {
- takeItems(player, -1, KALIBRAN_SCALE, KALIBRAN_EGG);
- giveItems(player, KALIBRAN_EGG, 1);
- qs.setCond(7, true);
- htmltext = event;
- }
- break;
- }
- case "30751-03.html":
- {
- if (qs.isCond(5))
- {
- takeItems(player, MONKSHOOD_JUICE, -1);
- giveItems(player, SUZET_SCALE, 1);
- qs.setCond(6, true);
- qs.set("drake_hunt", BREKA_OVERLORD);
- htmltext = event;
- }
- break;
- }
- case "30752-02.html":
- {
- if (qs.isCond(5))
- {
- takeItems(player, MONKSHOOD_JUICE, -1);
- giveItems(player, SHAMHAI_SCALE, 1);
- qs.setCond(6, true);
- qs.set("drake_hunt", DEAD_SEEKER);
- htmltext = event;
- }
- break;
- }
- }
- return htmltext;
- }
-
- @Override
- public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon)
- {
- final QuestState qs = getQuestState(attacker, false);
- if ((qs != null) && (getQuestItemsCount(attacker, DELUXE_FAIRY_STONE) > 0) && (getRandom(100) < 30))
- {
- takeItems(attacker, DELUXE_FAIRY_STONE, -1);
- qs.playSound(QuestSound.ITEMSOUND_QUEST_MIDDLE);
- npc.broadcastPacket(new NpcSay(npc, Say2.NPC_ALL, NpcStringId.THE_STONE_THE_ELVEN_STONE_BROKE));
- }
- return super.onAttack(npc, attacker, damage, isSummon);
- }
-
- @Override
- public String onTalk(L2Npc npc, L2PcInstance talker)
- {
- final QuestState qs = getQuestState(talker, true);
- String htmltext = getNoQuestMsg(talker);
- switch (qs.getState())
- {
- case State.CREATED:
- {
- if (npc.getId() == COOPER)
- {
- htmltext = ((talker.getLevel() >= MIN_LVL) ? "30829-01.htm" : "30829-03.html");
- }
- break;
- }
- case State.STARTED:
- {
- switch (npc.getId())
- {
- case COOPER:
- {
- htmltext = "30829-04.html";
- break;
- }
- case CRONOS:
- {
- switch (qs.getCond())
- {
- case 1:
- {
- htmltext = "30610-01.html";
- break;
- }
- case 2:
- {
- htmltext = "30610-07.html";
- break;
- }
- case 3:
- {
- if (qs.getInt("old_stone") > 0)
- {
- htmltext = "30610-14.html";
- }
- else
- {
- htmltext = "30610-08.html";
- }
- break;
- }
- case 4:
- {
- htmltext = "30610-09.html";
- break;
- }
- case 5:
- {
- if ((getQuestItemsCount(talker, FAIRY_STONE) == 0) && (getQuestItemsCount(talker, DELUXE_FAIRY_STONE) == 0))
- {
- htmltext = "30610-10.html";
- }
- else
- {
- htmltext = "30610-11.html";
- }
- break;
- }
- }
- break;
- }
- case MARIA:
- {
- switch (qs.getCond())
- {
- case 2:
- {
- if ((qs.getInt("fairy_stone") == 1) && (getQuestItemsCount(talker, COAL) >= 10) && (getQuestItemsCount(talker, CHARCOAL) >= 10) && (getQuestItemsCount(talker, GEMSTONE_D) >= 1) && (getQuestItemsCount(talker, SILVER_NUGGET) >= 3) && (getQuestItemsCount(talker, TOAD_SKIN) >= 10))
- {
- htmltext = "30608-02.html";
- }
- else if ((qs.getInt("fairy_stone") == 2) && (getQuestItemsCount(talker, COAL) >= 10) && (getQuestItemsCount(talker, CHARCOAL) >= 10) && (getQuestItemsCount(talker, GEMSTONE_C) >= 1) && (getQuestItemsCount(talker, STONE_OF_PURITY) >= 1) && (getQuestItemsCount(talker, SILVER_NUGGET) >= 5) && (getQuestItemsCount(talker, TOAD_SKIN) >= 20))
- {
- htmltext = "30608-04.html";
- }
- else
- {
- htmltext = "30608-01.html";
- }
- break;
- }
- case 3:
- {
- htmltext = "30608-06.html";
- break;
- }
- }
- break;
- }
- case BYRON:
- {
- switch (qs.getCond())
- {
- case 2:
- {
- htmltext = "30711-10.html";
- break;
- }
- case 3:
- {
- if (qs.getInt("old_stone") == 0)
- {
- htmltext = "30711-01.html";
- }
- else if (qs.getInt("old_stone") == 1)
- {
- qs.setCond(5, true);
- htmltext = "30711-05.html";
- }
- else
- {
- qs.setCond(4, true);
- htmltext = "30711-06.html";
- }
- break;
- }
- case 4:
- {
- if ((getQuestItemsCount(talker, FAIRY_STONE) == 0) && (getQuestItemsCount(talker, DELUXE_FAIRY_STONE) == 0))
- {
- htmltext = "30711-09.html";
- }
- else if (getQuestItemsCount(talker, FAIRY_STONE) == 0)
- {
- htmltext = "30711-08.html";
- }
- else
- {
- htmltext = "30711-07.html";
- }
- break;
- }
- }
- break;
- }
- case MIMYU:
- {
- switch (qs.getCond())
- {
- case 4:
- {
- if (getQuestItemsCount(talker, FAIRY_STONE) > 0)
- {
- htmltext = "30747-01.html";
- }
- else if (getQuestItemsCount(talker, DELUXE_FAIRY_STONE) > 0)
- {
- htmltext = "30747-03.html";
- }
- break;
- }
- case 5:
- {
- if (getQuestItemsCount(talker, MONKSHOOD_JUICE) > 0)
- {
- htmltext = "30747-09.html";
- }
- else if (qs.getInt("fairy_stone") == 1)
- {
- htmltext = "30747-05.html";
- }
- else
- {
- htmltext = "30747-06.html";
- }
- break;
- }
- case 6:
- {
- if ((getQuestItemsCount(talker, EXARION_EGG) >= 20) || (getQuestItemsCount(talker, ZWOV_EGG) >= 20) || (getQuestItemsCount(talker, KALIBRAN_EGG) >= 20) || (getQuestItemsCount(talker, SUZET_EGG) >= 20) || (getQuestItemsCount(talker, SHAMHAI_EGG) >= 20))
- {
- htmltext = "30747-10.html";
- }
- else
- {
- htmltext = "30747-09.html";
- }
- break;
- }
- case 7:
- {
- htmltext = "30747-11.html";
- break;
- }
- case 8:
- {
- htmltext = "30747-12.html";
- break;
- }
- }
- break;
- }
- case EXARION:
- {
- switch (qs.getCond())
- {
- case 5:
- {
- if (getQuestItemsCount(talker, MONKSHOOD_JUICE) > 0)
- {
- htmltext = "30748-01.html";
- }
- break;
- }
- case 6:
- {
- if (getQuestItemsCount(talker, EXARION_EGG) >= 20)
- {
- takeItems(talker, -1, EXARION_SCALE, EXARION_EGG);
- giveItems(talker, EXARION_EGG, 1);
- qs.setCond(7, true);
- htmltext = "30748-04.html";
- }
- else
- {
- htmltext = "30748-03.html";
- }
- break;
- }
- case 7:
- {
- htmltext = "30748-05.html";
- break;
- }
- }
- break;
- }
- case ZWOV:
- {
- switch (qs.getCond())
- {
- case 5:
- {
- if (getQuestItemsCount(talker, MONKSHOOD_JUICE) > 0)
- {
- htmltext = "30749-01.html";
- }
- break;
- }
- case 6:
- {
- if (getQuestItemsCount(talker, ZWOV_EGG) >= 20)
- {
- takeItems(talker, -1, ZWOV_SCALE, ZWOV_EGG);
- giveItems(talker, ZWOV_EGG, 1);
- qs.setCond(7, true);
- htmltext = "30749-04.html";
- }
- else
- {
- htmltext = "30749-03.html";
- }
- break;
- }
- case 7:
- {
- htmltext = "30749-05.html";
- break;
- }
- }
- break;
- }
- case KALIBRAN:
- {
- switch (qs.getCond())
- {
- case 5:
- {
- if (getQuestItemsCount(talker, MONKSHOOD_JUICE) > 0)
- {
- htmltext = "30750-01.html";
- }
- break;
- }
- case 6:
- {
- if (getQuestItemsCount(talker, KALIBRAN_EGG) >= 20)
- {
- htmltext = "30750-04.html";
- }
- else
- {
- htmltext = "30750-03.html";
- }
- break;
- }
- case 7:
- {
- htmltext = "30750-06.html";
- break;
- }
- }
- break;
- }
- case SUZET:
- {
- switch (qs.getCond())
- {
- case 5:
- {
- if (getQuestItemsCount(talker, MONKSHOOD_JUICE) > 0)
- {
- htmltext = "30751-01.html";
- }
- break;
- }
- case 6:
- {
- if (getQuestItemsCount(talker, SUZET_EGG) >= 20)
- {
- takeItems(talker, -1, SUZET_SCALE, SUZET_EGG);
- giveItems(talker, SUZET_EGG, 1);
- qs.setCond(7, true);
- htmltext = "30751-05.html";
- }
- else
- {
- htmltext = "30751-04.html";
- }
- break;
- }
- case 7:
- {
- htmltext = "30751-06.html";
- break;
- }
- }
- break;
- }
- case SHAMHAI:
- {
- switch (qs.getCond())
- {
- case 5:
- {
- if (getQuestItemsCount(talker, MONKSHOOD_JUICE) > 0)
- {
- htmltext = "30752-01.html";
- }
- break;
- }
- case 6:
- {
- if (getQuestItemsCount(talker, SHAMHAI_EGG) >= 20)
- {
- takeItems(talker, -1, SHAMHAI_SCALE, SHAMHAI_EGG);
- giveItems(talker, SHAMHAI_EGG, 1);
- qs.setCond(7, true);
- htmltext = "30752-04.html";
- }
- else
- {
- htmltext = "30752-03.html";
- }
- break;
- }
- case 7:
- {
- htmltext = "30752-05.html";
- break;
- }
- }
- break;
- }
- }
- break;
- }
- case State.COMPLETED:
- {
- htmltext = getAlreadyCompletedMsg(talker);
- break;
- }
- }
- return htmltext;
- }
-
- @Override
- public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
- {
- final QuestState qs = getRandomPartyMemberState(killer, -1, 3, npc);
- if (qs != null)
- {
- if (qs.isCond(2) && (npc.getId() == TOAD_LORD))
- {
- if (qs.getInt("fairy_stone") == 1)
- {
- giveItemRandomly(qs.getPlayer(), npc, TOAD_SKIN, 1, 10, 0.3, true);
- }
- else
- {
- giveItemRandomly(qs.getPlayer(), npc, TOAD_SKIN, 1, 20, 0.3, true);
- }
- }
- else if (qs.isCond(6) && (npc.getId() == qs.getInt("drake_hunt")))
- {
- giveItemRandomly(qs.getPlayer(), npc, EGG_DROPS.get(npc.getId()), 1, 20, 0.5, true);
- }
- }
- return super.onKill(npc, killer, isSummon);
- }
-
- /**
- * Gives the reward to the player.
- * @param player the player
- */
- private static void giveReward(L2PcInstance player)
- {
- final int random = getRandom(100);
- for (int i : EGGS)
- {
- if (hasQuestItems(player, i))
- {
- final int mul = EGGS.indexOf(i) * 5;
- if (hasQuestItems(player, FAIRY_DUST))
- {
- if (random < (45 + mul))
- {
- giveItems(player, DRAGONFLUTE_OF_WIND, 1);
- }
- else if (random < (75 + mul))
- {
- giveItems(player, DRAGONFLUTE_OF_STAR, 1);
- }
- else
- {
- giveItems(player, DRAGONFLUTE_OF_TWILIGHT, 1);
- }
- }
- if (random < (50 + mul))
- {
- giveItems(player, DRAGONFLUTE_OF_WIND, 1);
- }
- else if (random < (85 + mul))
- {
- giveItems(player, DRAGONFLUTE_OF_STAR, 1);
- }
- else
- {
- giveItems(player, DRAGONFLUTE_OF_TWILIGHT, 1);
- }
- takeItems(player, i, -1);
- break;
- }
- }
- }
- }
|