def onAttack (self,npc,player,damage,isPet): st = player.getQuestState(qn) if not st : return if st.getState() != STARTED : return chance=st.getRandom(100) if chance < 3 : count = 0 for item in range(5875,5879): if st.getQuestItemsCount(item) : count += 1 st.takeItems(item,-1) if count: st.giveItems(5880,1) elif chance < 7 : for item in range(5875,5879): if st.getQuestItemsCount(item) : npc.doCast(SkillTable.getInstance().getInfo(4072,4)) st.takeItems(item,-1) st.giveItems(item+1,1) if item < 5878 : st.playSound("ItemSound.quest_itemget") elif item == 5878 : st.playSound("ItemSound.quest_middle") st.set("cond","2") break return
def onAdvEvent(self, event, npc, player): htmltext = event st = player.getQuestState(qn) if not st: return Alevel = player.getAllianceWithVarkaKetra() if str(event) in BUFF.keys(): skillId, level, seeds = BUFF[event] if st.getQuestItemsCount(Seed) >= seeds: st.takeItems(Seed, seeds) npc.setTarget(player) npc.doCast(SkillTable.getInstance().getInfo(skillId, level)) npc.setCurrentHpMp(npc.getMaxHp(), npc.getMaxMp()) htmltext = "31379-4.htm" elif event == "Withdraw": if player.getWarehouse().getSize() == 0: htmltext = "31381-0.htm" else: player.sendPacket(ActionFailed()) player.setActiveWarehouse(player.getWarehouse()) player.sendPacket(WareHouseWithdrawalList(player, 1)) elif event == "Teleport": if Alevel == -4: htmltext = "31383-4.htm" elif Alevel == -5: htmltext = "31383-5.htm" return htmltext
def onAdvEvent(self, event, npc, player): if event == "prosnuca": self.IQ = self.addSpawn(ICE_QUEEEN, 102727, -125655, -2846, 0, False, 0) self.startQuestTimer("vkrovatku", 1800000, self.IQ, None) self.cancelQuestTimer("prosnuca", npc, None) elif event == "captain": npc = self.addSpawn(ICE_CAPTAIN, 105804, -127721, -2769, 0, False, 0) self.startQuestTimer("sleepcap", 1800000, npc, None) self.cancelQuestTimer("prosnuca", npc, None) elif event == "resist": npc = self.addSpawn(FR_GARDENER, 111375, -126645, -2991, 0, False, 0) self.startQuestTimer("sleepres", 1800000, npc, None) self.cancelQuestTimer("resist", npc, None) elif event == "mdef": npc = self.addSpawn(FR_SERVANT, 108885, -129124, -3218, 0, False, 0) self.startQuestTimer("sleepmdef", 1800000, npc, None) self.cancelQuestTimer("mdef", npc, None) elif event == "pdef": npc = self.addSpawn(FR_DOG, 109784, -125793, -3142, 0, False, 0) self.startQuestTimer("sleeppdef", 1800000, npc, None) self.cancelQuestTimer("pdef", npc, None) elif event == "vkrovatku": npc.deleteMe() self.cancelQuestTimer("vkrovatku", npc, None) elif event == "sleepcap": npc.deleteMe() self.cancelQuestTimer("sleepcap", npc, None) elif event == "sleepres": npc.deleteMe() self.cancelQuestTimer("sleepres", npc, None) elif event == "sleepmdef": npc.deleteMe() self.cancelQuestTimer("sleepmdef", npc, None) elif event == "sleeppdef": npc.deleteMe() self.cancelQuestTimer("sleeppdef", npc, None) elif event == "open": self.deleteGlobalQuestVar("closed") self.deleteGlobalQuestVar("first") self.cancelQuestTimer("open", npc, None) elif event == "buff": npc.setTarget(player) npc.doCast(SkillTable.getInstance().getInfo(4479, 1)) return elif event == "teleout": if player: player.teleToLocation(115525, -125724, -3439) return "<html><body><font color=LEVEL>Time out...</font></body></html>" self.cancelQuestTimer("teleout", None, player) return
def onKill(self, npc, player, isPet): st = player.getQuestState(qn) npcId = npc.getNpcId() if npcId == FR_GARDENER: self.startQuestTimer("buff", 1, npc, player) if npcId == FR_SERVANT: player.setTarget(self.IQ) player.useMagic(SkillTable.getInstance().getInfo(4480, 1), True, True) if npcId == FR_DOG: player.setTarget(self.IQ) player.useMagic(SkillTable.getInstance().getInfo(4481, 1), True, True) if npcId == ICE_CAPTAIN: player.setTarget(self.IQ) player.useMagic(SkillTable.getInstance().getInfo(4482, 1), True, True) if npcId == ICE_QUEEEN: self.cancelQuestTimer("vkrovatku", npc, None) return
def onAdvEvent(self, event, npc, player): st = player.getQuestState(qn) if not st: return htmltext = event cond = st.getInt("cond") if htmltext == "31554-03a.htm": #Giving 100 Splinter Stakato Chitins. Getting Recruit mark if st.getQuestItemsCount(CHITIN) >= count and cond == 1: st.set("cond", "2") st.takeItems(CHITIN, -1) st.giveItems(RECRUIT, 1) htmltext = "31554-04.htm" elif event == "31554-07.htm": #Cancelling the quest st.exitQuest(1) st.playSound("ItemSound.quest_giveup") elif event in BUFF.keys() and cond == 3: #Asking for buff skillId, level, coins = BUFF[event] if st.getQuestItemsCount(GOLDEN_RAM_COIN) >= coins: st.takeItems(GOLDEN_RAM_COIN, coins) npc.setTarget(player) npc.doCast(SkillTable.getInstance().getInfo(skillId, level)) htmltext = "31556-1.htm" else: htmltext = "You don't have required items" return htmltext
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(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( MagicSkillUser(npc, player, skill.getDisplayId(), 1, skill.getHitTime(), 0)) npc.callSkill(skill, [player]) 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( MagicSkillUser(npc, player, skill.getDisplayId(), 1, skill.getHitTime(), 0)) npc.callSkill(skill, [player]) self.startQuestTimer(player.getName(), 4000, npc, player) 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) 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 onTalk(self, npc, player): htmltext = "<html><body>You are either not carrying out your quest or don't meet the criteria.</body></html>" st = player.getQuestState(qn) if not st: return htmltext cond = st.getInt("cond") npcId = npc.getNpcId() if npcId == MUSHIKA: first = player.getQuestState("124_MeetingTheElroki") if st.getState() == COMPLETED: htmltext = "<html><body>This quest has already been completed.</body></html>" elif first and first.getState().getName( ) == 'Completed' and st.getState( ) == CREATED and player.getLevel() >= 76: htmltext = "32114-01.htm" elif cond == 0: htmltext = "32114-00.htm" elif cond == 1: htmltext = "32114-07.htm" elif cond == 2: htmltext = "32114-10.htm" elif cond >= 3 and cond < 8: htmltext = "32114-11.htm" elif cond == 8: st.addExpAndSp(859195, 86603) st.unset("cond") st.unset("pilar1") st.unset("pilar2") st.unset("pilar3") st.setState(COMPLETED) st.exitQuest(False) st.playSound("ItemSound.quest_finish") htmltext = "32114-12.htm" elif npcId == KARAKAWEI: if cond == 2: htmltext = "32117-01.htm" elif cond == 3: htmltext = "32117-09.htm" elif cond == 4: st.takeItems(ORNITHOMIMUS_CLAW, -1) st.takeItems(DEINONYCHUS_BONE, -1) st.playSound("ItemSound.quest_middle") htmltext = "32117-10.htm" elif cond == 5: htmltext = "32117-15.htm" elif cond == 6 or cond == 7: htmltext = "32117-16.htm" elif cond == 8: htmltext = "32117-17.htm" elif npcId == ULU_KAIMU: if cond == 5: npc.doCast(SkillTable.getInstance().getInfo(5089, 1)) htmltext = "32119-01.htm" elif cond == 6: htmltext = "32119-14.htm" elif npcId == BALU_KAIMU: if cond == 6: npc.doCast(SkillTable.getInstance().getInfo(5089, 1)) htmltext = "32120-01.htm" elif cond == 7: htmltext = "32120-16.htm" elif npcId == CHUTA_KAIMU: if cond == 7: npc.doCast(SkillTable.getInstance().getInfo(5089, 1)) htmltext = "32121-01.htm" elif cond == 8: htmltext = "32121-17.htm" return htmltext
def onAttack(self, npc, player, damage, isPet): npcId = npc.getNpcId() if npcId in [21316]: if (Rnd.get(2) == 1): if (Rnd.get(2) == 1): if player.getFirstEffect(int(4552)): holera = player.getFirstEffect(int(4552)).getLevel() if (Rnd.get(100) < 30): if holera < 10: newholera = int(holera + 1) npc.setTarget(player) npc.doCast(SkillTable.getInstance().getInfo( 4552, newholera)) else: npc.setTarget(player) npc.doCast(SkillTable.getInstance().getInfo(4552, 1)) else: if player.getFirstEffect(int(4554)): malaria = player.getFirstEffect(int(4554)).getLevel() if (Rnd.get(100) < 15): if malaria < 10: newmalaria = int(malaria + 1) npc.setTarget(player) npc.doCast(SkillTable.getInstance().getInfo( 4554, newmalaria)) else: npc.setTarget(player) npc.doCast(SkillTable.getInstance().getInfo(4554, 1)) npcId = npc.getNpcId() elif npcId in [21321]: if (Rnd.get(2) == 1): if (Rnd.get(2) == 1): if player.getFirstEffect(int(4551)): rheumatism = player.getFirstEffect( int(4551)).getLevel() if (Rnd.get(100) < 30): if rheumatism < 10: newrheumatism = int(rheumatism + 1) npc.setTarget(player) npc.doCast(SkillTable.getInstance().getInfo( 4551, newrheumatism)) else: npc.setTarget(player) npc.doCast(SkillTable.getInstance().getInfo(4551, 1)) else: if player.getFirstEffect(int(4554)): malaria = player.getFirstEffect(int(4554)).getLevel() if (Rnd.get(100) < 15): if malaria < 10: newmalaria = int(malaria + 1) npc.setTarget(player) npc.doCast(SkillTable.getInstance().getInfo( 4554, newmalaria)) else: npc.setTarget(player) npc.doCast(SkillTable.getInstance().getInfo(4554, 1)) npcId = npc.getNpcId() elif npcId in [21314]: if (Rnd.get(2) == 1): if (Rnd.get(2) == 1): if player.getFirstEffect(int(4551)): rheumatism = player.getFirstEffect( int(4551)).getLevel() if (Rnd.get(100) < 30): if rheumatism < 10: newrheumatism = int(rheumatism + 1) npc.setTarget(player) npc.doCast(SkillTable.getInstance().getInfo( 4551, newrheumatism)) else: npc.setTarget(player) npc.doCast(SkillTable.getInstance().getInfo(4551, 1)) else: if player.getFirstEffect(int(4554)): malaria = player.getFirstEffect(int(4554)).getLevel() if (Rnd.get(100) < 15): if malaria < 10: newmalaria = int(malaria + 1) npc.setTarget(player) npc.doCast(SkillTable.getInstance().getInfo( 4554, newmalaria)) else: npc.setTarget(player) npc.doCast(SkillTable.getInstance().getInfo(4554, 1)) npcId = npc.getNpcId() elif npcId in [21319]: if (Rnd.get(2) == 1): if (Rnd.get(2) == 1): if player.getFirstEffect(int(4552)): holera = player.getFirstEffect(int(4552)).getLevel() if (Rnd.get(100) < 30): if holera < 10: newholera = int(holera + 1) npc.setTarget(player) npc.doCast(SkillTable.getInstance().getInfo( 4552, newholera)) else: npc.setTarget(player) npc.doCast(SkillTable.getInstance().getInfo(4552, 1)) else: if player.getFirstEffect(int(4554)): malaria = player.getFirstEffect(int(4554)).getLevel() if (Rnd.get(100) < 15): if malaria < 10: newmalaria = int(malaria + 1) npc.setTarget(player) npc.doCast(SkillTable.getInstance().getInfo( 4554, newmalaria)) else: npc.setTarget(player) npc.doCast(SkillTable.getInstance().getInfo(4554, 1)) npcId = npc.getNpcId() elif npcId in [21317]: if (Rnd.get(2) == 1): if (Rnd.get(2) == 1): if player.getFirstEffect(int(4554)): malaria = player.getFirstEffect(int(4554)).getLevel() if (Rnd.get(100) < 15): if malaria < 10: newmalaria = int(malaria + 1) npc.setTarget(player) npc.doCast(SkillTable.getInstance().getInfo( 4554, newmalaria)) else: npc.setTarget(player) npc.doCast(SkillTable.getInstance().getInfo(4554, 1)) else: if player.getFirstEffect(int(4553)): flu = player.getFirstEffect(int(4553)).getLevel() if (Rnd.get(100) < 15): if flu < 10: newflu = int(flu + 1) npc.setTarget(player) npc.doCast(SkillTable.getInstance().getInfo( 4553, newflu)) else: npc.setTarget(player) npc.doCast(SkillTable.getInstance().getInfo(4553, 1)) npcId = npc.getNpcId() elif npcId in [21322]: if (Rnd.get(2) == 1): if (Rnd.get(2) == 1): if player.getFirstEffect(int(4554)): malaria = player.getFirstEffect(int(4554)).getLevel() if (Rnd.get(100) < 15): if malaria < 10: newmalaria = int(malaria + 1) npc.setTarget(player) npc.doCast(SkillTable.getInstance().getInfo( 4554, newmalaria)) else: npc.setTarget(player) npc.doCast(SkillTable.getInstance().getInfo(4554, 1)) else: if player.getFirstEffect(int(4553)): flu = player.getFirstEffect(int(4553)).getLevel() if (Rnd.get(100) < 15): if flu < 10: newflu = int(flu + 1) npc.setTarget(player) npc.doCast(SkillTable.getInstance().getInfo( 4553, newflu)) else: npc.setTarget(player) npc.doCast(SkillTable.getInstance().getInfo(4553, 1)) return
def onAttack(self, npc, player, damage, isPet): player.setTarget(player) player.doCast(SkillTable.getInstance().getInfo(5088, 1)) return