Q287_FiguringItOut.java 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. package quests.Q287_FiguringItOut;
  2. import com.l2jserver.gameserver.model.actor.L2Npc;
  3. import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
  4. import com.l2jserver.gameserver.model.quest.Quest;
  5. import com.l2jserver.gameserver.model.quest.QuestState;
  6. import com.l2jserver.gameserver.model.quest.State;
  7. import com.l2jserver.util.Rnd;
  8. /**
  9. * Figuring It Out! (287)
  10. * @author malyelfik
  11. */
  12. public class Q287_FiguringItOut extends Quest
  13. {
  14. private static final String qn = "287_FiguringItOut";
  15. //NPC
  16. private static final int Laki = 32742;
  17. private static final int[] Monsters = { 22771, 22770, 22774, 22769, 22772, 22768, 22773 };
  18. // Items
  19. private static final int VialOfTantaBlood = 15499;
  20. @Override
  21. public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
  22. {
  23. String htmltext = event;
  24. QuestState st = player.getQuestState(qn);
  25. if (st == null)
  26. return htmltext;
  27. if (event.equalsIgnoreCase("32742-03.htm"))
  28. {
  29. st.set("cond", "1");
  30. st.playSound("ItemSound.quest_accept");
  31. st.setState(State.STARTED);
  32. }
  33. else if (event.equalsIgnoreCase("Icarus"))
  34. {
  35. if (st.getQuestItemsCount(VialOfTantaBlood) >= 500)
  36. {
  37. st.takeItems(VialOfTantaBlood, 500);
  38. int i0 = Rnd.get(5);
  39. if (i0 == 0)
  40. st.giveItems(10381, 1);
  41. else if (i0 == 1)
  42. st.giveItems(10405, 1);
  43. else if (i0 == 2)
  44. st.giveItems(10405, 4);
  45. else if (i0 == 3)
  46. st.giveItems(10405, 4);
  47. else
  48. st.giveItems(10405, 6);
  49. st.playSound("ItemSound.quest_finish");
  50. htmltext = "32742-06.html";
  51. }
  52. else
  53. htmltext = "32742-07.html";
  54. }
  55. else if (event.equalsIgnoreCase("Moirai"))
  56. {
  57. if (st.getQuestItemsCount(VialOfTantaBlood) >= 100)
  58. {
  59. st.takeItems(VialOfTantaBlood, 100);
  60. int i0 = Rnd.get(10);
  61. if (i0 == 0)
  62. st.giveItems(15776, 1);
  63. else if (i0 == 1)
  64. st.giveItems(15779, 1);
  65. else if (i0 == 2)
  66. st.giveItems(15782, 1);
  67. else if (i0 == 3)
  68. {
  69. boolean i1 = Rnd.nextBoolean();
  70. if (!i1)
  71. st.giveItems(15785, 1);
  72. else
  73. st.giveItems(15788, 1);
  74. }
  75. else if (i0 == 4)
  76. {
  77. int i1 = Rnd.get(10);
  78. if (i1 < 4)
  79. st.giveItems(15812, 1);
  80. else if (i1 < 8)
  81. st.giveItems(15813, 1);
  82. else
  83. st.giveItems(15814, 1);
  84. }
  85. else if (i0 == 5)
  86. st.giveItems(15646, 5);
  87. else if (i0 == 6)
  88. st.giveItems(15649, 5);
  89. else if (i0 == 7)
  90. st.giveItems(15652, 5);
  91. else if (i0 == 8)
  92. {
  93. boolean i1 = Rnd.nextBoolean();
  94. if (!i1)
  95. st.giveItems(15655, 5);
  96. else
  97. st.giveItems(15658, 5);
  98. }
  99. else
  100. {
  101. int i1 = Rnd.get(10);
  102. if (i1 < 4)
  103. st.giveItems(15772, 1);
  104. else if (i1 < 7)
  105. st.giveItems(15773, 1);
  106. else
  107. st.giveItems(15774, 1);
  108. }
  109. st.playSound("ItemSound.quest_finish");
  110. htmltext = "32742-08.html";
  111. }
  112. else
  113. htmltext = "32742-09.html";
  114. }
  115. else if (event.equalsIgnoreCase("32742-11.html"))
  116. {
  117. if (st.getQuestItemsCount(VialOfTantaBlood) >= 1)
  118. htmltext = "32742-11.html";
  119. else
  120. {
  121. st.playSound("ItemSound.quest_finish");
  122. st.exitQuest(true);
  123. htmltext = "32742-12.html";
  124. }
  125. }
  126. else if (event.equalsIgnoreCase("32742-13.html"))
  127. {
  128. st.takeItems(VialOfTantaBlood, -1);
  129. st.playSound("ItemSound.quest_finish");
  130. st.exitQuest(true);
  131. htmltext = "32742-12.html";
  132. }
  133. return htmltext;
  134. }
  135. @Override
  136. public String onTalk(L2Npc npc, L2PcInstance player)
  137. {
  138. String htmltext = getNoQuestMsg(player);
  139. QuestState st = player.getQuestState(qn);
  140. QuestState prev = player.getQuestState("250_WatchWhatYouEat");
  141. if (st == null)
  142. return htmltext;
  143. switch (st.getState())
  144. {
  145. case State.CREATED:
  146. if (player.getLevel() >= 82 && prev != null && prev.getState() == State.COMPLETED)
  147. htmltext = "32742-01.htm";
  148. else
  149. htmltext = "32742-14.htm";
  150. break;
  151. case State.STARTED:
  152. if (st.getQuestItemsCount(VialOfTantaBlood) < 100)
  153. htmltext = "32742-04.html";
  154. else
  155. htmltext = "32742-05.html";
  156. break;
  157. }
  158. return htmltext;
  159. }
  160. @Override
  161. public String onKill(L2Npc npc, L2PcInstance player, boolean isPet)
  162. {
  163. L2PcInstance partyMember = getRandomPartyMember(player, "1");
  164. if (partyMember == null)
  165. return null;
  166. final QuestState st = partyMember.getQuestState(qn);
  167. int chance = Rnd.get(1000);
  168. boolean giveItem = false;
  169. switch (npc.getNpcId())
  170. {
  171. case 22771: // Tanta Lizardman Berserker
  172. if (chance < 159)
  173. giveItem = true;
  174. break;
  175. case 22770: // Tanta Lizardman Soldier
  176. if (chance < 123)
  177. giveItem = true;
  178. break;
  179. case 22774: // Tanta Lizardman Summoner
  180. if (chance < 261)
  181. giveItem = true;
  182. break;
  183. case 22769: // Tanta Lizardman Warrior
  184. if (chance < 689)
  185. giveItem = true;
  186. break;
  187. case 22772: // Tanta Lizardman Archer
  188. if (chance < 739)
  189. giveItem = true;
  190. break;
  191. case 22768: // Tanta Lizardman Scout
  192. if (chance < 509)
  193. giveItem = true;
  194. break;
  195. case 22773: // Tanta Lizardman Magician
  196. if (chance < 737)
  197. giveItem = true;
  198. break;
  199. }
  200. if (giveItem)
  201. {
  202. st.giveItems(VialOfTantaBlood, 1);
  203. st.playSound("ItemSound.quest_itemget");
  204. }
  205. return null;
  206. }
  207. public Q287_FiguringItOut(int questId, String name, String descr)
  208. {
  209. super(questId, name, descr);
  210. addStartNpc(Laki);
  211. addTalkId(Laki);
  212. for (int i : Monsters)
  213. {
  214. addKillId(i);
  215. }
  216. questItemIds = new int[] { VialOfTantaBlood };
  217. }
  218. public static void main(String[] args)
  219. {
  220. new Q287_FiguringItOut(287, qn, "Figuring It Out!");
  221. }
  222. }