SupportMagic.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  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 handlers.bypasshandlers;
  20. import com.l2jserver.gameserver.enums.CategoryType;
  21. import com.l2jserver.gameserver.handler.IBypassHandler;
  22. import com.l2jserver.gameserver.model.actor.L2Character;
  23. import com.l2jserver.gameserver.model.actor.L2Npc;
  24. import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
  25. import com.l2jserver.gameserver.model.holders.SkillHolder;
  26. public class SupportMagic implements IBypassHandler
  27. {
  28. private static final String[] COMMANDS =
  29. {
  30. "supportmagicservitor",
  31. "supportmagic"
  32. };
  33. // Buffs
  34. private static final SkillHolder HASTE_1 = new SkillHolder(4327, 1);
  35. private static final SkillHolder HASTE_2 = new SkillHolder(5632, 1);
  36. private static final SkillHolder CUBIC = new SkillHolder(4338, 1);
  37. private static final SkillHolder[] FIGHTER_BUFFS =
  38. {
  39. new SkillHolder(4322, 1), // Wind Walk
  40. new SkillHolder(4323, 1), // Shield
  41. new SkillHolder(5637, 1), // Magic Barrier
  42. new SkillHolder(4324, 1), // Bless the Body
  43. new SkillHolder(4325, 1), // Vampiric Rage
  44. new SkillHolder(4326, 1), // Regeneration
  45. };
  46. private static final SkillHolder[] MAGE_BUFFS =
  47. {
  48. new SkillHolder(4322, 1), // Wind Walk
  49. new SkillHolder(4323, 1), // Shield
  50. new SkillHolder(5637, 1), // Magic Barrier
  51. new SkillHolder(4328, 1), // Bless the Soul
  52. new SkillHolder(4329, 1), // Acumen
  53. new SkillHolder(4330, 1), // Concentration
  54. new SkillHolder(4331, 1), // Empower
  55. };
  56. private static final SkillHolder[] SUMMON_BUFFS =
  57. {
  58. new SkillHolder(4322, 1), // Wind Walk
  59. new SkillHolder(4323, 1), // Shield
  60. new SkillHolder(5637, 1), // Magic Barrier
  61. new SkillHolder(4324, 1), // Bless the Body
  62. new SkillHolder(4325, 1), // Vampiric Rage
  63. new SkillHolder(4326, 1), // Regeneration
  64. new SkillHolder(4328, 1), // Bless the Soul
  65. new SkillHolder(4329, 1), // Acumen
  66. new SkillHolder(4330, 1), // Concentration
  67. new SkillHolder(4331, 1), // Empower
  68. };
  69. // Levels
  70. private static final int LOWEST_LEVEL = 6;
  71. private static final int HIGHEST_LEVEL = 75;
  72. private static final int CUBIC_LOWEST = 16;
  73. private static final int CUBIC_HIGHEST = 34;
  74. private static final int HASTE_LEVEL_2 = 40;
  75. @Override
  76. public boolean useBypass(String command, L2PcInstance activeChar, L2Character target)
  77. {
  78. if (!target.isNpc() || activeChar.isCursedWeaponEquipped())
  79. {
  80. return false;
  81. }
  82. if (command.equalsIgnoreCase(COMMANDS[0]))
  83. {
  84. makeSupportMagic(activeChar, (L2Npc) target, true);
  85. }
  86. else if (command.equalsIgnoreCase(COMMANDS[1]))
  87. {
  88. makeSupportMagic(activeChar, (L2Npc) target, false);
  89. }
  90. return true;
  91. }
  92. private static void makeSupportMagic(L2PcInstance player, L2Npc npc, boolean isSummon)
  93. {
  94. final int level = player.getLevel();
  95. if (isSummon && !player.hasServitor())
  96. {
  97. npc.showChatWindow(player, "data/html/default/SupportMagicNoSummon.htm");
  98. return;
  99. }
  100. else if (level > HIGHEST_LEVEL)
  101. {
  102. npc.showChatWindow(player, "data/html/default/SupportMagicHighLevel.htm");
  103. return;
  104. }
  105. else if (level < LOWEST_LEVEL)
  106. {
  107. npc.showChatWindow(player, "data/html/default/SupportMagicLowLevel.htm");
  108. return;
  109. }
  110. else if (player.getClassId().level() == 3)
  111. {
  112. player.sendMessage("Only adventurers who have not completed their 3rd class transfer may receive these buffs."); // Custom message
  113. return;
  114. }
  115. if (isSummon)
  116. {
  117. npc.setTarget(player.getSummon());
  118. for (SkillHolder skill : SUMMON_BUFFS)
  119. {
  120. npc.doCast(skill.getSkill());
  121. }
  122. if (level >= HASTE_LEVEL_2)
  123. {
  124. npc.doCast(HASTE_2.getSkill());
  125. }
  126. else
  127. {
  128. npc.doCast(HASTE_1.getSkill());
  129. }
  130. }
  131. else
  132. {
  133. npc.setTarget(player);
  134. if (player.isInCategory(CategoryType.BEGINNER_MAGE))
  135. {
  136. for (SkillHolder skill : MAGE_BUFFS)
  137. {
  138. npc.doCast(skill.getSkill());
  139. }
  140. }
  141. else
  142. {
  143. for (SkillHolder skill : FIGHTER_BUFFS)
  144. {
  145. npc.doCast(skill.getSkill());
  146. }
  147. if (level >= HASTE_LEVEL_2)
  148. {
  149. npc.doCast(HASTE_2.getSkill());
  150. }
  151. else
  152. {
  153. npc.doCast(HASTE_1.getSkill());
  154. }
  155. }
  156. if ((level >= CUBIC_LOWEST) && (level <= CUBIC_HIGHEST))
  157. {
  158. player.doSimultaneousCast(CUBIC.getSkill());
  159. }
  160. }
  161. }
  162. @Override
  163. public String[] getBypassList()
  164. {
  165. return COMMANDS;
  166. }
  167. }