Q00623_TheFinestFood.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. /*
  2. * Copyright (C) 2004-2015 L2J DataPack
  3. *
  4. * This file is part of L2J DataPack.
  5. *
  6. * L2J DataPack is free software: you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License as published by
  8. * the Free Software Foundation, either version 3 of the License, or
  9. * (at your option) any later version.
  10. *
  11. * L2J DataPack is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14. * General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU General Public License
  17. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  18. */
  19. package quests.Q00623_TheFinestFood;
  20. import java.util.HashMap;
  21. import java.util.Map;
  22. import com.l2jserver.gameserver.model.actor.L2Npc;
  23. import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
  24. import com.l2jserver.gameserver.model.holders.ItemHolder;
  25. import com.l2jserver.gameserver.model.quest.Quest;
  26. import com.l2jserver.gameserver.model.quest.QuestState;
  27. /**
  28. * The Finest Food (623)
  29. * @author janiko
  30. */
  31. public final class Q00623_TheFinestFood extends Quest
  32. {
  33. // NPCs
  34. private static final int JEREMY = 31521;
  35. // Monsters
  36. private static final int THERMAL_BUFFALO = 21315;
  37. private static final int THERMAL_FLAVA = 21316;
  38. private static final int THERMAL_ANTELOPE = 21318;
  39. // Items
  40. private static final ItemHolder LEAF_OF_FLAVA = new ItemHolder(7199, 100);
  41. private static final ItemHolder BUFFALO_MEAT = new ItemHolder(7200, 100);
  42. private static final ItemHolder HORN_OF_ANTELOPE = new ItemHolder(7201, 100);
  43. // Rewards
  44. private static final ItemHolder RING_OF_AURAKYRA = new ItemHolder(6849, 1);
  45. private static final ItemHolder SEALED_SANDDRAGONS_EARING = new ItemHolder(6847, 1);
  46. private static final ItemHolder DRAGON_NECKLACE = new ItemHolder(6851, 1);
  47. // Misc
  48. private static final int MIN_LVL = 71;
  49. private static final Map<Integer, ItemHolder> MONSTER_DROPS = new HashMap<>();
  50. static
  51. {
  52. MONSTER_DROPS.put(THERMAL_BUFFALO, BUFFALO_MEAT);
  53. MONSTER_DROPS.put(THERMAL_FLAVA, LEAF_OF_FLAVA);
  54. MONSTER_DROPS.put(THERMAL_ANTELOPE, HORN_OF_ANTELOPE);
  55. }
  56. public Q00623_TheFinestFood()
  57. {
  58. super(623, Q00623_TheFinestFood.class.getSimpleName(), "The Finest Food");
  59. addStartNpc(JEREMY);
  60. addTalkId(JEREMY);
  61. addKillId(THERMAL_BUFFALO, THERMAL_FLAVA, THERMAL_ANTELOPE);
  62. registerQuestItems(LEAF_OF_FLAVA.getId(), BUFFALO_MEAT.getId(), HORN_OF_ANTELOPE.getId());
  63. }
  64. @Override
  65. public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
  66. {
  67. final QuestState qs = getQuestState(player, false);
  68. String htmltext = null;
  69. if (qs == null)
  70. {
  71. return htmltext;
  72. }
  73. switch (event)
  74. {
  75. case "31521-03.htm":
  76. {
  77. if (qs.isCreated())
  78. {
  79. qs.startQuest();
  80. htmltext = event;
  81. }
  82. break;
  83. }
  84. case "31521-06.html":
  85. {
  86. if (qs.isCond(2))
  87. {
  88. if (hasAllItems(player, true, LEAF_OF_FLAVA, BUFFALO_MEAT, HORN_OF_ANTELOPE))
  89. {
  90. int random = getRandom(1000);
  91. if (random < 120)
  92. {
  93. giveAdena(player, 25000, true);
  94. rewardItems(player, RING_OF_AURAKYRA);
  95. }
  96. else if (random < 240)
  97. {
  98. giveAdena(player, 65000, true);
  99. rewardItems(player, SEALED_SANDDRAGONS_EARING);
  100. }
  101. else if (random < 340)
  102. {
  103. giveAdena(player, 25000, true);
  104. rewardItems(player, DRAGON_NECKLACE);
  105. }
  106. else if (random < 940)
  107. {
  108. giveAdena(player, 73000, true);
  109. addExpAndSp(player, 230000, 18200);
  110. }
  111. qs.exitQuest(true, true);
  112. htmltext = event;
  113. }
  114. else
  115. {
  116. htmltext = "31521-07.html";
  117. }
  118. }
  119. break;
  120. }
  121. }
  122. return htmltext;
  123. }
  124. @Override
  125. public String onTalk(L2Npc npc, L2PcInstance talker)
  126. {
  127. final QuestState qs = getQuestState(talker, true);
  128. String htmltext = getNoQuestMsg(talker);
  129. switch (npc.getId())
  130. {
  131. case JEREMY:
  132. {
  133. if (qs.isCreated())
  134. {
  135. htmltext = (talker.getLevel() >= MIN_LVL) ? "31521-01.htm" : "31521-02.htm";
  136. }
  137. else if (qs.isStarted())
  138. {
  139. switch (qs.getCond())
  140. {
  141. case 1:
  142. {
  143. htmltext = "31521-04.html";
  144. break;
  145. }
  146. case 2:
  147. {
  148. htmltext = "31521-05.html";
  149. break;
  150. }
  151. }
  152. }
  153. else if (qs.isCompleted())
  154. {
  155. htmltext = getAlreadyCompletedMsg(talker);
  156. }
  157. break;
  158. }
  159. }
  160. return htmltext;
  161. }
  162. @Override
  163. public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
  164. {
  165. final QuestState qs = getRandomPartyMemberState(killer, 1, 3, npc);
  166. final ItemHolder holder = MONSTER_DROPS.get(npc.getId());
  167. if ((qs != null) && giveItemRandomly(qs.getPlayer(), npc, holder.getId(), 1, holder.getCount(), 1, true))
  168. {
  169. if (hasAllItems(qs.getPlayer(), true, BUFFALO_MEAT, HORN_OF_ANTELOPE, LEAF_OF_FLAVA))
  170. {
  171. qs.setCond(2);
  172. }
  173. }
  174. return super.onKill(npc, killer, isSummon);
  175. }
  176. }