GiftOfVitality.java 5.4 KB

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