VarkaKetra.java 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  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 ai.group_template;
  20. import quests.Q00605_AllianceWithKetraOrcs.Q00605_AllianceWithKetraOrcs;
  21. import quests.Q00606_BattleAgainstVarkaSilenos.Q00606_BattleAgainstVarkaSilenos;
  22. import quests.Q00607_ProveYourCourageKetra.Q00607_ProveYourCourageKetra;
  23. import quests.Q00608_SlayTheEnemyCommanderKetra.Q00608_SlayTheEnemyCommanderKetra;
  24. import quests.Q00609_MagicalPowerOfWaterPart1.Q00609_MagicalPowerOfWaterPart1;
  25. import quests.Q00610_MagicalPowerOfWaterPart2.Q00610_MagicalPowerOfWaterPart2;
  26. import quests.Q00611_AllianceWithVarkaSilenos.Q00611_AllianceWithVarkaSilenos;
  27. import quests.Q00612_BattleAgainstKetraOrcs.Q00612_BattleAgainstKetraOrcs;
  28. import quests.Q00613_ProveYourCourageVarka.Q00613_ProveYourCourageVarka;
  29. import quests.Q00614_SlayTheEnemyCommanderVarka.Q00614_SlayTheEnemyCommanderVarka;
  30. import quests.Q00615_MagicalPowerOfFirePart1.Q00615_MagicalPowerOfFirePart1;
  31. import quests.Q00616_MagicalPowerOfFirePart2.Q00616_MagicalPowerOfFirePart2;
  32. import ai.npc.AbstractNpcAI;
  33. import com.l2jserver.gameserver.model.actor.L2Attackable;
  34. import com.l2jserver.gameserver.model.actor.L2Npc;
  35. import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
  36. import com.l2jserver.gameserver.model.quest.QuestState;
  37. import com.l2jserver.gameserver.util.Util;
  38. /**
  39. * Varka Silenos Barracks and Ketra Orc Outpost AI.
  40. * @author malyelfik
  41. */
  42. public class VarkaKetra extends AbstractNpcAI
  43. {
  44. // Monsters
  45. private static final int[] KETRA =
  46. {
  47. 21324, // Ketra Orc Footman
  48. 21325, // Ketra's War Hound
  49. 21327, // Ketra Orc Raider
  50. 21328, // Ketra Orc Scout
  51. 21329, // Ketra Orc Shaman
  52. 21331, // Ketra Orc Warrior
  53. 21332, // Ketra Orc Lieutenant
  54. 21334, // Ketra Orc Medium
  55. 21335, // Ketra Orc Elite Soldier
  56. 21336, // Ketra Orc White Captain
  57. 21338, // Ketra Orc Seer
  58. 21339, // Ketra Orc General
  59. 21340, // Ketra Orc Battalion Commander
  60. 21342, // Ketra Orc Grand Seer
  61. 21343, // Ketra Commander
  62. 21344, // Ketra Elite Guard
  63. 21345, // Ketra's Head Shaman
  64. 21346, // Ketra's Head Guard
  65. 21347, // Ketra Prophet
  66. 21348, // Prophet's Guard
  67. 21349, // Prophet's Aide
  68. 25299, // Ketra's Hero Hekaton (Raid Boss)
  69. 25302, // Ketra's Commander Tayr (Raid Boss)
  70. 25305, // Ketra's Chief Brakki (Raid Boss)
  71. 25306, // Soul of Fire Nastron (Raid Boss)
  72. };
  73. private static final int[] VARKA =
  74. {
  75. 21350, // Varka Silenos Recruit
  76. 21351, // Varka Silenos Footman
  77. 21353, // Varka Silenos Scout
  78. 21354, // Varka Silenos Hunter
  79. 21355, // Varka Silenos Shaman
  80. 21357, // Varka Silenos Priest
  81. 21358, // Varka Silenos Warrior
  82. 21360, // Varka Silenos Medium
  83. 21361, // Varka Silenos Magus
  84. 21362, // Varka Silenos Officer
  85. 21364, // Varka Silenos Seer
  86. 21365, // Varka Silenos Great Magus
  87. 21366, // Varka Silenos General
  88. 21368, // Varka Silenos Great Seer
  89. 21369, // Varka's Commander
  90. 21370, // Varka's Elite Guard
  91. 21371, // Varka's Head Magus
  92. 21372, // Varka's Head Guard
  93. 21373, // Varka's Prophet
  94. 21374, // Prophet's Guard
  95. 21375, // Disciple of Prophet
  96. 25309, // Varka's Hero Shadith (Raid Boss)
  97. 25312, // Varka's Commander Mos (Raid Boss)
  98. 25315, // Varka's Chief Horus (Raid Boss)
  99. 25316, // Soul of Water Ashutar (Raid Boss)
  100. };
  101. // Items
  102. private static final int[] KETRA_MARKS =
  103. {
  104. 7211, // Mark of Ketra's Alliance - Level 1
  105. 7212, // Mark of Ketra's Alliance - Level 2
  106. 7213, // Mark of Ketra's Alliance - Level 3
  107. 7214, // Mark of Ketra's Alliance - Level 4
  108. 7215, // Mark of Ketra's Alliance - Level 5
  109. };
  110. private static final int[] VARKA_MARKS =
  111. {
  112. 7221, // Mark of Varka's Alliance - Level 1
  113. 7222, // Mark of Varka's Alliance - Level 2
  114. 7223, // Mark of Varka's Alliance - Level 3
  115. 7224, // Mark of Varka's Alliance - Level 4
  116. 7225, // Mark of Varka's Alliance - Level 5
  117. };
  118. // Quests
  119. private static final String[] KETRA_QUESTS =
  120. {
  121. Q00605_AllianceWithKetraOrcs.class.getSimpleName(),
  122. Q00606_BattleAgainstVarkaSilenos.class.getSimpleName(),
  123. Q00607_ProveYourCourageKetra.class.getSimpleName(),
  124. Q00608_SlayTheEnemyCommanderKetra.class.getSimpleName(),
  125. Q00609_MagicalPowerOfWaterPart1.class.getSimpleName(),
  126. Q00610_MagicalPowerOfWaterPart2.class.getSimpleName()
  127. };
  128. private static final String[] VARKA_QUESTS =
  129. {
  130. Q00611_AllianceWithVarkaSilenos.class.getSimpleName(),
  131. Q00612_BattleAgainstKetraOrcs.class.getSimpleName(),
  132. Q00613_ProveYourCourageVarka.class.getSimpleName(),
  133. Q00614_SlayTheEnemyCommanderVarka.class.getSimpleName(),
  134. Q00615_MagicalPowerOfFirePart1.class.getSimpleName(),
  135. Q00616_MagicalPowerOfFirePart2.class.getSimpleName()
  136. };
  137. private VarkaKetra()
  138. {
  139. super(VarkaKetra.class.getSimpleName(), "ai/group_template");
  140. addKillId(KETRA);
  141. addKillId(VARKA);
  142. addNpcHateId(KETRA);
  143. addNpcHateId(VARKA);
  144. }
  145. @Override
  146. public void actionForEachPlayer(L2PcInstance player, L2Npc npc, boolean isSummon)
  147. {
  148. if (Util.checkIfInRange(1500, player, npc, false))
  149. {
  150. if (Util.contains(KETRA, npc.getId()) && hasAtLeastOneQuestItem(player, KETRA_MARKS))
  151. {
  152. decreaseAlliance(player, KETRA_MARKS);
  153. exitQuests(player, KETRA_QUESTS);
  154. }
  155. else if (Util.contains(VARKA, npc.getId()) && hasAtLeastOneQuestItem(player, VARKA_MARKS))
  156. {
  157. decreaseAlliance(player, VARKA_MARKS);
  158. exitQuests(player, VARKA_QUESTS);
  159. }
  160. }
  161. }
  162. private final void decreaseAlliance(L2PcInstance player, int[] marks)
  163. {
  164. for (int i = 0; i < marks.length; i++)
  165. {
  166. if (hasQuestItems(player, marks[i]))
  167. {
  168. takeItems(player, marks[i], -1);
  169. if (i > 0)
  170. {
  171. giveItems(player, marks[i - 1], 1);
  172. }
  173. return;
  174. }
  175. }
  176. }
  177. private final void exitQuests(L2PcInstance player, String[] quests)
  178. {
  179. for (String quest : quests)
  180. {
  181. final QuestState qs = player.getQuestState(quest);
  182. if ((qs != null) && qs.isStarted())
  183. {
  184. qs.exitQuest(true);
  185. }
  186. }
  187. }
  188. @Override
  189. public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
  190. {
  191. executeForEachPlayer(killer, npc, isSummon, true, false);
  192. return super.onKill(npc, killer, isSummon);
  193. }
  194. @Override
  195. public boolean onNpcHate(L2Attackable mob, L2PcInstance player, boolean isSummon)
  196. {
  197. if (Util.contains(KETRA, mob.getId()))
  198. {
  199. return !hasAtLeastOneQuestItem(player, KETRA_MARKS);
  200. }
  201. return !hasAtLeastOneQuestItem(player, VARKA_MARKS);
  202. }
  203. public static void main(String[] args)
  204. {
  205. new VarkaKetra();
  206. }
  207. }