Q00402_PathOfTheHumanKnight.java 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630
  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.Q00402_PathOfTheHumanKnight;
  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.quest.Quest;
  25. import com.l2jserver.gameserver.model.quest.QuestState;
  26. import com.l2jserver.gameserver.network.serverpackets.SocialAction;
  27. import com.l2jserver.gameserver.util.Util;
  28. /**
  29. * Path Of The Human Knight (402)
  30. * @author ivantotov
  31. */
  32. public final class Q00402_PathOfTheHumanKnight extends Quest
  33. {
  34. // NPCs
  35. private static final int HIGH_PRIEST_BIOTIN = 30031;
  36. private static final int LEVIAN = 30037;
  37. private static final int CAPTAIN_GILBERT = 30039;
  38. private static final int HIGH_PRIEST_RAYMOND = 30289;
  39. private static final int CAPTAIN_BATHIS = 30332;
  40. private static final int CAPTAIN_BEZIQUE = 30379;
  41. private static final int SIR_KLAUS_VASPER = 30417;
  42. private static final int SIR_ARON_TANFORD = 30653;
  43. // Items
  44. private static final int SQUIRES_MARK = 1271;
  45. private static final int COIN_OF_LORDS1 = 1162;
  46. private static final int COIN_OF_LORDS2 = 1163;
  47. private static final int COIN_OF_LORDS3 = 1164;
  48. private static final int COIN_OF_LORDS4 = 1165;
  49. private static final int COIN_OF_LORDS5 = 1166;
  50. private static final int COIN_OF_LORDS6 = 1167;
  51. private static final int GLUDIO_GUARDS_1ST_BADGE = 1168;
  52. private static final int BUGBEAR_NECKLACE = 1169;
  53. private static final int EINHASADS_1ST_TEMPLE_BADGE = 1170;
  54. private static final int EINHASAD_CRUCIFIX = 1171;
  55. private static final int GLUDIO_GUARDS_2ND_BADGE = 1172;
  56. private static final int VENOMOUS_SPIDERS_LEG = 1173;
  57. private static final int EINHASADS_2ND_TEMPLE_BADGE = 1174;
  58. private static final int LIZARDMANS_TOTEM = 1175;
  59. private static final int GLUDIO_GUARDS_3RD_BADGE = 1176;
  60. private static final int GIANT_SPIDERS_HUSK = 1177;
  61. private static final int EINHASADS_3RD_TEMPLE_BADGE = 1178;
  62. private static final int SKULL_OF_SILENT_HORROR = 1179;
  63. // Reward
  64. private static final int SWORD_OF_RITUAL = 1161;
  65. // Monster
  66. private static final int LANGK_LIZARDMAN_WARRIOR = 20024;
  67. private static final int LANGK_LIZARDMAN_SCOUT = 20027;
  68. private static final int LANGK_LIZARDMAN = 20030;
  69. private static final int VENOMOUS_SPIDER = 20038;
  70. private static final int ARACHNID_TRACKER = 20043;
  71. private static final int ARACHNID_PREDATOR = 20050;
  72. private static final int GIANT_SPIDER = 20103;
  73. private static final int TALON_SPIDER = 20106;
  74. private static final int BLADE_SPIDER = 20108;
  75. private static final int SILENT_HORROR = 20404;
  76. private static final int BUGBEAR_RAIDER = 20775;
  77. // Quest Monster
  78. private static final int UNDEAD_PRIEST = 27024;
  79. // Misc
  80. private static final int MIN_LEVEL = 18;
  81. public Q00402_PathOfTheHumanKnight()
  82. {
  83. super(402, Q00402_PathOfTheHumanKnight.class.getSimpleName(), "Path Of The Human Knight");
  84. addStartNpc(SIR_KLAUS_VASPER);
  85. addTalkId(SIR_KLAUS_VASPER, HIGH_PRIEST_BIOTIN, LEVIAN, HIGH_PRIEST_RAYMOND, CAPTAIN_GILBERT, CAPTAIN_BATHIS, CAPTAIN_BEZIQUE, SIR_ARON_TANFORD);
  86. addKillId(LANGK_LIZARDMAN_WARRIOR, LANGK_LIZARDMAN_SCOUT, LANGK_LIZARDMAN, VENOMOUS_SPIDER, ARACHNID_TRACKER, ARACHNID_PREDATOR, GIANT_SPIDER, TALON_SPIDER, BLADE_SPIDER, SILENT_HORROR, BUGBEAR_RAIDER, UNDEAD_PRIEST);
  87. registerQuestItems(SQUIRES_MARK, COIN_OF_LORDS1, COIN_OF_LORDS2, COIN_OF_LORDS3, COIN_OF_LORDS4, COIN_OF_LORDS5, COIN_OF_LORDS6, GLUDIO_GUARDS_1ST_BADGE, BUGBEAR_NECKLACE, EINHASADS_1ST_TEMPLE_BADGE, EINHASAD_CRUCIFIX, GLUDIO_GUARDS_2ND_BADGE, VENOMOUS_SPIDERS_LEG, EINHASADS_2ND_TEMPLE_BADGE, LIZARDMANS_TOTEM, GLUDIO_GUARDS_3RD_BADGE, GIANT_SPIDERS_HUSK, EINHASADS_3RD_TEMPLE_BADGE, SKULL_OF_SILENT_HORROR);
  88. }
  89. @Override
  90. public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
  91. {
  92. final QuestState qs = getQuestState(player, false);
  93. if (qs == null)
  94. {
  95. return null;
  96. }
  97. String htmltext = null;
  98. final long CoinCount = getQuestItemsCount(player, COIN_OF_LORDS1, COIN_OF_LORDS2, COIN_OF_LORDS3, COIN_OF_LORDS4, COIN_OF_LORDS5, COIN_OF_LORDS6);
  99. switch (event)
  100. {
  101. case "ACCEPT":
  102. {
  103. if (player.getClassId() == ClassId.fighter)
  104. {
  105. if (player.getLevel() >= MIN_LEVEL)
  106. {
  107. if (hasQuestItems(player, SWORD_OF_RITUAL))
  108. {
  109. htmltext = "30417-04.htm";
  110. }
  111. else
  112. {
  113. htmltext = "30417-05.htm";
  114. }
  115. }
  116. else
  117. {
  118. htmltext = "30417-02.htm";
  119. }
  120. }
  121. else if (player.getClassId() == ClassId.knight)
  122. {
  123. htmltext = "30417-02a.htm";
  124. }
  125. else
  126. {
  127. htmltext = "30417-03.htm";
  128. }
  129. break;
  130. }
  131. case "30417-08.htm":
  132. {
  133. qs.startQuest();
  134. giveItems(player, SQUIRES_MARK, 1);
  135. htmltext = event;
  136. break;
  137. }
  138. case "30289-02.html":
  139. case "30417-06.html":
  140. case "30417-07.htm":
  141. case "30417-15.html":
  142. {
  143. htmltext = event;
  144. break;
  145. }
  146. case "30417-13.html":
  147. {
  148. if (hasQuestItems(player, SQUIRES_MARK) && ((CoinCount) == 3))
  149. {
  150. giveAdena(player, 81900, true);
  151. giveItems(player, SWORD_OF_RITUAL, 1);
  152. takeItems(player, COIN_OF_LORDS1, 1);
  153. takeItems(player, COIN_OF_LORDS2, 1);
  154. takeItems(player, COIN_OF_LORDS3, 1);
  155. takeItems(player, COIN_OF_LORDS4, 1);
  156. takeItems(player, COIN_OF_LORDS5, 1);
  157. takeItems(player, COIN_OF_LORDS6, 1);
  158. takeItems(player, GLUDIO_GUARDS_1ST_BADGE, 1);
  159. takeItems(player, GLUDIO_GUARDS_2ND_BADGE, 1);
  160. takeItems(player, GLUDIO_GUARDS_3RD_BADGE, 1);
  161. takeItems(player, EINHASADS_1ST_TEMPLE_BADGE, 1);
  162. takeItems(player, EINHASADS_2ND_TEMPLE_BADGE, 1);
  163. takeItems(player, EINHASADS_3RD_TEMPLE_BADGE, 1);
  164. takeItems(player, BUGBEAR_NECKLACE, 1);
  165. takeItems(player, EINHASAD_CRUCIFIX, 1);
  166. takeItems(player, VENOMOUS_SPIDERS_LEG, 1);
  167. takeItems(player, LIZARDMANS_TOTEM, 1);
  168. takeItems(player, GIANT_SPIDERS_HUSK, 1);
  169. takeItems(player, SKULL_OF_SILENT_HORROR, 1);
  170. takeItems(player, SQUIRES_MARK, 1);
  171. final int level = player.getLevel();
  172. if (level >= 20)
  173. {
  174. addExpAndSp(player, 160267, 11576);
  175. }
  176. else if (level == 19)
  177. {
  178. addExpAndSp(player, 228064, 14925);
  179. }
  180. else
  181. {
  182. addExpAndSp(player, 295862, 18274);
  183. }
  184. qs.exitQuest(false, true);
  185. player.sendPacket(new SocialAction(player.getObjectId(), 3));
  186. qs.saveGlobalQuestVar("1ClassQuestFinished", "1");
  187. htmltext = event;
  188. }
  189. break;
  190. }
  191. case "30417-14.html":
  192. {
  193. if (hasQuestItems(player, SQUIRES_MARK) && ((CoinCount) > 3) && ((CoinCount) < 6))
  194. {
  195. giveAdena(player, 81900, true);
  196. giveItems(player, SWORD_OF_RITUAL, 1);
  197. takeItems(player, COIN_OF_LORDS1, 1);
  198. takeItems(player, COIN_OF_LORDS2, 1);
  199. takeItems(player, COIN_OF_LORDS3, 1);
  200. takeItems(player, COIN_OF_LORDS4, 1);
  201. takeItems(player, COIN_OF_LORDS5, 1);
  202. takeItems(player, COIN_OF_LORDS6, 1);
  203. takeItems(player, GLUDIO_GUARDS_1ST_BADGE, 1);
  204. takeItems(player, GLUDIO_GUARDS_2ND_BADGE, 1);
  205. takeItems(player, GLUDIO_GUARDS_3RD_BADGE, 1);
  206. takeItems(player, EINHASADS_1ST_TEMPLE_BADGE, 1);
  207. takeItems(player, EINHASADS_2ND_TEMPLE_BADGE, 1);
  208. takeItems(player, EINHASADS_3RD_TEMPLE_BADGE, 1);
  209. takeItems(player, BUGBEAR_NECKLACE, 1);
  210. takeItems(player, EINHASAD_CRUCIFIX, 1);
  211. takeItems(player, VENOMOUS_SPIDERS_LEG, 1);
  212. takeItems(player, LIZARDMANS_TOTEM, 1);
  213. takeItems(player, GIANT_SPIDERS_HUSK, 1);
  214. takeItems(player, SKULL_OF_SILENT_HORROR, 1);
  215. takeItems(player, SQUIRES_MARK, 1);
  216. final int level = player.getLevel();
  217. if (level >= 20)
  218. {
  219. addExpAndSp(player, 160267, 11576);
  220. }
  221. else if (level == 19)
  222. {
  223. addExpAndSp(player, 228064, 14925);
  224. }
  225. else
  226. {
  227. addExpAndSp(player, 295862, 18274);
  228. }
  229. qs.exitQuest(false, true);
  230. player.sendPacket(new SocialAction(player.getObjectId(), 3));
  231. qs.saveGlobalQuestVar("1ClassQuestFinished", "1");
  232. htmltext = event;
  233. }
  234. break;
  235. }
  236. case "30031-02.html":
  237. {
  238. giveItems(player, EINHASADS_3RD_TEMPLE_BADGE, 1);
  239. htmltext = event;
  240. break;
  241. }
  242. case "30037-02.html":
  243. {
  244. giveItems(player, EINHASADS_2ND_TEMPLE_BADGE, 1);
  245. htmltext = event;
  246. break;
  247. }
  248. case "30289-03.html":
  249. {
  250. giveItems(player, EINHASADS_1ST_TEMPLE_BADGE, 1);
  251. htmltext = event;
  252. break;
  253. }
  254. case "30039-02.html":
  255. {
  256. giveItems(player, GLUDIO_GUARDS_3RD_BADGE, 1);
  257. htmltext = event;
  258. break;
  259. }
  260. case "30379-02.html":
  261. {
  262. giveItems(player, GLUDIO_GUARDS_2ND_BADGE, 1);
  263. htmltext = event;
  264. break;
  265. }
  266. case "30332-02.html":
  267. {
  268. giveItems(player, GLUDIO_GUARDS_1ST_BADGE, 1);
  269. htmltext = event;
  270. break;
  271. }
  272. }
  273. return htmltext;
  274. }
  275. @Override
  276. public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
  277. {
  278. final QuestState qs = getQuestState(killer, false);
  279. if ((qs != null) && qs.isStarted() && Util.checkIfInRange(1500, npc, killer, true))
  280. {
  281. switch (npc.getId())
  282. {
  283. case LANGK_LIZARDMAN_WARRIOR:
  284. case LANGK_LIZARDMAN_SCOUT:
  285. case LANGK_LIZARDMAN:
  286. {
  287. if (hasQuestItems(killer, EINHASADS_2ND_TEMPLE_BADGE) && (getQuestItemsCount(killer, LIZARDMANS_TOTEM) < 20) && (getRandom(10) < 5))
  288. {
  289. giveItems(killer, LIZARDMANS_TOTEM, 1);
  290. if (getQuestItemsCount(killer, LIZARDMANS_TOTEM) == 20)
  291. {
  292. playSound(qs.getPlayer(), QuestSound.ITEMSOUND_QUEST_MIDDLE);
  293. }
  294. else
  295. {
  296. playSound(qs.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET);
  297. }
  298. }
  299. break;
  300. }
  301. case VENOMOUS_SPIDER:
  302. case ARACHNID_TRACKER:
  303. case ARACHNID_PREDATOR:
  304. {
  305. if (hasQuestItems(killer, GLUDIO_GUARDS_2ND_BADGE) && (getQuestItemsCount(killer, VENOMOUS_SPIDERS_LEG) < 20))
  306. {
  307. giveItems(killer, VENOMOUS_SPIDERS_LEG, 1);
  308. if (getQuestItemsCount(killer, VENOMOUS_SPIDERS_LEG) == 20)
  309. {
  310. playSound(qs.getPlayer(), QuestSound.ITEMSOUND_QUEST_MIDDLE);
  311. }
  312. else
  313. {
  314. playSound(qs.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET);
  315. }
  316. }
  317. break;
  318. }
  319. case GIANT_SPIDER:
  320. case TALON_SPIDER:
  321. case BLADE_SPIDER:
  322. {
  323. if (hasQuestItems(killer, GLUDIO_GUARDS_3RD_BADGE) && (getQuestItemsCount(killer, GIANT_SPIDERS_HUSK) < 20) && (getRandom(10) < 4))
  324. {
  325. giveItems(killer, GIANT_SPIDERS_HUSK, 1);
  326. if (getQuestItemsCount(killer, GIANT_SPIDERS_HUSK) == 20)
  327. {
  328. playSound(qs.getPlayer(), QuestSound.ITEMSOUND_QUEST_MIDDLE);
  329. }
  330. else
  331. {
  332. playSound(qs.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET);
  333. }
  334. }
  335. break;
  336. }
  337. case SILENT_HORROR:
  338. {
  339. if (hasQuestItems(killer, EINHASADS_3RD_TEMPLE_BADGE) && (getQuestItemsCount(killer, SKULL_OF_SILENT_HORROR) < 10) && (getRandom(10) < 4))
  340. {
  341. giveItems(killer, SKULL_OF_SILENT_HORROR, 1);
  342. if (getQuestItemsCount(killer, SKULL_OF_SILENT_HORROR) == 10)
  343. {
  344. playSound(qs.getPlayer(), QuestSound.ITEMSOUND_QUEST_MIDDLE);
  345. }
  346. else
  347. {
  348. playSound(qs.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET);
  349. }
  350. }
  351. break;
  352. }
  353. case BUGBEAR_RAIDER:
  354. {
  355. if (hasQuestItems(killer, GLUDIO_GUARDS_1ST_BADGE) && (getQuestItemsCount(killer, BUGBEAR_NECKLACE) < 10))
  356. {
  357. giveItems(killer, BUGBEAR_NECKLACE, 1);
  358. if (getQuestItemsCount(killer, BUGBEAR_NECKLACE) == 10)
  359. {
  360. playSound(qs.getPlayer(), QuestSound.ITEMSOUND_QUEST_MIDDLE);
  361. }
  362. else
  363. {
  364. playSound(qs.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET);
  365. }
  366. }
  367. break;
  368. }
  369. case UNDEAD_PRIEST:
  370. {
  371. if (hasQuestItems(killer, EINHASADS_1ST_TEMPLE_BADGE) && (getQuestItemsCount(killer, EINHASAD_CRUCIFIX) < 12) && (getRandom(10) < 5))
  372. {
  373. giveItems(killer, EINHASAD_CRUCIFIX, 1);
  374. if (getQuestItemsCount(killer, EINHASAD_CRUCIFIX) == 12)
  375. {
  376. playSound(qs.getPlayer(), QuestSound.ITEMSOUND_QUEST_MIDDLE);
  377. }
  378. else
  379. {
  380. playSound(qs.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET);
  381. }
  382. }
  383. break;
  384. }
  385. }
  386. }
  387. return super.onKill(npc, killer, isSummon);
  388. }
  389. @Override
  390. public String onTalk(L2Npc npc, L2PcInstance player)
  391. {
  392. final QuestState qs = getQuestState(player, true);
  393. String htmltext = getNoQuestMsg(player);
  394. if (qs.isCreated() || qs.isCompleted())
  395. {
  396. if (npc.getId() == SIR_KLAUS_VASPER)
  397. {
  398. htmltext = "30417-01.htm";
  399. }
  400. }
  401. else if (qs.isStarted())
  402. {
  403. switch (npc.getId())
  404. {
  405. case SIR_KLAUS_VASPER:
  406. {
  407. final long CoinCount = getQuestItemsCount(player, COIN_OF_LORDS1, COIN_OF_LORDS2, COIN_OF_LORDS3, COIN_OF_LORDS4, COIN_OF_LORDS5, COIN_OF_LORDS6);
  408. if (hasQuestItems(player, SQUIRES_MARK))
  409. {
  410. if ((CoinCount) < 3)
  411. {
  412. htmltext = "30417-09.html";
  413. }
  414. else if ((CoinCount) == 3)
  415. {
  416. htmltext = "30417-10.html";
  417. }
  418. else if (((CoinCount) > 3) && ((CoinCount) < 6))
  419. {
  420. htmltext = "30417-11.html";
  421. }
  422. else
  423. {
  424. giveAdena(player, 163800, true);
  425. giveItems(player, SWORD_OF_RITUAL, 1);
  426. takeItems(player, COIN_OF_LORDS1, 1);
  427. takeItems(player, COIN_OF_LORDS2, 1);
  428. takeItems(player, COIN_OF_LORDS3, 1);
  429. takeItems(player, COIN_OF_LORDS4, 1);
  430. takeItems(player, COIN_OF_LORDS5, 1);
  431. takeItems(player, COIN_OF_LORDS6, 1);
  432. takeItems(player, SQUIRES_MARK, 1);
  433. final int level = player.getLevel();
  434. if (level >= 20)
  435. {
  436. addExpAndSp(player, 320534, 23152);
  437. }
  438. else if (level == 19)
  439. {
  440. addExpAndSp(player, 456128, 29850);
  441. }
  442. else
  443. {
  444. addExpAndSp(player, 591724, 36542);
  445. }
  446. qs.exitQuest(false, true);
  447. player.sendPacket(new SocialAction(player.getObjectId(), 3));
  448. qs.saveGlobalQuestVar("1ClassQuestFinished", "1");
  449. htmltext = "30417-12.html";
  450. }
  451. }
  452. break;
  453. }
  454. case HIGH_PRIEST_BIOTIN:
  455. {
  456. if (hasQuestItems(player, SQUIRES_MARK) && !hasAtLeastOneQuestItem(player, EINHASADS_3RD_TEMPLE_BADGE, COIN_OF_LORDS6))
  457. {
  458. htmltext = "30031-01.html";
  459. }
  460. else if (hasQuestItems(player, EINHASADS_3RD_TEMPLE_BADGE))
  461. {
  462. if (getQuestItemsCount(player, SKULL_OF_SILENT_HORROR) < 10)
  463. {
  464. htmltext = "30031-03.html";
  465. }
  466. else
  467. {
  468. giveItems(player, COIN_OF_LORDS6, 1);
  469. takeItems(player, EINHASADS_3RD_TEMPLE_BADGE, 1);
  470. takeItems(player, SKULL_OF_SILENT_HORROR, -1);
  471. htmltext = "30031-04.html";
  472. }
  473. }
  474. else if (hasQuestItems(player, COIN_OF_LORDS6))
  475. {
  476. htmltext = "30031-05.html";
  477. }
  478. break;
  479. }
  480. case LEVIAN:
  481. {
  482. if (hasQuestItems(player, SQUIRES_MARK) && !hasAtLeastOneQuestItem(player, EINHASADS_2ND_TEMPLE_BADGE, COIN_OF_LORDS4))
  483. {
  484. htmltext = "30037-01.html";
  485. }
  486. else if (hasQuestItems(player, EINHASADS_2ND_TEMPLE_BADGE))
  487. {
  488. if (getQuestItemsCount(player, LIZARDMANS_TOTEM) < 20)
  489. {
  490. htmltext = "30037-03.html";
  491. }
  492. else
  493. {
  494. giveItems(player, COIN_OF_LORDS4, 1);
  495. takeItems(player, EINHASADS_2ND_TEMPLE_BADGE, 1);
  496. takeItems(player, LIZARDMANS_TOTEM, -1);
  497. htmltext = "30037-04.html";
  498. }
  499. }
  500. else if (hasQuestItems(player, COIN_OF_LORDS4))
  501. {
  502. htmltext = "30037-05.html";
  503. }
  504. break;
  505. }
  506. case HIGH_PRIEST_RAYMOND:
  507. {
  508. if (hasQuestItems(player, SQUIRES_MARK) && !hasAtLeastOneQuestItem(player, EINHASADS_1ST_TEMPLE_BADGE, COIN_OF_LORDS2))
  509. {
  510. htmltext = "30289-01.html";
  511. }
  512. else if (hasQuestItems(player, EINHASADS_1ST_TEMPLE_BADGE))
  513. {
  514. if (getQuestItemsCount(player, EINHASAD_CRUCIFIX) < 12)
  515. {
  516. htmltext = "30289-04.html";
  517. }
  518. else
  519. {
  520. giveItems(player, COIN_OF_LORDS2, 1);
  521. takeItems(player, EINHASADS_1ST_TEMPLE_BADGE, 1);
  522. takeItems(player, EINHASAD_CRUCIFIX, -1);
  523. htmltext = "30289-05.html";
  524. }
  525. }
  526. else if (hasQuestItems(player, COIN_OF_LORDS2))
  527. {
  528. htmltext = "30289-06.html";
  529. }
  530. break;
  531. }
  532. case CAPTAIN_GILBERT:
  533. {
  534. if (hasQuestItems(player, SQUIRES_MARK) && !hasAtLeastOneQuestItem(player, GLUDIO_GUARDS_3RD_BADGE, COIN_OF_LORDS5))
  535. {
  536. htmltext = "30039-01.html";
  537. }
  538. else if (hasQuestItems(player, GLUDIO_GUARDS_3RD_BADGE))
  539. {
  540. if (getQuestItemsCount(player, GIANT_SPIDERS_HUSK) < 20)
  541. {
  542. htmltext = "30039-03.html";
  543. }
  544. else
  545. {
  546. giveItems(player, COIN_OF_LORDS5, 1);
  547. takeItems(player, GLUDIO_GUARDS_3RD_BADGE, 1);
  548. takeItems(player, GIANT_SPIDERS_HUSK, -1);
  549. htmltext = "30039-04.html";
  550. }
  551. }
  552. else if (hasQuestItems(player, COIN_OF_LORDS5))
  553. {
  554. htmltext = "30039-05.html";
  555. }
  556. break;
  557. }
  558. case CAPTAIN_BEZIQUE:
  559. {
  560. if (hasQuestItems(player, SQUIRES_MARK) && !hasAtLeastOneQuestItem(player, GLUDIO_GUARDS_2ND_BADGE, COIN_OF_LORDS3))
  561. {
  562. htmltext = "30379-01.html";
  563. }
  564. else if (hasQuestItems(player, GLUDIO_GUARDS_2ND_BADGE))
  565. {
  566. if (getQuestItemsCount(player, VENOMOUS_SPIDERS_LEG) < 20)
  567. {
  568. htmltext = "30379-03.html";
  569. }
  570. else
  571. {
  572. giveItems(player, COIN_OF_LORDS3, 1);
  573. takeItems(player, GLUDIO_GUARDS_2ND_BADGE, 1);
  574. takeItems(player, VENOMOUS_SPIDERS_LEG, -1);
  575. htmltext = "30379-04.html";
  576. }
  577. }
  578. else if (hasQuestItems(player, COIN_OF_LORDS3))
  579. {
  580. htmltext = "30379-05.html";
  581. }
  582. break;
  583. }
  584. case CAPTAIN_BATHIS:
  585. {
  586. if (hasQuestItems(player, SQUIRES_MARK) && !hasAtLeastOneQuestItem(player, GLUDIO_GUARDS_1ST_BADGE, COIN_OF_LORDS1))
  587. {
  588. htmltext = "30332-01.html";
  589. }
  590. else if (hasQuestItems(player, GLUDIO_GUARDS_1ST_BADGE))
  591. {
  592. if (getQuestItemsCount(player, BUGBEAR_NECKLACE) < 10)
  593. {
  594. htmltext = "30332-03.html";
  595. }
  596. else
  597. {
  598. giveItems(player, COIN_OF_LORDS1, 1);
  599. takeItems(player, GLUDIO_GUARDS_1ST_BADGE, 1);
  600. takeItems(player, BUGBEAR_NECKLACE, -1);
  601. htmltext = "30332-04.html";
  602. }
  603. }
  604. else if (hasQuestItems(player, COIN_OF_LORDS1))
  605. {
  606. htmltext = "30332-05.html";
  607. }
  608. break;
  609. }
  610. case SIR_ARON_TANFORD:
  611. {
  612. if (hasQuestItems(player, SQUIRES_MARK))
  613. {
  614. htmltext = "30653-01.html";
  615. }
  616. break;
  617. }
  618. }
  619. }
  620. return htmltext;
  621. }
  622. }