Q00378_GrandFeast.java 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  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.Q00378_GrandFeast;
  20. import com.l2jserver.gameserver.model.actor.L2Npc;
  21. import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
  22. import com.l2jserver.gameserver.model.quest.Quest;
  23. import com.l2jserver.gameserver.model.quest.QuestState;
  24. /**
  25. * Grand Feast (378)
  26. * @author Adry_85
  27. */
  28. public final class Q00378_GrandFeast extends Quest
  29. {
  30. // NPC
  31. private static final int RANSPO = 30594;
  32. // Items
  33. private static final int JONAS_SALAD_RECIPE = 1455;
  34. private static final int JONAS_SAUCE_RECIPE = 1456;
  35. private static final int JONAS_STEAK_RECIPE = 1457;
  36. private static final int THEME_OF_THE_FEAST = 4421;
  37. private static final int OLD_WINE_15_YEAR = 5956;
  38. private static final int OLD_WINE_30_YEAR = 5957;
  39. private static final int OLD_WINE_60_YEAR = 5958;
  40. private static final int RITRONS_DESSERT_RECIPE = 5959;
  41. // Rewards
  42. private static final int CORAL_EARRING = 846;
  43. private static final int RED_CRESCENT_EARRING = 847;
  44. private static final int ENCHANTED_EARRING = 848;
  45. private static final int ENCHANTED_RING = 879;
  46. private static final int RING_OF_DEVOTION = 890;
  47. private static final int BLUE_DIAMOND_NECKLACE = 909;
  48. private static final int NECKLACE_OF_DEVOTION = 910;
  49. // Misc
  50. private static final int MIN_LEVEL = 20;
  51. public Q00378_GrandFeast()
  52. {
  53. super(378, Q00378_GrandFeast.class.getSimpleName(), "Grand Feast");
  54. addStartNpc(RANSPO);
  55. addTalkId(RANSPO);
  56. }
  57. @Override
  58. public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
  59. {
  60. final QuestState qs = getQuestState(player, false);
  61. if (qs == null)
  62. {
  63. return null;
  64. }
  65. String htmltext = null;
  66. switch (event)
  67. {
  68. case "30594-02.htm":
  69. {
  70. qs.setMemoStateEx(1, 0);
  71. qs.startQuest();
  72. htmltext = event;
  73. break;
  74. }
  75. case "30594-05.html":
  76. {
  77. final int i0 = qs.getMemoStateEx(1);
  78. if (hasQuestItems(player, OLD_WINE_15_YEAR))
  79. {
  80. takeItems(player, OLD_WINE_15_YEAR, 1);
  81. qs.setMemoStateEx(1, i0 + 10);
  82. qs.setCond(2, true);
  83. htmltext = event;
  84. }
  85. else
  86. {
  87. htmltext = "30594-08.html";
  88. }
  89. break;
  90. }
  91. case "30594-06.html":
  92. {
  93. final int i0 = qs.getMemoStateEx(1);
  94. if (hasQuestItems(player, OLD_WINE_30_YEAR))
  95. {
  96. takeItems(player, OLD_WINE_30_YEAR, 1);
  97. qs.setMemoStateEx(1, i0 + 20);
  98. qs.setCond(2, true);
  99. htmltext = event;
  100. }
  101. else
  102. {
  103. htmltext = "30594-08.html";
  104. }
  105. break;
  106. }
  107. case "30594-07.html":
  108. {
  109. final int i0 = qs.getMemoStateEx(1);
  110. if (hasQuestItems(player, OLD_WINE_60_YEAR))
  111. {
  112. takeItems(player, OLD_WINE_60_YEAR, 1);
  113. qs.setMemoStateEx(1, i0 + 30);
  114. qs.setCond(2, true);
  115. htmltext = event;
  116. }
  117. else
  118. {
  119. htmltext = "30594-08.html";
  120. }
  121. break;
  122. }
  123. case "30594-09.html":
  124. case "30594-18.html":
  125. {
  126. htmltext = event;
  127. break;
  128. }
  129. case "30594-12.html":
  130. {
  131. if (hasQuestItems(player, THEME_OF_THE_FEAST))
  132. {
  133. takeItems(player, THEME_OF_THE_FEAST, 1);
  134. qs.setCond(3, true);
  135. htmltext = event;
  136. }
  137. else
  138. {
  139. htmltext = "30594-08.html";
  140. }
  141. break;
  142. }
  143. case "30594-14.html":
  144. {
  145. final int i0 = qs.getMemoStateEx(1);
  146. if (hasQuestItems(player, JONAS_SALAD_RECIPE))
  147. {
  148. takeItems(player, JONAS_SALAD_RECIPE, 1);
  149. qs.setMemoStateEx(1, i0 + 1);
  150. qs.setCond(4, true);
  151. htmltext = event;
  152. }
  153. else
  154. {
  155. htmltext = "30594-17.html";
  156. }
  157. break;
  158. }
  159. case "30594-15.html":
  160. {
  161. final int i0 = qs.getMemoStateEx(1);
  162. if (hasQuestItems(player, JONAS_SAUCE_RECIPE))
  163. {
  164. takeItems(player, JONAS_SAUCE_RECIPE, 1);
  165. qs.setMemoStateEx(1, i0 + 2);
  166. qs.setCond(4, true);
  167. htmltext = event;
  168. }
  169. else
  170. {
  171. htmltext = "30594-17.html";
  172. }
  173. break;
  174. }
  175. case "30594-16.html":
  176. {
  177. final int i0 = qs.getMemoStateEx(1);
  178. if (hasQuestItems(player, JONAS_STEAK_RECIPE))
  179. {
  180. takeItems(player, JONAS_STEAK_RECIPE, 1);
  181. qs.setMemoStateEx(1, i0 + 3);
  182. qs.setCond(4, true);
  183. htmltext = event;
  184. }
  185. else
  186. {
  187. htmltext = "30594-17.html";
  188. }
  189. break;
  190. }
  191. }
  192. return htmltext;
  193. }
  194. @Override
  195. public String onTalk(L2Npc npc, L2PcInstance player)
  196. {
  197. QuestState qs = getQuestState(player, true);
  198. String htmltext = getNoQuestMsg(player);
  199. if (qs.isCreated())
  200. {
  201. htmltext = (player.getLevel() >= MIN_LEVEL) ? "30594-01.htm" : "30594-03.html";
  202. }
  203. else if (qs.isStarted())
  204. {
  205. switch (qs.getCond())
  206. {
  207. case 1:
  208. {
  209. htmltext = "30594-04.html";
  210. break;
  211. }
  212. case 2:
  213. {
  214. htmltext = (hasQuestItems(player, THEME_OF_THE_FEAST)) ? "30594-11.html" : "30594-10.html";
  215. break;
  216. }
  217. case 3:
  218. {
  219. htmltext = "30594-13.html";
  220. break;
  221. }
  222. case 4:
  223. {
  224. if (hasQuestItems(player, RITRONS_DESSERT_RECIPE))
  225. {
  226. takeItems(player, RITRONS_DESSERT_RECIPE, 1);
  227. int item = 0, adena = 0;
  228. long quantity = 0;
  229. switch (qs.getMemoStateEx(1))
  230. {
  231. case 11:
  232. {
  233. item = RED_CRESCENT_EARRING;
  234. quantity = 1;
  235. adena = 5700;
  236. break;
  237. }
  238. case 12:
  239. {
  240. item = CORAL_EARRING;
  241. quantity = 2;
  242. adena = 1200;
  243. break;
  244. }
  245. case 13:
  246. {
  247. item = ENCHANTED_RING;
  248. quantity = 1;
  249. adena = 8100;
  250. break;
  251. }
  252. case 21:
  253. {
  254. item = CORAL_EARRING;
  255. quantity = 2;
  256. break;
  257. }
  258. case 22:
  259. {
  260. item = ENCHANTED_RING;
  261. quantity = 1;
  262. adena = 6900;
  263. break;
  264. }
  265. case 23:
  266. {
  267. item = NECKLACE_OF_DEVOTION;
  268. quantity = 1;
  269. break;
  270. }
  271. case 31:
  272. {
  273. item = BLUE_DIAMOND_NECKLACE;
  274. quantity = 1;
  275. adena = 25400;
  276. break;
  277. }
  278. case 32:
  279. {
  280. item = RING_OF_DEVOTION;
  281. quantity = 2;
  282. adena = 8500;
  283. break;
  284. }
  285. case 33:
  286. {
  287. item = ENCHANTED_EARRING;
  288. quantity = 1;
  289. adena = 2200;
  290. break;
  291. }
  292. }
  293. giveItems(player, item, quantity);
  294. giveAdena(player, adena, true);
  295. qs.exitQuest(true, true);
  296. htmltext = "30594-20.html";
  297. }
  298. else
  299. {
  300. htmltext = "30594-19.html";
  301. }
  302. break;
  303. }
  304. }
  305. }
  306. return htmltext;
  307. }
  308. }