Q00003_WillTheSealBeBroken.java 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  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 quests.Q00003_WillTheSealBeBroken;
  20. import com.l2jserver.gameserver.enums.QuestSound;
  21. import com.l2jserver.gameserver.enums.Race;
  22. import com.l2jserver.gameserver.model.actor.L2Npc;
  23. import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
  24. import com.l2jserver.gameserver.model.quest.Quest;
  25. import com.l2jserver.gameserver.model.quest.QuestState;
  26. import com.l2jserver.gameserver.model.quest.State;
  27. /**
  28. * Will the Seal be Broken? (3)
  29. * @author malyelfik
  30. */
  31. public class Q00003_WillTheSealBeBroken extends Quest
  32. {
  33. // NPC
  34. private static final int TALLOTH = 30141;
  35. // Monsters
  36. private static final int OMEN_BEAST = 20031;
  37. private static final int TAINTED_ZOMBIE = 20041;
  38. private static final int STINK_ZOMBIE = 20046;
  39. private static final int LESSER_SUCCUBUS = 20048;
  40. private static final int LESSER_SUCCUBUS_TUREN = 20052;
  41. private static final int LESSER_SUCCUBUS_TILFO = 20057;
  42. // Items
  43. private static final int OMEN_BEAST_EYE = 1081;
  44. private static final int TAINT_STONE = 1082;
  45. private static final int SUCCUBUS_BLOOD = 1083;
  46. private static final int ENCHANT = 956;
  47. // Misc
  48. private static final int MIN_LEVEL = 16;
  49. public Q00003_WillTheSealBeBroken()
  50. {
  51. super(3, Q00003_WillTheSealBeBroken.class.getSimpleName(), "Will the Seal be Broken?");
  52. addStartNpc(TALLOTH);
  53. addTalkId(TALLOTH);
  54. addKillId(OMEN_BEAST, TAINTED_ZOMBIE, STINK_ZOMBIE, LESSER_SUCCUBUS, LESSER_SUCCUBUS_TILFO, LESSER_SUCCUBUS_TUREN);
  55. registerQuestItems(OMEN_BEAST_EYE, TAINT_STONE, SUCCUBUS_BLOOD);
  56. }
  57. @Override
  58. public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
  59. {
  60. final QuestState st = getQuestState(player, false);
  61. if (st == null)
  62. {
  63. return null;
  64. }
  65. String htmltext = event;
  66. switch (event)
  67. {
  68. case "30141-03.htm":
  69. st.startQuest();
  70. break;
  71. case "30141-05.html":
  72. break;
  73. default:
  74. htmltext = null;
  75. break;
  76. }
  77. return htmltext;
  78. }
  79. @Override
  80. public String onKill(L2Npc npc, L2PcInstance player, boolean isSummon)
  81. {
  82. final L2PcInstance member = getRandomPartyMember(player, 1);
  83. if (member == null)
  84. {
  85. return super.onKill(npc, player, isSummon);
  86. }
  87. final QuestState st = getQuestState(member, false);
  88. switch (npc.getId())
  89. {
  90. case OMEN_BEAST:
  91. giveItem(member, st, OMEN_BEAST_EYE, getRegisteredItemIds());
  92. break;
  93. case STINK_ZOMBIE:
  94. case TAINTED_ZOMBIE:
  95. giveItem(member, st, TAINT_STONE, getRegisteredItemIds());
  96. break;
  97. case LESSER_SUCCUBUS:
  98. case LESSER_SUCCUBUS_TILFO:
  99. case LESSER_SUCCUBUS_TUREN:
  100. giveItem(member, st, SUCCUBUS_BLOOD, getRegisteredItemIds());
  101. break;
  102. }
  103. return super.onKill(npc, player, isSummon);
  104. }
  105. @Override
  106. public String onTalk(L2Npc npc, L2PcInstance player)
  107. {
  108. String htmltext = getNoQuestMsg(player);
  109. final QuestState st = getQuestState(player, true);
  110. switch (st.getState())
  111. {
  112. case State.CREATED:
  113. htmltext = (player.getRace() != Race.DARK_ELF) ? "30141-00.htm" : (player.getLevel() >= MIN_LEVEL) ? "30141-02.htm" : "30141-01.html";
  114. break;
  115. case State.STARTED:
  116. if (st.isCond(1))
  117. {
  118. htmltext = "30141-04.html";
  119. }
  120. else
  121. {
  122. giveItems(player, ENCHANT, 1);
  123. st.exitQuest(false, true);
  124. htmltext = "30141-06.html";
  125. }
  126. break;
  127. case State.COMPLETED:
  128. htmltext = getAlreadyCompletedMsg(player);
  129. break;
  130. }
  131. return htmltext;
  132. }
  133. private static void giveItem(L2PcInstance player, QuestState st, int item, int... items)
  134. {
  135. if (!hasQuestItems(player, item))
  136. {
  137. giveItems(player, item, 1);
  138. playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
  139. if (hasQuestItems(player, items))
  140. {
  141. st.setCond(2, true);
  142. }
  143. }
  144. }
  145. }