def checkStone(self, npc, order, npcObj, world): for i in range(1, 7): if order[i] == 0 and order[i - 1] != 0: if npcObj[1] == i and npcObj[2] == 0: order[i] = 1 npcObj[2] = 1 npc.broadcastPacket(MagicSkillUse(npc, npc, 5441, 1, 1, 0)) return spawnRndGolem(self, world)
def Cast(self, npc, target, skillId, level): target.broadcastPacket( MagicSkillUse(target, target, skillId, level, 6000, 1)) target.broadcastPacket(MagicSkillUse(npc, npc, skillId, level, 6000, 1))
def onAdvEvent(self, event, npc, player): if event == "chest_timer": self.athrea = 0 return if player.isClanLeader(): leaderst = st = player.getQuestState(qn) else: # non-leaders doing this quest need both their own quest state and the leader's st = player.getQuestState(qn) if not st: return leaderst = leader(player) if not leaderst: if DEBUG: debug = "Event can't find leader" print debug return debug return debug = "" htmltext = event if player.isClanLeader(): if event == "30756-07.htm": st.playSound("ItemSound.quest_accept") st.set("cond", "1") st.setState(State.STARTED) st.set("part", "1") elif event == "30759-03.htm": st.set("part", "2") st.set("cond", "2") st.set("dead_list", " ") elif event == "30759-07.htm": st.takeItems( SYMBOL_OF_LOYALTY, 1 ) #Item is not stackable, thus need to do this for each item st.takeItems(SYMBOL_OF_LOYALTY, 1) st.takeItems(SYMBOL_OF_LOYALTY, 1) st.giveItems(ANTIDOTE_RECIPE, 1) st.set("part", "3") st.set("cond", "3") st.startQuestTimer("poison_timer", 3600000) st.addNotifyOfDeath(player) skill = SkillTable.getInstance().getInfo(4082, 1) npc.setTarget(player) npc.broadcastPacket( MagicSkillUse(npc, player, skill.getDisplayId(), 1, skill.getHitTime(), 0)) npc.doCast(skill) elif event == "poison_timer": st.exitQuest(1) if DEBUG: debug = "Times Up! Quest failed!" print debug return debug return elif event == "30757-05.htm": if player.isClanLeader(): return "Only Clan Members can sacrifice themselves!" if st.getRandom(10) > 5: htmltext = "30757-06.htm" st.giveItems(SYMBOL_OF_LOYALTY, 1) deadlist = leaderst.get("dead_list").split() deadlist.append(player.getName()) leaderst.set("dead_list", " ".join(deadlist)) else: skill = SkillTable.getInstance().getInfo(4083, 1) npc.setTarget(player) npc.broadcastPacket( MagicSkillUse(npc, player, skill.getDisplayId(), 1, skill.getHitTime(), 0)) npc.doCast(skill) self.startQuestTimer(player.getName(), 4000, npc, player, 0) elif event == player.getName(): if player.isDead(): st.giveItems(SYMBOL_OF_LOYALTY, 1) deadlist = leaderst.get("dead_list").split() deadlist.append(player.getName()) leaderst.set("dead_list", " ".join(deadlist)) elif DEBUG: debug = "player " + player.getName() + " didn't die!" print debug return debug return elif event == "30758-03.htm": if not self.athrea: self.athrea = 1 self.chests = 0 leaderst.set("part", "4") leaderst.set("chest_wins", "0") for x, y, z in CHEST_LOCS: rand = st.getRandom(5) self.addSpawn(27173 + rand, x, y, z, 0, 0, 300000) self.startQuestTimer("chest_timer", 300000, npc, player, 0) else: htmltext = "30758-04.htm" elif event == "30758-07.htm": if st.getQuestItemsCount(57) >= 10000 and not self.athrea: htmltext = "30758-08.htm" st.takeItems(57, 10000) if DEBUG and debug: print debug return debug return htmltext
def onAdvEvent(self, event, npc, player): st = player.getQuestState(qn) if not st: return htmltext = event if event == "32041-03.htm": st.set("cond", "3") st.playSound("ItemSound.quest_middle") elif event == "32041-04.htm": st.set("cond", "4") st.playSound("ItemSound.quest_middle") elif event == "32041-12.htm": st.set("cond", "8") st.playSound("ItemSound.quest_middle") elif event == "32041-16.htm": st.set("cond", "16") st.giveItems(Enigma, 1) st.playSound("ItemSound.quest_middle") elif event == "32041-22.htm": st.set("cond", "17") st.takeItems(Enigma, 1) st.playSound("ItemSound.quest_middle") elif event == "32041-32.htm": st.takeItems(Necklace, 1) st.giveItems(EarBinding, 1) st.exitQuest(False) st.playSound("ItemSound.quest_finish") elif event == "32042-06.htm": if st.getInt("cond") == 10: if st.getInt("talk") + st.getInt("talk1") == 2: st.set("cond", "11") st.set("talk", "0") st.set("talk1", "0") st.playSound("ItemSound.quest_middle") else: htmltext = "32042-03.htm" elif event == "32042-10.htm": if st.getInt("talk") + st.getInt("talk1") + st.getInt( "talk2") == 3: htmltext = "32042-14.htm" elif event == "32042-11.htm": if st.getInt("talk") == 0: st.set("talk", "1") elif event == "32042-12.htm": if st.getInt("talk1") == 0: st.set("talk1", "1") elif event == "32042-13.htm": if st.getInt("talk2") == 0: st.set("talk2", "1") elif event == "32042-15.htm": st.set("cond", "12") st.set("talk", "0") st.set("talk1", "0") st.set("talk2", "0") st.playSound("ItemSound.quest_middle") elif event == "32043-06.htm": if st.getInt("cond") == 17: if st.getInt("talk") + st.getInt("talk1") == 2: st.set("cond", "18") st.set("talk", "0") st.set("talk1", "0") st.playSound("ItemSound.quest_middle") else: htmltext = "32043-03.htm" elif event == "32043-15.htm": if st.getInt("talk") + st.getInt("talk1") == 2: htmltext = "32043-29.htm" elif event == "32043-18.htm": if st.getInt("talk") == 1: htmltext = "32043-21.htm" elif event == "32043-20.htm": st.set("talk", "1") st.playSound("AmbSound.ed_drone_02") elif event == "32043-28.htm": st.set("talk1", "1") elif event == "32043-30.htm": st.set("cond", "19") st.set("talk", "0") st.set("talk1", "0") elif event == "32044-06.htm": if st.getInt("cond") == 20: if st.getInt("talk") + st.getInt("talk1") == 2: st.set("cond", "21") st.set("talk", "0") st.set("talk1", "0") st.playSound("ItemSound.quest_middle") else: htmltext = "32044-03.htm" elif event == "32044-08.htm": if st.getInt("talk") + st.getInt("talk1") == 2: htmltext = "32044-11.htm" elif event == "32044-09.htm": if st.getInt("talk") == 0: st.set("talk", "1") elif event == "32044-10.htm": if st.getInt("talk1") == 0: st.set("talk1", "1") elif event == "32044-17.htm": st.set("cond", "22") st.set("talk", "0") st.set("talk1", "0") st.playSound("ItemSound.quest_middle") elif event == "32045-02.htm": st.set("cond", "15") st.playSound("ItemSound.quest_middle") st.giveItems(Report, 1) npc.broadcastPacket( MagicSkillUse(npc, st.getPlayer(), 5073, 5, 1500, 0)) elif event in ["32046-04.htm", "32046-05.htm"]: st.exitQuest(1) elif event == "32046-06.htm": if st.getPlayer().getLevel() >= 50: st.setState(State.STARTED) st.playSound("ItemSound.quest_accept") st.set("cond", "1") else: htmltext = "32046-00.htm" st.exitQuest(1) elif event == "32046-08.htm": st.set("cond", "2") st.playSound("ItemSound.quest_middle") elif event == "32046-12.htm": st.set("cond", "6") st.playSound("ItemSound.quest_middle") st.giveItems(Flower, 1) elif event == "32046-22.htm": st.set("cond", "10") st.playSound("ItemSound.quest_middle") elif event == "32046-29.htm": st.set("cond", "13") st.playSound("ItemSound.quest_middle") elif event == "32046-35.htm": st.set("cond", "20") st.playSound("ItemSound.quest_middle") elif event == "32046-38.htm": st.set("cond", "23") st.playSound("ItemSound.quest_middle") st.giveItems(Heart, 1) elif event == "32047-06.htm": st.set("cond", "5") st.playSound("ItemSound.quest_middle") elif event == "32047-10.htm": st.set("cond", "7") st.playSound("ItemSound.quest_middle") st.takeItems(Flower, 1) elif event == "32047-15.htm": st.set("cond", "9") st.playSound("ItemSound.quest_middle") elif event == "32047-18.htm": st.set("cond", "14") st.playSound("ItemSound.quest_middle") elif event == "32047-26.htm": st.set("cond", "24") st.playSound("ItemSound.quest_middle") st.takeItems(Heart, 1) elif event == "32047-32.htm": st.set("cond", "25") st.playSound("ItemSound.quest_middle") st.giveItems(Necklace, 1) elif event == "w1_1": st.set("talk", "1") htmltext = "32042-04.htm" elif event == "w1_2": st.set("talk1", "1") htmltext = "32042-05.htm" elif event == "w2_1": st.set("talk", "1") htmltext = "32043-04.htm" elif event == "w2_2": st.set("talk1", "1") htmltext = "32043-05.htm" elif event == "w3_1": st.set("talk", "1") htmltext = "32044-04.htm" elif event == "w3_2": st.set("talk1", "1") htmltext = "32044-05.htm" return htmltext
def onAdvEvent(self, event, npc, player): if event == "timer" or event == "timer2": if self.npcobject[npc.getObjectId()].correct == False: dx = npc.getX() - 142999 dy = npc.getY() - 151671 d = dx * dx + dy * dy if d < 10000: npc.broadcastPacket(MagicSkillUse(npc, npc, 5441, 1, 1, 0)) self.npcobject[npc.getObjectId()].correct = True self.worlds[npc.getInstanceId( )].correct = self.worlds[npc.getInstanceId()].correct + 1 if self.npcobject[npc.getObjectId()].correct == False: dx = npc.getX() - 139494 dy = npc.getY() - 151668 d = dx * dx + dy * dy if d < 10000: npc.broadcastPacket(MagicSkillUse(npc, npc, 5441, 1, 1, 0)) self.npcobject[npc.getObjectId()].correct = True self.worlds[npc.getInstanceId( )].correct = self.worlds[npc.getInstanceId()].correct + 1 if self.worlds[npc.getInstanceId()].correct >= 2: for door in InstanceManager.getInstance().getInstance( npc.getInstanceId()).getDoors(): if door.getDoorId() == 24220026: door.openMe() return if self.npcobject[npc.getObjectId()].lastitem: L2World.getInstance().removeVisibleObject( self.npcobject[npc.getObjectId()].lastitem, self.npcobject[ npc.getObjectId()].lastitem.getWorldRegion()) L2World.getInstance().removeObject( self.npcobject[npc.getObjectId()].lastitem) if len(self.npcobject[npc.getObjectId()].walklist_order) == 0: return for item in self.npcobject[npc.getObjectId()].walklist_order: crystal = self.npcobject[npc.getObjectId()].walklist[item] newpos = L2CharPosition(crystal.getX(), crystal.getY(), crystal.getZ(), 0) npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, newpos) self.npcobject[npc.getObjectId()].lastitem = crystal self.npcobject[npc.getObjectId()].walklist_order.remove(item) break if (len(self.npcobject[npc.getObjectId()].walklist_order)) > 0: if event == "timer": self.startQuestTimer("timer2", 2000, npc, None) else: self.startQuestTimer("timer", 2000, npc, None) else: if self.npcobject[npc.getObjectId()].last == False: self.npcobject[npc.getObjectId()].last = True if event == "timer": self.startQuestTimer("timer2", 2000, npc, None) else: self.startQuestTimer("timer", 2000, npc, None) return