Q00634_InSearchOfFragmentsOfDimension.java 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. /*
  2. * Copyright (C) 2004-2015 L2J DataPack
  3. *
  4. * This file is part of L2J DataPack.
  5. *
  6. * L2J DataPack is free software: you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License as published by
  8. * the Free Software Foundation, either version 3 of the License, or
  9. * (at your option) any later version.
  10. *
  11. * L2J DataPack is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14. * General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU General Public License
  17. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  18. */
  19. package quests.Q00634_InSearchOfFragmentsOfDimension;
  20. import com.l2jserver.gameserver.model.actor.L2Npc;
  21. import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
  22. import com.l2jserver.gameserver.model.quest.Quest;
  23. import com.l2jserver.gameserver.model.quest.QuestState;
  24. /**
  25. * In Search of Fragments of Dimension (634)
  26. * @author Adry_85
  27. */
  28. public final class Q00634_InSearchOfFragmentsOfDimension extends Quest
  29. {
  30. // NPCs
  31. private static final int[] DIMENSIONAL_GATE_KEEPER =
  32. {
  33. 31494,
  34. 31495,
  35. 31496,
  36. 31497,
  37. 31498,
  38. 31499,
  39. 31500,
  40. 31501,
  41. 31502,
  42. 31503,
  43. 31504,
  44. 31505,
  45. 31506,
  46. 31507
  47. };
  48. // Item
  49. private static final int DIMENSIONAL_FRAGMENT = 7079;
  50. // Misc
  51. private static final int MIN_LEVEL = 20;
  52. // Monsters
  53. private static final int[] MOBS =
  54. {
  55. 21208, // Hallowed Watchman
  56. 21209, // Hallowed Seer
  57. 21210, // Vault Guardian
  58. 21211, // Vault Seer
  59. 21212, // Hallowed Sentinel
  60. 21213, // Hallowed Monk
  61. 21214, // Vault Sentinel
  62. 21215, // Vault Monk
  63. 21216, // Overlord of the Holy Lands
  64. 21217, // Hallowed Priest
  65. 21218, // Vault Overlord
  66. 21219, // Vault Priest
  67. 21220, // Sepulcher Archon
  68. 21221, // Sepulcher Inquisitor
  69. 21222, // Sepulcher Archon
  70. 21223, // Sepulcher Inquisitor
  71. 21224, // Sepulcher Guardian
  72. 21225, // Sepulcher Sage
  73. 21226, // Sepulcher Guardian
  74. 21227, // Sepulcher Sage
  75. 21228, // Sepulcher Guard
  76. 21229, // Sepulcher Preacher
  77. 21230, // Sepulcher Guard
  78. 21231, // Sepulcher Preacher
  79. 21232, // Barrow Guardian
  80. 21233, // Barrow Seer
  81. 21234, // Grave Guardian
  82. 21235, // Grave Seer
  83. 21236, // Barrow Sentinel
  84. 21237, // Barrow Monk
  85. 21238, // Grave Sentinel
  86. 21239, // Grave Monk
  87. 21240, // Barrow Overlord
  88. 21241, // Barrow Priest
  89. 21242, // Grave Overlord
  90. 21243, // Grave Priest
  91. 21244, // Crypt Archon
  92. 21245, // Crypt Inquisitor
  93. 21246, // Tomb Archon
  94. 21247, // Tomb Inquisitor
  95. 21248, // Crypt Guardian
  96. 21249, // Crypt Sage
  97. 21250, // Tomb Guardian
  98. 21251, // Tomb Sage
  99. 21252, // Crypt Guard
  100. 21253, // Crypt Preacher
  101. 21254, // Tomb Guard
  102. 21255, // Tomb Preacher
  103. 21256, // Underground Werewolf
  104. };
  105. public Q00634_InSearchOfFragmentsOfDimension()
  106. {
  107. super(634, Q00634_InSearchOfFragmentsOfDimension.class.getSimpleName(), "In Search of Fragments of Dimension");
  108. addStartNpc(DIMENSIONAL_GATE_KEEPER);
  109. addTalkId(DIMENSIONAL_GATE_KEEPER);
  110. addKillId(MOBS);
  111. }
  112. @Override
  113. public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
  114. {
  115. final QuestState qs = getQuestState(player, false);
  116. if (qs == null)
  117. {
  118. return null;
  119. }
  120. String htmltext = null;
  121. switch (event)
  122. {
  123. case "31494-02.htm":
  124. {
  125. qs.startQuest();
  126. htmltext = event;
  127. break;
  128. }
  129. case "31494-05.html":
  130. case "31494-06.html":
  131. {
  132. if (qs.isStarted())
  133. {
  134. htmltext = event;
  135. }
  136. break;
  137. }
  138. case "31494-07.html":
  139. {
  140. if (qs.isStarted())
  141. {
  142. qs.exitQuest(true, true);
  143. htmltext = event;
  144. }
  145. break;
  146. }
  147. }
  148. return htmltext;
  149. }
  150. @Override
  151. public String onKill(L2Npc npc, L2PcInstance player, boolean isSummon)
  152. {
  153. final QuestState qs = getRandomPartyMemberState(player, -1, 3, npc);
  154. if (qs != null)
  155. {
  156. final int i0 = (int) ((0.15 * npc.getLevel()) + 1.6);
  157. if (getRandom(100) < 10)
  158. {
  159. giveItemRandomly(qs.getPlayer(), npc, DIMENSIONAL_FRAGMENT, i0, 0, 1.0, true);
  160. }
  161. }
  162. return super.onKill(npc, player, isSummon);
  163. }
  164. @Override
  165. public String onTalk(L2Npc npc, L2PcInstance player)
  166. {
  167. final QuestState qs = getQuestState(player, true);
  168. String htmltext = getNoQuestMsg(player);
  169. if (qs.isCreated())
  170. {
  171. htmltext = (player.getLevel() >= MIN_LEVEL) ? "31494-01.htm" : "31494-03.htm";
  172. }
  173. else if (qs.isStarted())
  174. {
  175. htmltext = "31494-04.html";
  176. }
  177. return htmltext;
  178. }
  179. }