GiftOfVitality.java 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  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 events.GiftOfVitality;
  20. import com.l2jserver.gameserver.model.actor.L2Npc;
  21. import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
  22. import com.l2jserver.gameserver.model.event.LongTimeEvent;
  23. import com.l2jserver.gameserver.model.holders.SkillHolder;
  24. import com.l2jserver.gameserver.network.SystemMessageId;
  25. import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
  26. /**
  27. * Gift of Vitality event AI.
  28. * @author Gnacik, Adry_85
  29. */
  30. public final class GiftOfVitality extends LongTimeEvent
  31. {
  32. // NPC
  33. private static final int STEVE_SHYAGEL = 4306;
  34. // Skills
  35. private static final SkillHolder GIFT_OF_VITALITY = new SkillHolder(23179, 1);
  36. private static final SkillHolder JOY_OF_VITALITY = new SkillHolder(23180, 1);
  37. private static SkillHolder[] FIGHTER_SKILLS =
  38. {
  39. new SkillHolder(5627, 1), // Wind Walk
  40. new SkillHolder(5628, 1), // Shield
  41. new SkillHolder(5637, 1), // Magic Barrier
  42. new SkillHolder(5629, 1), // Bless the Body
  43. new SkillHolder(5630, 1), // Vampiric Rage
  44. new SkillHolder(5631, 1), // Regeneration
  45. new SkillHolder(5632, 1), // Haste
  46. };
  47. private static SkillHolder[] MAGE_SKILLS =
  48. {
  49. new SkillHolder(5627, 1), // Wind Walk
  50. new SkillHolder(5628, 1), // Shield
  51. new SkillHolder(5637, 1), // Magic Barrier
  52. new SkillHolder(5633, 1), // Bless the Soul
  53. new SkillHolder(5634, 1), // Acumen
  54. new SkillHolder(5635, 1), // Concentration
  55. new SkillHolder(5636, 1), // Empower
  56. };
  57. private static SkillHolder[] SERVITOR_SKILLS =
  58. {
  59. new SkillHolder(5627, 1), // Wind Walk
  60. new SkillHolder(5628, 1), // Shield
  61. new SkillHolder(5637, 1), // Magic Barrier
  62. new SkillHolder(5629, 1), // Bless the Body
  63. new SkillHolder(5633, 1), // Bless the Soul
  64. new SkillHolder(5630, 1), // Vampiric Rage
  65. new SkillHolder(5634, 1), // Acumen
  66. new SkillHolder(5631, 1), // Regeneration
  67. new SkillHolder(5635, 1), // Concentration
  68. new SkillHolder(5632, 1), // Haste
  69. new SkillHolder(5636, 1), // Empower
  70. };
  71. // Misc
  72. private static final int HOURS = 5; // Reuse between buffs
  73. private static final int MIN_LEVEL = 75;
  74. private static final String REUSE = GiftOfVitality.class.getSimpleName() + "_reuse";
  75. private GiftOfVitality()
  76. {
  77. super(GiftOfVitality.class.getSimpleName(), "events");
  78. addStartNpc(STEVE_SHYAGEL);
  79. addFirstTalkId(STEVE_SHYAGEL);
  80. addTalkId(STEVE_SHYAGEL);
  81. }
  82. @Override
  83. public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
  84. {
  85. String htmltext = event;
  86. switch (event)
  87. {
  88. case "vitality":
  89. {
  90. final long reuse = player.getVariables().getLong(REUSE, 0);
  91. if (reuse > System.currentTimeMillis())
  92. {
  93. long remainingTime = (reuse - System.currentTimeMillis()) / 1000;
  94. int hours = (int) (remainingTime / 3600);
  95. int minutes = (int) ((remainingTime % 3600) / 60);
  96. SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.AVAILABLE_AFTER_S1_S2_HOURS_S3_MINUTES);
  97. sm.addSkillName(23179);
  98. sm.addInt(hours);
  99. sm.addInt(minutes);
  100. player.sendPacket(sm);
  101. htmltext = "4306-notime.htm";
  102. }
  103. else
  104. {
  105. player.doCast(GIFT_OF_VITALITY.getSkill());
  106. player.doSimultaneousCast(JOY_OF_VITALITY.getSkill());
  107. player.getVariables().set(REUSE, System.currentTimeMillis() + (HOURS * 3600000));
  108. htmltext = "4306-okvitality.htm";
  109. }
  110. break;
  111. }
  112. case "memories_player":
  113. {
  114. if (player.getLevel() <= MIN_LEVEL)
  115. {
  116. htmltext = "4306-nolevel.htm";
  117. }
  118. else
  119. {
  120. final SkillHolder[] skills = (player.isMageClass()) ? MAGE_SKILLS : FIGHTER_SKILLS;
  121. npc.setTarget(player);
  122. for (SkillHolder sk : skills)
  123. {
  124. npc.doCast(sk.getSkill());
  125. }
  126. htmltext = "4306-okbuff.htm";
  127. }
  128. break;
  129. }
  130. case "memories_summon":
  131. {
  132. if (player.getLevel() <= MIN_LEVEL)
  133. {
  134. htmltext = "4306-nolevel.htm";
  135. }
  136. else if (!player.hasServitor())
  137. {
  138. htmltext = "4306-nosummon.htm";
  139. }
  140. else
  141. {
  142. npc.setTarget(player.getSummon());
  143. for (SkillHolder sk : SERVITOR_SKILLS)
  144. {
  145. npc.doCast(sk.getSkill());
  146. }
  147. htmltext = "4306-okbuff.htm";
  148. }
  149. break;
  150. }
  151. }
  152. return htmltext;
  153. }
  154. @Override
  155. public String onFirstTalk(L2Npc npc, L2PcInstance player)
  156. {
  157. return "4306.htm";
  158. }
  159. public static void main(String[] args)
  160. {
  161. new GiftOfVitality();
  162. }
  163. }