Q00415_PathOfTheOrcMonk.java 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707
  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.Q00415_PathOfTheOrcMonk;
  20. import com.l2jserver.gameserver.enums.QuestSound;
  21. import com.l2jserver.gameserver.model.actor.L2Npc;
  22. import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
  23. import com.l2jserver.gameserver.model.base.ClassId;
  24. import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
  25. import com.l2jserver.gameserver.model.items.type.WeaponType;
  26. import com.l2jserver.gameserver.model.quest.Quest;
  27. import com.l2jserver.gameserver.model.quest.QuestState;
  28. import com.l2jserver.gameserver.network.serverpackets.SocialAction;
  29. import com.l2jserver.gameserver.util.Util;
  30. /**
  31. * Path Of The Orc Monk (415)
  32. * @author ivantotov
  33. */
  34. public final class Q00415_PathOfTheOrcMonk extends Quest
  35. {
  36. // NPCs
  37. private static final int PREFECT_KASMAN = 30501;
  38. private static final int GANTAKI_ZU_URUTU = 30587;
  39. private static final int KHAVATARI_ROSHEEK = 30590;
  40. private static final int KHAVATARI_TORUKU = 30591;
  41. private static final int SEER_MOIRA = 31979;
  42. private static final int KHAVATARI_AREN = 32056;
  43. // Items
  44. private static final int POMEGRANATE = 1593;
  45. private static final int LEATHER_POUCH_1ST = 1594;
  46. private static final int LEATHER_POUCH_2ND = 1595;
  47. private static final int LEATHER_POUCH_3RD = 1596;
  48. private static final int LEATHER_POUCH_1ST_FULL = 1597;
  49. private static final int LEATHER_POUCH_2ND_FULL = 1598;
  50. private static final int LEATHER_POUCH_3RD_FULL = 1599;
  51. private static final int KASHA_BEAR_CLAW = 1600;
  52. private static final int KASHA_BLADE_SPIDER_TALON = 1601;
  53. private static final int SCARLET_SALAMANDER_SCALE = 1602;
  54. private static final int FIERY_SPIRIT_SCROLL = 1603;
  55. private static final int ROSHEEKS_LETTER = 1604;
  56. private static final int GANTAKIS_LETTRT_OF_RECOMMENDATION = 1605;
  57. private static final int FIG = 1606;
  58. private static final int LEATHER_POUCH_4TF = 1607;
  59. private static final int LEATHER_POUCH_4TF_FULL = 1608;
  60. private static final int VUKU_ORK_TUSK = 1609;
  61. private static final int RATMAN_FANG = 1610;
  62. private static final int LANGK_LIZARDMAN_TOOTH = 1611;
  63. private static final int FELIM_LIZARDMAN_TOOTH = 1612;
  64. private static final int IRON_WILL_SCROLL = 1613;
  65. private static final int TORUKUS_LETTER = 1614;
  66. private static final int KASHA_SPIDERS_TOOTH = 8545;
  67. private static final int HORN_OF_BAAR_DRE_VANUL = 8546;
  68. // Reward
  69. private static final int KHAVATARI_TOTEM = 1615;
  70. // Monster
  71. private static final int FELIM_LIZARDMAN_WARRIOR = 20014;
  72. private static final int VUKU_ORC_FIGHTER = 20017;
  73. private static final int LANGK_LIZZARDMAN_WARRIOR = 20024;
  74. private static final int RATMAN_WARRIOR = 20359;
  75. private static final int SCARLET_SALAMANDER = 20415;
  76. private static final int KASHA_FANG_SPIDER = 20476;
  77. private static final int KASHA_BLADE_SPIDER = 20478;
  78. private static final int KASHA_BEAR = 20479;
  79. private static final int BAAR_DRE_VANUL = 21118;
  80. // Misc
  81. private static final int MIN_LEVEL = 18;
  82. public Q00415_PathOfTheOrcMonk()
  83. {
  84. super(415, Q00415_PathOfTheOrcMonk.class.getSimpleName(), "Path Of The Orc Monk");
  85. addStartNpc(GANTAKI_ZU_URUTU);
  86. addTalkId(GANTAKI_ZU_URUTU, PREFECT_KASMAN, KHAVATARI_ROSHEEK, KHAVATARI_TORUKU, SEER_MOIRA, KHAVATARI_AREN);
  87. addAttackId(FELIM_LIZARDMAN_WARRIOR, VUKU_ORC_FIGHTER, LANGK_LIZZARDMAN_WARRIOR, RATMAN_WARRIOR, SCARLET_SALAMANDER, KASHA_FANG_SPIDER, KASHA_BLADE_SPIDER, KASHA_BEAR, BAAR_DRE_VANUL);
  88. addKillId(FELIM_LIZARDMAN_WARRIOR, VUKU_ORC_FIGHTER, LANGK_LIZZARDMAN_WARRIOR, RATMAN_WARRIOR, SCARLET_SALAMANDER, KASHA_FANG_SPIDER, KASHA_BLADE_SPIDER, KASHA_BEAR, BAAR_DRE_VANUL);
  89. registerQuestItems(POMEGRANATE, LEATHER_POUCH_1ST, LEATHER_POUCH_2ND, LEATHER_POUCH_3RD, LEATHER_POUCH_1ST_FULL, LEATHER_POUCH_2ND_FULL, LEATHER_POUCH_3RD_FULL, KASHA_BEAR_CLAW, KASHA_BLADE_SPIDER_TALON, SCARLET_SALAMANDER_SCALE, FIERY_SPIRIT_SCROLL, ROSHEEKS_LETTER, GANTAKIS_LETTRT_OF_RECOMMENDATION, FIG, LEATHER_POUCH_4TF, LEATHER_POUCH_4TF_FULL, VUKU_ORK_TUSK, RATMAN_FANG, LANGK_LIZARDMAN_TOOTH, FELIM_LIZARDMAN_TOOTH, IRON_WILL_SCROLL, TORUKUS_LETTER, KASHA_SPIDERS_TOOTH, HORN_OF_BAAR_DRE_VANUL);
  90. }
  91. @Override
  92. public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
  93. {
  94. final QuestState qs = getQuestState(player, false);
  95. if (qs == null)
  96. {
  97. return null;
  98. }
  99. String htmltext = null;
  100. switch (event)
  101. {
  102. case "ACCEPT":
  103. {
  104. if (player.getClassId() == ClassId.orcFighter)
  105. {
  106. if (player.getLevel() >= MIN_LEVEL)
  107. {
  108. if (hasQuestItems(player, KHAVATARI_TOTEM))
  109. {
  110. htmltext = "30587-04.htm";
  111. }
  112. else
  113. {
  114. htmltext = "30587-05.htm";
  115. }
  116. }
  117. else
  118. {
  119. htmltext = "30587-03.htm";
  120. }
  121. }
  122. else if (player.getClassId() == ClassId.orcMonk)
  123. {
  124. htmltext = "30587-02a.htm";
  125. }
  126. else
  127. {
  128. htmltext = "30587-02.htm";
  129. }
  130. break;
  131. }
  132. case "30587-06.htm":
  133. {
  134. qs.startQuest();
  135. giveItems(player, POMEGRANATE, 1);
  136. htmltext = event;
  137. break;
  138. }
  139. case "30587-09b.html":
  140. {
  141. if (hasQuestItems(player, FIERY_SPIRIT_SCROLL, ROSHEEKS_LETTER))
  142. {
  143. takeItems(player, ROSHEEKS_LETTER, 1);
  144. giveItems(player, GANTAKIS_LETTRT_OF_RECOMMENDATION, 1);
  145. qs.setCond(9);
  146. htmltext = event;
  147. }
  148. break;
  149. }
  150. case "30587-09c.html":
  151. {
  152. if (hasQuestItems(player, FIERY_SPIRIT_SCROLL, ROSHEEKS_LETTER))
  153. {
  154. takeItems(player, ROSHEEKS_LETTER, 1);
  155. qs.setMemoState(2);
  156. qs.setCond(14);
  157. htmltext = event;
  158. }
  159. break;
  160. }
  161. case "31979-02.html":
  162. {
  163. if (qs.isMemoState(5))
  164. {
  165. htmltext = event;
  166. }
  167. break;
  168. }
  169. case "31979-03.html":
  170. {
  171. if (qs.isMemoState(5))
  172. {
  173. giveAdena(player, 81900, true);
  174. giveItems(player, KHAVATARI_TOTEM, 1);
  175. final int level = player.getLevel();
  176. if (level >= 20)
  177. {
  178. addExpAndSp(player, 160267, 12646);
  179. }
  180. else if (level == 19)
  181. {
  182. addExpAndSp(player, 228064, 15995);
  183. }
  184. else
  185. {
  186. addExpAndSp(player, 295862, 19344);
  187. }
  188. qs.exitQuest(false, true);
  189. player.sendPacket(new SocialAction(player.getObjectId(), 3));
  190. qs.saveGlobalQuestVar("1ClassQuestFinished", "1");
  191. htmltext = event;
  192. }
  193. break;
  194. }
  195. case "31979-04.html":
  196. {
  197. if (qs.isMemoState(5))
  198. {
  199. qs.setCond(20);
  200. htmltext = event;
  201. }
  202. break;
  203. }
  204. case "32056-02.html":
  205. {
  206. if (qs.isMemoState(2))
  207. {
  208. htmltext = event;
  209. }
  210. break;
  211. }
  212. case "32056-03.html":
  213. {
  214. if (qs.isMemoState(2))
  215. {
  216. qs.setMemoState(3);
  217. qs.setCond(15);
  218. htmltext = event;
  219. }
  220. break;
  221. }
  222. case "32056-08.html":
  223. {
  224. if (qs.isMemoState(4) && (getQuestItemsCount(player, HORN_OF_BAAR_DRE_VANUL) >= 1))
  225. {
  226. takeItems(player, HORN_OF_BAAR_DRE_VANUL, -1);
  227. qs.setMemoState(5);
  228. qs.setCond(19);
  229. htmltext = event;
  230. }
  231. break;
  232. }
  233. }
  234. return htmltext;
  235. }
  236. @Override
  237. public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon)
  238. {
  239. final QuestState qs = getQuestState(attacker, false);
  240. if ((qs != null) && qs.isStarted())
  241. {
  242. switch (npc.getScriptValue())
  243. {
  244. case 0:
  245. {
  246. if (!checkWeapon(attacker))
  247. {
  248. npc.setScriptValue(2);
  249. }
  250. else
  251. {
  252. npc.setScriptValue(1);
  253. npc.getVariables().set("Q00415_last_attacker", attacker.getObjectId());
  254. }
  255. break;
  256. }
  257. case 1:
  258. {
  259. if ((npc.getVariables().getInt("Q00415_last_attacker") != attacker.getObjectId()) || !checkWeapon(attacker))
  260. {
  261. npc.setScriptValue(2);
  262. }
  263. break;
  264. }
  265. }
  266. }
  267. return super.onAttack(npc, attacker, damage, isSummon);
  268. }
  269. @Override
  270. public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
  271. {
  272. final QuestState qs = getQuestState(killer, false);
  273. if ((qs != null) && qs.isStarted() && npc.isScriptValue(1) && Util.checkIfInRange(1500, npc, killer, true))
  274. {
  275. final long ItemCount = getQuestItemsCount(killer, RATMAN_FANG, LANGK_LIZARDMAN_TOOTH, FELIM_LIZARDMAN_TOOTH, VUKU_ORK_TUSK);
  276. switch (npc.getId())
  277. {
  278. case FELIM_LIZARDMAN_WARRIOR:
  279. {
  280. if (hasQuestItems(killer, LEATHER_POUCH_4TF) && (getQuestItemsCount(killer, FELIM_LIZARDMAN_TOOTH) < 3))
  281. {
  282. if (ItemCount >= 11)
  283. {
  284. takeItems(killer, LEATHER_POUCH_4TF, 1);
  285. giveItems(killer, LEATHER_POUCH_4TF_FULL, 1);
  286. takeItems(killer, VUKU_ORK_TUSK, -1);
  287. takeItems(killer, RATMAN_FANG, -1);
  288. takeItems(killer, LANGK_LIZARDMAN_TOOTH, -1);
  289. takeItems(killer, FELIM_LIZARDMAN_TOOTH, -1);
  290. qs.setCond(12, true);
  291. }
  292. else
  293. {
  294. giveItems(killer, FELIM_LIZARDMAN_TOOTH, 1);
  295. playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  296. }
  297. }
  298. break;
  299. }
  300. case VUKU_ORC_FIGHTER:
  301. {
  302. if (hasQuestItems(killer, LEATHER_POUCH_4TF) && (getQuestItemsCount(killer, VUKU_ORK_TUSK) < 3))
  303. {
  304. if (ItemCount >= 11)
  305. {
  306. takeItems(killer, LEATHER_POUCH_4TF, 1);
  307. giveItems(killer, LEATHER_POUCH_4TF_FULL, 1);
  308. takeItems(killer, VUKU_ORK_TUSK, -1);
  309. takeItems(killer, RATMAN_FANG, -1);
  310. takeItems(killer, LANGK_LIZARDMAN_TOOTH, -1);
  311. takeItems(killer, FELIM_LIZARDMAN_TOOTH, -1);
  312. qs.setCond(12, true);
  313. }
  314. else
  315. {
  316. giveItems(killer, VUKU_ORK_TUSK, 1);
  317. playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  318. }
  319. }
  320. break;
  321. }
  322. case LANGK_LIZZARDMAN_WARRIOR:
  323. {
  324. if (hasQuestItems(killer, LEATHER_POUCH_4TF) && (getQuestItemsCount(killer, LANGK_LIZARDMAN_TOOTH) < 3))
  325. {
  326. if (ItemCount >= 11)
  327. {
  328. takeItems(killer, LEATHER_POUCH_4TF, 1);
  329. giveItems(killer, LEATHER_POUCH_4TF_FULL, 1);
  330. takeItems(killer, VUKU_ORK_TUSK, -1);
  331. takeItems(killer, RATMAN_FANG, -1);
  332. takeItems(killer, LANGK_LIZARDMAN_TOOTH, -1);
  333. takeItems(killer, FELIM_LIZARDMAN_TOOTH, -1);
  334. qs.setCond(12, true);
  335. }
  336. else
  337. {
  338. giveItems(killer, LANGK_LIZARDMAN_TOOTH, 1);
  339. playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  340. }
  341. }
  342. break;
  343. }
  344. case RATMAN_WARRIOR:
  345. {
  346. if (hasQuestItems(killer, LEATHER_POUCH_4TF) && (getQuestItemsCount(killer, RATMAN_FANG) < 3))
  347. {
  348. if (ItemCount >= 11)
  349. {
  350. takeItems(killer, LEATHER_POUCH_4TF, 1);
  351. giveItems(killer, LEATHER_POUCH_4TF_FULL, 1);
  352. takeItems(killer, VUKU_ORK_TUSK, -1);
  353. takeItems(killer, RATMAN_FANG, -1);
  354. takeItems(killer, LANGK_LIZARDMAN_TOOTH, -1);
  355. takeItems(killer, FELIM_LIZARDMAN_TOOTH, -1);
  356. qs.setCond(12, true);
  357. }
  358. else
  359. {
  360. giveItems(killer, RATMAN_FANG, 1);
  361. playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  362. }
  363. }
  364. break;
  365. }
  366. case SCARLET_SALAMANDER:
  367. {
  368. if (hasQuestItems(killer, LEATHER_POUCH_3RD))
  369. {
  370. if (getQuestItemsCount(killer, SCARLET_SALAMANDER_SCALE) == 4)
  371. {
  372. takeItems(killer, LEATHER_POUCH_3RD, 1);
  373. giveItems(killer, LEATHER_POUCH_3RD_FULL, 1);
  374. takeItems(killer, SCARLET_SALAMANDER_SCALE, -1);
  375. qs.setCond(7, true);
  376. }
  377. else
  378. {
  379. giveItems(killer, SCARLET_SALAMANDER_SCALE, 1);
  380. playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  381. }
  382. }
  383. break;
  384. }
  385. case KASHA_FANG_SPIDER:
  386. {
  387. if (qs.isMemoState(3) && (getQuestItemsCount(killer, KASHA_SPIDERS_TOOTH) < 6))
  388. {
  389. if (getRandom(100) < 70)
  390. {
  391. giveItems(killer, KASHA_SPIDERS_TOOTH, 1);
  392. if (getQuestItemsCount(killer, KASHA_SPIDERS_TOOTH) >= 6)
  393. {
  394. qs.setCond(16, true);
  395. }
  396. else
  397. {
  398. playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  399. }
  400. }
  401. }
  402. break;
  403. }
  404. case KASHA_BLADE_SPIDER:
  405. {
  406. if (hasQuestItems(killer, LEATHER_POUCH_2ND))
  407. {
  408. if (getQuestItemsCount(killer, KASHA_BLADE_SPIDER_TALON) == 4)
  409. {
  410. takeItems(killer, LEATHER_POUCH_2ND, 1);
  411. giveItems(killer, LEATHER_POUCH_2ND_FULL, 1);
  412. takeItems(killer, KASHA_BLADE_SPIDER_TALON, -1);
  413. qs.setCond(5, true);
  414. }
  415. else
  416. {
  417. giveItems(killer, KASHA_BLADE_SPIDER_TALON, 1);
  418. playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  419. }
  420. }
  421. else if (qs.isMemoState(3) && (getQuestItemsCount(killer, KASHA_SPIDERS_TOOTH) < 6))
  422. {
  423. if (getRandom(100) < 70)
  424. {
  425. giveItems(killer, KASHA_SPIDERS_TOOTH, 1);
  426. if (getQuestItemsCount(killer, KASHA_SPIDERS_TOOTH) == 6)
  427. {
  428. qs.setCond(16, true);
  429. }
  430. else
  431. {
  432. playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  433. }
  434. }
  435. }
  436. break;
  437. }
  438. case KASHA_BEAR:
  439. {
  440. if (hasQuestItems(killer, LEATHER_POUCH_1ST))
  441. {
  442. if (getQuestItemsCount(killer, KASHA_BEAR_CLAW) == 4)
  443. {
  444. takeItems(killer, LEATHER_POUCH_1ST, 1);
  445. giveItems(killer, LEATHER_POUCH_1ST_FULL, 1);
  446. takeItems(killer, KASHA_BEAR_CLAW, -1);
  447. qs.setCond(3, true);
  448. }
  449. else
  450. {
  451. giveItems(killer, KASHA_BEAR_CLAW, 1);
  452. playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  453. }
  454. }
  455. break;
  456. }
  457. case BAAR_DRE_VANUL:
  458. {
  459. if (qs.isMemoState(4) && !hasQuestItems(killer, HORN_OF_BAAR_DRE_VANUL))
  460. {
  461. if (getRandom(100) < 90)
  462. {
  463. giveItems(killer, HORN_OF_BAAR_DRE_VANUL, 1);
  464. qs.setCond(18, true);
  465. }
  466. }
  467. break;
  468. }
  469. }
  470. }
  471. return super.onKill(npc, killer, isSummon);
  472. }
  473. @Override
  474. public String onTalk(L2Npc npc, L2PcInstance player)
  475. {
  476. final QuestState qs = getQuestState(player, true);
  477. final int memoState = qs.getMemoState();
  478. String htmltext = getNoQuestMsg(player);
  479. if (qs.isCreated() || qs.isCompleted())
  480. {
  481. if (npc.getId() == GANTAKI_ZU_URUTU)
  482. {
  483. htmltext = "30587-01.htm";
  484. }
  485. }
  486. else if (qs.isStarted())
  487. {
  488. switch (npc.getId())
  489. {
  490. case GANTAKI_ZU_URUTU:
  491. {
  492. final long letterCount = getQuestItemsCount(player, LEATHER_POUCH_1ST, LEATHER_POUCH_2ND, LEATHER_POUCH_3RD, LEATHER_POUCH_1ST_FULL, LEATHER_POUCH_2ND_FULL, LEATHER_POUCH_3RD_FULL);
  493. if (memoState == 2)
  494. {
  495. htmltext = "30587-09c.html";
  496. }
  497. else if (hasQuestItems(player, POMEGRANATE) && !hasAtLeastOneQuestItem(player, FIERY_SPIRIT_SCROLL, GANTAKIS_LETTRT_OF_RECOMMENDATION, ROSHEEKS_LETTER) && (letterCount == 0))
  498. {
  499. htmltext = "30587-07.html";
  500. }
  501. else if (!hasAtLeastOneQuestItem(player, FIERY_SPIRIT_SCROLL, POMEGRANATE, GANTAKIS_LETTRT_OF_RECOMMENDATION, ROSHEEKS_LETTER) && (letterCount == 1))
  502. {
  503. htmltext = "30587-08.html";
  504. }
  505. else if (hasQuestItems(player, FIERY_SPIRIT_SCROLL, ROSHEEKS_LETTER) && !hasAtLeastOneQuestItem(player, POMEGRANATE, GANTAKIS_LETTRT_OF_RECOMMENDATION) && (letterCount == 0))
  506. {
  507. htmltext = "30587-09a.html";
  508. }
  509. else if (memoState < 2)
  510. {
  511. if (hasQuestItems(player, FIERY_SPIRIT_SCROLL, GANTAKIS_LETTRT_OF_RECOMMENDATION) && !hasAtLeastOneQuestItem(player, POMEGRANATE, ROSHEEKS_LETTER) && (letterCount == 0))
  512. {
  513. htmltext = "30587-10.html";
  514. }
  515. else if (hasQuestItems(player, FIERY_SPIRIT_SCROLL) && !hasAtLeastOneQuestItem(player, POMEGRANATE, GANTAKIS_LETTRT_OF_RECOMMENDATION, ROSHEEKS_LETTER) && (letterCount == 0))
  516. {
  517. htmltext = "30587-11.html";
  518. }
  519. }
  520. break;
  521. }
  522. case PREFECT_KASMAN:
  523. {
  524. if (hasQuestItems(player, GANTAKIS_LETTRT_OF_RECOMMENDATION))
  525. {
  526. takeItems(player, GANTAKIS_LETTRT_OF_RECOMMENDATION, 1);
  527. giveItems(player, FIG, 1);
  528. qs.setCond(10);
  529. htmltext = "30501-01.html";
  530. }
  531. else if (hasQuestItems(player, FIG) && !hasAtLeastOneQuestItem(player, LEATHER_POUCH_4TF, LEATHER_POUCH_4TF_FULL))
  532. {
  533. htmltext = "30501-02.html";
  534. }
  535. else if (!hasQuestItems(player, FIG) && hasAtLeastOneQuestItem(player, LEATHER_POUCH_4TF, LEATHER_POUCH_4TF_FULL))
  536. {
  537. htmltext = "30501-03.html";
  538. }
  539. else if (hasQuestItems(player, IRON_WILL_SCROLL))
  540. {
  541. giveAdena(player, 163800, true);
  542. giveItems(player, KHAVATARI_TOTEM, 1);
  543. final int level = player.getLevel();
  544. if (level >= 20)
  545. {
  546. addExpAndSp(player, 320534, 25292);
  547. }
  548. else if (level == 19)
  549. {
  550. addExpAndSp(player, 456128, 31990);
  551. }
  552. else
  553. {
  554. addExpAndSp(player, 591724, 38688);
  555. }
  556. qs.exitQuest(false, true);
  557. player.sendPacket(new SocialAction(player.getObjectId(), 3));
  558. qs.saveGlobalQuestVar("1ClassQuestFinished", "1");
  559. htmltext = "30501-04.html";
  560. }
  561. break;
  562. }
  563. case KHAVATARI_ROSHEEK:
  564. {
  565. if (hasQuestItems(player, POMEGRANATE))
  566. {
  567. takeItems(player, POMEGRANATE, 1);
  568. giveItems(player, LEATHER_POUCH_1ST, 1);
  569. qs.setCond(2);
  570. htmltext = "30590-01.html";
  571. }
  572. else if (hasQuestItems(player, LEATHER_POUCH_1ST) && !hasQuestItems(player, LEATHER_POUCH_1ST_FULL))
  573. {
  574. htmltext = "30590-02.html";
  575. }
  576. else if (!hasQuestItems(player, LEATHER_POUCH_1ST) && hasQuestItems(player, LEATHER_POUCH_1ST_FULL))
  577. {
  578. giveItems(player, LEATHER_POUCH_2ND, 1);
  579. takeItems(player, LEATHER_POUCH_1ST_FULL, 1);
  580. qs.setCond(4);
  581. htmltext = "30590-03.html";
  582. }
  583. else if (hasQuestItems(player, LEATHER_POUCH_2ND) && !hasQuestItems(player, LEATHER_POUCH_2ND_FULL))
  584. {
  585. htmltext = "30590-04.html";
  586. }
  587. else if (!hasQuestItems(player, LEATHER_POUCH_2ND) && hasQuestItems(player, LEATHER_POUCH_2ND_FULL))
  588. {
  589. giveItems(player, LEATHER_POUCH_3RD, 1);
  590. takeItems(player, LEATHER_POUCH_2ND_FULL, 1);
  591. qs.setCond(6);
  592. htmltext = "30590-05.html";
  593. }
  594. else if (hasQuestItems(player, LEATHER_POUCH_3RD) && !hasQuestItems(player, LEATHER_POUCH_3RD_FULL))
  595. {
  596. htmltext = "30590-06.html";
  597. }
  598. else if (!hasQuestItems(player, LEATHER_POUCH_3RD) && hasQuestItems(player, LEATHER_POUCH_3RD_FULL))
  599. {
  600. takeItems(player, LEATHER_POUCH_3RD_FULL, 1);
  601. giveItems(player, FIERY_SPIRIT_SCROLL, 1);
  602. giveItems(player, ROSHEEKS_LETTER, 1);
  603. qs.setCond(8);
  604. htmltext = "30590-07.html";
  605. }
  606. else if (hasQuestItems(player, ROSHEEKS_LETTER, FIERY_SPIRIT_SCROLL))
  607. {
  608. htmltext = "30590-08.html";
  609. }
  610. else if (!hasQuestItems(player, ROSHEEKS_LETTER) && hasQuestItems(player, FIERY_SPIRIT_SCROLL))
  611. {
  612. htmltext = "30590-09.html";
  613. }
  614. break;
  615. }
  616. case KHAVATARI_TORUKU:
  617. {
  618. if (hasQuestItems(player, FIG))
  619. {
  620. takeItems(player, FIG, 1);
  621. giveItems(player, LEATHER_POUCH_4TF, 1);
  622. qs.setCond(11);
  623. htmltext = "30591-01.html";
  624. }
  625. else if (hasQuestItems(player, LEATHER_POUCH_4TF) && !hasQuestItems(player, LEATHER_POUCH_4TF_FULL))
  626. {
  627. htmltext = "30591-02.html";
  628. }
  629. else if (!hasQuestItems(player, LEATHER_POUCH_4TF) && hasQuestItems(player, LEATHER_POUCH_4TF_FULL))
  630. {
  631. takeItems(player, LEATHER_POUCH_4TF_FULL, 1);
  632. giveItems(player, IRON_WILL_SCROLL, 1);
  633. giveItems(player, TORUKUS_LETTER, 1);
  634. qs.setCond(13);
  635. htmltext = "30591-03.html";
  636. }
  637. else if (hasQuestItems(player, IRON_WILL_SCROLL, TORUKUS_LETTER))
  638. {
  639. htmltext = "30591-04.html";
  640. }
  641. break;
  642. }
  643. case SEER_MOIRA:
  644. {
  645. if (memoState == 5)
  646. {
  647. htmltext = "31979-01.html";
  648. }
  649. break;
  650. }
  651. case KHAVATARI_AREN:
  652. {
  653. if (memoState == 2)
  654. {
  655. htmltext = "32056-01.html";
  656. }
  657. else if (memoState == 3)
  658. {
  659. if (getQuestItemsCount(player, KASHA_SPIDERS_TOOTH) < 6)
  660. {
  661. htmltext = "32056-04.html";
  662. }
  663. else
  664. {
  665. takeItems(player, KASHA_SPIDERS_TOOTH, -1);
  666. qs.setMemoState(4);
  667. qs.setCond(17);
  668. htmltext = "32056-05.html";
  669. }
  670. }
  671. else if (memoState == 4)
  672. {
  673. if (!hasQuestItems(player, HORN_OF_BAAR_DRE_VANUL))
  674. {
  675. htmltext = "32056-06.html";
  676. }
  677. else
  678. {
  679. htmltext = "32056-07.html";
  680. }
  681. }
  682. else if (memoState == 5)
  683. {
  684. htmltext = "32056-09.html";
  685. }
  686. break;
  687. }
  688. }
  689. }
  690. return htmltext;
  691. }
  692. private static boolean checkWeapon(L2PcInstance player)
  693. {
  694. L2ItemInstance weapon = player.getActiveWeaponInstance();
  695. return ((weapon == null) || (weapon.getItemType() == WeaponType.FIST) || (weapon.getItemType() == WeaponType.DUALFIST));
  696. }
  697. }