__init__.py 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. #Made by Kerb
  2. import sys
  3. from java.lang import System
  4. from com.l2jserver import Config
  5. from com.l2jserver.gameserver.model.quest import QuestState
  6. from com.l2jserver.gameserver.model.quest import State
  7. from com.l2jserver.gameserver.model.quest import Quest as JQuest
  8. from com.l2jserver.gameserver.network.serverpackets import NpcSay
  9. from com.l2jserver.util import Rnd
  10. qn = "604_DaimontheWhiteEyedPart2"
  11. #Npcs
  12. EYE = 31683
  13. ALTAR = 31541
  14. #RaidBoss
  15. DAIMON = 25290
  16. #Items
  17. U_SUMMON,S_SUMMON,ESSENCE = range(7192,7195)
  18. #Rewards dye +2int-2men/+2int-2wit/+2men-2int/+2men-2wit/+2wit-2int/+2wit-2men
  19. REWARDS = range(4595,4601)
  20. def AutoChat(npc,text) :
  21. chars = npc.getKnownList().getKnownPlayers().values().toArray()
  22. if chars != None:
  23. for pc in chars :
  24. sm = NpcSay(npc.getObjectId(), 0, npc.getId(), text)
  25. pc.sendPacket(sm)
  26. class Quest (JQuest) :
  27. def __init__(self,id,name,descr):
  28. JQuest.__init__(self,id,name,descr)
  29. self.questItemIds = range(7193,7195)
  30. test = self.loadGlobalQuestVar("604_respawn")
  31. if test.isdigit() :
  32. remain = long(test) - System.currentTimeMillis()
  33. if remain <= 0 :
  34. self.addSpawn(31541,186304,-43744,-3193,57000, False, 0, True)
  35. else :
  36. self.startQuestTimer("spawn_npc", remain, None, None)
  37. else :
  38. self.addSpawn(31541,186304,-43744,-3193,57000, False, 0, True)
  39. def onAdvEvent (self, event, npc, player) :
  40. if event == "Daimon the White-Eyed has despawned" :
  41. npc.reduceCurrentHp(9999999,npc,None)
  42. AutoChat(npc,"Darkness could not have ray?")
  43. self.addSpawn(31541,186304,-43744,-3193,57000, False, 0, True)
  44. return
  45. elif event == "spawn_npc" :
  46. self.addSpawn(31541,186304,-43744,-3193,57000, False, 0, True)
  47. return
  48. st = self.getQuestState(player, False)
  49. if not st: return
  50. cond = st.getInt("cond")
  51. htmltext = event
  52. if event == "31683-02.htm" :
  53. if st.getPlayer().getLevel() < 73 :
  54. htmltext = "31683-00b.htm"
  55. st.exitQuest(1)
  56. else:
  57. st.set("cond","1")
  58. st.setState(State.STARTED)
  59. st.takeItems(U_SUMMON,1)
  60. st.giveItems(S_SUMMON,1)
  61. st.playSound("ItemSound.quest_accept")
  62. elif event == "31541-02.htm" :
  63. if st.getQuestItemsCount(S_SUMMON) == 0 :
  64. htmltext = "31541-04.htm"
  65. else:
  66. spawnId = st.addSpawn(DAIMON,186320,-43904,-3175)
  67. npc.deleteMe()
  68. st.takeItems(S_SUMMON,1)
  69. st.set("cond","2")
  70. self.startQuestTimer("Daimon the White-Eyed has despawned",1200000,spawnId,None)
  71. AutoChat(spawnId,"Who called me?")
  72. elif event == "31683-04.htm" :
  73. if st.getQuestItemsCount(ESSENCE) >= 1 :
  74. st.takeItems(ESSENCE,1)
  75. st.giveItems(REWARDS[self.getRandom(len(REWARDS))],5)
  76. st.playSound("ItemSound.quest_finish")
  77. st.exitQuest(1)
  78. htmltext = "31683-04.htm"
  79. else:
  80. htmltext = "31683-05.htm"
  81. st.exitQuest(1)
  82. return htmltext
  83. def onTalk (self,npc,player):
  84. htmltext = Quest.getNoQuestMsg(player)
  85. st = self.getQuestState(player, True)
  86. if st :
  87. npcId = npc.getId()
  88. id = st.getState()
  89. cond = st.getInt("cond")
  90. if cond == 0 :
  91. if npcId == EYE :
  92. if st.getQuestItemsCount(U_SUMMON) >= 1 :
  93. htmltext = "31683-01.htm"
  94. else:
  95. htmltext = "31683-00a.htm"
  96. elif cond == 1 :
  97. if npcId == EYE :
  98. htmltext = "31683-02a.htm"
  99. if npcId == ALTAR :
  100. htmltext = "31541-01.htm"
  101. elif cond == 2 :
  102. if npcId == ALTAR :
  103. htmltext = "31541-01.htm"
  104. elif cond == 3 :
  105. if npcId == EYE :
  106. if st.getQuestItemsCount(ESSENCE) >= 1 :
  107. htmltext = "31683-03.htm"
  108. else :
  109. htmltext = "31683-06.htm"
  110. if npcId == ALTAR :
  111. htmltext = "31541-05.htm"
  112. return htmltext
  113. def onKill(self,npc,player,isPet):
  114. npcId = npc.getId()
  115. if npcId == DAIMON :
  116. respawnMinDelay = 43200000 * int(Config.RAID_MIN_RESPAWN_MULTIPLIER)
  117. respawnMaxDelay = 129600000 * int(Config.RAID_MAX_RESPAWN_MULTIPLIER)
  118. respawn_delay = Rnd.get(respawnMinDelay,respawnMaxDelay)
  119. self.saveGlobalQuestVar("604_respawn", str(System.currentTimeMillis()+respawn_delay))
  120. self.startQuestTimer("spawn_npc", respawn_delay, None, None)
  121. self.cancelQuestTimer("Daimon the White-Eyed has despawned",npc,None)
  122. party = player.getParty()
  123. if party :
  124. PartyQuestMembers = []
  125. for player1 in party.getMembers().toArray() :
  126. st1 = player1.getQuestState(qn)
  127. if st1 :
  128. if st1.getState() == State.STARTED and (st1.getInt("cond") == 1 or st1.getInt("cond") == 2) :
  129. PartyQuestMembers.append(st1)
  130. if len(PartyQuestMembers) == 0 : return
  131. st = PartyQuestMembers[Rnd.get(len(PartyQuestMembers))]
  132. if st.getQuestItemsCount(S_SUMMON) > 0 :
  133. st.takeItems(S_SUMMON,1)
  134. st.giveItems(ESSENCE,1)
  135. st.set("cond","3")
  136. st.playSound("ItemSound.quest_middle")
  137. else :
  138. st = self.getQuestState(player, False)
  139. if not st : return
  140. if st.getState() == State.STARTED and (st.getInt("cond") == 1 or st.getInt("cond") == 2) :
  141. if st.getQuestItemsCount(S_SUMMON) > 0 :
  142. st.takeItems(S_SUMMON,1)
  143. st.giveItems(ESSENCE,1)
  144. st.set("cond","3")
  145. st.playSound("ItemSound.quest_middle")
  146. return
  147. QUEST = Quest(604,qn,"Daimon the White-Eyed - Part 2")
  148. QUEST.addStartNpc(EYE)
  149. QUEST.addTalkId(EYE)
  150. QUEST.addTalkId(ALTAR)
  151. QUEST.addKillId(DAIMON)