def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) # All of these are overridden in the subclasses self.NPC = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] self.Items = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] self.Mob = [0, 1, 2] self.classid = 0 self.prevclass = 0 self.qn = "SagasSuperclass" self.X = [0, 1, 2] self.Y = [0, 1, 2] self.Z = [0, 1, 2] self.Text = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17] self.Spawn_List = [] #all these are not overridden by the subclasses (either cause they are constant or used only for this script) self.CREATED = State('Start', self) self.STARTED = State('Started', self) self.COMPLETED = State('Completed', self)
htmltext = "<html><body>I can't supply you with another Giran Scroll of Escape. Sorry traveller.</body></html>" elif npcId == MIRABEL and cond == 1: htmltext = "30146-04.htm" elif id == STARTED: if npcId == ARIEL and cond: if st.getQuestItemsCount(ARIELS_RECOMMENDATION) == 0: htmltext = "30148-01.htm" else: htmltext = "30148-03.htm" elif npcId == ASTERIOS and cond == 2 and st.getQuestItemsCount( ARIELS_RECOMMENDATION) > 0: htmltext = "30154-01.htm" elif npcId == MIRABEL and cond == 3: htmltext = "30146-05.htm" return htmltext QUEST = Quest(7, qn, "A Trip Begins") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(MIRABEL) QUEST.addTalkId(MIRABEL) QUEST.addTalkId(ARIEL) QUEST.addTalkId(ASTERIOS) STARTED.addQuestDrop(MIRABEL, ARIELS_RECOMMENDATION, 1)
st = partyMember.getQuestState(qn) if not st: return npcId = npc.getNpcId() chance = st.getRandom(100) if npcId in MOBS.keys(): urnchance, porcchance = MOBS[npcId] if chance < urnchance: st.giveItems(URN, 1) st.playSound("ItemSound.quest_itemget") elif chance < porcchance: st.giveItems(PORCELAIN, 1) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(371, qn, "Shriek Of Ghosts") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(REVA) QUEST.addTalkId(REVA) QUEST.addTalkId(PATRIN) for mob in MOBS.keys(): QUEST.addKillId(mob) for rew in PORC.keys(): STARTED.addQuestDrop(PATRIN, rew, 1)
classId = player.getClassId() id = classId.getId() htmltext = default if player.isSubClassActive() : st.exitQuest(1) return htmltext # Dark Elves only if npcId in NPCS : htmltext = str(npcId) if race in [2] : if classId.level() == 1 : # first occupation change already made htmltext += "-32.htm" elif classId.level() >= 2 : # second/third occupation change already made htmltext += "-31.htm" elif id == 31 : # DE Fighter return htmltext+"-01.htm" elif id == 38 : # DE Mystic return htmltext+"-08.htm" else : htmltext += "-33.htm" # other races st.exitQuest(1) return htmltext QUEST = Quest(99997,qn,"village_master") CREATED = State('Start', QUEST) QUEST.setInitialState(CREATED) for npc in NPCS : QUEST.addStartNpc(npc) QUEST.addTalkId(npc)
st.playSound("ItemSound.quest_middle") st.set("cond", "9") else: st.playSound("ItemSound.quest_itemget") elif npcId == 20021: #Red Bear st.set("id", "0") #Only get a RED_SOIL if we are on the quest for the Earth Snake if st.getInt("cond") == 11: st.giveItems(RED_SOIL, 1) st.playSound("ItemSound.quest_middle") st.set("cond", "12") return QUEST = Quest(404, qn, "Path To Wizard") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30391) QUEST.addTalkId(30391) QUEST.addTalkId(30409) QUEST.addTalkId(30410) QUEST.addTalkId(30411) QUEST.addTalkId(30412) QUEST.addTalkId(30413)
if st.getQuestItemsCount(FAIRY_BREATH) == 0: htmltext = "30634-04.htm" else: htmltext = "30634-05.htm" return htmltext def onKill(self, npc, player, isPet): st = player.getQuestState(qn) if not st: return npcId = npc.getNpcId() if st.getInt("cond") == 1: chance = st.getRandom(100) if npcId in MOBS and chance < 90: st.giveItems(FAIRY_BREATH, 1) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(659, qn, "I'd Rather Be Collecting Fairy Breath") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(GALATEA) QUEST.addTalkId(GALATEA) for mob in MOBS: QUEST.addKillId(mob) STARTED.addQuestDrop(GALATEA, FAIRY_BREATH, 1)
ATTACK_DIRECTIVES) and chance < CHANCE25: st.giveItems(ATTACK_DIRECTIVES, 1) st.playSound("ItemSound.quest_itemget") elif cond == 10 and npcId == 20066: heads = st.getQuestItemsCount(OL_MAHUM_HEAD) if heads < 30 and chance < CHANCE3: st.giveItems(OL_MAHUM_HEAD, 1) if heads == 29: st.playSound("ItemSound.quest_middle") else: st.playSound("ItemSound.quest_itemget") return QUEST = Quest(171, qn, "Acts of Evil") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(ALVAH) QUEST.addTalkId(ALVAH) QUEST.addTalkId(ARODIN) QUEST.addTalkId(TYRA) QUEST.addTalkId(ROLENTO) QUEST.addTalkId(NETI) QUEST.addTalkId(BURAI) STARTED.addQuestDrop(ALVAH, RANGERS_REPORT1, 1)
def onKill(self, npc, player, isPet): st = player.getQuestState(qn) if not st: return if st.getState() != STARTED: return item = ORC_AMULET if npc.getNpcId() in range(20471, 20474): item = ORC_NECKLACE if st.getRandom(10) > 4: st.giveItems(item, 1) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(260, qn, "Hunt For Orcs1") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30221) QUEST.addTalkId(30221) QUEST.addKillId(20468) QUEST.addKillId(20469) QUEST.addKillId(20470) QUEST.addKillId(20471) QUEST.addKillId(20472) QUEST.addKillId(20473)
elif id == 2 and item != 0: giveReward(st, item, chance, MAX, drop) elif id == 2 and item != 0: giveReward(st, item, chance, MAX, drop) elif npcId in Varka_Silenos: decreaseAlliance(st) party = partyMember.getParty() if party: for player in party.getPartyMembers().toArray(): pst = player.getQuestState(qn) if pst: decreaseAlliance(pst) return QUEST = Quest(611, qn, "Alliance With Varka Silenos") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(Naran_Ashanuk) QUEST.addTalkId(Naran_Ashanuk) for mobId in Chance.keys(): QUEST.addKillId(mobId) STARTED.addQuestDrop(Naran_Ashanuk, Ketra_Badge_Soldier, 1) STARTED.addQuestDrop(Naran_Ashanuk, Ketra_Badge_Officer, 1) STARTED.addQuestDrop(Naran_Ashanuk, Ketra_Badge_Captain, 1) for mobId in Varka_Silenos: QUEST.addKillId(mobId)
if st.getQuestItemsCount(GOLD_LEAVES) == 5 : st.playSound("ItemSound.quest_middle") else: st.playSound("ItemSound.quest_itemget") elif npcId == 20047 : st.set("id","0") if st.getInt("cond") != 0 and st.getQuestItemsCount(LUCKY_POTPOURI) != 0 and st.getQuestItemsCount(AMETHYST)<2 and st.getRandom(100)<40 : st.giveItems(AMETHYST,1) if st.getQuestItemsCount(AMETHYST) == 2 : st.playSound("ItemSound.quest_middle") else: st.playSound("ItemSound.quest_itemget") return QUEST = Quest(408,qn,"Path To Elvenwizard") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30414) QUEST.addTalkId(30414) QUEST.addTalkId(30157) QUEST.addTalkId(30371) QUEST.addTalkId(30423) QUEST.addKillId(20019)
if cond == 4: htmltext = "31662-0.htm" elif cond > 4: htmltext = "31662-2.htm" elif npcId == FORGOTTEN_MONUMENT_3: if cond == 5: htmltext = "31663-0.htm" elif cond > 5: htmltext = "31663-2.htm" elif npcId == FORGOTTEN_MONUMENT_4: if cond == 6: htmltext = "31664-0.htm" elif cond > 6: htmltext = "31664-2.htm" return htmltext QUEST = Quest(31, qn, "Secret Buried In The Swamp") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(ABERCROMBIE) QUEST.addTalkId(ABERCROMBIE) for i in range(31661, 31666): QUEST.addTalkId(i) STARTED.addQuestDrop(ABERCROMBIE, KRORINS_JOURNAL, 1)
elif npcId == 27056: st.set("id", "0") if st.getInt("cond") and st.getQuestItemsCount( SPIRIT_NET) == 1 and st.getQuestItemsCount( BOUND_DURKA_SPIRIT) == 0: st.giveItems(BOUND_DURKA_SPIRIT, 1) st.takeItems(SPIRIT_NET, 1) st.takeItems(DURKA_PARASITE, st.getQuestItemsCount(DURKA_PARASITE)) st.playSound("ItemSound.quest_middle") st.set("cond", "10") return QUEST = Quest(416, qn, "Path To Orc Shaman") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30585) QUEST.addTalkId(30585) QUEST.addTalkId(30502) QUEST.addTalkId(30592) QUEST.addTalkId(30593) QUEST.addKillId(20335) QUEST.addKillId(20038)
if st.getQuestItemsCount(ENCHT_GARGOYLES_NAIL_ID) < 5: st.playSound("ItemSound.quest_itemget") else: st.playSound("ItemSound.quest_middle") if st.getQuestItemsCount( GHOULS_SKIN_ID) == 10 and st.getQuestItemsCount( MEDUSAS_BLOOD_ID ) == 12 and st.getQuestItemsCount( FETTEREDSOULS_ICHOR_ID ) == 5 and st.getQuestItemsCount( ENCHT_GARGOYLES_NAIL_ID) == 5: st.set("cond", "29") return QUEST = Quest(214, qn, "Trial Of Scholar") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(NPC[0]) for npcId in NPC: for i in range(2674, 2721): QUEST.addTalkId(npcId) STARTED.addQuestDrop(npcId, i, 1) for mobId in MOBS: QUEST.addKillId(mobId)
elif npcId == Shikon: if Alevel == -2: htmltext = "31382-1.htm" elif Alevel == -3 or Alevel == -4: htmltext = "31382-2.htm" elif Alevel == -5: htmltext = "31382-3.htm" else: htmltext = "31382-no.htm" elif npcId == Teranu: if Alevel >= 0: htmltext = "31383-no.htm" elif Alevel < 0 and Alevel > -4: htmltext = "31383-1.htm" elif Alevel == -4: htmltext = "31383-2.htm" else: htmltext = "31383-3.htm" return htmltext QUEST = Quest(6051, qn, "custom") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) for i in NPCS: QUEST.addFirstTalkId(i) QUEST.addTalkId(Udan) QUEST.addTalkId(Hagos) QUEST.addTalkId(Teranu)
def onKill(self, npc, player, isPet): st = player.getQuestState(qn) if not st: return if st.getState() != STARTED: return npcId = npc.getNpcId() if npcId == 20333: if st.getInt( "cond") == 1 and st.getQuestItemsCount(STARSTONE1_ID) < 20: if st.getRandom(2) == 0: st.giveItems(STARSTONE1_ID, 1) if st.getQuestItemsCount(STARSTONE1_ID) == 20: st.playSound("ItemSound.quest_middle") st.set("cond", "2") else: st.playSound("ItemSound.quest_itemget") return QUEST = Quest(277, qn, "Gatekeepers Offering") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30576) QUEST.addTalkId(30576) QUEST.addKillId(20333) STARTED.addQuestDrop(20333, STARSTONE1_ID, 1)
elif npcId == 31349 and st.getQuestItemsCount(7140) == 1 : if cond == 6 : st.set("BENEDICT","1") if st.getInt("AGRIPEL") == 1 and st.getInt("DOMINIC") == 1 and st.getInt("BENEDICT") == 1 : htmltext = "31349-02.htm" st.set("cond","7") st.playSound("ItemSound.quest_middle") return htmltext htmltext = "31349-0"+str(st.getRandom(3))+".htm" elif cond == 7 : htmltext = "31349-03.htm" elif npcId == 31328: if cond == 7: if st.getQuestItemsCount(7140) == 1: htmltext = "31328-01.htm" elif cond == 0 and onlyone == 1: htmltext = "31328-06.htm" return htmltext QUEST = Quest(21,qn,"Hidden Truth") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(31522) for NPC in [31522,31523,31524,31525,31526,31348,31349,31350,31328]: QUEST.addTalkId(NPC) STARTED.addQuestDrop(31526,7140,1)
st.giveItems(CARGO, 1) st.playSound("ItemSound.quest_itemget") elif npcId in MOBS_2: if (chanse < 15) and (not holy): st.giveItems(HOLY, 1) st.playSound("ItemSound.quest_middle") elif (chanse < 15) and (not rosary): st.giveItems(ROSARY, 1) st.playSound("ItemSound.quest_middle") elif npcId == BIFRON: st.addSpawn(CHEST, npc, 30000) return QUEST = Quest(340, qn, "Subjugation of Lizardmen") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(WEIZ) QUEST.addTalkId(WEIZ) QUEST.addTalkId(ADONIUS) QUEST.addTalkId(LEVIAN) QUEST.addTalkId(CHEST) STARTED.addQuestDrop(CHEST, TOTEM, 1) for i in MOBS_1 + MOBS_2 + [25146]: QUEST.addKillId(i)
if not partyMember: return st = partyMember.getQuestState(qn) numItems, chance = divmod(DROP_RATE, MAX) drop = st.getRandom(MAX) if drop < chance: numItems = numItems + 1 if int(numItems) != 0: st.giveItems(ANC_BOOK, int(numItems)) st.playSound("ItemSound.quest_itemget") return # Quest class and state definition QUEST = Quest(QUEST_NUMBER, str(QUEST_NUMBER) + "_" + QUEST_NAME, QUEST_DESCRIPTION) CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) # Quest NPC starter initialization QUEST.addStartNpc(HR_SOBLING) # Quest initialization QUEST.addTalkId(HR_SOBLING) for i in MOBS: QUEST.addKillId(i) STARTED.addQuestDrop(HR_SOBLING, DICT2, 1)
htmltext = "32052-2a.htm" return htmltext def onKill(self, npc, player, isPet): st = player.getQuestState(qn) if st: if st.getState() == STARTED: count = st.getQuestItemsCount(THIEF_GUILD_MARK) if st.getInt("cond") == 1 and count < 200 and st.getRandom( 100) < DROP_CHANCE: st.giveItems(THIEF_GUILD_MARK, 1) if count == 199: st.playSound("ItemSound.quest_middle") st.set("cond", "2") else: st.playSound("ItemSound.quest_itemget") return QUEST = Quest(649, qn, "A Looter and a Railroad Man") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(OBI) QUEST.addTalkId(OBI) for BANDITS in [22017, 22018, 22019, 22021, 22022, 22023, 22024, 22026]: QUEST.addKillId(BANDITS) STARTED.addQuestDrop(OBI, THIEF_GUILD_MARK, 1)
LIZARD_CAPTAIN_ORDER) == 0: st.giveItems(LIZARD_CAPTAIN_ORDER, 1) st.playSound("ItemSound.quest_middle") st.set("cond", "3") elif npcId == 27035: st.set("id", "0") if st.getInt("cond") and st.getQuestItemsCount( TAMATOS_NECKLACE) == 0: st.giveItems(TAMATOS_NECKLACE, 1) st.playSound("ItemSound.quest_middle") st.set("cond", "5") return QUEST = Quest(409, qn, "Path To Oracle") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30293) QUEST.addTalkId(30293) QUEST.addTalkId(30424) QUEST.addTalkId(30428) QUEST.addKillId(27032) QUEST.addKillId(27033) QUEST.addKillId(27034)
else: htmltext = "30042-02.htm" st.exitQuest(1) elif st.getInt("cond") and st.getQuestItemsCount( OFFICIAL_LETTER_ID): htmltext = "30042-05.htm" elif npcId == 30311 and st.getInt("cond") and st.getQuestItemsCount( OFFICIAL_LETTER_ID) and id == STARTED: st.takeItems(OFFICIAL_LETTER_ID, -1) st.giveItems(HASTE_POTION_ID, int(Config.RATE_QUESTS_REWARD)) st.unset("cond") st.setState(COMPLETED) st.playSound("ItemSound.quest_finish") htmltext = "30311-01.htm" return htmltext QUEST = Quest(155, qn, "Find Sir Windawood") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30042) QUEST.addTalkId(30042) QUEST.addTalkId(30311) STARTED.addQuestDrop(30042, OFFICIAL_LETTER_ID, 1)
if npcId == 27181: # Imperial Gravekeeper spawnedNpc = leader_st.addSpawn(30765, 120000) npc.broadcastPacket( CreatureSay( spawnedNpc.getObjectId(), 0, spawnedNpc.getName(), "Curse of the gods on the one that defiles the property of the empire!" )) leader_st.set("ImpGraveKeeper", "3") self.ImpGraveKepperStat = 1 else: leader_st.addSpawn(27179) return QUEST = Quest(503, qn, "Pursuit of Clan Ambition") CREATED = State('Start', QUEST) PROGRESS = State('Progress', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(NPC[3]) for npcId in NPC: QUEST.addTalkId(npcId) for mobId in DROPLIST.keys(): QUEST.addKillId(mobId) QUEST.addAttackId(27181) for i in range(3839, 3848) + range(3866, 3870):
htmltext = "30357-05.htm" else: htmltext = "30357-04.htm" return htmltext def onKill(self, npc, player, isPet): st = player.getQuestState(qn) if not st: return if st.getState() != STARTED: return if st.getRandom(10) < (5 + ((npc.getNpcId() - 20000) ^ 4)): st.giveItems(IMP_SHACKLES, 1) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(265, qn, "Chains Of Slavery") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30357) QUEST.addTalkId(30357) QUEST.addKillId(20004) QUEST.addKillId(20005) STARTED.addQuestDrop(20004, IMP_SHACKLES, 1)
return htmltext def onKill(self, npc, player, isPet): npcId = npc.getNpcId() partyMember = self.getRandomPartyMember(player, "2") if (partyMember and npcId != ARANEID): drop(partyMember, NECKLACE[npcId]) else: partyMember = self.getRandomPartyMember(player, "4") if (partyMember and npcId != M_LIZARDMAN): drop(partyMember, DROPLIST[npcId]) return QUEST = Quest(39, qn, "Red Eyed Invaders") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(BABENCO) QUEST.addTalkId(BABENCO) QUEST.addTalkId(BATHIS) QUEST.addKillId(M_LIZARDMAN) QUEST.addKillId(M_LIZARDMAN_SCOUT) QUEST.addKillId(M_LIZARDMAN_GUARD) QUEST.addKillId(ARANEID) for item in range(7178, 7182): STARTED.addQuestDrop(BABENCO, item, 1)
spawnedNpc) else: st.giveItems(R4[st.getRandom(len(R4))], 1) except: pass elif npcId == GREAT_DEMON_KING: try: st.getQuestTimer("greatdemon_timer1").cancel() st.giveItems(ADENA, 1412965) st.playSound("ItemSound.quest_itemget") except: pass return QUEST = Quest(334, qn, "The Wishing Potion") CREATED = State('Start', QUEST) STARTED = State('started', QUEST) #Following states kept for backwards compatibility only. MIDDLE = State('middle', QUEST) END = State('end', QUEST) COMPLETED = State('completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(ALCHEMIST_MATILD) QUEST.addTalkId(ALCHEMIST_MATILD) QUEST.addTalkId(TORAI) QUEST.addTalkId(RUPINA) QUEST.addTalkId(WISDOM_CHEST)
partyMember = self.getRandomPartyMember(player, "14") if partyMember: st = partyMember.getQuestState(qn) chance = st.getRandom(100) if CRIMSON_MOSS_CHANCE >= chance and st.getQuestItemsCount( CRIMSON_MOSS) < 5: st.giveItems(CRIMSON_MOSS, 1) st.playSound("ItemSound.quest_itemget") if st.getQuestItemsCount(CRIMSON_MOSS) == 5: st.set("cond", "15") st.playSound("ItemSound.quest_middle") return QUEST = Quest(241, qn, "Possessor Of A Precious Soul - 1") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(TALIEN) QUEST.addTalkId(TALIEN) QUEST.addTalkId(STEDMIEL) QUEST.addTalkId(GABRIELLE) QUEST.addTalkId(GILMORE) QUEST.addTalkId(KANTABILON) QUEST.addTalkId(NOEL) QUEST.addTalkId(RAHORAKTI) QUEST.addTalkId(CARADINE) QUEST.addTalkId(VIRGIL)
st.set("cond","3") htmltext = "30957-04.htm" elif cond == 3 : htmltext = "30957-05.htm" elif cond == 2 : htmltext = "30957-03.htm" elif npcId == 30960 and cond : htmltext = "30960-01.htm" elif npcId == 30961 and cond : htmltext = "30961-01.htm" elif npcId == 30060 and st.getQuestItemsCount(BEER) : st.set("ok","1") st.takeItems(BEER,1) htmltext = "30060-01.htm" return htmltext QUEST = Quest(364,qn,"Ask What You Need to Do") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30959) for npcId in [30959,30957,30060,30961,30960]: QUEST.addTalkId(npcId) STARTED.addQuestDrop(30959,KEY_1,1) STARTED.addQuestDrop(30959,KEY_2,1) STARTED.addQuestDrop(30960,BEER,1)
if count<maxcount: st.giveItems(item,1) # spawns 5 new medusas around the dead queen *muha* if npcId == 27108: for i in range(5): st.addSpawn(20158) if count == maxcount-1: st.playSound("ItemSound.quest_middle") st.set(var,str(isValue+1)) else: st.playSound("ItemSound.quest_itemget") return QUEST = Quest(233,qn,"Test Of Warspirit") CREATED = State('Start', QUEST) PART1 = State('Part1', QUEST) PART2 = State('Part2', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30510) for npcId in NPC: QUEST.addTalkId(npcId) for mobId in PART1_MOBS: QUEST.addKillId(mobId) for mobId in PART2_MOBS:
id = st.getState() cond = st.getInt("cond") if id == COMPLETED: htmltext = "<html><body>This quest have already been completed</body></html>" elif npcId == MOIRA: if cond == 0: if player.getLevel() >= 20: htmltext = "31979-02.htm" else: htmltext = "31979-01.htm" st.exitQuest(1) else: htmltext = "31979-03.htm" elif npcId == KARUDA and cond == 1 and id == STARTED: htmltext = "32017-01.htm" st.set("ok", "1") return htmltext QUEST = Quest(122, qn, "Ominous News") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(MOIRA) QUEST.addTalkId(MOIRA) QUEST.addTalkId(KARUDA)
st.exitQuest(1) else : htmltext = "30078-03.htm" return htmltext def onKill(self,npc,player,isPet): st = player.getQuestState(qn) if not st : return if st.getState() != STARTED : return npcId = npc.getNpcId() cond = st.getInt("cond") if cond==1 : st.dropQuestItems(BEAR_SKIN,1,20,CHANCE,1) return QUEST = Quest(341,qn,"Hunting For Wild Beasts") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30078) QUEST.addTalkId(30078) STARTED.addQuestDrop(30078,BEAR_SKIN,1) QUEST.addKillId(20021) QUEST.addKillId(20203) QUEST.addKillId(20310) QUEST.addKillId(20335)