123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- #Made by Kerb
- import sys
- from java.lang import System
- from com.l2jserver import Config
- from com.l2jserver.gameserver.model.quest import QuestState
- from com.l2jserver.gameserver.model.quest import State
- from com.l2jserver.gameserver.model.quest import Quest as JQuest
- from com.l2jserver.gameserver.network.serverpackets import NpcSay
- from com.l2jserver.util import Rnd
- qn = "604_DaimontheWhiteEyedPart2"
- #Npcs
- EYE = 31683
- ALTAR = 31541
- #RaidBoss
- DAIMON = 25290
- #Items
- U_SUMMON,S_SUMMON,ESSENCE = range(7192,7195)
- #Rewards dye +2int-2men/+2int-2wit/+2men-2int/+2men-2wit/+2wit-2int/+2wit-2men
- REWARDS = range(4595,4601)
- def AutoChat(npc,text) :
- chars = npc.getKnownList().getKnownPlayers().values().toArray()
- if chars != None:
- for pc in chars :
- sm = NpcSay(npc.getObjectId(), 0, npc.getId(), text)
- pc.sendPacket(sm)
- class Quest (JQuest) :
- def __init__(self,id,name,descr):
- JQuest.__init__(self,id,name,descr)
- self.questItemIds = range(7193,7195)
- test = self.loadGlobalQuestVar("604_respawn")
- if test.isdigit() :
- remain = long(test) - System.currentTimeMillis()
- if remain <= 0 :
- self.addSpawn(31541,186304,-43744,-3193,57000, False, 0, True)
- else :
- self.startQuestTimer("spawn_npc", remain, None, None)
- else :
- self.addSpawn(31541,186304,-43744,-3193,57000, False, 0, True)
-
- def onAdvEvent (self, event, npc, player) :
- if event == "Daimon the White-Eyed has despawned" :
- npc.reduceCurrentHp(9999999,npc,None)
- AutoChat(npc,"Darkness could not have ray?")
- self.addSpawn(31541,186304,-43744,-3193,57000, False, 0, True)
- return
- elif event == "spawn_npc" :
- self.addSpawn(31541,186304,-43744,-3193,57000, False, 0, True)
- return
- st = self.getQuestState(player, False)
- if not st: return
- cond = st.getInt("cond")
- htmltext = event
- if event == "31683-02.htm" :
- if st.getPlayer().getLevel() < 73 :
- htmltext = "31683-00b.htm"
- st.exitQuest(1)
- else:
- st.set("cond","1")
- st.setState(State.STARTED)
- st.takeItems(U_SUMMON,1)
- st.giveItems(S_SUMMON,1)
- st.playSound("ItemSound.quest_accept")
- elif event == "31541-02.htm" :
- if st.getQuestItemsCount(S_SUMMON) == 0 :
- htmltext = "31541-04.htm"
- else:
- spawnId = st.addSpawn(DAIMON,186320,-43904,-3175)
- npc.deleteMe()
- st.takeItems(S_SUMMON,1)
- st.set("cond","2")
- self.startQuestTimer("Daimon the White-Eyed has despawned",1200000,spawnId,None)
- AutoChat(spawnId,"Who called me?")
- elif event == "31683-04.htm" :
- if st.getQuestItemsCount(ESSENCE) >= 1 :
- st.takeItems(ESSENCE,1)
- st.giveItems(REWARDS[self.getRandom(len(REWARDS))],5)
- st.playSound("ItemSound.quest_finish")
- st.exitQuest(1)
- htmltext = "31683-04.htm"
- else:
- htmltext = "31683-05.htm"
- st.exitQuest(1)
- return htmltext
- def onTalk (self,npc,player):
- htmltext = Quest.getNoQuestMsg(player)
- st = self.getQuestState(player, True)
- if st :
- npcId = npc.getId()
- id = st.getState()
- cond = st.getInt("cond")
- if cond == 0 :
- if npcId == EYE :
- if st.getQuestItemsCount(U_SUMMON) >= 1 :
- htmltext = "31683-01.htm"
- else:
- htmltext = "31683-00a.htm"
- elif cond == 1 :
- if npcId == EYE :
- htmltext = "31683-02a.htm"
- if npcId == ALTAR :
- htmltext = "31541-01.htm"
- elif cond == 2 :
- if npcId == ALTAR :
- htmltext = "31541-01.htm"
- elif cond == 3 :
- if npcId == EYE :
- if st.getQuestItemsCount(ESSENCE) >= 1 :
- htmltext = "31683-03.htm"
- else :
- htmltext = "31683-06.htm"
- if npcId == ALTAR :
- htmltext = "31541-05.htm"
- return htmltext
- def onKill(self,npc,player,isPet):
- npcId = npc.getId()
- if npcId == DAIMON :
- respawnMinDelay = 43200000 * int(Config.RAID_MIN_RESPAWN_MULTIPLIER)
- respawnMaxDelay = 129600000 * int(Config.RAID_MAX_RESPAWN_MULTIPLIER)
- respawn_delay = Rnd.get(respawnMinDelay,respawnMaxDelay)
- self.saveGlobalQuestVar("604_respawn", str(System.currentTimeMillis()+respawn_delay))
- self.startQuestTimer("spawn_npc", respawn_delay, None, None)
- self.cancelQuestTimer("Daimon the White-Eyed has despawned",npc,None)
- party = player.getParty()
- if party :
- PartyQuestMembers = []
- for player1 in party.getMembers().toArray() :
- st1 = player1.getQuestState(qn)
- if st1 :
- if st1.getState() == State.STARTED and (st1.getInt("cond") == 1 or st1.getInt("cond") == 2) :
- PartyQuestMembers.append(st1)
- if len(PartyQuestMembers) == 0 : return
- st = PartyQuestMembers[Rnd.get(len(PartyQuestMembers))]
- if st.getQuestItemsCount(S_SUMMON) > 0 :
- st.takeItems(S_SUMMON,1)
- st.giveItems(ESSENCE,1)
- st.set("cond","3")
- st.playSound("ItemSound.quest_middle")
- else :
- st = self.getQuestState(player, False)
- if not st : return
- if st.getState() == State.STARTED and (st.getInt("cond") == 1 or st.getInt("cond") == 2) :
- if st.getQuestItemsCount(S_SUMMON) > 0 :
- st.takeItems(S_SUMMON,1)
- st.giveItems(ESSENCE,1)
- st.set("cond","3")
- st.playSound("ItemSound.quest_middle")
- return
- QUEST = Quest(604,qn,"Daimon the White-Eyed - Part 2")
- QUEST.addStartNpc(EYE)
- QUEST.addTalkId(EYE)
- QUEST.addTalkId(ALTAR)
- QUEST.addKillId(DAIMON)
|