CostyKiller

Exalted Quests Updates

Oct 9th, 2020 (edited)
272
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 252.66 KB | None | 0 0
  1. Index: dist/game/data/scripts/quests/QuestMasterHandler.java
  2. ===================================================================
  3. --- dist/game/data/scripts/quests/QuestMasterHandler.java   (revision 7687)
  4. +++ dist/game/data/scripts/quests/QuestMasterHandler.java   (working copy)
  5. @@ -171,6 +171,8 @@
  6.  import quests.Q10501_ZakenEmbroideredSoulCloak.Q10501_ZakenEmbroideredSoulCloak;
  7.  import quests.Q10502_FreyaEmbroideredSoulCloak.Q10502_FreyaEmbroideredSoulCloak;
  8.  import quests.Q10503_FrintezzaEmbroideredSoulCloak.Q10503_FrintezzaEmbroideredSoulCloak;
  9. +import quests.Q10514_NewPathToGlory.Q10514_NewPathToGlory;
  10. +import quests.Q10515_NewWayForPride.Q10515_NewWayForPride;
  11.  import quests.Q10535_BlacksmithsSoul3.Q10535_BlacksmithsSoul3;
  12.  import quests.Q10537_KamaelDisarray.Q10537_KamaelDisarray;
  13.  import quests.Q10538_GiantsEvolution.Q10538_GiantsEvolution;
  14. @@ -236,9 +238,15 @@
  15.  import quests.Q10856_SuperionAppears.Q10856_SuperionAppears;
  16.  import quests.Q10857_SecretTeleport.Q10857_SecretTeleport;
  17.  import quests.Q10873_ExaltedReachingAnotherLevel.Q10873_ExaltedReachingAnotherLevel;
  18. +import quests.Q10874_AgainstTheNewEnemy.Q10874_AgainstTheNewEnemy;
  19. +import quests.Q10875_ForReputation.Q10875_ForReputation;
  20.  import quests.Q10876_LeadersGrace.Q10876_LeadersGrace;
  21. +import quests.Q10877_BreakThroughCrisis.Q10877_BreakThroughCrisis;
  22.  import quests.Q10879_ExaltedGuideToPower.Q10879_ExaltedGuideToPower;
  23.  import quests.Q10880_TheLastOneStanding.Q10880_TheLastOneStanding;
  24. +import quests.Q10881_ForThePride.Q10881_ForThePride;
  25. +import quests.Q10882_VictoryCollection.Q10882_VictoryCollection;
  26. +import quests.Q10883_ImmortalHonor.Q10883_ImmortalHonor;
  27.  import quests.Q10891_AtANewPlace.Q10891_AtANewPlace;
  28.  import quests.Q10892_RevengeOneStepAtATime.Q10892_RevengeOneStepAtATime;
  29.  import quests.Q10896_VisitTheAdventureGuild.Q10896_VisitTheAdventureGuild;
  30. @@ -302,8 +310,6 @@
  31.  import quests.not_done.Q01900_StormIsleSecretSpot;
  32.  import quests.not_done.Q01901_StormIsleFurtiveDeal;
  33.  import quests.not_done.Q10298_WastelandQueen;
  34. -import quests.not_done.Q10514_NewPathToGlory;
  35. -import quests.not_done.Q10515_NewWayForPride;
  36.  import quests.not_done.Q10570_HurrahForKamaelsIndependence;
  37.  import quests.not_done.Q10572_ToExpelTheEmbryosForces;
  38.  import quests.not_done.Q10594_FergasonsScheme;
  39. @@ -316,12 +322,6 @@
  40.  import quests.not_done.Q10848_TrialsBeforeTheBattle;
  41.  import quests.not_done.Q10853_ToWeakenTheGiants;
  42.  import quests.not_done.Q10854_ToSeizeTheFortress;
  43. -import quests.not_done.Q10874_AgainstTheNewEnemy;
  44. -import quests.not_done.Q10875_ForReputation;
  45. -import quests.not_done.Q10877_BreakThroughCrisis;
  46. -import quests.not_done.Q10881_ForThePride;
  47. -import quests.not_done.Q10882_VictoryCollection;
  48. -import quests.not_done.Q10883_ImmortalHonor;
  49.  import quests.not_done.Q10886_SaviorsPathSearchTheRefinery;
  50.  import quests.not_done.Q10887_SaviorsPathDemonsAndAtelia;
  51.  import quests.not_done.Q10888_SaviorsPathDefeatTheEmbryo;
  52. @@ -519,8 +519,8 @@
  53.         Q10501_ZakenEmbroideredSoulCloak.class,
  54.         Q10502_FreyaEmbroideredSoulCloak.class,
  55.         Q10503_FrintezzaEmbroideredSoulCloak.class,
  56. -       Q10514_NewPathToGlory.class, // TODO: Not done.
  57. -       Q10515_NewWayForPride.class, // TODO: Not done.
  58. +       Q10514_NewPathToGlory.class,
  59. +       Q10515_NewWayForPride.class,
  60.         Q10516_UnveiledFafurionTemple.class, // FIXME: Custom.
  61.         Q10517_FafurionsMinions.class, // FIXME: Custom.
  62.         Q10518_SucceedingThePriestess.class, // FIXME: Custom.
  63. Index: dist/game/data/scripts/quests/Q10514_NewPathToGlory/30070-00.html
  64. ===================================================================
  65. --- dist/game/data/scripts/quests/Q10514_NewPathToGlory/30070-00.html   (nonexistent)
  66. +++ dist/game/data/scripts/quests/Q10514_NewPathToGlory/30070-00.html   (working copy)
  67. @@ -0,0 +1,4 @@
  68. +<html><body>High Priest Sylvain:<br>
  69. +You are not ready to be called by me. Come back when you are ready.<br>
  70. +(The Exalted, Reaching Another Level quest is in progress and level 103+ and Lionel Hunter Mission List - 4 should be in the inventory.)
  71. +</body></html>
  72. \ No newline at end of file
  73. Index: dist/game/data/scripts/quests/Q10514_NewPathToGlory/30070-01.htm
  74. ===================================================================
  75. --- dist/game/data/scripts/quests/Q10514_NewPathToGlory/30070-01.htm    (nonexistent)
  76. +++ dist/game/data/scripts/quests/Q10514_NewPathToGlory/30070-01.htm    (working copy)
  77. @@ -0,0 +1,6 @@
  78. +<html><body>High Priest Sylvain:<br>
  79. +I've been planning for a long time! I mean... well, I belive one who wants to lead the world... must pass a very difficult test.<br>
  80. +If I had a chance to give such test, I'd make an unimaginably difficult test. That's what I thought.<br>
  81. +Are you listening to me?<br>
  82. +<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10514_NewPathToGlory 30070-02.htm">"Go on."</Button>
  83. +</body></html>
  84. \ No newline at end of file
  85. Index: dist/game/data/scripts/quests/Q10514_NewPathToGlory/30070-02.htm
  86. ===================================================================
  87. --- dist/game/data/scripts/quests/Q10514_NewPathToGlory/30070-02.htm    (nonexistent)
  88. +++ dist/game/data/scripts/quests/Q10514_NewPathToGlory/30070-02.htm    (working copy)
  89. @@ -0,0 +1,5 @@
  90. +<html><body>High Priest Sylvain:<br>
  91. +Lionel Hunter said that you want to reach another level.<br>
  92. +I was waiting for someone to complete a mission to substitute all the missions from the other people...<br>
  93. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10514_NewPathToGlory 30070-03.htm">"Ask what mission."</Button>
  94. +</body></html>
  95. \ No newline at end of file
  96. Index: dist/game/data/scripts/quests/Q10514_NewPathToGlory/30070-03.htm
  97. ===================================================================
  98. --- dist/game/data/scripts/quests/Q10514_NewPathToGlory/30070-03.htm    (nonexistent)
  99. +++ dist/game/data/scripts/quests/Q10514_NewPathToGlory/30070-03.htm    (working copy)
  100. @@ -0,0 +1,5 @@
  101. +<html><body>High Priest Sylvain:<br>
  102. +Then, I have the chance I'd always dreamed of! Hahaha. Oops, I'm sorry. I'm just so happy to have this chance.<br>
  103. +If anyone wants to take my test, I'll put him through the most terrible time of their lives... If you're not ready, you'd better leave now. Otherwise, you'll die before your time.<br>
  104. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10514_NewPathToGlory 30070-04.htm">"I will take the test."</Button>
  105. +</body></html>
  106. \ No newline at end of file
  107. Index: dist/game/data/scripts/quests/Q10514_NewPathToGlory/30070-04.htm
  108. ===================================================================
  109. --- dist/game/data/scripts/quests/Q10514_NewPathToGlory/30070-04.htm    (nonexistent)
  110. +++ dist/game/data/scripts/quests/Q10514_NewPathToGlory/30070-04.htm    (working copy)
  111. @@ -0,0 +1,7 @@
  112. +<html><body>High Priest Sylvain:<br>
  113. +Eh? Are you sure? Oh... well, you might be qualified to undertake my mission.<br>
  114. +Actually, it's not that complicated. You only need to grow strong enough to defeat unknown enemies.<br>
  115. +How? That's simple.<br>
  116. +Hunting. Will you accept the mission?<br>
  117. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10514_NewPathToGlory 30070-05.html">"Alright."</Button>
  118. +</body></html>
  119. \ No newline at end of file
  120. Index: dist/game/data/scripts/quests/Q10514_NewPathToGlory/30070-05.html
  121. ===================================================================
  122. --- dist/game/data/scripts/quests/Q10514_NewPathToGlory/30070-05.html   (nonexistent)
  123. +++ dist/game/data/scripts/quests/Q10514_NewPathToGlory/30070-05.html   (working copy)
  124. @@ -0,0 +1,4 @@
  125. +<html><body>High Priest Sylvain:<br>
  126. +Listen carefully, I won't explain this again. Hunt monsters in <font color="LEVEL">Atelia Refinery, Ivory Tower Crater, Alligator Island and Tanor Canyon</font> and collect 80.000 <font color="LEVEL">Proof of Reputation</font>. What do you say? It's quite hard, right? Hahahaha!!!<br>
  127. +Come to me after completing the mission to get a certificate.<br>
  128. +</body></html>
  129. \ No newline at end of file
  130. Index: dist/game/data/scripts/quests/Q10514_NewPathToGlory/30070-06.html
  131. ===================================================================
  132. --- dist/game/data/scripts/quests/Q10514_NewPathToGlory/30070-06.html   (nonexistent)
  133. +++ dist/game/data/scripts/quests/Q10514_NewPathToGlory/30070-06.html   (working copy)
  134. @@ -0,0 +1,5 @@
  135. +<html><body>High Priest Sylvain:<br>
  136. +You did not get what I asked for.<br>
  137. +Hunt monsters in <font color="LEVEL">Atelia Refinery, Ivory Tower Crater, Alligator Island and Tanor Canyon</font> and collect 80.000 <font color="LEVEL">Proof of Reputation</font>.<br>
  138. +Come to me after completing the mission to get a certificate.<br>
  139. +</body></html>
  140. \ No newline at end of file
  141. Index: dist/game/data/scripts/quests/Q10514_NewPathToGlory/30070-07.html
  142. ===================================================================
  143. --- dist/game/data/scripts/quests/Q10514_NewPathToGlory/30070-07.html   (nonexistent)
  144. +++ dist/game/data/scripts/quests/Q10514_NewPathToGlory/30070-07.html   (working copy)
  145. @@ -0,0 +1,4 @@
  146. +<html><body>High Priest Sylvain:<br>
  147. +Did you get 80.000 <font color="LEVEL">Proof of Reputation</font>?<br>
  148. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10514_NewPathToGlory 30070-08.html">"Yes, here."</Button>
  149. +</body></html>
  150. \ No newline at end of file
  151. Index: dist/game/data/scripts/quests/Q10514_NewPathToGlory/30070-08.html
  152. ===================================================================
  153. --- dist/game/data/scripts/quests/Q10514_NewPathToGlory/30070-08.html   (nonexistent)
  154. +++ dist/game/data/scripts/quests/Q10514_NewPathToGlory/30070-08.html   (working copy)
  155. @@ -0,0 +1,3 @@
  156. +<html><body>High Priest Sylvain:<br>
  157. +Great work. I hope you you never forget the sadness of those who have to suffer because of the long battles against the monsters.
  158. +</body></html>
  159. \ No newline at end of file
  160. Index: dist/game/data/scripts/quests/Q10514_NewPathToGlory/Q10514_NewPathToGlory.java
  161. ===================================================================
  162. --- dist/game/data/scripts/quests/Q10514_NewPathToGlory/Q10514_NewPathToGlory.java  (nonexistent)
  163. +++ dist/game/data/scripts/quests/Q10514_NewPathToGlory/Q10514_NewPathToGlory.java  (working copy)
  164. @@ -0,0 +1,226 @@
  165. +/*
  166. + * This file is part of the L2J Mobius project.
  167. + *
  168. + * This program is free software: you can redistribute it and/or modify
  169. + * it under the terms of the GNU General Public License as published by
  170. + * the Free Software Foundation, either version 3 of the License, or
  171. + * (at your option) any later version.
  172. + *
  173. + * This program is distributed in the hope that it will be useful,
  174. + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  175. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  176. + * General Public License for more details.
  177. + *
  178. + * You should have received a copy of the GNU General Public License
  179. + * along with this program. If not, see <http://www.gnu.org/licenses/>.
  180. + */
  181. +package quests.Q10514_NewPathToGlory;
  182. +
  183. +import org.l2jmobius.Config;
  184. +import org.l2jmobius.gameserver.enums.QuestSound;
  185. +import org.l2jmobius.gameserver.instancemanager.QuestManager;
  186. +import org.l2jmobius.gameserver.model.actor.Npc;
  187. +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
  188. +import org.l2jmobius.gameserver.model.holders.ItemHolder;
  189. +import org.l2jmobius.gameserver.model.quest.Quest;
  190. +import org.l2jmobius.gameserver.model.quest.QuestState;
  191. +import org.l2jmobius.gameserver.model.quest.State;
  192. +import org.l2jmobius.gameserver.util.Util;
  193. +
  194. +import quests.Q10873_ExaltedReachingAnotherLevel.Q10873_ExaltedReachingAnotherLevel;
  195. +
  196. +/**
  197. + * New Path To Glory (10514)
  198. + * @URL https://l2wiki.com/New_Path_to_Glory
  199. + * @author CostyKiller
  200. + */
  201. +public class Q10514_NewPathToGlory extends Quest
  202. +{
  203. +   // NPC
  204. +   private static final int HIGH_PRIEST_SYLVAIN = 30070;
  205. +   private static final int[] MONSTERS =
  206. +   {
  207. +       // Atelia Refinery
  208. +       24150, // Devil Warrior
  209. +       24149, // Devil Nightmare
  210. +       24153, // Devil Varos
  211. +       24152, // Devil Sinist
  212. +       24151, // Devil Guardian
  213. +       24144, // Death Rogue
  214. +       24145, // Death Shooter
  215. +       24146, // Death Warrior
  216. +       24147, // Death Sorcerer
  217. +       24148, // Death Pondus
  218. +       24155, // Demonic Warrior
  219. +       24154, // Demonic Wizard
  220. +       24158, // Demonic Weiss
  221. +       24157, // Demonic Keras
  222. +       24156, // Demonic Archer
  223. +      
  224. +       // Ivory Tower Crater
  225. +       24421, // Stone Gargoyle
  226. +       24422, // Stone Golem
  227. +       24423, // Monster Eye
  228. +       24424, // Gargoyle Hunter
  229. +       24425, // Steel Golem
  230. +       24426, // Stone Cube
  231. +      
  232. +       // Alligator Island
  233. +       24372, // Crokian Lad
  234. +       24373, // Dailaon Lad
  235. +       24375, // Farhite Lad
  236. +       24376, // Nos Lad
  237. +       24377, // Swamp Tribe
  238. +       24378, // Swamp Alligator
  239. +       24379, // Swamp Warrior
  240. +      
  241. +       // Tanor Canyon
  242. +       20936, // Tanor Silenos -->
  243. +       20937, // Tanor Silenos Solider -->
  244. +       20938, // Tanor Silenos Scout -->
  245. +       20939, // Tanor Silenos Warrior -->
  246. +       20941, // Tanor Silenos Chieftain -->
  247. +       20942, // Nightmare Guide -->
  248. +       20943, // Nightmare Watchman -->
  249. +       20944 // Nightmare Lord -->
  250. +   };
  251. +   // Items
  252. +   private static final int PROOF_OF_REPUTATION = 80826;
  253. +   private static final ItemHolder LIONEL_HUNTERS_LIST_PART_4 = new ItemHolder(47829, 1);
  254. +   // Rewards
  255. +   private static final int SYLVAIN_CERTIFICATE = 80828;
  256. +   // Misc
  257. +   private static final int MIN_LEVEL = 103;
  258. +   private static final int PROOF_OF_REPUTATION_NEEDED = 80000;
  259. +  
  260. +   public Q10514_NewPathToGlory()
  261. +   {
  262. +       super(10514);
  263. +       addStartNpc(HIGH_PRIEST_SYLVAIN);
  264. +       addTalkId(HIGH_PRIEST_SYLVAIN);
  265. +       addKillId(MONSTERS);
  266. +       addCondMinLevel(MIN_LEVEL, "30070-00.html");
  267. +       addCondStartedQuest(Q10873_ExaltedReachingAnotherLevel.class.getSimpleName(), "30070-00.html");
  268. +       registerQuestItems(PROOF_OF_REPUTATION);
  269. +   }
  270. +  
  271. +   @Override
  272. +   public String onAdvEvent(String event, Npc npc, PlayerInstance player)
  273. +   {
  274. +       String htmltext = null;
  275. +       final QuestState qs = getQuestState(player, false);
  276. +       if (qs == null)
  277. +       {
  278. +           return htmltext;
  279. +       }
  280. +       switch (event)
  281. +       {
  282. +           case "30070-02.htm":
  283. +           case "30070-03.htm":
  284. +           case "30070-04.htm":
  285. +           {
  286. +               htmltext = event;
  287. +               break;
  288. +           }
  289. +           case "30070-05.html":
  290. +           {
  291. +               if (hasItem(player, LIONEL_HUNTERS_LIST_PART_4))
  292. +               {
  293. +                   qs.startQuest();
  294. +                   htmltext = event;
  295. +               }
  296. +               break;
  297. +           }
  298. +           case "30070-08.html":
  299. +           {
  300. +               if (qs.isCond(2) && (getQuestItemsCount(player, PROOF_OF_REPUTATION) >= PROOF_OF_REPUTATION_NEEDED))
  301. +               {
  302. +                   takeItems(player, PROOF_OF_REPUTATION, PROOF_OF_REPUTATION_NEEDED);
  303. +                   giveItems(player, SYLVAIN_CERTIFICATE, 1);
  304. +                   addExpAndSp(player, 3480527972686L, 0);
  305. +                   qs.exitQuest(false, true);
  306. +                  
  307. +                   final Quest mainQ = QuestManager.getInstance().getQuest(Q10873_ExaltedReachingAnotherLevel.class.getSimpleName());
  308. +                   if (mainQ != null)
  309. +                   {
  310. +                       mainQ.notifyEvent("SUBQUEST_FINISHED_NOTIFY", npc, player);
  311. +                   }
  312. +                   htmltext = event;
  313. +               }
  314. +               else
  315. +               {
  316. +                   htmltext = getNoQuestLevelRewardMsg(player);
  317. +               }
  318. +               break;
  319. +           }
  320. +       }
  321. +       return htmltext;
  322. +   }
  323. +  
  324. +   @Override
  325. +   public String onTalk(Npc npc, PlayerInstance player)
  326. +   {
  327. +       String htmltext = getNoQuestMsg(player);
  328. +       final QuestState qs = getQuestState(player, true);
  329. +       switch (qs.getState())
  330. +       {
  331. +           case State.CREATED:
  332. +           {
  333. +               if (hasItem(player, LIONEL_HUNTERS_LIST_PART_4))
  334. +               {
  335. +                   htmltext = "30070-01.htm";
  336. +               }
  337. +               else
  338. +               {
  339. +                   htmltext = "30070-00.htm";
  340. +               }
  341. +               break;
  342. +           }
  343. +           case State.STARTED:
  344. +           {
  345. +               if (getQuestItemsCount(player, PROOF_OF_REPUTATION) >= PROOF_OF_REPUTATION_NEEDED)
  346. +               {
  347. +                   htmltext = "30070-07.html";
  348. +               }
  349. +               else
  350. +               {
  351. +                   htmltext = "30070-06.html";
  352. +               }
  353. +               break;
  354. +           }
  355. +          
  356. +           case State.COMPLETED:
  357. +           {
  358. +               htmltext = getAlreadyCompletedMsg(player);
  359. +               break;
  360. +           }
  361. +       }
  362. +       return htmltext;
  363. +      
  364. +   }
  365. +  
  366. +   @Override
  367. +   public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon)
  368. +   {
  369. +       final QuestState qs = getQuestState(player, false);
  370. +       if ((qs != null) && qs.isCond(1) && Util.checkIfInRange(Config.ALT_PARTY_RANGE, npc, player, false))
  371. +       {
  372. +           if ((getQuestItemsCount(player, PROOF_OF_REPUTATION) < PROOF_OF_REPUTATION_NEEDED) && (getRandom(100) < 90))
  373. +           {
  374. +               giveItems(player, PROOF_OF_REPUTATION, 1);
  375. +               playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  376. +           }
  377. +           if ((getQuestItemsCount(player, PROOF_OF_REPUTATION) >= PROOF_OF_REPUTATION_NEEDED) && (player.getLevel() >= MIN_LEVEL))
  378. +           {
  379. +               qs.setCond(2, true);
  380. +           }
  381. +       }
  382. +   }
  383. +  
  384. +   @Override
  385. +   public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
  386. +   {
  387. +       executeForEachPlayer(killer, npc, isSummon, true, false);
  388. +       return super.onKill(npc, killer, isSummon);
  389. +   }
  390. +}
  391. Index: dist/game/data/scripts/quests/Q10515_NewWayForPride/30657-00.html
  392. ===================================================================
  393. --- dist/game/data/scripts/quests/Q10515_NewWayForPride/30657-00.html   (nonexistent)
  394. +++ dist/game/data/scripts/quests/Q10515_NewWayForPride/30657-00.html   (working copy)
  395. @@ -0,0 +1,4 @@
  396. +<html><body>Cardinal Seresin:<br>
  397. +I do not believe our paths are meant to cross here. Perhaps later down the road.<br>
  398. +(Only characters above Lv. 104 and The Exalted, Guide to Power quest should be in progress..)
  399. +</body></html>
  400. \ No newline at end of file
  401. Index: dist/game/data/scripts/quests/Q10515_NewWayForPride/30657-01.htm
  402. ===================================================================
  403. --- dist/game/data/scripts/quests/Q10515_NewWayForPride/30657-01.htm    (nonexistent)
  404. +++ dist/game/data/scripts/quests/Q10515_NewWayForPride/30657-01.htm    (working copy)
  405. @@ -0,0 +1,5 @@
  406. +<html><body>Cardinal Seresin:<br>
  407. +Lionel Hunter sent you? He told me about a soldier who will come to test and qualify for the <font color="LEVEL">Guide of Power</font> who is supposed to save the world from darkness.<br>
  408. +I won't bore you with a long story. In short, he told me to test the adventurers and give certificates to only those who pass.<br>
  409. +<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10515_NewWayForPride 30657-02.htm">"Go on."</Button>
  410. +</body></html>
  411. \ No newline at end of file
  412. Index: dist/game/data/scripts/quests/Q10515_NewWayForPride/30657-02.htm
  413. ===================================================================
  414. --- dist/game/data/scripts/quests/Q10515_NewWayForPride/30657-02.htm    (nonexistent)
  415. +++ dist/game/data/scripts/quests/Q10515_NewWayForPride/30657-02.htm    (working copy)
  416. @@ -0,0 +1,5 @@
  417. +<html><body>Cardinal Seresin:<br>
  418. +I was surprised that Lionel accepted the offer so readily. He's not a person who takes on troublesome work. I was wondering what he had in mind... Now I'm doing his job.<br>
  419. +I thought is better for you to know what happened so far.<br>
  420. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10515_NewWayForPride 30657-03.htm">"Go on."</Button>
  421. +</body></html>
  422. \ No newline at end of file
  423. Index: dist/game/data/scripts/quests/Q10515_NewWayForPride/30657-03.htm
  424. ===================================================================
  425. --- dist/game/data/scripts/quests/Q10515_NewWayForPride/30657-03.htm    (nonexistent)
  426. +++ dist/game/data/scripts/quests/Q10515_NewWayForPride/30657-03.htm    (working copy)
  427. @@ -0,0 +1,5 @@
  428. +<html><body>Cardinal Seresin:<br>
  429. +I thought that <font color="LEVEL">hunting</font> would be the simplest way of proving oneself capable of guiding the power, and you are certainly qualified to take the test.<br>
  430. +However, it doesn't mean that you can finish it successfully. Think carefully before undertaking the mission.<br>
  431. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10515_NewWayForPride 30657-04.htm">"Alright."</Button>
  432. +</body></html>
  433. \ No newline at end of file
  434. Index: dist/game/data/scripts/quests/Q10515_NewWayForPride/30657-04.htm
  435. ===================================================================
  436. --- dist/game/data/scripts/quests/Q10515_NewWayForPride/30657-04.htm    (nonexistent)
  437. +++ dist/game/data/scripts/quests/Q10515_NewWayForPride/30657-04.htm    (working copy)
  438. @@ -0,0 +1,6 @@
  439. +<html><body>Cardinal Seresin:<br>
  440. +Eh? Are you sure? Oh... well, you might be qualified to undertake my mission.<br>
  441. +Actually, it's not that complicated. You only need to grow strong enough to defeat unknown enemies.<br>
  442. +Will you accept the mission?<br>
  443. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10515_NewWayForPride 30657-05.html">"Alright."</Button>
  444. +</body></html>
  445. \ No newline at end of file
  446. Index: dist/game/data/scripts/quests/Q10515_NewWayForPride/30657-05.html
  447. ===================================================================
  448. --- dist/game/data/scripts/quests/Q10515_NewWayForPride/30657-05.html   (nonexistent)
  449. +++ dist/game/data/scripts/quests/Q10515_NewWayForPride/30657-05.html   (working copy)
  450. @@ -0,0 +1,4 @@
  451. +<html><body>Cardinal Seresin:<br>
  452. +Listen carefully, I won't explain this again. Hunt monsters in <font color="LEVEL">Atelia Refinery, Ivory Tower Crater, Alligator Island and Tanor Canyon</font> and collect 80.000 <font color="LEVEL">Proof of Reputation</font>. What do you say? It's quite hard, right? Hahahaha!!!<br>
  453. +Come to me after completing the mission to get a certificate.<br>
  454. +</body></html>
  455. \ No newline at end of file
  456. Index: dist/game/data/scripts/quests/Q10515_NewWayForPride/30657-06.html
  457. ===================================================================
  458. --- dist/game/data/scripts/quests/Q10515_NewWayForPride/30657-06.html   (nonexistent)
  459. +++ dist/game/data/scripts/quests/Q10515_NewWayForPride/30657-06.html   (working copy)
  460. @@ -0,0 +1,5 @@
  461. +<html><body>Cardinal Seresin:<br>
  462. +You did not get what I asked for.<br>
  463. +Hunt monsters in <font color="LEVEL">Atelia Refinery, Ivory Tower Crater, Alligator Island and Tanor Canyon</font> and collect 80.000 <font color="LEVEL">Proof of Reputation</font>.<br>
  464. +Come to me after completing the mission to get a certificate.<br>
  465. +</body></html>
  466. \ No newline at end of file
  467. Index: dist/game/data/scripts/quests/Q10515_NewWayForPride/30657-07.html
  468. ===================================================================
  469. --- dist/game/data/scripts/quests/Q10515_NewWayForPride/30657-07.html   (nonexistent)
  470. +++ dist/game/data/scripts/quests/Q10515_NewWayForPride/30657-07.html   (working copy)
  471. @@ -0,0 +1,4 @@
  472. +<html><body>Cardinal Seresin:<br>
  473. +Did you get 80.000 <font color="LEVEL">Proof of Reputation</font>?<br>
  474. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10515_NewWayForPride 30657-08.html">"Yes, here."</Button>
  475. +</body></html>
  476. \ No newline at end of file
  477. Index: dist/game/data/scripts/quests/Q10515_NewWayForPride/30657-08.html
  478. ===================================================================
  479. --- dist/game/data/scripts/quests/Q10515_NewWayForPride/30657-08.html   (nonexistent)
  480. +++ dist/game/data/scripts/quests/Q10515_NewWayForPride/30657-08.html   (working copy)
  481. @@ -0,0 +1,3 @@
  482. +<html><body>Cardinal Seresin:<br>
  483. +Great work. I hope you you never forget the sadness of those who have to suffer because of the long battles against the monsters.
  484. +</body></html>
  485. \ No newline at end of file
  486. Index: dist/game/data/scripts/quests/Q10515_NewWayForPride/Q10515_NewWayForPride.java
  487. ===================================================================
  488. --- dist/game/data/scripts/quests/Q10515_NewWayForPride/Q10515_NewWayForPride.java  (nonexistent)
  489. +++ dist/game/data/scripts/quests/Q10515_NewWayForPride/Q10515_NewWayForPride.java  (working copy)
  490. @@ -0,0 +1,221 @@
  491. +/*
  492. + * This file is part of the L2J Mobius project.
  493. + *
  494. + * This program is free software: you can redistribute it and/or modify
  495. + * it under the terms of the GNU General Public License as published by
  496. + * the Free Software Foundation, either version 3 of the License, or
  497. + * (at your option) any later version.
  498. + *
  499. + * This program is distributed in the hope that it will be useful,
  500. + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  501. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  502. + * General Public License for more details.
  503. + *
  504. + * You should have received a copy of the GNU General Public License
  505. + * along with this program. If not, see <http://www.gnu.org/licenses/>.
  506. + */
  507. +package quests.Q10515_NewWayForPride;
  508. +
  509. +import org.l2jmobius.Config;
  510. +import org.l2jmobius.commons.util.CommonUtil;
  511. +import org.l2jmobius.gameserver.enums.QuestSound;
  512. +import org.l2jmobius.gameserver.instancemanager.QuestManager;
  513. +import org.l2jmobius.gameserver.model.actor.Npc;
  514. +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
  515. +import org.l2jmobius.gameserver.model.holders.ItemHolder;
  516. +import org.l2jmobius.gameserver.model.quest.Quest;
  517. +import org.l2jmobius.gameserver.model.quest.QuestState;
  518. +import org.l2jmobius.gameserver.model.quest.State;
  519. +
  520. +import quests.Q10879_ExaltedGuideToPower.Q10879_ExaltedGuideToPower;
  521. +
  522. +/**
  523. + * New Way For Pride (10515)
  524. + * @URL https://l2wiki.com/New_Way_for_Pride
  525. + * @author CostyKiller
  526. + */
  527. +public class Q10515_NewWayForPride extends Quest
  528. +{
  529. +   // NPCs
  530. +   private static final int CARDINAL_SERESIN = 30657;
  531. +   // Items
  532. +   private static final int SERESIN_CERTIFICATE = 80829;
  533. +   private static final int PROOF_OF_REPUTATION = 80826;
  534. +   private static final ItemHolder LIONEL_HUNTERS_LIST_PART_5 = new ItemHolder(47834, 1);
  535. +   // Monsters
  536. +   private static final int[] MONSTERS =
  537. +   {
  538. +       // Atelia Refinery
  539. +       24150, // Devil Warrior
  540. +       24149, // Devil Nightmare
  541. +       24153, // Devil Varos
  542. +       24152, // Devil Sinist
  543. +       24151, // Devil Guardian
  544. +       24144, // Death Rogue
  545. +       24145, // Death Shooter
  546. +       24146, // Death Warrior
  547. +       24147, // Death Sorcerer
  548. +       24148, // Death Pondus
  549. +       24155, // Demonic Warrior
  550. +       24154, // Demonic Wizard
  551. +       24158, // Demonic Weiss
  552. +       24157, // Demonic Keras
  553. +       24156, // Demonic Archer
  554. +      
  555. +       // Ivory Tower Crater
  556. +       24421, // Stone Gargoyle
  557. +       24422, // Stone Golem
  558. +       24423, // Monster Eye
  559. +       24424, // Gargoyle Hunter
  560. +       24425, // Steel Golem
  561. +       24426, // Stone Cube
  562. +      
  563. +       // Alligator Island
  564. +       24372, // Crokian Lad
  565. +       24373, // Dailaon Lad
  566. +       24375, // Farhite Lad
  567. +       24376, // Nos Lad
  568. +       24377, // Swamp Tribe
  569. +       24378, // Swamp Alligator
  570. +       24379, // Swamp Warrior
  571. +      
  572. +       // Tanor Canyon
  573. +       20936, // Tanor Silenos -->
  574. +       20937, // Tanor Silenos Solider -->
  575. +       20938, // Tanor Silenos Scout -->
  576. +       20939, // Tanor Silenos Warrior -->
  577. +       20941, // Tanor Silenos Chieftain -->
  578. +       20942, // Nightmare Guide -->
  579. +       20943, // Nightmare Watchman -->
  580. +       20944 // Nightmare Lord -->
  581. +   };
  582. +  
  583. +   // Misc
  584. +   private static final int MIN_LEVEL = 104;
  585. +   private static final int PROOF_OF_REPUTATION_NEEDED = 80000;
  586. +  
  587. +   public Q10515_NewWayForPride()
  588. +   {
  589. +       super(10515);
  590. +       addStartNpc(CARDINAL_SERESIN);
  591. +       addTalkId(CARDINAL_SERESIN);
  592. +       addKillId(MONSTERS);
  593. +       addCondMinLevel(MIN_LEVEL, "30657-00.html");
  594. +       addCondStartedQuest(Q10879_ExaltedGuideToPower.class.getSimpleName(), "30657-00.html");
  595. +       registerQuestItems(PROOF_OF_REPUTATION);
  596. +   }
  597. +  
  598. +   @Override
  599. +   public String onAdvEvent(String event, Npc npc, PlayerInstance player)
  600. +   {
  601. +       final QuestState qs = getQuestState(player, false);
  602. +       if (qs == null)
  603. +       {
  604. +           return null;
  605. +       }
  606. +      
  607. +       String htmltext = null;
  608. +      
  609. +       switch (event)
  610. +       {
  611. +           case "30657-02.htm":
  612. +           case "30657-03.htm":
  613. +           case "30657-04.htm":
  614. +           {
  615. +               htmltext = event;
  616. +               break;
  617. +           }
  618. +           case "30657-05.html":
  619. +           {
  620. +               if (hasItem(player, LIONEL_HUNTERS_LIST_PART_5))
  621. +               {
  622. +                   qs.startQuest();
  623. +                   htmltext = event;
  624. +               }
  625. +               break;
  626. +           }
  627. +           case "30657-08.html":
  628. +           {
  629. +               if (qs.isCond(2) && (getQuestItemsCount(player, PROOF_OF_REPUTATION) >= PROOF_OF_REPUTATION_NEEDED))
  630. +               {
  631. +                   if ((player.getLevel() >= MIN_LEVEL))
  632. +                   {
  633. +                       takeItems(player, PROOF_OF_REPUTATION, PROOF_OF_REPUTATION_NEEDED);
  634. +                       giveItems(player, SERESIN_CERTIFICATE, 1);
  635. +                       addExpAndSp(player, 3480527972686L, 0);
  636. +                       qs.exitQuest(false, true);
  637. +                      
  638. +                       final Quest mainQ = QuestManager.getInstance().getQuest(Q10879_ExaltedGuideToPower.class.getSimpleName());
  639. +                       if (mainQ != null)
  640. +                       {
  641. +                           mainQ.notifyEvent("SUBQUEST_FINISHED_NOTIFY", npc, player);
  642. +                       }
  643. +                       htmltext = event;
  644. +                   }
  645. +                   else
  646. +                   {
  647. +                       htmltext = getNoQuestLevelRewardMsg(player);
  648. +                   }
  649. +                   break;
  650. +               }
  651. +           }
  652. +       }
  653. +       return htmltext;
  654. +   }
  655. +  
  656. +   @Override
  657. +   public String onTalk(Npc npc, PlayerInstance player)
  658. +   {
  659. +       final QuestState qs = getQuestState(player, true);
  660. +       String htmltext = getNoQuestMsg(player);
  661. +       switch (qs.getState())
  662. +       {
  663. +           case State.CREATED:
  664. +           {
  665. +               if ((npc.getId() == CARDINAL_SERESIN) && (hasItem(player, LIONEL_HUNTERS_LIST_PART_5)))
  666. +               {
  667. +                   htmltext = "30657-01.htm";
  668. +               }
  669. +               else
  670. +               {
  671. +                   htmltext = "30657-00.html";
  672. +               }
  673. +               break;
  674. +           }
  675. +           case State.STARTED:
  676. +           {
  677. +               htmltext = "30657-05.html";
  678. +               break;
  679. +           }
  680. +           case State.COMPLETED:
  681. +           {
  682. +               htmltext = getAlreadyCompletedMsg(player);
  683. +               break;
  684. +           }
  685. +       }
  686. +       return htmltext;
  687. +   }
  688. +  
  689. +   @Override
  690. +   public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
  691. +   {
  692. +       executeForEachPlayer(player, npc, isSummon, true, false);
  693. +       return super.onKill(npc, player, isSummon);
  694. +   }
  695. +  
  696. +   @Override
  697. +   public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon)
  698. +   {
  699. +       final QuestState qs = getQuestState(player, false);
  700. +       if ((qs != null) && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE) && CommonUtil.contains(MONSTERS, npc.getId()))
  701. +       {
  702. +           giveItems(player, PROOF_OF_REPUTATION, 1);
  703. +           playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  704. +          
  705. +           if (getQuestItemsCount(player, PROOF_OF_REPUTATION) >= PROOF_OF_REPUTATION_NEEDED)
  706. +           {
  707. +               qs.setCond(2, true);
  708. +           }
  709. +       }
  710. +   }
  711. +}
  712. \ No newline at end of file
  713. Index: dist/game/data/scripts/quests/Q10811_ExaltedOneWhoFacesTheLimit/33907-05.html
  714. ===================================================================
  715. --- dist/game/data/scripts/quests/Q10811_ExaltedOneWhoFacesTheLimit/33907-05.html   (revision 7687)
  716. +++ dist/game/data/scripts/quests/Q10811_ExaltedOneWhoFacesTheLimit/33907-05.html   (working copy)
  717. @@ -1,6 +1,6 @@
  718.  <html><body>Eva's Knight Lionel Hunter:<br>
  719.  I'll be seeing whether you have what it takes to become stronger.<br>
  720.  First, you must prove that you are capable of using <font color="LEVEL">16 Ability Points</font>. Learn a skill with Ability Points and prove your strength.<br>
  721. -Then, pass the tests set by the following people and bring back certificates. The people who will test you are <font color="LEVEL">Verdure Elder Elikia</font> in <font color="LEVEL">Heine</font>, the <font color="LEVEL">Mysterious Butler</font>, <font color="LEVEL">Trader Galladucci</font> in the <font color="LEVEL">Town of Giran</font>, and <font color="LEVEL">Sir Eric Rodemai</font> in the <font color="LEVEL">Town of Aden</font>.<br>
  722. +Then, pass the tests set by the following people and bring back certificates. The people who will test you are <font color="LEVEL">Verdure Elder Elikia</font> in <font color="LEVEL">Heine</font>, the <font color="LEVEL">Mysterious Butler</font>, <font color="LEVEL">Trader Galladucci</font> in the <font color="LEVEL">Town of Giran</font>, and <font color="LEVEL">Sir Eric Rodemai</font> in the <font color="LEVEL">Town of Aden</font>. <br><br><br>
  723.  Go talk to them to find out what their tests are about. I'll be waiting for you to return with the certificates. If you forget who you must go to, refer to the guide I'll be giving you.
  724.  </body></html>
  725. \ No newline at end of file
  726. Index: dist/game/data/scripts/quests/Q10811_ExaltedOneWhoFacesTheLimit/33907-06.html
  727. ===================================================================
  728. --- dist/game/data/scripts/quests/Q10811_ExaltedOneWhoFacesTheLimit/33907-06.html   (revision 7687)
  729. +++ dist/game/data/scripts/quests/Q10811_ExaltedOneWhoFacesTheLimit/33907-06.html   (working copy)
  730. @@ -1,6 +1,6 @@
  731.  <html><body>Eva's Knight Lionel Hunter:<br>
  732.  Still? I'll explain again, so remember it.<br>
  733.  Use <font color="LEVEL">16 Ability Points</font> to learn a skill and prove your strength. After that, pass the tests of the following people and bring back their certificates.<br>
  734. -The first people who will test you are <font color="LEVEL">Verdure Elder Elikia</font> in <font color="LEVEL">Heine</font>, the <font color="LEVEL">Mysterious Butler</font>, <font color="LEVEL">Trader Galladucci</font> in the <font color="LEVEL">Town of Giran</font>, and <font color="LEVEL">Sir Eric Rodemai</font> in the <font color="LEVEL">Town of Aden</font>.<br>
  735. +The first people who will test you are <font color="LEVEL">Verdure Elder Elikia</font> in <font color="LEVEL">Heine</font>, the <font color="LEVEL">Mysterious Butler</font>, <font color="LEVEL">Trader Galladucci</font> in the <font color="LEVEL">Town of Giran</font>, and <font color="LEVEL">Sir Eric Rodemai</font> in the <font color="LEVEL">Town of Aden</font>. <br><br><br>
  736.  Go talk to them to find out what their tests are about. I'll be waiting for you to return with the certificates.
  737.  </body></html>
  738. \ No newline at end of file
  739. Index: dist/game/data/scripts/quests/Q10812_FacingSadness/Q10812_FacingSadness.java
  740. ===================================================================
  741. --- dist/game/data/scripts/quests/Q10812_FacingSadness/Q10812_FacingSadness.java    (revision 7687)
  742. +++ dist/game/data/scripts/quests/Q10812_FacingSadness/Q10812_FacingSadness.java    (working copy)
  743. @@ -30,7 +30,7 @@
  744.  
  745.  /**
  746.   * Facing Sadness (10812)
  747. - * @author Stayway
  748. + * @author Stayway, CostyKiller
  749.   */
  750.  public class Q10812_FacingSadness extends Quest
  751.  {
  752. @@ -100,6 +100,7 @@
  753.    
  754.     // Misc
  755.     private static final int MIN_LEVEL = 99;
  756. +   private static final int PROOF_OF_DISPOSAL_NEEDED = 8000;
  757.    
  758.     public Q10812_FacingSadness()
  759.     {
  760. @@ -145,7 +146,7 @@
  761.                 {
  762.                     if ((player.getLevel() >= MIN_LEVEL))
  763.                     {
  764. -                       takeItems(player, PROOF_OF_DISPOSAL, -1);
  765. +                       takeItems(player, PROOF_OF_DISPOSAL, PROOF_OF_DISPOSAL_NEEDED);
  766.                         giveItems(player, ELIKIA_CERTIFICATE, 1);
  767.                         addExpAndSp(player, 0, 498204432);
  768.                         qs.exitQuest(false, true);
  769. @@ -193,7 +194,7 @@
  770.                 {
  771.                     htmltext = "31620-05.html";
  772.                 }
  773. -               else if (qs.isCond(2))
  774. +               else if (qs.isCond(2) && (getQuestItemsCount(player, PROOF_OF_DISPOSAL) >= PROOF_OF_DISPOSAL_NEEDED))
  775.                 {
  776.                     htmltext = "31620-07.html";
  777.                 }
  778. @@ -221,12 +222,12 @@
  779.         final QuestState qs = getQuestState(player, false);
  780.         if ((qs != null) && qs.isCond(1) && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
  781.         {
  782. -           if (getQuestItemsCount(player, PROOF_OF_DISPOSAL) < 8000)
  783. +           if (getQuestItemsCount(player, PROOF_OF_DISPOSAL) < PROOF_OF_DISPOSAL_NEEDED)
  784.             {
  785.                 giveItems(player, PROOF_OF_DISPOSAL, 1);
  786.                 playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  787.             }
  788. -           if (getQuestItemsCount(player, PROOF_OF_DISPOSAL) >= 8000)
  789. +           if (getQuestItemsCount(player, PROOF_OF_DISPOSAL) >= PROOF_OF_DISPOSAL_NEEDED)
  790.             {
  791.                 qs.setCond(2, true);
  792.             }
  793. Index: dist/game/data/scripts/quests/Q10813_ForGlory/33685-04.html
  794. ===================================================================
  795. --- dist/game/data/scripts/quests/Q10813_ForGlory/33685-04.html (revision 7687)
  796. +++ dist/game/data/scripts/quests/Q10813_ForGlory/33685-04.html (working copy)
  797. @@ -1,4 +1,4 @@
  798.  <html><body>Mysterious Butler:<br>
  799.  After a long discussion with Lionel, I've decided that I'll find someone who can prove their strength by constantly participating in the <font color="LEVEL">Ceremony of Chaos</font> and the <font color="LEVEL">Olympiad</font>.<br>
  800.  In order to keep track of your performance, you'll be getting a <font color="LEVEL">Proof of Battle</font> whenever you participate in the <font color="LEVEL">Ceremony of Chaos</font> or the <font color="LEVEL">Olympiad</font>.<br>
  801. -If you can get <font color="LEVEL">80 Proof of Battle</font>, you'll prove that you are worthy. Not too hard, right?</body></html>
  802. \ No newline at end of file
  803. +If you can get <font color="LEVEL">10 Proof of Battle</font>, you'll prove that you are worthy. Not too hard, right?</body></html>
  804. \ No newline at end of file
  805. Index: dist/game/data/scripts/quests/Q10813_ForGlory/33685-05.html
  806. ===================================================================
  807. --- dist/game/data/scripts/quests/Q10813_ForGlory/33685-05.html (revision 7687)
  808. +++ dist/game/data/scripts/quests/Q10813_ForGlory/33685-05.html (working copy)
  809. @@ -1,4 +1,4 @@
  810.  <html><body>Mysterious Butler:<br>
  811. -Oh, are you done? Just as I expected. How was it? Did you get the 80 Proof of Battle?<br>
  812. +Oh, are you done? Just as I expected. How was it? Did you get the 10 Proof of Battle?<br>
  813.  <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10813_ForGlory 33685-06.html">"Yes."</Button>
  814.  </body></html>
  815. \ No newline at end of file
  816. Index: dist/game/data/scripts/quests/Q10813_ForGlory/33685-08.html
  817. ===================================================================
  818. --- dist/game/data/scripts/quests/Q10813_ForGlory/33685-08.html (revision 7687)
  819. +++ dist/game/data/scripts/quests/Q10813_ForGlory/33685-08.html (working copy)
  820. @@ -1,3 +1,3 @@
  821.  <html><body>Mysterious Butler:<br>
  822. -When you participate in the <font color="LEVEL">Ceremony of Chaos</font> or the <font color="LEVEL">Olympiad</font>, you'll be able to to get <font color="LEVEL">Proof of Battle.</font> If you can get <font color="LEVEL">80</font> of these, I'll recognize your strengh.
  823. +When you participate in the <font color="LEVEL">Ceremony of Chaos</font> or the <font color="LEVEL">Olympiad</font>, you'll be able to to get <font color="LEVEL">Proof of Battle.</font> If you can get <font color="LEVEL">10</font> of these, I'll recognize your strengh.
  824.  </body></html>
  825. \ No newline at end of file
  826. Index: dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java
  827. ===================================================================
  828. --- dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java  (revision 7687)
  829. +++ dist/game/data/scripts/quests/Q10813_ForGlory/Q10813_ForGlory.java  (working copy)
  830. @@ -41,11 +41,12 @@
  831.     // Npc
  832.     private static final int MYSTERIOUS_BUTLER = 33685;
  833.     // Items
  834. -   private static final int PROOF_OF_BATTLE = 45872;
  835. +   private static final int PROOF_OF_BATTLE_1 = 45872;
  836.     private static final int MYSTERIOUS_BUTLER_CERTIFICATE = 45624;
  837. -   private static final int BATTLE_QUIKCK_HEALING_POTION = 45945;
  838. +   private static final int BATTLE_QUICK_HEALING_POTION = 45945;
  839.     // Misc
  840.     private static final int MIN_LEVEL = 99;
  841. +   private static final int PROOF_OF_BATTLE_1_NEEDED = 10;
  842.    
  843.     public Q10813_ForGlory()
  844.     {
  845. @@ -54,7 +55,7 @@
  846.         addTalkId(MYSTERIOUS_BUTLER);
  847.         addCondMinLevel(MIN_LEVEL, "33685-09.htm");
  848.         addCondStartedQuest(Q10811_ExaltedOneWhoFacesTheLimit.class.getSimpleName(), "33685-07.htm");
  849. -       registerQuestItems(PROOF_OF_BATTLE);
  850. +       registerQuestItems(PROOF_OF_BATTLE_1);
  851.     }
  852.    
  853.     @Override
  854. @@ -85,10 +86,10 @@
  855.             {
  856.                 if (qs.isCond(2))
  857.                 {
  858. -                   if ((player.getLevel() >= MIN_LEVEL))
  859. +                   if ((player.getLevel() >= MIN_LEVEL) && (getQuestItemsCount(player, PROOF_OF_BATTLE_1) >= PROOF_OF_BATTLE_1_NEEDED))
  860.                     {
  861. -                       takeItems(player, PROOF_OF_BATTLE, -1);
  862. -                       giveItems(player, BATTLE_QUIKCK_HEALING_POTION, 120);
  863. +                       takeItems(player, PROOF_OF_BATTLE_1, PROOF_OF_BATTLE_1_NEEDED);
  864. +                       giveItems(player, BATTLE_QUICK_HEALING_POTION, 120);
  865.                         giveItems(player, MYSTERIOUS_BUTLER_CERTIFICATE, 1);
  866.                         qs.exitQuest(false, true);
  867.                        
  868. @@ -126,7 +127,7 @@
  869.                 {
  870.                     htmltext = "33685-08.html";
  871.                 }
  872. -               else if (qs.isCond(2))
  873. +               else if (qs.isCond(2) && (getQuestItemsCount(player, PROOF_OF_BATTLE_1) >= PROOF_OF_BATTLE_1_NEEDED))
  874.                 {
  875.                     htmltext = "33685-05.html";
  876.                 }
  877. @@ -148,9 +149,9 @@
  878.             final QuestState qs = getQuestState(player, false);
  879.             if ((qs != null) && qs.isCond(1))
  880.             {
  881. -               giveItems(player, PROOF_OF_BATTLE, 1);
  882. +               giveItems(player, PROOF_OF_BATTLE_1, 1);
  883.                 playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  884. -               if (getQuestItemsCount(player, PROOF_OF_BATTLE) >= 80)
  885. +               if (getQuestItemsCount(player, PROOF_OF_BATTLE_1) >= PROOF_OF_BATTLE_1_NEEDED)
  886.                 {
  887.                     qs.setCond(2, true);
  888.                 }
  889. Index: dist/game/data/scripts/quests/Q10814_BefittingOfTheStatus/Q10814_BefittingOfTheStatus.java
  890. ===================================================================
  891. --- dist/game/data/scripts/quests/Q10814_BefittingOfTheStatus/Q10814_BefittingOfTheStatus.java  (revision 7687)
  892. +++ dist/game/data/scripts/quests/Q10814_BefittingOfTheStatus/Q10814_BefittingOfTheStatus.java  (working copy)
  893. @@ -148,7 +148,9 @@
  894.                             takeItems(player, itemId, 1);
  895.                             if (qs.getCond() < 6)
  896.                             {
  897. -                               qs.setCond(qs.getCond() + 1);
  898. +                           // XXX: on pow you need only 1 item so I skipped steps here I think rest of the code should be removed
  899. +                               // qs.setCond(qs.getCond() + 1);
  900. +                               qs.setCond(6);
  901.                             }
  902.                            
  903.                             switch (qs.getCond())
  904. Index: dist/game/data/scripts/quests/Q10817_ExaltedOneWhoOvercomesTheLimit/33907-07.html
  905. ===================================================================
  906. --- dist/game/data/scripts/quests/Q10817_ExaltedOneWhoOvercomesTheLimit/33907-07.html   (revision 7687)
  907. +++ dist/game/data/scripts/quests/Q10817_ExaltedOneWhoOvercomesTheLimit/33907-07.html   (working copy)
  908. @@ -1,5 +1,4 @@
  909.  <html><body>Eva's Knight Lionel Hunter:<br>
  910. -Have you completed all the tests?<br>
  911. -Congratulations on passing them all. Did you bring back all the certificates?<br>
  912. -<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10817_ExaltedOneWhoOvercomesTheLimit 33907-08.html">"Yes, here."</Button>
  913. +You are not ready to be called by me. Come back when you are ready.<br>
  914. +(Only Noblesse characters Lv. 99 or above can perform this quest.)
  915.  </body></html>
  916. \ No newline at end of file
  917. Index: dist/game/data/scripts/quests/Q10817_ExaltedOneWhoOvercomesTheLimit/33907-08.html
  918. ===================================================================
  919. --- dist/game/data/scripts/quests/Q10817_ExaltedOneWhoOvercomesTheLimit/33907-08.html   (revision 7687)
  920. +++ dist/game/data/scripts/quests/Q10817_ExaltedOneWhoOvercomesTheLimit/33907-08.html   (working copy)
  921. @@ -1,5 +1,5 @@
  922.  <html><body>Eva's Knight Lionel Hunter:<br>
  923. -You are on track to overcoming your limit. Congratulations on passing the second test.<br>
  924. -Don't get complacent, though. You'll soon be taking the third test, once you are ready for it.<br>
  925. -I'll call you when you are ready.
  926. +Have you completed all the tests?<br>
  927. +Congratulations on passing them all. Did you bring back all the certificates?<br>
  928. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10817_ExaltedOneWhoOvercomesTheLimit 33907-09.html">"Yes, here."</Button>
  929.  </body></html>
  930. \ No newline at end of file
  931. Index: dist/game/data/scripts/quests/Q10817_ExaltedOneWhoOvercomesTheLimit/33907-09.html
  932. ===================================================================
  933. --- dist/game/data/scripts/quests/Q10817_ExaltedOneWhoOvercomesTheLimit/33907-09.html   (nonexistent)
  934. +++ dist/game/data/scripts/quests/Q10817_ExaltedOneWhoOvercomesTheLimit/33907-09.html   (working copy)
  935. @@ -0,0 +1,5 @@
  936. +<html><body>Eva's Knight Lionel Hunter:<br>
  937. +You are on track to overcoming your limit. Congratulations on passing the second test.<br>
  938. +Don't get complacent, though. You'll soon be taking the third test, once you are ready for it.<br>
  939. +I'll call you when you are ready.
  940. +</body></html>
  941. \ No newline at end of file
  942. Index: dist/game/data/scripts/quests/Q10817_ExaltedOneWhoOvercomesTheLimit/Q10817_ExaltedOneWhoOvercomesTheLimit.java
  943. ===================================================================
  944. --- dist/game/data/scripts/quests/Q10817_ExaltedOneWhoOvercomesTheLimit/Q10817_ExaltedOneWhoOvercomesTheLimit.java  (revision 7687)
  945. +++ dist/game/data/scripts/quests/Q10817_ExaltedOneWhoOvercomesTheLimit/Q10817_ExaltedOneWhoOvercomesTheLimit.java  (working copy)
  946. @@ -84,7 +84,7 @@
  947.                 }
  948.                 break;
  949.             }
  950. -           case "33907-08.html":
  951. +           case "33907-09.html":
  952.             {
  953.                 if (hasQuestItems(player, DAICHIR_SERTIFICATE, OLYMPIAD_MANAGER_CERTIFICATE, ISHUMA_CERTIFICATE, SIR_KRISTOF_RODEMAI_CERTIFICATE) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
  954.                 {
  955. @@ -116,7 +116,7 @@
  956.             {
  957.                 if (hasQuestItems(player, DAICHIR_SERTIFICATE, OLYMPIAD_MANAGER_CERTIFICATE, ISHUMA_CERTIFICATE, SIR_KRISTOF_RODEMAI_CERTIFICATE) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
  958.                 {
  959. -                   htmltext = "33907-07.html";
  960. +                   htmltext = "33907-08.html";
  961.                 }
  962.                 else
  963.                 {
  964. Index: dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-06.htm
  965. ===================================================================
  966. --- dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-06.htm  (revision 7687)
  967. +++ dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-06.htm  (working copy)
  968. @@ -1,6 +1,8 @@
  969.  <html><body>Head Priest of the Earth Daichir:<br>
  970.  Defeat the monsters that are threatening the safety of this world. I'll tell you which ones to defeat.<br>
  971. -First, you must defeat <font color="LEVEL">Istina, Octavis, and Tauti</font> in an <font color="LEVEL">Epic Battle</font>. You must also defeat <font color="LEVEL">Beleth</font> and <font color="LEVEL">Earth Wyrm Trasken</font>, and bring a <font color="LEVEL">Dark Soul Stone</font>.<br>
  972. +First, you must defeat <font color="LEVEL">Istina, Octavis, Tauti and Ekimus</font> in an <font color="LEVEL">Epic Battle</font>. You must also defeat <font color="LEVEL">Beleth</font> and <font color="LEVEL">Earth Wyrm Trasken</font>, and bring a <font color="LEVEL">Dark Soul Stone</font>.<br><br>
  973.  However, defeating Earth Wyrm Trasken is difficult. That's why I have another method. Would like to hear it?<br>
  974. -<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10818_ConfrontingAGiantMonster 30537-06a.html">"What is it?"</Button>
  975. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10818_ConfrontingAGiantMonster 30537-06a.html">"Which is it?"</Button><br>
  976. +Or you can skip all this and hunt some easier monsters.<br>
  977. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10818_ConfrontingAGiantMonster 30537-06b.html">"I'll choose this."</Button>
  978.  </body></html>
  979. \ No newline at end of file
  980. Index: dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-06b.html
  981. ===================================================================
  982. --- dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-06b.html    (nonexistent)
  983. +++ dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-06b.html    (working copy)
  984. @@ -0,0 +1,3 @@
  985. +<html><body>Head Priest of the Earth Daichir:<br>
  986. +Go defeat the monsters in <font color="LEVEL">Giant's Cave</font> and <font color="LEVEL">Enchanted Valley</font> and bring back 10.000 <font color="LEVEL">Proof of Resistance</font>.<br>
  987. +</body></html>
  988. \ No newline at end of file
  989. Index: dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-07a.html
  990. ===================================================================
  991. --- dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-07a.html    (nonexistent)
  992. +++ dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/30537-07a.html    (working copy)
  993. @@ -0,0 +1,4 @@
  994. +<html><body>Head Priest of the Earth Daichir:<br>
  995. +You did not get me 10.000 <font color="LEVEL">Proof of Resistance</font>.<br>
  996. +You must defeat the monsters in <font color="LEVEL">Giant's Cave</font> and <font color="LEVEL">Enchanted Valley</font> to obtain them.
  997. +</body></html>
  998. \ No newline at end of file
  999. Index: dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/33915-01.html
  1000. ===================================================================
  1001. --- dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/33915-01.html (nonexistent)
  1002. +++ dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/33915-01.html (working copy)
  1003. @@ -0,0 +1,4 @@
  1004. +<html><body>Guide of Infinity Jaedin:<br>
  1005. +<font color="LEVEL">TEMP FIX FOR EKIMUS RB KILL CHECK</font><br>
  1006. +This will set your kill status to true on the quest until Seed of Infinity instance will be implemented.<br>
  1007. +</body></html>
  1008. \ No newline at end of file
  1009. Index: dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/33915-02.html
  1010. ===================================================================
  1011. --- dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/33915-02.html (nonexistent)
  1012. +++ dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/33915-02.html (working copy)
  1013. @@ -0,0 +1,4 @@
  1014. +<html><body>Guide of Infinity Jaedin:<br>
  1015. +<font color="LEVEL">TEMP FIX FOR EKIMUS RB KILL CHECK</font><br>
  1016. +Your kill status is already true on the quest.<br>
  1017. +</body></html>
  1018. \ No newline at end of file
  1019. Index: dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/Q10818_ConfrontingAGiantMonster.java
  1020. ===================================================================
  1021. --- dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/Q10818_ConfrontingAGiantMonster.java  (revision 7687)
  1022. +++ dist/game/data/scripts/quests/Q10818_ConfrontingAGiantMonster/Q10818_ConfrontingAGiantMonster.java  (working copy)
  1023. @@ -17,6 +17,7 @@
  1024.  package quests.Q10818_ConfrontingAGiantMonster;
  1025.  
  1026.  import org.l2jmobius.Config;
  1027. +import org.l2jmobius.commons.util.CommonUtil;
  1028.  import org.l2jmobius.gameserver.enums.QuestSound;
  1029.  import org.l2jmobius.gameserver.model.actor.Npc;
  1030.  import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
  1031. @@ -29,38 +30,126 @@
  1032.  /**
  1033.   * Confronting a Giant Monster (10818)
  1034.   * @URL https://l2wiki.com/Confronting_a_Giant_Monster
  1035. - * @author Mobius
  1036. + * @author Mobius, CostyKiller
  1037.   */
  1038.  public class Q10818_ConfrontingAGiantMonster extends Quest
  1039.  {
  1040. -   // NPC
  1041. +   // Npcs
  1042.     private static final int DAICHIR = 30537;
  1043. +   private static final int JAEDIN = 33915;
  1044.     // Monsters
  1045.     private static final int ISTINA = 29196; // Extreme
  1046.     private static final int OCTAVIS = 29212; // Extreme
  1047. -   private static final int TAUTI = 29233; // correct id?
  1048. +   private static final int TAUTI = 29237; // Extreme
  1049.     private static final int EKIMUS = 29251; // correct id?
  1050.     private static final int TRASKEN = 29197; // correct id?
  1051. +   private static final int VERIDAN = 25796;
  1052. +   private static final int KECHI = 25797;
  1053. +   private static final int MICHAELA = 25799;
  1054. +   private static final int[] MONSTERS =
  1055. +   {
  1056. +       // Giant's Cave Monsters
  1057. +       23727, // Shaqrima Bathus
  1058. +       23728, // Shaqrima Carcass -->
  1059. +       23729, // Shaqrima Kshana -->
  1060. +       23733, // Lesser Giant Warrior -->
  1061. +       23734, // Lesser Giant Wizard -->
  1062. +       23735, // Captive Familiar Spirit -->
  1063. +       23736, // Captive Hell Demon -->
  1064. +       23737, // Captive Succubus -->
  1065. +       23738, // Captive Phantom -->
  1066. +       23742, // Naia Bathus, Demons Foreman -->
  1067. +       23743, // Naia Karkus, Demons Foreman -->
  1068. +       23744, // Naia Kshana, Demons Foreman -->
  1069. +       23746, // Recovering Lesser Giant Warrior -->
  1070. +       23747, // Recovering Lesser Giant Wizard -->
  1071. +       23749, // Root of the Lesser Giant -->
  1072. +       23754, // Essence of the Lesser Giant -->
  1073. +      
  1074. +       // Fairy Settlement Monsters
  1075. +       18972, // Treekin Defender Scout
  1076. +       18973, // Treekin Defender Experienced Scout
  1077. +       18974, // Centaur Archer Scout
  1078. +       18975, // Centaur Archer Experienced Scout
  1079. +       18976, // Beorning Berserker Scout
  1080. +       18977, // Beorning Berserker Experienced Scout
  1081. +       22863, // Fairy Warrior
  1082. +       22864, // Fairy Warrior Wicked
  1083. +       22865, // Fairy Warrior Mature
  1084. +       22866, // Fairy Warrior Imperfect
  1085. +       22867, // Fairy Warrior Violent
  1086. +       22868, // Fairy Warrior Brutal
  1087. +       22869, // Fairy Warrior Fully Enraged
  1088. +       22870, // Fairy Warrior Slightly Enraged
  1089. +       22871, // Fairy Rogue
  1090. +       22875, // Fairy Rogue Wicked
  1091. +       22873, // Fairy Rogue Mature
  1092. +       22874, // Fairy Rogue Imperfect
  1093. +       22875, // Fairy Rogue Violent
  1094. +       22876, // Fairy Rogue Brutal
  1095. +       22877, // Fairy Rogue Fully Enraged
  1096. +       22878, // Fairy Rogue Slightly Enraged
  1097. +       22879, // Fairy Knight
  1098. +       22880, // Fairy Knight Wicked
  1099. +       22881, // Fairy Knight Mature
  1100. +       22882, // Fairy Knight Imperfect
  1101. +       22883, // Fairy Knight Violent
  1102. +       22884, // Fairy Knight Brutal
  1103. +       22885, // Fairy Knight Fully Enraged
  1104. +       22886, // Fairy Knight Slightly Enraged
  1105. +       22887, // Satyr Wizard
  1106. +       22888, // Satyr Wizard Wicked
  1107. +       22889, // Satyr Wizard Mature
  1108. +       22890, // Satyr Wizard Imperfect
  1109. +       22891, // Satyr Wizard Violent
  1110. +       22892, // Satyr Wizard Brutal
  1111. +       22893, // Satyr Wizard Fully Enraged
  1112. +       22894, // Satyr Wizard Slightly Enraged
  1113. +       22895, // Satyr Summoner
  1114. +       22896, // Satyr Summoner Wicked
  1115. +       22897, // Satyr Summoner Mature
  1116. +       22898, // Satyr Summoner Imperfect
  1117. +       22899, // Satyr Summoner Violent
  1118. +       22900, // Satyr Summoner Brutal
  1119. +       22901, // Satyr Summoner Fully Enraged
  1120. +       22902, // Satyr Summoner Slightly Enraged
  1121. +       22903, // Satyr Witch
  1122. +       22904, // Satyr Witch Wicked
  1123. +       22905, // Satyr Witch Mature
  1124. +       22906, // Satyr Witch Imperfect
  1125. +       22907, // Satyr Witch Violent
  1126. +       22908, // Satyr Witch Brutal
  1127. +       22909, // Satyr Witch Fully Enraged
  1128. +       22910, // Satyr Witch Slightly Enraged
  1129. +       23041 // Pan Direm
  1130. +   };
  1131. +  
  1132.     // Items
  1133.     private static final int DARK_SOUL_STONE = 46055;
  1134.     private static final int OLYMPIAD_MANAGER_CERTIFICATE = 45629;
  1135.     private static final int ISHUMA_CERTIFICATE = 45630;
  1136.     private static final int SIR_KRISTOF_RODEMAI_CERTIFICATE = 45631;
  1137. +   private static final int PROOF_OF_RESISTANCE = 80823;
  1138. +   private static final int VERIDAN_SOUL_STONE = 46052;
  1139. +   private static final int KECHI_SOUL_STONE = 46053;
  1140. +   private static final int MICHAELA_SOUL_STONE = 46054;
  1141.     // Rewards
  1142. -   private static final int EXP_AMOUNT = 542310795;
  1143. -   private static final int DAICHIR_SERTIFICATE = 45628;
  1144. +   private static final long EXP_AMOUNT = 193815839115L;
  1145. +   private static final int DAICHIR_CERTIFICATE = 45628;
  1146.     // Misc
  1147.     private static final int MIN_LEVEL = 99;
  1148. +   private static final int PROOF_OF_RESISTANCE_NEEDED = 10000;
  1149.    
  1150.     public Q10818_ConfrontingAGiantMonster()
  1151.     {
  1152.         super(10818);
  1153.         addStartNpc(DAICHIR);
  1154. -       addTalkId(DAICHIR);
  1155. +       addTalkId(DAICHIR, JAEDIN);
  1156.         addKillId(ISTINA, OCTAVIS, TAUTI, EKIMUS, TRASKEN);
  1157. +       addKillId(MONSTERS);
  1158.         addCondMinLevel(MIN_LEVEL, "30537-02.html");
  1159.         addCondStartedQuest(Q10817_ExaltedOneWhoOvercomesTheLimit.class.getSimpleName(), "30537-03.html");
  1160. -       registerQuestItems(DARK_SOUL_STONE);
  1161. +       registerQuestItems(DARK_SOUL_STONE, VERIDAN_SOUL_STONE, KECHI_SOUL_STONE, MICHAELA_SOUL_STONE);
  1162.     }
  1163.    
  1164.     @Override
  1165. @@ -77,17 +166,27 @@
  1166.         {
  1167.             case "30537-04.htm":
  1168.             case "30537-05.htm":
  1169. +           {
  1170. +               htmltext = event;
  1171. +               break;
  1172. +           }
  1173.             case "30537-06.htm":
  1174.             {
  1175. +               qs.startQuest();
  1176. +               qs.set(Integer.toString(ISTINA), "false");
  1177. +               qs.set(Integer.toString(OCTAVIS), "false");
  1178. +               qs.set(Integer.toString(TAUTI), "false");
  1179. +               qs.set(Integer.toString(EKIMUS), "false");
  1180.                 htmltext = event;
  1181.                 break;
  1182.             }
  1183. -           case "30537-06a.html":
  1184. +           case "30537-06b.html":
  1185.             {
  1186. -               if (qs.isCreated())
  1187. -               {
  1188. -                   qs.startQuest();
  1189. -               }
  1190. +               qs.setCond(3);
  1191. +               qs.unset(Integer.toString(ISTINA));
  1192. +               qs.unset(Integer.toString(OCTAVIS));
  1193. +               qs.unset(Integer.toString(TAUTI));
  1194. +               qs.unset(Integer.toString(EKIMUS));
  1195.                 htmltext = event;
  1196.                 break;
  1197.             }
  1198. @@ -95,7 +194,7 @@
  1199.             {
  1200.                 if ((player.getLevel() >= MIN_LEVEL))
  1201.                 {
  1202. -                   if (hasQuestItems(player, DARK_SOUL_STONE) && qs.get(Integer.toString(ISTINA)).equals("true") && qs.get(Integer.toString(OCTAVIS)).equals("true") && qs.get(Integer.toString(TAUTI)).equals("true") && qs.get(Integer.toString(EKIMUS)).equals("true"))
  1203. +                   if ((qs.isCond(4) && (getQuestItemsCount(player, PROOF_OF_RESISTANCE) >= PROOF_OF_RESISTANCE_NEEDED)) || (qs.isCond(2) && hasQuestItems(player, DARK_SOUL_STONE) && (qs.get(Integer.toString(ISTINA)).equals("true") && qs.get(Integer.toString(OCTAVIS)).equals("true") && qs.get(Integer.toString(TAUTI)).equals("true") && qs.get(Integer.toString(EKIMUS)).equals("true"))))
  1204.                     {
  1205.                         if (hasQuestItems(player, OLYMPIAD_MANAGER_CERTIFICATE, ISHUMA_CERTIFICATE, SIR_KRISTOF_RODEMAI_CERTIFICATE))
  1206.                         {
  1207. @@ -105,13 +204,16 @@
  1208.                         {
  1209.                             htmltext = event;
  1210.                         }
  1211. -                       takeItems(player, DARK_SOUL_STONE, -1);
  1212. -                       giveItems(player, DAICHIR_SERTIFICATE, 1);
  1213. +                       if (qs.isCond(2))
  1214. +                       {
  1215. +                           takeItems(player, DARK_SOUL_STONE, 1);
  1216. +                           qs.unset(Integer.toString(ISTINA));
  1217. +                           qs.unset(Integer.toString(OCTAVIS));
  1218. +                           qs.unset(Integer.toString(TAUTI));
  1219. +                           qs.unset(Integer.toString(EKIMUS));
  1220. +                       }
  1221. +                       giveItems(player, DAICHIR_CERTIFICATE, 1);
  1222.                         addExpAndSp(player, EXP_AMOUNT, 0);
  1223. -                       qs.unset(Integer.toString(ISTINA));
  1224. -                       qs.unset(Integer.toString(OCTAVIS));
  1225. -                       qs.unset(Integer.toString(TAUTI));
  1226. -                       qs.unset(Integer.toString(EKIMUS));
  1227.                         qs.exitQuest(false, true);
  1228.                     }
  1229.                 }
  1230. @@ -139,15 +241,51 @@
  1231.             }
  1232.             case State.STARTED:
  1233.             {
  1234. -               if (hasQuestItems(player, DARK_SOUL_STONE) && qs.get(Integer.toString(ISTINA)).equals("true") && qs.get(Integer.toString(OCTAVIS)).equals("true") && qs.get(Integer.toString(TAUTI)).equals("true") && qs.get(Integer.toString(EKIMUS)).equals("true"))
  1235. +               switch (npc.getId())
  1236.                 {
  1237. -                   htmltext = "30537-08.html";
  1238. +                   case DAICHIR:
  1239. +                   {
  1240. +                       if (qs.isCond(2))
  1241. +                       {
  1242. +                           if (hasQuestItems(player, DARK_SOUL_STONE) && (qs.get(Integer.toString(ISTINA)).equals("true") && qs.get(Integer.toString(OCTAVIS)).equals("true") && qs.get(Integer.toString(TAUTI)).equals("true") && qs.get(Integer.toString(EKIMUS)).equals("true")))
  1243. +                           {
  1244. +                               htmltext = "30537-08.html";
  1245. +                           }
  1246. +                           else
  1247. +                           {
  1248. +                               htmltext = "30537-07.html";
  1249. +                           }
  1250. +                       }
  1251. +                       else if (qs.isCond(4))
  1252. +                       {
  1253. +                           if (getQuestItemsCount(player, PROOF_OF_RESISTANCE) >= PROOF_OF_RESISTANCE_NEEDED)
  1254. +                           {
  1255. +                               htmltext = "30537-08.html";
  1256. +                           }
  1257. +                           else
  1258. +                           {
  1259. +                               htmltext = "30537-07a.html";
  1260. +                           }
  1261. +                       }
  1262. +                       break;
  1263. +                   }
  1264. +                   // XXX: Set Ekimus quest check until instance is done
  1265. +                   case JAEDIN:
  1266. +                   {
  1267. +                       if (qs.get(Integer.toString(EKIMUS)).equals("false"))
  1268. +                       {
  1269. +                           htmltext = "33915-01.html";
  1270. +                           qs.set(Integer.toString(EKIMUS), "true");
  1271. +                           playSound(player, QuestSound.ITEMSOUND_QUEST_MIDDLE);
  1272. +                       }
  1273. +                       else
  1274. +                       {
  1275. +                           htmltext = "33915-02.html";
  1276. +                       }
  1277. +                   }
  1278. +                       break;
  1279.                 }
  1280. -               else
  1281. -               {
  1282. -                   htmltext = "30537-07.html";
  1283. -               }
  1284. -               break;
  1285. +               return htmltext;
  1286.             }
  1287.             case State.COMPLETED:
  1288.             {
  1289. @@ -176,9 +314,38 @@
  1290.                 giveItems(player, DARK_SOUL_STONE, 1);
  1291.                 playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  1292.             }
  1293. -           else
  1294. +           else if (npc.getId() == VERIDAN)
  1295.             {
  1296. +               giveItems(player, VERIDAN_SOUL_STONE, 1);
  1297. +               playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  1298. +           }
  1299. +           else if (npc.getId() == KECHI)
  1300. +           {
  1301. +               giveItems(player, KECHI_SOUL_STONE, 1);
  1302. +               playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  1303. +           }
  1304. +           else if (npc.getId() == MICHAELA)
  1305. +           {
  1306. +               giveItems(player, MICHAELA_SOUL_STONE, 1);
  1307. +               playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  1308. +           }
  1309. +           else if (CommonUtil.contains(MONSTERS, npc.getId()))
  1310. +           {
  1311. +               giveItems(player, PROOF_OF_RESISTANCE, 1);
  1312. +               if (getQuestItemsCount(player, PROOF_OF_RESISTANCE) >= PROOF_OF_RESISTANCE_NEEDED)
  1313. +               {
  1314. +                   qs.setCond(4, true);
  1315. +               }
  1316. +           }
  1317. +           else if ((npc.getId() == ISTINA) || (npc.getId() == OCTAVIS) || (npc.getId() == TAUTI) || (npc.getId() == EKIMUS))
  1318. +           {
  1319.                 qs.set(Integer.toString(npc.getId()), "true");
  1320. +               notifyKill(npc, player, isSummon);
  1321. +               playSound(player, QuestSound.ITEMSOUND_QUEST_MIDDLE);
  1322. +               if ((qs.get(Integer.toString(ISTINA)).equals("true") && qs.get(Integer.toString(OCTAVIS)).equals("true") && qs.get(Integer.toString(TAUTI)).equals("true") && qs.get(Integer.toString(EKIMUS)).equals("true")))
  1323. +               {
  1324. +                   qs.setCond(2);
  1325. +               }
  1326.             }
  1327.         }
  1328.     }
  1329. Index: dist/game/data/scripts/quests/Q10819_ForHonor/31688-06.html
  1330. ===================================================================
  1331. --- dist/game/data/scripts/quests/Q10819_ForHonor/31688-06.html (revision 7687)
  1332. +++ dist/game/data/scripts/quests/Q10819_ForHonor/31688-06.html (working copy)
  1333. @@ -1,5 +1,5 @@
  1334.  <html><body>Olympiad Manager:<br>
  1335. -You'll get a <font color="LEVEL">Proof of Battle</font> when you participate in the <font color="LEVEL">Olympiad</font> or the <font color="LEVEL">Ceremony of Chaos</font>. Please bring <font color="LEVEL">100</font> of these.<br>
  1336. -Bringing 100 Proof of Battle is my test.<br>
  1337. +You'll get a <font color="LEVEL">Proof of Battle</font> when you participate in the <font color="LEVEL">Olympiad</font> or the <font color="LEVEL">Ceremony of Chaos</font>. Please bring <font color="LEVEL">20</font> of these.<br>
  1338. +Bringing 20 Proof of Battle is my test.<br>
  1339.  I'm sure as someone who Lionel has personally sent, you'll do great.
  1340.  </body></html>
  1341. \ No newline at end of file
  1342. Index: dist/game/data/scripts/quests/Q10819_ForHonor/31688-07.html
  1343. ===================================================================
  1344. --- dist/game/data/scripts/quests/Q10819_ForHonor/31688-07.html (revision 7687)
  1345. +++ dist/game/data/scripts/quests/Q10819_ForHonor/31688-07.html (working copy)
  1346. @@ -1,4 +1,4 @@
  1347.  <html><body>Olympiad Manager:<br>
  1348.  I don't think you are done yet.<br>
  1349. -Participate in the <font color="LEVEL">Olympiad</font> and the <font color="LEVEL">Ceremony of Chaos</font>, and collect <font color="LEVEL">100 Proof of Battle</font>.
  1350. +Participate in the <font color="LEVEL">Olympiad</font> and the <font color="LEVEL">Ceremony of Chaos</font>, and collect <font color="LEVEL">20 Proof of Battle</font>.
  1351.  </body></html>
  1352. \ No newline at end of file
  1353. Index: dist/game/data/scripts/quests/Q10819_ForHonor/31688-07a.html
  1354. ===================================================================
  1355. --- dist/game/data/scripts/quests/Q10819_ForHonor/31688-07a.html    (nonexistent)
  1356. +++ dist/game/data/scripts/quests/Q10819_ForHonor/31688-07a.html    (working copy)
  1357. @@ -0,0 +1,4 @@
  1358. +<html><body>Olympiad Manager:<br>
  1359. +Did you get <font color="LEVEL">20 Proof of Battle</font>?<br>
  1360. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10819_ForHonor 31688-08.html">"Yes, here."</Button>
  1361. +</body></html>
  1362. \ No newline at end of file
  1363. Index: dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java
  1364. ===================================================================
  1365. --- dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java  (revision 7687)
  1366. +++ dist/game/data/scripts/quests/Q10819_ForHonor/Q10819_ForHonor.java  (working copy)
  1367. @@ -41,15 +41,16 @@
  1368.     // NPC
  1369.     private static final int OLYMPIAD_MANAGER = 31688;
  1370.     // Items
  1371. -   private static final int PROOF_OF_BATTLE = 45872;
  1372. +   private static final int PROOF_OF_BATTLE_2 = 45873;
  1373.     private static final int ISHUMA_CERTIFICATE = 45630;
  1374.     private static final int SIR_KRISTOF_RODEMAI_CERTIFICATE = 45631;
  1375. -   private static final int DAICHIR_SERTIFICATE = 45628;
  1376. +   private static final int DAICHIR_CERTIFICATE = 45628;
  1377.     // Rewards
  1378.     private static final int OLYMPIAD_MANAGER_CERTIFICATE = 45629;
  1379.     private static final int BATTLE_QUICK_HEALING_POTION = 45945;
  1380.     // Misc
  1381.     private static final int MIN_LEVEL = 99;
  1382. +   private static final int PROOF_OF_BATTLE_2_NEEDED = 20;
  1383.    
  1384.     public Q10819_ForHonor()
  1385.     {
  1386. @@ -58,7 +59,7 @@
  1387.         addTalkId(OLYMPIAD_MANAGER);
  1388.         addCondMinLevel(MIN_LEVEL, "31688-02.html");
  1389.         addCondStartedQuest(Q10817_ExaltedOneWhoOvercomesTheLimit.class.getSimpleName(), "31688-03.html");
  1390. -       registerQuestItems(PROOF_OF_BATTLE);
  1391. +       registerQuestItems(PROOF_OF_BATTLE_2);
  1392.     }
  1393.    
  1394.     @Override
  1395. @@ -87,11 +88,11 @@
  1396.             }
  1397.             case "31688-09.html":
  1398.             {
  1399. -               if (qs.isCond(2))
  1400. +               if (qs.isCond(2) && (getQuestItemsCount(player, PROOF_OF_BATTLE_2) >= PROOF_OF_BATTLE_2_NEEDED))
  1401.                 {
  1402.                     if ((player.getLevel() >= MIN_LEVEL))
  1403.                     {
  1404. -                       if (hasQuestItems(player, DAICHIR_SERTIFICATE, ISHUMA_CERTIFICATE, SIR_KRISTOF_RODEMAI_CERTIFICATE))
  1405. +                       if (hasQuestItems(player, DAICHIR_CERTIFICATE, ISHUMA_CERTIFICATE, SIR_KRISTOF_RODEMAI_CERTIFICATE))
  1406.                         {
  1407.                             htmltext = "31688-10.html";
  1408.                         }
  1409. @@ -99,7 +100,7 @@
  1410.                         {
  1411.                             htmltext = event;
  1412.                         }
  1413. -                       takeItems(player, PROOF_OF_BATTLE, -1);
  1414. +                       takeItems(player, PROOF_OF_BATTLE_2, PROOF_OF_BATTLE_2_NEEDED);
  1415.                         giveItems(player, BATTLE_QUICK_HEALING_POTION, 180);
  1416.                         giveItems(player, OLYMPIAD_MANAGER_CERTIFICATE, 1);
  1417.                         qs.exitQuest(false, true);
  1418. @@ -133,8 +134,13 @@
  1419.                 {
  1420.                     htmltext = "31688-07.html";
  1421.                 }
  1422. -               else if (qs.isCond(2))
  1423. +               else if (qs.isCond(1) && (getQuestItemsCount(player, PROOF_OF_BATTLE_2) >= PROOF_OF_BATTLE_2_NEEDED))
  1424.                 {
  1425. +                   qs.setCond(2);
  1426. +                   htmltext = "31688-07a.html";
  1427. +               }
  1428. +               else if (qs.isCond(2) && (getQuestItemsCount(player, PROOF_OF_BATTLE_2) >= PROOF_OF_BATTLE_2_NEEDED))
  1429. +               {
  1430.                     htmltext = "31688-08.html";
  1431.                 }
  1432.                 break;
  1433. @@ -155,9 +161,9 @@
  1434.             final QuestState qs = getQuestState(player, false);
  1435.             if ((qs != null) && qs.isCond(1))
  1436.             {
  1437. -               giveItems(player, PROOF_OF_BATTLE, 1);
  1438. +               giveItems(player, PROOF_OF_BATTLE_2, 1);
  1439.                 playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  1440. -               if (getQuestItemsCount(player, PROOF_OF_BATTLE) >= 100)
  1441. +               if (getQuestItemsCount(player, PROOF_OF_BATTLE_2) >= PROOF_OF_BATTLE_2_NEEDED)
  1442.                 {
  1443.                     qs.setCond(2, true);
  1444.                 }
  1445. Index: dist/game/data/scripts/quests/Q10820_RelationshipsBefittingOfTheStatus/32615-07.html
  1446. ===================================================================
  1447. --- dist/game/data/scripts/quests/Q10820_RelationshipsBefittingOfTheStatus/32615-07.html    (revision 7687)
  1448. +++ dist/game/data/scripts/quests/Q10820_RelationshipsBefittingOfTheStatus/32615-07.html    (working copy)
  1449. @@ -1,5 +1,6 @@
  1450.  <html><body>Maestro Ishuma:<br>
  1451.  Well, if you got that, take the materials I give you and try making one.<br>
  1452.  If you need more <font color="LEVEL">Recipe: Citrine Pendant</font> or <font color="LEVEL">Citrine Pendant Fragments</font> let me know. You'll have to get the other materials, though.<br>
  1453. -Here, take them.
  1454. +Here, take them.<br>
  1455. +You can craft a Citrine Pendant, or you can pay the Black Marketeer of Mammon to craft it.
  1456.  </body></html>
  1457. \ No newline at end of file
  1458. Index: dist/game/data/scripts/quests/Q10821_HelpingOthers/30756-06.html
  1459. ===================================================================
  1460. --- dist/game/data/scripts/quests/Q10821_HelpingOthers/30756-06.html    (revision 7687)
  1461. +++ dist/game/data/scripts/quests/Q10821_HelpingOthers/30756-06.html    (working copy)
  1462. @@ -1,4 +1,6 @@
  1463.  <html><body>Sir Kristof Rodemai:<br>
  1464.  Help those who are weaker than you. Help them grow stronger, and you'll be able to receive a <font color="LEVEL">Mentee's Mark</font>.<br>
  1465. -That will be the proof that you've taken the time to help those who are weaker than you.
  1466. +That will be the proof that you've taken the time to help those who are weaker than you.<br><br>
  1467. +Or you can try another way, lead them into battle.<br>
  1468. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10821_HelpingOthers 30756-06a.html">"I'll do that."</Button>
  1469.  </body></html>
  1470. \ No newline at end of file
  1471. Index: dist/game/data/scripts/quests/Q10821_HelpingOthers/30756-06a.html
  1472. ===================================================================
  1473. --- dist/game/data/scripts/quests/Q10821_HelpingOthers/30756-06a.html   (nonexistent)
  1474. +++ dist/game/data/scripts/quests/Q10821_HelpingOthers/30756-06a.html   (working copy)
  1475. @@ -0,0 +1,4 @@
  1476. +<html><body>Sir Kristof Rodemai:<br>
  1477. +Help those who are weaker than you. Lead them into battle and help them grow stronger.<br>
  1478. +That will be the proof that you've taken the time to help those who are weaker than you.
  1479. +</body></html>
  1480. \ No newline at end of file
  1481. Index: dist/game/data/scripts/quests/Q10821_HelpingOthers/30756-07a.html
  1482. ===================================================================
  1483. --- dist/game/data/scripts/quests/Q10821_HelpingOthers/30756-07a.html   (nonexistent)
  1484. +++ dist/game/data/scripts/quests/Q10821_HelpingOthers/30756-07a.html   (working copy)
  1485. @@ -0,0 +1,4 @@
  1486. +<html><body>Sir Kristof Rodemai:<br>
  1487. +You haven't passed my test yet.<br>
  1488. +Become a leader for those who are weaker and help them grow.</font>.
  1489. +</body></html>
  1490. \ No newline at end of file
  1491. Index: dist/game/data/scripts/quests/Q10821_HelpingOthers/30756-08a.html
  1492. ===================================================================
  1493. --- dist/game/data/scripts/quests/Q10821_HelpingOthers/30756-08a.html   (nonexistent)
  1494. +++ dist/game/data/scripts/quests/Q10821_HelpingOthers/30756-08a.html   (working copy)
  1495. @@ -0,0 +1,5 @@
  1496. +<html><body>Sir Kristof Rodemai:<br>
  1497. +You've passed the test I gave you.<br>
  1498. +How was to lead those weaker than you? You learned that being a great warrior is not all about just being strong, right?<br>
  1499. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10821_HelpingOthers 30756-09.html">"Yes."</Button>
  1500. +</body></html>
  1501. \ No newline at end of file
  1502. Index: dist/game/data/scripts/quests/Q10821_HelpingOthers/Q10821_HelpingOthers.java
  1503. ===================================================================
  1504. --- dist/game/data/scripts/quests/Q10821_HelpingOthers/Q10821_HelpingOthers.java    (revision 7687)
  1505. +++ dist/game/data/scripts/quests/Q10821_HelpingOthers/Q10821_HelpingOthers.java    (working copy)
  1506. @@ -18,6 +18,11 @@
  1507.  
  1508.  import org.l2jmobius.gameserver.model.actor.Npc;
  1509.  import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
  1510. +import org.l2jmobius.gameserver.model.events.EventType;
  1511. +import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
  1512. +import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
  1513. +import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
  1514. +import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnAttackableKill;
  1515.  import org.l2jmobius.gameserver.model.quest.Quest;
  1516.  import org.l2jmobius.gameserver.model.quest.QuestState;
  1517.  import org.l2jmobius.gameserver.model.quest.State;
  1518. @@ -32,10 +37,10 @@
  1519.  public class Q10821_HelpingOthers extends Quest
  1520.  {
  1521.     // NPC
  1522. -   private static final int SIR_ERIC_RODEMAI = 30756;
  1523. +   private static final int SIR_KRISTOF_RODEMAI = 30756;
  1524.     // Items
  1525.     private static final int MENTEE_MARK = 33804;
  1526. -   private static final int DAICHIR_SERTIFICATE = 45628;
  1527. +   private static final int DAICHIR_CERTIFICATE = 45628;
  1528.     private static final int OLYMPIAD_MANAGER_CERTIFICATE = 45629;
  1529.     private static final int ISHUMA_CERTIFICATE = 45630;
  1530.     // Rewards
  1531. @@ -43,12 +48,14 @@
  1532.     private static final int SPELLBOOK_FAVOR_OF_THE_EXALTED = 45928;
  1533.     // Misc
  1534.     private static final int MIN_LEVEL = 99;
  1535. +   private static final int MENTEE_MARKS_NEEDED = 45000;
  1536. +   private static final int PARTY_LEADER_TIMES = 2; // XXX: POW: 2 FF: 15
  1537.    
  1538.     public Q10821_HelpingOthers()
  1539.     {
  1540.         super(10821);
  1541. -       addStartNpc(SIR_ERIC_RODEMAI);
  1542. -       addTalkId(SIR_ERIC_RODEMAI);
  1543. +       addStartNpc(SIR_KRISTOF_RODEMAI);
  1544. +       addTalkId(SIR_KRISTOF_RODEMAI);
  1545.         addCondMinLevel(MIN_LEVEL, "30756-02.html");
  1546.         addCondStartedQuest(Q10817_ExaltedOneWhoOvercomesTheLimit.class.getSimpleName(), "30756-03.html");
  1547.         // registerQuestItems(MENTEE_MARK); Should they be removed when abandoning quest?
  1548. @@ -78,13 +85,19 @@
  1549.                 htmltext = event;
  1550.                 break;
  1551.             }
  1552. +           case "30756-06a.html":
  1553. +           {
  1554. +               qs.setCond(2);
  1555. +               htmltext = event;
  1556. +               break;
  1557. +           }
  1558.             case "30756-09.html":
  1559.             {
  1560. -               if (qs.isCond(1) && (getQuestItemsCount(player, MENTEE_MARK) >= 45000))
  1561. +               if ((qs.isCond(1) && (getQuestItemsCount(player, MENTEE_MARK) >= MENTEE_MARKS_NEEDED)) || qs.isCond(3))
  1562.                 {
  1563.                     if ((player.getLevel() >= MIN_LEVEL))
  1564.                     {
  1565. -                       if (hasQuestItems(player, DAICHIR_SERTIFICATE, ISHUMA_CERTIFICATE, OLYMPIAD_MANAGER_CERTIFICATE))
  1566. +                       if (hasQuestItems(player, DAICHIR_CERTIFICATE, ISHUMA_CERTIFICATE, OLYMPIAD_MANAGER_CERTIFICATE))
  1567.                         {
  1568.                             htmltext = "30756-10.html";
  1569.                         }
  1570. @@ -92,7 +105,10 @@
  1571.                         {
  1572.                             htmltext = event;
  1573.                         }
  1574. -                       takeItems(player, MENTEE_MARK, 45000);
  1575. +                       if (qs.isCond(1))
  1576. +                       {
  1577. +                           takeItems(player, MENTEE_MARK, MENTEE_MARKS_NEEDED);
  1578. +                       }
  1579.                         giveItems(player, SIR_KRISTOF_RODEMAI_CERTIFICATE, 1);
  1580.                         giveItems(player, SPELLBOOK_FAVOR_OF_THE_EXALTED, 1);
  1581.                         qs.exitQuest(false, true);
  1582. @@ -122,14 +138,33 @@
  1583.             }
  1584.             case State.STARTED:
  1585.             {
  1586. -               if (getQuestItemsCount(player, MENTEE_MARK) >= 45000)
  1587. +               switch (qs.getCond())
  1588.                 {
  1589. -                   htmltext = "30756-08.html";
  1590. +                   case 1:
  1591. +                   {
  1592. +                       if (getQuestItemsCount(player, MENTEE_MARK) >= MENTEE_MARKS_NEEDED)
  1593. +                       {
  1594. +                           htmltext = "30756-08.html";
  1595. +                       }
  1596. +                       else
  1597. +                       {
  1598. +                           htmltext = "30756-07.html";
  1599. +                       }
  1600. +                       break;
  1601. +                   }
  1602. +                   case 3:
  1603. +                   {
  1604. +                       if (qs.isMemoState(2))
  1605. +                       {
  1606. +                           htmltext = "30756-08a.html";
  1607. +                       }
  1608. +                       else
  1609. +                       {
  1610. +                           htmltext = "30756-07a.html";
  1611. +                       }
  1612. +                       break;
  1613. +                   }
  1614.                 }
  1615. -               else
  1616. -               {
  1617. -                   htmltext = "30756-07.html";
  1618. -               }
  1619.                 break;
  1620.             }
  1621.             case State.COMPLETED:
  1622. @@ -140,4 +175,47 @@
  1623.         }
  1624.         return htmltext;
  1625.     }
  1626. +  
  1627. +   @RegisterEvent(EventType.ON_ATTACKABLE_KILL)
  1628. +   @RegisterType(ListenerRegisterType.GLOBAL_MONSTERS)
  1629. +   public void onAttackableKill(OnAttackableKill event)
  1630. +   {
  1631. +       final PlayerInstance player = event.getAttacker();
  1632. +       if (player == null)
  1633. +       {
  1634. +           return;
  1635. +       }
  1636. +       final QuestState qs = getQuestState(player, false);
  1637. +       if (qs == null)
  1638. +       {
  1639. +           return;
  1640. +       }
  1641. +       if (player.getParty() == null)
  1642. +       {
  1643. +           return;
  1644. +       }
  1645. +       if (player.getParty().getLeader() != player)
  1646. +       {
  1647. +           return;
  1648. +       }
  1649. +       if (!event.getTarget().isRaid())
  1650. +       {
  1651. +           return;
  1652. +       }
  1653. +       if (event.getTarget().isRaidMinion())
  1654. +       {
  1655. +           return;
  1656. +       }
  1657. +      
  1658. +       if (qs.isCond(2))
  1659. +       {
  1660. +           final int memo = qs.getMemoState() + 1;
  1661. +           qs.setMemoState(memo);
  1662. +          
  1663. +           if (memo >= PARTY_LEADER_TIMES)
  1664. +           {
  1665. +               qs.setCond(3, true);
  1666. +           }
  1667. +       }
  1668. +   }
  1669.  }
  1670. \ No newline at end of file
  1671. Index: dist/game/data/scripts/quests/Q10823_ExaltedOneWhoShattersTheLimit/33907-07.html
  1672. ===================================================================
  1673. --- dist/game/data/scripts/quests/Q10823_ExaltedOneWhoShattersTheLimit/33907-07.html    (revision 7687)
  1674. +++ dist/game/data/scripts/quests/Q10823_ExaltedOneWhoShattersTheLimit/33907-07.html    (working copy)
  1675. @@ -1,5 +1,4 @@
  1676.  <html><body>Eva's Knight Lionel Hunter:<br>
  1677. -You've completed a long journey. Good job. I'm glad to see you haven't given up.<br>
  1678. -Do you have all the certificates?<br>
  1679. -<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10823_ExaltedOneWhoShattersTheLimit 33907-08.html">"Yes, here."</Button>
  1680. +You are not ready to be called by me. Come back when you are ready.<br>
  1681. +(Only Noblesse characters Lv. 100 or above can perform this quest.)
  1682.  </body></html>
  1683. \ No newline at end of file
  1684. Index: dist/game/data/scripts/quests/Q10823_ExaltedOneWhoShattersTheLimit/33907-08.html
  1685. ===================================================================
  1686. --- dist/game/data/scripts/quests/Q10823_ExaltedOneWhoShattersTheLimit/33907-08.html    (revision 7687)
  1687. +++ dist/game/data/scripts/quests/Q10823_ExaltedOneWhoShattersTheLimit/33907-08.html    (working copy)
  1688. @@ -1,4 +1,5 @@
  1689.  <html><body>Eva's Knight Lionel Hunter:<br>
  1690. -The power given to us by the gods... we called it Noblesse. But you've proven that we are now able to overcome any limits without the protection of the gods.<br>
  1691. -Now that you've shattered the limits set by the gods, we will call you <font color="LEVEL">Exalted</font>. You are now one step above Noblesse. Congratulations.
  1692. +You've completed a long journey. Good job. I'm glad to see you haven't given up.<br>
  1693. +Do you have all the certificates?<br>
  1694. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10823_ExaltedOneWhoShattersTheLimit 33907-09.html">"Yes, here."</Button>
  1695.  </body></html>
  1696. \ No newline at end of file
  1697. Index: dist/game/data/scripts/quests/Q10823_ExaltedOneWhoShattersTheLimit/33907-09.html
  1698. ===================================================================
  1699. --- dist/game/data/scripts/quests/Q10823_ExaltedOneWhoShattersTheLimit/33907-09.html    (nonexistent)
  1700. +++ dist/game/data/scripts/quests/Q10823_ExaltedOneWhoShattersTheLimit/33907-09.html    (working copy)
  1701. @@ -0,0 +1,4 @@
  1702. +<html><body>Eva's Knight Lionel Hunter:<br>
  1703. +The power given to us by the gods... we called it Noblesse. But you've proven that we are now able to overcome any limits without the protection of the gods.<br>
  1704. +Now that you've shattered the limits set by the gods, we will call you <font color="LEVEL">Exalted</font>. You are now one step above Noblesse. Congratulations.
  1705. +</body></html>
  1706. \ No newline at end of file
  1707. Index: dist/game/data/scripts/quests/Q10823_ExaltedOneWhoShattersTheLimit/Q10823_ExaltedOneWhoShattersTheLimit.java
  1708. ===================================================================
  1709. --- dist/game/data/scripts/quests/Q10823_ExaltedOneWhoShattersTheLimit/Q10823_ExaltedOneWhoShattersTheLimit.java    (revision 7687)
  1710. +++ dist/game/data/scripts/quests/Q10823_ExaltedOneWhoShattersTheLimit/Q10823_ExaltedOneWhoShattersTheLimit.java    (working copy)
  1711. @@ -34,7 +34,7 @@
  1712.     // NPC
  1713.     private static final int LIONEL = 33907;
  1714.     // Items
  1715. -   private static final int MERLOT_SERTIFICATE = 46056;
  1716. +   private static final int MERLOT_CERTIFICATE = 46056;
  1717.     private static final int KURTIZ_CERTIFICATE = 46057;
  1718.     private static final int MAMMON_CERTIFICATE = 45635;
  1719.     private static final int GUSTAV_CERTIFICATE = 45636;
  1720. @@ -53,9 +53,9 @@
  1721.         super(10823);
  1722.         addStartNpc(LIONEL);
  1723.         addTalkId(LIONEL);
  1724. -       addCondMinLevel(MIN_LEVEL, "");
  1725. +       addCondMinLevel(MIN_LEVEL, "33907-07.html");
  1726.         addCondCompletedQuest(Q10817_ExaltedOneWhoOvercomesTheLimit.class.getSimpleName(), "33907-02.html");
  1727. -       registerQuestItems(LIONEL_MISSION_LIST_3, MERLOT_SERTIFICATE, KURTIZ_CERTIFICATE, MAMMON_CERTIFICATE, GUSTAV_CERTIFICATE);
  1728. +       registerQuestItems(LIONEL_MISSION_LIST_3, MERLOT_CERTIFICATE, KURTIZ_CERTIFICATE, MAMMON_CERTIFICATE, GUSTAV_CERTIFICATE);
  1729.     }
  1730.    
  1731.     @Override
  1732. @@ -86,14 +86,18 @@
  1733.                 }
  1734.                 break;
  1735.             }
  1736. -           case "33907-08.html":
  1737. +           case "33907-09.html":
  1738.             {
  1739. -               if (hasQuestItems(player, MERLOT_SERTIFICATE, KURTIZ_CERTIFICATE, MAMMON_CERTIFICATE, GUSTAV_CERTIFICATE) && ((player.getDualClass() != null) && (player.getDualClass().getLevel() >= MIN_DUALCLASS_LEVEL)))
  1740. +               if (hasQuestItems(player, MERLOT_CERTIFICATE, KURTIZ_CERTIFICATE, MAMMON_CERTIFICATE, GUSTAV_CERTIFICATE) && ((player.getDualClass() != null) && (player.getDualClass().getLevel() >= MIN_DUALCLASS_LEVEL)))
  1741.                 {
  1742.                     giveItems(player, EXALTED_CLOAK, 1);
  1743.                     giveItems(player, OBTAIN_EXALTED_STATUS, 1);
  1744.                     giveItems(player, EXALTED_TIARA, 1);
  1745.                     giveItems(player, DIGNITY_OF_THE_EXALTED, 1);
  1746. +                   // Give Exalted status here?
  1747. +                   // https://l2wiki.com/Noblesse
  1748. +                   player.setNobleLevel(2);
  1749. +                   player.broadcastUserInfo();
  1750.                     qs.exitQuest(false, true);
  1751.                     htmltext = event;
  1752.                 }
  1753. @@ -118,9 +122,9 @@
  1754.             }
  1755.             case State.STARTED:
  1756.             {
  1757. -               if (hasQuestItems(player, MERLOT_SERTIFICATE, KURTIZ_CERTIFICATE, MAMMON_CERTIFICATE, GUSTAV_CERTIFICATE) && ((player.getDualClass() != null) && (player.getDualClass().getLevel() >= MIN_DUALCLASS_LEVEL)))
  1758. +               if (hasQuestItems(player, MERLOT_CERTIFICATE, KURTIZ_CERTIFICATE, MAMMON_CERTIFICATE, GUSTAV_CERTIFICATE) && ((player.getDualClass() != null) && (player.getDualClass().getLevel() >= MIN_DUALCLASS_LEVEL)))
  1759.                 {
  1760. -                   htmltext = "33907-07.html";
  1761. +                   htmltext = "33907-08.html";
  1762.                 }
  1763.                 else
  1764.                 {
  1765. Index: dist/game/data/scripts/quests/Q10824_ConfrontingTheGreatestDanger/Q10824_ConfrontingTheGreatestDanger.java
  1766. ===================================================================
  1767. --- dist/game/data/scripts/quests/Q10824_ConfrontingTheGreatestDanger/Q10824_ConfrontingTheGreatestDanger.java  (revision 7687)
  1768. +++ dist/game/data/scripts/quests/Q10824_ConfrontingTheGreatestDanger/Q10824_ConfrontingTheGreatestDanger.java  (working copy)
  1769. @@ -45,44 +45,67 @@
  1770.     private static final int PROOF_OF_PREPARATION = 80824;
  1771.     private static final ItemHolder LIONEL_HUNTERS_LIST_PART_3 = new ItemHolder(45637, 1);
  1772.     // Boss
  1773. -   private static final int[] BOSS =
  1774. +   private static final int[] DIM_RAID_RBS =
  1775.     {
  1776. -       25745, // test
  1777. -       25747 // test
  1778. +       29283, // Vengeful Lerazia (Gludin - South gate)
  1779. +       29284, // Vengeful Edaire (Gludin - West gate)
  1780. +       29285, // Vengeful Agonia (Gludin - North gate)
  1781. +       29278, // Vengeful Agarez (Gludio - North Gate)
  1782. +       29279, // Vengeful Oretross (Gludio - West Gate)
  1783. +       29280, // Vengeful Eligos (Gludio - South Gate)
  1784. +       29268, // Crook The Mad (Giran - North Gate)
  1785. +       29269, // Houpon The Warden (Giran - West Gate)
  1786. +       29270, // Guillotine Of Death (Giran - South Gate)
  1787. +       29263, // Harp (Aden - West Gate)
  1788. +       29260, // Maliss (Aden - East Gate)
  1789. +       29261, // Isadora (Aden - South Gate)
  1790. +       29298, // Varbasion (Oren - North Gate)
  1791. +       29299, // Varmonia (Oren - East Gate)
  1792. +       29300, // Varkaron (Oren - South Gate)
  1793. +       29273, // Lindvior Herald Numa (Goddard - East Gate)
  1794. +       29274, // Valakas Herald Potigia (Goddard - North Gate)
  1795. +       29275, // Antharas Herald Komabor (Goddard - West Gate)
  1796. +       29288, // Nerva Orc Nergatt (Schuttgart - West Gate)
  1797. +       29289, // Amden Orc Turation (Schuttgart - South Gate)
  1798. +       29290, // Nerva Chief Turakan (Schuttgart - East Gate)
  1799. +       29293, // Theor (Gainak - South West Gate)
  1800. +       29294, // Tebird (Gainak - West Gate)
  1801. +       29295 // Tegaffe (Gainak - North Gate)
  1802.     };
  1803.     // Mobs
  1804.     private static final int[] MONSTERS =
  1805.     {
  1806.         // Atelia Refinery
  1807. -       24150, // Devil Warrior
  1808. -       24149, // Devil Nightmare
  1809. -       24153, // Devil Varos
  1810. -       24152, // Devil Sinist
  1811. -       24151, // Devil Guardian
  1812.         24144, // Death Rogue
  1813.         24145, // Death Shooter
  1814.         24146, // Death Warrior
  1815.         24147, // Death Sorcerer
  1816.         24148, // Death Pondus
  1817. +       24149, // Devil Nightmare
  1818. +       24150, // Devil Warrior
  1819. +       24151, // Devil Guardian
  1820. +       24152, // Devil Sinist
  1821. +       24153, // Devil Varos
  1822. +       24154, // Demonic Wizard
  1823.         24155, // Demonic Warrior
  1824. -       24154, // Demonic Wizard
  1825. +       24156, // Demonic Archer
  1826. +       24157, // Demonic Keras
  1827.         24158, // Demonic Weiss
  1828. -       24157, // Demonic Keras
  1829. -       24156, // Demonic Archer
  1830. -       // Raider's Crossroads Mobs
  1831. -       23572, // Nymph Astra
  1832. -       23573, // Nymph Astra
  1833. +      
  1834. +       // Enchanted Valley
  1835. +       23566, // Nymph rose
  1836. +       23567, // Nymph rose
  1837.         23568, // Nymph Lily
  1838.         23569, // Nymph Lily
  1839. -       23566, // Nymph rose
  1840. -       23567, // Nymph rose
  1841.         23570, // Nymph Tulip
  1842.         23571, // Nymph Tulip
  1843. -       23581, // Afros
  1844. -       23578 // Nymph Sentinel
  1845. +       23572, // Nymph Astra
  1846. +       23573, // Nymph Astra
  1847. +       23578, // Nymph Sentinel
  1848. +       23581 // Afros
  1849.     };
  1850.     // Rewards
  1851. -   private static final int MERLOT_SERTIFICATE = 46056;
  1852. +   private static final int MERLOT_CERTIFICATE = 46056;
  1853.     private static final int SPELLBOOK_BLESSING_OF_THE_EXALTED = 45926;
  1854.     // Misc
  1855.     private static final int MIN_LEVEL = 100;
  1856. @@ -146,7 +169,7 @@
  1857.                             htmltext = event;
  1858.                         }
  1859.                         takeItems(player, MARK_OF_ADVANCE, -3);
  1860. -                       giveItems(player, MERLOT_SERTIFICATE, 1);
  1861. +                       giveItems(player, MERLOT_CERTIFICATE, 1);
  1862.                         giveItems(player, SPELLBOOK_BLESSING_OF_THE_EXALTED, 1);
  1863.                         qs.exitQuest(false, true);
  1864.                     }
  1865. @@ -172,7 +195,7 @@
  1866.                             htmltext = event;
  1867.                         }
  1868.                         takeItems(player, PROOF_OF_PREPARATION, -20000);
  1869. -                       giveItems(player, MERLOT_SERTIFICATE, 1);
  1870. +                       giveItems(player, MERLOT_CERTIFICATE, 1);
  1871.                         giveItems(player, SPELLBOOK_BLESSING_OF_THE_EXALTED, 1);
  1872.                         qs.exitQuest(false, true);
  1873.                     }
  1874. @@ -255,7 +278,7 @@
  1875.                 qs.setCond(4, true);
  1876.             }
  1877.         }
  1878. -       else if ((qs != null) && qs.isCond(1) && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE) && CommonUtil.contains(BOSS, npc.getId()))
  1879. +       else if ((qs != null) && qs.isCond(1) && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE) && CommonUtil.contains(DIM_RAID_RBS, npc.getId()))
  1880.         {
  1881.             giveItems(player, MARK_OF_ADVANCE, 1);
  1882.             playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  1883. Index: dist/game/data/scripts/quests/Q10825_ForVictory/30870-06.html
  1884. ===================================================================
  1885. --- dist/game/data/scripts/quests/Q10825_ForVictory/30870-06.html   (revision 7687)
  1886. +++ dist/game/data/scripts/quests/Q10825_ForVictory/30870-06.html   (working copy)
  1887. @@ -1,5 +1,7 @@
  1888.  <html><body>Captain Kurtiz:<br>
  1889.  You are quick to understand.<br>
  1890.  You have to participate in a <font color="LEVEL">siege</font> or a <font color="LEVEL">dimensional siege</font>. When you reach the <font color="LEVEL">Flag of Protection</font> inside, you'll be able to obtain a <font color="LEVEL">Mark of Valor</font>. Your mission is to obtain <font color="LEVEL">10</font> of these.<br>
  1891. -You'll be able to get more marks when you participate in a dimensional siege or in the Aden or Rune Castle Sieges.
  1892. +You'll be able to get more marks when you participate in a dimensional siege or in the Aden or Rune Castle Sieges.<br><br>
  1893. +Or you can try another way, fight in Grand Olympiad or Ceremony of Chaos.<br>
  1894. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10825_ForVictory 30870-06a.html">"I'll do that."</Button>
  1895.  </body></html>
  1896. \ No newline at end of file
  1897. Index: dist/game/data/scripts/quests/Q10825_ForVictory/30870-06a.html
  1898. ===================================================================
  1899. --- dist/game/data/scripts/quests/Q10825_ForVictory/30870-06a.html  (nonexistent)
  1900. +++ dist/game/data/scripts/quests/Q10825_ForVictory/30870-06a.html  (working copy)
  1901. @@ -0,0 +1,3 @@
  1902. +<html><body>Captain Kurtiz:<br>
  1903. +You have to participate in <font color="LEVEL">Grand Olympiad</font> or <font color="LEVEL">Ceremony of Chaos</font>.Your mission is to obtain <font color="LEVEL">30 Proof of Settlement</font>.<br>
  1904. +</body></html>
  1905. \ No newline at end of file
  1906. Index: dist/game/data/scripts/quests/Q10825_ForVictory/30870-07a.html
  1907. ===================================================================
  1908. --- dist/game/data/scripts/quests/Q10825_ForVictory/30870-07a.html  (nonexistent)
  1909. +++ dist/game/data/scripts/quests/Q10825_ForVictory/30870-07a.html  (working copy)
  1910. @@ -0,0 +1,4 @@
  1911. +<html><body>Captain Kurtiz:<br>
  1912. +You didn't forget what you have to do, right? Well, I can tell you again.<br>
  1913. +You have to participate in <font color="LEVEL">Grand Olympiad</font> or <font color="LEVEL">Ceremony of Chaos</font>.Your mission is to obtain <font color="LEVEL">30 Proof of Settlement</font>.<br>
  1914. +</body></html>
  1915. \ No newline at end of file
  1916. Index: dist/game/data/scripts/quests/Q10825_ForVictory/30870-08a.html
  1917. ===================================================================
  1918. --- dist/game/data/scripts/quests/Q10825_ForVictory/30870-08a.html  (nonexistent)
  1919. +++ dist/game/data/scripts/quests/Q10825_ForVictory/30870-08a.html  (working copy)
  1920. @@ -0,0 +1,4 @@
  1921. +<html><body>Captain Kurtiz:<br>
  1922. +Did you get <font color="LEVEL">30 Proof of Settlement</font>?<br>
  1923. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10825_ForVictory 30870-09.html">"Yes."</Button>
  1924. +</body></html>
  1925. \ No newline at end of file
  1926. Index: dist/game/data/scripts/quests/Q10825_ForVictory/CastleFlagOfProtection-02.html
  1927. ===================================================================
  1928. --- dist/game/data/scripts/quests/Q10825_ForVictory/CastleFlagOfProtection-02.html  (nonexistent)
  1929. +++ dist/game/data/scripts/quests/Q10825_ForVictory/CastleFlagOfProtection-02.html  (working copy)
  1930. @@ -0,0 +1,3 @@
  1931. +<html><body>Flag of Protection:<br>
  1932. +(You received a Mark of Valor.)<br><br>
  1933. +</body></html>
  1934. \ No newline at end of file
  1935. Index: dist/game/data/scripts/quests/Q10825_ForVictory/CastleFlagOfProtection-03.html
  1936. ===================================================================
  1937. --- dist/game/data/scripts/quests/Q10825_ForVictory/CastleFlagOfProtection-03.html  (nonexistent)
  1938. +++ dist/game/data/scripts/quests/Q10825_ForVictory/CastleFlagOfProtection-03.html  (working copy)
  1939. @@ -0,0 +1,3 @@
  1940. +<html><body>Flag of Protection:<br>
  1941. +(You can only get reward if you are registered as attacker or defender.)<br><br>
  1942. +</body></html>
  1943. \ No newline at end of file
  1944. Index: dist/game/data/scripts/quests/Q10825_ForVictory/CastleFlagOfProtection-04.html
  1945. ===================================================================
  1946. --- dist/game/data/scripts/quests/Q10825_ForVictory/CastleFlagOfProtection-04.html  (nonexistent)
  1947. +++ dist/game/data/scripts/quests/Q10825_ForVictory/CastleFlagOfProtection-04.html  (working copy)
  1948. @@ -0,0 +1,3 @@
  1949. +<html><body>Flag of Protection:<br>
  1950. +(You can only get reward from one castle per day.)<br><br>
  1951. +</body></html>
  1952. \ No newline at end of file
  1953. Index: dist/game/data/scripts/quests/Q10825_ForVictory/Q10825_ForVictory.java
  1954. ===================================================================
  1955. --- dist/game/data/scripts/quests/Q10825_ForVictory/Q10825_ForVictory.java  (revision 7687)
  1956. +++ dist/game/data/scripts/quests/Q10825_ForVictory/Q10825_ForVictory.java  (working copy)
  1957. @@ -23,7 +23,8 @@
  1958.  import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
  1959.  import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
  1960.  import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
  1961. -import org.l2jmobius.gameserver.model.events.impl.sieges.OnCastleSiegeFinish;
  1962. +import org.l2jmobius.gameserver.model.events.impl.ceremonyofchaos.OnCeremonyOfChaosMatchResult;
  1963. +import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult;
  1964.  import org.l2jmobius.gameserver.model.quest.Quest;
  1965.  import org.l2jmobius.gameserver.model.quest.QuestState;
  1966.  import org.l2jmobius.gameserver.model.quest.State;
  1967. @@ -38,10 +39,21 @@
  1968.  public class Q10825_ForVictory extends Quest
  1969.  {
  1970.     // NPC
  1971. -   private static final int KURTIZ = 34019;
  1972. +   private static final int KURTIZ = 30870;
  1973. +   // Flag of Protection NPCs
  1974. +   private static final int FLAG_GLUDIO = 36741; // 1 Gludio Castle
  1975. +   private static final int FLAG_DION = 36742; // 2 Dion Castle
  1976. +   private static final int FLAG_GIRAN = 36743; // 3 Giran Castle
  1977. +   private static final int FLAG_OREN = 36744; // 4 Oren Castle
  1978. +   private static final int FLAG_ADEN = 36745; // 5 Aden Castle
  1979. +   private static final int FLAG_INNADRIL = 36746; // 6 Innadril Castle
  1980. +   private static final int FLAG_GODDARD = 36747; // 7 Goddard Castle
  1981. +   private static final int FLAG_RUNE = 36748; // 8 Rune Castle
  1982. +   private static final int FLAG_SCHUTTGART = 36749; // 9 Schuttgart Castle
  1983.     // Items
  1984. +   private static final int PROOF_OF_SETTLEMENT = 80825;
  1985.     private static final int MARK_OF_VALOR = 46059;
  1986. -   private static final int MERLOT_SERTIFICATE = 46056;
  1987. +   private static final int MERLOT_CERTIFICATE = 46056;
  1988.     private static final int MAMMON_CERTIFICATE = 45635;
  1989.     private static final int GUSTAV_CERTIFICATE = 45636;
  1990.     // Rewards
  1991. @@ -49,15 +61,17 @@
  1992.     private static final int SPELLBOOK_SUMMON_BATTLE_POTION = 45927;
  1993.     // Misc
  1994.     private static final int MIN_LEVEL = 100;
  1995. +   private static final int MARK_OF_VALOR_NEEDED = 10;
  1996. +   private static final int PROOF_OF_SETTLEMENT_NEEDED = 30;
  1997.    
  1998.     public Q10825_ForVictory()
  1999.     {
  2000.         super(10825);
  2001.         addStartNpc(KURTIZ);
  2002. -       addTalkId(KURTIZ);
  2003. +       addTalkId(KURTIZ, FLAG_GLUDIO, FLAG_DION, FLAG_GIRAN, FLAG_OREN, FLAG_ADEN, FLAG_INNADRIL, FLAG_GODDARD, FLAG_RUNE, FLAG_SCHUTTGART);
  2004.         addCondMinLevel(MIN_LEVEL, "30870-02.html");
  2005.         addCondStartedQuest(Q10823_ExaltedOneWhoShattersTheLimit.class.getSimpleName(), "30870-03.html");
  2006. -       registerQuestItems(MARK_OF_VALOR);
  2007. +       registerQuestItems(PROOF_OF_SETTLEMENT, MARK_OF_VALOR);
  2008.     }
  2009.    
  2010.     @Override
  2011. @@ -81,16 +95,23 @@
  2012.             case "30870-06.html":
  2013.             {
  2014.                 qs.startQuest();
  2015. +               qs.set("TimeCheck", 0);
  2016.                 htmltext = event;
  2017.                 break;
  2018.             }
  2019. +           case "30870-06a.html":
  2020. +           {
  2021. +               qs.setCond(3);
  2022. +               htmltext = event;
  2023. +               break;
  2024. +           }
  2025.             case "30870-09.html":
  2026.             {
  2027. -               if (qs.isCond(1) && (getQuestItemsCount(player, MARK_OF_VALOR) >= 10))
  2028. +               if ((qs.isCond(2) && (getQuestItemsCount(player, MARK_OF_VALOR) >= MARK_OF_VALOR_NEEDED)) || (qs.isCond(4) && (getQuestItemsCount(player, PROOF_OF_SETTLEMENT) >= PROOF_OF_SETTLEMENT_NEEDED)))
  2029.                 {
  2030.                     if ((player.getLevel() >= MIN_LEVEL))
  2031.                     {
  2032. -                       if (hasQuestItems(player, MERLOT_SERTIFICATE, MAMMON_CERTIFICATE, GUSTAV_CERTIFICATE))
  2033. +                       if (hasQuestItems(player, MERLOT_CERTIFICATE, MAMMON_CERTIFICATE, GUSTAV_CERTIFICATE))
  2034.                         {
  2035.                             htmltext = "30870-10.html";
  2036.                         }
  2037. @@ -98,6 +119,14 @@
  2038.                         {
  2039.                             htmltext = event;
  2040.                         }
  2041. +                       if (qs.isCond(2))
  2042. +                       {
  2043. +                           takeItems(player, MARK_OF_VALOR, MARK_OF_VALOR_NEEDED);
  2044. +                       }
  2045. +                       if (qs.isCond(4))
  2046. +                       {
  2047. +                           takeItems(player, PROOF_OF_SETTLEMENT, PROOF_OF_SETTLEMENT_NEEDED);
  2048. +                       }
  2049.                         giveItems(player, KURTIZ_CERTIFICATE, 1);
  2050.                         giveItems(player, SPELLBOOK_SUMMON_BATTLE_POTION, 1);
  2051.                         qs.exitQuest(false, true);
  2052. @@ -109,6 +138,82 @@
  2053.                 }
  2054.                 break;
  2055.             }
  2056. +           case "mark":
  2057. +           {
  2058. +               final long TIME_CHECK = Long.parseLong(qs.get("TimeCheck"));
  2059. +               final long CURRENT_TIME = System.currentTimeMillis();
  2060. +               final long SIEGE_LENGTH = 7200000; // 2 hours in milliseconds
  2061. +               switch (npc.getId())
  2062. +               {
  2063. +                   case FLAG_GLUDIO:
  2064. +                   case FLAG_DION:
  2065. +                   case FLAG_GIRAN:
  2066. +                   case FLAG_OREN:
  2067. +                   case FLAG_INNADRIL:
  2068. +                   case FLAG_GODDARD:
  2069. +                   case FLAG_SCHUTTGART:
  2070. +                   {
  2071. +                       if (player != null)
  2072. +                       {
  2073. +                           if (qs.isCond(1) && (getQuestItemsCount(player, MARK_OF_VALOR) < MARK_OF_VALOR_NEEDED) && (CURRENT_TIME > (TIME_CHECK + SIEGE_LENGTH)))
  2074. +                           {
  2075. +                               if (player.getSiegeState() == 0)
  2076. +                               {
  2077. +                                   htmltext = "CastleFlagOfProtection-03.html"; // Reward only siege participants
  2078. +                               }
  2079. +                               else
  2080. +                               {
  2081. +                                   qs.set("TimeCheck", Long.toString(CURRENT_TIME));
  2082. +                                   giveItems(player, MARK_OF_VALOR, 1);
  2083. +                                   if (getQuestItemsCount(player, MARK_OF_VALOR) >= MARK_OF_VALOR_NEEDED)
  2084. +                                   {
  2085. +                                       qs.setCond(2, true);
  2086. +                                   }
  2087. +                                   playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  2088. +                                   htmltext = "CastleFlagOfProtection-02.html"; // Reward received
  2089. +                               }
  2090. +                           }
  2091. +                           else
  2092. +                           {
  2093. +                               htmltext = "CastleFlagOfProtection-04.html"; // Reward only from one castle per day
  2094. +                           }
  2095. +                       }
  2096. +                       break;
  2097. +                   }
  2098. +                   case FLAG_ADEN:
  2099. +                   case FLAG_RUNE:
  2100. +                   {
  2101. +                       if (player != null)
  2102. +                       {
  2103. +                           if (qs.isCond(1) && (getQuestItemsCount(player, MARK_OF_VALOR) < MARK_OF_VALOR_NEEDED) && (CURRENT_TIME > (TIME_CHECK + SIEGE_LENGTH)))
  2104. +                           {
  2105. +                               if (player.getSiegeState() == 0)
  2106. +                               {
  2107. +                                   htmltext = "CastleFlagOfProtection-03.html"; // Reward only siege participants
  2108. +                               }
  2109. +                               else
  2110. +                               {
  2111. +                                   qs.set("TimeCheck", String.valueOf(CURRENT_TIME));
  2112. +                                   giveItems(player, MARK_OF_VALOR, 2);
  2113. +                                   if (getQuestItemsCount(player, MARK_OF_VALOR) >= MARK_OF_VALOR_NEEDED)
  2114. +                                   {
  2115. +                                       qs.setCond(2, true);
  2116. +                                   }
  2117. +                                   playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  2118. +                                   htmltext = "CastleFlagOfProtection-02.html"; // Reward received
  2119. +                               }
  2120. +                           }
  2121. +                           else
  2122. +                           {
  2123. +                               htmltext = "CastleFlagOfProtection-04.html"; // Reward only from one castle per day
  2124. +                           }
  2125. +                       }
  2126. +                       break;
  2127. +                   }
  2128. +                  
  2129. +               }
  2130. +           }
  2131. +               break;
  2132.         }
  2133.         return htmltext;
  2134.     }
  2135. @@ -127,14 +232,33 @@
  2136.             }
  2137.             case State.STARTED:
  2138.             {
  2139. -               if (getQuestItemsCount(player, MARK_OF_VALOR) >= 10)
  2140. +               switch (qs.getCond())
  2141.                 {
  2142. -                   htmltext = "30870-08.html";
  2143. +                   case 1:
  2144. +                   {
  2145. +                       if (getQuestItemsCount(player, MARK_OF_VALOR) >= MARK_OF_VALOR_NEEDED)
  2146. +                       {
  2147. +                           htmltext = "30870-08.html";
  2148. +                       }
  2149. +                       else
  2150. +                       {
  2151. +                           htmltext = "30870-07.html";
  2152. +                       }
  2153. +                       break;
  2154. +                   }
  2155. +                   case 3:
  2156. +                   {
  2157. +                       if (getQuestItemsCount(player, PROOF_OF_SETTLEMENT) >= PROOF_OF_SETTLEMENT_NEEDED)
  2158. +                       {
  2159. +                           htmltext = "30870-08a.html";
  2160. +                       }
  2161. +                       else
  2162. +                       {
  2163. +                           htmltext = "30870-07a.html";
  2164. +                       }
  2165. +                       break;
  2166. +                   }
  2167.                 }
  2168. -               else
  2169. -               {
  2170. -                   htmltext = "30870-07.html";
  2171. -               }
  2172.                 break;
  2173.             }
  2174.             case State.COMPLETED:
  2175. @@ -153,16 +277,28 @@
  2176.             final QuestState qs = getQuestState(player, false);
  2177.             if ((qs != null) && qs.isCond(1))
  2178.             {
  2179. -               giveItems(player, MARK_OF_VALOR, 1);
  2180. +               giveItems(player, PROOF_OF_SETTLEMENT, 1);
  2181.                 playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  2182. +               if (getQuestItemsCount(player, PROOF_OF_SETTLEMENT) >= PROOF_OF_SETTLEMENT_NEEDED)
  2183. +               {
  2184. +                   qs.setCond(4, true);
  2185. +               }
  2186.             }
  2187.         }
  2188.     }
  2189.    
  2190. -   @RegisterEvent(EventType.ON_CASTLE_SIEGE_FINISH)
  2191. +   @RegisterEvent(EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT)
  2192.     @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
  2193. -   private void OnCastleSiegeFinish(OnCastleSiegeFinish event)
  2194. +   private void onCeremonyOfChaosMatchResult(OnCeremonyOfChaosMatchResult event)
  2195.     {
  2196. -       event.getSiege().getPlayersInZone().forEach(this::manageQuestProgress);
  2197. +       event.getMembers().forEach(player -> manageQuestProgress(player.getPlayer()));
  2198.     }
  2199. +  
  2200. +   @RegisterEvent(EventType.ON_OLYMPIAD_MATCH_RESULT)
  2201. +   @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
  2202. +   private void onOlympiadMatchResult(OnOlympiadMatchResult event)
  2203. +   {
  2204. +       manageQuestProgress(event.getWinner().getPlayer());
  2205. +       manageQuestProgress(event.getLoser().getPlayer());
  2206. +   }
  2207.  }
  2208. \ No newline at end of file
  2209. Index: dist/game/data/scripts/quests/Q10826_LuckBefittingOfTheStatus/Q10826_LuckBefittingOfTheStatus.java
  2210. ===================================================================
  2211. --- dist/game/data/scripts/quests/Q10826_LuckBefittingOfTheStatus/Q10826_LuckBefittingOfTheStatus.java  (revision 7687)
  2212. +++ dist/game/data/scripts/quests/Q10826_LuckBefittingOfTheStatus/Q10826_LuckBefittingOfTheStatus.java  (working copy)
  2213. @@ -38,7 +38,7 @@
  2214.     private static final int BLACKSMITH_OF_MAMMON = 31126;
  2215.     // Items
  2216.     private static final int LADY_KNIFE = 45645;
  2217. -   private static final int MERLOT_SERTIFICATE = 46056;
  2218. +   private static final int MERLOT_CERTIFICATE = 46056;
  2219.     private static final int KURTIZ_CERTIFICATE = 46057;
  2220.     private static final int GUSTAV_CERTIFICATE = 45636;
  2221.     // Rewards
  2222. @@ -118,7 +118,7 @@
  2223.         {
  2224.             if ((player.getLevel() >= MIN_LEVEL))
  2225.             {
  2226. -               if (hasQuestItems(player, KURTIZ_CERTIFICATE, MERLOT_SERTIFICATE, GUSTAV_CERTIFICATE))
  2227. +               if (hasQuestItems(player, KURTIZ_CERTIFICATE, MERLOT_CERTIFICATE, GUSTAV_CERTIFICATE))
  2228.                 {
  2229.                     htmltext = "31126-15.html";
  2230.                 }
  2231. Index: dist/game/data/scripts/quests/Q10827_StepUpToLead/Q10827_StepUpToLead.java
  2232. ===================================================================
  2233. --- dist/game/data/scripts/quests/Q10827_StepUpToLead/Q10827_StepUpToLead.java  (revision 7687)
  2234. +++ dist/game/data/scripts/quests/Q10827_StepUpToLead/Q10827_StepUpToLead.java  (working copy)
  2235. @@ -39,7 +39,7 @@
  2236.     // NPC
  2237.     private static final int GUSTAV = 30760;
  2238.     // Items
  2239. -   private static final int MERLOT_SERTIFICATE = 46056;
  2240. +   private static final int MERLOT_CERTIFICATE = 46056;
  2241.     private static final int KURTIZ_CERTIFICATE = 46057;
  2242.     private static final int MAMMON_CERTIFICATE = 45635;
  2243.     // Rewards
  2244. @@ -47,6 +47,7 @@
  2245.     private static final int SPELLBOOK_FAVOR_OF_THE_EXALTED = 45870;
  2246.     // Misc
  2247.     private static final int MIN_LEVEL = 100;
  2248. +   private static final int PARTY_LEADER_TIMES = 5; // XXX: POW: 5 FF: 30
  2249.    
  2250.     public Q10827_StepUpToLead()
  2251.     {
  2252. @@ -87,7 +88,7 @@
  2253.                 {
  2254.                     if ((player.getLevel() >= MIN_LEVEL))
  2255.                     {
  2256. -                       if (hasQuestItems(player, KURTIZ_CERTIFICATE, MERLOT_SERTIFICATE, MAMMON_CERTIFICATE))
  2257. +                       if (hasQuestItems(player, KURTIZ_CERTIFICATE, MERLOT_CERTIFICATE, MAMMON_CERTIFICATE))
  2258.                         {
  2259.                             htmltext = "30760-10.html";
  2260.                         }
  2261. @@ -97,12 +98,6 @@
  2262.                         }
  2263.                         giveItems(player, GUSTAV_CERTIFICATE, 1);
  2264.                         giveItems(player, SPELLBOOK_FAVOR_OF_THE_EXALTED, 1);
  2265. -                      
  2266. -                       // Give Exalted status here?
  2267. -                       // https://l2wiki.com/Noblesse
  2268. -                       player.setNobleLevel(2);
  2269. -                       player.broadcastUserInfo();
  2270. -                      
  2271.                         qs.exitQuest(false, true);
  2272.                     }
  2273.                     else
  2274. @@ -185,7 +180,7 @@
  2275.             final int memo = qs.getMemoState() + 1;
  2276.             qs.setMemoState(memo);
  2277.            
  2278. -           if (memo >= 30)
  2279. +           if (memo >= PARTY_LEADER_TIMES)
  2280.             {
  2281.                 qs.setCond(2, true);
  2282.             }
  2283. Index: dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-01.htm
  2284. ===================================================================
  2285. --- dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-01.htm   (revision 7687)
  2286. +++ dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-01.htm   (working copy)
  2287. @@ -1,5 +1,5 @@
  2288.  <html><body>Eva's Knight Lionel Hunter:<br>
  2289. -Great job passing the second test. I knew you would be able to do it.<br>
  2290. -Now, only the third test is left. Are you ready for it?<br>
  2291. -<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10823_ExaltedOneWhoShattersTheLimit 33907-03.htm">"Yes, I'm ready."</Button>
  2292. +You already passed the three tests to gain the new power. However, the world has changed, and so has the path you should take.<br>
  2293. +Would you like to learn about the qualification test for this new stage?<br>
  2294. +<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10873_ExaltedReachingAnotherLevel 33907-03.htm">"Go on."</Button>
  2295.  </body></html>
  2296. \ No newline at end of file
  2297. Index: dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-03.htm
  2298. ===================================================================
  2299. --- dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-03.htm   (revision 7687)
  2300. +++ dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-03.htm   (working copy)
  2301. @@ -1,5 +1,5 @@
  2302.  <html><body>Eva's Knight Lionel Hunter:<br>
  2303. -All the efforts you've made so far are simple compared to what you'll have to do now.<br>
  2304. -You must remember that it is not about overcoming the limit, but about learning that there's no limit at all. Do you understand what I'm saying?<br>
  2305. -<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10823_ExaltedOneWhoShattersTheLimit 33907-04.htm">"Yes."</Button>
  2306. +I'm fully aware that you worked hard to rise to the Exalted position and achieve the power you wished. However, the world has changed. More precisely, the birth of a new power has changed the world.<br>
  2307. +In either case, we've come to the same conclusion: we must move on. The world does not need ones who linger in the present. You must start a new journey and overcome new trials.<br>
  2308. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10873_ExaltedReachingAnotherLevel 33907-04.htm">"Go on."</Button>
  2309.  </body></html>
  2310. \ No newline at end of file
  2311. Index: dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-04.htm
  2312. ===================================================================
  2313. --- dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-04.htm   (revision 7687)
  2314. +++ dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-04.htm   (working copy)
  2315. @@ -1,6 +1,5 @@
  2316.  <html><body>Eva's Knight Lionel Hunter:<br>
  2317. -You've already overcome your limit. There's no such thing as a limit now. That's what you will be proving on this third test.<br>
  2318. -The things you've obtained as you improved will make you even stronger, and what you will obtain from now on will help you prove yourself.<br>
  2319. -Are you ready to not go back?<br>
  2320. -<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10823_ExaltedOneWhoShattersTheLimit 33907-05.html">"I'm ready."</Button>
  2321. +During this journey, you must reach a new stage, establish a solid foothold, and expand your influence to this world. To save the world, you must be able not only to develop yourself but also to spread your power to other areas. I know it sounds like a riddle.<br>
  2322. +But I can promise you one thing, by the time you pass the test, you will have reached the new stage. Would you take the fourth test?<br>
  2323. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10873_ExaltedReachingAnotherLevel 33907-05.html">"Yes, that is correct."</Button>
  2324.  </body></html>
  2325. \ No newline at end of file
  2326. Index: dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-05.html
  2327. ===================================================================
  2328. --- dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-05.html  (revision 7687)
  2329. +++ dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-05.html  (working copy)
  2330. @@ -1,7 +1,9 @@
  2331.  <html><body>Eva's Knight Lionel Hunter:<br>
  2332. -This is the third test.<br>
  2333. -You must overcome not just the limit of the power you were born with, but also the limit of the new power you obtained.<br>
  2334. -Make sure your <font color="LEVEL">Lv. 104</font>. Then, go find <font color="LEVEL">Sporcha</font> in <font color="LEVEL">Refugee Village</font>, <font color="LEVEL">Captain Krenaht</font> in the <font color="LEVEL">Giants Cave</font>, the <font color="LEVEL">Santiago</font>, and <font color="LEVEL">Arcturus</font> in the <font color="LEVEL">Hunters Village</font>, and pass the tests they give you. It's best that you hear about the tests from them.<br><br><br>
  2335. -Remember to bring back their certificates.<br>
  2336. -If you forget who you must go to, refer to the guide I'll be giving you.
  2337. +I'll tell you about the fourth test.<br>
  2338. +First, you must reach <font color="LEVEL">Lv. 104</font> to prove you are qualified to advance to the new stage. You must also pass the tests of the following people and receive their certificates.<br>
  2339. +Your testers include <font color="LEVEL">Commando Captain Sporcha</font> in the <font color="LEVEL">Hellbound Refugee Camp</font>, <font color="LEVEL">Giant Tracker Leader Krenaht</font> in the <font color="LEVEL">Giant's Cave</font>, <font color="LEVEL">Fishing Guild Leader Santiago</font> in <font color="LEVEL">Heine</font>, and <font color="LEVEL">Hunter's Guild President Arcturus</font> in the <font color="LEVEL">Hunter's Village</font>.<br><br><br>
  2340. +Only they know what they'll test you on, so go talk to them. If you forget who you must go to, refer to the guide I'll be giving you<br><br>
  2341. +All this can be substituted by completing a mission from <font color="LEVEL">High Priest Sylvain</font> in the <font color="LEVEL">Einhasad Temple</font> in the <font color="LEVEL">Town of Dion</font>.<br>
  2342. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10873_ExaltedReachingAnotherLevel 33907-05a.html">"I'll do that."</Button>
  2343. +</body></html>
  2344.  </body></html>
  2345. \ No newline at end of file
  2346. Index: dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-05a.html
  2347. ===================================================================
  2348. --- dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-05a.html (nonexistent)
  2349. +++ dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-05a.html (working copy)
  2350. @@ -0,0 +1,5 @@
  2351. +<html><body>Eva's Knight Lionel Hunter:<br>
  2352. +I'll tell you about the fourth test.<br>
  2353. +You need to complete a mission from <font color="LEVEL">High Priest Sylvain</font> in the <font color="LEVEL">Einhasad Temple</font> in the <font color="LEVEL">Town of Dion</font>.<br>
  2354. +Only him knows what he'll test you on, so go talk to him. If you forget who you must go to, refer to the guide I'll be giving you<br>
  2355. +</body></html>
  2356. \ No newline at end of file
  2357. Index: dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-06.html
  2358. ===================================================================
  2359. --- dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-06.html  (revision 7687)
  2360. +++ dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-06.html  (working copy)
  2361. @@ -1,6 +1,6 @@
  2362.  <html><body>Eva's Knight Lionel Hunter:<br>
  2363. -You haven't finished all the tests. In order to overcome your limit, you must pass all the tests.<br>
  2364. +You haven't finished all the tests. In order to reach another level, you must pass all the tests.<br>
  2365.  You must overcome not just the limit of the power you were born with, but also the limit of the new power you obtained.<br>
  2366. -Make sure your <font color="LEVEL">Lv. 104</font>. Then, go find <font color="LEVEL">Sporcha</font> in <font color="LEVEL">Refugee Village</font>, <font color="LEVEL">Captain Krenaht</font> in the <font color="LEVEL">Giants Cave</font>, the <font color="LEVEL">Santiago</font>, and <font color="LEVEL">Arcturus</font> in the <font color="LEVEL">Hunters Village</font>, and pass the tests they give you.<br>
  2367. +Make sure you're <font color="LEVEL">Lv. 104</font>. Then, go find <font color="LEVEL">Commando Captain Sporcha</font> in the <font color="LEVEL">Hellbound Refugee Camp</font>, <font color="LEVEL">Giant Tracker Leader Krenaht</font> in the <font color="LEVEL">Giant's Cave</font>, <font color="LEVEL">Fishing Guild Leader Santiago</font> in <font color="LEVEL">Heine</font>, and <font color="LEVEL">Hunter's Guild President Arcturus</font> in the <font color="LEVEL">Hunter's Village</font>, and pass the tests they give you.<br><br><br>
  2368.  It's best that you hear about the tests from them. Remember to bring back their certificates.
  2369.  </body></html>
  2370. \ No newline at end of file
  2371. Index: dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-06a.html
  2372. ===================================================================
  2373. --- dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-06a.html (nonexistent)
  2374. +++ dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-06a.html (working copy)
  2375. @@ -0,0 +1,6 @@
  2376. +<html><body>Eva's Knight Lionel Hunter:<br>
  2377. +You haven't finished the test. In order to reach another level, you must pass the test.<br>
  2378. +You must overcome not just the limit of the power you were born with, but also the limit of the new power you obtained.<br>
  2379. +Make sure you're <font color="LEVEL">Lv. 104</font>. Then, go find <font color="LEVEL">High Priest Sylvain</font> in the <font color="LEVEL">Einhasad Temple</font> in the <font color="LEVEL">Town of Dion</font>.<br><br><br>
  2380. +It's best that you hear about the test from him. Remember to bring back his certificate.
  2381. +</body></html>
  2382. \ No newline at end of file
  2383. Index: dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-07.html
  2384. ===================================================================
  2385. --- dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-07.html  (revision 7687)
  2386. +++ dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-07.html  (working copy)
  2387. @@ -1,5 +1,5 @@
  2388.  <html><body>Eva's Knight Lionel Hunter:<br>
  2389. -You've completed a long journey. Good job. I'm glad to see you haven't given up.<br>
  2390. -Do you have all the certificates?<br>
  2391. -<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10823_ExaltedOneWhoShattersTheLimit 33907-08.html">"Yes, here."</Button>
  2392. +Have you completed all tests?<br>
  2393. +Congratulations on passing them all. Did you bring back all the certificates?<br>
  2394. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10873_ExaltedReachingAnotherLevel 33907-08.html">"Yes, I did."</Button>
  2395.  </body></html>
  2396. \ No newline at end of file
  2397. Index: dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-07a.html
  2398. ===================================================================
  2399. --- dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-07a.html (nonexistent)
  2400. +++ dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-07a.html (working copy)
  2401. @@ -0,0 +1,5 @@
  2402. +<html><body>Eva's Knight Lionel Hunter:<br>
  2403. +Have you completed the test?<br>
  2404. +Congratulations on passing it. Did you bring back the certificate?<br>
  2405. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10873_ExaltedReachingAnotherLevel 33907-08.html">"Yes, I did."</Button>
  2406. +</body></html>
  2407. \ No newline at end of file
  2408. Index: dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-08.html
  2409. ===================================================================
  2410. --- dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-08.html  (revision 7687)
  2411. +++ dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-08.html  (working copy)
  2412. @@ -1,4 +1,4 @@
  2413.  <html><body>Eva's Knight Lionel Hunter:<br>
  2414. -The power given to us by the gods... we called it Noblesse. But you've proven that we are now able to overcome any limits without the protection of the gods.<br>
  2415. -Now that you've shattered the limits set by the gods, we will call you <font color="LEVEL">true exalted nobleman</font>. Get access to the next quest Exalted, Guide to Power. Congratulations.
  2416. +You took the first step forward the new stage rather than being content staying still. Congratulations for passing the fourth test.<br>
  2417. +Don't forget that more tests remain. For now, enjoy your achievement.
  2418.  </body></html>
  2419. \ No newline at end of file
  2420. Index: dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/Q10873_ExaltedReachingAnotherLevel.java
  2421. ===================================================================
  2422. --- dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/Q10873_ExaltedReachingAnotherLevel.java    (revision 7687)
  2423. +++ dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/Q10873_ExaltedReachingAnotherLevel.java    (working copy)
  2424. @@ -35,12 +35,12 @@
  2425.     private static final int LIONEL = 33907;
  2426.     // Items
  2427.     private static final int SPORCHA_CERTIFICATE = 47830;
  2428. -   private static final int KRENAHT_CERTIFICATE = 47831;
  2429. -   private static final int SANTIAGO_SERTIFICATE = 47832;
  2430. +   private static final int KEKROPUS_CERTIFICATE = 47831;
  2431. +   private static final int SANTIAGO_CERTIFICATE = 47832;
  2432.     private static final int ARCTURUS_CERTIFICATE = 47833;
  2433. +   private static final int SYLVAIN_CERTIFICATE = 80828;
  2434.     private static final int LIONEL_MISSION_LIST_4 = 47829;
  2435.     // Rewards
  2436. -   private static final int VITALITY_OF_THE_EXALTED = 47854;
  2437.     private static final int DIGNITY_OF_THE_EXALTED = 47852;
  2438.     // Misc
  2439.     private static final int MIN_LEVEL = 103;
  2440. @@ -53,7 +53,7 @@
  2441.         addTalkId(LIONEL);
  2442.         addCondMinLevel(MIN_LEVEL, "33907-00.htm");
  2443.         addCondCompletedQuest(Q10823_ExaltedOneWhoShattersTheLimit.class.getSimpleName(), "33907-00.htm");
  2444. -       registerQuestItems(LIONEL_MISSION_LIST_4, SPORCHA_CERTIFICATE, KRENAHT_CERTIFICATE, SANTIAGO_SERTIFICATE, ARCTURUS_CERTIFICATE);
  2445. +       registerQuestItems(LIONEL_MISSION_LIST_4, SPORCHA_CERTIFICATE, KEKROPUS_CERTIFICATE, SANTIAGO_CERTIFICATE, ARCTURUS_CERTIFICATE, SYLVAIN_CERTIFICATE);
  2446.     }
  2447.    
  2448.     @Override
  2449. @@ -83,12 +83,18 @@
  2450.                 }
  2451.                 break;
  2452.             }
  2453. +           case "33907-05a.html":
  2454. +           {
  2455. +               qs.setCond(3);
  2456. +               htmltext = event;
  2457. +               break;
  2458. +           }
  2459.             case "33907-08.html":
  2460.             {
  2461. -               if (hasQuestItems(player, SPORCHA_CERTIFICATE, KRENAHT_CERTIFICATE, SANTIAGO_SERTIFICATE, ARCTURUS_CERTIFICATE) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
  2462. +               if ((hasQuestItems(player, SYLVAIN_CERTIFICATE) || hasQuestItems(player, SPORCHA_CERTIFICATE, KEKROPUS_CERTIFICATE, SANTIAGO_CERTIFICATE, ARCTURUS_CERTIFICATE)) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
  2463.                 {
  2464. -                   giveItems(player, VITALITY_OF_THE_EXALTED, 1);
  2465.                     giveItems(player, DIGNITY_OF_THE_EXALTED, 1);
  2466. +                   addExpAndSp(player, 1178303740714L, 1178303740);
  2467.                     qs.exitQuest(false, true);
  2468.                     htmltext = event;
  2469.                 }
  2470. @@ -112,14 +118,33 @@
  2471.             }
  2472.             case State.STARTED:
  2473.             {
  2474. -               if (hasQuestItems(player, SPORCHA_CERTIFICATE, KRENAHT_CERTIFICATE, SANTIAGO_SERTIFICATE, ARCTURUS_CERTIFICATE) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
  2475. +               switch (qs.getCond())
  2476.                 {
  2477. -                   htmltext = "33907-07.html";
  2478. +                   case 1:
  2479. +                   {
  2480. +                       if (hasQuestItems(player, SPORCHA_CERTIFICATE, KEKROPUS_CERTIFICATE, SANTIAGO_CERTIFICATE, ARCTURUS_CERTIFICATE) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
  2481. +                       {
  2482. +                           htmltext = "33907-07.html";
  2483. +                       }
  2484. +                       else
  2485. +                       {
  2486. +                           htmltext = "33907-06.html";
  2487. +                       }
  2488. +                       break;
  2489. +                   }
  2490. +                   case 3:
  2491. +                   {
  2492. +                       if (hasQuestItems(player, SYLVAIN_CERTIFICATE) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
  2493. +                       {
  2494. +                           htmltext = "33907-07a.html";
  2495. +                       }
  2496. +                       else
  2497. +                       {
  2498. +                           htmltext = "33907-06a.html";
  2499. +                       }
  2500. +                       break;
  2501. +                   }
  2502.                 }
  2503. -               else
  2504. -               {
  2505. -                   htmltext = "33907-06.html";
  2506. -               }
  2507.                 break;
  2508.             }
  2509.             case State.COMPLETED:
  2510. Index: dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/31595-00.html
  2511. ===================================================================
  2512. --- dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/31595-00.html   (nonexistent)
  2513. +++ dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/31595-00.html   (working copy)
  2514. @@ -0,0 +1,3 @@
  2515. +<html><body>Fire Dragon Bride Leona Blackbird:<br>
  2516. +You have to bring me 10.000 <font color="LEVEL">Proof of Qualification</font> to obtain my certificate.
  2517. +</body></html>
  2518. \ No newline at end of file
  2519. Index: dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/31595-01.htm
  2520. ===================================================================
  2521. --- dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/31595-01.htm    (nonexistent)
  2522. +++ dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/31595-01.htm    (working copy)
  2523. @@ -0,0 +1,4 @@
  2524. +<html><body>Fire Dragon Bride Leona Blackbird:<br>
  2525. +Have you brought me 10.000 <font color="LEVEL">Proof of Qualification</font>, if not then go get them, to obtain the certificate.<br>
  2526. +<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10874_AgainstTheNewEnemy 31595-02.htm">"Yes, here they are."</Button>
  2527. +</body></html>
  2528. \ No newline at end of file
  2529. Index: dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/31595-02.htm
  2530. ===================================================================
  2531. --- dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/31595-02.htm    (nonexistent)
  2532. +++ dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/31595-02.htm    (working copy)
  2533. @@ -0,0 +1,6 @@
  2534. +<html><body>Fire Dragon Bride Leona Blackbird:<br>
  2535. +Good! You have brought 10.000 <font color="LEVEL">Proof of Qualification</font>.<br>
  2536. +Now choose your reward:<br>
  2537. +<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10874_AgainstTheNewEnemy 31595-03.htm">"4.500 GIANT TRACKERS Faction Points."</Button>
  2538. +<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10874_AgainstTheNewEnemy 31595-04.htm">"4.500 BLACKBIRD CLAN Faction Points."</Button>
  2539. +</body></html>
  2540. \ No newline at end of file
  2541. Index: dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/31595-03.htm
  2542. ===================================================================
  2543. --- dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/31595-03.htm    (nonexistent)
  2544. +++ dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/31595-03.htm    (working copy)
  2545. @@ -0,0 +1,5 @@
  2546. +<html><body>Fire Dragon Bride Leona Blackbird:<br>
  2547. +You received <font color="LEVEL">4.500 GIANT TRACKERS Faction Points</font>.<br>
  2548. +Now you can get your certificate.<br>
  2549. +<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10874_AgainstTheNewEnemy 31595-05.html">"Obtain certificate."</Button>
  2550. +</body></html>
  2551. \ No newline at end of file
  2552. Index: dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/31595-04.htm
  2553. ===================================================================
  2554. --- dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/31595-04.htm    (nonexistent)
  2555. +++ dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/31595-04.htm    (working copy)
  2556. @@ -0,0 +1,5 @@
  2557. +<html><body>Fire Dragon Bride Leona Blackbird:<br>
  2558. +You received <font color="LEVEL">4.500 BLACKBIRD CLAN Faction Points</font>.<br>
  2559. +Now you can get your certificate.<br>
  2560. +<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10874_AgainstTheNewEnemy 31595-05.htm">"Obtain certificate."</Button>
  2561. +</body></html>
  2562. \ No newline at end of file
  2563. Index: dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/31595-05.htm
  2564. ===================================================================
  2565. --- dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/31595-05.htm    (nonexistent)
  2566. +++ dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/31595-05.htm    (working copy)
  2567. @@ -0,0 +1,5 @@
  2568. +<html><body>Fire Dragon Bride Leona Blackbird:<br>
  2569. +You received your <font color="LEVEL">Faction Points</font>.<br>
  2570. +Now you can get your certificate.<br>
  2571. +<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10874_AgainstTheNewEnemy 31595-06.html">"Obtain certificate."</Button>
  2572. +</body></html>
  2573. \ No newline at end of file
  2574. Index: dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/31595-06.html
  2575. ===================================================================
  2576. --- dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/31595-06.html   (nonexistent)
  2577. +++ dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/31595-06.html   (working copy)
  2578. @@ -0,0 +1,3 @@
  2579. +<html><body>Fire Dragon Bride Leona Blackbird:<br>
  2580. +I knew you could do it. Here's the certificate. I hope you become even stronger.
  2581. +</body></html>
  2582. \ No newline at end of file
  2583. Index: dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/34230-00.html
  2584. ===================================================================
  2585. --- dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/34230-00.html   (nonexistent)
  2586. +++ dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/34230-00.html   (working copy)
  2587. @@ -0,0 +1,4 @@
  2588. +<html><body>Commando Captain Sporcha:<br>
  2589. +You are not ready to be called by me. Come back when you are ready.<br>
  2590. +(The Exalted, Reaching Another Level quest is in progress and level 103+ and Lionel Hunter Mission List - 4 should be in the inventory.)
  2591. +</body></html>
  2592. \ No newline at end of file
  2593. Index: dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/34230-01.htm
  2594. ===================================================================
  2595. --- dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/34230-01.htm    (nonexistent)
  2596. +++ dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/34230-01.htm    (working copy)
  2597. @@ -0,0 +1,6 @@
  2598. +<html><body>Commando Captain Sporcha:<br>
  2599. +I've been planning for a long time! I mean... well, I belive one who wants to lead the world... must pass a very difficult test.<br>
  2600. +If I had a chance to give such test, I'd make an unimaginably difficult test. That's what I thought.<br>
  2601. +Are you listening to me?<br>
  2602. +<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10874_AgainstTheNewEnemy 34230-02.htm">"Go on."</Button>
  2603. +</body></html>
  2604. \ No newline at end of file
  2605. Index: dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/34230-02.htm
  2606. ===================================================================
  2607. --- dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/34230-02.htm    (nonexistent)
  2608. +++ dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/34230-02.htm    (working copy)
  2609. @@ -0,0 +1,4 @@
  2610. +<html><body>Commando Captain Sporcha:<br>
  2611. +Lionel Hunter said that you would lead the world. A leader must have dignity. I ask you to prove it.<br>
  2612. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10874_AgainstTheNewEnemy 34230-03.htm">"Ask what to prove."</Button>
  2613. +</body></html>
  2614. \ No newline at end of file
  2615. Index: dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/34230-03.htm
  2616. ===================================================================
  2617. --- dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/34230-03.htm    (nonexistent)
  2618. +++ dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/34230-03.htm    (working copy)
  2619. @@ -0,0 +1,5 @@
  2620. +<html><body>Commando Captain Sporcha:<br>
  2621. +Then, I have the chance I'd always dreamed of! Hahaha. Oops, I'm sorry. I'm just so happy to have this chance.<br>
  2622. +If anyone wants to take my test, I'll put him through the most terrible time of their lives... If you're not ready, you'd better leave now. Otherwise, you'll die before your time.<br>
  2623. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10874_AgainstTheNewEnemy 34230-04.htm">"I will take the test."</Button>
  2624. +</body></html>
  2625. \ No newline at end of file
  2626. Index: dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/34230-04.htm
  2627. ===================================================================
  2628. --- dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/34230-04.htm    (nonexistent)
  2629. +++ dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/34230-04.htm    (working copy)
  2630. @@ -0,0 +1,7 @@
  2631. +<html><body>Commando Captain Sporcha:<br>
  2632. +Eh? Are you sure? Oh... well, you might be qualified to undertake my mission.<br>
  2633. +Actually, it's not that complicated. You only need to grow strong enough to defeat unknown enemies.<br>
  2634. +How? That's simple.<br>
  2635. +Hunting. Will you accept the mission?<br>
  2636. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10874_AgainstTheNewEnemy 34230-05.html">"Alright."</Button>
  2637. +</body></html>
  2638. \ No newline at end of file
  2639. Index: dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/34230-05.html
  2640. ===================================================================
  2641. --- dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/34230-05.html   (nonexistent)
  2642. +++ dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/34230-05.html   (working copy)
  2643. @@ -0,0 +1,4 @@
  2644. +<html><body>Commando Captain Sporcha:<br>
  2645. +Listen carefully, I won't explain this again. Hunt monsters in <font color="LEVEL">Beleth's Magic Circle, the Desert Quarry, and the upper floor of the Giant's Cave</font> and collect 10.000 <font color="LEVEL">Proof of Qualification</font>. What do you say? It's quite hard, right? Hahahaha!!!<br><br><br>
  2646. +Ah, after completing the mission, go to Leona Blackbird, not to me. She's the one who can give you a certificate.<br>
  2647. +</body></html>
  2648. \ No newline at end of file
  2649. Index: dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/34230-06.html
  2650. ===================================================================
  2651. --- dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/34230-06.html   (nonexistent)
  2652. +++ dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/34230-06.html   (working copy)
  2653. @@ -0,0 +1,4 @@
  2654. +<html><body>Commando Captain Sporcha:<br>
  2655. +Hunt monsters in <font color="LEVEL">Beleth's Magic Circle, the Desert Quarry, and the upper floor of the Giant's Cave</font> and collect 10.000 <font color="LEVEL">Proof of Qualification</font>.<br><br><br>
  2656. +Then go to Leona Blackbird, not to me. She's the one who can give you a certificate.<br>
  2657. +</body></html>
  2658. \ No newline at end of file
  2659. Index: dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/34230-07.html
  2660. ===================================================================
  2661. --- dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/34230-07.html   (nonexistent)
  2662. +++ dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/34230-07.html   (working copy)
  2663. @@ -0,0 +1,3 @@
  2664. +<html><body>Commando Captain Sporcha:<br>
  2665. +You have 10.000 <font color="LEVEL">Proof of Qualification</font>, now go to Leona Blackbird, not to me. She's the one who can give you a certificate.<br>
  2666. +</body></html>
  2667. \ No newline at end of file
  2668. Index: dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/Q10874_AgainstTheNewEnemy.java
  2669. ===================================================================
  2670. --- dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/Q10874_AgainstTheNewEnemy.java  (nonexistent)
  2671. +++ dist/game/data/scripts/quests/Q10874_AgainstTheNewEnemy/Q10874_AgainstTheNewEnemy.java  (working copy)
  2672. @@ -0,0 +1,273 @@
  2673. +/*
  2674. + * This file is part of the L2J Mobius project.
  2675. + *
  2676. + * This program is free software: you can redistribute it and/or modify
  2677. + * it under the terms of the GNU General Public License as published by
  2678. + * the Free Software Foundation, either version 3 of the License, or
  2679. + * (at your option) any later version.
  2680. + *
  2681. + * This program is distributed in the hope that it will be useful,
  2682. + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  2683. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  2684. + * General Public License for more details.
  2685. + *
  2686. + * You should have received a copy of the GNU General Public License
  2687. + * along with this program. If not, see <http://www.gnu.org/licenses/>.
  2688. + */
  2689. +package quests.Q10874_AgainstTheNewEnemy;
  2690. +
  2691. +import org.l2jmobius.Config;
  2692. +import org.l2jmobius.gameserver.enums.Faction;
  2693. +import org.l2jmobius.gameserver.enums.QuestSound;
  2694. +import org.l2jmobius.gameserver.instancemanager.QuestManager;
  2695. +import org.l2jmobius.gameserver.model.actor.Npc;
  2696. +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
  2697. +import org.l2jmobius.gameserver.model.holders.ItemHolder;
  2698. +import org.l2jmobius.gameserver.model.quest.Quest;
  2699. +import org.l2jmobius.gameserver.model.quest.QuestState;
  2700. +import org.l2jmobius.gameserver.model.quest.State;
  2701. +import org.l2jmobius.gameserver.util.Util;
  2702. +
  2703. +import quests.Q10873_ExaltedReachingAnotherLevel.Q10873_ExaltedReachingAnotherLevel;
  2704. +
  2705. +/**
  2706. + * Against the New Enemy (10874)
  2707. + * @URL https://l2wiki.com/Against_the_New_Enemy
  2708. + * @author Mobius
  2709. + */
  2710. +public class Q10874_AgainstTheNewEnemy extends Quest
  2711. +{
  2712. +   // NPC
  2713. +   private static final int CAPTAIN_SPORCHA = 34230;
  2714. +   private static final int LEONA_BLACKBIRD = 31595;
  2715. +   private static final int[] MONSTERS =
  2716. +   {
  2717. +       // Desert Quarry
  2718. +       23811, // Cantera Tanya
  2719. +       23812, // Cantera Deathmoz
  2720. +       23813, // Cantera Floxis
  2721. +       23814, // Cantera Belika
  2722. +       23815, // Cantera Bridget
  2723. +      
  2724. +       // Beleth's Magic Circle
  2725. +       23354, // Decay Hannibal
  2726. +       23355, // Armor Beast
  2727. +       23356, // Klein Soldier
  2728. +       23357, // Disorder Warrior
  2729. +       23360, // Bizuard
  2730. +       23361, // Mutated Fly
  2731. +      
  2732. +       23367, // Armor Beast
  2733. +       23368, // Klein Soldier
  2734. +       23369, // Disorder Warrior
  2735. +       23372, // Bizuard
  2736. +       23373, // Mutated Fly
  2737. +      
  2738. +       // Giant's Cave Upper Floor
  2739. +       23727, // Shaqrima Bathus
  2740. +       23728, // Shaqrima Carcass
  2741. +       23729, // Shaqrima Kshana
  2742. +       23733, // Lesser Giant Warrior
  2743. +       23734, // Lesser Giant Wizard
  2744. +       23735, // Captive Familiar Spirit
  2745. +       23736, // Captive Hell Demon
  2746. +       23737, // Captive Succubus
  2747. +       23738, // Captive Phantom
  2748. +       23742, // Naia Bathus, Demons Foreman
  2749. +       23743, // Naia Karkus, Demons Foreman
  2750. +       23744, // Naia Kshana, Demons Foreman
  2751. +       23746, // Recovering Lesser Giant Warrior
  2752. +       23747, // Recovering Lesser Giant Wizard
  2753. +       23749, // Root of the Lesser Giant
  2754. +       23754, // Essence of the Lesser Giant
  2755. +   };
  2756. +   // Items
  2757. +   private static final int PROOF_OF_QUALIFICATION = 47839;
  2758. +   private static final ItemHolder LIONEL_HUNTERS_LIST_PART_4 = new ItemHolder(47829, 1);
  2759. +   // Rewards
  2760. +   private static final int LEONA_CERTIFICATE = 47830;
  2761. +   private static final int FP = 4500; // Faction points
  2762. +   // Misc
  2763. +   private static final int MIN_LEVEL = 103;
  2764. +   private static final int PROOF_OF_QUALIFICATION_NEEDED = 10000;
  2765. +  
  2766. +   public Q10874_AgainstTheNewEnemy()
  2767. +   {
  2768. +       super(10874);
  2769. +       addStartNpc(CAPTAIN_SPORCHA);
  2770. +       addTalkId(CAPTAIN_SPORCHA, LEONA_BLACKBIRD);
  2771. +       addKillId(MONSTERS);
  2772. +       addCondMinLevel(MIN_LEVEL, "34230-00.html");
  2773. +       addCondStartedQuest(Q10873_ExaltedReachingAnotherLevel.class.getSimpleName(), "34230-00.html");
  2774. +       registerQuestItems(PROOF_OF_QUALIFICATION);
  2775. +   }
  2776. +  
  2777. +   @Override
  2778. +   public String onAdvEvent(String event, Npc npc, PlayerInstance player)
  2779. +   {
  2780. +       String htmltext = null;
  2781. +       final QuestState qs = getQuestState(player, false);
  2782. +       if (qs == null)
  2783. +       {
  2784. +           return htmltext;
  2785. +       }
  2786. +       switch (event)
  2787. +       {
  2788. +           case "31595-02.htm":
  2789. +           case "31595-05.htm":
  2790. +           case "34230-02.htm":
  2791. +           case "34230-03.htm":
  2792. +           case "34230-04.htm":
  2793. +           {
  2794. +               htmltext = event;
  2795. +               break;
  2796. +           }
  2797. +           case "34230-05.html":
  2798. +           {
  2799. +               if (hasItem(player, LIONEL_HUNTERS_LIST_PART_4))
  2800. +               {
  2801. +                   qs.startQuest();
  2802. +                   htmltext = event;
  2803. +               }
  2804. +               break;
  2805. +           }
  2806. +           case "31595-03.htm":
  2807. +           {
  2808. +               if (qs.isCond(2) && (getQuestItemsCount(player, PROOF_OF_QUALIFICATION) >= PROOF_OF_QUALIFICATION_NEEDED))
  2809. +               {
  2810. +                   addFactionPoints(player, Faction.GIANT_TRACKERS, FP); // add FP points to GIANT_TRACKERS Faction
  2811. +                   playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  2812. +                   qs.setCond(3, true);
  2813. +                   htmltext = event;
  2814. +               }
  2815. +               break;
  2816. +           }
  2817. +           case "31595-04.htm":
  2818. +           {
  2819. +               if (qs.isCond(2) && (getQuestItemsCount(player, PROOF_OF_QUALIFICATION) >= PROOF_OF_QUALIFICATION_NEEDED))
  2820. +               {
  2821. +                   addFactionPoints(player, Faction.BLACKBIRD_CLAN, FP); // add FP points to BLACKBIRD_CLAN Faction
  2822. +                   playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  2823. +                   qs.setCond(3, true);
  2824. +                   htmltext = event;
  2825. +               }
  2826. +               break;
  2827. +           }
  2828. +           case "31595-06.html":
  2829. +           {
  2830. +               if (qs.isCond(3) && (getQuestItemsCount(player, PROOF_OF_QUALIFICATION) >= PROOF_OF_QUALIFICATION_NEEDED))
  2831. +               {
  2832. +                   takeItems(player, PROOF_OF_QUALIFICATION, PROOF_OF_QUALIFICATION_NEEDED);
  2833. +                   giveItems(player, LEONA_CERTIFICATE, 1);
  2834. +                   qs.exitQuest(false, true);
  2835. +                  
  2836. +                   final Quest mainQ = QuestManager.getInstance().getQuest(Q10873_ExaltedReachingAnotherLevel.class.getSimpleName());
  2837. +                   if (mainQ != null)
  2838. +                   {
  2839. +                       mainQ.notifyEvent("SUBQUEST_FINISHED_NOTIFY", npc, player);
  2840. +                   }
  2841. +                   htmltext = event;
  2842. +               }
  2843. +               else
  2844. +               {
  2845. +                   htmltext = getNoQuestLevelRewardMsg(player);
  2846. +               }
  2847. +               break;
  2848. +           }
  2849. +       }
  2850. +       return htmltext;
  2851. +   }
  2852. +  
  2853. +   @Override
  2854. +   public String onTalk(Npc npc, PlayerInstance player)
  2855. +   {
  2856. +       String htmltext = getNoQuestMsg(player);
  2857. +       final QuestState qs = getQuestState(player, true);
  2858. +       switch (qs.getState())
  2859. +       {
  2860. +           case State.CREATED:
  2861. +           {
  2862. +               if (hasItem(player, LIONEL_HUNTERS_LIST_PART_4))
  2863. +               {
  2864. +                   htmltext = "34230-01.htm";
  2865. +               }
  2866. +               else
  2867. +               {
  2868. +                   htmltext = "34230-00.htm";
  2869. +               }
  2870. +               break;
  2871. +           }
  2872. +           case State.STARTED:
  2873. +           {
  2874. +               switch (npc.getId())
  2875. +               {
  2876. +                   case CAPTAIN_SPORCHA:
  2877. +                   {
  2878. +                       if (qs.isCond(1))
  2879. +                       {
  2880. +                           if (getQuestItemsCount(player, PROOF_OF_QUALIFICATION) >= PROOF_OF_QUALIFICATION_NEEDED)
  2881. +                           {
  2882. +                               htmltext = "34230-07.html";
  2883. +                           }
  2884. +                           else
  2885. +                           {
  2886. +                               htmltext = "34230-06.html";
  2887. +                           }
  2888. +                       }
  2889. +                       break;
  2890. +                   }
  2891. +                   case LEONA_BLACKBIRD:
  2892. +                   {
  2893. +                       if (qs.isCond(2))
  2894. +                       {
  2895. +                           htmltext = "31595-01.htm";
  2896. +                       }
  2897. +                       else if (qs.isCond(3))
  2898. +                       {
  2899. +                           htmltext = "31595-05.htm";
  2900. +                       }
  2901. +                       else
  2902. +                       {
  2903. +                           htmltext = "31595-00.html";
  2904. +                       }
  2905. +                   }
  2906. +                       break;
  2907. +               }
  2908. +           }
  2909. +               break;
  2910. +          
  2911. +           case State.COMPLETED:
  2912. +           {
  2913. +               htmltext = getAlreadyCompletedMsg(player);
  2914. +               break;
  2915. +           }
  2916. +       }
  2917. +       return htmltext;
  2918. +      
  2919. +   }
  2920. +  
  2921. +   @Override
  2922. +   public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon)
  2923. +   {
  2924. +       final QuestState qs = getQuestState(player, false);
  2925. +       if ((qs != null) && qs.isCond(1) && Util.checkIfInRange(Config.ALT_PARTY_RANGE, npc, player, false))
  2926. +       {
  2927. +           if ((getQuestItemsCount(player, PROOF_OF_QUALIFICATION) < PROOF_OF_QUALIFICATION_NEEDED) && (getRandom(100) < 90))
  2928. +           {
  2929. +               giveItems(player, PROOF_OF_QUALIFICATION, 1);
  2930. +               playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  2931. +           }
  2932. +           if ((getQuestItemsCount(player, PROOF_OF_QUALIFICATION) >= PROOF_OF_QUALIFICATION_NEEDED) && (player.getLevel() >= MIN_LEVEL))
  2933. +           {
  2934. +               qs.setCond(2, true);
  2935. +           }
  2936. +       }
  2937. +   }
  2938. +  
  2939. +   @Override
  2940. +   public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
  2941. +   {
  2942. +       executeForEachPlayer(killer, npc, isSummon, true, false);
  2943. +       return super.onKill(npc, killer, isSummon);
  2944. +   }
  2945. +}
  2946. Index: dist/game/data/scripts/quests/Q10875_ForReputation/34222-00.html
  2947. ===================================================================
  2948. --- dist/game/data/scripts/quests/Q10875_ForReputation/34222-00.html    (nonexistent)
  2949. +++ dist/game/data/scripts/quests/Q10875_ForReputation/34222-00.html    (working copy)
  2950. @@ -0,0 +1,4 @@
  2951. +<html><body>Hierarch Kekropus:<br>
  2952. +I don't think you are done yet.<br>
  2953. +Bring me the <font color="LEVEL">Blackbird Clan Certificate</font> and the <font color="LEVEL">Giant Trackers Certificate</font>.<br>
  2954. +</body></html>
  2955. \ No newline at end of file
  2956. Index: dist/game/data/scripts/quests/Q10875_ForReputation/34222-01.htm
  2957. ===================================================================
  2958. --- dist/game/data/scripts/quests/Q10875_ForReputation/34222-01.htm (nonexistent)
  2959. +++ dist/game/data/scripts/quests/Q10875_ForReputation/34222-01.htm (working copy)
  2960. @@ -0,0 +1,4 @@
  2961. +<html><body>Hierarch Kekropus:<br>
  2962. +Did you bring me <font color="LEVEL">Blackbird Clan Certificate</font> and <font color="LEVEL">Giant Trackers Certificate</font> requested by Krenaht?<br>
  2963. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10875_ForReputation 34222-02.html">"Yes, here they are."</Button>
  2964. +</body></html>
  2965. \ No newline at end of file
  2966. Index: dist/game/data/scripts/quests/Q10875_ForReputation/34222-02.html
  2967. ===================================================================
  2968. --- dist/game/data/scripts/quests/Q10875_ForReputation/34222-02.html    (nonexistent)
  2969. +++ dist/game/data/scripts/quests/Q10875_ForReputation/34222-02.html    (working copy)
  2970. @@ -0,0 +1,3 @@
  2971. +<html><body>Hierarch Kekropus:<br>
  2972. +I knew you could do it. Here's the certificate. I hope you become even stronger.
  2973. +</body></html>
  2974. \ No newline at end of file
  2975. Index: dist/game/data/scripts/quests/Q10875_ForReputation/34237-00.html
  2976. ===================================================================
  2977. --- dist/game/data/scripts/quests/Q10875_ForReputation/34237-00.html    (nonexistent)
  2978. +++ dist/game/data/scripts/quests/Q10875_ForReputation/34237-00.html    (working copy)
  2979. @@ -0,0 +1,4 @@
  2980. +<html><body>Giant Tracker Leader Krenaht:<br>
  2981. +You are not ready to be called by me. Come back when you are ready.<br>
  2982. +(The Exalted, Reaching Another Level quest is in progress and level 103+ and Lionel Hunter Mission List - 4 should be in the inventory.)
  2983. +</body></html>
  2984. \ No newline at end of file
  2985. Index: dist/game/data/scripts/quests/Q10875_ForReputation/34237-01.htm
  2986. ===================================================================
  2987. --- dist/game/data/scripts/quests/Q10875_ForReputation/34237-01.htm (nonexistent)
  2988. +++ dist/game/data/scripts/quests/Q10875_ForReputation/34237-01.htm (working copy)
  2989. @@ -0,0 +1,5 @@
  2990. +<html><body>Giant Tracker Leader Krenaht:<br>
  2991. +Did Lionel Hunter send you? You look special.<br>
  2992. +Yes, the right person for my mission.<br>
  2993. +<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10875_ForReputation 34237-02.htm">"Go on"</Button>
  2994. +</body></html>
  2995. \ No newline at end of file
  2996. Index: dist/game/data/scripts/quests/Q10875_ForReputation/34237-02.htm
  2997. ===================================================================
  2998. --- dist/game/data/scripts/quests/Q10875_ForReputation/34237-02.htm (nonexistent)
  2999. +++ dist/game/data/scripts/quests/Q10875_ForReputation/34237-02.htm (working copy)
  3000. @@ -0,0 +1,5 @@
  3001. +<html><body>Giant Tracker Leader Krenaht:<br>
  3002. +Well, you need to gain fame to use that power correctly... but it's not easy to gain fame, either good or bad...<br>
  3003. +Nevertheless, if you gain fame, you will be able to exercise influence, earning a ground to use your power.<br>
  3004. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10875_ForReputation 34237-03.htm">"Ask about the mission"</Button>
  3005. +</body></html>
  3006. \ No newline at end of file
  3007. Index: dist/game/data/scripts/quests/Q10875_ForReputation/34237-03.htm
  3008. ===================================================================
  3009. --- dist/game/data/scripts/quests/Q10875_ForReputation/34237-03.htm (nonexistent)
  3010. +++ dist/game/data/scripts/quests/Q10875_ForReputation/34237-03.htm (working copy)
  3011. @@ -0,0 +1,5 @@
  3012. +<html><body>Giant Tracker Leader Krenaht:<br>
  3013. +As far as I know, after the title Exalted was created, many new factions have emerged. They might influence one another, or it might be just a coincidence.<br>
  3014. +In either case, what I want from you is to build a relationship with them and earn their trust. Can you do that?
  3015. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10875_ForReputation 34237-04.html">"Alright"</Button>
  3016. +</body></html>
  3017. \ No newline at end of file
  3018. Index: dist/game/data/scripts/quests/Q10875_ForReputation/34237-04.html
  3019. ===================================================================
  3020. --- dist/game/data/scripts/quests/Q10875_ForReputation/34237-04.html    (nonexistent)
  3021. +++ dist/game/data/scripts/quests/Q10875_ForReputation/34237-04.html    (working copy)
  3022. @@ -0,0 +1,4 @@
  3023. +<html><body>Giant Tracker Leader Krenaht:<br>
  3024. +Okay. Your mission is to help the <font color="LEVEL">Blackbird Clan</font> and the <font color="LEVEL">Giant Trackers</font> and earn an amity level of 6 with them. You must receive certificates to prove your achievement.<br>
  3025. +Receive the <font color="LEVEL">Blackbird Clan Certificate</font> from Leona Blackbird and the <font color="LEVEL">Giant Trackers Certificate</font> from Kekropus. To complete the mission, report to Kekropus.<br>
  3026. +</body></html>
  3027. \ No newline at end of file
  3028. Index: dist/game/data/scripts/quests/Q10875_ForReputation/34237-05.html
  3029. ===================================================================
  3030. --- dist/game/data/scripts/quests/Q10875_ForReputation/34237-05.html    (nonexistent)
  3031. +++ dist/game/data/scripts/quests/Q10875_ForReputation/34237-05.html    (working copy)
  3032. @@ -0,0 +1,4 @@
  3033. +<html><body>Giant Tracker Leader Krenaht:<br>
  3034. +I don't think you are done yet.<br>
  3035. +Receive the <font color="LEVEL">Blackbird Clan Certificate</font> from Leona Blackbird and the <font color="LEVEL">Giant Trackers Certificate</font> from Kekropus. To complete the mission, report to Kekropus.<br>
  3036. +</body></html>
  3037. \ No newline at end of file
  3038. Index: dist/game/data/scripts/quests/Q10875_ForReputation/34237-06.htm
  3039. ===================================================================
  3040. --- dist/game/data/scripts/quests/Q10875_ForReputation/34237-06.htm (nonexistent)
  3041. +++ dist/game/data/scripts/quests/Q10875_ForReputation/34237-06.htm (working copy)
  3042. @@ -0,0 +1,4 @@
  3043. +<html><body>Giant Tracker Leader Krenaht:<br>
  3044. +You did it! How was it? Not that bad, right?<br>
  3045. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10875_ForReputation 34237-07.html">"It was okay."</Button>
  3046. +</body></html>
  3047. \ No newline at end of file
  3048. Index: dist/game/data/scripts/quests/Q10875_ForReputation/34237-07.html
  3049. ===================================================================
  3050. --- dist/game/data/scripts/quests/Q10875_ForReputation/34237-07.html    (nonexistent)
  3051. +++ dist/game/data/scripts/quests/Q10875_ForReputation/34237-07.html    (working copy)
  3052. @@ -0,0 +1,4 @@
  3053. +<html><body>Giant Tracker Leader Krenaht:<br>
  3054. +You've proven me right. I knew you could do it.<br>
  3055. +Go see Hierarch Kekropus in Giran Town now.
  3056. +</body></html>
  3057. \ No newline at end of file
  3058. Index: dist/game/data/scripts/quests/Q10875_ForReputation/Q10875_ForReputation.java
  3059. ===================================================================
  3060. --- dist/game/data/scripts/quests/Q10875_ForReputation/Q10875_ForReputation.java    (nonexistent)
  3061. +++ dist/game/data/scripts/quests/Q10875_ForReputation/Q10875_ForReputation.java    (working copy)
  3062. @@ -0,0 +1,169 @@
  3063. +/*
  3064. + * This file is part of the L2J Mobius project.
  3065. + *
  3066. + * This program is free software: you can redistribute it and/or modify
  3067. + * it under the terms of the GNU General Public License as published by
  3068. + * the Free Software Foundation, either version 3 of the License, or
  3069. + * (at your option) any later version.
  3070. + *
  3071. + * This program is distributed in the hope that it will be useful,
  3072. + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  3073. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  3074. + * General Public License for more details.
  3075. + *
  3076. + * You should have received a copy of the GNU General Public License
  3077. + * along with this program. If not, see <http://www.gnu.org/licenses/>.
  3078. + */
  3079. +package quests.Q10875_ForReputation;
  3080. +
  3081. +import org.l2jmobius.gameserver.model.actor.Npc;
  3082. +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
  3083. +import org.l2jmobius.gameserver.model.quest.Quest;
  3084. +import org.l2jmobius.gameserver.model.quest.QuestState;
  3085. +import org.l2jmobius.gameserver.model.quest.State;
  3086. +
  3087. +import quests.Q10873_ExaltedReachingAnotherLevel.Q10873_ExaltedReachingAnotherLevel;
  3088. +
  3089. +/**
  3090. + * For Reputation (10875)
  3091. + * @URL https://l2wiki.com/For_Reputation https://www.youtube.com/watch?v=7i-M4U4qxaA
  3092. + * @author Mobius
  3093. + */
  3094. +public class Q10875_ForReputation extends Quest
  3095. +{
  3096. +   // NPC
  3097. +   private static final int KRENAHT = 34237;
  3098. +   private static final int KEKROPUS = 34222;
  3099. +   // Items
  3100. +   private static final int BLACKBIRD_CLAN_CERTIFICATION = 47840;
  3101. +   private static final int GIANT_TRACKERS_CERTIFICATION = 47841;
  3102. +   // Rewards
  3103. +   private static final int KEKROPUS_CERTIFICATE = 47831;
  3104. +   private static final int SPELLBOOK_VITALITY_OF_THE_EXALTED = 47831;
  3105. +   // Misc
  3106. +   private static final int MIN_LEVEL = 103;
  3107. +  
  3108. +   public Q10875_ForReputation()
  3109. +   {
  3110. +       super(10875);
  3111. +       addStartNpc(KRENAHT);
  3112. +       addTalkId(KRENAHT, KEKROPUS);
  3113. +       addCondMinLevel(MIN_LEVEL, "34237-00.html");
  3114. +       addCondStartedQuest(Q10873_ExaltedReachingAnotherLevel.class.getSimpleName(), "34237-00.html");
  3115. +   }
  3116. +  
  3117. +   @Override
  3118. +   public String onAdvEvent(String event, Npc npc, PlayerInstance player)
  3119. +   {
  3120. +       String htmltext = null;
  3121. +       final QuestState qs = getQuestState(player, false);
  3122. +       if (qs == null)
  3123. +       {
  3124. +           return htmltext;
  3125. +       }
  3126. +      
  3127. +       switch (event)
  3128. +       {
  3129. +           case "34237-02.htm":
  3130. +           case "34237-03.htm":
  3131. +           {
  3132. +               htmltext = event;
  3133. +               break;
  3134. +           }
  3135. +           case "34237-04.html":
  3136. +           {
  3137. +               qs.startQuest();
  3138. +               htmltext = event;
  3139. +               break;
  3140. +           }
  3141. +           case "34237-07.html":
  3142. +           {
  3143. +               qs.setCond(2);
  3144. +               htmltext = event;
  3145. +               break;
  3146. +           }
  3147. +           case "34222-02.html":
  3148. +           {
  3149. +               if (qs.isCond(2))
  3150. +               {
  3151. +                   if ((player.getLevel() >= MIN_LEVEL))
  3152. +                   {
  3153. +                       if (!hasQuestItems(player, BLACKBIRD_CLAN_CERTIFICATION, GIANT_TRACKERS_CERTIFICATION))
  3154. +                       {
  3155. +                           htmltext = "34222-00.html";
  3156. +                       }
  3157. +                       else
  3158. +                       {
  3159. +                           htmltext = event;
  3160. +                           giveItems(player, KEKROPUS_CERTIFICATE, 1);
  3161. +                           giveItems(player, SPELLBOOK_VITALITY_OF_THE_EXALTED, 1);
  3162. +                           qs.exitQuest(false, true);
  3163. +                       }
  3164. +                   }
  3165. +                   else
  3166. +                   {
  3167. +                       htmltext = getNoQuestLevelRewardMsg(player);
  3168. +                   }
  3169. +               }
  3170. +               break;
  3171. +           }
  3172. +       }
  3173. +       return htmltext;
  3174. +   }
  3175. +  
  3176. +   @Override
  3177. +   public String onTalk(Npc npc, PlayerInstance player)
  3178. +   {
  3179. +       final QuestState qs = getQuestState(player, true);
  3180. +       String htmltext = getNoQuestMsg(player);
  3181. +       switch (qs.getState())
  3182. +       {
  3183. +           case State.CREATED:
  3184. +           {
  3185. +               htmltext = "34237-01.htm";
  3186. +               break;
  3187. +           }
  3188. +           case State.STARTED:
  3189. +           {
  3190. +               switch (npc.getId())
  3191. +               {
  3192. +                   case KRENAHT:
  3193. +                   {
  3194. +                       if (qs.isCond(1) && !hasQuestItems(player, BLACKBIRD_CLAN_CERTIFICATION, GIANT_TRACKERS_CERTIFICATION))
  3195. +                       {
  3196. +                           htmltext = "34237-05.html";
  3197. +                       }
  3198. +                       else if (qs.isCond(2))
  3199. +                       {
  3200. +                           htmltext = "34237-07.htm";
  3201. +                       }
  3202. +                       else
  3203. +                       {
  3204. +                           htmltext = "34237-06.htm";
  3205. +                       }
  3206. +                       break;
  3207. +                   }
  3208. +                   case KEKROPUS:
  3209. +                   {
  3210. +                       if (qs.isCond(2))
  3211. +                       {
  3212. +                           htmltext = "34222-01.htm";
  3213. +                       }
  3214. +                       else
  3215. +                       {
  3216. +                           htmltext = "34222-00.html";
  3217. +                       }
  3218. +                       break;
  3219. +                   }
  3220. +               }
  3221. +               break;
  3222. +           }
  3223. +           case State.COMPLETED:
  3224. +           {
  3225. +               htmltext = getAlreadyCompletedMsg(player);
  3226. +               break;
  3227. +           }
  3228. +       }
  3229. +       return htmltext;
  3230. +   }
  3231. +}
  3232. Index: dist/game/data/scripts/quests/Q10875_ForReputation/34222-00.html
  3233. ===================================================================
  3234. --- dist/game/data/scripts/quests/Q10875_ForReputation/34222-00.html    (nonexistent)
  3235. +++ dist/game/data/scripts/quests/Q10875_ForReputation/34222-00.html    (working copy)
  3236. @@ -0,0 +1,4 @@
  3237. +<html><body>Hierarch Kekropus:<br>
  3238. +I don't think you are done yet.<br>
  3239. +Bring me the <font color="LEVEL">Blackbird Clan Certificate</font> and the <font color="LEVEL">Giant Trackers Certificate</font>.<br>
  3240. +</body></html>
  3241. \ No newline at end of file
  3242. Index: dist/game/data/scripts/quests/Q10875_ForReputation/34222-01.htm
  3243. ===================================================================
  3244. --- dist/game/data/scripts/quests/Q10875_ForReputation/34222-01.htm (nonexistent)
  3245. +++ dist/game/data/scripts/quests/Q10875_ForReputation/34222-01.htm (working copy)
  3246. @@ -0,0 +1,4 @@
  3247. +<html><body>Hierarch Kekropus:<br>
  3248. +Did you bring me <font color="LEVEL">Blackbird Clan Certificate</font> and <font color="LEVEL">Giant Trackers Certificate</font> requested by Krenaht?<br>
  3249. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10875_ForReputation 34222-02.html">"Yes, here they are."</Button>
  3250. +</body></html>
  3251. \ No newline at end of file
  3252. Index: dist/game/data/scripts/quests/Q10875_ForReputation/34222-02.html
  3253. ===================================================================
  3254. --- dist/game/data/scripts/quests/Q10875_ForReputation/34222-02.html    (nonexistent)
  3255. +++ dist/game/data/scripts/quests/Q10875_ForReputation/34222-02.html    (working copy)
  3256. @@ -0,0 +1,3 @@
  3257. +<html><body>Hierarch Kekropus:<br>
  3258. +I knew you could do it. Here's the certificate. I hope you become even stronger.
  3259. +</body></html>
  3260. \ No newline at end of file
  3261. Index: dist/game/data/scripts/quests/Q10875_ForReputation/34237-00.html
  3262. ===================================================================
  3263. --- dist/game/data/scripts/quests/Q10875_ForReputation/34237-00.html    (nonexistent)
  3264. +++ dist/game/data/scripts/quests/Q10875_ForReputation/34237-00.html    (working copy)
  3265. @@ -0,0 +1,4 @@
  3266. +<html><body>Giant Tracker Leader Krenaht:<br>
  3267. +You are not ready to be called by me. Come back when you are ready.<br>
  3268. +(The Exalted, Reaching Another Level quest is in progress and level 103+ and Lionel Hunter Mission List - 4 should be in the inventory.)
  3269. +</body></html>
  3270. \ No newline at end of file
  3271. Index: dist/game/data/scripts/quests/Q10875_ForReputation/34237-01.htm
  3272. ===================================================================
  3273. --- dist/game/data/scripts/quests/Q10875_ForReputation/34237-01.htm (nonexistent)
  3274. +++ dist/game/data/scripts/quests/Q10875_ForReputation/34237-01.htm (working copy)
  3275. @@ -0,0 +1,5 @@
  3276. +<html><body>Giant Tracker Leader Krenaht:<br>
  3277. +Did Lionel Hunter send you? You look special.<br>
  3278. +Yes, the right person for my mission.<br>
  3279. +<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10875_ForReputation 34237-02.htm">"Go on"</Button>
  3280. +</body></html>
  3281. \ No newline at end of file
  3282. Index: dist/game/data/scripts/quests/Q10875_ForReputation/34237-02.htm
  3283. ===================================================================
  3284. --- dist/game/data/scripts/quests/Q10875_ForReputation/34237-02.htm (nonexistent)
  3285. +++ dist/game/data/scripts/quests/Q10875_ForReputation/34237-02.htm (working copy)
  3286. @@ -0,0 +1,5 @@
  3287. +<html><body>Giant Tracker Leader Krenaht:<br>
  3288. +Well, you need to gain fame to use that power correctly... but it's not easy to gain fame, either good or bad...<br>
  3289. +Nevertheless, if you gain fame, you will be able to exercise influence, earning a ground to use your power.<br>
  3290. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10875_ForReputation 34237-03.htm">"Ask about the mission"</Button>
  3291. +</body></html>
  3292. \ No newline at end of file
  3293. Index: dist/game/data/scripts/quests/Q10875_ForReputation/34237-03.htm
  3294. ===================================================================
  3295. --- dist/game/data/scripts/quests/Q10875_ForReputation/34237-03.htm (nonexistent)
  3296. +++ dist/game/data/scripts/quests/Q10875_ForReputation/34237-03.htm (working copy)
  3297. @@ -0,0 +1,5 @@
  3298. +<html><body>Giant Tracker Leader Krenaht:<br>
  3299. +As far as I know, after the title Exalted was created, many new factions have emerged. They might influence one another, or it might be just a coincidence.<br>
  3300. +In either case, what I want from you is to build a relationship with them and earn their trust. Can you do that?
  3301. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10875_ForReputation 34237-04.html">"Alright"</Button>
  3302. +</body></html>
  3303. \ No newline at end of file
  3304. Index: dist/game/data/scripts/quests/Q10875_ForReputation/34237-04.html
  3305. ===================================================================
  3306. --- dist/game/data/scripts/quests/Q10875_ForReputation/34237-04.html    (nonexistent)
  3307. +++ dist/game/data/scripts/quests/Q10875_ForReputation/34237-04.html    (working copy)
  3308. @@ -0,0 +1,4 @@
  3309. +<html><body>Giant Tracker Leader Krenaht:<br>
  3310. +Okay. Your mission is to help the <font color="LEVEL">Blackbird Clan</font> and the <font color="LEVEL">Giant Trackers</font> and earn an amity level of 6 with them. You must receive certificates to prove your achievement.<br>
  3311. +Receive the <font color="LEVEL">Blackbird Clan Certificate</font> from Leona Blackbird and the <font color="LEVEL">Giant Trackers Certificate</font> from Kekropus. To complete the mission, report to Kekropus.<br>
  3312. +</body></html>
  3313. \ No newline at end of file
  3314. Index: dist/game/data/scripts/quests/Q10875_ForReputation/34237-05.html
  3315. ===================================================================
  3316. --- dist/game/data/scripts/quests/Q10875_ForReputation/34237-05.html    (nonexistent)
  3317. +++ dist/game/data/scripts/quests/Q10875_ForReputation/34237-05.html    (working copy)
  3318. @@ -0,0 +1,4 @@
  3319. +<html><body>Giant Tracker Leader Krenaht:<br>
  3320. +I don't think you are done yet.<br>
  3321. +Receive the <font color="LEVEL">Blackbird Clan Certificate</font> from Leona Blackbird and the <font color="LEVEL">Giant Trackers Certificate</font> from Kekropus. To complete the mission, report to Kekropus.<br>
  3322. +</body></html>
  3323. \ No newline at end of file
  3324. Index: dist/game/data/scripts/quests/Q10875_ForReputation/34237-06.htm
  3325. ===================================================================
  3326. --- dist/game/data/scripts/quests/Q10875_ForReputation/34237-06.htm (nonexistent)
  3327. +++ dist/game/data/scripts/quests/Q10875_ForReputation/34237-06.htm (working copy)
  3328. @@ -0,0 +1,4 @@
  3329. +<html><body>Giant Tracker Leader Krenaht:<br>
  3330. +You did it! How was it? Not that bad, right?<br>
  3331. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10875_ForReputation 34237-07.html">"It was okay."</Button>
  3332. +</body></html>
  3333. \ No newline at end of file
  3334. Index: dist/game/data/scripts/quests/Q10875_ForReputation/34237-07.html
  3335. ===================================================================
  3336. --- dist/game/data/scripts/quests/Q10875_ForReputation/34237-07.html    (nonexistent)
  3337. +++ dist/game/data/scripts/quests/Q10875_ForReputation/34237-07.html    (working copy)
  3338. @@ -0,0 +1,4 @@
  3339. +<html><body>Giant Tracker Leader Krenaht:<br>
  3340. +You've proven me right. I knew you could do it.<br>
  3341. +Go see Hierarch Kekropus in Giran Town now.
  3342. +</body></html>
  3343. \ No newline at end of file
  3344. Index: dist/game/data/scripts/quests/Q10875_ForReputation/Q10875_ForReputation.java
  3345. ===================================================================
  3346. --- dist/game/data/scripts/quests/Q10875_ForReputation/Q10875_ForReputation.java    (nonexistent)
  3347. +++ dist/game/data/scripts/quests/Q10875_ForReputation/Q10875_ForReputation.java    (working copy)
  3348. @@ -0,0 +1,169 @@
  3349. +/*
  3350. + * This file is part of the L2J Mobius project.
  3351. + *
  3352. + * This program is free software: you can redistribute it and/or modify
  3353. + * it under the terms of the GNU General Public License as published by
  3354. + * the Free Software Foundation, either version 3 of the License, or
  3355. + * (at your option) any later version.
  3356. + *
  3357. + * This program is distributed in the hope that it will be useful,
  3358. + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  3359. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  3360. + * General Public License for more details.
  3361. + *
  3362. + * You should have received a copy of the GNU General Public License
  3363. + * along with this program. If not, see <http://www.gnu.org/licenses/>.
  3364. + */
  3365. +package quests.Q10875_ForReputation;
  3366. +
  3367. +import org.l2jmobius.gameserver.model.actor.Npc;
  3368. +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
  3369. +import org.l2jmobius.gameserver.model.quest.Quest;
  3370. +import org.l2jmobius.gameserver.model.quest.QuestState;
  3371. +import org.l2jmobius.gameserver.model.quest.State;
  3372. +
  3373. +import quests.Q10873_ExaltedReachingAnotherLevel.Q10873_ExaltedReachingAnotherLevel;
  3374. +
  3375. +/**
  3376. + * For Reputation (10875)
  3377. + * @URL https://l2wiki.com/For_Reputation https://www.youtube.com/watch?v=7i-M4U4qxaA
  3378. + * @author Mobius
  3379. + */
  3380. +public class Q10875_ForReputation extends Quest
  3381. +{
  3382. +   // NPC
  3383. +   private static final int KRENAHT = 34237;
  3384. +   private static final int KEKROPUS = 34222;
  3385. +   // Items
  3386. +   private static final int BLACKBIRD_CLAN_CERTIFICATION = 47840;
  3387. +   private static final int GIANT_TRACKERS_CERTIFICATION = 47841;
  3388. +   // Rewards
  3389. +   private static final int KEKROPUS_CERTIFICATE = 47831;
  3390. +   private static final int SPELLBOOK_VITALITY_OF_THE_EXALTED = 47831;
  3391. +   // Misc
  3392. +   private static final int MIN_LEVEL = 103;
  3393. +  
  3394. +   public Q10875_ForReputation()
  3395. +   {
  3396. +       super(10875);
  3397. +       addStartNpc(KRENAHT);
  3398. +       addTalkId(KRENAHT, KEKROPUS);
  3399. +       addCondMinLevel(MIN_LEVEL, "34237-00.html");
  3400. +       addCondStartedQuest(Q10873_ExaltedReachingAnotherLevel.class.getSimpleName(), "34237-00.html");
  3401. +   }
  3402. +  
  3403. +   @Override
  3404. +   public String onAdvEvent(String event, Npc npc, PlayerInstance player)
  3405. +   {
  3406. +       String htmltext = null;
  3407. +       final QuestState qs = getQuestState(player, false);
  3408. +       if (qs == null)
  3409. +       {
  3410. +           return htmltext;
  3411. +       }
  3412. +      
  3413. +       switch (event)
  3414. +       {
  3415. +           case "34237-02.htm":
  3416. +           case "34237-03.htm":
  3417. +           {
  3418. +               htmltext = event;
  3419. +               break;
  3420. +           }
  3421. +           case "34237-04.html":
  3422. +           {
  3423. +               qs.startQuest();
  3424. +               htmltext = event;
  3425. +               break;
  3426. +           }
  3427. +           case "34237-07.html":
  3428. +           {
  3429. +               qs.setCond(2);
  3430. +               htmltext = event;
  3431. +               break;
  3432. +           }
  3433. +           case "34222-02.html":
  3434. +           {
  3435. +               if (qs.isCond(2))
  3436. +               {
  3437. +                   if ((player.getLevel() >= MIN_LEVEL))
  3438. +                   {
  3439. +                       if (!hasQuestItems(player, BLACKBIRD_CLAN_CERTIFICATION, GIANT_TRACKERS_CERTIFICATION))
  3440. +                       {
  3441. +                           htmltext = "34222-00.html";
  3442. +                       }
  3443. +                       else
  3444. +                       {
  3445. +                           htmltext = event;
  3446. +                           giveItems(player, KEKROPUS_CERTIFICATE, 1);
  3447. +                           giveItems(player, SPELLBOOK_VITALITY_OF_THE_EXALTED, 1);
  3448. +                           qs.exitQuest(false, true);
  3449. +                       }
  3450. +                   }
  3451. +                   else
  3452. +                   {
  3453. +                       htmltext = getNoQuestLevelRewardMsg(player);
  3454. +                   }
  3455. +               }
  3456. +               break;
  3457. +           }
  3458. +       }
  3459. +       return htmltext;
  3460. +   }
  3461. +  
  3462. +   @Override
  3463. +   public String onTalk(Npc npc, PlayerInstance player)
  3464. +   {
  3465. +       final QuestState qs = getQuestState(player, true);
  3466. +       String htmltext = getNoQuestMsg(player);
  3467. +       switch (qs.getState())
  3468. +       {
  3469. +           case State.CREATED:
  3470. +           {
  3471. +               htmltext = "34237-01.htm";
  3472. +               break;
  3473. +           }
  3474. +           case State.STARTED:
  3475. +           {
  3476. +               switch (npc.getId())
  3477. +               {
  3478. +                   case KRENAHT:
  3479. +                   {
  3480. +                       if (qs.isCond(1) && !hasQuestItems(player, BLACKBIRD_CLAN_CERTIFICATION, GIANT_TRACKERS_CERTIFICATION))
  3481. +                       {
  3482. +                           htmltext = "34237-05.html";
  3483. +                       }
  3484. +                       else if (qs.isCond(2))
  3485. +                       {
  3486. +                           htmltext = "34237-07.htm";
  3487. +                       }
  3488. +                       else
  3489. +                       {
  3490. +                           htmltext = "34237-06.htm";
  3491. +                       }
  3492. +                       break;
  3493. +                   }
  3494. +                   case KEKROPUS:
  3495. +                   {
  3496. +                       if (qs.isCond(2))
  3497. +                       {
  3498. +                           htmltext = "34222-01.htm";
  3499. +                       }
  3500. +                       else
  3501. +                       {
  3502. +                           htmltext = "34222-00.html";
  3503. +                       }
  3504. +                       break;
  3505. +                   }
  3506. +               }
  3507. +               break;
  3508. +           }
  3509. +           case State.COMPLETED:
  3510. +           {
  3511. +               htmltext = getAlreadyCompletedMsg(player);
  3512. +               break;
  3513. +           }
  3514. +       }
  3515. +       return htmltext;
  3516. +   }
  3517. +}
  3518. Index: dist/game/data/scripts/quests/Q10876_LeadersGrace/34138-00.htm
  3519. ===================================================================
  3520. --- dist/game/data/scripts/quests/Q10876_LeadersGrace/34138-00.htm  (revision 7687)
  3521. +++ dist/game/data/scripts/quests/Q10876_LeadersGrace/34138-00.htm  (working copy)
  3522. @@ -1,4 +1,4 @@
  3523. -<html><body>Santiago:<br>
  3524. +<html><body>Fishing Guild Leader Santiago:<br>
  3525.  You are not ready to be called by me. Come back when you are ready.<br>
  3526.  (The Exalted, Reaching Another Level quest is is progress and level 103+ and Lionel Hunter Mission List - 4 should be in the inventory.)
  3527.  </body></html>
  3528. \ No newline at end of file
  3529. Index: dist/game/data/scripts/quests/Q10876_LeadersGrace/34138-01.htm
  3530. ===================================================================
  3531. --- dist/game/data/scripts/quests/Q10876_LeadersGrace/34138-01.htm  (revision 7687)
  3532. +++ dist/game/data/scripts/quests/Q10876_LeadersGrace/34138-01.htm  (working copy)
  3533. @@ -1,5 +1,4 @@
  3534. -<html><body>Santiago:<br>
  3535. -Santiago, the Head of the Fisheries Guild, said he needed special qualities to get an Honorary Status.<br>
  3536. -character traits and even perform work that does not fit the noble face.<br>
  3537. -<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10876_LeadersGrace 34138-02.htm">"Yes, I'm ready."</Button>
  3538. +<html><body>Fishing Guild Leader Santiago:<br>
  3539. +You must be the one Lionel Hunter talked about. Ah, no need to raise your guard. I'm a fisher. I have no interest in fighting. I mean, I'm not in the position to give such missions.<br>
  3540. +<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10876_LeadersGrace 34138-02.htm">"Go on."</Button>
  3541.  </body></html>
  3542. \ No newline at end of file
  3543. Index: dist/game/data/scripts/quests/Q10876_LeadersGrace/34138-02.htm
  3544. ===================================================================
  3545. --- dist/game/data/scripts/quests/Q10876_LeadersGrace/34138-02.htm  (revision 7687)
  3546. +++ dist/game/data/scripts/quests/Q10876_LeadersGrace/34138-02.htm  (working copy)
  3547. @@ -1,5 +1,4 @@
  3548. -<html><body>Santiago:<br>
  3549. -so how? you are ready? You can, I believe you! become a true foodie!.<br>
  3550. -you need to try very hard if you want to earn my trust and respect for you.<br>
  3551. -<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10876_LeadersGrace 34138-03.htm">"Yes."</Button>
  3552. +<html><body>Fishing Guild Leader Santiago:<br>
  3553. +Lionel Hunter said that you would lead the world. A leader must have dignity. I ask you to prove it.<br>
  3554. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10876_LeadersGrace 34138-03.htm">"Ask what to prove."</Button>
  3555.  </body></html>
  3556. \ No newline at end of file
  3557. Index: dist/game/data/scripts/quests/Q10876_LeadersGrace/34138-03.htm
  3558. ===================================================================
  3559. --- dist/game/data/scripts/quests/Q10876_LeadersGrace/34138-03.htm  (revision 7687)
  3560. +++ dist/game/data/scripts/quests/Q10876_LeadersGrace/34138-03.htm  (working copy)
  3561. @@ -1,4 +1,5 @@
  3562. -<html><body>Santiago:<br>
  3563. -Fishing Guild Leader Santiago says the one who seeks out new power should have the grace that matches the power.<br>
  3564. -<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10876_LeadersGrace 34138-04.html">"I'm ready."</Button>
  3565. +<html><body>Fishing Guild Leader Santiago:<br>
  3566. +The strong and the privileged usually don't understand the poor. But a good leader must care for the poor. If one wins, another loses. If you ignore this rule, you're no better than those monsters out there.<br>
  3567. +My point is that your mission is to help the poor.<br>
  3568. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10876_LeadersGrace 34138-04.html">"Alright."</Button>
  3569.  </body></html>
  3570. \ No newline at end of file
  3571. Index: dist/game/data/scripts/quests/Q10876_LeadersGrace/34138-04.html
  3572. ===================================================================
  3573. --- dist/game/data/scripts/quests/Q10876_LeadersGrace/34138-04.html (revision 7687)
  3574. +++ dist/game/data/scripts/quests/Q10876_LeadersGrace/34138-04.html (working copy)
  3575. @@ -1,4 +1,5 @@
  3576. -<html><body>Santiago:<br>
  3577. -I charge you to obtain <font color="LEVEL">Special Fish Stew</font> (50 pcs.) <font color="LEVEL">And R-Grade Gems</font> (80)<br>
  3578. -as soon as you complete the task, come to me.
  3579. +<html><body>Fishing Guild Leader Santiago:<br>
  3580. +There are some poor people in this area. Gather <font color="LEVEL">50 Special Fish Stews</font> to feed them.<br>
  3581. +To make 1 Special Fish Stew, you need <font color="LEVEL">1 Powerful Fish</font> and <font color="LEVEL">1 Magic Spice</font>. Once you get them, ask me and I'll exchange them immediately. You can gather the igredients yourself or buy them.<br>
  3582. +I'd also like to teach them how to fish, but I don't have enough materials for fishing rods. Please gather <font color="LEVEL">80 Gemstones (R-Grade)</font> for me. That's your mission.
  3583.  </body></html>
  3584. \ No newline at end of file
  3585. Index: dist/game/data/scripts/quests/Q10876_LeadersGrace/34138-05.html
  3586. ===================================================================
  3587. --- dist/game/data/scripts/quests/Q10876_LeadersGrace/34138-05.html (revision 7687)
  3588. +++ dist/game/data/scripts/quests/Q10876_LeadersGrace/34138-05.html (working copy)
  3589. @@ -1,4 +1,4 @@
  3590. -<html><body>Santiago:<br>
  3591. -I charge you to obtain <font color="LEVEL">Special Fish Stew</font> (50 pcs.) <font color="LEVEL">And R-Grade Gems</font> (80)<br>
  3592. +<html><body>Fishing Guild Leader Santiago:<br>
  3593. +I charge you to obtain <font color="LEVEL">50 Special Fish Stews</font> and <font color="LEVEL">80 Gemstones (R-Grade)</font><br>
  3594.  as soon as you complete the task, come to me.
  3595.  </body></html>
  3596. \ No newline at end of file
  3597. Index: dist/game/data/scripts/quests/Q10876_LeadersGrace/34138-06.html
  3598. ===================================================================
  3599. --- dist/game/data/scripts/quests/Q10876_LeadersGrace/34138-06.html (revision 7687)
  3600. +++ dist/game/data/scripts/quests/Q10876_LeadersGrace/34138-06.html (working copy)
  3601. @@ -1,4 +1,4 @@
  3602. -<html><body>Santiago:<br>
  3603. +<html><body>Fishing Guild Leader Santiago:<br>
  3604.  You've completed a long journey. Good job. I'm glad to see you haven't given up.<br>
  3605.  here is your reward.<br>
  3606.  <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10876_LeadersGrace 34138-07.html">"Yes, here."</Button>
  3607. Index: dist/game/data/scripts/quests/Q10876_LeadersGrace/34138-07.html
  3608. ===================================================================
  3609. --- dist/game/data/scripts/quests/Q10876_LeadersGrace/34138-07.html (revision 7687)
  3610. +++ dist/game/data/scripts/quests/Q10876_LeadersGrace/34138-07.html (working copy)
  3611. @@ -1,4 +1,4 @@
  3612. -<html><body>Santiago:<br>
  3613. +<html><body>Fishing Guild Leader Santiago:<br>
  3614.  The power given to us by the gods... But you've proven that we are now able to overcome any limits without the protection of the gods.<br>
  3615.  Now that you have violated the restrictions set by the gods, we will call you a master and give you this.
  3616.  </body></html>
  3617. \ No newline at end of file
  3618. Index: dist/game/data/scripts/quests/Q10876_LeadersGrace/Q10876_LeadersGrace.java
  3619. ===================================================================
  3620. --- dist/game/data/scripts/quests/Q10876_LeadersGrace/Q10876_LeadersGrace.java  (revision 7687)
  3621. +++ dist/game/data/scripts/quests/Q10876_LeadersGrace/Q10876_LeadersGrace.java  (working copy)
  3622. @@ -40,7 +40,7 @@
  3623.     private static final int R_GRADE_GEMSTONE = 19440;
  3624.     private static final ItemHolder LIONEL_HUNTERS_LIST_PART_4 = new ItemHolder(47829, 1);
  3625.     // Rewards
  3626. -   private static final int SANTIAGO_SERTIFICATE = 47832;
  3627. +   private static final int SANTIAGO_CERTIFICATE = 47832;
  3628.     private static final int ELCYUM_CRYSTAL = 36514;
  3629.     // Misc
  3630.     private static final int MIN_LEVEL = 103;
  3631. @@ -88,7 +88,7 @@
  3632.                     takeItems(player, SPECIAL_FISH_STEW, -50);
  3633.                     takeItems(player, R_GRADE_GEMSTONE, -80);
  3634.                     giveItems(player, ELCYUM_CRYSTAL, 1);
  3635. -                   giveItems(player, SANTIAGO_SERTIFICATE, 1);
  3636. +                   giveItems(player, SANTIAGO_CERTIFICATE, 1);
  3637.                     qs.exitQuest(false, true);
  3638.                    
  3639.                     final Quest mainQ = QuestManager.getInstance().getQuest(Q10873_ExaltedReachingAnotherLevel.class.getSimpleName());
  3640. Index: dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/34267-00.html
  3641. ===================================================================
  3642. --- dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/34267-00.html   (nonexistent)
  3643. +++ dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/34267-00.html   (working copy)
  3644. @@ -0,0 +1,4 @@
  3645. +<html><body>Hunters Guild Leader Arcturus:<br>
  3646. +You are not ready to be called by me. Come back when you are ready.<br>
  3647. +(The Exalted, Reaching Another Level quest is in progress and level 103+ and Lionel Hunter Mission List - 4 should be in the inventory.)
  3648. +</body></html>
  3649. \ No newline at end of file
  3650. Index: dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/34267-01.htm
  3651. ===================================================================
  3652. --- dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/34267-01.htm    (nonexistent)
  3653. +++ dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/34267-01.htm    (working copy)
  3654. @@ -0,0 +1,4 @@
  3655. +<html><body>Hunters Guild Leader Arcturus:<br>
  3656. +I hunted countless beasts and monsters, but this world still swarms with them. Many say that the world is in this crisis. If they are right, I will wade through the crisis in my own way.<br>
  3657. +<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10877_BreakThroughCrisis 34267-02.htm">"Go on."</Button>
  3658. +</body></html>
  3659. \ No newline at end of file
  3660. Index: dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/34267-02.htm
  3661. ===================================================================
  3662. --- dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/34267-02.htm    (nonexistent)
  3663. +++ dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/34267-02.htm    (working copy)
  3664. @@ -0,0 +1,4 @@
  3665. +<html><body>Hunters Guild Leader Arcturus:<br>
  3666. +To complete the Hunter Guild's Guide is to save the world from threats and restore peace.<br>
  3667. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10877_BreakThroughCrisis 34267-03.htm">"Ask why"</Button>
  3668. +</body></html>
  3669. \ No newline at end of file
  3670. Index: dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/34267-03.htm
  3671. ===================================================================
  3672. --- dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/34267-03.htm    (nonexistent)
  3673. +++ dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/34267-03.htm    (working copy)
  3674. @@ -0,0 +1,5 @@
  3675. +<html><body>Hunters Guild Leader Arcturus:<br>
  3676. +First, if we hunt monsters, the world will be safer. Second, if we know more about the monsters, we will share the information with others so that it will be used to make the world safer.<br>
  3677. +If you dream of rising to a respected position, I advise you to join this mission.<br>
  3678. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10877_BreakThroughCrisis 34267-04.html">"Alright."</Button>
  3679. +</body></html>
  3680. \ No newline at end of file
  3681. Index: dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/34267-04.html
  3682. ===================================================================
  3683. --- dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/34267-04.html   (nonexistent)
  3684. +++ dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/34267-04.html   (working copy)
  3685. @@ -0,0 +1,5 @@
  3686. +<html><body>Hunters Guild Leader Arcturus:<br>
  3687. +<font color="LEVEL">Fill 10</font> Hunter Guild's Bestiaries. You can fill them by defeating 10 of the monsters illustrated in the Bestiary. You can select even those you have defetead before.<br>
  3688. +Note that it is useless to kill monsters of other factions.<br>
  3689. +<font color="LEVEL">Click Menu > Bestiary, and the Bestiary page will open. Select the Hunter Guild as your faction and defeat 10 of the listed monsters to complete the mission.</font>
  3690. +</body></html>
  3691. \ No newline at end of file
  3692. Index: dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/34267-05.html
  3693. ===================================================================
  3694. --- dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/34267-05.html   (nonexistent)
  3695. +++ dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/34267-05.html   (working copy)
  3696. @@ -0,0 +1,5 @@
  3697. +<html><body>Hunters Guild Leader Arcturus:<br>
  3698. +<font color="LEVEL">Fill 10</font> Hunter Guild's Bestiaries.<br>
  3699. +As soon as you complete the task, come to me.<br>
  3700. +<font color="LEVEL">Click Menu > Bestiary, and the Bestiary page will open. Select the Hunter Guild as your faction and defeat 10 of the listed monsters to complete the mission.</font>
  3701. +</body></html>
  3702. \ No newline at end of file
  3703. Index: dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/34267-06.html
  3704. ===================================================================
  3705. --- dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/34267-06.html   (nonexistent)
  3706. +++ dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/34267-06.html   (working copy)
  3707. @@ -0,0 +1,4 @@
  3708. +<html><body>Hunters Guild Leader Arcturus:<br>
  3709. +Have you <font color="LEVEL">filled 10</font> Hunter Guild's Bestiaries?<br>
  3710. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10877_BreakThroughCrisis 34267-07.html">"Yes, here."</Button>
  3711. +</body></html>
  3712. \ No newline at end of file
  3713. Index: dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/34267-07.html
  3714. ===================================================================
  3715. --- dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/34267-07.html   (nonexistent)
  3716. +++ dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/34267-07.html   (working copy)
  3717. @@ -0,0 +1,5 @@
  3718. +<html><body>Hunters Guild Leader Arcturus:<br>
  3719. +You've completed a long journey. Good job. I'm glad to see you haven't given up.<br>
  3720. +Here is your reward.<br>
  3721. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10877_BreakThroughCrisis 34267-08.html">"Great."</Button>
  3722. +</body></html>
  3723. \ No newline at end of file
  3724. Index: dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/34267-08.html
  3725. ===================================================================
  3726. --- dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/34267-08.html   (nonexistent)
  3727. +++ dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/34267-08.html   (working copy)
  3728. @@ -0,0 +1,4 @@
  3729. +<html><body>Hunters Guild Leader Arcturus:<br>
  3730. +The power given to us by the gods... But you've proven that we are now able to overcome any limits without the protection of the gods.<br>
  3731. +Now that you have violated the restrictions set by the gods, we will call you a master and give you this.
  3732. +</body></html>
  3733. \ No newline at end of file
  3734. Index: dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/Q10877_BreakThroughCrisis.java
  3735. ===================================================================
  3736. --- dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/Q10877_BreakThroughCrisis.java  (nonexistent)
  3737. +++ dist/game/data/scripts/quests/Q10877_BreakThroughCrisis/Q10877_BreakThroughCrisis.java  (working copy)
  3738. @@ -0,0 +1,178 @@
  3739. +/*
  3740. + * This file is part of the L2J Mobius project.
  3741. + *
  3742. + * This program is free software: you can redistribute it and/or modify
  3743. + * it under the terms of the GNU General Public License as published by
  3744. + * the Free Software Foundation, either version 3 of the License, or
  3745. + * (at your option) any later version.
  3746. + *
  3747. + * This program is distributed in the hope that it will be useful,
  3748. + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  3749. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  3750. + * General Public License for more details.
  3751. + *
  3752. + * You should have received a copy of the GNU General Public License
  3753. + * along with this program. If not, see <http://www.gnu.org/licenses/>.
  3754. + */
  3755. +package quests.Q10877_BreakThroughCrisis;
  3756. +
  3757. +import java.util.ArrayList;
  3758. +import java.util.List;
  3759. +
  3760. +import org.l2jmobius.gameserver.data.xml.impl.MonsterBookData;
  3761. +import org.l2jmobius.gameserver.enums.Faction;
  3762. +import org.l2jmobius.gameserver.instancemanager.QuestManager;
  3763. +import org.l2jmobius.gameserver.model.actor.Npc;
  3764. +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
  3765. +import org.l2jmobius.gameserver.model.holders.ItemHolder;
  3766. +import org.l2jmobius.gameserver.model.holders.MonsterBookCardHolder;
  3767. +import org.l2jmobius.gameserver.model.quest.Quest;
  3768. +import org.l2jmobius.gameserver.model.quest.QuestState;
  3769. +import org.l2jmobius.gameserver.model.quest.State;
  3770. +
  3771. +import quests.Q10873_ExaltedReachingAnotherLevel.Q10873_ExaltedReachingAnotherLevel;
  3772. +
  3773. +/**
  3774. + * Break Through Crisis (10877)
  3775. + * @URL https://l2wiki.com/Break_Through_Crisis
  3776. + * @author CostyKiller
  3777. + */
  3778. +public class Q10877_BreakThroughCrisis extends Quest
  3779. +{
  3780. +   // NPC
  3781. +   private static final int ARCTURUS = 34267;
  3782. +   // Items
  3783. +   private static final ItemHolder LIONEL_HUNTERS_LIST_PART_4 = new ItemHolder(47829, 1);
  3784. +   // Rewards
  3785. +   private static final int ARCTURUS_CERTIFICATE = 47833;
  3786. +   // Misc
  3787. +   private static final int MIN_LEVEL = 103;
  3788. +   private static final int BESTIARY_PAGES_NEEDED = 10;
  3789. +  
  3790. +   public Q10877_BreakThroughCrisis()
  3791. +   {
  3792. +       super(10877);
  3793. +       addStartNpc(ARCTURUS);
  3794. +       addTalkId(ARCTURUS);
  3795. +       addCondMinLevel(MIN_LEVEL, "34267-00.html");
  3796. +       addCondStartedQuest(Q10873_ExaltedReachingAnotherLevel.class.getSimpleName(), "34267-00.html");
  3797. +   }
  3798. +  
  3799. +   @Override
  3800. +   public String onAdvEvent(String event, Npc npc, PlayerInstance player)
  3801. +   {
  3802. +       String htmltext = null;
  3803. +       final QuestState qs = getQuestState(player, false);
  3804. +       if (qs == null)
  3805. +       {
  3806. +           return htmltext;
  3807. +       }
  3808. +       switch (event)
  3809. +       {
  3810. +           case "34267-02.htm":
  3811. +           case "34267-03.htm":
  3812. +           {
  3813. +               htmltext = event;
  3814. +               break;
  3815. +           }
  3816. +           case "34267-04.html":
  3817. +           {
  3818. +               if (hasItem(player, LIONEL_HUNTERS_LIST_PART_4))
  3819. +               {
  3820. +                   qs.startQuest();
  3821. +                   htmltext = event;
  3822. +               }
  3823. +               break;
  3824. +           }
  3825. +           case "34267-07.html":
  3826. +           {
  3827. +               qs.setCond(2);
  3828. +               htmltext = event;
  3829. +               break;
  3830. +           }
  3831. +           case "34267-08.html":
  3832. +           {
  3833. +               // 64 to 103 card ids of hunters guild mobs
  3834. +               final List<Integer> killedMobs = new ArrayList<>();
  3835. +               for (MonsterBookCardHolder card : MonsterBookData.getInstance().getMonsterBookCards())
  3836. +               {
  3837. +                   if ((card.getFaction() == Faction.HUNTERS_GUILD) && (player.getMonsterBookKillCount(card.getId()) > 0))
  3838. +                   {
  3839. +                       killedMobs.add(card.getId());
  3840. +                   }
  3841. +               }
  3842. +               if (killedMobs.size() >= BESTIARY_PAGES_NEEDED)
  3843. +               {
  3844. +                   addExpAndSp(player, 34471245000L, 634471244);
  3845. +                   giveItems(player, ARCTURUS_CERTIFICATE, 1);
  3846. +                   qs.exitQuest(false, true);
  3847. +                  
  3848. +                   final Quest mainQ = QuestManager.getInstance().getQuest(Q10873_ExaltedReachingAnotherLevel.class.getSimpleName());
  3849. +                   if (mainQ != null)
  3850. +                   {
  3851. +                       mainQ.notifyEvent("SUBQUEST_FINISHED_NOTIFY", npc, player);
  3852. +                   }
  3853. +                   htmltext = event;
  3854. +               }
  3855. +               else
  3856. +               {
  3857. +                   htmltext = "34267-06.html";
  3858. +               }
  3859. +               break;
  3860. +           }
  3861. +       }
  3862. +       return htmltext;
  3863. +   }
  3864. +  
  3865. +   @Override
  3866. +   public String onTalk(Npc npc, PlayerInstance player)
  3867. +   {
  3868. +       String htmltext = getNoQuestMsg(player);
  3869. +       final QuestState qs = getQuestState(player, true);
  3870. +       switch (qs.getState())
  3871. +       {
  3872. +           case State.CREATED:
  3873. +           {
  3874. +               if (hasItem(player, LIONEL_HUNTERS_LIST_PART_4))
  3875. +               {
  3876. +                   htmltext = "34267-01.htm";
  3877. +               }
  3878. +               else
  3879. +               {
  3880. +                   htmltext = "34267-00.htm";
  3881. +               }
  3882. +               break;
  3883. +           }
  3884. +           case State.STARTED:
  3885. +           {
  3886. +               if (qs.isCond(1))
  3887. +               {
  3888. +                   // 64 to 103 card ids of hunters guild mobs
  3889. +                   final List<Integer> killedMobs = new ArrayList<>();
  3890. +                   for (MonsterBookCardHolder card : MonsterBookData.getInstance().getMonsterBookCards())
  3891. +                   {
  3892. +                       if ((card.getFaction() == Faction.HUNTERS_GUILD) && (player.getMonsterBookKillCount(card.getId()) > 0))
  3893. +                       {
  3894. +                           killedMobs.add(card.getId());
  3895. +                       }
  3896. +                   }
  3897. +                   if (killedMobs.size() >= BESTIARY_PAGES_NEEDED)
  3898. +                   {
  3899. +                       htmltext = "34267-06.html";
  3900. +                   }
  3901. +               }
  3902. +               else
  3903. +               {
  3904. +                   htmltext = "34267-05.html";
  3905. +               }
  3906. +               break;
  3907. +           }
  3908. +           case State.COMPLETED:
  3909. +           {
  3910. +               htmltext = getAlreadyCompletedMsg(player);
  3911. +               break;
  3912. +           }
  3913. +       }
  3914. +       return htmltext;
  3915. +   }
  3916. +}
  3917. Index: dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-00.htm
  3918. ===================================================================
  3919. --- dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-00.htm   (revision 7687)
  3920. +++ dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-00.htm   (nonexistent)
  3921. @@ -1,4 +0,0 @@
  3922. -<html><body>Eva's Knight Lionel Hunter:<br>
  3923. -You are not ready to be called by me. Come back when you are ready.<br>
  3924. -(Only characters who have completed the Exalted, Reaching Another Level quest may take this quest and level 105+.)
  3925. -</body></html>
  3926. \ No newline at end of file
  3927. Index: dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-00.html
  3928. ===================================================================
  3929. --- dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-00.html  (nonexistent)
  3930. +++ dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-00.html  (working copy)
  3931. @@ -0,0 +1,4 @@
  3932. +<html><body>Eva's Knight Lionel Hunter:<br>
  3933. +You are not ready to be called by me. Come back when you are ready.<br>
  3934. +(Only characters who have completed the Exalted, Reaching Another Level quest may take this quest and level 104+.)
  3935. +</body></html>
  3936. \ No newline at end of file
  3937. Index: dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-01.htm
  3938. ===================================================================
  3939. --- dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-01.htm   (revision 7687)
  3940. +++ dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-01.htm   (working copy)
  3941. @@ -1,5 +1,6 @@
  3942.  <html><body>Eva's Knight Lionel Hunter:<br>
  3943. -Great job passing the second test. I knew you would be able to do it.<br>
  3944. -Now, only the third test is left. Are you ready for it?<br>
  3945. -<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10879_ExaltedGuideToPower 33907-03.htm">"Yes, I'm ready."</Button>
  3946. +You have passed three old tests and one new test.<br>
  3947. +You may have enough qualities to be the Guide of Power.If you pass this test, all my doubts about you will change to faith.<br>
  3948. +I'll continue to watch you. Now, will you listen to the explanation of the fifth test?<br>
  3949. +<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10879_ExaltedGuideToPower 33907-03.htm">"Go on."</Button>
  3950.  </body></html>
  3951. \ No newline at end of file
  3952. Index: dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-03.htm
  3953. ===================================================================
  3954. --- dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-03.htm   (revision 7687)
  3955. +++ dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-03.htm   (working copy)
  3956. @@ -1,5 +1,7 @@
  3957.  <html><body>Eva's Knight Lionel Hunter:<br>
  3958. -All the efforts you've made so far are simple compared to what you'll have to do now.<br>
  3959. -You must remember that it is not about overcoming the limit, but about learning that there's no limit at all. Do you understand what I'm saying?<br>
  3960. -<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10879_ExaltedGuideToPower 33907-04.htm">"Yes."</Button>
  3961. +You challenged your limits and overcame them.<br>
  3962. +You also reached the new stage that no one else had experienced. For what did you endure all these trials?<br>
  3963. +For your personal satisfaction on honor? Although you gained an incredible power in the process, the trials were arduous and painful.<br>
  3964. +Would you tell me? What do you think is the purpose of your journey?<br>
  3965. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10879_ExaltedGuideToPower 33907-04.htm">"Ask if it was for other people."</Button>
  3966.  </body></html>
  3967. \ No newline at end of file
  3968. Index: dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-04.htm
  3969. ===================================================================
  3970. --- dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-04.htm   (revision 7687)
  3971. +++ dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-04.htm   (working copy)
  3972. @@ -1,6 +1,7 @@
  3973.  <html><body>Eva's Knight Lionel Hunter:<br>
  3974. -You've already overcome your limit. There's no such thing as a limit now. That's what you will be proving on this fifth test.<br>
  3975. -The things you've obtained as you improved will make you even stronger, and what you will obtain from now on will help you prove yourself.<br>
  3976. -Are you ready to not go back?<br>
  3977. -<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10879_ExaltedGuideToPower 33907-05.html">"I'm ready."</Button>
  3978. +You're right. Your power is no longer your own.<br>
  3979. +You have overcome your limits and obtained the power and position so great as to influence the world. Your power may determine the fate of a village, territory or even country.<br>
  3980. +To reach that stage, however, you must take the final test. You must pass this test to be the Guide of Power.<br>
  3981. +Would you take the fifth test?<br>
  3982. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10879_ExaltedGuideToPower 33907-05.html">"Yes, that is correct."</Button>
  3983.  </body></html>
  3984. \ No newline at end of file
  3985. Index: dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-05.html
  3986. ===================================================================
  3987. --- dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-05.html  (revision 7687)
  3988. +++ dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-05.html  (working copy)
  3989. @@ -1,7 +1,8 @@
  3990.  <html><body>Eva's Knight Lionel Hunter:<br>
  3991. -This is the third test.<br>
  3992. -You must overcome not just the limit of the power you were born with, but also the limit of the new power you obtained.<br>
  3993. -Make sure your <font color="LEVEL">Lv. 104</font>. Then, go find <font color="LEVEL">Master Gyphon</font> and <font color="LEVEL">Commissioner Dinford</font> in <font color="LEVEL">Camp Blackbird</font>, <font color="LEVEL">Settlen</font> in the <font color="LEVEL">Underground Kainak</font>, the <font color="LEVEL">Admiral Keucereus</font> in the <font color="LEVEL">Ketserus Alliance Base</font>, and pass the tests they give you. It's best that you hear about the tests from them.<br><br><br>
  3994. -Remember to bring back their certificates.<br>
  3995. -If you forget who you must go to, refer to the guide I'll be giving you.
  3996. +I'll tell you about the fifth test.<br>
  3997. +First, you must reach <font color="LEVEL">Lv.105</font> to prove that you're qualified to be Guide of Power. You must also pass the tests of the following people and receive their certificates.<br>
  3998. +The testers include <font color="LEVEL">Master Cyphona</font> and <font color="LEVEL">Quartermaster Dinford</font> in the <font color="LEVEL">Blackbird Campsite</font>, <font color="LEVEL">Owner Settlen</font> of <font color="LEVEL">Underground Gainak Mystic Tavern</font>, and <font color="LEVEL">Admiral Keucereus</font> in the <font color="LEVEL">Keucereus Alliance Base</font>.<br><br><br>
  3999. +Only they know what they'll test you on, so go talk to them. If you forget who you must go to, refer to the guide I'll be giving you.<br><br>
  4000. +All this can be substituted by completing a mission from <font color="LEVEL">Cardinal Seresin</font> in the <font color="LEVEL">Town of Oren</font>.<br>
  4001. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10879_ExaltedGuideToPower 33907-05a.html">"I'll do that."</Button>
  4002.  </body></html>
  4003. \ No newline at end of file
  4004. Index: dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-05a.html
  4005. ===================================================================
  4006. --- dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-05a.html (nonexistent)
  4007. +++ dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-05a.html (working copy)
  4008. @@ -0,0 +1,8 @@
  4009. +<html><body>Eva's Knight Lionel Hunter:<br>
  4010. +I'll tell you about the fifth test.<br>
  4011. +First, you must reach <font color="LEVEL">Lv.105</font> to prove that you're qualified to be Guide of Power. You must also pass the tests of the following people and receive their certificates.<br>
  4012. +The testers include <font color="LEVEL">Master Cyphona</font> and <font color="LEVEL">Quartermaster Dinford</font> in the <font color="LEVEL">Blackbird Campsite</font>, <font color="LEVEL">Owner Settlen</font> of <font color="LEVEL">Underground Gainak Mystic Tavern</font>, and <font color="LEVEL">Admiral Keucereus</font> in the <font color="LEVEL">Keucereus Alliance Base</font>.<br><br><br>
  4013. +Only they know what they'll test you on, so go talk to them. If you forget who you must go to, refer to the guide I'll be giving you.<br><br>
  4014. +All this can be substituted by completing a mission from <font color="LEVEL">Cardinal Seresin</font> in the <font color="LEVEL">Town of Oren</font>.<br>
  4015. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10879_ExaltedGuideToPower 33907-05a.html">"I'll do that."</Button>
  4016. +</body></html>
  4017. \ No newline at end of file
  4018. Index: dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-06.html
  4019. ===================================================================
  4020. --- dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-06.html  (revision 7687)
  4021. +++ dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-06.html  (working copy)
  4022. @@ -1,6 +1,5 @@
  4023.  <html><body>Eva's Knight Lionel Hunter:<br>
  4024. -You haven't finished all the tests. In order to overcome your limit, you must pass all the tests.<br>
  4025. -You must overcome not just the limit of the power you were born with, but also the limit of the new power you obtained.<br>
  4026. -Make sure your <font color="LEVEL">Lv. 104</font>. Then, go find <font color="LEVEL">Master Gyphon</font> and <font color="LEVEL">Commissioner Dinford</font> in <font color="LEVEL">Camp Blackbird</font>, <font color="LEVEL">Settlen</font> in the <font color="LEVEL">Underground Kainak</font>, the <font color="LEVEL">Admiral Keucereus</font> in the <font color="LEVEL">Ketserus Alliance Base</font>, and pass the tests they give you.<br>
  4027. -It's best that you hear about the tests from them. Remember to bring back their certificates.
  4028. -</body></html>
  4029. \ No newline at end of file
  4030. +You haven't finished all the tests. In order to become Guide of Power, you must pass all the tests.<br>
  4031. +You must reach <font color="LEVEL">Lv.105</font>, pass the tests of the following people and receive their certificates.<br>
  4032. +The testers include <font color="LEVEL">Master Cyphona</font> and <font color="LEVEL">Quartermaster Dinford</font> in the <font color="LEVEL">Blackbird Campsite</font>, <font color="LEVEL">Owner Settlen</font> of <font color="LEVEL">Underground Gainak Mystic Tavern</font>, and <font color="LEVEL">Admiral Keucereus</font> in the <font color="LEVEL">Keucereus Alliance Base</font>.<br><br><br>
  4033. +Only they know what they'll test you on, so go talk to them.<br></body></html>
  4034. \ No newline at end of file
  4035. Index: dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-06a.html
  4036. ===================================================================
  4037. --- dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-06a.html (nonexistent)
  4038. +++ dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-06a.html (working copy)
  4039. @@ -0,0 +1,6 @@
  4040. +<html><body>Eva's Knight Lionel Hunter:<br>
  4041. +You haven't finished the test. In order to become Guide of Power, you must pass the test.<br>
  4042. +You must reach <font color="LEVEL">Lv.105</font>, pass the test and receive a certificate.<br>
  4043. +Go find <font color="LEVEL">Cardinal Seresin</font> in the <font color="LEVEL">Town of Oren</font>.<br>
  4044. +Only her knows what she'll test you on, so go talk to her.<br>
  4045. +</body></html>
  4046. \ No newline at end of file
  4047. Index: dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-07a.html
  4048. ===================================================================
  4049. --- dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-07a.html (nonexistent)
  4050. +++ dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-07a.html (working copy)
  4051. @@ -0,0 +1,5 @@
  4052. +<html><body>Eva's Knight Lionel Hunter:<br>
  4053. +You've completed a long journey. Good job. I'm glad to see you haven't given up.<br>
  4054. +Do you have the certificate?<br>
  4055. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10879_ExaltedGuideToPower 33907-08.html">"Yes, here."</Button>
  4056. +</body></html>
  4057. \ No newline at end of file
  4058. Index: dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-08.html
  4059. ===================================================================
  4060. --- dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-08.html  (revision 7687)
  4061. +++ dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-08.html  (working copy)
  4062. @@ -1,4 +1,4 @@
  4063.  <html><body>Eva's Knight Lionel Hunter:<br>
  4064. -You have passed a series of tests in order to become a Conductor of Strength.<br>
  4065. -Get access to the next quest Obtaining a New Power. Congratulations.
  4066. +You have passed a series of tests in order to become a Guide of Power.<br>
  4067. +Congratulations.
  4068.  </body></html>
  4069. \ No newline at end of file
  4070. Index: dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/Q10879_ExaltedGuideToPower.java
  4071. ===================================================================
  4072. --- dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/Q10879_ExaltedGuideToPower.java    (revision 7687)
  4073. +++ dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/Q10879_ExaltedGuideToPower.java    (working copy)
  4074. @@ -38,13 +38,13 @@
  4075.     private static final int DINFORD_CERTIFICATE = 47836;
  4076.     private static final int SETTLEN_SERTIFICATE = 47837;
  4077.     private static final int ADMIRAL_KEUCEREUS_CERTIFICATE = 47838;
  4078. +   private static final int SERESIN_CERTIFICATE = 80829;
  4079.     private static final int LIONEL_MISSION_LIST_5 = 47834;
  4080.     // Rewards
  4081. -   private static final int VITALITY_OF_THE_EXALTED = 47855;
  4082.     private static final int DIGNITY_OF_THE_EXALTED = 47853;
  4083.     // Misc
  4084. -   private static final int MIN_LEVEL = 105;
  4085. -   private static final int MIN_COMPLETE_LEVEL = 104;
  4086. +   private static final int MIN_LEVEL = 104;
  4087. +   private static final int MIN_COMPLETE_LEVEL = 105;
  4088.    
  4089.     public Q10879_ExaltedGuideToPower()
  4090.     {
  4091. @@ -51,9 +51,9 @@
  4092.         super(10879);
  4093.         addStartNpc(LIONEL);
  4094.         addTalkId(LIONEL);
  4095. -       addCondMinLevel(MIN_LEVEL, "33907-00.htm");
  4096. -       addCondCompletedQuest(Q10873_ExaltedReachingAnotherLevel.class.getSimpleName(), "33907-00.htm");
  4097. -       registerQuestItems(LIONEL_MISSION_LIST_5, MASTER_CYPHONA_CERTIFICATE, DINFORD_CERTIFICATE, SETTLEN_SERTIFICATE, ADMIRAL_KEUCEREUS_CERTIFICATE);
  4098. +       addCondMinLevel(MIN_LEVEL, "33907-00.html");
  4099. +       addCondCompletedQuest(Q10873_ExaltedReachingAnotherLevel.class.getSimpleName(), "33907-00.html");
  4100. +       registerQuestItems(LIONEL_MISSION_LIST_5, MASTER_CYPHONA_CERTIFICATE, DINFORD_CERTIFICATE, SETTLEN_SERTIFICATE, ADMIRAL_KEUCEREUS_CERTIFICATE, SERESIN_CERTIFICATE);
  4101.     }
  4102.    
  4103.     @Override
  4104. @@ -83,12 +83,18 @@
  4105.                 }
  4106.                 break;
  4107.             }
  4108. +           case "33907-05a.html":
  4109. +           {
  4110. +               qs.setCond(3);
  4111. +               htmltext = event;
  4112. +               break;
  4113. +           }
  4114.             case "33907-08.html":
  4115.             {
  4116. -               if (hasQuestItems(player, MASTER_CYPHONA_CERTIFICATE, DINFORD_CERTIFICATE, SETTLEN_SERTIFICATE, ADMIRAL_KEUCEREUS_CERTIFICATE) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
  4117. +               if ((hasQuestItems(player, SERESIN_CERTIFICATE) || (hasQuestItems(player, MASTER_CYPHONA_CERTIFICATE, DINFORD_CERTIFICATE, SETTLEN_SERTIFICATE, ADMIRAL_KEUCEREUS_CERTIFICATE))) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
  4118.                 {
  4119. -                   giveItems(player, VITALITY_OF_THE_EXALTED, 1);
  4120.                     giveItems(player, DIGNITY_OF_THE_EXALTED, 1);
  4121. +                   addExpAndSp(player, 2217691008000L, (int) 2217691008L);
  4122.                     qs.exitQuest(false, true);
  4123.                     htmltext = event;
  4124.                 }
  4125. @@ -112,14 +118,33 @@
  4126.             }
  4127.             case State.STARTED:
  4128.             {
  4129. -               if (hasQuestItems(player, MASTER_CYPHONA_CERTIFICATE, DINFORD_CERTIFICATE, SETTLEN_SERTIFICATE, ADMIRAL_KEUCEREUS_CERTIFICATE) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
  4130. +               switch (qs.getCond())
  4131.                 {
  4132. -                   htmltext = "33907-07.html";
  4133. +                   case 1:
  4134. +                   {
  4135. +                       if (hasQuestItems(player, MASTER_CYPHONA_CERTIFICATE, DINFORD_CERTIFICATE, SETTLEN_SERTIFICATE, ADMIRAL_KEUCEREUS_CERTIFICATE) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
  4136. +                       {
  4137. +                           htmltext = "33907-07.html";
  4138. +                       }
  4139. +                       else
  4140. +                       {
  4141. +                           htmltext = "33907-06.html";
  4142. +                       }
  4143. +                       break;
  4144. +                   }
  4145. +                   case 3:
  4146. +                   {
  4147. +                       if (hasQuestItems(player, SERESIN_CERTIFICATE) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
  4148. +                       {
  4149. +                           htmltext = "33907-07a.html";
  4150. +                       }
  4151. +                       else
  4152. +                       {
  4153. +                           htmltext = "33907-06a.html";
  4154. +                       }
  4155. +                       break;
  4156. +                   }
  4157.                 }
  4158. -               else
  4159. -               {
  4160. -                   htmltext = "33907-06.html";
  4161. -               }
  4162.                 break;
  4163.             }
  4164.             case State.COMPLETED:
  4165. Index: dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-06.html
  4166. ===================================================================
  4167. --- dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-06.html   (revision 7687)
  4168. +++ dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-06.html   (working copy)
  4169. @@ -1,7 +1,7 @@
  4170.  <html><body>Ferin:<br>
  4171.  Are you done?<br>
  4172.  You've done great.<br>
  4173. -choose one of the awards.<br>
  4174. +Choose one of the awards.<br>
  4175.  <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10880_TheLastOneStanding 34054-07.html">"FP 4500 pcs. with Mother Tree Guardians."</Button>
  4176.  <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10880_TheLastOneStanding 34054-07a.html">"FP 4500 pcs. with Unworldly Visitors."</Button>
  4177.  <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10880_TheLastOneStanding 34054-07b.html">"FP 4500 pcs. with Kingdom's Royal Guard."</Button>
  4178. Index: dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07a.html
  4179. ===================================================================
  4180. --- dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07a.html  (revision 7687)
  4181. +++ dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07a.html  (working copy)
  4182. @@ -1,3 +1,3 @@
  4183. -<html><body>Verdure Elder Elikia:<br>
  4184. +<html><body>Ferin:<br>
  4185.  Great work. I hope you you never forget the sadness of those who have to suffer because of the long battles against the monsters.
  4186.  </body></html>
  4187. \ No newline at end of file
  4188. Index: dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07b.html
  4189. ===================================================================
  4190. --- dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07b.html  (revision 7687)
  4191. +++ dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07b.html  (working copy)
  4192. @@ -1,3 +1,3 @@
  4193. -<html><body>Verdure Elder Elikia:<br>
  4194. +<html><body>Ferin:<br>
  4195.  Great work. I hope you you never forget the sadness of those who have to suffer because of the long battles against the monsters.
  4196.  </body></html>
  4197. \ No newline at end of file
  4198. Index: dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-01.htm
  4199. ===================================================================
  4200. --- dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-01.htm    (revision 7687)
  4201. +++ dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-01.htm    (working copy)
  4202. @@ -1,6 +1,5 @@
  4203.  <html><body>Master Cyphona:<br>
  4204. -Fate doesn't just happen, nor can it be cut off just because one wants to.<br>
  4205. -Meeting Lionel and taking part in giving out this test is all fate.<br>
  4206. -And you must have come here because you will be passing it.<br>
  4207. -<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10880_TheLastOneStanding 34055-02.htm">"What's the test about?"</Button>
  4208. +A while ago Lionel Hunter sent a messenger to Ferin. His message was about how to test and qualify the <font color="LEVEL">Guide of Power</font> who is supposed to save the world from darkness.<br>
  4209. +I won't bore you with a long story. In short, he asked Ferin to test the adventurers he sends and give certificates to only those who pass.<br>
  4210. +<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10880_TheLastOneStanding 34055-02.htm">"Go on."</Button>
  4211.  </body></html>
  4212. \ No newline at end of file
  4213. Index: dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-02.htm
  4214. ===================================================================
  4215. --- dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-02.htm    (revision 7687)
  4216. +++ dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-02.htm    (working copy)
  4217. @@ -1,6 +1,5 @@
  4218.  <html><body>Master Cyphona:<br>
  4219. -The battle with the monsters!<br>
  4220. -to gain new strength, you need to hunt for monsters.<br>
  4221. -and then you will receive my certificate.<br>
  4222. -<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10880_TheLastOneStanding 34055-03.htm">"Properly?"</Button>
  4223. +I was surprised that Ferin accepted the offer so readily. He's not a person who takes on troublesome work. I was wondering what he had in mind... Now I'm doing his job.<br>
  4224. +I thought is better for you to know what happened so far.<br>
  4225. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10880_TheLastOneStanding 34055-03.htm">"Go on."</Button>
  4226.  </body></html>
  4227. \ No newline at end of file
  4228. Index: dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-03.htm
  4229. ===================================================================
  4230. --- dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-03.htm    (revision 7687)
  4231. +++ dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-03.htm    (working copy)
  4232. @@ -1,6 +1,5 @@
  4233.  <html><body>Master Cyphona:<br>
  4234. -What do you think of the monsters of the Material Realm? Those monsters are the subject to our blades, due to our long history in battle.<br>
  4235. -I know of some creatures who were turned into monsters as a result of experiments. And there are those who've lost their precious ones to those monsters. I know their sadness and anger. But we don't always remember them when we defeat those monsters.<br>
  4236. -I believe we must always remember the sadness and anger that they hold within. Don't you agree?<br>
  4237. -<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10880_TheLastOneStanding 34055-04.htm">"Sounds right."</Button>
  4238. +I thought that <font color="LEVEL">hunting</font> would be the simplest way of proving oneself capable of guiding the power, and you are certainly qualified to take the test.<br>
  4239. +However, it doesn't mean that you can finish it successfully. Think carefully before undertaking the mission.<br>
  4240. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10880_TheLastOneStanding 34055-04.htm">"Alright."</Button>
  4241.  </body></html>
  4242. \ No newline at end of file
  4243. Index: dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-04.htm
  4244. ===================================================================
  4245. --- dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-04.htm    (revision 7687)
  4246. +++ dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-04.htm    (working copy)
  4247. @@ -1,5 +1,6 @@
  4248.  <html><body>Master Cyphona:<br>
  4249. -I'm about to give you a very long test. In that process, I want you to remember the sadness and anger of many.<br>
  4250. -Go defeat the monsters in <font color="LEVEL">Enchanted Valley, Atelia Fortress, Shadow of the Mother Tree</font> and <font color="LEVEL">Garden of Spirits</font> and bring back the <font color="LEVEL">Proof of Strength - 10000</font>.<br>
  4251. -In that long process, never forget the sadness that derives from long battles against the monsters.
  4252. +You're determined. I'll explain the mission then.<br>
  4253. +Hunt monsters at the <font color="LEVEL">Enchanted Valley, Garden of Spirits, Atelia Fortress and Shadow of the Mother Tree</font> and bring <font color="LEVEL">Proof of Strength</font>. Hmm... Let's see... Ferin said you need to bring about <font color="LEVEL">10.000</font><br>
  4254. +You'll need to go talk to Ferin once the mission is complete so I can't lower the quantity, sorry.<br>
  4255. +Good luck.
  4256.  </body></html>
  4257. \ No newline at end of file
  4258. Index: dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-05.html
  4259. ===================================================================
  4260. --- dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-05.html   (revision 7687)
  4261. +++ dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-05.html   (working copy)
  4262. @@ -1,4 +1,4 @@
  4263.  <html><body>Master Cyphona:<br>
  4264. -It won't be easy bringing back proof of the monsters that you've defeated. But once you can do that, I'll acknowledge your strength.<br>
  4265. -Go defeat the monsters in <font color="LEVEL">Enchanted Valley, Atelia Fortress, Shadow of the Mother Tree</font> and <font color="LEVEL">Garden of Spirits</font> and bring back the <font color="LEVEL">Proof of Strength - 10000</font>.<br>
  4266. +Hunt monsters at the <font color="LEVEL">Enchanted Valley, Garden of Spirits, Atelia Fortress and Shadow of the Mother Tree</font> and bring <font color="LEVEL">10.000 Proof of Strength</font>.<br>
  4267. +Once the mission is complete go talk to Ferin.<br>
  4268.  </body></html>
  4269. \ No newline at end of file
  4270. Index: dist/game/data/scripts/quests/Q10880_TheLastOneStanding/Q10880_TheLastOneStanding.java
  4271. ===================================================================
  4272. --- dist/game/data/scripts/quests/Q10880_TheLastOneStanding/Q10880_TheLastOneStanding.java  (revision 7687)
  4273. +++ dist/game/data/scripts/quests/Q10880_TheLastOneStanding/Q10880_TheLastOneStanding.java  (working copy)
  4274. @@ -41,7 +41,7 @@
  4275.     private static final int CYPHONA = 34055;
  4276.     private static final int FERIN = 34054;
  4277.     // Items
  4278. -   private static final int MASTER_CYPHONA_CERTIFICATE = 47835;
  4279. +   private static final int FERIN_CERTIFICATE = 47835;
  4280.     private static final int PROOF_OF_STRENGTH = 47843;
  4281.     private static final ItemHolder LIONEL_HUNTERS_LIST_PART_5 = new ItemHolder(47834, 1);
  4282.     // Monsters
  4283. @@ -57,6 +57,7 @@
  4284.         23572, // Nymph Cosmos
  4285.         23573, // Nymph Cosmos
  4286.         23578, // Nymph Guardian
  4287. +      
  4288.         // Garden of Spirits
  4289.         23541, // Kerberos Lager
  4290.         23550, // Kerberos Lager (night)
  4291. @@ -74,6 +75,7 @@
  4292.         23557, // Fury Kerberos Leger (night)
  4293.         23549, // Fury Kerberos Nero
  4294.         23558, // Fury Kerberos Nero (night)
  4295. +      
  4296.         // Atelia Fortress
  4297.         23505, // Fortress Raider 101
  4298.         23506, // Fortress Guardian Captain 101
  4299. @@ -89,6 +91,7 @@
  4300.         23510, // Atelia Flame Master 102
  4301.         23511, // Fortress Archon 102
  4302.         23512, // Atelia High Priest 102
  4303. +      
  4304.         // Shadow of the Mother Tree
  4305.         24117, // Crystal Reep
  4306.         24118, // Crystal Reep
  4307. @@ -108,6 +111,8 @@
  4308.    
  4309.     // Misc
  4310.     private static final int MIN_LEVEL = 104;
  4311. +   private static final int FP = 4500; // Faction Points
  4312. +   private static final int PROOF_OF_STRENGTH_NEEDED = 10000;
  4313.    
  4314.     public Q10880_TheLastOneStanding()
  4315.     {
  4316. @@ -155,8 +160,8 @@
  4317.                     if ((player.getLevel() >= MIN_LEVEL))
  4318.                     {
  4319.                         takeItems(player, PROOF_OF_STRENGTH, -1);
  4320. -                       giveItems(player, MASTER_CYPHONA_CERTIFICATE, 1);
  4321. -                       addFactionPoints(player, Faction.MOTHER_TREE_GUARDIANS, 4500);
  4322. +                       giveItems(player, FERIN_CERTIFICATE, 1);
  4323. +                       addFactionPoints(player, Faction.MOTHER_TREE_GUARDIANS, FP);
  4324.                         qs.exitQuest(false, true);
  4325.                        
  4326.                         final Quest mainQ = QuestManager.getInstance().getQuest(Q10879_ExaltedGuideToPower.class.getSimpleName());
  4327. @@ -180,8 +185,8 @@
  4328.                     if ((player.getLevel() >= MIN_LEVEL))
  4329.                     {
  4330.                         takeItems(player, PROOF_OF_STRENGTH, -1);
  4331. -                       giveItems(player, MASTER_CYPHONA_CERTIFICATE, 1);
  4332. -                       addFactionPoints(player, Faction.UNWORLDLY_VISITORS, 4500);
  4333. +                       giveItems(player, FERIN_CERTIFICATE, 1);
  4334. +                       addFactionPoints(player, Faction.UNWORLDLY_VISITORS, FP);
  4335.                         qs.exitQuest(false, true);
  4336.                        
  4337.                         final Quest mainQ = QuestManager.getInstance().getQuest(Q10879_ExaltedGuideToPower.class.getSimpleName());
  4338. @@ -200,13 +205,13 @@
  4339.             }
  4340.             case "34054-07b.html":
  4341.             {
  4342. -               if (qs.isCond(2))
  4343. +               if (qs.isCond(2) && (getQuestItemsCount(player, PROOF_OF_STRENGTH) >= PROOF_OF_STRENGTH_NEEDED))
  4344.                 {
  4345.                     if ((player.getLevel() >= MIN_LEVEL))
  4346.                     {
  4347. -                       takeItems(player, PROOF_OF_STRENGTH, -1);
  4348. -                       giveItems(player, MASTER_CYPHONA_CERTIFICATE, 1);
  4349. -                       addFactionPoints(player, Faction.KINGDOM_ROYAL_GUARDS, 4500);
  4350. +                       takeItems(player, PROOF_OF_STRENGTH, PROOF_OF_STRENGTH_NEEDED);
  4351. +                       giveItems(player, FERIN_CERTIFICATE, 1);
  4352. +                       addFactionPoints(player, Faction.KINGDOM_ROYAL_GUARDS, FP);
  4353.                         qs.exitQuest(false, true);
  4354.                        
  4355.                         final Quest mainQ = QuestManager.getInstance().getQuest(Q10879_ExaltedGuideToPower.class.getSimpleName());
  4356. @@ -260,7 +265,7 @@
  4357.                     }
  4358.                     case FERIN:
  4359.                     {
  4360. -                       if (qs.isCond(2))
  4361. +                       if (qs.isCond(2) && (getQuestItemsCount(player, PROOF_OF_STRENGTH) >= PROOF_OF_STRENGTH_NEEDED))
  4362.                         {
  4363.                             htmltext = "34054-06.html";
  4364.                         }
  4365. @@ -294,7 +299,7 @@
  4366.             giveItems(player, PROOF_OF_STRENGTH, 1);
  4367.             playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  4368.            
  4369. -           if (getQuestItemsCount(player, PROOF_OF_STRENGTH) >= 10000)
  4370. +           if (getQuestItemsCount(player, PROOF_OF_STRENGTH) >= PROOF_OF_STRENGTH_NEEDED)
  4371.             {
  4372.                 qs.setCond(2, true);
  4373.             }
  4374. Index: dist/game/data/scripts/quests/Q10880_TheLastOneStanding/noItem.html
  4375. ===================================================================
  4376. --- dist/game/data/scripts/quests/Q10880_TheLastOneStanding/noItem.html (revision 7687)
  4377. +++ dist/game/data/scripts/quests/Q10880_TheLastOneStanding/noItem.html (working copy)
  4378. @@ -1,4 +1,4 @@
  4379. -<html><body>Verdure Elder Elikia:<br>
  4380. +<html><body>Master Cyphona:<br>
  4381.  I don't know how you found your way here, but I can't do anything for you if you haven't talked to Lionel Hunter.<br>
  4382.  (You don't meet the requirements for proceed with this quest. You need Lionel Hunter's Mission List - Part 5 in your inventory.)
  4383.  </body></html>
  4384. \ No newline at end of file
  4385. Index: dist/game/data/scripts/quests/Q10881_ForThePride/34235-06.htm
  4386. ===================================================================
  4387. --- dist/game/data/scripts/quests/Q10881_ForThePride/34235-06.htm   (nonexistent)
  4388. +++ dist/game/data/scripts/quests/Q10881_ForThePride/34235-06.htm   (working copy)
  4389. @@ -0,0 +1,4 @@
  4390. +<html><body>Royal Guard Captain Logart Van Dyke:<br>
  4391. +May I help you?<br>
  4392. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10881_ForThePride 34235-07.html">"State your business."</Button>
  4393. +</body></html>
  4394. \ No newline at end of file
  4395. Index: dist/game/data/scripts/quests/Q10881_ForThePride/34235-07.html
  4396. ===================================================================
  4397. --- dist/game/data/scripts/quests/Q10881_ForThePride/34235-07.html  (nonexistent)
  4398. +++ dist/game/data/scripts/quests/Q10881_ForThePride/34235-07.html  (working copy)
  4399. @@ -0,0 +1,4 @@
  4400. +<html><body>Royal Guard Captain Logart Van Dyke:<br>
  4401. +I don't see the certificates. You can receive the <font color="LEVEL">Mother Tree Guardians Certificate</font> from <font color="LEVEL">Guardian Irene</font> and <font color="LEVEL">Unworldly Visitors Certificate</font> from <font color="LEVEL">Ferin</font>.<br>
  4402. +To get them, you must earn their trust.
  4403. +</body></html>
  4404. \ No newline at end of file
  4405. Index: dist/game/data/scripts/quests/Q10881_ForThePride/34235-08.htm
  4406. ===================================================================
  4407. --- dist/game/data/scripts/quests/Q10881_ForThePride/34235-08.htm   (nonexistent)
  4408. +++ dist/game/data/scripts/quests/Q10881_ForThePride/34235-08.htm   (working copy)
  4409. @@ -0,0 +1,4 @@
  4410. +<html><body>Royal Guard Captain Logart Van Dyke:<br>
  4411. +Have you got the certificates?<br>
  4412. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10881_ForThePride 34235-09.html">"Yes, I have."</Button>
  4413. +</body></html>
  4414. \ No newline at end of file
  4415. Index: dist/game/data/scripts/quests/Q10881_ForThePride/34235-09.html
  4416. ===================================================================
  4417. --- dist/game/data/scripts/quests/Q10881_ForThePride/34235-09.html  (nonexistent)
  4418. +++ dist/game/data/scripts/quests/Q10881_ForThePride/34235-09.html  (working copy)
  4419. @@ -0,0 +1,3 @@
  4420. +<html><body>Royal Guard Captain Logart Van Dyke:<br>
  4421. +Great work. I hope you you never forget the sadness of those who have to suffer because of the long battles against the monsters.
  4422. +</body></html>
  4423. \ No newline at end of file
  4424. Index: dist/game/data/scripts/quests/Q10881_ForThePride/34236-00.htm
  4425. ===================================================================
  4426. --- dist/game/data/scripts/quests/Q10881_ForThePride/34236-00.htm   (nonexistent)
  4427. +++ dist/game/data/scripts/quests/Q10881_ForThePride/34236-00.htm   (working copy)
  4428. @@ -0,0 +1,4 @@
  4429. +<html><body>Quartermaster Dinford:<br>
  4430. +I do not believe our paths are meant to cross here. Perhaps later down the road.<br>
  4431. +(Only characters above Lv. 104 and The Exalted, Guide to Power quest should be in progress..)
  4432. +</body></html>
  4433. \ No newline at end of file
  4434. Index: dist/game/data/scripts/quests/Q10881_ForThePride/34236-01.htm
  4435. ===================================================================
  4436. --- dist/game/data/scripts/quests/Q10881_ForThePride/34236-01.htm   (nonexistent)
  4437. +++ dist/game/data/scripts/quests/Q10881_ForThePride/34236-01.htm   (working copy)
  4438. @@ -0,0 +1,4 @@
  4439. +<html><body>Quartermaster Dinford:<br>
  4440. +Hello! I assign missions on behalf of the Kingdom's Royal Guard and Royal Guard Captain Logart Van Dyke. Would you let me explain it?<br>
  4441. +<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10881_ForThePride 34236-02.htm">"Go on."</Button>
  4442. +</body></html>
  4443. \ No newline at end of file
  4444. Index: dist/game/data/scripts/quests/Q10881_ForThePride/34236-02.htm
  4445. ===================================================================
  4446. --- dist/game/data/scripts/quests/Q10881_ForThePride/34236-02.htm   (nonexistent)
  4447. +++ dist/game/data/scripts/quests/Q10881_ForThePride/34236-02.htm   (working copy)
  4448. @@ -0,0 +1,6 @@
  4449. +<html><body>Quartermaster Dinford:<br>
  4450. +Do you know what pride means? Pride is confidence that you gain when you believe in yourself.<br>
  4451. +Then, how you can judge you own ability? How can you prove that your judgment is right? You can earn true pride only when those who are qualified for such judgment are convinced in your abilities.<br>
  4452. +I suggest this mission in the hope of developing your confidence.<br>
  4453. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10881_ForThePride 34236-03.htm">"Ask about the mission."</Button>
  4454. +</body></html>
  4455. \ No newline at end of file
  4456. Index: dist/game/data/scripts/quests/Q10881_ForThePride/34236-03.htm
  4457. ===================================================================
  4458. --- dist/game/data/scripts/quests/Q10881_ForThePride/34236-03.htm   (nonexistent)
  4459. +++ dist/game/data/scripts/quests/Q10881_ForThePride/34236-03.htm   (working copy)
  4460. @@ -0,0 +1,4 @@
  4461. +<html><body>Quartermaster Dinford:<br>
  4462. +As far as I know, you've built relationships with some factions. If you undertake missions of other factions, you will be able to understand the meaning of true pride. Will you accept their missions?<br>
  4463. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10881_ForThePride 34236-04.htm">"Alright."</Button>
  4464. +</body></html>
  4465. \ No newline at end of file
  4466. Index: dist/game/data/scripts/quests/Q10881_ForThePride/34236-04.htm
  4467. ===================================================================
  4468. --- dist/game/data/scripts/quests/Q10881_ForThePride/34236-04.htm   (nonexistent)
  4469. +++ dist/game/data/scripts/quests/Q10881_ForThePride/34236-04.htm   (working copy)
  4470. @@ -0,0 +1,3 @@
  4471. +<html><body>Quartermaster Dinford:<br>
  4472. +Great. Take on missions of the <font color="LEVEL">Mother Tree Guardians</font>, the <font color="LEVEL">Unworldly Visitors</font>, and the <font color="LEVEL">Kingdom's Royal Guard</font>, and increase your Faction Level with <font color="LEVEL">two or more of these factions</font>, to at least <font color="LEVEL">6</font>. Then, receive certificates to prove your Faction Level 6 or higher from the following people: the <font color="LEVEL">Mother Tree Guardians Certificate</font> from <font color="LEVEL">Guardian Irene</font>, the <font color="LEVEL">Unworldly Visitors Certificate</font> from <font color="LEVEL">Ferin</font>, and the <font color="LEVEL">Kingdom's Royal Guard Certificate</font> from <font color="LEVEL">Royal Guard Captain Logart Van Dyke</font>.
  4473. +</body></html>
  4474. \ No newline at end of file
  4475. Index: dist/game/data/scripts/quests/Q10881_ForThePride/34236-05.html
  4476. ===================================================================
  4477. --- dist/game/data/scripts/quests/Q10881_ForThePride/34236-05.html  (nonexistent)
  4478. +++ dist/game/data/scripts/quests/Q10881_ForThePride/34236-05.html  (working copy)
  4479. @@ -0,0 +1,3 @@
  4480. +<html><body>Quartermaster Dinford:<br>
  4481. +Great, you have the certificates. Now go talk to <font color="LEVEL">Royal Guard Captain Logart Van Dyke</font>.
  4482. +</body></html>
  4483. \ No newline at end of file
  4484. Index: dist/game/data/scripts/quests/Q10881_ForThePride/Q10881_ForThePride.java
  4485. ===================================================================
  4486. --- dist/game/data/scripts/quests/Q10881_ForThePride/Q10881_ForThePride.java    (nonexistent)
  4487. +++ dist/game/data/scripts/quests/Q10881_ForThePride/Q10881_ForThePride.java    (working copy)
  4488. @@ -0,0 +1,181 @@
  4489. +/*
  4490. + * This file is part of the L2J Mobius project.
  4491. + *
  4492. + * This program is free software: you can redistribute it and/or modify
  4493. + * it under the terms of the GNU General Public License as published by
  4494. + * the Free Software Foundation, either version 3 of the License, or
  4495. + * (at your option) any later version.
  4496. + *
  4497. + * This program is distributed in the hope that it will be useful,
  4498. + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  4499. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  4500. + * General Public License for more details.
  4501. + *
  4502. + * You should have received a copy of the GNU General Public License
  4503. + * along with this program. If not, see <http://www.gnu.org/licenses/>.
  4504. + */
  4505. +package quests.Q10881_ForThePride;
  4506. +
  4507. +import org.l2jmobius.gameserver.instancemanager.QuestManager;
  4508. +import org.l2jmobius.gameserver.model.actor.Npc;
  4509. +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
  4510. +import org.l2jmobius.gameserver.model.holders.ItemHolder;
  4511. +import org.l2jmobius.gameserver.model.quest.Quest;
  4512. +import org.l2jmobius.gameserver.model.quest.QuestState;
  4513. +import org.l2jmobius.gameserver.model.quest.State;
  4514. +
  4515. +import quests.Q10879_ExaltedGuideToPower.Q10879_ExaltedGuideToPower;
  4516. +
  4517. +/**
  4518. + * For the Pride (10881)
  4519. + * @URL https://l2wiki.com/For_the_Pride
  4520. + * @author CostyKiller
  4521. + */
  4522. +public class Q10881_ForThePride extends Quest
  4523. +{
  4524. +   private static final int DINFORD = 34236;
  4525. +   private static final int LOGART_VAN_DYKE = 34235;
  4526. +  
  4527. +   public Q10881_ForThePride()
  4528. +   {
  4529. +       super(10881);
  4530. +       addStartNpc(DINFORD);
  4531. +       addTalkId(DINFORD, LOGART_VAN_DYKE);
  4532. +       addCondMinLevel(MIN_LEVEL, "34236-00.htm");
  4533. +       addCondStartedQuest(Q10879_ExaltedGuideToPower.class.getSimpleName(), "34236-00.htm");
  4534. +   }
  4535. +  
  4536. +   // Items
  4537. +   private static final int LOGART_VAN_DYKE_CERTIFICATE = 47836;
  4538. +   private static final int MOTHER_TREE_GUARDIAN_CERTIFICATION = 47844;
  4539. +   private static final int UNWORLDLY_VISITORS_CERTIFICATION = 47845;
  4540. +   private static final int KINGDOM_ROYAL_GUARD_CERTIFICATION = 47846;
  4541. +   private static final ItemHolder LIONEL_HUNTERS_LIST_PART_5 = new ItemHolder(47834, 1);
  4542. +   private static final int SPELLBOOK_VITALITY_OF_THE_EXALTED = 47855;
  4543. +   // Misc
  4544. +   private static final int MIN_LEVEL = 104;
  4545. +  
  4546. +   @Override
  4547. +   public String onAdvEvent(String event, Npc npc, PlayerInstance player)
  4548. +   {
  4549. +       final QuestState qs = getQuestState(player, false);
  4550. +       if (qs == null)
  4551. +       {
  4552. +           return null;
  4553. +       }
  4554. +      
  4555. +       String htmltext = null;
  4556. +      
  4557. +       switch (event)
  4558. +       {
  4559. +           case "34326-02.htm":
  4560. +           case "34326-03.htm":
  4561. +           {
  4562. +               htmltext = event;
  4563. +               break;
  4564. +           }
  4565. +           case "34326-04.htm":
  4566. +           {
  4567. +               if (hasItem(player, LIONEL_HUNTERS_LIST_PART_5))
  4568. +               {
  4569. +                   qs.startQuest();
  4570. +                   htmltext = event;
  4571. +               }
  4572. +               break;
  4573. +           }
  4574. +           case "34325-07.html":
  4575. +           {
  4576. +               if (qs.isCond(1) && (!(hasQuestItems(player, MOTHER_TREE_GUARDIAN_CERTIFICATION, UNWORLDLY_VISITORS_CERTIFICATION)) || !(hasQuestItems(player, MOTHER_TREE_GUARDIAN_CERTIFICATION, KINGDOM_ROYAL_GUARD_CERTIFICATION)) || !(hasQuestItems(player, UNWORLDLY_VISITORS_CERTIFICATION, KINGDOM_ROYAL_GUARD_CERTIFICATION))))
  4577. +               {
  4578. +                   htmltext = event;
  4579. +               }
  4580. +               else
  4581. +               {
  4582. +                   qs.setCond(2);
  4583. +                   htmltext = "34325-08.htm";
  4584. +               }
  4585. +               break;
  4586. +           }
  4587. +           case "34325-09.html":
  4588. +           {
  4589. +               if (qs.isCond(2))
  4590. +               {
  4591. +                   if ((player.getLevel() >= MIN_LEVEL))
  4592. +                   {
  4593. +                       giveItems(player, LOGART_VAN_DYKE_CERTIFICATE, 1);
  4594. +                       giveItems(player, SPELLBOOK_VITALITY_OF_THE_EXALTED, 1);
  4595. +                       qs.exitQuest(false, true);
  4596. +                      
  4597. +                       final Quest mainQ = QuestManager.getInstance().getQuest(Q10879_ExaltedGuideToPower.class.getSimpleName());
  4598. +                       if (mainQ != null)
  4599. +                       {
  4600. +                           mainQ.notifyEvent("SUBQUEST_FINISHED_NOTIFY", npc, player);
  4601. +                       }
  4602. +                       htmltext = event;
  4603. +                   }
  4604. +                   else
  4605. +                   {
  4606. +                       htmltext = getNoQuestLevelRewardMsg(player);
  4607. +                   }
  4608. +                   break;
  4609. +               }
  4610. +           }
  4611. +       }
  4612. +       return htmltext;
  4613. +   }
  4614. +  
  4615. +   @Override
  4616. +   public String onTalk(Npc npc, PlayerInstance player)
  4617. +   {
  4618. +       final QuestState qs = getQuestState(player, true);
  4619. +       String htmltext = getNoQuestMsg(player);
  4620. +       switch (qs.getState())
  4621. +       {
  4622. +           case State.CREATED:
  4623. +           {
  4624. +               if ((npc.getId() == DINFORD) && (hasItem(player, LIONEL_HUNTERS_LIST_PART_5)))
  4625. +               {
  4626. +                   htmltext = "34326-01.htm";
  4627. +               }
  4628. +               else
  4629. +               {
  4630. +                   htmltext = "noItem.html";
  4631. +               }
  4632. +               break;
  4633. +           }
  4634. +           case State.STARTED:
  4635. +           {
  4636. +               switch (npc.getId())
  4637. +               {
  4638. +                   case DINFORD:
  4639. +                   {
  4640. +                       if (qs.isCond(1) && ((hasQuestItems(player, MOTHER_TREE_GUARDIAN_CERTIFICATION, UNWORLDLY_VISITORS_CERTIFICATION)) || (hasQuestItems(player, MOTHER_TREE_GUARDIAN_CERTIFICATION, KINGDOM_ROYAL_GUARD_CERTIFICATION)) || (hasQuestItems(player, UNWORLDLY_VISITORS_CERTIFICATION, KINGDOM_ROYAL_GUARD_CERTIFICATION))))
  4641. +                       {
  4642. +                           htmltext = "34326-05.html";
  4643. +                       }
  4644. +                       break;
  4645. +                   }
  4646. +                   case LOGART_VAN_DYKE:
  4647. +                   {
  4648. +                       if (qs.isCond(1))
  4649. +                       {
  4650. +                           htmltext = "34325-06.htm";
  4651. +                       }
  4652. +                       else if (qs.isCond(2))
  4653. +                       {
  4654. +                           htmltext = "34325-08.html";
  4655. +                       }
  4656. +                       break;
  4657. +                   }
  4658. +               }
  4659. +               break;
  4660. +           }
  4661. +           case State.COMPLETED:
  4662. +           {
  4663. +               htmltext = getAlreadyCompletedMsg(player);
  4664. +               break;
  4665. +           }
  4666. +       }
  4667. +       return htmltext;
  4668. +   }
  4669. +}
  4670. Index: dist/game/data/scripts/quests/Q10881_ForThePride/noItem.html
  4671. ===================================================================
  4672. --- dist/game/data/scripts/quests/Q10881_ForThePride/noItem.html    (nonexistent)
  4673. +++ dist/game/data/scripts/quests/Q10881_ForThePride/noItem.html    (working copy)
  4674. @@ -0,0 +1,4 @@
  4675. +<html><body>Quartermaster Dinford:<br>
  4676. +I don't know how you found your way here, but I can't do anything for you if you haven't talked to Lionel Hunter.<br>
  4677. +(You don't meet the requirements for proceed with this quest. You need Lionel Hunter's Mission List - Part 5 in your inventory.)
  4678. +</body></html>
  4679. \ No newline at end of file
  4680. Index: dist/game/data/scripts/quests/Q10882_VictoryCollection/34180-00.htm
  4681. ===================================================================
  4682. --- dist/game/data/scripts/quests/Q10882_VictoryCollection/34180-00.htm (nonexistent)
  4683. +++ dist/game/data/scripts/quests/Q10882_VictoryCollection/34180-00.htm (working copy)
  4684. @@ -0,0 +1,4 @@
  4685. +<html><body>Owner Settlen:<br>
  4686. +I do not believe our paths are meant to cross here. Perhaps later down the road.<br>
  4687. +(Only characters above Lv. 104 and The Exalted, Guide to Power quest should be in progress..)
  4688. +</body></html>
  4689. \ No newline at end of file
  4690. Index: dist/game/data/scripts/quests/Q10882_VictoryCollection/34180-01.htm
  4691. ===================================================================
  4692. --- dist/game/data/scripts/quests/Q10882_VictoryCollection/34180-01.htm (nonexistent)
  4693. +++ dist/game/data/scripts/quests/Q10882_VictoryCollection/34180-01.htm (working copy)
  4694. @@ -0,0 +1,4 @@
  4695. +<html><body>Owner Settlen:<br>
  4696. +I'm going to give you a mission. I believe that those in high positions have to listen to the voices of their people. Fortunately, I know many stories to tell you. You don't need to wander around to hear them.
  4697. +<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10882_VictoryCollection 34180-02.htm">"Ask what to do."</Button>
  4698. +</body></html>
  4699. \ No newline at end of file
  4700. Index: dist/game/data/scripts/quests/Q10882_VictoryCollection/34180-02.htm
  4701. ===================================================================
  4702. --- dist/game/data/scripts/quests/Q10882_VictoryCollection/34180-02.htm (nonexistent)
  4703. +++ dist/game/data/scripts/quests/Q10882_VictoryCollection/34180-02.htm (working copy)
  4704. @@ -0,0 +1,5 @@
  4705. +<html><body>Owner Settlen:<br>
  4706. +Listen to all stories you can hear in this tavern.<br>
  4707. +After completing this mission, make books about the stories and bring them to me.<br>
  4708. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10882_VictoryCollection 34180-03.htm">"Alright."</Button>
  4709. +</body></html>
  4710. \ No newline at end of file
  4711. Index: dist/game/data/scripts/quests/Q10882_VictoryCollection/34180-03.html
  4712. ===================================================================
  4713. --- dist/game/data/scripts/quests/Q10882_VictoryCollection/34180-03.html    (nonexistent)
  4714. +++ dist/game/data/scripts/quests/Q10882_VictoryCollection/34180-03.html    (working copy)
  4715. @@ -0,0 +1,4 @@
  4716. +<html><body>Owner Settlen:<br>
  4717. +You cannot make a storybook simply by listening to a story, but you're more likely to get it if you listen to more stories, more often. Understand?<br>
  4718. +I expect you to bring me a <font color="LEVEL">Storybook - Tauti</font>, <font color="LEVEL">Storybook - Kelbim</font>, <font color="LEVEL">Storybook - Freya</font>, and <font color="LEVEL">Storybook - Kain van Halter</font>.
  4719. +</body></html>
  4720. \ No newline at end of file
  4721. Index: dist/game/data/scripts/quests/Q10882_VictoryCollection/34180-04.html
  4722. ===================================================================
  4723. --- dist/game/data/scripts/quests/Q10882_VictoryCollection/34180-04.html    (nonexistent)
  4724. +++ dist/game/data/scripts/quests/Q10882_VictoryCollection/34180-04.html    (working copy)
  4725. @@ -0,0 +1,3 @@
  4726. +<html><body>Owner Settlen:<br>
  4727. +I expect you to bring me a <font color="LEVEL">Storybook - Tauti</font>, <font color="LEVEL">Storybook - Kelbim</font>, <font color="LEVEL">Storybook - Freya</font>, and <font color="LEVEL">Storybook - Kain van Halter</font>.
  4728. +</body></html>
  4729. \ No newline at end of file
  4730. Index: dist/game/data/scripts/quests/Q10882_VictoryCollection/34180-05.htm
  4731. ===================================================================
  4732. --- dist/game/data/scripts/quests/Q10882_VictoryCollection/34180-05.htm (nonexistent)
  4733. +++ dist/game/data/scripts/quests/Q10882_VictoryCollection/34180-05.htm (working copy)
  4734. @@ -0,0 +1,4 @@
  4735. +<html><body>Owner Settlen:<br>
  4736. +Have you got all the story books?<br>
  4737. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10882_VictoryCollection 34180-06.html">"Yes, I have."</Button>
  4738. +</body></html>
  4739. \ No newline at end of file
  4740. Index: dist/game/data/scripts/quests/Q10882_VictoryCollection/34180-06.html
  4741. ===================================================================
  4742. --- dist/game/data/scripts/quests/Q10882_VictoryCollection/34180-06.html    (nonexistent)
  4743. +++ dist/game/data/scripts/quests/Q10882_VictoryCollection/34180-06.html    (working copy)
  4744. @@ -0,0 +1,3 @@
  4745. +<html><body>Owner Settlen:<br>
  4746. +Great work. I hope you you never forget the sadness of those who have to suffer because of the long battles against the monsters.
  4747. +</body></html>
  4748. \ No newline at end of file
  4749. Index: dist/game/data/scripts/quests/Q10882_VictoryCollection/Q10882_VictoryCollection.java
  4750. ===================================================================
  4751. --- dist/game/data/scripts/quests/Q10882_VictoryCollection/Q10882_VictoryCollection.java    (nonexistent)
  4752. +++ dist/game/data/scripts/quests/Q10882_VictoryCollection/Q10882_VictoryCollection.java    (working copy)
  4753. @@ -0,0 +1,198 @@
  4754. +/*
  4755. + * This file is part of the L2J Mobius project.
  4756. + *
  4757. + * This program is free software: you can redistribute it and/or modify
  4758. + * it under the terms of the GNU General Public License as published by
  4759. + * the Free Software Foundation, either version 3 of the License, or
  4760. + * (at your option) any later version.
  4761. + *
  4762. + * This program is distributed in the hope that it will be useful,
  4763. + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  4764. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  4765. + * General Public License for more details.
  4766. + *
  4767. + * You should have received a copy of the GNU General Public License
  4768. + * along with this program. If not, see <http://www.gnu.org/licenses/>.
  4769. + */
  4770. +package quests.Q10882_VictoryCollection;
  4771. +
  4772. +import org.l2jmobius.Config;
  4773. +import org.l2jmobius.commons.util.CommonUtil;
  4774. +import org.l2jmobius.gameserver.enums.QuestSound;
  4775. +import org.l2jmobius.gameserver.instancemanager.QuestManager;
  4776. +import org.l2jmobius.gameserver.model.actor.Npc;
  4777. +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
  4778. +import org.l2jmobius.gameserver.model.holders.ItemHolder;
  4779. +import org.l2jmobius.gameserver.model.quest.Quest;
  4780. +import org.l2jmobius.gameserver.model.quest.QuestState;
  4781. +import org.l2jmobius.gameserver.model.quest.State;
  4782. +
  4783. +import quests.Q10879_ExaltedGuideToPower.Q10879_ExaltedGuideToPower;
  4784. +
  4785. +/**
  4786. + * Victory Collection (10882)
  4787. + * @URL https://l2wiki.com/Victory_Collection
  4788. + * @author CostyKiller
  4789. + */
  4790. +public class Q10882_VictoryCollection extends Quest
  4791. +{
  4792. +   // Npcs
  4793. +   private static final int SETTLEN = 34180;
  4794. +   // Monsters
  4795. +   private static final int[] MONSTERS =
  4796. +   {
  4797. +       // TODO: Add Kelbim and Kain Instance Monsters
  4798. +       // TODO: Add Story books drop to RBs
  4799. +       // Tauti Instance Monsters
  4800. +       23680, // Flame Golem
  4801. +       23709, // Flame Scarab
  4802. +       23683, // Seal Archangel
  4803. +       23685, // Seal Angel
  4804. +      
  4805. +       // Freya Instance Monsters
  4806. +       23686, // Frost Golem
  4807. +       23687, // Glacier Frostbringer
  4808. +       23703, // Ice Knight
  4809. +       23689 // Freya
  4810. +  
  4811. +   };
  4812. +   // Items
  4813. +   private static final int SETTLEN_CERTIFICATE = 47837;
  4814. +   private static final ItemHolder LIONEL_HUNTERS_LIST_PART_5 = new ItemHolder(47834, 1);
  4815. +   private static final int STORY_BOOK_OF_TAUTI = 47847;
  4816. +   private static final int STORY_BOOK_OF_KELBIM = 47848;
  4817. +   private static final int STORY_BOOK_OF_FREYA = 47849;
  4818. +   private static final int STORY_BOOK_OF_KAIN_VAN_HALTER = 47850;
  4819. +   private static final int COVERED_PAGE = 48930;
  4820. +   // Misc
  4821. +   private static final int MIN_LEVEL = 104;
  4822. +  
  4823. +   public Q10882_VictoryCollection()
  4824. +   {
  4825. +       super(10882);
  4826. +       addStartNpc(SETTLEN);
  4827. +       addTalkId(SETTLEN);
  4828. +       addKillId(MONSTERS);
  4829. +       addCondMinLevel(MIN_LEVEL, "34180-00.htm");
  4830. +       addCondStartedQuest(Q10879_ExaltedGuideToPower.class.getSimpleName(), "34180-00.htm");
  4831. +   }
  4832. +  
  4833. +   @Override
  4834. +   public String onAdvEvent(String event, Npc npc, PlayerInstance player)
  4835. +   {
  4836. +       final QuestState qs = getQuestState(player, false);
  4837. +       if (qs == null)
  4838. +       {
  4839. +           return null;
  4840. +       }
  4841. +      
  4842. +       String htmltext = null;
  4843. +      
  4844. +       switch (event)
  4845. +       {
  4846. +           case "34180-02.htm":
  4847. +           case "34180-04.html":
  4848. +           {
  4849. +               htmltext = event;
  4850. +               break;
  4851. +           }
  4852. +           case "34180-03.html":
  4853. +           {
  4854. +               if (hasItem(player, LIONEL_HUNTERS_LIST_PART_5))
  4855. +               {
  4856. +                   qs.startQuest();
  4857. +                   htmltext = event;
  4858. +               }
  4859. +               break;
  4860. +           }
  4861. +           case "34180-06.html":
  4862. +           {
  4863. +               if (qs.isCond(2))
  4864. +               {
  4865. +                   if ((player.getLevel() >= MIN_LEVEL))
  4866. +                   {
  4867. +                       giveItems(player, SETTLEN_CERTIFICATE, 1);
  4868. +                       addExpAndSp(player, 69661122560L, 709661122);
  4869. +                       qs.exitQuest(false, true);
  4870. +                      
  4871. +                       final Quest mainQ = QuestManager.getInstance().getQuest(Q10879_ExaltedGuideToPower.class.getSimpleName());
  4872. +                       if (mainQ != null)
  4873. +                       {
  4874. +                           mainQ.notifyEvent("SUBQUEST_FINISHED_NOTIFY", npc, player);
  4875. +                       }
  4876. +                       htmltext = event;
  4877. +                   }
  4878. +                   else
  4879. +                   {
  4880. +                       htmltext = getNoQuestLevelRewardMsg(player);
  4881. +                   }
  4882. +                   break;
  4883. +               }
  4884. +           }
  4885. +       }
  4886. +       return htmltext;
  4887. +   }
  4888. +  
  4889. +   @Override
  4890. +   public String onTalk(Npc npc, PlayerInstance player)
  4891. +   {
  4892. +       final QuestState qs = getQuestState(player, true);
  4893. +       String htmltext = getNoQuestMsg(player);
  4894. +       switch (qs.getState())
  4895. +       {
  4896. +           case State.CREATED:
  4897. +           {
  4898. +               if ((npc.getId() == SETTLEN) && (hasItem(player, LIONEL_HUNTERS_LIST_PART_5)))
  4899. +               {
  4900. +                   htmltext = "34180-01.htm";
  4901. +               }
  4902. +               else
  4903. +               {
  4904. +                   htmltext = "noItem.html";
  4905. +               }
  4906. +               break;
  4907. +           }
  4908. +           case State.STARTED:
  4909. +           {
  4910. +               if ((npc.getId() == SETTLEN) && qs.isCond(2) && (hasQuestItems(player, STORY_BOOK_OF_TAUTI, STORY_BOOK_OF_KELBIM, STORY_BOOK_OF_FREYA, STORY_BOOK_OF_KAIN_VAN_HALTER)))
  4911. +               {
  4912. +                   htmltext = "34180-05.htm";
  4913. +               }
  4914. +               else
  4915. +               {
  4916. +                   htmltext = "34180-04.html";
  4917. +               }
  4918. +               break;
  4919. +           }
  4920. +           case State.COMPLETED:
  4921. +           {
  4922. +               htmltext = getAlreadyCompletedMsg(player);
  4923. +               break;
  4924. +           }
  4925. +       }
  4926. +       return htmltext;
  4927. +   }
  4928. +  
  4929. +   @Override
  4930. +   public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
  4931. +   {
  4932. +       executeForEachPlayer(player, npc, isSummon, true, false);
  4933. +       return super.onKill(npc, player, isSummon);
  4934. +   }
  4935. +  
  4936. +   @Override
  4937. +   public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon)
  4938. +   {
  4939. +       final QuestState qs = getQuestState(player, false);
  4940. +       if ((qs != null) && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE) && CommonUtil.contains(MONSTERS, npc.getId()))
  4941. +       {
  4942. +           giveItems(player, COVERED_PAGE, 1);
  4943. +           playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  4944. +          
  4945. +           if (getQuestItemsCount(player, COVERED_PAGE) >= 24)
  4946. +           {
  4947. +               qs.setCond(2, true);
  4948. +           }
  4949. +       }
  4950. +   }
  4951. +}
  4952. Index: dist/game/data/scripts/quests/Q10882_VictoryCollection/noItem.html
  4953. ===================================================================
  4954. --- dist/game/data/scripts/quests/Q10882_VictoryCollection/noItem.html  (nonexistent)
  4955. +++ dist/game/data/scripts/quests/Q10882_VictoryCollection/noItem.html  (working copy)
  4956. @@ -0,0 +1,4 @@
  4957. +<html><body>Owner Settlen:<br>
  4958. +I don't know how you found your way here, but I can't do anything for you if you haven't talked to Lionel Hunter.<br>
  4959. +(You don't meet the requirements for proceed with this quest. You need Lionel Hunter's Mission List - Part 5 in your inventory.)
  4960. +</body></html>
  4961. \ No newline at end of file
  4962. Index: dist/game/data/scripts/quests/Q10883_ImmortalHonor/32548-00.htm
  4963. ===================================================================
  4964. --- dist/game/data/scripts/quests/Q10883_ImmortalHonor/32548-00.htm (nonexistent)
  4965. +++ dist/game/data/scripts/quests/Q10883_ImmortalHonor/32548-00.htm (working copy)
  4966. @@ -0,0 +1,4 @@
  4967. +<html><body>Admiral Keucereus:<br>
  4968. +I do not believe our paths are meant to cross here. Perhaps later down the road.<br>
  4969. +(Only characters above Lv. 104 and The Exalted, Guide to Power quest should be in progress..)
  4970. +</body></html>
  4971. \ No newline at end of file
  4972. Index: dist/game/data/scripts/quests/Q10883_ImmortalHonor/32548-01.htm
  4973. ===================================================================
  4974. --- dist/game/data/scripts/quests/Q10883_ImmortalHonor/32548-01.htm (nonexistent)
  4975. +++ dist/game/data/scripts/quests/Q10883_ImmortalHonor/32548-01.htm (working copy)
  4976. @@ -0,0 +1,4 @@
  4977. +<html><body>Admiral Keucereus:<br>
  4978. +Did Lionel Hunter send you? I should appreciate his choice. You seem to be the right person for my mission.<br>
  4979. +<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10883_ImmortalHonor 32548-02.htm">"Go on."</Button>
  4980. +</body></html>
  4981. \ No newline at end of file
  4982. Index: dist/game/data/scripts/quests/Q10883_ImmortalHonor/32548-02.htm
  4983. ===================================================================
  4984. --- dist/game/data/scripts/quests/Q10883_ImmortalHonor/32548-02.htm (nonexistent)
  4985. +++ dist/game/data/scripts/quests/Q10883_ImmortalHonor/32548-02.htm (working copy)
  4986. @@ -0,0 +1,4 @@
  4987. +<html><body>Admiral Keucereus:<br>
  4988. +Battles frequently take place here. I'm sure that you know what it means to be summoned.<br>
  4989. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10883_ImmortalHonor 32548-03.htm">"Yes."</Button>
  4990. +</body></html>
  4991. \ No newline at end of file
  4992. Index: dist/game/data/scripts/quests/Q10883_ImmortalHonor/32548-03.htm
  4993. ===================================================================
  4994. --- dist/game/data/scripts/quests/Q10883_ImmortalHonor/32548-03.htm (nonexistent)
  4995. +++ dist/game/data/scripts/quests/Q10883_ImmortalHonor/32548-03.htm (working copy)
  4996. @@ -0,0 +1,4 @@
  4997. +<html><body>Admiral Keucereus:<br>
  4998. +This battle will determine the fate of the world. Do you want to gain fame? Or honor? Either would be meaningless if there is no world. Do you understand? Then, your duty is to save the world.<br>
  4999. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10883_ImmortalHonor 32548-04.html">"Alright."</Button>
  5000. +</body></html>
  5001. \ No newline at end of file
  5002. Index: dist/game/data/scripts/quests/Q10883_ImmortalHonor/32548-04.html
  5003. ===================================================================
  5004. --- dist/game/data/scripts/quests/Q10883_ImmortalHonor/32548-04.html    (nonexistent)
  5005. +++ dist/game/data/scripts/quests/Q10883_ImmortalHonor/32548-04.html    (working copy)
  5006. @@ -0,0 +1,4 @@
  5007. +<html><body>Admiral Keucereus:<br>
  5008. +I order you to defeat <font color="LEVEL">Camille</font> and <font color="LEVEL">Kain van Halter</font>.
  5009. +Save the world and earn eternal fame.<br>
  5010. +</body></html>
  5011. \ No newline at end of file
  5012. Index: dist/game/data/scripts/quests/Q10883_ImmortalHonor/32548-05.html
  5013. ===================================================================
  5014. --- dist/game/data/scripts/quests/Q10883_ImmortalHonor/32548-05.html    (nonexistent)
  5015. +++ dist/game/data/scripts/quests/Q10883_ImmortalHonor/32548-05.html    (working copy)
  5016. @@ -0,0 +1,4 @@
  5017. +<html><body>Admiral Keucereus:<br>
  5018. +I ordered you to defeat <font color="LEVEL">Camille</font> and <font color="LEVEL">Kain van Halter</font>.
  5019. +Come back when you killed them.<br>
  5020. +</body></html>
  5021. \ No newline at end of file
  5022. Index: dist/game/data/scripts/quests/Q10883_ImmortalHonor/32548-06.htm
  5023. ===================================================================
  5024. --- dist/game/data/scripts/quests/Q10883_ImmortalHonor/32548-06.htm (nonexistent)
  5025. +++ dist/game/data/scripts/quests/Q10883_ImmortalHonor/32548-06.htm (working copy)
  5026. @@ -0,0 +1,4 @@
  5027. +<html><body>Admiral Keucereus:<br>
  5028. +Have you defeated <font color="LEVEL">Camille</font> and <font color="LEVEL">Kain van Halter</font>?<br>
  5029. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10883_ImmortalHonor 32548-07.html">"Yes, I have."</Button>
  5030. +</body></html>
  5031. \ No newline at end of file
  5032. Index: dist/game/data/scripts/quests/Q10883_ImmortalHonor/32548-07.html
  5033. ===================================================================
  5034. --- dist/game/data/scripts/quests/Q10883_ImmortalHonor/32548-07.html    (nonexistent)
  5035. +++ dist/game/data/scripts/quests/Q10883_ImmortalHonor/32548-07.html    (working copy)
  5036. @@ -0,0 +1,3 @@
  5037. +<html><body>Admiral Keucereus:<br>
  5038. +Great work. I hope you you never forget the sadness of those who have to suffer because of the long battles against the monsters.
  5039. +</body></html>
  5040. \ No newline at end of file
  5041. Index: dist/game/data/scripts/quests/Q10883_ImmortalHonor/Q10883_ImmortalHonor.java
  5042. ===================================================================
  5043. --- dist/game/data/scripts/quests/Q10883_ImmortalHonor/Q10883_ImmortalHonor.java    (nonexistent)
  5044. +++ dist/game/data/scripts/quests/Q10883_ImmortalHonor/Q10883_ImmortalHonor.java    (working copy)
  5045. @@ -0,0 +1,175 @@
  5046. +/*
  5047. + * This file is part of the L2J Mobius project.
  5048. + *
  5049. + * This program is free software: you can redistribute it and/or modify
  5050. + * it under the terms of the GNU General Public License as published by
  5051. + * the Free Software Foundation, either version 3 of the License, or
  5052. + * (at your option) any later version.
  5053. + *
  5054. + * This program is distributed in the hope that it will be useful,
  5055. + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  5056. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  5057. + * General Public License for more details.
  5058. + *
  5059. + * You should have received a copy of the GNU General Public License
  5060. + * along with this program. If not, see <http://www.gnu.org/licenses/>.
  5061. + */
  5062. +package quests.Q10883_ImmortalHonor;
  5063. +
  5064. +import org.l2jmobius.Config;
  5065. +import org.l2jmobius.gameserver.enums.QuestSound;
  5066. +import org.l2jmobius.gameserver.instancemanager.QuestManager;
  5067. +import org.l2jmobius.gameserver.model.actor.Npc;
  5068. +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
  5069. +import org.l2jmobius.gameserver.model.holders.ItemHolder;
  5070. +import org.l2jmobius.gameserver.model.quest.Quest;
  5071. +import org.l2jmobius.gameserver.model.quest.QuestState;
  5072. +import org.l2jmobius.gameserver.model.quest.State;
  5073. +
  5074. +import quests.Q10879_ExaltedGuideToPower.Q10879_ExaltedGuideToPower;
  5075. +
  5076. +/**
  5077. + * Immortal Honor (10883)
  5078. + * @URL https://l2wiki.com/Immortal_Honor
  5079. + * @author CostyKiller
  5080. + */
  5081. +public class Q10883_ImmortalHonor extends Quest
  5082. +{
  5083. +   // Npcs
  5084. +   private static final int KEUCEREUS_ADMIRAL = 32548;
  5085. +   // Raids
  5086. +   private static final int CAMILLE = 26236;
  5087. +   private static final int KAIN_VAN_HALTER = 26235;
  5088. +   // Items
  5089. +   private static final int KEUCEREUS_CERTIFICATE = 47837;
  5090. +   private static final ItemHolder LIONEL_HUNTERS_LIST_PART_5 = new ItemHolder(47834, 1);
  5091. +   // Misc
  5092. +   private static final int MIN_LEVEL = 104;
  5093. +  
  5094. +   public Q10883_ImmortalHonor()
  5095. +   {
  5096. +       super(10883);
  5097. +       addStartNpc(KEUCEREUS_ADMIRAL);
  5098. +       addTalkId(KEUCEREUS_ADMIRAL);
  5099. +       addKillId(CAMILLE, KAIN_VAN_HALTER);
  5100. +       addCondMinLevel(MIN_LEVEL, "32548-00.htm");
  5101. +       addCondStartedQuest(Q10879_ExaltedGuideToPower.class.getSimpleName(), "32548-00.htm");
  5102. +   }
  5103. +  
  5104. +   @Override
  5105. +   public String onAdvEvent(String event, Npc npc, PlayerInstance player)
  5106. +   {
  5107. +       final QuestState qs = getQuestState(player, false);
  5108. +       if (qs == null)
  5109. +       {
  5110. +           return null;
  5111. +       }
  5112. +      
  5113. +       String htmltext = null;
  5114. +      
  5115. +       switch (event)
  5116. +       {
  5117. +           case "32548-02.htm":
  5118. +           case "32548-03.htm":
  5119. +           {
  5120. +               htmltext = event;
  5121. +               break;
  5122. +           }
  5123. +           case "32548-04.html":
  5124. +           {
  5125. +               if (hasItem(player, LIONEL_HUNTERS_LIST_PART_5))
  5126. +               {
  5127. +                   qs.startQuest();
  5128. +                   qs.set(Integer.toString(CAMILLE), "false");
  5129. +                   qs.set(Integer.toString(KAIN_VAN_HALTER), "false");
  5130. +                   htmltext = event;
  5131. +               }
  5132. +               break;
  5133. +           }
  5134. +           case "32548-07.html":
  5135. +           {
  5136. +               if (qs.isCond(2))
  5137. +               {
  5138. +                   if ((player.getLevel() >= MIN_LEVEL))
  5139. +                   {
  5140. +                       giveItems(player, KEUCEREUS_CERTIFICATE, 1);
  5141. +                       addExpAndSp(player, 104491683840L, 1064491683);
  5142. +                       qs.exitQuest(false, true);
  5143. +                      
  5144. +                       final Quest mainQ = QuestManager.getInstance().getQuest(Q10879_ExaltedGuideToPower.class.getSimpleName());
  5145. +                       if (mainQ != null)
  5146. +                       {
  5147. +                           mainQ.notifyEvent("SUBQUEST_FINISHED_NOTIFY", npc, player);
  5148. +                       }
  5149. +                       htmltext = event;
  5150. +                   }
  5151. +                   else
  5152. +                   {
  5153. +                       htmltext = getNoQuestLevelRewardMsg(player);
  5154. +                   }
  5155. +                   break;
  5156. +               }
  5157. +           }
  5158. +       }
  5159. +       return htmltext;
  5160. +   }
  5161. +  
  5162. +   @Override
  5163. +   public String onTalk(Npc npc, PlayerInstance player)
  5164. +   {
  5165. +       final QuestState qs = getQuestState(player, true);
  5166. +       String htmltext = getNoQuestMsg(player);
  5167. +       switch (qs.getState())
  5168. +       {
  5169. +           case State.CREATED:
  5170. +           {
  5171. +               if ((npc.getId() == KEUCEREUS_ADMIRAL) && (hasItem(player, LIONEL_HUNTERS_LIST_PART_5)))
  5172. +               {
  5173. +                   htmltext = "32548-01.htm";
  5174. +               }
  5175. +               else
  5176. +               {
  5177. +                   htmltext = "noItem.html";
  5178. +               }
  5179. +               break;
  5180. +           }
  5181. +           case State.STARTED:
  5182. +           {
  5183. +               if ((npc.getId() == KEUCEREUS_ADMIRAL) && qs.get(Integer.toString(CAMILLE)).equals("true") && qs.get(Integer.toString(KAIN_VAN_HALTER)).equals("true"))
  5184. +               {
  5185. +                   htmltext = "32548-06.htm";
  5186. +               }
  5187. +               else
  5188. +               {
  5189. +                   htmltext = "32548-05.html";
  5190. +               }
  5191. +               break;
  5192. +           }
  5193. +           case State.COMPLETED:
  5194. +           {
  5195. +               htmltext = getAlreadyCompletedMsg(player);
  5196. +               break;
  5197. +           }
  5198. +       }
  5199. +       return htmltext;
  5200. +   }
  5201. +  
  5202. +   @Override
  5203. +   public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
  5204. +   {
  5205. +       executeForEachPlayer(player, npc, isSummon, true, false);
  5206. +       return super.onKill(npc, player, isSummon);
  5207. +   }
  5208. +  
  5209. +   @Override
  5210. +   public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon)
  5211. +   {
  5212. +       final QuestState qs = getQuestState(player, false);
  5213. +       if ((qs != null) && qs.isStarted() && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
  5214. +       {
  5215. +           qs.set(Integer.toString(npc.getId()), "true");
  5216. +           notifyKill(npc, player, isSummon);
  5217. +           playSound(player, QuestSound.ITEMSOUND_QUEST_MIDDLE);
  5218. +       }
  5219. +   }
  5220. +}
  5221. Index: dist/game/data/scripts/quests/Q10883_ImmortalHonor/noItem.html
  5222. ===================================================================
  5223. --- dist/game/data/scripts/quests/Q10883_ImmortalHonor/noItem.html  (nonexistent)
  5224. +++ dist/game/data/scripts/quests/Q10883_ImmortalHonor/noItem.html  (working copy)
  5225. @@ -0,0 +1,4 @@
  5226. +<html><body>Admiral Keucereus:<br>
  5227. +I don't know how you found your way here, but I can't do anything for you if you haven't talked to Lionel Hunter.<br>
  5228. +(You don't meet the requirements for proceed with this quest. You need Lionel Hunter's Mission List - Part 5 in your inventory.)
  5229. +</body></html>
  5230. \ No newline at end of file
  5231. Index: dist/game/data/scripts/quests/not_done/Q10514_NewPathToGlory.java
  5232. ===================================================================
  5233. --- dist/game/data/scripts/quests/not_done/Q10514_NewPathToGlory.java   (revision 7687)
  5234. +++ dist/game/data/scripts/quests/not_done/Q10514_NewPathToGlory.java   (nonexistent)
  5235. @@ -1,36 +0,0 @@
  5236. -/*
  5237. - * This file is part of the L2J Mobius project.
  5238. - *
  5239. - * This program is free software: you can redistribute it and/or modify
  5240. - * it under the terms of the GNU General Public License as published by
  5241. - * the Free Software Foundation, either version 3 of the License, or
  5242. - * (at your option) any later version.
  5243. - *
  5244. - * This program is distributed in the hope that it will be useful,
  5245. - * but WITHOUT ANY WARRANTY; without even the implied warranty of
  5246. - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  5247. - * General Public License for more details.
  5248. - *
  5249. - * You should have received a copy of the GNU General Public License
  5250. - * along with this program. If not, see <http://www.gnu.org/licenses/>.
  5251. - */
  5252. -package quests.not_done;
  5253. -
  5254. -import org.l2jmobius.Config;
  5255. -import org.l2jmobius.gameserver.model.quest.Quest;
  5256. -
  5257. -/**
  5258. - * @author Mobius
  5259. - */
  5260. -public class Q10514_NewPathToGlory extends Quest
  5261. -{
  5262. -   private static final int START_NPC = 30070;
  5263. -  
  5264. -   public Q10514_NewPathToGlory()
  5265. -   {
  5266. -       super(10514);
  5267. -       addStartNpc(START_NPC);
  5268. -       addTalkId(START_NPC);
  5269. -       addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
  5270. -   }
  5271. -}
  5272. Index: dist/game/data/scripts/quests/not_done/Q10515_NewWayForPride.java
  5273. ===================================================================
  5274. --- dist/game/data/scripts/quests/not_done/Q10515_NewWayForPride.java   (revision 7687)
  5275. +++ dist/game/data/scripts/quests/not_done/Q10515_NewWayForPride.java   (nonexistent)
  5276. @@ -1,36 +0,0 @@
  5277. -/*
  5278. - * This file is part of the L2J Mobius project.
  5279. - *
  5280. - * This program is free software: you can redistribute it and/or modify
  5281. - * it under the terms of the GNU General Public License as published by
  5282. - * the Free Software Foundation, either version 3 of the License, or
  5283. - * (at your option) any later version.
  5284. - *
  5285. - * This program is distributed in the hope that it will be useful,
  5286. - * but WITHOUT ANY WARRANTY; without even the implied warranty of
  5287. - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  5288. - * General Public License for more details.
  5289. - *
  5290. - * You should have received a copy of the GNU General Public License
  5291. - * along with this program. If not, see <http://www.gnu.org/licenses/>.
  5292. - */
  5293. -package quests.not_done;
  5294. -
  5295. -import org.l2jmobius.Config;
  5296. -import org.l2jmobius.gameserver.model.quest.Quest;
  5297. -
  5298. -/**
  5299. - * @author Mobius
  5300. - */
  5301. -public class Q10515_NewWayForPride extends Quest
  5302. -{
  5303. -   private static final int START_NPC = 30657;
  5304. -  
  5305. -   public Q10515_NewWayForPride()
  5306. -   {
  5307. -       super(10515);
  5308. -       addStartNpc(START_NPC);
  5309. -       addTalkId(START_NPC);
  5310. -       addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
  5311. -   }
  5312. -}
  5313. Index: dist/game/data/scripts/quests/not_done/Q10874_AgainstTheNewEnemy.java
  5314. ===================================================================
  5315. --- dist/game/data/scripts/quests/not_done/Q10874_AgainstTheNewEnemy.java   (revision 7687)
  5316. +++ dist/game/data/scripts/quests/not_done/Q10874_AgainstTheNewEnemy.java   (nonexistent)
  5317. @@ -1,36 +0,0 @@
  5318. -/*
  5319. - * This file is part of the L2J Mobius project.
  5320. - *
  5321. - * This program is free software: you can redistribute it and/or modify
  5322. - * it under the terms of the GNU General Public License as published by
  5323. - * the Free Software Foundation, either version 3 of the License, or
  5324. - * (at your option) any later version.
  5325. - *
  5326. - * This program is distributed in the hope that it will be useful,
  5327. - * but WITHOUT ANY WARRANTY; without even the implied warranty of
  5328. - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  5329. - * General Public License for more details.
  5330. - *
  5331. - * You should have received a copy of the GNU General Public License
  5332. - * along with this program. If not, see <http://www.gnu.org/licenses/>.
  5333. - */
  5334. -package quests.not_done;
  5335. -
  5336. -import org.l2jmobius.Config;
  5337. -import org.l2jmobius.gameserver.model.quest.Quest;
  5338. -
  5339. -/**
  5340. - * @author Mobius
  5341. - */
  5342. -public class Q10874_AgainstTheNewEnemy extends Quest
  5343. -{
  5344. -   private static final int START_NPC = 34230;
  5345. -  
  5346. -   public Q10874_AgainstTheNewEnemy()
  5347. -   {
  5348. -       super(10874);
  5349. -       addStartNpc(START_NPC);
  5350. -       addTalkId(START_NPC);
  5351. -       addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
  5352. -   }
  5353. -}
  5354. Index: dist/game/data/scripts/quests/not_done/Q10875_ForReputation.java
  5355. ===================================================================
  5356. --- dist/game/data/scripts/quests/not_done/Q10875_ForReputation.java    (revision 7687)
  5357. +++ dist/game/data/scripts/quests/not_done/Q10875_ForReputation.java    (nonexistent)
  5358. @@ -1,36 +0,0 @@
  5359. -/*
  5360. - * This file is part of the L2J Mobius project.
  5361. - *
  5362. - * This program is free software: you can redistribute it and/or modify
  5363. - * it under the terms of the GNU General Public License as published by
  5364. - * the Free Software Foundation, either version 3 of the License, or
  5365. - * (at your option) any later version.
  5366. - *
  5367. - * This program is distributed in the hope that it will be useful,
  5368. - * but WITHOUT ANY WARRANTY; without even the implied warranty of
  5369. - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  5370. - * General Public License for more details.
  5371. - *
  5372. - * You should have received a copy of the GNU General Public License
  5373. - * along with this program. If not, see <http://www.gnu.org/licenses/>.
  5374. - */
  5375. -package quests.not_done;
  5376. -
  5377. -import org.l2jmobius.Config;
  5378. -import org.l2jmobius.gameserver.model.quest.Quest;
  5379. -
  5380. -/**
  5381. - * @author Mobius
  5382. - */
  5383. -public class Q10875_ForReputation extends Quest
  5384. -{
  5385. -   private static final int START_NPC = 34237;
  5386. -  
  5387. -   public Q10875_ForReputation()
  5388. -   {
  5389. -       super(10875);
  5390. -       addStartNpc(START_NPC);
  5391. -       addTalkId(START_NPC);
  5392. -       addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
  5393. -   }
  5394. -}
  5395. Index: dist/game/data/scripts/quests/not_done/Q10877_BreakThroughCrisis.java
  5396. ===================================================================
  5397. --- dist/game/data/scripts/quests/not_done/Q10877_BreakThroughCrisis.java   (revision 7687)
  5398. +++ dist/game/data/scripts/quests/not_done/Q10877_BreakThroughCrisis.java   (nonexistent)
  5399. @@ -1,36 +0,0 @@
  5400. -/*
  5401. - * This file is part of the L2J Mobius project.
  5402. - *
  5403. - * This program is free software: you can redistribute it and/or modify
  5404. - * it under the terms of the GNU General Public License as published by
  5405. - * the Free Software Foundation, either version 3 of the License, or
  5406. - * (at your option) any later version.
  5407. - *
  5408. - * This program is distributed in the hope that it will be useful,
  5409. - * but WITHOUT ANY WARRANTY; without even the implied warranty of
  5410. - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  5411. - * General Public License for more details.
  5412. - *
  5413. - * You should have received a copy of the GNU General Public License
  5414. - * along with this program. If not, see <http://www.gnu.org/licenses/>.
  5415. - */
  5416. -package quests.not_done;
  5417. -
  5418. -import org.l2jmobius.Config;
  5419. -import org.l2jmobius.gameserver.model.quest.Quest;
  5420. -
  5421. -/**
  5422. - * @author Mobius
  5423. - */
  5424. -public class Q10877_BreakThroughCrisis extends Quest
  5425. -{
  5426. -   private static final int START_NPC = 34267;
  5427. -  
  5428. -   public Q10877_BreakThroughCrisis()
  5429. -   {
  5430. -       super(10877);
  5431. -       addStartNpc(START_NPC);
  5432. -       addTalkId(START_NPC);
  5433. -       addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
  5434. -   }
  5435. -}
  5436. Index: dist/game/data/scripts/quests/not_done/Q10881_ForThePride.java
  5437. ===================================================================
  5438. --- dist/game/data/scripts/quests/not_done/Q10881_ForThePride.java  (revision 7687)
  5439. +++ dist/game/data/scripts/quests/not_done/Q10881_ForThePride.java  (nonexistent)
  5440. @@ -1,36 +0,0 @@
  5441. -/*
  5442. - * This file is part of the L2J Mobius project.
  5443. - *
  5444. - * This program is free software: you can redistribute it and/or modify
  5445. - * it under the terms of the GNU General Public License as published by
  5446. - * the Free Software Foundation, either version 3 of the License, or
  5447. - * (at your option) any later version.
  5448. - *
  5449. - * This program is distributed in the hope that it will be useful,
  5450. - * but WITHOUT ANY WARRANTY; without even the implied warranty of
  5451. - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  5452. - * General Public License for more details.
  5453. - *
  5454. - * You should have received a copy of the GNU General Public License
  5455. - * along with this program. If not, see <http://www.gnu.org/licenses/>.
  5456. - */
  5457. -package quests.not_done;
  5458. -
  5459. -import org.l2jmobius.Config;
  5460. -import org.l2jmobius.gameserver.model.quest.Quest;
  5461. -
  5462. -/**
  5463. - * @author Mobius
  5464. - */
  5465. -public class Q10881_ForThePride extends Quest
  5466. -{
  5467. -   private static final int START_NPC = 34236;
  5468. -  
  5469. -   public Q10881_ForThePride()
  5470. -   {
  5471. -       super(10881);
  5472. -       addStartNpc(START_NPC);
  5473. -       addTalkId(START_NPC);
  5474. -       addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
  5475. -   }
  5476. -}
  5477. Index: dist/game/data/scripts/quests/not_done/Q10882_VictoryCollection.java
  5478. ===================================================================
  5479. --- dist/game/data/scripts/quests/not_done/Q10882_VictoryCollection.java    (revision 7687)
  5480. +++ dist/game/data/scripts/quests/not_done/Q10882_VictoryCollection.java    (nonexistent)
  5481. @@ -1,36 +0,0 @@
  5482. -/*
  5483. - * This file is part of the L2J Mobius project.
  5484. - *
  5485. - * This program is free software: you can redistribute it and/or modify
  5486. - * it under the terms of the GNU General Public License as published by
  5487. - * the Free Software Foundation, either version 3 of the License, or
  5488. - * (at your option) any later version.
  5489. - *
  5490. - * This program is distributed in the hope that it will be useful,
  5491. - * but WITHOUT ANY WARRANTY; without even the implied warranty of
  5492. - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  5493. - * General Public License for more details.
  5494. - *
  5495. - * You should have received a copy of the GNU General Public License
  5496. - * along with this program. If not, see <http://www.gnu.org/licenses/>.
  5497. - */
  5498. -package quests.not_done;
  5499. -
  5500. -import org.l2jmobius.Config;
  5501. -import org.l2jmobius.gameserver.model.quest.Quest;
  5502. -
  5503. -/**
  5504. - * @author Mobius
  5505. - */
  5506. -public class Q10882_VictoryCollection extends Quest
  5507. -{
  5508. -   private static final int START_NPC = 34180;
  5509. -  
  5510. -   public Q10882_VictoryCollection()
  5511. -   {
  5512. -       super(10882);
  5513. -       addStartNpc(START_NPC);
  5514. -       addTalkId(START_NPC);
  5515. -       addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
  5516. -   }
  5517. -}
  5518. Index: dist/game/data/scripts/quests/not_done/Q10883_ImmortalHonor.java
  5519. ===================================================================
  5520. --- dist/game/data/scripts/quests/not_done/Q10883_ImmortalHonor.java    (revision 7687)
  5521. +++ dist/game/data/scripts/quests/not_done/Q10883_ImmortalHonor.java    (nonexistent)
  5522. @@ -1,36 +0,0 @@
  5523. -/*
  5524. - * This file is part of the L2J Mobius project.
  5525. - *
  5526. - * This program is free software: you can redistribute it and/or modify
  5527. - * it under the terms of the GNU General Public License as published by
  5528. - * the Free Software Foundation, either version 3 of the License, or
  5529. - * (at your option) any later version.
  5530. - *
  5531. - * This program is distributed in the hope that it will be useful,
  5532. - * but WITHOUT ANY WARRANTY; without even the implied warranty of
  5533. - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  5534. - * General Public License for more details.
  5535. - *
  5536. - * You should have received a copy of the GNU General Public License
  5537. - * along with this program. If not, see <http://www.gnu.org/licenses/>.
  5538. - */
  5539. -package quests.not_done;
  5540. -
  5541. -import org.l2jmobius.Config;
  5542. -import org.l2jmobius.gameserver.model.quest.Quest;
  5543. -
  5544. -/**
  5545. - * @author Mobius
  5546. - */
  5547. -public class Q10883_ImmortalHonor extends Quest
  5548. -{
  5549. -   private static final int START_NPC = 32548;
  5550. -  
  5551. -   public Q10883_ImmortalHonor()
  5552. -   {
  5553. -       super(10883);
  5554. -       addStartNpc(START_NPC);
  5555. -       addTalkId(START_NPC);
  5556. -       addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
  5557. -   }
  5558. -}
  5559.  
Add Comment
Please, Sign In to add comment