HeavyMedal.java 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. /*
  2. * Copyright (C) 2004-2013 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.HeavyMedal;
  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.quest.QuestState;
  24. /**
  25. * Heavy Medals event AI.
  26. * @author Gnacik
  27. */
  28. public class HeavyMedal extends LongTimeEvent
  29. {
  30. private final static int CAT_ROY = 31228;
  31. private final static int CAT_WINNIE = 31229;
  32. private final static int GLITTERING_MEDAL = 6393;
  33. private final static int WIN_CHANCE = 50;
  34. private final static int[] MEDALS =
  35. {
  36. 5,
  37. 10,
  38. 20,
  39. 40
  40. };
  41. private final static int[] BADGES =
  42. {
  43. 6399,
  44. 6400,
  45. 6401,
  46. 6402
  47. };
  48. public HeavyMedal(String name, String descr)
  49. {
  50. super(name, descr);
  51. addStartNpc(CAT_ROY);
  52. addStartNpc(CAT_WINNIE);
  53. addTalkId(CAT_ROY);
  54. addTalkId(CAT_WINNIE);
  55. addFirstTalkId(CAT_ROY);
  56. addFirstTalkId(CAT_WINNIE);
  57. }
  58. @Override
  59. public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
  60. {
  61. final QuestState st = player.getQuestState(getName());
  62. if (st == null)
  63. {
  64. return getNoQuestMsg(player);
  65. }
  66. String htmltext = event;
  67. int level = checkLevel(st);
  68. if (event.equalsIgnoreCase("game"))
  69. {
  70. htmltext = st.getQuestItemsCount(GLITTERING_MEDAL) < MEDALS[level] ? "31229-no.htm" : "31229-game.htm";
  71. }
  72. else if (event.equalsIgnoreCase("heads") || event.equalsIgnoreCase("tails"))
  73. {
  74. if (st.getQuestItemsCount(GLITTERING_MEDAL) < MEDALS[level])
  75. {
  76. htmltext = "31229-" + event.toLowerCase() + "-10.htm";
  77. }
  78. else
  79. {
  80. st.takeItems(GLITTERING_MEDAL, MEDALS[level]);
  81. if (getRandom(100) > WIN_CHANCE)
  82. {
  83. level = 0;
  84. }
  85. else
  86. {
  87. if (level > 0)
  88. {
  89. st.takeItems(BADGES[level - 1], -1);
  90. }
  91. st.giveItems(BADGES[level], 1);
  92. st.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
  93. level++;
  94. }
  95. htmltext = "31229-" + event.toLowerCase() + "-" + String.valueOf(level) + ".htm";
  96. }
  97. }
  98. else if (event.equalsIgnoreCase("talk"))
  99. {
  100. htmltext = String.valueOf(npc.getId()) + "-lvl-" + String.valueOf(level) + ".htm";
  101. }
  102. return htmltext;
  103. }
  104. @Override
  105. public String onFirstTalk(L2Npc npc, L2PcInstance player)
  106. {
  107. if (player.getQuestState(getName()) == null)
  108. {
  109. newQuestState(player);
  110. }
  111. return npc.getId() + ".htm";
  112. }
  113. public int checkLevel(QuestState st)
  114. {
  115. int _lev = 0;
  116. if (st.hasQuestItems(6402))
  117. {
  118. _lev = 4;
  119. }
  120. else if (st.hasQuestItems(6401))
  121. {
  122. _lev = 3;
  123. }
  124. else if (st.hasQuestItems(6400))
  125. {
  126. _lev = 2;
  127. }
  128. else if (st.hasQuestItems(6399))
  129. {
  130. _lev = 1;
  131. }
  132. return _lev;
  133. }
  134. public static void main(String[] args)
  135. {
  136. new HeavyMedal(HeavyMedal.class.getSimpleName(), "events");
  137. }
  138. }