Advertisement
CostyKiller

Added Saviors Path Quests

Apr 7th, 2021
1,322
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 93.56 KB | None | 0 0
  1. Index: dist/game/data/scripts/quests/QuestMasterHandler.java
  2. ===================================================================
  3. --- dist/game/data/scripts/quests/QuestMasterHandler.java   (revision 8524)
  4. +++ dist/game/data/scripts/quests/QuestMasterHandler.java   (working copy)
  5. @@ -52,6 +52,12 @@
  6.  import quests.Q10823_ExaltedOneWhoShattersTheLimit.Q10823_ExaltedOneWhoShattersTheLimit;
  7.  import quests.Q10873_ExaltedReachingAnotherLevel.Q10873_ExaltedReachingAnotherLevel;
  8.  import quests.Q10879_ExaltedGuideToPower.Q10879_ExaltedGuideToPower;
  9. +import quests.Q10885_SaviorsPathDiscovery.Q10885_SaviorsPathDiscovery;
  10. +import quests.Q10886_SaviorsPathSearchTheRefinery.Q10886_SaviorsPathSearchTheRefinery;
  11. +import quests.Q10887_SaviorsPathDemonsAndAtelia.Q10887_SaviorsPathDemonsAndAtelia;
  12. +import quests.Q10888_SaviorsPathDefeatTheEmbryo.Q10888_SaviorsPathDefeatTheEmbryo;
  13. +import quests.Q10889_SaviorsPathFallenEmperorsThrone.Q10889_SaviorsPathFallenEmperorsThrone;
  14. +import quests.Q10890_SaviorsPathHallOfEtina.Q10890_SaviorsPathHallOfEtina;
  15.  import quests.Q11024_PathOfDestinyBeginning.Q11024_PathOfDestinyBeginning;
  16.  import quests.Q11025_PathOfDestinyProving.Q11025_PathOfDestinyProving;
  17.  import quests.Q11026_PathOfDestinyConviction.Q11026_PathOfDestinyConviction;
  18. @@ -67,11 +73,6 @@
  19.  import quests.not_done.Q01901_StormIsleFurtiveDeal;
  20.  import quests.not_done.Q10595_TheDimensionalWarpPart8;
  21.  import quests.not_done.Q10596_TheDimensionalWarpPart9;
  22. -import quests.not_done.Q10886_SaviorsPathSearchTheRefinery;
  23. -import quests.not_done.Q10887_SaviorsPathDemonsAndAtelia;
  24. -import quests.not_done.Q10888_SaviorsPathDefeatTheEmbryo;
  25. -import quests.not_done.Q10889_SaviorsPathFallenEmperorsThrone;
  26. -import quests.not_done.Q10890_SaviorsPathFallOfEtina;
  27.  
  28.  /**
  29.   * @author NosBit
  30. @@ -126,11 +127,12 @@
  31.         Q10823_ExaltedOneWhoShattersTheLimit.class,
  32.         Q10873_ExaltedReachingAnotherLevel.class,
  33.         Q10879_ExaltedGuideToPower.class,
  34. -       Q10886_SaviorsPathSearchTheRefinery.class, // TODO: Not done.
  35. -       Q10887_SaviorsPathDemonsAndAtelia.class, // TODO: Not done.
  36. -       Q10888_SaviorsPathDefeatTheEmbryo.class, // TODO: Not done.
  37. -       Q10889_SaviorsPathFallenEmperorsThrone.class, // TODO: Not done.
  38. -       Q10890_SaviorsPathFallOfEtina.class, // TODO: Not done.
  39. +       Q10885_SaviorsPathDiscovery.class,
  40. +       Q10886_SaviorsPathSearchTheRefinery.class,
  41. +       Q10887_SaviorsPathDemonsAndAtelia.class,
  42. +       Q10888_SaviorsPathDefeatTheEmbryo.class,
  43. +       Q10889_SaviorsPathFallenEmperorsThrone.class,
  44. +       Q10890_SaviorsPathHallOfEtina.class,
  45.         Q11024_PathOfDestinyBeginning.class,
  46.         Q11025_PathOfDestinyProving.class,
  47.         Q11026_PathOfDestinyConviction.class,
  48. Index: dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/34057-00.html
  49. ===================================================================
  50. --- dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/34057-00.html (nonexistent)
  51. +++ dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/34057-00.html (working copy)
  52. @@ -0,0 +1,5 @@
  53. +<html><body>Verdure Elder Elikia:<br>
  54. +Hello, adventrurer!<br>
  55. +I have no news for you. There's nothing I can tell you.<br>
  56. +(Available to characters of Lv. 103+ after the Awakening or the Liberation.)<br>
  57. +</body></html>
  58. \ No newline at end of file
  59. Index: dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/34057-01.htm
  60. ===================================================================
  61. --- dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/34057-01.htm  (nonexistent)
  62. +++ dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/34057-01.htm  (working copy)
  63. @@ -0,0 +1,4 @@
  64. +<html><body>Verdure Elder Elikia:<br>
  65. +Have you brought me the message from Leona Blackbird?
  66. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10885_SaviorsPathDiscovery 34057-03.html">"Yes, here it is."</Button>
  67. +</body></html>
  68. \ No newline at end of file
  69. Index: dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/34057-02.html
  70. ===================================================================
  71. --- dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/34057-02.html (nonexistent)
  72. +++ dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/34057-02.html (working copy)
  73. @@ -0,0 +1,3 @@
  74. +<html><body>Verdure Elder Elikia:<br>
  75. +I don't see any message from Leona Blackbird, make sure you bring that to me.
  76. +</body></html>
  77. \ No newline at end of file
  78. Index: dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/34057-03.html
  79. ===================================================================
  80. --- dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/34057-03.html (nonexistent)
  81. +++ dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/34057-03.html (working copy)
  82. @@ -0,0 +1,3 @@
  83. +<html><body>Verdure Elder Elikia:<br>
  84. +Great! You have brought it, now let me read it.<br>
  85. +</body></html>
  86. \ No newline at end of file
  87. Index: dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/34057-04.htm
  88. ===================================================================
  89. --- dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/34057-04.htm  (nonexistent)
  90. +++ dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/34057-04.htm  (working copy)
  91. @@ -0,0 +1,4 @@
  92. +<html><body>Verdure Elder Elikia:<br>
  93. +I've read the message from Leona Blackbird you should go see her to tell you what you have to do.<br>
  94. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10885_SaviorsPathDiscovery 34057-05.html">"Ok, I'll go."</Button>
  95. +</body></html>
  96. \ No newline at end of file
  97. Index: dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/34057-05.html
  98. ===================================================================
  99. --- dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/34057-05.html (nonexistent)
  100. +++ dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/34057-05.html (working copy)
  101. @@ -0,0 +1,3 @@
  102. +<html><body>Verdure Elder Elikia:<br>
  103. +Leona Blackbird is waiting for you at Atelia Refinery entrance.
  104. +</body></html>
  105. \ No newline at end of file
  106. Index: dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/34425-01.htm
  107. ===================================================================
  108. --- dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/34425-01.htm  (nonexistent)
  109. +++ dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/34425-01.htm  (working copy)
  110. @@ -0,0 +1,6 @@
  111. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  112. +Nice to meet you at last, although this may not be our first encounter. I have so much to tell you about what I found from this place.<br>
  113. +If this plan works, we'll be able to down Etis van Etina for sure.<br>
  114. +I will tell you what we must work on together. Are you ready?<br>
  115. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10885_SaviorsPathDiscovery 34425-03.html">"I am ready."</Button>
  116. +</body></html>
  117. \ No newline at end of file
  118. Index: dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/34425-02.html
  119. ===================================================================
  120. --- dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/34425-02.html (nonexistent)
  121. +++ dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/34425-02.html (working copy)
  122. @@ -0,0 +1,4 @@
  123. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  124. +Hello, Dr. Chaos' office! How may I help you?<br>
  125. +This is a restricted area and I can't explain what's going on in here to those who are unidentified.<br>
  126. +</body></html>
  127. \ No newline at end of file
  128. Index: dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/34425-03.html
  129. ===================================================================
  130. --- dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/34425-03.html (nonexistent)
  131. +++ dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/34425-03.html (working copy)
  132. @@ -0,0 +1,3 @@
  133. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  134. +Then let's talk about the plan to take down Etis van Etina and bring peace to the material world. Please speak to me once all preparations are done.
  135. +</body></html>
  136. \ No newline at end of file
  137. Index: dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/Message.html
  138. ===================================================================
  139. --- dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/Message.html  (nonexistent)
  140. +++ dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/Message.html  (working copy)
  141. @@ -0,0 +1,5 @@
  142. +<html><body>Message:<br>
  143. +You received a message from Leona Blackbird, this means you can start Savior's Path quests.<br>
  144. +To learn more, go to Blackbird Campsite and talk to Elikia.<br>
  145. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10885_SaviorsPathDiscovery closeMessage">"Close message."</Button>
  146. +</body></html>
  147. \ No newline at end of file
  148. Index: dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/Q10885_SaviorsPathDiscovery.java
  149. ===================================================================
  150. --- dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/Q10885_SaviorsPathDiscovery.java  (nonexistent)
  151. +++ dist/game/data/scripts/quests/Q10885_SaviorsPathDiscovery/Q10885_SaviorsPathDiscovery.java  (working copy)
  152. @@ -0,0 +1,237 @@
  153. +/*
  154. + * This file is part of the L2J Mobius project.
  155. + *
  156. + * This program is free software: you can redistribute it and/or modify
  157. + * it under the terms of the GNU General Public License as published by
  158. + * the Free Software Foundation, either version 3 of the License, or
  159. + * (at your option) any later version.
  160. + *
  161. + * This program is distributed in the hope that it will be useful,
  162. + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  163. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  164. + * General Public License for more details.
  165. + *
  166. + * You should have received a copy of the GNU General Public License
  167. + * along with this program. If not, see <http://www.gnu.org/licenses/>.
  168. + */
  169. +package quests.Q10885_SaviorsPathDiscovery;
  170. +
  171. +import org.l2jmobius.gameserver.enums.QuestSound;
  172. +import org.l2jmobius.gameserver.model.actor.Npc;
  173. +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
  174. +import org.l2jmobius.gameserver.model.events.EventType;
  175. +import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
  176. +import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
  177. +import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
  178. +import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass;
  179. +import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged;
  180. +import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin;
  181. +import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPressTutorialMark;
  182. +import org.l2jmobius.gameserver.model.quest.Quest;
  183. +import org.l2jmobius.gameserver.model.quest.QuestState;
  184. +import org.l2jmobius.gameserver.model.quest.State;
  185. +import org.l2jmobius.gameserver.network.NpcStringId;
  186. +import org.l2jmobius.gameserver.network.SystemMessageId;
  187. +import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
  188. +import org.l2jmobius.gameserver.network.serverpackets.TutorialCloseHtml;
  189. +import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
  190. +import org.l2jmobius.gameserver.network.serverpackets.TutorialShowQuestionMark;
  191. +
  192. +/**
  193. + * Savior's Path - Discovery (10885)
  194. + * @URL https://l2wiki.com/Savior%27s_Path_-_Discovery
  195. + * @author CostyKiller
  196. + */
  197. +public class Q10885_SaviorsPathDiscovery extends Quest
  198. +{
  199. +   // Npcs
  200. +   private static final int LEONA_BLACKBIRD = 34425;
  201. +   private static final int ELIKIA = 34057;
  202. +   // Items
  203. +   private static final int LEONA_BLACKBIRDS_MESSAGE = 48545;
  204. +   // Misc
  205. +   private static final int MIN_LEVEL = 103;
  206. +   private final NpcStringId _startMessage = NpcStringId.A_MESSAGE_HAS_ARRIVED_FROM_LEONA_BLACKBIRD_NCLICK_THE_QUESTION_MARK_ICON_TO_READ_IT;
  207. +  
  208. +   public Q10885_SaviorsPathDiscovery()
  209. +   {
  210. +       super(10885);
  211. +       addTalkId(LEONA_BLACKBIRD, ELIKIA);
  212. +       addCondMinLevel(MIN_LEVEL, "34425-00.html");
  213. +       registerQuestItems(LEONA_BLACKBIRDS_MESSAGE);
  214. +   }
  215. +  
  216. +   @Override
  217. +   public String onAdvEvent(String event, Npc npc, PlayerInstance player)
  218. +   {
  219. +       final QuestState qs = getQuestState(player, false);
  220. +       if (qs == null)
  221. +       {
  222. +           return null;
  223. +       }
  224. +      
  225. +       String htmltext = null;
  226. +      
  227. +       switch (event)
  228. +       {
  229. +           case "34057-03.html":
  230. +           {
  231. +               if (qs.isCond(1) && hasQuestItems(player, LEONA_BLACKBIRDS_MESSAGE))
  232. +               {
  233. +                   qs.setCond(2);
  234. +               }
  235. +               htmltext = event;
  236. +               break;
  237. +           }
  238. +           case "34057-05.html":
  239. +           {
  240. +               if (qs.isCond(2) && hasQuestItems(player, LEONA_BLACKBIRDS_MESSAGE))
  241. +               {
  242. +                   qs.setCond(3);
  243. +               }
  244. +               htmltext = event;
  245. +               break;
  246. +           }
  247. +           case "34425-03.html":
  248. +           {
  249. +               if (qs.isCond(3) && hasQuestItems(player, LEONA_BLACKBIRDS_MESSAGE))
  250. +               {
  251. +                   if ((player.getLevel() >= MIN_LEVEL))
  252. +                   {
  253. +                       addExpAndSp(player, 906387492, 906387);
  254. +                       qs.exitQuest(false, true);
  255. +                       htmltext = event;
  256. +                   }
  257. +                   else
  258. +                   {
  259. +                       htmltext = getNoQuestLevelRewardMsg(player);
  260. +                   }
  261. +                   break;
  262. +               }
  263. +           }
  264. +       }
  265. +       return htmltext;
  266. +   }
  267. +  
  268. +   @Override
  269. +   public String onTalk(Npc npc, PlayerInstance player)
  270. +   {
  271. +       final QuestState qs = getQuestState(player, true);
  272. +       String htmltext = getNoQuestMsg(player);
  273. +       switch (qs.getState())
  274. +       {
  275. +           case State.STARTED:
  276. +           {
  277. +               switch (npc.getId())
  278. +               {
  279. +                   case LEONA_BLACKBIRD:
  280. +                   {
  281. +                       if (qs.isCond(3) && hasQuestItems(player, LEONA_BLACKBIRDS_MESSAGE))
  282. +                       {
  283. +                           htmltext = "34425-01.htm";
  284. +                       }
  285. +                       else
  286. +                       {
  287. +                           htmltext = "34425-02.html";
  288. +                       }
  289. +                       break;
  290. +                   }
  291. +                   case ELIKIA:
  292. +                   {
  293. +                       if (qs.isCond(1))
  294. +                       {
  295. +                           if (hasQuestItems(player, LEONA_BLACKBIRDS_MESSAGE))
  296. +                           {
  297. +                               htmltext = "34057-01.htm";
  298. +                           }
  299. +                           else
  300. +                           {
  301. +                               htmltext = "34057-02.html";
  302. +                           }
  303. +                       }
  304. +                       else if (qs.isCond(2) && hasQuestItems(player, LEONA_BLACKBIRDS_MESSAGE))
  305. +                       {
  306. +                           htmltext = "34057-04.htm";
  307. +                       }
  308. +                       break;
  309. +                   }
  310. +               }
  311. +               break;
  312. +           }
  313. +           case State.COMPLETED:
  314. +           {
  315. +               htmltext = getAlreadyCompletedMsg(player);
  316. +               break;
  317. +           }
  318. +       }
  319. +       return htmltext;
  320. +   }
  321. +  
  322. +   @RegisterEvent(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK)
  323. +   @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
  324. +   public void onPlayerPressTutorialMark(OnPlayerPressTutorialMark event)
  325. +   {
  326. +       final PlayerInstance player = event.getPlayer();
  327. +       if ((event.getMarkId() == getId()) && canStartQuest(player))
  328. +       {
  329. +           final String html = getHtm(player, "Message.html");
  330. +           final QuestState qs = getQuestState(player, true);
  331. +           qs.startQuest();
  332. +           player.sendPacket(new TutorialShowHtml(html));
  333. +           giveItems(player, LEONA_BLACKBIRDS_MESSAGE, 1);
  334. +       }
  335. +   }
  336. +  
  337. +   @RegisterEvent(EventType.ON_PLAYER_BYPASS)
  338. +   @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
  339. +   public void OnPlayerBypass(OnPlayerBypass event)
  340. +   {
  341. +       if (event.getCommand().startsWith("Quest Q10885_SaviorsPathDiscovery "))
  342. +       {
  343. +           final String html = onAdvEvent(event.getCommand().substring(34), null, event.getPlayer());
  344. +           event.getPlayer().sendPacket(TutorialCloseHtml.STATIC_PACKET);
  345. +           showResult(event.getPlayer(), html);
  346. +       }
  347. +   }
  348. +  
  349. +   @RegisterEvent(EventType.ON_PLAYER_LEVEL_CHANGED)
  350. +   @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
  351. +   public void OnPlayerLevelChanged(OnPlayerLevelChanged event)
  352. +   {
  353. +       final PlayerInstance player = event.getPlayer();
  354. +       final QuestState qs = getQuestState(player, false);
  355. +       if ((qs == null) && (event.getOldLevel() < event.getNewLevel()) && canStartQuest(player))
  356. +       {
  357. +           player.sendPacket(new TutorialShowQuestionMark(getId(), 0));
  358. +           playSound(player, QuestSound.ITEMSOUND_QUEST_TUTORIAL);
  359. +           showOnScreenMsg(player, _startMessage, ExShowScreenMessage.TOP_CENTER, 10000);
  360. +       }
  361. +   }
  362. +  
  363. +   @RegisterEvent(EventType.ON_PLAYER_LOGIN)
  364. +   @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
  365. +   public void OnPlayerLogin(OnPlayerLogin event)
  366. +   {
  367. +       final PlayerInstance player = event.getPlayer();
  368. +       if (player == null)
  369. +       {
  370. +           return;
  371. +       }
  372. +       final QuestState qs = getQuestState(player, false);
  373. +       if ((qs == null) && (player.getLevel() > MIN_LEVEL))
  374. +       {
  375. +           player.sendPacket(new TutorialShowQuestionMark(getId(), 0));
  376. +           playSound(player, QuestSound.ITEMSOUND_QUEST_TUTORIAL);
  377. +           showOnScreenMsg(player, _startMessage, ExShowScreenMessage.TOP_CENTER, 10000);
  378. +       }
  379. +   }
  380. +  
  381. +   @Override
  382. +   public void onQuestAborted(PlayerInstance player)
  383. +   {
  384. +       final QuestState qs = getQuestState(player, true);
  385. +       qs.startQuest();
  386. +       giveItems(player, LEONA_BLACKBIRDS_MESSAGE, 1);
  387. +       player.sendPacket(SystemMessageId.THIS_QUEST_CANNOT_BE_DELETED);
  388. +   }
  389. +}
  390. Index: dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34425-00.html
  391. ===================================================================
  392. --- dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34425-00.html (nonexistent)
  393. +++ dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34425-00.html (working copy)
  394. @@ -0,0 +1,4 @@
  395. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  396. +Everything must be carried out with utmost caution. Your strength needs to be at a certain level, so please come back when you're stronger.<br>
  397. +(This quest is for characters Lv. 103 and higher who have completed the Savior's Path - Discovery quest.)
  398. +</body></html>
  399. \ No newline at end of file
  400. Index: dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34425-01.htm
  401. ===================================================================
  402. --- dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34425-01.htm  (nonexistent)
  403. +++ dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34425-01.htm  (working copy)
  404. @@ -0,0 +1,6 @@
  405. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  406. +Are you done preparing? Then let me give you a summary of what I've found out about the Atelia Refinery.<br>
  407. +This place was suspicious ever since Atelia Fortress was first built, but there was no way to reach it.<br>
  408. +First, I thought this was a base for Embryos to advance to Aden, but it seems it is playing some kind of a role regarding Etis van Etina's power even within Embryos.<br>
  409. +<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10886_SaviorsPathSearchTheRefinery 34425-02.htm">"Go on."</Button>
  410. +</body></html>
  411. \ No newline at end of file
  412. Index: dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34425-02.htm
  413. ===================================================================
  414. --- dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34425-02.htm  (nonexistent)
  415. +++ dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34425-02.htm  (working copy)
  416. @@ -0,0 +1,6 @@
  417. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  418. +When Devianne and I investigated inside the refinery, we could sense a flow of powerful energy. Without a doubt, it indicates that this place is more than just a fortress for conquering the Aden Continent.<br>
  419. +However, I have not recovered my full strength yet so I could not search the entire Atelia Refinery throughly.<br>
  420. +I am looking for someone who is strong enough to investigate this place alone. I think you're up for the task, so how about it? Can you go investigate inside?<br>
  421. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10886_SaviorsPathSearchTheRefinery 34425-03.htm">"What should I do?"</Button>
  422. +</body></html>
  423. \ No newline at end of file
  424. Index: dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34425-03.htm
  425. ===================================================================
  426. --- dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34425-03.htm  (nonexistent)
  427. +++ dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34425-03.htm  (working copy)
  428. @@ -0,0 +1,6 @@
  429. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  430. +Thank you for agreeing to help. I need to tell you something about this task. There isn't a physical passage that leads to the Atelia Refinery.<br>
  431. +The only way to get inside the Atelia Refinery is by energy. There may be some passages inside Atelia Fortress but I was unable to find out.<br>
  432. +Fortunately, Devianne used her skills to create a teleport device that takes you inside the Atelia Refinery. Please speak to Devianne about getting inside.<br>
  433. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10886_SaviorsPathSearchTheRefinery 34425-04.html">"Should I go talk to Devianne?"</Button>
  434. +</body></html>
  435. \ No newline at end of file
  436. Index: dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34425-04.html
  437. ===================================================================
  438. --- dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34425-04.html (nonexistent)
  439. +++ dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34425-04.html (working copy)
  440. @@ -0,0 +1,4 @@
  441. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  442. +Yes. Go speak to <font color="LEVEL">Devianne</font>.
  443. +Devianne will tell you how to get to the Atelia Refinery and what you must do there.<br>
  444. +</body></html>
  445. \ No newline at end of file
  446. Index: dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34425-05.html
  447. ===================================================================
  448. --- dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34425-05.html (nonexistent)
  449. +++ dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34425-05.html (working copy)
  450. @@ -0,0 +1,3 @@
  451. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  452. +Go speak to <font color="LEVEL">Devianne</font>, she will tell you how to get to the Atelia Refinery and what you must do there.<br>
  453. +</body></html>
  454. \ No newline at end of file
  455. Index: dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34427-01.htm
  456. ===================================================================
  457. --- dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34427-01.htm  (nonexistent)
  458. +++ dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34427-01.htm  (working copy)
  459. @@ -0,0 +1,5 @@
  460. +<html><body>Truth Seeker Devianne:<br>
  461. +Are you done talking to Leona? Did she really ask you to search inside the Atelia Refinery?<br>
  462. +Of course, if that's her decision, I have nothing against it. I'm just surprised, that's all.<br>
  463. +<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10886_SaviorsPathSearchTheRefinery 34427-02.html">"It's true."</Button>
  464. +</body></html>
  465. \ No newline at end of file
  466. Index: dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34427-02.html
  467. ===================================================================
  468. --- dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34427-02.html (nonexistent)
  469. +++ dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34427-02.html (working copy)
  470. @@ -0,0 +1,6 @@
  471. +<html><body>Truth Seeker Devianne:<br>
  472. +So she really did trust you with the search in the Atelia Refinery. Then allow me to tell you a few things I found out about this place.<br>
  473. +The inside of the Atelia Refinery is divided into a few areas, but you must check something before checking each area.<br>
  474. +You must find out about the identity of <font color="LEVEL">Atelia Yuyurina</font> and <font color="LEVEL">Atelia Popobena</font> in the hallways connected to each area. I think they might be receiving orders from Etis van Etina, so I need you to collect proof from them.<br>
  475. +Use the <font color="LEVEL">Atelia Refinery Teleport Device</font> I have installed to teleport to the <font color="LEVEL">inside of Atelia Refinery</font>, hunt Atelia Yuyurina and Atelia Popobena and collect <font color="LEVEL">Tokens of Etina</font> for me.<br>
  476. +</body></html>
  477. \ No newline at end of file
  478. Index: dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34427-03.html
  479. ===================================================================
  480. --- dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34427-03.html (nonexistent)
  481. +++ dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34427-03.html (working copy)
  482. @@ -0,0 +1,3 @@
  483. +<html><body>Truth Seeker Devianne:<br>
  484. +Use the <font color="LEVEL">Atelia Refinery Teleport Device</font> I have installed to teleport to the <font color="LEVEL">inside of Atelia Refinery</font>, hunt Atelia Yuyurina and Atelia Popobena and collect <font color="LEVEL">Tokens of Etina</font> for me.<br>
  485. +</body></html>
  486. \ No newline at end of file
  487. Index: dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34427-04.htm
  488. ===================================================================
  489. --- dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34427-04.htm  (nonexistent)
  490. +++ dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34427-04.htm  (working copy)
  491. @@ -0,0 +1,4 @@
  492. +<html><body>Truth Seeker Devianne:<br>
  493. +Oh... you collected those <font color="LEVEL">Tokens of Etina</font> for me.<br>
  494. +<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10886_SaviorsPathSearchTheRefinery 34427-05.html">"Yes, here they are."</Button>
  495. +</body></html>
  496. \ No newline at end of file
  497. Index: dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34427-05.html
  498. ===================================================================
  499. --- dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34427-05.html (nonexistent)
  500. +++ dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/34427-05.html (working copy)
  501. @@ -0,0 +1,3 @@
  502. +<html><body>Truth Seeker Devianne:<br>
  503. +Great work.
  504. +</body></html>
  505. \ No newline at end of file
  506. Index: dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/Q10886_SaviorsPathSearchTheRefinery.java
  507. ===================================================================
  508. --- dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/Q10886_SaviorsPathSearchTheRefinery.java  (nonexistent)
  509. +++ dist/game/data/scripts/quests/Q10886_SaviorsPathSearchTheRefinery/Q10886_SaviorsPathSearchTheRefinery.java  (working copy)
  510. @@ -0,0 +1,199 @@
  511. +/*
  512. + * This file is part of the L2J Mobius project.
  513. + *
  514. + * This program is free software: you can redistribute it and/or modify
  515. + * it under the terms of the GNU General Public License as published by
  516. + * the Free Software Foundation, either version 3 of the License, or
  517. + * (at your option) any later version.
  518. + *
  519. + * This program is distributed in the hope that it will be useful,
  520. + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  521. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  522. + * General Public License for more details.
  523. + *
  524. + * You should have received a copy of the GNU General Public License
  525. + * along with this program. If not, see <http://www.gnu.org/licenses/>.
  526. + */
  527. +package quests.Q10886_SaviorsPathSearchTheRefinery;
  528. +
  529. +import org.l2jmobius.Config;
  530. +import org.l2jmobius.gameserver.enums.QuestSound;
  531. +import org.l2jmobius.gameserver.model.actor.Npc;
  532. +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
  533. +import org.l2jmobius.gameserver.model.quest.Quest;
  534. +import org.l2jmobius.gameserver.model.quest.QuestState;
  535. +import org.l2jmobius.gameserver.model.quest.State;
  536. +
  537. +import quests.Q10885_SaviorsPathDiscovery.Q10885_SaviorsPathDiscovery;
  538. +
  539. +/**
  540. + * Savior's Path - Search the Refinery (10886)
  541. + * @URL https://l2wiki.com/Savior%27s_Path_-_Search_the_Refinery
  542. + * @author CostyKiller
  543. + */
  544. +public class Q10886_SaviorsPathSearchTheRefinery extends Quest
  545. +{
  546. +   // Npcs
  547. +   private static final int LEONA_BLACKBIRD = 34425;
  548. +   private static final int DEVIANNE = 34427;
  549. +   // Monsters
  550. +   private static final int ATELIA_YUYURINA = 24159;
  551. +   private static final int ATELIA_POPOBENA = 24160;
  552. +   // Items
  553. +   private static final int TOKEN_OF_ETINA = 48546;
  554. +   // Misc
  555. +   private static final int MIN_LEVEL = 103;
  556. +   private static final int TOKEN_OF_ETINA_NEEDED = 20;
  557. +  
  558. +   public Q10886_SaviorsPathSearchTheRefinery()
  559. +   {
  560. +       super(10886);
  561. +       addStartNpc(LEONA_BLACKBIRD);
  562. +       addTalkId(LEONA_BLACKBIRD, DEVIANNE);
  563. +       addKillId(ATELIA_YUYURINA, ATELIA_POPOBENA);
  564. +       addCondMinLevel(MIN_LEVEL, "34425-00.html");
  565. +       addCondCompletedQuest(Q10885_SaviorsPathDiscovery.class.getSimpleName(), "34425-00.html");
  566. +       registerQuestItems(TOKEN_OF_ETINA);
  567. +   }
  568. +  
  569. +   @Override
  570. +   public String onAdvEvent(String event, Npc npc, PlayerInstance player)
  571. +   {
  572. +       final QuestState qs = getQuestState(player, false);
  573. +       if (qs == null)
  574. +       {
  575. +           return null;
  576. +       }
  577. +      
  578. +       String htmltext = null;
  579. +      
  580. +       switch (event)
  581. +       {
  582. +           case "34425-02.htm":
  583. +           case "34425-03.htm":
  584. +           {
  585. +               htmltext = event;
  586. +               break;
  587. +           }
  588. +           case "34425-04.html":
  589. +           {
  590. +               if ((player.getLevel() >= MIN_LEVEL))
  591. +               {
  592. +                   qs.startQuest();
  593. +                   qs.setMemoState(1);
  594. +                   htmltext = event;
  595. +               }
  596. +               break;
  597. +           }
  598. +           case "34427-02.html":
  599. +           {
  600. +               if (qs.isCond(1))
  601. +               {
  602. +                   qs.setCond(2);
  603. +               }
  604. +               htmltext = event;
  605. +               break;
  606. +           }
  607. +           case "34427-05.html":
  608. +           {
  609. +               if (qs.isCond(3))
  610. +               {
  611. +                   if ((player.getLevel() >= MIN_LEVEL))
  612. +                   {
  613. +                       addExpAndSp(player, 27191624760L, 27191610);
  614. +                       giveAdena(player, 3077301, true);
  615. +                       qs.exitQuest(false, true);
  616. +                       htmltext = event;
  617. +                   }
  618. +                   else
  619. +                   {
  620. +                       htmltext = getNoQuestLevelRewardMsg(player);
  621. +                   }
  622. +                   break;
  623. +               }
  624. +           }
  625. +       }
  626. +       return htmltext;
  627. +   }
  628. +  
  629. +   @Override
  630. +   public String onTalk(Npc npc, PlayerInstance player)
  631. +   {
  632. +       final QuestState qs = getQuestState(player, true);
  633. +       String htmltext = getNoQuestMsg(player);
  634. +       switch (qs.getState())
  635. +       {
  636. +           case State.CREATED:
  637. +           {
  638. +               htmltext = "34425-01.htm";
  639. +               break;
  640. +           }
  641. +           case State.STARTED:
  642. +           {
  643. +               switch (npc.getId())
  644. +               {
  645. +                   case LEONA_BLACKBIRD:
  646. +                   {
  647. +                       if (qs.isCond(1) && (qs.getMemoState() != 1))
  648. +                       {
  649. +                           htmltext = "34425-01.htm";
  650. +                       }
  651. +                       else
  652. +                       {
  653. +                           htmltext = "34425-05.html";
  654. +                       }
  655. +                       break;
  656. +                   }
  657. +                   case DEVIANNE:
  658. +                   {
  659. +                       if (qs.isCond(1))
  660. +                       {
  661. +                           htmltext = "34427-01.htm";
  662. +                       }
  663. +                       else if (qs.isCond(2) && (getQuestItemsCount(player, TOKEN_OF_ETINA) < TOKEN_OF_ETINA_NEEDED))
  664. +                       {
  665. +                           htmltext = "34427-03.html";
  666. +                       }
  667. +                       else if (qs.isCond(3) && (getQuestItemsCount(player, TOKEN_OF_ETINA) >= TOKEN_OF_ETINA_NEEDED))
  668. +                       {
  669. +                           htmltext = "34427-04.htm";
  670. +                       }
  671. +                       break;
  672. +                   }
  673. +               }
  674. +               break;
  675. +           }
  676. +           case State.COMPLETED:
  677. +           {
  678. +               htmltext = getAlreadyCompletedMsg(player);
  679. +               break;
  680. +           }
  681. +       }
  682. +       return htmltext;
  683. +   }
  684. +  
  685. +   @Override
  686. +   public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
  687. +   {
  688. +       executeForEachPlayer(player, npc, isSummon, true, false);
  689. +       return super.onKill(npc, player, isSummon);
  690. +   }
  691. +  
  692. +   @Override
  693. +   public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon)
  694. +   {
  695. +       final QuestState qs = getQuestState(player, false);
  696. +       if ((qs != null) && qs.isCond(2) && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
  697. +       {
  698. +           if (getQuestItemsCount(player, TOKEN_OF_ETINA) < TOKEN_OF_ETINA_NEEDED)
  699. +           {
  700. +               giveItems(player, TOKEN_OF_ETINA, 1);
  701. +               playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  702. +           }
  703. +           if (getQuestItemsCount(player, TOKEN_OF_ETINA) >= TOKEN_OF_ETINA_NEEDED)
  704. +           {
  705. +               qs.setCond(3, true);
  706. +           }
  707. +       }
  708. +   }
  709. +}
  710. \ No newline at end of file
  711. Index: dist/game/data/scripts/quests/Q10887_SaviorsPathDemonsAndAtelia/34427-00.html
  712. ===================================================================
  713. --- dist/game/data/scripts/quests/Q10887_SaviorsPathDemonsAndAtelia/34427-00.html   (nonexistent)
  714. +++ dist/game/data/scripts/quests/Q10887_SaviorsPathDemonsAndAtelia/34427-00.html   (working copy)
  715. @@ -0,0 +1,4 @@
  716. +<html><body>Truth Seeker Devianne:<br>
  717. +Everything must be carried out with utmost caution. Your strength needs to be at a certain level, so please come back when you're stronger.<br>
  718. +(This quest is for characters Lv. 103 and higher who have completed the Savior's Path - Search the Refinery quest.)
  719. +</body></html>
  720. \ No newline at end of file
  721. Index: dist/game/data/scripts/quests/Q10887_SaviorsPathDemonsAndAtelia/34427-01.htm
  722. ===================================================================
  723. --- dist/game/data/scripts/quests/Q10887_SaviorsPathDemonsAndAtelia/34427-01.htm    (nonexistent)
  724. +++ dist/game/data/scripts/quests/Q10887_SaviorsPathDemonsAndAtelia/34427-01.htm    (working copy)
  725. @@ -0,0 +1,5 @@
  726. +<html><body>Truth Seeker Devianne:<br>
  727. +I'm looking into why demons have appeared here. Do you want to hear what I have found out so far?<br>
  728. +If you've already heard my story, I could just brief you on what must be done.<br>
  729. +<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10887_SaviorsPathDemonsAndAtelia 34427-02.htm">"Let me hear it."</Button>
  730. +</body></html>
  731. \ No newline at end of file
  732. Index: dist/game/data/scripts/quests/Q10887_SaviorsPathDemonsAndAtelia/34427-02.htm
  733. ===================================================================
  734. --- dist/game/data/scripts/quests/Q10887_SaviorsPathDemonsAndAtelia/34427-02.htm    (nonexistent)
  735. +++ dist/game/data/scripts/quests/Q10887_SaviorsPathDemonsAndAtelia/34427-02.htm    (working copy)
  736. @@ -0,0 +1,5 @@
  737. +<html><body>Truth Seeker Devianne:<br>
  738. +This place is refining Dimensional Energy created from the Garden of Spirits into Dark Atelia.<br>
  739. +According to my sources, Dimensional Energy is very efficient food for demons. It can be refined to Dark Atelia of fine quality through a phenomenon which occurs when demons absorb it.<br>
  740. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10887_SaviorsPathDemonsAndAtelia 34427-03.htm">"Go on."</Button>
  741. +</body></html>
  742. \ No newline at end of file
  743. Index: dist/game/data/scripts/quests/Q10887_SaviorsPathDemonsAndAtelia/34427-03.htm
  744. ===================================================================
  745. --- dist/game/data/scripts/quests/Q10887_SaviorsPathDemonsAndAtelia/34427-03.htm    (nonexistent)
  746. +++ dist/game/data/scripts/quests/Q10887_SaviorsPathDemonsAndAtelia/34427-03.htm    (working copy)
  747. @@ -0,0 +1,5 @@
  748. +<html><body>Truth Seeker Devianne:<br>
  749. +It seems the demons and Embryos are working together for the common good. But we can interrupt them from refining Dimensional Energy into Dark Atelia by defeating demons.<br>
  750. +This mission is to stop demons from refining Dark Atelia using Dimensional Energy.<br>
  751. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10887_SaviorsPathDemonsAndAtelia 34427-04.html">"Leave it to me."</Button>
  752. +</body></html>
  753. \ No newline at end of file
  754. Index: dist/game/data/scripts/quests/Q10887_SaviorsPathDemonsAndAtelia/34427-04.html
  755. ===================================================================
  756. --- dist/game/data/scripts/quests/Q10887_SaviorsPathDemonsAndAtelia/34427-04.html   (nonexistent)
  757. +++ dist/game/data/scripts/quests/Q10887_SaviorsPathDemonsAndAtelia/34427-04.html   (working copy)
  758. @@ -0,0 +1,4 @@
  759. +<html><body>Truth Seeker Devianne:<br>
  760. +Understood. Allow me to tell you what must be done.<br>
  761. +The first thing is to take out the demons. It's a simple yet efficient way to stopping them from refinement. <font color="LEVEL">Death Rogue, Death Shooter, Death Warrior, Death Sorcerer, Death Pondus, Devil Nightmare, Devil Warrior, Devil Guardian, Devil Sinist, Devil Varos, Demonic Wizard, Demonic Warrior, Demonic Archer, Demonic Keras, Demonic Weiss</font> are your targets. Hunt them down, collect <font color="LEVEL">500 Demon Slayer's Proof</font> and bring them to me.<br><br>
  762. +</body></html>
  763. \ No newline at end of file
  764. Index: dist/game/data/scripts/quests/Q10887_SaviorsPathDemonsAndAtelia/34427-05.html
  765. ===================================================================
  766. --- dist/game/data/scripts/quests/Q10887_SaviorsPathDemonsAndAtelia/34427-05.html   (nonexistent)
  767. +++ dist/game/data/scripts/quests/Q10887_SaviorsPathDemonsAndAtelia/34427-05.html   (working copy)
  768. @@ -0,0 +1,5 @@
  769. +<html><body>Truth Seeker Devianne:<br>
  770. +Go inside <font color="LEVEL">Atelia Refinery</font> and bring me <font color="LEVEL">500 Demon Slayer's Proof</font>.<br>
  771. +Monsters to hunt:<font color="LEVEL">Death Rogue, Death Shooter, Death Warrior, Death Sorcerer, Death Pondus, Devil Nightmare, Devil Warrior, Devil Guardian, Devil Sinist, Devil Varos, Demonic Wizard, Demonic Warrior, Demonic Archer, Demonic Keras, Demonic Weiss</font>.<br><br>
  772. +Please slay the demons and stop them from refining Dark Atelia<br>
  773. +</body></html>
  774. \ No newline at end of file
  775. Index: dist/game/data/scripts/quests/Q10887_SaviorsPathDemonsAndAtelia/34427-06.htm
  776. ===================================================================
  777. --- dist/game/data/scripts/quests/Q10887_SaviorsPathDemonsAndAtelia/34427-06.htm    (nonexistent)
  778. +++ dist/game/data/scripts/quests/Q10887_SaviorsPathDemonsAndAtelia/34427-06.htm    (working copy)
  779. @@ -0,0 +1,5 @@
  780. +<html><body>Truth Seeker Devianne:<br>
  781. +Oh! Have you decreased the number of demons?<br>
  782. +I just checked the data on the flow of energy through a device I installed in Atelia Refinery. So you did it?<br>
  783. +<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10887_SaviorsPathDemonsAndAtelia 34427-07.html">"Yes."</Button>
  784. +</body></html>
  785. \ No newline at end of file
  786. Index: dist/game/data/scripts/quests/Q10887_SaviorsPathDemonsAndAtelia/34427-07.html
  787. ===================================================================
  788. --- dist/game/data/scripts/quests/Q10887_SaviorsPathDemonsAndAtelia/34427-07.html   (nonexistent)
  789. +++ dist/game/data/scripts/quests/Q10887_SaviorsPathDemonsAndAtelia/34427-07.html   (working copy)
  790. @@ -0,0 +1,7 @@
  791. +<html><body>Truth Seeker Devianne:<br>
  792. +I was able to collect the data I need thanks to you.<br>
  793. +The areas inside the refinery are divided into sectors which collect Dimensional Energy, refine them into Atelia, and convert refined Atelia into Dark Atelia.<br>
  794. +This raises another question. The flow of energy told me this much, but who is in charge of completing each process?<br>
  795. +Our final goal is the death of Etis van Etina but we still have a lot of work to do before we can achieve that.<br>
  796. +You've been a wonderful help so far but if you're willing to help us more, please talk to me after making preparations. I will tell you what must be done.<br>
  797. +</body></html>
  798. \ No newline at end of file
  799. Index: dist/game/data/scripts/quests/Q10887_SaviorsPathDemonsAndAtelia/Q10887_SaviorsPathDemonsAndAtelia.java
  800. ===================================================================
  801. --- dist/game/data/scripts/quests/Q10887_SaviorsPathDemonsAndAtelia/Q10887_SaviorsPathDemonsAndAtelia.java  (nonexistent)
  802. +++ dist/game/data/scripts/quests/Q10887_SaviorsPathDemonsAndAtelia/Q10887_SaviorsPathDemonsAndAtelia.java  (working copy)
  803. @@ -0,0 +1,207 @@
  804. +/*
  805. + * This file is part of the L2J Mobius project.
  806. + *
  807. + * This program is free software: you can redistribute it and/or modify
  808. + * it under the terms of the GNU General Public License as published by
  809. + * the Free Software Foundation, either version 3 of the License, or
  810. + * (at your option) any later version.
  811. + *
  812. + * This program is distributed in the hope that it will be useful,
  813. + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  814. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  815. + * General Public License for more details.
  816. + *
  817. + * You should have received a copy of the GNU General Public License
  818. + * along with this program. If not, see <http://www.gnu.org/licenses/>.
  819. + */
  820. +package quests.Q10887_SaviorsPathDemonsAndAtelia;
  821. +
  822. +import java.util.HashSet;
  823. +import java.util.Set;
  824. +
  825. +import org.l2jmobius.Config;
  826. +import org.l2jmobius.commons.util.CommonUtil;
  827. +import org.l2jmobius.gameserver.enums.QuestSound;
  828. +import org.l2jmobius.gameserver.model.actor.Npc;
  829. +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
  830. +import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
  831. +import org.l2jmobius.gameserver.model.quest.Quest;
  832. +import org.l2jmobius.gameserver.model.quest.QuestState;
  833. +import org.l2jmobius.gameserver.model.quest.State;
  834. +
  835. +import quests.Q10886_SaviorsPathSearchTheRefinery.Q10886_SaviorsPathSearchTheRefinery;
  836. +
  837. +/**
  838. + * Savior's Path - Demons and Atelia (10887)
  839. + * @URL https://l2wiki.com/Savior%27s_Path_-_Demons_and_Atelia
  840. + * @author CostyKiller
  841. + */
  842. +public class Q10887_SaviorsPathDemonsAndAtelia extends Quest
  843. +{
  844. +   // Npcs
  845. +   private static final int DEVIANNE = 34427;
  846. +   // Monsters
  847. +   private static final int[] MONSTERS =
  848. +   {
  849. +       // Atelia Refinery
  850. +       24150, // Devil Warrior
  851. +       24149, // Devil Nightmare
  852. +       24153, // Devil Varos
  853. +       24152, // Devil Sinist
  854. +       24151, // Devil Guardian
  855. +       24144, // Death Rogue
  856. +       24145, // Death Shooter
  857. +       24146, // Death Warrior
  858. +       24147, // Death Sorcerer
  859. +       24148, // Death Pondus
  860. +       24155, // Demonic Warrior
  861. +       24154, // Demonic Wizard
  862. +       24158, // Demonic Weiss
  863. +       24157, // Demonic Keras
  864. +       24156, // Demonic Archer
  865. +   };
  866. +   // Misc
  867. +   private static final int MIN_LEVEL = 103;
  868. +   private static final int DEMONS_KILLS_NEEDED = 500;
  869. +  
  870. +   public Q10887_SaviorsPathDemonsAndAtelia()
  871. +   {
  872. +       super(10887);
  873. +       addStartNpc(DEVIANNE);
  874. +       addTalkId(DEVIANNE);
  875. +       addKillId(MONSTERS);
  876. +       addCondMinLevel(MIN_LEVEL, "34427-00.html");
  877. +       addCondCompletedQuest(Q10886_SaviorsPathSearchTheRefinery.class.getSimpleName(), "34427-00.html");
  878. +   }
  879. +  
  880. +   @Override
  881. +   public String onAdvEvent(String event, Npc npc, PlayerInstance player)
  882. +   {
  883. +       final QuestState qs = getQuestState(player, false);
  884. +       if (qs == null)
  885. +       {
  886. +           return null;
  887. +       }
  888. +      
  889. +       String htmltext = null;
  890. +      
  891. +       switch (event)
  892. +       {
  893. +           case "34427-02.htm":
  894. +           case "34427-03.htm":
  895. +           case "34427-06.htm":
  896. +           {
  897. +               htmltext = event;
  898. +               break;
  899. +           }
  900. +           case "34427-04.html":
  901. +           {
  902. +               if ((player.getLevel() >= MIN_LEVEL))
  903. +               {
  904. +                   qs.startQuest();
  905. +                   qs.set("DemonsKilled", 0);
  906. +                   htmltext = event;
  907. +               }
  908. +               break;
  909. +           }
  910. +           case "34427-07.html":
  911. +           {
  912. +               if (qs.isCond(2))
  913. +               {
  914. +                   if ((player.getLevel() >= MIN_LEVEL))
  915. +                   {
  916. +                       addExpAndSp(player, 108766499040L, 108766440);
  917. +                       giveAdena(player, 12309205, true);
  918. +                       qs.exitQuest(false, true);
  919. +                       htmltext = event;
  920. +                   }
  921. +                   else
  922. +                   {
  923. +                       htmltext = getNoQuestLevelRewardMsg(player);
  924. +                   }
  925. +                   break;
  926. +               }
  927. +           }
  928. +       }
  929. +       return htmltext;
  930. +   }
  931. +  
  932. +   @Override
  933. +   public String onTalk(Npc npc, PlayerInstance player)
  934. +   {
  935. +       final QuestState qs = getQuestState(player, true);
  936. +       String htmltext = getNoQuestMsg(player);
  937. +       switch (qs.getState())
  938. +       {
  939. +           case State.CREATED:
  940. +           {
  941. +               htmltext = "34427-01.htm";
  942. +               break;
  943. +           }
  944. +           case State.STARTED:
  945. +           {
  946. +               if (qs.isCond(1))
  947. +               {
  948. +                   htmltext = "34427-05.html";
  949. +               }
  950. +               else if (qs.isCond(2) && (qs.getInt("DemonsKilled") >= DEMONS_KILLS_NEEDED))
  951. +               {
  952. +                   htmltext = "34427-06.htm";
  953. +               }
  954. +               break;
  955. +           }
  956. +           case State.COMPLETED:
  957. +           {
  958. +               htmltext = getAlreadyCompletedMsg(player);
  959. +               break;
  960. +           }
  961. +       }
  962. +       return htmltext;
  963. +   }
  964. +  
  965. +   @Override
  966. +   public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
  967. +   {
  968. +       executeForEachPlayer(player, npc, isSummon, true, false);
  969. +       return super.onKill(npc, player, isSummon);
  970. +   }
  971. +  
  972. +   @Override
  973. +   public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon)
  974. +   {
  975. +       final QuestState qs = getQuestState(player, false);
  976. +       if ((qs != null) && qs.isCond(1) && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
  977. +       {
  978. +           if (qs.getInt("DemonsKilled") < DEMONS_KILLS_NEEDED)
  979. +           {
  980. +               final int killedDemons = qs.getInt("DemonsKilled") + 1;
  981. +               if (CommonUtil.contains(MONSTERS, npc.getId()))
  982. +               {
  983. +                   qs.set("DemonsKilled", killedDemons);
  984. +                   if ((killedDemons == DEMONS_KILLS_NEEDED))
  985. +                   {
  986. +                       qs.setCond(2, true);
  987. +                   }
  988. +                   else
  989. +                   {
  990. +                       playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  991. +                       sendNpcLogList(player);
  992. +                   }
  993. +               }
  994. +           }
  995. +       }
  996. +   }
  997. +  
  998. +   @Override
  999. +   public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
  1000. +   {
  1001. +       final QuestState qs = getQuestState(player, false);
  1002. +       if ((qs != null) && (qs.isCond(1)))
  1003. +       {
  1004. +           final Set<NpcLogListHolder> holder = new HashSet<>();
  1005. +           holder.add(new NpcLogListHolder(1019725, true, qs.getInt("DemonsKilled")));
  1006. +           return holder;
  1007. +       }
  1008. +       return super.getNpcLogList(player);
  1009. +   }
  1010. +}
  1011. \ No newline at end of file
  1012. Index: dist/game/data/scripts/quests/Q10888_SaviorsPathDefeatTheEmbryo/34427-00.html
  1013. ===================================================================
  1014. --- dist/game/data/scripts/quests/Q10888_SaviorsPathDefeatTheEmbryo/34427-00.html   (nonexistent)
  1015. +++ dist/game/data/scripts/quests/Q10888_SaviorsPathDefeatTheEmbryo/34427-00.html   (working copy)
  1016. @@ -0,0 +1,4 @@
  1017. +<html><body>Truth Seeker Devianne:<br>
  1018. +Everything must be carried out with utmost caution. Your strength needs to be at a certain level, so please come back when you're stronger.<br>
  1019. +(This quest is for characters Lv. 103 and higher who have completed the Savior's Path - Discovery and Savior's Path - Demons and Atelia quests.)
  1020. +</body></html>
  1021. \ No newline at end of file
  1022. Index: dist/game/data/scripts/quests/Q10888_SaviorsPathDefeatTheEmbryo/34427-01.htm
  1023. ===================================================================
  1024. --- dist/game/data/scripts/quests/Q10888_SaviorsPathDefeatTheEmbryo/34427-01.htm    (nonexistent)
  1025. +++ dist/game/data/scripts/quests/Q10888_SaviorsPathDefeatTheEmbryo/34427-01.htm    (working copy)
  1026. @@ -0,0 +1,5 @@
  1027. +<html><body>Truth Seeker Devianne:<br>
  1028. +Since I collected the data I needed last time, I was able to discover a lot.<br>
  1029. +I had many theories on the refinement process of Atelia and though they weren't all correct, I was able to prove many things. I also have new information, like who is completing each process of refinement and why the demons keep coming to the Atelia Refinery.<br>
  1030. +<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10888_SaviorsPathDefeatTheEmbryo 34427-02.htm">"What did you find out?"</Button>
  1031. +</body></html>
  1032. \ No newline at end of file
  1033. Index: dist/game/data/scripts/quests/Q10888_SaviorsPathDefeatTheEmbryo/34427-02.htm
  1034. ===================================================================
  1035. --- dist/game/data/scripts/quests/Q10888_SaviorsPathDefeatTheEmbryo/34427-02.htm    (nonexistent)
  1036. +++ dist/game/data/scripts/quests/Q10888_SaviorsPathDefeatTheEmbryo/34427-02.htm    (working copy)
  1037. @@ -0,0 +1,6 @@
  1038. +<html><body>Truth Seeker Devianne:<br>
  1039. +Each process of Atelia refinement is completed by a specific demon in each area. They are difficult to find. These demons are completing each refinement process using their abilities.<br>
  1040. +I also found out why the demons are coming to the refinery. It's the Dimensional Energy. Dimensional Energy is somewhat of a delicay for demons.<br>
  1041. +When the demons absorb Dimensional Energy, the large amount of force applied upon the energy crystallizes it into Atelia.<br>
  1042. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10888_SaviorsPathDefeatTheEmbryo 34427-03.htm">"Really?"</Button>
  1043. +</body></html>
  1044. \ No newline at end of file
  1045. Index: dist/game/data/scripts/quests/Q10888_SaviorsPathDefeatTheEmbryo/34427-03.htm
  1046. ===================================================================
  1047. --- dist/game/data/scripts/quests/Q10888_SaviorsPathDefeatTheEmbryo/34427-03.htm    (nonexistent)
  1048. +++ dist/game/data/scripts/quests/Q10888_SaviorsPathDefeatTheEmbryo/34427-03.htm    (working copy)
  1049. @@ -0,0 +1,6 @@
  1050. +<html><body>Truth Seeker Devianne:<br>
  1051. +And when Dark Atelia is complete through refinement process, it's sent to Etis van Etina as the energy source to use the Seven Signs.<br>
  1052. +And I'm sure you know how terrifying the Seven Signs is.<br>
  1053. +Discovering this has brought a task upon us. A task with utmost priority.<br>
  1054. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10888_SaviorsPathDefeatTheEmbryo 34427-04.html">"What is it?"</Button>
  1055. +</body></html>
  1056. \ No newline at end of file
  1057. Index: dist/game/data/scripts/quests/Q10888_SaviorsPathDefeatTheEmbryo/34427-04.html
  1058. ===================================================================
  1059. --- dist/game/data/scripts/quests/Q10888_SaviorsPathDefeatTheEmbryo/34427-04.html   (nonexistent)
  1060. +++ dist/game/data/scripts/quests/Q10888_SaviorsPathDefeatTheEmbryo/34427-04.html   (working copy)
  1061. @@ -0,0 +1,6 @@
  1062. +<html><body>Truth Seeker Devianne:<br>
  1063. +It is to retrieve the Atelia extracted by the demons that has not turned into Dark Atelia yet.<br>
  1064. +Extracted Atelia cannot be retrieved because it is sent to a special device automatically, but we can still get it mid-extraction.<br>
  1065. +Atelia in Extraction can be retrieved from <font color="LEVEL">Death Rogue, Death Shooter, Death Warrior, Death Sorcerer, Death Pondus, Devil Nightmare, Devil Warrior, Devil Guardian, Devil Sinist, Devil Varos, Demonic Wizard, Demonic Warrior, Demonic Archer, Demonic Keras and Demonic Weiss</font>.<br><br>
  1066. +Retrieving Atelia will eventually stop Etis van Etina from getting more Dark Atelia so it's ultimalety weaken the force of Embryos.<br>
  1067. +</body></html>
  1068. \ No newline at end of file
  1069. Index: dist/game/data/scripts/quests/Q10888_SaviorsPathDefeatTheEmbryo/34427-05.html
  1070. ===================================================================
  1071. --- dist/game/data/scripts/quests/Q10888_SaviorsPathDefeatTheEmbryo/34427-05.html   (nonexistent)
  1072. +++ dist/game/data/scripts/quests/Q10888_SaviorsPathDefeatTheEmbryo/34427-05.html   (working copy)
  1073. @@ -0,0 +1,4 @@
  1074. +<html><body>Truth Seeker Devianne:<br>
  1075. +Go inside <font color="LEVEL">Atelia Refinery</font> and bring me <font color="LEVEL">200 Atelia in Extraction</font>.<br>
  1076. +It can be retrieved from <font color="LEVEL">Death Rogue, Death Shooter, Death Warrior, Death Sorcerer, Death Pondus, Devil Nightmare, Devil Warrior, Devil Guardian, Devil Sinist, Devil Varos, Demonic Wizard, Demonic Warrior, Demonic Archer, Demonic Keras and Demonic Weiss</font>.<br><br>
  1077. +</body></html>
  1078. \ No newline at end of file
  1079. Index: dist/game/data/scripts/quests/Q10888_SaviorsPathDefeatTheEmbryo/34427-06.htm
  1080. ===================================================================
  1081. --- dist/game/data/scripts/quests/Q10888_SaviorsPathDefeatTheEmbryo/34427-06.htm    (nonexistent)
  1082. +++ dist/game/data/scripts/quests/Q10888_SaviorsPathDefeatTheEmbryo/34427-06.htm    (working copy)
  1083. @@ -0,0 +1,8 @@
  1084. +<html><body>Truth Seeker Devianne:<br>
  1085. +This must be Atelia in Extraction.<br>
  1086. +I can sense a huge power in it although its extraction is not complete. Imagine how much power it'll hold when extraction is complete... Enough for Etis van Etina to wield the Seven Signs at the snap of a finger.<br>
  1087. +And this power is even pure and more powerful than the Giants' power that could be obtained from Amaranthine.<br>
  1088. +Sporcha, a member of our Blackbird Clan is at the place transporting Atelia. He is supposed to interrupt its transportation process so we could use the outlet as our own.<br>
  1089. +Looks like your preparation is done as well. Go tell Leona that you're ready to bring an end to Etis van Etina. Thank you for your very hard work.<br>
  1090. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10888_SaviorsPathDefeatTheEmbryo 34427-07.html">"Yes, sure."</Button>
  1091. +</body></html>
  1092. \ No newline at end of file
  1093. Index: dist/game/data/scripts/quests/Q10888_SaviorsPathDefeatTheEmbryo/34427-07.html
  1094. ===================================================================
  1095. --- dist/game/data/scripts/quests/Q10888_SaviorsPathDefeatTheEmbryo/34427-07.html   (nonexistent)
  1096. +++ dist/game/data/scripts/quests/Q10888_SaviorsPathDefeatTheEmbryo/34427-07.html   (working copy)
  1097. @@ -0,0 +1,3 @@
  1098. +<html><body>Truth Seeker Devianne:<br>
  1099. +Great work.
  1100. +</body></html>
  1101. \ No newline at end of file
  1102. Index: dist/game/data/scripts/quests/Q10888_SaviorsPathDefeatTheEmbryo/Q10888_SaviorsPathDefeatTheEmbryo.java
  1103. ===================================================================
  1104. --- dist/game/data/scripts/quests/Q10888_SaviorsPathDefeatTheEmbryo/Q10888_SaviorsPathDefeatTheEmbryo.java  (nonexistent)
  1105. +++ dist/game/data/scripts/quests/Q10888_SaviorsPathDefeatTheEmbryo/Q10888_SaviorsPathDefeatTheEmbryo.java  (working copy)
  1106. @@ -0,0 +1,188 @@
  1107. +/*
  1108. + * This file is part of the L2J Mobius project.
  1109. + *
  1110. + * This program is free software: you can redistribute it and/or modify
  1111. + * it under the terms of the GNU General Public License as published by
  1112. + * the Free Software Foundation, either version 3 of the License, or
  1113. + * (at your option) any later version.
  1114. + *
  1115. + * This program is distributed in the hope that it will be useful,
  1116. + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  1117. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  1118. + * General Public License for more details.
  1119. + *
  1120. + * You should have received a copy of the GNU General Public License
  1121. + * along with this program. If not, see <http://www.gnu.org/licenses/>.
  1122. + */
  1123. +package quests.Q10888_SaviorsPathDefeatTheEmbryo;
  1124. +
  1125. +import org.l2jmobius.Config;
  1126. +import org.l2jmobius.gameserver.enums.Movie;
  1127. +import org.l2jmobius.gameserver.enums.QuestSound;
  1128. +import org.l2jmobius.gameserver.model.actor.Npc;
  1129. +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
  1130. +import org.l2jmobius.gameserver.model.quest.Quest;
  1131. +import org.l2jmobius.gameserver.model.quest.QuestState;
  1132. +import org.l2jmobius.gameserver.model.quest.State;
  1133. +
  1134. +import quests.Q10885_SaviorsPathDiscovery.Q10885_SaviorsPathDiscovery;
  1135. +import quests.Q10887_SaviorsPathDemonsAndAtelia.Q10887_SaviorsPathDemonsAndAtelia;
  1136. +
  1137. +/**
  1138. + * Savior's Path - Defeat the Embryo (10888)
  1139. + * @URL https://l2wiki.com/Savior%27s_Path_-_Defeat_the_Embryo
  1140. + * @author CostyKiller
  1141. + */
  1142. +public class Q10888_SaviorsPathDefeatTheEmbryo extends Quest
  1143. +{
  1144. +   // Npcs
  1145. +   private static final int DEVIANNE = 34427;
  1146. +   // Monsters
  1147. +   private static final int[] MONSTERS =
  1148. +   {
  1149. +       // Atelia Refinery
  1150. +       24150, // Devil Warrior
  1151. +       24149, // Devil Nightmare
  1152. +       24153, // Devil Varos
  1153. +       24152, // Devil Sinist
  1154. +       24151, // Devil Guardian
  1155. +       24144, // Death Rogue
  1156. +       24145, // Death Shooter
  1157. +       24146, // Death Warrior
  1158. +       24147, // Death Sorcerer
  1159. +       24148, // Death Pondus
  1160. +       24155, // Demonic Warrior
  1161. +       24154, // Demonic Wizard
  1162. +       24158, // Demonic Weiss
  1163. +       24157, // Demonic Keras
  1164. +       24156, // Demonic Archer
  1165. +   };
  1166. +   // Items
  1167. +   private static final int ATELIA_IN_EXTRACTION = 48547;
  1168. +   // Misc
  1169. +   private static final int MIN_LEVEL = 103;
  1170. +   private static final int ATELIA_IN_EXTRACTION_NEEDED = 200;
  1171. +  
  1172. +   public Q10888_SaviorsPathDefeatTheEmbryo()
  1173. +   {
  1174. +       super(10888);
  1175. +       addStartNpc(DEVIANNE);
  1176. +       addTalkId(DEVIANNE);
  1177. +       addKillId(MONSTERS);
  1178. +       addCondMinLevel(MIN_LEVEL, "34427-00.html");
  1179. +       addCondCompletedQuest(Q10885_SaviorsPathDiscovery.class.getSimpleName(), "34427-00.html");
  1180. +       addCondCompletedQuest(Q10887_SaviorsPathDemonsAndAtelia.class.getSimpleName(), "34427-00.html");
  1181. +       registerQuestItems(ATELIA_IN_EXTRACTION);
  1182. +   }
  1183. +  
  1184. +   @Override
  1185. +   public String onAdvEvent(String event, Npc npc, PlayerInstance player)
  1186. +   {
  1187. +       final QuestState qs = getQuestState(player, false);
  1188. +       if (qs == null)
  1189. +       {
  1190. +           return null;
  1191. +       }
  1192. +      
  1193. +       String htmltext = null;
  1194. +      
  1195. +       switch (event)
  1196. +       {
  1197. +           case "34427-02.htm":
  1198. +           case "34427-03.htm":
  1199. +           case "34427-06.htm":
  1200. +           {
  1201. +               htmltext = event;
  1202. +               break;
  1203. +           }
  1204. +           case "34427-04.html":
  1205. +           {
  1206. +               if ((player.getLevel() >= MIN_LEVEL))
  1207. +               {
  1208. +                   qs.startQuest();
  1209. +                   playMovie(player, Movie.EP5_ASTATINE_QST_START);
  1210. +                   htmltext = event;
  1211. +               }
  1212. +               break;
  1213. +           }
  1214. +           case "34427-07.html":
  1215. +           {
  1216. +               if (qs.isCond(2))
  1217. +               {
  1218. +                   if ((player.getLevel() >= MIN_LEVEL))
  1219. +                   {
  1220. +                       addExpAndSp(player, 108766499040L, 108766440);
  1221. +                       giveAdena(player, 12309205, true);
  1222. +                       playMovie(player, Movie.EP5_ASTATINE_QST_END);
  1223. +                       qs.exitQuest(false, true);
  1224. +                       htmltext = event;
  1225. +                   }
  1226. +                   else
  1227. +                   {
  1228. +                       htmltext = getNoQuestLevelRewardMsg(player);
  1229. +                   }
  1230. +                   break;
  1231. +               }
  1232. +           }
  1233. +       }
  1234. +       return htmltext;
  1235. +   }
  1236. +  
  1237. +   @Override
  1238. +   public String onTalk(Npc npc, PlayerInstance player)
  1239. +   {
  1240. +       final QuestState qs = getQuestState(player, true);
  1241. +       String htmltext = getNoQuestMsg(player);
  1242. +       switch (qs.getState())
  1243. +       {
  1244. +           case State.CREATED:
  1245. +           {
  1246. +               htmltext = "34427-01.htm";
  1247. +               break;
  1248. +           }
  1249. +           case State.STARTED:
  1250. +           {
  1251. +               if (qs.isCond(1))
  1252. +               {
  1253. +                   htmltext = "34427-05.html";
  1254. +               }
  1255. +               else if (qs.isCond(2) && (getQuestItemsCount(player, ATELIA_IN_EXTRACTION) >= ATELIA_IN_EXTRACTION_NEEDED))
  1256. +               {
  1257. +                   htmltext = "34427-06.htm";
  1258. +               }
  1259. +               break;
  1260. +           }
  1261. +           case State.COMPLETED:
  1262. +           {
  1263. +               htmltext = getAlreadyCompletedMsg(player);
  1264. +               break;
  1265. +           }
  1266. +       }
  1267. +       return htmltext;
  1268. +   }
  1269. +  
  1270. +   @Override
  1271. +   public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
  1272. +   {
  1273. +       executeForEachPlayer(player, npc, isSummon, true, false);
  1274. +       return super.onKill(npc, player, isSummon);
  1275. +   }
  1276. +  
  1277. +   @Override
  1278. +   public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon)
  1279. +   {
  1280. +       final QuestState qs = getQuestState(player, false);
  1281. +       if ((qs != null) && qs.isCond(1) && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
  1282. +       {
  1283. +           if (getQuestItemsCount(player, ATELIA_IN_EXTRACTION) < ATELIA_IN_EXTRACTION_NEEDED)
  1284. +           {
  1285. +               giveItems(player, ATELIA_IN_EXTRACTION, 1);
  1286. +               playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  1287. +           }
  1288. +           if (getQuestItemsCount(player, ATELIA_IN_EXTRACTION) >= ATELIA_IN_EXTRACTION_NEEDED)
  1289. +           {
  1290. +               qs.setCond(2, true);
  1291. +           }
  1292. +       }
  1293. +   }
  1294. +}
  1295. \ No newline at end of file
  1296. Index: dist/game/data/scripts/quests/Q10889_SaviorsPathFallenEmperorsThrone/34425-00.html
  1297. ===================================================================
  1298. --- dist/game/data/scripts/quests/Q10889_SaviorsPathFallenEmperorsThrone/34425-00.html  (nonexistent)
  1299. +++ dist/game/data/scripts/quests/Q10889_SaviorsPathFallenEmperorsThrone/34425-00.html  (working copy)
  1300. @@ -0,0 +1,4 @@
  1301. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  1302. +Everything must be carried out with utmost caution. Your strength needs to be at a certain level, so please come back when you're stronger.<br>
  1303. +(This quest is for characters Lv. 103 and higher who have completed the Savior's Path - Defeat the Embryo quest.)
  1304. +</body></html>
  1305. \ No newline at end of file
  1306. Index: dist/game/data/scripts/quests/Q10889_SaviorsPathFallenEmperorsThrone/34425-01.htm
  1307. ===================================================================
  1308. --- dist/game/data/scripts/quests/Q10889_SaviorsPathFallenEmperorsThrone/34425-01.htm   (nonexistent)
  1309. +++ dist/game/data/scripts/quests/Q10889_SaviorsPathFallenEmperorsThrone/34425-01.htm   (working copy)
  1310. @@ -0,0 +1,4 @@
  1311. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  1312. +Do you know anything about the Emperor of Giants?<br>
  1313. +<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10889_SaviorsPathFallenEmperorsThrone 34425-02.htm">"Are you talking about Helios?"</Button>
  1314. +</body></html>
  1315. \ No newline at end of file
  1316. Index: dist/game/data/scripts/quests/Q10889_SaviorsPathFallenEmperorsThrone/34425-02.htm
  1317. ===================================================================
  1318. --- dist/game/data/scripts/quests/Q10889_SaviorsPathFallenEmperorsThrone/34425-02.htm   (nonexistent)
  1319. +++ dist/game/data/scripts/quests/Q10889_SaviorsPathFallenEmperorsThrone/34425-02.htm   (working copy)
  1320. @@ -0,0 +1,6 @@
  1321. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  1322. +Yes I am talking about Helios, the Emperor of the Beginning.<br>
  1323. +When Superion first appeared, we shook in fear. But many brave heroes took down the horrible Giant of Superion, then Queen Ramona and finally Emperor Helios.<br>
  1324. +I don't know if the results of past efforts are happening now, but I heard Superion is getting weaker.<br>
  1325. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10889_SaviorsPathFallenEmperorsThrone 34425-03.htm">"Really?"</Button>
  1326. +</body></html>
  1327. \ No newline at end of file
  1328. Index: dist/game/data/scripts/quests/Q10889_SaviorsPathFallenEmperorsThrone/34425-03.htm
  1329. ===================================================================
  1330. --- dist/game/data/scripts/quests/Q10889_SaviorsPathFallenEmperorsThrone/34425-03.htm   (nonexistent)
  1331. +++ dist/game/data/scripts/quests/Q10889_SaviorsPathFallenEmperorsThrone/34425-03.htm   (working copy)
  1332. @@ -0,0 +1,7 @@
  1333. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  1334. +Helios's iron throne is finally coming down. I'd like to use this chance to get something special.<br>
  1335. +The Giants' powerful technology, <font color="LEVEL">Origin of Giants</font>.<br>
  1336. +Helios is a manifestation of SUperion itself, and Helios' natural power could be larger than that of Superion.<br>
  1337. +I'm assuming Etis van Etina is the one who awoke Helios. I think it may have been because of the Giants' power that originally belonged to Helios.<br>
  1338. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10889_SaviorsPathFallenEmperorsThrone 34425-04.html">"What is the Giants' power?"</Button>
  1339. +</body></html>
  1340. \ No newline at end of file
  1341. Index: dist/game/data/scripts/quests/Q10889_SaviorsPathFallenEmperorsThrone/34425-04.html
  1342. ===================================================================
  1343. --- dist/game/data/scripts/quests/Q10889_SaviorsPathFallenEmperorsThrone/34425-04.html  (nonexistent)
  1344. +++ dist/game/data/scripts/quests/Q10889_SaviorsPathFallenEmperorsThrone/34425-04.html  (working copy)
  1345. @@ -0,0 +1,5 @@
  1346. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  1347. +It's the Giants' technology and its natural ability; the root of power that made it possible for the Giant to challenge god as an equal.<br>
  1348. +It'd be impossible to steal from Helios at his full strength but since he is on the verge of ruin, I'm sure you could steal the Origin of Giants from him. Please go to the <font color="LEVEL">Fallen Emperor's Throne</font>, defeat Helios and bring the <font color="LEVEL">Origin of Giants</font>.<br>
  1349. +Hierarch Kekropus from the Town of Giran will know exact location. He is expecting you, so please go talk to him.<br>
  1350. +</body></html>
  1351. \ No newline at end of file
  1352. Index: dist/game/data/scripts/quests/Q10889_SaviorsPathFallenEmperorsThrone/34425-05.html
  1353. ===================================================================
  1354. --- dist/game/data/scripts/quests/Q10889_SaviorsPathFallenEmperorsThrone/34425-05.html  (nonexistent)
  1355. +++ dist/game/data/scripts/quests/Q10889_SaviorsPathFallenEmperorsThrone/34425-05.html  (working copy)
  1356. @@ -0,0 +1,4 @@
  1357. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  1358. +You did not brought the <font color="LEVEL">Origin of Giants</font>?<br>
  1359. +Go see Hierarch Kekropus from the Town of Giran. He is expecting you, so please go talk to him.
  1360. +</body></html>
  1361. \ No newline at end of file
  1362. Index: dist/game/data/scripts/quests/Q10889_SaviorsPathFallenEmperorsThrone/34425-06.htm
  1363. ===================================================================
  1364. --- dist/game/data/scripts/quests/Q10889_SaviorsPathFallenEmperorsThrone/34425-06.htm   (nonexistent)
  1365. +++ dist/game/data/scripts/quests/Q10889_SaviorsPathFallenEmperorsThrone/34425-06.htm   (working copy)
  1366. @@ -0,0 +1,4 @@
  1367. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  1368. +Have you brought the <font color="LEVEL">Origin of Giants</font>?<br>
  1369. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10889_SaviorsPathFallenEmperorsThrone 34425-07.html">"Yes, I have it."</Button>
  1370. +</body></html>
  1371. \ No newline at end of file
  1372. Index: dist/game/data/scripts/quests/Q10889_SaviorsPathFallenEmperorsThrone/34425-07.html
  1373. ===================================================================
  1374. --- dist/game/data/scripts/quests/Q10889_SaviorsPathFallenEmperorsThrone/34425-07.html  (nonexistent)
  1375. +++ dist/game/data/scripts/quests/Q10889_SaviorsPathFallenEmperorsThrone/34425-07.html  (working copy)
  1376. @@ -0,0 +1,3 @@
  1377. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  1378. +Great work.<br>
  1379. +</body></html>
  1380. \ No newline at end of file
  1381. Index: dist/game/data/scripts/quests/Q10889_SaviorsPathFallenEmperorsThrone/Q10889_SaviorsPathFallenEmperorsThrone.java
  1382. ===================================================================
  1383. --- dist/game/data/scripts/quests/Q10889_SaviorsPathFallenEmperorsThrone/Q10889_SaviorsPathFallenEmperorsThrone.java    (nonexistent)
  1384. +++ dist/game/data/scripts/quests/Q10889_SaviorsPathFallenEmperorsThrone/Q10889_SaviorsPathFallenEmperorsThrone.java    (working copy)
  1385. @@ -0,0 +1,166 @@
  1386. +/*
  1387. + * This file is part of the L2J Mobius project.
  1388. + *
  1389. + * This program is free software: you can redistribute it and/or modify
  1390. + * it under the terms of the GNU General Public License as published by
  1391. + * the Free Software Foundation, either version 3 of the License, or
  1392. + * (at your option) any later version.
  1393. + *
  1394. + * This program is distributed in the hope that it will be useful,
  1395. + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  1396. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  1397. + * General Public License for more details.
  1398. + *
  1399. + * You should have received a copy of the GNU General Public License
  1400. + * along with this program. If not, see <http://www.gnu.org/licenses/>.
  1401. + */
  1402. +package quests.Q10889_SaviorsPathFallenEmperorsThrone;
  1403. +
  1404. +import org.l2jmobius.Config;
  1405. +import org.l2jmobius.gameserver.enums.QuestSound;
  1406. +import org.l2jmobius.gameserver.model.actor.Npc;
  1407. +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
  1408. +import org.l2jmobius.gameserver.model.quest.Quest;
  1409. +import org.l2jmobius.gameserver.model.quest.QuestState;
  1410. +import org.l2jmobius.gameserver.model.quest.State;
  1411. +
  1412. +import quests.Q10888_SaviorsPathDefeatTheEmbryo.Q10888_SaviorsPathDefeatTheEmbryo;
  1413. +
  1414. +/**
  1415. + * Savior's Path - Fallen Emperor's Throne
  1416. + * @URL https://l2wiki.com/Savior%27s_Path_-_Fallen_Emperor%27s_Throne
  1417. + * @author CostyKiller
  1418. + */
  1419. +public class Q10889_SaviorsPathFallenEmperorsThrone extends Quest
  1420. +{
  1421. +   // Npcs
  1422. +   private static final int LEONA_BLACKBIRD = 34425;
  1423. +  
  1424. +   // Monsters
  1425. +   private static final int FE_HELIOS = 26335;
  1426. +   // Items
  1427. +   private static final int ORIGIN_OF_GIANTS = 48548;
  1428. +   // Misc
  1429. +   private static final int MIN_LEVEL = 103;
  1430. +   private static final int ORIGIN_OF_GIANTS_NEEDED = 5;
  1431. +  
  1432. +   public Q10889_SaviorsPathFallenEmperorsThrone()
  1433. +   {
  1434. +       super(10889);
  1435. +       addStartNpc(LEONA_BLACKBIRD);
  1436. +       addTalkId(LEONA_BLACKBIRD);
  1437. +       addKillId(FE_HELIOS);
  1438. +       addCondMinLevel(MIN_LEVEL, "34425-00.html");
  1439. +       addCondCompletedQuest(Q10888_SaviorsPathDefeatTheEmbryo.class.getSimpleName(), "34425-00.html");
  1440. +       registerQuestItems(ORIGIN_OF_GIANTS);
  1441. +   }
  1442. +  
  1443. +   @Override
  1444. +   public String onAdvEvent(String event, Npc npc, PlayerInstance player)
  1445. +   {
  1446. +       final QuestState qs = getQuestState(player, false);
  1447. +       if (qs == null)
  1448. +       {
  1449. +           return null;
  1450. +       }
  1451. +      
  1452. +       String htmltext = null;
  1453. +      
  1454. +       switch (event)
  1455. +       {
  1456. +           case "34425-02.htm":
  1457. +           case "34425-03.htm":
  1458. +           case "34425-06.htm":
  1459. +           {
  1460. +               htmltext = event;
  1461. +               break;
  1462. +           }
  1463. +           case "34425-04.html":
  1464. +           {
  1465. +               if ((player.getLevel() >= MIN_LEVEL))
  1466. +               {
  1467. +                   qs.startQuest();
  1468. +                   htmltext = event;
  1469. +               }
  1470. +               break;
  1471. +           }
  1472. +           case "34425-07.html":
  1473. +           {
  1474. +               if (qs.isCond(2))
  1475. +               {
  1476. +                   if ((player.getLevel() >= MIN_LEVEL))
  1477. +                   {
  1478. +                       addExpAndSp(player, 271916247600L, 271916100);
  1479. +                       giveAdena(player, 30773010, true);
  1480. +                       qs.exitQuest(false, true);
  1481. +                       htmltext = event;
  1482. +                   }
  1483. +                   else
  1484. +                   {
  1485. +                       htmltext = getNoQuestLevelRewardMsg(player);
  1486. +                   }
  1487. +                   break;
  1488. +               }
  1489. +           }
  1490. +       }
  1491. +       return htmltext;
  1492. +   }
  1493. +  
  1494. +   @Override
  1495. +   public String onTalk(Npc npc, PlayerInstance player)
  1496. +   {
  1497. +       final QuestState qs = getQuestState(player, true);
  1498. +       String htmltext = getNoQuestMsg(player);
  1499. +       switch (qs.getState())
  1500. +       {
  1501. +           case State.CREATED:
  1502. +           {
  1503. +               htmltext = "34425-01.htm";
  1504. +               break;
  1505. +           }
  1506. +           case State.STARTED:
  1507. +           {
  1508. +               if (qs.isCond(1) && (getQuestItemsCount(player, ORIGIN_OF_GIANTS) < ORIGIN_OF_GIANTS_NEEDED))
  1509. +               {
  1510. +                   htmltext = "34425-05.html";
  1511. +               }
  1512. +               else if (qs.isCond(2) && (getQuestItemsCount(player, ORIGIN_OF_GIANTS) >= ORIGIN_OF_GIANTS_NEEDED))
  1513. +               {
  1514. +                   htmltext = "34425-06.htm";
  1515. +               }
  1516. +               break;
  1517. +           }
  1518. +           case State.COMPLETED:
  1519. +           {
  1520. +               htmltext = getAlreadyCompletedMsg(player);
  1521. +               break;
  1522. +           }
  1523. +       }
  1524. +       return htmltext;
  1525. +   }
  1526. +  
  1527. +   @Override
  1528. +   public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
  1529. +   {
  1530. +       executeForEachPlayer(player, npc, isSummon, true, true);
  1531. +       return super.onKill(npc, player, isSummon);
  1532. +   }
  1533. +  
  1534. +   @Override
  1535. +   public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon)
  1536. +   {
  1537. +       final QuestState qs = getQuestState(player, false);
  1538. +       if ((qs != null) && qs.isCond(1) && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
  1539. +       {
  1540. +           if (getQuestItemsCount(player, ORIGIN_OF_GIANTS) < ORIGIN_OF_GIANTS_NEEDED)
  1541. +           {
  1542. +               giveItems(player, ORIGIN_OF_GIANTS, 1);
  1543. +               playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  1544. +           }
  1545. +           if (getQuestItemsCount(player, ORIGIN_OF_GIANTS) >= ORIGIN_OF_GIANTS_NEEDED)
  1546. +           {
  1547. +               qs.setCond(2, true);
  1548. +           }
  1549. +       }
  1550. +   }
  1551. +}
  1552. \ No newline at end of file
  1553. Index: dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34425-00.html
  1554. ===================================================================
  1555. --- dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34425-00.html   (nonexistent)
  1556. +++ dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34425-00.html   (working copy)
  1557. @@ -0,0 +1,4 @@
  1558. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  1559. +Everything must be carried out with utmost caution. Your strength needs to be at a certain level, so please come back when you're stronger.<br>
  1560. +(This quest is for characters Lv. 104 and higher who have completed the Savior's Path - Defeat the Embryo and the Savior's Path - Fallen Emperor's Throne quests.)
  1561. +</body></html>
  1562. \ No newline at end of file
  1563. Index: dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34425-01.htm
  1564. ===================================================================
  1565. --- dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34425-01.htm    (nonexistent)
  1566. +++ dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34425-01.htm    (working copy)
  1567. @@ -0,0 +1,5 @@
  1568. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  1569. +We have come a long way, Thank you.<br>
  1570. +Now, it's time to hunt down Etis van Etina. If you're done preparing, would you like to come with me to the Fall of Etina?<br>
  1571. +<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10890_SaviorsPathHallOfEtina 34425-02.htm">"Yes, sure."</Button>
  1572. +</body></html>
  1573. \ No newline at end of file
  1574. Index: dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34425-02.htm
  1575. ===================================================================
  1576. --- dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34425-02.htm    (nonexistent)
  1577. +++ dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34425-02.htm    (working copy)
  1578. @@ -0,0 +1,6 @@
  1579. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  1580. +Thanks to your help, I was able to find out a few ways to take down Etina using the Giants's technology.<br>
  1581. +All of this is thanks to your hard work at the refinery.<br>
  1582. +We came this far together and we can't fight Etina without you. Since we came this far, please join us on our next quest.<br>
  1583. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10890_SaviorsPathHallOfEtina 34425-03.htm">"I will join you!"</Button>
  1584. +</body></html>
  1585. \ No newline at end of file
  1586. Index: dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34425-03.htm
  1587. ===================================================================
  1588. --- dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34425-03.htm    (nonexistent)
  1589. +++ dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34425-03.htm    (working copy)
  1590. @@ -0,0 +1,4 @@
  1591. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  1592. +Thank you. I'm sure you want to take down Etis van Etina as much as we do. Here, let me tell you what we found out so far. I'm sure you're dying to know.<br>
  1593. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10890_SaviorsPathHallOfEtina 34425-04.html">"Tell me."</Button>
  1594. +</body></html>
  1595. \ No newline at end of file
  1596. Index: dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34425-04.html
  1597. ===================================================================
  1598. --- dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34425-04.html   (nonexistent)
  1599. +++ dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34425-04.html   (working copy)
  1600. @@ -0,0 +1,6 @@
  1601. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  1602. +I used the Giant's technology contained within the Origin of Giants to find out how to get to Etina and obtained the power to defeat him. The passage to the Great Etina Temple is the Atelia Outlet.<br>
  1603. +It's the passage that Dark Atelia passed through, but I found a way to use it for ourselves using the power obtained from the Origin of Giants.<br>
  1604. +Please come follow me when you're ready to face Etina. We can use the <font color="LEVEL">Atelia Refinery Teleport Device</font> to teleport to <font color="LEVEL">Atelia Outlet</font> within Atelia Refinery. I'll be waiting for you there.<br>
  1605. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10890_SaviorsPathHallOfEtina outletTeleport">"Ok, I'm ready."</Button>
  1606. +</body></html>
  1607. \ No newline at end of file
  1608. Index: dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34425-05.html
  1609. ===================================================================
  1610. --- dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34425-05.html   (nonexistent)
  1611. +++ dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34425-05.html   (working copy)
  1612. @@ -0,0 +1,4 @@
  1613. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  1614. +Please come follow me when you're ready to face Etina. We can use the <font color="LEVEL">Atelia Refinery Teleport Device</font> to teleport to <font color="LEVEL">Atelia Outlet</font> within Atelia Refinery. I'll be waiting for you there.<br>
  1615. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10890_SaviorsPathHallOfEtina outletTeleport">"Ok, I'm ready."</Button>
  1616. +</body></html>
  1617. \ No newline at end of file
  1618. Index: dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34425-06.html
  1619. ===================================================================
  1620. --- dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34425-06.html   (nonexistent)
  1621. +++ dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34425-06.html   (working copy)
  1622. @@ -0,0 +1,4 @@
  1623. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  1624. +Come see me to <font color="LEVEL">Atelia Outlet</font> within Atelia Refinery. I'll be waiting for you there.<br>
  1625. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10890_SaviorsPathHallOfEtina outletTeleport">"Ok, I'll come."</Button>
  1626. +</body></html>
  1627. \ No newline at end of file
  1628. Index: dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34426-00.html
  1629. ===================================================================
  1630. --- dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34426-00.html   (nonexistent)
  1631. +++ dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34426-00.html   (working copy)
  1632. @@ -0,0 +1,3 @@
  1633. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  1634. +Seems that you are not ready to face Etina.<br>
  1635. +</body></html>
  1636. \ No newline at end of file
  1637. Index: dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34426-01.htm
  1638. ===================================================================
  1639. --- dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34426-01.htm    (nonexistent)
  1640. +++ dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34426-01.htm    (working copy)
  1641. @@ -0,0 +1,6 @@
  1642. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  1643. +You're here! Ah, it's your first time seeing me like this.<br>
  1644. +Don't be surprised. Thanks to you, I can fight again.<br>
  1645. +Now, if you're done preparing, shall we bring and end to Etis van Etina?<br>
  1646. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10890_SaviorsPathHallOfEtina 34426-02.html">"Are we leaving from here?"</Button>
  1647. +</body></html>
  1648. \ No newline at end of file
  1649. Index: dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34426-02.html
  1650. ===================================================================
  1651. --- dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34426-02.html   (nonexistent)
  1652. +++ dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34426-02.html   (working copy)
  1653. @@ -0,0 +1,5 @@
  1654. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  1655. +Yes, like I said before, my left arm is a prosthetic made from Origin of Giants.<br>
  1656. +We'll use the power of giants contained in this arm to pass through the Atelia Outlet.<br>
  1657. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest EtisVanEtinaSolo enterInstance">"Let's go.."</Button>
  1658. +</body></html>
  1659. \ No newline at end of file
  1660. Index: dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34426-03.htm
  1661. ===================================================================
  1662. --- dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34426-03.htm    (nonexistent)
  1663. +++ dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34426-03.htm    (working copy)
  1664. @@ -0,0 +1,5 @@
  1665. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  1666. +Finally, Etis van Etina is brought to an end.<br>
  1667. +This would have been impossible without your help. Astair van Halter, the King of Rune, Amadeo Cadmus, the King of Aden, and Navari, the Queen of Ertheia, left in haste as they couldn't leave their kingdoms any longer. But before they left, they left a gift for me to give you.<br>
  1668. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10890_SaviorsPathHallOfEtina 34426-04.html">"What is it?"</Button>
  1669. +</body></html>
  1670. \ No newline at end of file
  1671. Index: dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34426-04.html
  1672. ===================================================================
  1673. --- dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34426-04.html   (nonexistent)
  1674. +++ dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/34426-04.html   (working copy)
  1675. @@ -0,0 +1,4 @@
  1676. +<html><body>Blackbird Clan Lord Leona Blackbird:<br>
  1677. +This is it.<br>
  1678. +They said we were able to protect the material world from great danger with your help and left the Savior's Mask as a gift for you. Please take it. You really played a big role in all this.<br>
  1679. +</body></html>
  1680. \ No newline at end of file
  1681. Index: dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/Q10890_SaviorsPathHallOfEtina.java
  1682. ===================================================================
  1683. --- dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/Q10890_SaviorsPathHallOfEtina.java  (nonexistent)
  1684. +++ dist/game/data/scripts/quests/Q10890_SaviorsPathHallOfEtina/Q10890_SaviorsPathHallOfEtina.java  (working copy)
  1685. @@ -0,0 +1,229 @@
  1686. +/*
  1687. + * This file is part of the L2J Mobius project.
  1688. + *
  1689. + * This program is free software: you can redistribute it and/or modify
  1690. + * it under the terms of the GNU General Public License as published by
  1691. + * the Free Software Foundation, either version 3 of the License, or
  1692. + * (at your option) any later version.
  1693. + *
  1694. + * This program is distributed in the hope that it will be useful,
  1695. + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  1696. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  1697. + * General Public License for more details.
  1698. + *
  1699. + * You should have received a copy of the GNU General Public License
  1700. + * along with this program. If not, see <http://www.gnu.org/licenses/>.
  1701. + */
  1702. +package quests.Q10890_SaviorsPathHallOfEtina;
  1703. +
  1704. +import java.util.HashSet;
  1705. +import java.util.Set;
  1706. +
  1707. +import org.l2jmobius.Config;
  1708. +import org.l2jmobius.gameserver.enums.QuestSound;
  1709. +import org.l2jmobius.gameserver.model.Location;
  1710. +import org.l2jmobius.gameserver.model.actor.Npc;
  1711. +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
  1712. +import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
  1713. +import org.l2jmobius.gameserver.model.quest.Quest;
  1714. +import org.l2jmobius.gameserver.model.quest.QuestState;
  1715. +import org.l2jmobius.gameserver.model.quest.State;
  1716. +
  1717. +import quests.Q10888_SaviorsPathDefeatTheEmbryo.Q10888_SaviorsPathDefeatTheEmbryo;
  1718. +import quests.Q10889_SaviorsPathFallenEmperorsThrone.Q10889_SaviorsPathFallenEmperorsThrone;
  1719. +
  1720. +/**
  1721. + * Savior's Path - Hall of Etina (10890)
  1722. + * @URL https://l2wiki.com/Savior%27s_Path_-_Fall_of_Etina
  1723. + * @author CostyKiller
  1724. + */
  1725. +public class Q10890_SaviorsPathHallOfEtina extends Quest
  1726. +{
  1727. +   // Npcs
  1728. +   private static final int LEONA_BLACKBIRD = 34425;
  1729. +   private static final int LEONA_BLACKBIRD_OUTLET = 34426;
  1730. +   // Monsters
  1731. +   private static final int ETIS_VAN_ETINA_SOLO = 26322;
  1732. +   // Rewards
  1733. +   private static final int SAVIORS_MASK = 48584;
  1734. +   private static final int SAVIORS_ENCHANT_SCROLL = 48583;
  1735. +   // Misc
  1736. +   private static final int MIN_LEVEL = 104;
  1737. +   private static final Location OUTLET_TELEPORT = new Location(-251728, 178576, -8928);
  1738. +  
  1739. +   public Q10890_SaviorsPathHallOfEtina()
  1740. +   {
  1741. +       super(10890);
  1742. +       addStartNpc(LEONA_BLACKBIRD);
  1743. +       addTalkId(LEONA_BLACKBIRD, LEONA_BLACKBIRD_OUTLET);
  1744. +       addKillId(ETIS_VAN_ETINA_SOLO);
  1745. +       addCondMinLevel(MIN_LEVEL, "34425-00.html");
  1746. +       addCondCompletedQuest(Q10888_SaviorsPathDefeatTheEmbryo.class.getSimpleName(), "34425-00.html");
  1747. +       addCondCompletedQuest(Q10889_SaviorsPathFallenEmperorsThrone.class.getSimpleName(), "34425-00.html");
  1748. +   }
  1749. +  
  1750. +   @Override
  1751. +   public String onAdvEvent(String event, Npc npc, PlayerInstance player)
  1752. +   {
  1753. +       final QuestState qs = getQuestState(player, false);
  1754. +       if (qs == null)
  1755. +       {
  1756. +           return null;
  1757. +       }
  1758. +      
  1759. +       String htmltext = null;
  1760. +      
  1761. +       switch (event)
  1762. +       {
  1763. +           case "34425-02.htm":
  1764. +           case "34425-03.htm":
  1765. +           case "34425-06.htm":
  1766. +           case "34426-01.htm":
  1767. +           {
  1768. +               htmltext = event;
  1769. +               break;
  1770. +           }
  1771. +           case "34425-04.html":
  1772. +           {
  1773. +               if ((player.getLevel() >= MIN_LEVEL))
  1774. +               {
  1775. +                   qs.startQuest();
  1776. +                   qs.setMemoState(1);
  1777. +                   htmltext = event;
  1778. +               }
  1779. +               break;
  1780. +           }
  1781. +           case "outletTeleport":
  1782. +           {
  1783. +               player.teleToLocation(OUTLET_TELEPORT);
  1784. +               break;
  1785. +           }
  1786. +           case "34426-02.html":
  1787. +           {
  1788. +               if ((player.getLevel() >= MIN_LEVEL))
  1789. +               {
  1790. +                   qs.setCond(2);
  1791. +                   htmltext = event;
  1792. +               }
  1793. +               break;
  1794. +           }
  1795. +           case "34426-04.html":
  1796. +           {
  1797. +               if (qs.isCond(3))
  1798. +               {
  1799. +                   if ((player.getLevel() >= MIN_LEVEL))
  1800. +                   {
  1801. +                       addExpAndSp(player, 376172418240L, 345208219);
  1802. +                       giveItems(player, SAVIORS_MASK, 1);
  1803. +                       giveItems(player, SAVIORS_ENCHANT_SCROLL, 1);
  1804. +                       qs.exitQuest(false, true);
  1805. +                       htmltext = event;
  1806. +                   }
  1807. +                   else
  1808. +                   {
  1809. +                       htmltext = getNoQuestLevelRewardMsg(player);
  1810. +                   }
  1811. +                   break;
  1812. +               }
  1813. +           }
  1814. +       }
  1815. +       return htmltext;
  1816. +   }
  1817. +  
  1818. +   @Override
  1819. +   public String onTalk(Npc npc, PlayerInstance player)
  1820. +   {
  1821. +       final QuestState qs = getQuestState(player, true);
  1822. +       String htmltext = getNoQuestMsg(player);
  1823. +       switch (qs.getState())
  1824. +       {
  1825. +           case State.CREATED:
  1826. +           {
  1827. +               htmltext = "34425-01.htm";
  1828. +               break;
  1829. +           }
  1830. +           case State.STARTED:
  1831. +           {
  1832. +               switch (npc.getId())
  1833. +               {
  1834. +                   case LEONA_BLACKBIRD:
  1835. +                   {
  1836. +                       if (qs.isCond(1) && qs.isMemoState(1))
  1837. +                       {
  1838. +                           htmltext = "34425-05.html";
  1839. +                       }
  1840. +                       else if (qs.isCond(3))
  1841. +                       {
  1842. +                           htmltext = "34425-06.html";
  1843. +                       }
  1844. +                       else
  1845. +                       {
  1846. +                           htmltext = "34425-01.htm";
  1847. +                       }
  1848. +                       break;
  1849. +                   }
  1850. +                   case LEONA_BLACKBIRD_OUTLET:
  1851. +                   {
  1852. +                       if (qs.isCond(1))
  1853. +                       {
  1854. +                           htmltext = "34426-01.htm";
  1855. +                       }
  1856. +                       if (qs.isCond(2))
  1857. +                       {
  1858. +                           htmltext = "34426-02.html";
  1859. +                       }
  1860. +                       else if (qs.isCond(3) && qs.get(Integer.toString(ETIS_VAN_ETINA_SOLO)).equals("true"))
  1861. +                       {
  1862. +                           htmltext = "34426-03.htm";
  1863. +                       }
  1864. +                       break;
  1865. +                   }
  1866. +               }
  1867. +               break;
  1868. +           }
  1869. +           case State.COMPLETED:
  1870. +           {
  1871. +               htmltext = getAlreadyCompletedMsg(player);
  1872. +               break;
  1873. +           }
  1874. +       }
  1875. +       return htmltext;
  1876. +   }
  1877. +  
  1878. +   @Override
  1879. +   public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
  1880. +   {
  1881. +       executeForEachPlayer(player, npc, isSummon, true, false);
  1882. +       return super.onKill(npc, player, isSummon);
  1883. +   }
  1884. +  
  1885. +   @Override
  1886. +   public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon)
  1887. +   {
  1888. +       final QuestState qs = getQuestState(player, false);
  1889. +       if ((qs != null) && qs.isCond(2) && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
  1890. +       {
  1891. +           qs.set(Integer.toString(npc.getId()), "true");
  1892. +           notifyKill(npc, player, isSummon);
  1893. +           sendNpcLogList(player);
  1894. +           playSound(player, QuestSound.ITEMSOUND_QUEST_MIDDLE);
  1895. +           if ((qs.get(Integer.toString(ETIS_VAN_ETINA_SOLO)).equals("true")))
  1896. +           {
  1897. +               qs.setCond(3);
  1898. +           }
  1899. +       }
  1900. +   }
  1901. +  
  1902. +   @Override
  1903. +   public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
  1904. +   {
  1905. +       final QuestState qs = getQuestState(player, false);
  1906. +       if ((qs != null) && qs.isCond(2))
  1907. +       {
  1908. +           final Set<NpcLogListHolder> holder = new HashSet<>();
  1909. +           holder.add(new NpcLogListHolder(1026322, true, qs.get(Integer.toString(ETIS_VAN_ETINA_SOLO)).equals("true") ? 1 : 0));
  1910. +           return holder;
  1911. +       }
  1912. +       return super.getNpcLogList(player);
  1913. +   }
  1914. +}
  1915. \ No newline at end of file
  1916. Index: dist/game/data/scripts/quests/not_done/Q10507_ObtainingNewPower.java
  1917. ===================================================================
  1918. --- dist/game/data/scripts/quests/not_done/Q10507_ObtainingNewPower.java    (revision 8524)
  1919. +++ dist/game/data/scripts/quests/not_done/Q10507_ObtainingNewPower.java    (nonexistent)
  1920. @@ -1,36 +0,0 @@
  1921. -/*
  1922. - * This file is part of the L2J Mobius project.
  1923. - *
  1924. - * This program is free software: you can redistribute it and/or modify
  1925. - * it under the terms of the GNU General Public License as published by
  1926. - * the Free Software Foundation, either version 3 of the License, or
  1927. - * (at your option) any later version.
  1928. - *
  1929. - * This program is distributed in the hope that it will be useful,
  1930. - * but WITHOUT ANY WARRANTY; without even the implied warranty of
  1931. - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  1932. - * General Public License for more details.
  1933. - *
  1934. - * You should have received a copy of the GNU General Public License
  1935. - * along with this program. If not, see <http://www.gnu.org/licenses/>.
  1936. - */
  1937. -package quests.not_done;
  1938. -
  1939. -import org.l2jmobius.Config;
  1940. -import org.l2jmobius.gameserver.model.quest.Quest;
  1941. -
  1942. -/**
  1943. - * @author Mobius
  1944. - */
  1945. -public class Q10507_ObtainingNewPower extends Quest
  1946. -{
  1947. -   private static final int START_NPC = 33907;
  1948. -  
  1949. -   public Q10507_ObtainingNewPower()
  1950. -   {
  1951. -       super(10507);
  1952. -       addStartNpc(START_NPC);
  1953. -       addTalkId(START_NPC);
  1954. -       addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
  1955. -   }
  1956. -}
  1957. Index: dist/game/data/scripts/quests/not_done/Q10886_SaviorsPathSearchTheRefinery.java
  1958. ===================================================================
  1959. --- dist/game/data/scripts/quests/not_done/Q10886_SaviorsPathSearchTheRefinery.java (revision 8524)
  1960. +++ dist/game/data/scripts/quests/not_done/Q10886_SaviorsPathSearchTheRefinery.java (nonexistent)
  1961. @@ -1,36 +0,0 @@
  1962. -/*
  1963. - * This file is part of the L2J Mobius project.
  1964. - *
  1965. - * This program is free software: you can redistribute it and/or modify
  1966. - * it under the terms of the GNU General Public License as published by
  1967. - * the Free Software Foundation, either version 3 of the License, or
  1968. - * (at your option) any later version.
  1969. - *
  1970. - * This program is distributed in the hope that it will be useful,
  1971. - * but WITHOUT ANY WARRANTY; without even the implied warranty of
  1972. - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  1973. - * General Public License for more details.
  1974. - *
  1975. - * You should have received a copy of the GNU General Public License
  1976. - * along with this program. If not, see <http://www.gnu.org/licenses/>.
  1977. - */
  1978. -package quests.not_done;
  1979. -
  1980. -import org.l2jmobius.Config;
  1981. -import org.l2jmobius.gameserver.model.quest.Quest;
  1982. -
  1983. -/**
  1984. - * @author Mobius
  1985. - */
  1986. -public class Q10886_SaviorsPathSearchTheRefinery extends Quest
  1987. -{
  1988. -   private static final int START_NPC = 34425;
  1989. -  
  1990. -   public Q10886_SaviorsPathSearchTheRefinery()
  1991. -   {
  1992. -       super(10886);
  1993. -       addStartNpc(START_NPC);
  1994. -       addTalkId(START_NPC);
  1995. -       addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
  1996. -   }
  1997. -}
  1998. Index: dist/game/data/scripts/quests/not_done/Q10887_SaviorsPathDemonsAndAtelia.java
  1999. ===================================================================
  2000. --- dist/game/data/scripts/quests/not_done/Q10887_SaviorsPathDemonsAndAtelia.java   (revision 8524)
  2001. +++ dist/game/data/scripts/quests/not_done/Q10887_SaviorsPathDemonsAndAtelia.java   (nonexistent)
  2002. @@ -1,36 +0,0 @@
  2003. -/*
  2004. - * This file is part of the L2J Mobius project.
  2005. - *
  2006. - * This program is free software: you can redistribute it and/or modify
  2007. - * it under the terms of the GNU General Public License as published by
  2008. - * the Free Software Foundation, either version 3 of the License, or
  2009. - * (at your option) any later version.
  2010. - *
  2011. - * This program is distributed in the hope that it will be useful,
  2012. - * but WITHOUT ANY WARRANTY; without even the implied warranty of
  2013. - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  2014. - * General Public License for more details.
  2015. - *
  2016. - * You should have received a copy of the GNU General Public License
  2017. - * along with this program. If not, see <http://www.gnu.org/licenses/>.
  2018. - */
  2019. -package quests.not_done;
  2020. -
  2021. -import org.l2jmobius.Config;
  2022. -import org.l2jmobius.gameserver.model.quest.Quest;
  2023. -
  2024. -/**
  2025. - * @author Mobius
  2026. - */
  2027. -public class Q10887_SaviorsPathDemonsAndAtelia extends Quest
  2028. -{
  2029. -   private static final int START_NPC = 34427;
  2030. -  
  2031. -   public Q10887_SaviorsPathDemonsAndAtelia()
  2032. -   {
  2033. -       super(10887);
  2034. -       addStartNpc(START_NPC);
  2035. -       addTalkId(START_NPC);
  2036. -       addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
  2037. -   }
  2038. -}
  2039. Index: dist/game/data/scripts/quests/not_done/Q10888_SaviorsPathDefeatTheEmbryo.java
  2040. ===================================================================
  2041. --- dist/game/data/scripts/quests/not_done/Q10888_SaviorsPathDefeatTheEmbryo.java   (revision 8524)
  2042. +++ dist/game/data/scripts/quests/not_done/Q10888_SaviorsPathDefeatTheEmbryo.java   (nonexistent)
  2043. @@ -1,36 +0,0 @@
  2044. -/*
  2045. - * This file is part of the L2J Mobius project.
  2046. - *
  2047. - * This program is free software: you can redistribute it and/or modify
  2048. - * it under the terms of the GNU General Public License as published by
  2049. - * the Free Software Foundation, either version 3 of the License, or
  2050. - * (at your option) any later version.
  2051. - *
  2052. - * This program is distributed in the hope that it will be useful,
  2053. - * but WITHOUT ANY WARRANTY; without even the implied warranty of
  2054. - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  2055. - * General Public License for more details.
  2056. - *
  2057. - * You should have received a copy of the GNU General Public License
  2058. - * along with this program. If not, see <http://www.gnu.org/licenses/>.
  2059. - */
  2060. -package quests.not_done;
  2061. -
  2062. -import org.l2jmobius.Config;
  2063. -import org.l2jmobius.gameserver.model.quest.Quest;
  2064. -
  2065. -/**
  2066. - * @author Mobius
  2067. - */
  2068. -public class Q10888_SaviorsPathDefeatTheEmbryo extends Quest
  2069. -{
  2070. -   private static final int START_NPC = 34427;
  2071. -  
  2072. -   public Q10888_SaviorsPathDefeatTheEmbryo()
  2073. -   {
  2074. -       super(10888);
  2075. -       addStartNpc(START_NPC);
  2076. -       addTalkId(START_NPC);
  2077. -       addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
  2078. -   }
  2079. -}
  2080. Index: dist/game/data/scripts/quests/not_done/Q10889_SaviorsPathFallenEmperorsThrone.java
  2081. ===================================================================
  2082. --- dist/game/data/scripts/quests/not_done/Q10889_SaviorsPathFallenEmperorsThrone.java  (revision 8524)
  2083. +++ dist/game/data/scripts/quests/not_done/Q10889_SaviorsPathFallenEmperorsThrone.java  (nonexistent)
  2084. @@ -1,36 +0,0 @@
  2085. -/*
  2086. - * This file is part of the L2J Mobius project.
  2087. - *
  2088. - * This program is free software: you can redistribute it and/or modify
  2089. - * it under the terms of the GNU General Public License as published by
  2090. - * the Free Software Foundation, either version 3 of the License, or
  2091. - * (at your option) any later version.
  2092. - *
  2093. - * This program is distributed in the hope that it will be useful,
  2094. - * but WITHOUT ANY WARRANTY; without even the implied warranty of
  2095. - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  2096. - * General Public License for more details.
  2097. - *
  2098. - * You should have received a copy of the GNU General Public License
  2099. - * along with this program. If not, see <http://www.gnu.org/licenses/>.
  2100. - */
  2101. -package quests.not_done;
  2102. -
  2103. -import org.l2jmobius.Config;
  2104. -import org.l2jmobius.gameserver.model.quest.Quest;
  2105. -
  2106. -/**
  2107. - * @author Mobius
  2108. - */
  2109. -public class Q10889_SaviorsPathFallenEmperorsThrone extends Quest
  2110. -{
  2111. -   private static final int START_NPC = 34425;
  2112. -  
  2113. -   public Q10889_SaviorsPathFallenEmperorsThrone()
  2114. -   {
  2115. -       super(10889);
  2116. -       addStartNpc(START_NPC);
  2117. -       addTalkId(START_NPC);
  2118. -       addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
  2119. -   }
  2120. -}
  2121. Index: dist/game/data/scripts/quests/not_done/Q10890_SaviorsPathFallOfEtina.java
  2122. ===================================================================
  2123. --- dist/game/data/scripts/quests/not_done/Q10890_SaviorsPathFallOfEtina.java   (revision 8524)
  2124. +++ dist/game/data/scripts/quests/not_done/Q10890_SaviorsPathFallOfEtina.java   (nonexistent)
  2125. @@ -1,36 +0,0 @@
  2126. -/*
  2127. - * This file is part of the L2J Mobius project.
  2128. - *
  2129. - * This program is free software: you can redistribute it and/or modify
  2130. - * it under the terms of the GNU General Public License as published by
  2131. - * the Free Software Foundation, either version 3 of the License, or
  2132. - * (at your option) any later version.
  2133. - *
  2134. - * This program is distributed in the hope that it will be useful,
  2135. - * but WITHOUT ANY WARRANTY; without even the implied warranty of
  2136. - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  2137. - * General Public License for more details.
  2138. - *
  2139. - * You should have received a copy of the GNU General Public License
  2140. - * along with this program. If not, see <http://www.gnu.org/licenses/>.
  2141. - */
  2142. -package quests.not_done;
  2143. -
  2144. -import org.l2jmobius.Config;
  2145. -import org.l2jmobius.gameserver.model.quest.Quest;
  2146. -
  2147. -/**
  2148. - * @author Mobius
  2149. - */
  2150. -public class Q10890_SaviorsPathFallOfEtina extends Quest
  2151. -{
  2152. -   private static final int START_NPC = 34425;
  2153. -  
  2154. -   public Q10890_SaviorsPathFallOfEtina()
  2155. -   {
  2156. -       super(10890);
  2157. -       addStartNpc(START_NPC);
  2158. -       addTalkId(START_NPC);
  2159. -       addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
  2160. -   }
  2161. -}
  2162.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement