Q278_HomeSecurity.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. package quests.Q278_HomeSecurity;
  2. import com.l2jserver.gameserver.model.actor.L2Npc;
  3. import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
  4. import com.l2jserver.gameserver.model.quest.Quest;
  5. import com.l2jserver.gameserver.model.quest.QuestState;
  6. import com.l2jserver.gameserver.model.quest.State;
  7. import com.l2jserver.util.Rnd;
  8. /**
  9. * Home Security (278)
  10. * @author malyelfik
  11. */
  12. public class Q278_HomeSecurity extends Quest
  13. {
  14. private static final String qn = "278_HomeSecurity";
  15. // NPC
  16. private static final int Tunatun = 31537;
  17. private static final int[] Monster = { 18905, 18906, 18907 };
  18. // Item
  19. private static final int SelMahumMane = 15531;
  20. @Override
  21. public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
  22. {
  23. String htmltext = event;
  24. QuestState st = player.getQuestState(qn);
  25. if (st == null)
  26. return htmltext;
  27. if (event.equalsIgnoreCase("31537-02.htm"))
  28. {
  29. if (player.getLevel() >= 82)
  30. htmltext = "31537-02.htm";
  31. else
  32. htmltext = "31537-03.html";
  33. }
  34. else if (event.equalsIgnoreCase("31537-04.htm"))
  35. {
  36. st.set("cond", "1");
  37. st.playSound("ItemSound.quest_accept");
  38. st.setState(State.STARTED);
  39. }
  40. else if (event.equalsIgnoreCase("31537-07.html"))
  41. {
  42. int i0 = Rnd.get(100);
  43. if (i0 < 10)
  44. st.giveItems(960, 1);
  45. else if (i0 < 19)
  46. st.giveItems(960, 2);
  47. else if (i0 < 27)
  48. st.giveItems(960, 3);
  49. else if (i0 < 34)
  50. st.giveItems(960, 4);
  51. else if (i0 < 40)
  52. st.giveItems(960, 5);
  53. else if (i0 < 45)
  54. st.giveItems(960, 6);
  55. else if (i0 < 49)
  56. st.giveItems(960, 7);
  57. else if (i0 < 52)
  58. st.giveItems(960, 8);
  59. else if (i0 < 54)
  60. st.giveItems(960, 9);
  61. else if (i0 < 55)
  62. st.giveItems(960, 10);
  63. else if (i0 < 75)
  64. st.giveItems(9553, 1);
  65. else if (i0 < 90)
  66. st.giveItems(9553, 2);
  67. else
  68. st.giveItems(959, 1);
  69. st.takeItems(SelMahumMane, st.getQuestItemsCount(SelMahumMane));
  70. st.unset("cond");
  71. st.playSound("ItemSound.quest_finish");
  72. st.exitQuest(true);
  73. htmltext = "31537-07.html";
  74. }
  75. return htmltext;
  76. }
  77. @Override
  78. public String onTalk(L2Npc npc, L2PcInstance player)
  79. {
  80. String htmltext = getNoQuestMsg(player);
  81. QuestState st = player.getQuestState(qn);
  82. if (st == null)
  83. return htmltext;
  84. switch (st.getState())
  85. {
  86. case State.CREATED:
  87. htmltext = "31537-01.htm";
  88. break;
  89. case State.STARTED:
  90. if (st.getInt("cond") == 1 || st.getQuestItemsCount(SelMahumMane) < 300)
  91. htmltext = "31537-06.html";
  92. else if (st.getInt("cond") == 2 && st.getQuestItemsCount(SelMahumMane) >= 300)
  93. htmltext = "31537-05.html";
  94. break;
  95. }
  96. return htmltext;
  97. }
  98. @Override
  99. public String onKill(L2Npc npc, L2PcInstance player, boolean isPet)
  100. {
  101. L2PcInstance partyMember = getRandomPartyMember(player, "1");
  102. if (partyMember == null)
  103. return null;
  104. final QuestState st = partyMember.getQuestState(qn);
  105. int chance, i1;
  106. if (st.getInt("cond") == 1)
  107. {
  108. switch (npc.getNpcId())
  109. {
  110. case 18907: // Beast Devourer
  111. case 18906: // Farm Bandit
  112. chance = Rnd.get(1000);
  113. if (chance < 85)
  114. {
  115. st.giveItems(SelMahumMane, 1);
  116. if (st.getQuestItemsCount(SelMahumMane) >= 300)
  117. {
  118. st.set("cond", "2");
  119. st.playSound("ItemSound.quest_middle");
  120. }
  121. else
  122. st.playSound("ItemSound.quest_itemget");
  123. }
  124. break;
  125. case 18905: // Farm Ravager (Crazy)
  126. chance = Rnd.get(1000);
  127. if (chance < 486)
  128. {
  129. i1 = Rnd.get(6) + 1;
  130. if ((i1 + st.getQuestItemsCount(SelMahumMane)) >= 300)
  131. {
  132. st.set("cond", "2");
  133. st.playSound("ItemSound.quest_middle");
  134. st.giveItems(SelMahumMane, (300 - st.getQuestItemsCount(SelMahumMane)));
  135. }
  136. else
  137. {
  138. st.giveItems(SelMahumMane, i1);
  139. st.playSound("ItemSound.quest_itemget");
  140. }
  141. }
  142. else
  143. {
  144. i1 = (Rnd.get(5) + 1);
  145. if ((i1 + st.getQuestItemsCount(SelMahumMane)) >= 300)
  146. {
  147. st.set("cond", "2");
  148. st.playSound("ItemSound.quest_middle");
  149. st.giveItems(SelMahumMane, (300 - st.getQuestItemsCount(SelMahumMane)));
  150. }
  151. else
  152. {
  153. st.giveItems(SelMahumMane, i1);
  154. st.playSound("ItemSound.quest_itemget");
  155. }
  156. }
  157. break;
  158. }
  159. }
  160. return null;
  161. }
  162. public Q278_HomeSecurity(int questId, String name, String descr)
  163. {
  164. super(questId, name, descr);
  165. addStartNpc(Tunatun);
  166. addTalkId(Tunatun);
  167. for (int i : Monster)
  168. addKillId(i);
  169. questItemIds = new int[] { SelMahumMane };
  170. }
  171. public static void main(String[] args)
  172. {
  173. new Q278_HomeSecurity(278, qn, "Home Security");
  174. }
  175. }