def onKill(self,npc,player,isPet): npcId = npc.getNpcId() 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.getPartyMembers().toArray() : st1 = player1.getQuestState(qn) if st1 and Util.checkIfInRange(Config.ALT_PARTY_RANGE, player, player1, True) : if st1.getState() == 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 = player.getQuestState(qn) if not st : return if st.getState() == 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
def onTalk(self, npc, player): st = player.getQuestState(qn) npcId = npc.getNpcId() party = player.getParty() closed = self.loadGlobalQuestVar("closed") if npcId == STEWARD: if st.getQuestItemsCount(HEMOSYCLE) >= 10: if closed == "": if party: st.takeItems(HEMOSYCLE, 10) for member in party.getPartyMembers(): if Util.checkIfInRange(Config.ALT_PARTY_RANGE, player, member, True): GrandBossManager.getInstance().getZone(113669, -126122, -3489).allowPlayerEntry( member, 7200 ) member.teleToLocation(113669, -126122, -3489) self.saveGlobalQuestVar("closed", "1") self.startQuestTimer("prosnuca", 1, None, None) self.startQuestTimer("captain", 1, None, None) self.startQuestTimer("mdef", 1, None, None) self.startQuestTimer("pdef", 1, None, None) self.startQuestTimer("resist", 1, None, None) self.startQuestTimer("teleout", 1800000, None, player) else: return "<html><body><font color=LEVEL>Only with party...</font></body></html>" else: return "<html><body>The Raid currently<font color=LEVEL> in process.<font>.<br1>Try later.</body></html>" else: return "<html><body>You dont have <font color=LEVEL>10 Silver Hemocyte<font>.</body></html>" return
def onTalk (self,npc,player): st = player.getQuestState("sailren") npcId = npc.getNpcId() close = self.loadGlobalQuestVar("close") time = self.loadGlobalQuestVar("time") party = player.getParty() if npcId == STATUE : if st.getQuestItemsCount(STONE) >= 1: if close == "" : if party: st.takeItems(STONE,1) self.saveGlobalQuestVar("close", "1") self.startQuestTimer("start",30000,npc,player) self.startQuestTimer("open",1800000,npc,None) for member in party.getPartyMembers() : if Util.checkIfInRange(Config.ALT_PARTY_RANGE, player, member, True) : GrandBossManager.getInstance().getZone(27244,-7026,-1974).allowPlayerEntry(member, 30) member.teleToLocation(27244,-7026,-1974) else : return "<html><body><font color=LEVEL>Only with party...</font></body></html>" else : return "<html><body><font color=LEVEL>Try another time...</font></body></html>" else : return "<html><body>You need quest item: <font color=LEVEL>Gazkh...</font></body></html>" return
def onKill(self,npc,player,isPet): npcId = npc.getNpcId() if npcId == BUMPALUMP : respawnMinDelay = 43200000 * int(Config.RAID_MIN_RESPAWN_MULTIPLIER) respawnMaxDelay = 129600000 * int(Config.RAID_MAX_RESPAWN_MULTIPLIER) respawn_delay = Rnd.get(respawnMinDelay,respawnMaxDelay) self.saveGlobalQuestVar("625_respawn", str(System.currentTimeMillis()+respawn_delay)) self.startQuestTimer("spawn_npc", respawn_delay, None, None) self.cancelQuestTimer("Icicle Emperor Bumbalump has despawned",npc,None) party = player.getParty() if party : PartyQuestMembers = [] for player1 in party.getPartyMembers().toArray() : st1 = player1.getQuestState(qn) if st1 and Util.checkIfInRange(Config.ALT_PARTY_RANGE, player, player1, True) : if st1.getState() == 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(FOOD) > 0 : st.takeItems(FOOD,1) st.giveItems(MEAT,1) st.set("cond","3") st.playSound("ItemSound.quest_middle") else : st = player.getQuestState(qn) if not st : return if st.getState() == STARTED and (st.getInt("cond") == 1 or st.getInt("cond") == 2) : if st.getQuestItemsCount(FOOD) > 0 : st.takeItems(FOOD,1) st.giveItems(MEAT,1) st.set("cond","3") st.playSound("ItemSound.quest_middle") return
def onKill(self, npc, player, isPet): npcId = npc.getNpcId() if npcId == PILGRIM_OF_SPLENDOR: #get a random party member who is doing this quest and needs this drop partyMember = self.getRandomPartyMember(player, "awaitsWaterbinder", "1") if partyMember: st = partyMember.getQuestState(qn) chance = st.getRandom(100) cond = st.getInt("cond") if st.getQuestItemsCount(WATERBINDER) < 1: if chance < CHANCE_FOR_DROP: st.giveItems(WATERBINDER, 1) st.unset("awaitsWaterbinder") if st.getQuestItemsCount(EVERGREEN) < 1: st.playSound("ItemSound.quest_itemget") else: st.playSound("ItemSound.quest_middle") st.set("cond", "3") elif npcId == JUDGE_OF_SPLENDOR: #get a random party member who is doing this quest and needs this drop partyMember = self.getRandomPartyMember(player, "awaitsEvergreen", "1") if partyMember: st = partyMember.getQuestState(qn) chance = st.getRandom(100) cond = st.getInt("cond") if cond == 2 and st.getQuestItemsCount(EVERGREEN) < 1: if chance < CHANCE_FOR_DROP: st.giveItems(EVERGREEN, 1) st.unset("awaitsEvergreen") if st.getQuestItemsCount(WATERBINDER) < 1: st.playSound("ItemSound.quest_itemget") else: st.playSound("ItemSound.quest_middle") st.set("cond", "3") elif npcId == BARAKIEL: #give the quest item and update variables for ALL PARTY MEMBERS who are doing the quest, #so long as they each qualify for the drop (cond == 4 and item not in inventory) #note: the killer WILL participate in the loop as a party member (no need to handle separately) party = player.getParty() if party: for partyMember in party.getPartyMembers().toArray(): pst = partyMember.getQuestState(qn) if pst and Util.checkIfInRange(Config.ALT_PARTY_RANGE, player, partyMember, True): if pst.getInt("cond") == 4 and pst.getQuestItemsCount( RAIN_SONG) < 1: pst.giveItems(RAIN_SONG, 1) pst.playSound("ItemSound.quest_middle") pst.set("cond", "5") else: pst = player.getQuestState(qn) if pst: if pst.getInt("cond") == 4 and pst.getQuestItemsCount( RAIN_SONG) < 1: pst.giveItems(RAIN_SONG, 1) pst.playSound("ItemSound.quest_middle") pst.set("cond", "5") return
def onTalk (self,npc,player): st = player.getQuestState(qn) npcId = npc.getNpcId() party = player.getParty() closed = self.loadGlobalQuestVar("closed") if npcId == STEWARD : if st.getQuestItemsCount(HEMOSYCLE) >= 10 : if closed == "" : if party: st.takeItems(HEMOSYCLE,10) for member in party.getPartyMembers() : if Util.checkIfInRange(Config.ALT_PARTY_RANGE, player, member, True) : GrandBossManager.getInstance().getZone(113669,-126122,-3489).allowPlayerEntry(member, 7200) member.teleToLocation(113669,-126122,-3489) self.saveGlobalQuestVar("closed", "1") self.startQuestTimer("prosnuca",1,None,None) self.startQuestTimer("captain",1,None,None) self.startQuestTimer("mdef",1,None,None) self.startQuestTimer("pdef",1,None,None) self.startQuestTimer("resist",1,None,None) self.startQuestTimer("teleout",1800000,None,player) else : return "<html><body><font color=LEVEL>Only with party...</font></body></html>" else : return "<html><body>The Raid currently<font color=LEVEL> in process.<font>.<br1>Try later.</body></html>" else : return "<html><body>You dont have <font color=LEVEL>10 Silver Hemocyte<font>.</body></html>" return
def onKill(self,npc,player,isPet): npcId = npc.getNpcId() if npcId == PILGRIM_OF_SPLENDOR : #get a random party member who is doing this quest and needs this drop partyMember = self.getRandomPartyMember(player,"awaitsWaterbinder","1") if partyMember : st = partyMember.getQuestState(qn) chance = st.getRandom(100) cond = st.getInt("cond") if st.getQuestItemsCount(WATERBINDER) < 1 : if chance < CHANCE_FOR_DROP : st.giveItems(WATERBINDER,1) st.unset("awaitsWaterbinder") if st.getQuestItemsCount(EVERGREEN) < 1 : st.playSound("ItemSound.quest_itemget") else: st.playSound("ItemSound.quest_middle") st.set("cond","3") elif npcId == JUDGE_OF_SPLENDOR : #get a random party member who is doing this quest and needs this drop partyMember = self.getRandomPartyMember(player,"awaitsEvergreen","1") if partyMember : st = partyMember.getQuestState(qn) chance = st.getRandom(100) cond = st.getInt("cond") if cond == 2 and st.getQuestItemsCount(EVERGREEN) < 1 : if chance < CHANCE_FOR_DROP : st.giveItems(EVERGREEN,1) st.unset("awaitsEvergreen") if st.getQuestItemsCount(WATERBINDER) < 1 : st.playSound("ItemSound.quest_itemget") else: st.playSound("ItemSound.quest_middle") st.set("cond","3") elif npcId == BARAKIEL : #give the quest item and update variables for ALL PARTY MEMBERS who are doing the quest, #so long as they each qualify for the drop (cond == 4 and item not in inventory) #note: the killer WILL participate in the loop as a party member (no need to handle separately) party = player.getParty() if party : for partyMember in party.getPartyMembers().toArray() : pst = partyMember.getQuestState(qn) if pst and Util.checkIfInRange(Config.ALT_PARTY_RANGE, player, partyMember, True) : if pst.getInt("cond") == 4 and pst.getQuestItemsCount(RAIN_SONG) < 1 : pst.giveItems(RAIN_SONG,1) pst.playSound("ItemSound.quest_middle") pst.set("cond","5") else : pst = player.getQuestState(qn) if pst : if pst.getInt("cond") == 4 and pst.getQuestItemsCount(RAIN_SONG) < 1 : pst.giveItems(RAIN_SONG,1) pst.playSound("ItemSound.quest_middle") pst.set("cond","5") return
def onKill(self,npc,player,isPet): partyMembers = [player] party = player.getParty() if party : partyMembers = party.getPartyMembers().toArray() for member in partyMembers : pst = member.getQuestState(qn) if pst and Util.checkIfInRange(Config.ALT_PARTY_RANGE, player, member, True) : giveReward(pst,npc) else : pst = player.getQuestState(qn) if pst : giveReward(pst,npc) return
def onKill(self, npc, player, isPet): npcId = npc.getNpcId() if npcId == Ashutar: self.saveGlobalQuestVar("killed", str(System.currentTimeMillis())) FindTemplate(Alter).setBusy(False) party = player.getParty() if party: for partyMember in party.getPartyMembers().toArray(): pst = partyMember.getQuestState(qn) if pst and Util.checkIfInRange(Config.ALT_PARTY_RANGE, player, partyMember, True): if pst.getInt("cond") >= 1: if pst.getInt("cond") == 1: pst.takeItems(Totem2, 1) if pst.getQuestItemsCount(Ice_Heart) < 1: pst.giveItems(Ice_Heart, 1) pst.playSound("ItemSound.quest_middle") pst.set("cond", "3") pst.set("id", "3") if pst.getQuestTimer( "Soul of Water Ashutar has despawned"): pst.getQuestTimer( "Soul of Water Ashutar has despawned" ).cancel() else: pst = player.getQuestState(qn) if pst: if pst.getInt("cond") >= 1: if pst.getInt("cond") == 1: pst.takeItems(Totem2, 1) if pst.getQuestItemsCount(Ice_Heart) < 1: pst.giveItems(Ice_Heart, 1) pst.playSound("ItemSound.quest_middle") pst.set("cond", "3") pst.set("id", "3") if pst.getQuestTimer( "Soul of Water Ashutar has despawned"): pst.getQuestTimer( "Soul of Water Ashutar has despawned").cancel( ) elif npcId in Ketra_Orcs: st = player.getQuestState(qn) if st: if st.getQuestItemsCount(Ice_Heart): st.takeItems(Ice_Heart, -1) st.unset("cond") st.unset("id") st.exitQuest(1) return
def onKill(self, npc, player, isPet): partyMembers = [player] party = player.getParty() if party: partyMembers = party.getPartyMembers().toArray() for member in partyMembers: pst = member.getQuestState(qn) if pst and Util.checkIfInRange(Config.ALT_PARTY_RANGE, player, member, True): giveReward(pst, npc) else: pst = player.getQuestState(qn) if pst: giveReward(pst, npc) return
def onKill(self,npc,player,isPet): npcId = npc.getNpcId() if npcId == Nastron : self.saveGlobalQuestVar("killed", str(System.currentTimeMillis())) FindTemplate(Alter).setBusy(False) party = player.getParty() if party : for partyMember in party.getPartyMembers().toArray() : pst = partyMember.getQuestState(qn) if pst and Util.checkIfInRange(Config.ALT_PARTY_RANGE, player, partyMember, True) : if pst.getInt("cond") >= 1 : if pst.getInt("cond") == 1 : pst.takeItems(Totem2,1) if pst.getQuestItemsCount(Fire_Heart) < 1 : pst.giveItems(Fire_Heart,1) pst.playSound("ItemSound.quest_middle") pst.set("cond","3") pst.set("id","3") if pst.getQuestTimer("Soul of Fire Nastron has despawned") : pst.getQuestTimer("Soul of Fire Nastron has despawned").cancel() else : pst = player.getQuestState(qn) if pst : if pst.getInt("cond") >= 1 : if pst.getInt("cond") == 1 : pst.takeItems(Totem2,1) if pst.getQuestItemsCount(Fire_Heart) < 1 : pst.giveItems(Fire_Heart,1) pst.playSound("ItemSound.quest_middle") pst.set("cond","3") pst.set("id","3") if pst.getQuestTimer("Soul of Fire Nastron has despawned") : pst.getQuestTimer("Soul of Fire Nastron has despawned").cancel() elif npcId in Varka_Mobs : st = player.getQuestState(qn) if st : if st.getQuestItemsCount(Fire_Heart) : st.takeItems(Fire_Heart,-1) st.unset("cond") st.unset("id") st.exitQuest(1) return
def onKill(self,npc,player,isPet): npcId = npc.getNpcId() st = player.getQuestState(self.qn) if npcId in Archon_Minions : party = player.getParty() if party : PartyQuestMembers = [] for player1 in party.getPartyMembers().toArray() : for q in Quests.keys() : st1 = player1.getQuestState(Quests[q]) if st1 : if player1.getClassId().getId() == QuestClass[int(q)-70]: if st1.getInt("cond") == 15 : PartyQuestMembers.append(st1) break if len(PartyQuestMembers) > 0 : availableMembers = [] for member in PartyQuestMembers : if Util.checkIfInRange(Config.ALT_PARTY_RANGE, player, member.getPlayer(), True) : availableMembers.append(member) if len(availableMembers) > 0 : st2 = availableMembers[Rnd.get(len(availableMembers))] st2.getQuest().giveHallishaMark(st2) else : for q in Quests.keys() : st1 = player.getQuestState(Quests[q]) if st1 : if player.getClassId().getId() == QuestClass[int(q)-70]: if st1.getInt("cond") == 15 : st1.getQuest().giveHallishaMark(st1) break elif npcId in Archon_Hellisha_Norm : for q in Quests.keys() : st1 = player.getQuestState(Quests[q]) if st1 : if player.getClassId().getId() == QuestClass[int(q)-70]: if st1.getInt("cond") == 15 : #This is just a guess....not really sure what it actually says, if anything self.AutoChat(npc,st1.getQuest().Text[4].replace('PLAYERNAME',st1.getPlayer().getName())) st1.giveItems(st1.getQuest().Items[8],1) st1.takeItems(st1.getQuest().Items[3],-1) st1.set("cond","16") st1.playSound("ItemSound.quest_middle") break elif npcId in Guardian_Angels : for q in Quests.keys() : st1 = player.getQuestState(Quests[q]) if st1 : if player.getClassId().getId() == QuestClass[int(q)-70]: if st1.getInt("cond") == 6 : if st1.getInt("kills") < 9 : st1.set("kills",str(st1.getInt("kills")+1)) else : st1.playSound("ItemSound.quest_middle") st1.giveItems(st1.getQuest().Items[5],1) st1.set("cond","7") break elif st : cond = st.getInt("cond") if npcId == self.Mob[0] and cond == 8 : st2 = self.findRightState(player,npc) if st2 : if not player.isInParty(): if st == st2 : self.AutoChat(npc,self.Text[12].replace('PLAYERNAME',player.getName())) st.giveItems(self.Items[6],1) st.set("cond","9") st.playSound("ItemSound.quest_middle") if st2.getQuestTimer("Mob_1 has despawned") : st2.getQuestTimer("Mob_1 has despawned").cancel() self.DeleteSpawn(st2,st2.getInt("Mob_1")) st2.set("spawned","0") elif npcId == self.Mob[1] : if cond == 15 : st2 = self.findRightState(player,npc) if st2 : if not player.isInParty(): if st == st2 : self.AutoChat(npc,self.Text[4].replace('PLAYERNAME',player.getName())) st.giveItems(self.Items[8],1) st.takeItems(self.Items[3],-1) st.set("cond","16") st.playSound("ItemSound.quest_middle") else : self.AutoChat(npc,self.Text[5].replace('PLAYERNAME',player.getName())) if st2.getQuestTimer("Archon Hellisha has despawned") : st2.getQuestTimer("Archon Hellisha has despawned").cancel() self.DeleteSpawn(st2,st2.getInt("Archon")) st2.set("spawned","0") else : if npcId == self.Mob[0] : st = self.findRightState(player,npc) if st: if st.getQuestTimer("Mob_1 has despawned") : st.getQuestTimer("Mob_1 has despawned").cancel() self.DeleteSpawn(st,st.getInt("Mob_1")) st.set("spawned","0") elif npcId == self.Mob[1] : st = self.findRightState(player,npc) if st: if st.getQuestTimer("Archon Hellisha has despawned") : st.getQuestTimer("Archon Hellisha has despawned").cancel() self.DeleteSpawn(st,st.getInt("Archon")) st.set("spawned","0") return
def onKill(self, npc, player, isPet): npcId = npc.getNpcId() st = player.getQuestState(self.qn) if npcId in Archon_Minions: party = player.getParty() if party: PartyQuestMembers = [] for player1 in party.getPartyMembers().toArray(): for q in Quests.keys(): st1 = player1.getQuestState(Quests[q]) if st1: if player1.getClassId().getId() == QuestClass[ int(q) - 70]: if st1.getInt("cond") == 15: PartyQuestMembers.append(st1) break if len(PartyQuestMembers) > 0: availableMembers = [] for member in PartyQuestMembers: if Util.checkIfInRange(Config.ALT_PARTY_RANGE, player, member.getPlayer(), True): availableMembers.append(member) if len(availableMembers) > 0: st2 = availableMembers[Rnd.get(len(availableMembers))] st2.getQuest().giveHallishaMark(st2) else: for q in Quests.keys(): st1 = player.getQuestState(Quests[q]) if st1: if player.getClassId().getId() == QuestClass[int(q) - 70]: if st1.getInt("cond") == 15: st1.getQuest().giveHallishaMark(st1) break elif npcId in Archon_Hellisha_Norm: for q in Quests.keys(): st1 = player.getQuestState(Quests[q]) if st1: if player.getClassId().getId() == QuestClass[int(q) - 70]: if st1.getInt("cond") == 15: #This is just a guess....not really sure what it actually says, if anything self.AutoChat( npc, st1.getQuest().Text[4].replace( 'PLAYERNAME', st1.getPlayer().getName())) st1.giveItems(st1.getQuest().Items[8], 1) st1.takeItems(st1.getQuest().Items[3], -1) st1.set("cond", "16") st1.playSound("ItemSound.quest_middle") break elif npcId in Guardian_Angels: for q in Quests.keys(): st1 = player.getQuestState(Quests[q]) if st1: if player.getClassId().getId() == QuestClass[int(q) - 70]: if st1.getInt("cond") == 6: if st1.getInt("kills") < 9: st1.set("kills", str(st1.getInt("kills") + 1)) else: st1.playSound("ItemSound.quest_middle") st1.giveItems(st1.getQuest().Items[5], 1) st1.set("cond", "7") break elif st: cond = st.getInt("cond") if npcId == self.Mob[0] and cond == 8: st2 = self.findRightState(player, npc) if st2: if not player.isInParty(): if st == st2: self.AutoChat( npc, self.Text[12].replace('PLAYERNAME', player.getName())) st.giveItems(self.Items[6], 1) st.set("cond", "9") st.playSound("ItemSound.quest_middle") if st2.getQuestTimer("Mob_1 has despawned"): st2.getQuestTimer("Mob_1 has despawned").cancel() self.DeleteSpawn(st2, st2.getInt("Mob_1")) st2.set("spawned", "0") elif npcId == self.Mob[1]: if cond == 15: st2 = self.findRightState(player, npc) if st2: if not player.isInParty(): if st == st2: self.AutoChat( npc, self.Text[4].replace( 'PLAYERNAME', player.getName())) st.giveItems(self.Items[8], 1) st.takeItems(self.Items[3], -1) st.set("cond", "16") st.playSound("ItemSound.quest_middle") else: self.AutoChat( npc, self.Text[5].replace( 'PLAYERNAME', player.getName())) if st2.getQuestTimer("Archon Hellisha has despawned"): st2.getQuestTimer( "Archon Hellisha has despawned").cancel() self.DeleteSpawn(st2, st2.getInt("Archon")) st2.set("spawned", "0") else: if npcId == self.Mob[0]: st = self.findRightState(player, npc) if st: if st.getQuestTimer("Mob_1 has despawned"): st.getQuestTimer("Mob_1 has despawned").cancel() self.DeleteSpawn(st, st.getInt("Mob_1")) st.set("spawned", "0") elif npcId == self.Mob[1]: st = self.findRightState(player, npc) if st: if st.getQuestTimer("Archon Hellisha has despawned"): st.getQuestTimer( "Archon Hellisha has despawned").cancel() self.DeleteSpawn(st, st.getInt("Archon")) st.set("spawned", "0") return