HeavyMedal.java 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. package events.HeavyMedal;
  2. import com.l2jserver.gameserver.instancemanager.QuestManager;
  3. import com.l2jserver.gameserver.model.actor.L2Npc;
  4. import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
  5. import com.l2jserver.gameserver.model.quest.Quest;
  6. import com.l2jserver.gameserver.model.quest.QuestState;
  7. import com.l2jserver.util.Rnd;
  8. /**
  9. ** @author Gnacik
  10. **
  11. ** Retail Event : 'Heavy Medals'
  12. */
  13. public class HeavyMedal extends Quest
  14. {
  15. private final static int CAT_ROY = 31228;
  16. private final static int CAT_WINNIE = 31229;
  17. private final static int GLITTERING_MEDAL = 6393;
  18. private final static int WIN_CHANCE = 50;
  19. private final static int[] MEDALS = { 5,10,20,40 };
  20. private final static int[] BADGES = { 6399,6400,6401,6402 };
  21. private static final int[][] _spawns_winnie =
  22. {
  23. {-44342,-113726,-240,0},
  24. {-44671,-115437,-240,22500},
  25. {-13073,122841,-3117,0},
  26. {-13972,121893,-2988,32768},
  27. {-14843,123710,-3117,8192},
  28. {11327,15682,-4584,25000},
  29. {11243,17712,-4574,57344},
  30. {18154,145192,-3054,7400},
  31. {19214,144327,-3097,32768},
  32. {19459,145775,-3086,48000},
  33. {17418,170217,-3507,36000},
  34. {47146,49382,-3059,32000},
  35. {44157,50827,-3059,57344},
  36. {79798,55629,-1560,0},
  37. {83328,55769,-1525,32768},
  38. {80986,54452,-1525,32768},
  39. {83329,149095,-3405,49152},
  40. {82277,148564,-3467,0},
  41. {81620,148689,-3464,32768},
  42. {81691,145610,-3467,32768},
  43. {114719,-178742,-821,0},
  44. {115708,-182422,-1449,0},
  45. {-80731,151152,-3043,28672},
  46. {-84097,150171,-3129,4096},
  47. {-82678,151666,-3129,49152},
  48. {117459,76664,-2695,38000},
  49. {115936,76488,-2711,59000},
  50. {119576,76940,-2275,40960},
  51. {-84516,243015,-3730,34000},
  52. {-86031,243153,-3730,60000},
  53. {147124,27401,-2192,40960},
  54. {147985,25664,-2000,16384},
  55. {111724,221111,-3543,16384},
  56. {107899,218149,-3675,0},
  57. {114920,220080,-3632,32768},
  58. {147924,-58052,-2979,49000},
  59. {147285,-56461,-2776,33000},
  60. {44176,-48688,-800,33000},
  61. {44294,-47642,-792,50000}
  62. };
  63. private static final int[][] _spawns_roy =
  64. {
  65. {-44337,-113669,-224,0},
  66. {-44628,-115409,-240,22500},
  67. {-13073,122801,-3117,0},
  68. {-13949,121934,-2988,32768},
  69. {-14786,123686,-3117,8192},
  70. {11281,15652,-4584,25000},
  71. {11303,17732,-4574,57344},
  72. {18178,145149,-3054,7400},
  73. {19208,144380,-3097,32768},
  74. {19508,145775,-3086,48000},
  75. {17396,170259,-3507,36000},
  76. {47151,49436,-3059,32000},
  77. {44122,50784,-3059,57344},
  78. {79806,55570,-1560,0},
  79. {83328,55824,-1525,32768},
  80. {80986,54504,-1525,32768},
  81. {83332,149160,-3405,49152},
  82. {82277,148598,-3467,0},
  83. {81621,148725,-3467,32768},
  84. {81680,145656,-3467,32768},
  85. {114733,-178691,-821,0},
  86. {115708,-182362,-1449,0},
  87. {-80789,151073,-3043,28672},
  88. {-84049,150176,-3129,4096},
  89. {-82623,151666,-3129,49152},
  90. {117498,76630,-2695,38000},
  91. {115914,76449,-2711,59000},
  92. {119536,76988,-2275,40960},
  93. {-84516,242971,-3730,34000},
  94. {-86003,243205,-3730,60000},
  95. {147184,27405,-2192,17000},
  96. {147920,25664,-2000,16384},
  97. {111776,221104,-3543,16384},
  98. {107904,218096,-3675,0},
  99. {114920,220020,-3632,32768},
  100. {147888,-58048,-2979,49000},
  101. {147262,-56450,-2776,33000},
  102. {44176,-48732,-800,33000},
  103. {44319,-47640,-792,50000}
  104. };
  105. public HeavyMedal(int questId, String name, String descr)
  106. {
  107. super(questId, name, descr);
  108. addStartNpc(CAT_ROY);
  109. addStartNpc(CAT_WINNIE);
  110. addTalkId(CAT_ROY);
  111. addTalkId(CAT_WINNIE);
  112. addFirstTalkId(CAT_ROY);
  113. addFirstTalkId(CAT_WINNIE);
  114. for(int[] _spawn : _spawns_roy)
  115. addSpawn(CAT_ROY, _spawn[0], _spawn[1], _spawn[2], _spawn[3], false, 0);
  116. for(int[] _spawn : _spawns_winnie)
  117. addSpawn(CAT_WINNIE, _spawn[0], _spawn[1], _spawn[2], _spawn[3], false, 0);
  118. }
  119. @Override
  120. public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
  121. {
  122. String htmltext = "";
  123. QuestState st = player.getQuestState(getName());
  124. htmltext = event;
  125. int level = checkLevel(st);
  126. if (event.equalsIgnoreCase("game"))
  127. {
  128. if (st.getQuestItemsCount(GLITTERING_MEDAL) < MEDALS[level])
  129. return "31229-no.htm";
  130. else
  131. return "31229-game.htm";
  132. }
  133. else if (event.equalsIgnoreCase("heads") || event.equalsIgnoreCase("tails"))
  134. {
  135. if (st.getQuestItemsCount(GLITTERING_MEDAL) < MEDALS[level])
  136. return "31229-"+event.toLowerCase()+"-10.htm";
  137. st.takeItems(GLITTERING_MEDAL, MEDALS[level]);
  138. if(Rnd.get(100) > WIN_CHANCE)
  139. {
  140. level = 0;
  141. }
  142. else
  143. {
  144. if (level>0)
  145. st.takeItems(BADGES[level-1], -1);
  146. st.giveItems(BADGES[level], 1);
  147. st.playSound("Itemsound.quest_itemget");
  148. level++;
  149. }
  150. return "31229-"+event.toLowerCase()+"-"+String.valueOf(level)+".htm";
  151. }
  152. else if (event.equalsIgnoreCase("talk"))
  153. {
  154. return String.valueOf(npc.getNpcId())+ "-lvl-"+String.valueOf(level)+".htm";
  155. }
  156. return htmltext;
  157. }
  158. @Override
  159. public String onFirstTalk(L2Npc npc, L2PcInstance player)
  160. {
  161. QuestState st = player.getQuestState(getName());
  162. if (st == null)
  163. {
  164. Quest q = QuestManager.getInstance().getQuest(getName());
  165. st = q.newQuestState(player);
  166. }
  167. return npc.getNpcId()+".htm";
  168. }
  169. public int checkLevel(QuestState st)
  170. {
  171. int _lev = 0;
  172. if(st == null)
  173. return 0;
  174. else if (st.getQuestItemsCount(6402) > 0)
  175. _lev = 4;
  176. else if (st.getQuestItemsCount(6401) > 0)
  177. _lev = 3;
  178. else if (st.getQuestItemsCount(6400) > 0)
  179. _lev = 2;
  180. else if (st.getQuestItemsCount(6399) > 0)
  181. _lev = 1;
  182. return _lev;
  183. }
  184. public static void main(String[] args)
  185. {
  186. new HeavyMedal(-1, "HeavyMedal", "events");
  187. }
  188. }