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)
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)
elif npcId == 30143 : if st.getQuestItemsCount(UNDRES_LETTER_ID) : if not st.getQuestItemsCount(GARMIELS_SCRIPTURE_ID) : st.giveItems(GARMIELS_SCRIPTURE_ID,1) htmltext = "30143-01.htm" else : htmltext = "30143-02.htm" if st.getQuestItemsCount(UNDRES_LETTER_ID) and (st.getQuestItemsCount(CEREMONIAL_DAGGER_ID) + st.getQuestItemsCount(DREVIANT_WINE_ID) + st.getQuestItemsCount(GARMIELS_SCRIPTURE_ID) >= 3) : st.set("cond","2") st.playSound("ItemSound.quest_middle") return htmltext QUEST = Quest(166,qn,"Dark Mass") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30130) QUEST.addTalkId(30130) QUEST.addTalkId(30135) QUEST.addTalkId(30139) QUEST.addTalkId(30143) STARTED.addQuestDrop(30135,CEREMONIAL_DAGGER_ID,1) STARTED.addQuestDrop(30139,DREVIANT_WINE_ID,1) STARTED.addQuestDrop(30143,GARMIELS_SCRIPTURE_ID,1)
elif ItemsCount_BP > 0 : htmltext = "30048-10.htm" st.takeItems(BAULS_POTION,-1) st.giveItems(NECKLACE,1) st.addExpAndSp(5672,446) st.set("cond","0") st.set("onlyone","1") st.setState(COMPLETED) st.playSound("ItemSound.quest_finish") else: htmltext = "30048-07.htm" return htmltext QUEST = Quest(1,qn,"Letters of Love") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(DARIN) QUEST.addTalkId(DARIN) QUEST.addTalkId(ROXXY) QUEST.addTalkId(BAULRO) STARTED.addQuestDrop(DARIN,DARINGS_LETTER,1) STARTED.addQuestDrop(DARIN,RAPUNZELS_KERCHIEF,1) STARTED.addQuestDrop(DARIN,DARINGS_RECEIPT,1) STARTED.addQuestDrop(DARIN,BAULS_POTION,1)
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)
def onKill(self, npc, player, isPet): partyMember = self.getRandomPartyMemberState(player, STARTED) if not partyMember: return st = partyMember.getQuestState(qn) chance = CHANCE[npc.getNpcId()] * Config.RATE_DROP_QUEST numItems, chance = divmod(chance, MAX) if st.getRandom(MAX) < chance: numItems = numItems + 1 if numItems != 0: st.giveItems(ANCIENT_SCROLL, int(numItems)) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(385, qn, "Yoke of the Past") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) for npcId in range(31095, 31126): if npcId in [31111, 31112, 31113]: continue QUEST.addTalkId(npcId) QUEST.addStartNpc(npcId) for mobs in range(21208, 21256): QUEST.addKillId(mobs) STARTED.addQuestDrop(20986, ANCIENT_SCROLL, 1)
else : htmltext = "31370-05.htm" #else: #htmltext="<html><body>This quest has already been completed</body></html>" return htmltext 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 QUEST = Quest(607,qn,"Prove Your Courage!") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(Kadun) QUEST.addTalkId(Kadun) STARTED.addQuestDrop(Shadith,Shadith_Head,1) QUEST.addKillId(Shadith)
return htmltext def onKill(self,npc,player,isPet): st = player.getQuestState(qn) if not st : return if st.getState() != STARTED : return count = st.getQuestItemsCount(BRACELET) cond = st.getInt("cond") if st.getRandom(100) < CHANCE + ((npc.getNpcId() - 20579)*5) and count < 60 and cond == 1: st.giveItems(BRACELET,1) if count == 59 : st.playSound("ItemSound.quest_middle") st.set("cond","2") else : st.playSound("ItemSound.quest_itemget") return QUEST = Quest(300,qn,"Hunting Leto Lizardman") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(RATH) QUEST.addTalkId(RATH) for mob in range(20577,20581)+[20582] : QUEST.addKillId(mob) STARTED.addQuestDrop(RATH,BRACELET,1)
if not hair : htmltext = "30111-3.htm" else : st.giveItems(ADENA,12070+500*hair) st.takeItems(HAIR,-1) htmltext = "30111-4.htm" return htmltext def onKill(self,npc,player,isPet): partyMember = self.getRandomPartyMemberState(player,STARTED) if not partyMember : return st = partyMember.getQuestState(qn) if st.getRandom(100) < CHANCE + ((npc.getNpcId() - 20985) * 2) : st.giveItems(HAIR,1) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(366,qn,"Silver Haired Shaman") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(DIETER) QUEST.addTalkId(DIETER) for mob in range(20986,20989) : QUEST.addKillId(mob) STARTED.addQuestDrop(DIETER,HAIR,1)
if n < 72: st.giveItems(MONSTER_EYE_CARCASS, 1) else: st.giveItems(MONSTER_EYE_LENS, 1) elif npcId == 20070: if n < 50: st.giveItems(BASILISK_GIZZARD, 1) st.playSound("ItemSound.quest_itemget") elif npcId == 20072: if n < 53: st.giveItems(BASILISK_GIZZARD, 1) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(328, qn, "Sense For Business") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30436) QUEST.addTalkId(30436) for i in [20055, 20059, 20067, 20068, 20070, 20072]: QUEST.addKillId(i) STARTED.addQuestDrop(20055, MONSTER_EYE_CARCASS, 1) STARTED.addQuestDrop(20055, MONSTER_EYE_LENS, 1) STARTED.addQuestDrop(20070, BASILISK_GIZZARD, 1)
if count == maxcount - 1: st.playSound("Itemsound.quest_middle") itemcount = 0 for id in [ WEIRD_BEES_NEEDLE, MARSH_SPIDERS_WEB, BLOOD_OF_LEECH ]: itemcount += st.getQuestItemsCount(id) if npcId == 27133 or itemcount > 29: st.set("progress", str(progress + 1)) else: st.playSound("Itemsound.quest_itemget") return QUEST = Quest(231, qn, "Test Of Maestro") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30531) QUEST.addTalkId(30531) for npcId in [30532, 30533, 30535, 30536, 30556, 30671, 30672, 30673, 30675]: QUEST.addTalkId(npcId) for mobId in [20225, 20229, 20233, 27133]: QUEST.addKillId(mobId)
qty = 0 for i in DROP[npcId]: if i[0] <= chance < i[1]: qty = i[2] if qty: if count + qty > 50: qty = 50 - count if count + qty == 50: st.playSound("ItemSound.quest_middle") st.set("cond", "2") else: st.playSound("ItemSound.quest_itemget") st.giveItems(WOLF_CLAW, qty) return QUEST = Quest(264, qn, "Keen Claws") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30136) QUEST.addTalkId(30136) QUEST.addKillId(20003) QUEST.addKillId(20456) STARTED.addQuestDrop(20003, WOLF_CLAW, 1)
st.playSound("ItemSound.quest_itemget") if st.getRandom(100) < chance: n = st.getRandom(100) if n < 25: st.giveItems(CLAY_URN_FRAGMENT, 1) elif n < 50: st.giveItems(BRASS_TRINKET_PIECE, 1) elif n < 75: st.giveItems(BRONZE_MIRROR_PIECE, 1) else: st.giveItems(JADE_NECKLACE_BEAD, 1) return QUEST = Quest(327, qn, "Reclaim The Land") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30597) QUEST.addTalkId(30597) QUEST.addTalkId(30034) QUEST.addTalkId(30313) QUEST.addTalkId(30597) for i in range(20495, 20502): QUEST.addKillId(i)
if st : if st.getState() == STARTED : count = st.getQuestItemsCount(ORC_GOODS) if st.getInt("cond") == 1 and count < 120 : chance = DROP_CHANCE * Config.RATE_DROP_QUEST numItems, chance = divmod(chance,100) if st.getRandom(100) < chance : numItems += 1 if numItems : if count + numItems >= 120 : numItems = 120 - count st.playSound("ItemSound.quest_middle") st.set("cond","2") else: st.playSound("ItemSound.quest_itemget") st.giveItems(ORC_GOODS,int(numItems)) return QUEST = Quest(644, qn, "Grave Robber Annihilation") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(KARUDA) QUEST.addTalkId(KARUDA) for i in MOBS : QUEST.addKillId(i) STARTED.addQuestDrop(KARUDA,ORC_GOODS,1)
if st.getQuestItemsCount(AMBER_BEAD_ID) < 70 : if st.getRandom(100) < 50 and player.getClassId().getId() == 0x36: #and IsSpoiled() == 1 : st.giveItems(AMBER_BEAD_ID,1) st.playSound("Itemsound.quest_itemget") if st.getRandom(100) < 50 : if st.getQuestItemsCount(AMBER_BEAD_ID) < 69 : st.giveItems(AMBER_BEAD_ID,1) st.playSound("Itemsound.quest_itemget") else: st.giveItems(AMBER_BEAD_ID,1) st.playSound("ItemSound.quest_middle") return QUEST = Quest(216,qn,"Trial Of Guildsman") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30103) QUEST.addTalkId(30103) QUEST.addTalkId(30210) QUEST.addTalkId(30283) QUEST.addTalkId(30298) QUEST.addTalkId(30688)
if st.getState() != STARTED: return if st.getInt("cond") == 2: if st.getRandom(100) < 20: if st.getQuestItemsCount(ANCIENT_SCROLL) == 0: st.giveItems(ANCIENT_SCROLL, 1) st.playSound("Itemsound.quest_itemget") elif st.getQuestItemsCount(ANCIENT_CLAY_TABLET) == 0: st.giveItems(ANCIENT_CLAY_TABLET, 1) st.playSound("ItemSound.quest_middle") st.set("cond", "3") return QUEST = Quest(106, qn, "Forgotten Truth") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30358) QUEST.addTalkId(30358) QUEST.addTalkId(30133) QUEST.addKillId(27070) STARTED.addQuestDrop(30133, KARTAS_TRANSLATION, 1) STARTED.addQuestDrop(30358, ONYX_TALISMAN1, 1)
chance = MOBS4[npcId] drop = 3 elif npcId in MOBS5.keys() : chance = MOBS5[npcId] drop = 4 elif npcId in MOBSspecial.keys() : chance,drop = MOBSspecial[npcId] if st.getRandom(1000) <= chance : drop += 1 if drop != 0 : st.giveItems(SWEET_FLUID,drop*int(Config.RATE_DROP_QUEST)) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(426,qn,"Quest for Fishing Shot") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) for npc in range(31562,31580)+[31616,31696,31697]: QUEST.addStartNpc(npc) QUEST.addTalkId(npc) for mob in MOBS1.keys(): QUEST.addKillId(mob) for mob in MOBS2.keys(): QUEST.addKillId(mob) for mob in MOBS3.keys(): QUEST.addKillId(mob) for mob in MOBS4.keys():
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)
class Quest(JQuest): def __init__(self, id, name, descr): JQuest.__init__(self, id, name, descr) def onFirstTalk(self, npc, player): st = player.getQuestState(qn) if not st: st = self.newQuestState(player) baiumStatus = GrandBossManager.getInstance().getBossStatus(29020) if baiumStatus != 2 and st.getQuestItemsCount(4295): st.exitQuest(1) return "31862.htm" else: npc.showChatWindow(player) st.exitQuest(1) return return QUEST = Quest(-1, qn, "custom") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(31862) QUEST.addFirstTalkId(31862) QUEST.addTalkId(31862)
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) QUEST.addKillId(20466)
QUEST = Quest(230, qn, "Test Of Summoner") CREATED = State("Start", QUEST) PROGRESS = State("Progress", QUEST) COMPLETED = State("Completed", QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(NPC[1]) # adds all npcs, mobs to the progress state for npcId in NPC: QUEST.addTalkId(npcId) for mobId in DROPLIST_LARA.keys(): QUEST.addKillId(mobId) for mobId in DROPLIST_SUMMON.keys(): QUEST.addKillId(mobId) QUEST.addAttackId(mobId) # for summonId in PLAYER_SUMMONS: # PROGRESS.addKillId(summonId) # this will add the player to the list of notified objects in onDeath Part # addNotifyOfDeath(st.getPlayer()) # This is just to formal add the drops, in case that a player abort this quest.. the items should disappear STARTED = State("Started", QUEST) for item in range(3337, 3390): STARTED.addQuestDrop(30063, item, 1)
count = st.getQuestItemsCount(item) if st.getRandom(100) < chance: numItems += 1 if numItems: if count + numItems >= REQUIRED_SPIDER_LEGS: numItems = REQUIRED_SPIDER_LEGS - count st.playSound("ItemSound.quest_middle") else: st.playSound("ItemSound.quest_itemget") st.giveItems(item, int(numItems)) return # Quest class and state definition QUEST = Quest(419, qn, "Wolf Collar") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) SLAYED = State('Slayed', QUEST) TALKED = State('Talked', QUEST) COMPLETED = State('Completed', QUEST) # Quest initialization QUEST.setInitialState(CREATED) # Quest NPC starter initialization QUEST.addStartNpc(PET_MANAGER_MARTIN) # Quest Item Drop initialization for item in range(3417, 3428): STARTED.addQuestDrop(PET_MANAGER_MARTIN, item, 1) # Quest mob initialization
htmltext = npc+"-01.htm" count = 0 for item in NPC_GIFTS.values(): count += st.getQuestItemsCount(item) if count == 6 : st.set("cond","2") st.set("id","2") st.playSound("ItemSound.quest_middle") else : st.playSound("ItemSound.quest_itemget") return htmltext QUEST = Quest(4,qn,"Long Live the Paagrio Lord") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30578) QUEST.addTalkId(30578) QUEST.addTalkId(30559) QUEST.addTalkId(30560) QUEST.addTalkId(30562) QUEST.addTalkId(30566) QUEST.addTalkId(30578) QUEST.addTalkId(30585) QUEST.addTalkId(30587)
htmltext = "30405-02.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() st.giveItems(GIANT_SPIDER_SKIN, 1) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(259, qn, "Ranchers Plea") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30497) QUEST.addTalkId(30497) QUEST.addTalkId(30405) QUEST.addKillId(20103) QUEST.addKillId(20106) QUEST.addKillId(20108) STARTED.addQuestDrop(20103, GIANT_SPIDER_SKIN, 1)
numItems,chance = divmod(100*Config.RATE_DROP_QUEST,100) item,count = MOB[npcId] if item : if st.getRandom(100) <chance : numItems = numItems + 1 prevItems = st.getQuestItemsCount(item) if prevItems < count : if prevItems + numItems > count : numItems = count - prevItems if int(numItems) != 0 : st.giveItems(item,int(numItems)) if (st.getQuestItemsCount(LEAF) != 80 and st.getQuestItemsCount(STONE) != 100) : st.playSound("ItemSound.quest_itemget") else : st.playSound("ItemSound.quest_middle") st.set("cond","2") return QUEST = Quest(379,qn,"Fantasy Wine") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(HARLAN) QUEST.addTalkId(HARLAN) QUEST.addKillId(ENKU_CHAMPION) QUEST.addKillId(ENKU_SHAMAN) STARTED.addQuestDrop(HARLAN,LEAF,1) STARTED.addQuestDrop(HARLAN,STONE,1)
st.giveItems(MARSH_SPIDER_FEELER,1) st.playSound("ItemSound.quest_middle") st.set("dudaStat","3") elif int(st.get(var)) == value and random < chance and count < maxcount: st.giveItems(item,1) if count == maxcount-1: st.playSound("ItemSound.quest_middle") if newValue == 1 and st.getQuestItemsCount(RAGNA_ORC_HEAD) and st.getQuestItemsCount(RAGNA_CHIEF_NOTICE): st.set(var,"2") else: st.set(var,str(newValue)) else: st.playSound("ItemSound.quest_itemget") return QUEST = Quest(232,qn,"Test Of Lord") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(NPC[4]) for npcId in NPC: QUEST.addTalkId(npcId) for mobId in MOBS: QUEST.addKillId(mobId) for item in range(3391,3417): STARTED.addQuestDrop(NPC[4],item,1)
for item in range(3698,3707) : if st.getQuestItemsCount(item) : st.giveItems(item+1,1) st.takeItems(item,-1) if item >= 3703 : st.playSound("ItemSound.quest_jackpot") break else : for item in range(3698,3707) : st.takeItems(item,-1) st.giveItems(3708,1) return QUEST = Quest(335,qn,"The Song of the Hunter") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(Grey) QUEST.addTalkId(Grey) QUEST.addTalkId(Tor) QUEST.addTalkId(Cybellin) npcs = [] for npc in Level_1.keys() + Level_2.keys() + Tor_requests_1.keys() + Tor_requests_2.keys() + Tor_requests_tospawn.keys() + Mobs : if npc not in npcs : QUEST.addKillId(npc) npcs.append(npc)
st.giveItems(KAILS_COIN,1) if album or clover : st.playSound("ItemSound.quest_middle") else : st.playSound("ItemSound.quest_itemget") elif npcId == VEGUS and not (clover + album) and st.getInt("id") : if st.getRandom(100) < VEGUS_CHANCE : st.giveItems(CLOVER_COIN,1) if coin : st.playSound("ItemSound.quest_middle") else : st.playSound("ItemSound.quest_itemget") return QUEST = Quest(QuestNumber, str(QuestNumber)+"_"+QuestName, QuestDescription) CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(SORINT) QUEST.addTalkId(SORINT) QUEST.addTalkId(SANDRA) QUEST.addKillId(ANCIENT_GARGOYLE) QUEST.addKillId(VEGUS) STARTED.addQuestDrop(KAILS_COIN, SORINT,1) STARTED.addQuestDrop(COIN_ALBUM, SORINT,1) STARTED.addQuestDrop(CLOVER_COIN,SORINT,1)
else: st.giveItems(ZOMBIE_LIVER1_ID, 1) elif npcId == 20458: st.playSound("ItemSound.quest_itemget") if n < 42: st.giveItems(ZOMBIE_HEAD1_ID, 1) elif n < 67: st.giveItems(ZOMBIE_HEART1_ID, 1) else: st.giveItems(ZOMBIE_LIVER1_ID, 1) return QUEST = Quest(325, qn, "Grim Collector") CREATED = State("Start", QUEST) STARTED = State("Started", QUEST) COMPLETED = State("Completed", QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30336) QUEST.addTalkId(30336) QUEST.addTalkId(30342) QUEST.addTalkId(30434) for i in [20026, 20029, 20035, 20042, 20045, 20457, 20458, 20051, 20514, 20515]: QUEST.addKillId(i) STARTED.addQuestDrop(20026, ZOMBIE_HEAD1_ID, 1) STARTED.addQuestDrop(20026, ZOMBIE_HEART1_ID, 1) STARTED.addQuestDrop(20026, ZOMBIE_LIVER1_ID, 1)
st.takeItems(M_EGG, 1) st.giveItems(57, 71318) st.setState(COMPLETED) st.set("cond", "0") st.playSound("ItemSound.quest_finish") elif npcId == KARAKAWEI: if cond == 4: htmltext = "32117-01.htm" if id == MIDDLE: htmltext = "32117-02.htm" elif cond == 5: htmltext = "32117-04.htm" elif npcId == MANTARASA and cond == 5: htmltext = "32118-01.htm" return htmltext QUEST = Quest(124, qn, "Meeting The Elroki") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) MIDDLE = State('Middle', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(MARQUEZ) QUEST.addTalkId(MARQUEZ) QUEST.addTalkId(MUSHIKA) QUEST.addTalkId(ASAMAH) QUEST.addTalkId(KARAKAWEI) QUEST.addTalkId(MANTARASA)
st.playSound("ItemSound.quest_itemget") elif npcId == 20458 : st.set("id","0") if st.getInt("cond") and st.getQuestItemsCount(PENITENTS_MARK) == 1 and st.getQuestItemsCount(ASHEN_BONES)<10 : st.giveItems(ASHEN_BONES,1) if st.getQuestItemsCount(ASHEN_BONES) == 10 : st.playSound("ItemSound.quest_middle") st.set("cond","6") else: st.playSound("ItemSound.quest_itemget") return QUEST = Quest(413,qn,"Path To Shillien Oracle") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30330) QUEST.addTalkId(30330) QUEST.addTalkId(30375) QUEST.addTalkId(30377) QUEST.addKillId(20457) QUEST.addKillId(20458) QUEST.addKillId(20514) QUEST.addKillId(20515)
else: st.exitQuest(1) elif id == STARTED : if npcId == 31547 and cond == 1 and st.getQuestItemsCount(SPECIAL_DRINK) : htmltext = "31547-0.htm" elif npcId == 31546 and cond == 2 and st.getQuestItemsCount(SPECIAL_DRINK) : htmltext = "31546-0.htm" elif npcId == 31545 and cond == 3 and st.getQuestItemsCount(SPECIAL_DRINK) : htmltext = "31545-0.htm" elif npcId == 31544 and cond == 4 and st.getQuestItemsCount(SPECIAL_DRINK) : htmltext = "31544-0.htm" elif npcId == 31543 and cond == 5 and st.getQuestItemsCount(SPECIAL_DRINK) : htmltext = "31543-0.htm" elif npcId == 31521 and cond == 6 and st.getQuestItemsCount(FEE_OF_DRINK) == 5 : htmltext = "31521-2.htm" return htmltext QUEST = Quest(622,qn,"Delivery of special liquor") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(31521) QUEST.addTalkId(31521) for i in range(31543,31548): QUEST.addTalkId(i) STARTED.addQuestDrop(31521,SPECIAL_DRINK,1) STARTED.addQuestDrop(31521,FEE_OF_DRINK,1)
if not st : return if st.getState() != STARTED : return npcId = npc.getNpcId() if npcId == 27020 : if st.getQuestItemsCount(VAROOL_FOULCLAWS_FANG) == 0 and st.getRandom(10)>7: st.giveItems(VAROOL_FOULCLAWS_FANG,1) st.playSound("ItemSound.quest_middle") elif st.getRandom(10)>5 : st.giveItems(WERERAT_FANG,1) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(316,qn,"Destroy Plaguebringers") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30155) QUEST.addTalkId(30155) QUEST.addKillId(20040) QUEST.addKillId(20047) QUEST.addKillId(27020) STARTED.addQuestDrop(20040,WERERAT_FANG,1) STARTED.addQuestDrop(27020,VAROOL_FOULCLAWS_FANG,1)
if not partyMember: return st = partyMember.getQuestState(qn) if st: count = st.getQuestItemsCount(TARLK_EYE) if st.getInt("cond") == 1 and count < 100: chance = 33 * Config.RATE_DROP_QUEST numItems, chance = divmod(chance, 100) if st.getRandom(100) < chance: numItems += 1 if numItems: if count + numItems >= 100: numItems = 100 - count st.playSound("ItemSound.quest_middle") st.set("cond", "2") else: st.playSound("ItemSound.quest_itemget") st.giveItems(TARLK_EYE, 1) return QUEST = Quest(52, qn, "Willie's Special Bait") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(WILLIE) QUEST.addTalkId(WILLIE) QUEST.addKillId(TARLK_BASILISK) STARTED.addQuestDrop(TARLK_BASILISK, TARLK_EYE, 1)
chance = st.getRandom(100) if st.getInt("cond") == 2 : if npcId in [21106,21102] and chance < 79 : st.giveItems(WATCHING_EYES,1) st.playSound("ItemSound.quest_itemget") elif npcId == ROUGH_HEWN_ROCK_GOLEM and chance < 75 : st.giveItems(ROUGHLY_HEWN_ROCK_GOLEM_SHARD,1) st.playSound("ItemSound.quest_itemget") elif npcId in [20781,21104,21107,21105] and chance < 67 : st.giveItems(DELU_LIZARDMAN_SCALE,1) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(660,qn,"Aiding the Floran Village") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(MARIA) QUEST.addTalkId(MARIA) QUEST.addTalkId(ALEX) QUEST.addKillId(CARSED_SEER) QUEST.addKillId(PLAIN_WATCMAN) QUEST.addKillId(ROUGH_HEWN_ROCK_GOLEM) QUEST.addKillId(DELU_LIZARDMAN_SHAMAN) QUEST.addKillId(DELU_LIZARDMAN_SAPPLIER) QUEST.addKillId(DELU_LIZARDMAN_COMMANDER) QUEST.addKillId(DELU_LIZARDMAN_SPESIAL_AGENT)
st = partyMember.getQuestState(qn) if st : if st.getState() == STARTED : count = st.getQuestItemsCount(PROOF_OF_AVENGER) if st.getInt("cond") == 1 and count < 100 : chance = DROP_CHANCE * Config.RATE_DROP_QUEST numItems, chance = divmod(chance,100) if st.getRandom(100) < chance : numItems = numItems + 1 if numItems : if count + numItems >= 100 : numItems = 100 - count st.playSound("ItemSound.quest_middle") st.set("cond","2") else: st.playSound("ItemSound.quest_itemget") st.giveItems(PROOF_OF_AVENGER,int(numItems)) return QUEST = Quest(601,qn,"Watching Eyes") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(EYE_OF_ARGOS) QUEST.addTalkId(EYE_OF_ARGOS) for i in MOBS : QUEST.addKillId(i) STARTED.addQuestDrop(EYE_OF_ARGOS,PROOF_OF_AVENGER,1)
else : htmltext = "30935-01.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() if st.getRandom(100) < CHANCE : st.giveItems(ORB,1) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(343,qn,"Under The Shadow Of The Ivory Tower") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30834) QUEST.addTalkId(30834) QUEST.addTalkId(30835) QUEST.addTalkId(30935) QUEST.addTalkId(30934) for i in range(20563,20567) : QUEST.addKillId(i) STARTED.addQuestDrop(30834,ORB,1)
htmltext = "30371-01.htm" st.takeItems(ANDELLRIAS_LETTER,1) st.giveItems(MOTHERTREE_FRUIT,1) st.set("cond", "2") elif cond == 2 : if npcId == 30362 and st.getQuestItemsCount(MOTHERTREE_FRUIT) : htmltext = "30362-06.htm" st.giveItems(ADENA,100) st.takeItems(MOTHERTREE_FRUIT,1) st.addExpAndSp(1000,0) st.unset("cond") st.setState(COMPLETED) st.playSound("ItemSound.quest_finish") elif npcId == 30371 and st.getQuestItemsCount(MOTHERTREE_FRUIT) : htmltext = "30371-02.htm" return htmltext QUEST = Quest(161,qn,"Fruits Of Mothertree") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30362) QUEST.addTalkId(30362) QUEST.addTalkId(30371) STARTED.addQuestDrop(30371,MOTHERTREE_FRUIT,1) STARTED.addQuestDrop(30362,ANDELLRIAS_LETTER,1)
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)
partyMember = self.getRandomPartyMember(player,"1") if not partyMember : return st = partyMember.getQuestState(qn) if st : count = st.getQuestItemsCount(CRIMSON_DRAKE_HEART) if st.getInt("cond") == 1 and count < 100 : chance = 33 * Config.RATE_DROP_QUEST numItems, chance = divmod(chance,100) if st.getRandom(100) < chance : numItems += 1 if numItems : if count + numItems >= 100 : numItems = 100 - count st.playSound("ItemSound.quest_middle") st.set("cond","2") else: st.playSound("ItemSound.quest_itemget") st.giveItems(CRIMSON_DRAKE_HEART,1) return QUEST = Quest(53, qn, "Linnaeus Special Bait") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(LINNAEUS) QUEST.addTalkId(LINNAEUS) QUEST.addKillId(CRIMSON_DRAKE) STARTED.addQuestDrop(LINNAEUS,CRIMSON_DRAKE_HEART,1)
if st.getInt("cond") == 1 : if st.getQuestItemsCount(HATOSS_ORDER1_ID) and st.getQuestItemsCount(LETTER_TO_HUMAN_ID) == 0 : st.giveItems(LETTER_TO_HUMAN_ID,1) st.playSound("ItemSound.quest_itemget") if st.getQuestItemsCount(HATOSS_ORDER2_ID) and st.getQuestItemsCount(LETTER_TO_DARKELF_ID) == 0 : st.giveItems(LETTER_TO_DARKELF_ID,1) st.playSound("ItemSound.quest_itemget") if st.getQuestItemsCount(HATOSS_ORDER3_ID) and st.getQuestItemsCount(LETTER_TO_ELF_ID) == 0 : st.giveItems(LETTER_TO_ELF_ID,1) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(107,qn,"Merciless Punishment") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30568) QUEST.addTalkId(30568) QUEST.addTalkId(30580) QUEST.addKillId(27041) STARTED.addQuestDrop(30568,HATOSS_ORDER2_ID,1) STARTED.addQuestDrop(27041,LETTER_TO_DARKELF_ID,1) STARTED.addQuestDrop(27041,LETTER_TO_HUMAN_ID,1)
st.playSound("ItemSound.quest_finish") else : htmltext = "30305-05.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() if st.getInt("cond") == 1 : st.giveItems(NIGHTMARE_CRYSTAL,1) st.playSound("ItemSound.quest_middle") st.set("cond","2") return QUEST = Quest(170,qn,"Dangerous Allure") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30305) QUEST.addTalkId(30305) QUEST.addKillId(27022) STARTED.addQuestDrop(27022,NIGHTMARE_CRYSTAL,1)
if cm_sponsor : if cm_sponsor.isOnline(): sponsor = cm_sponsor.getPlayerInstance() if sponsor : if player.isInsideRadius(sponsor, 1100, 1, 0) : enabled=True if st.getInt("cond") == cond and count < max and st.getRandom(100) < chance and enabled : st.giveItems(item,1) if count == max-1: st.set("cond",str(cond+1)) st.playSound("ItemSound.quest_middle") else : st.playSound("ItemSound.quest_itemget") return QUEST = Quest(123,qn,"The Leader And The Follower") CREATED = State('Start', QUEST) PROGRESS = State('Progress', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(NEWYEAR) QUEST.addTalkId(NEWYEAR) for mob in DROPLIST.keys(): QUEST.addKillId(mob) PROGRESS.addQuestDrop(NEWYEAR,BLOOD,1) PROGRESS.addQuestDrop(NEWYEAR,LEG,1)
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) QUEST.addKillId(20021)
st.giveItems(BREKA_OVERLORD_SKULL_ID,1) st.playSound("Itemsound.quest_itemget") elif npcId == 20582 : if st.getInt("cond") and st.getQuestItemsCount(PALUS_CHARM_ID) and st.getQuestItemsCount(ARKENIAS_NOTE_ID) and st.getQuestItemsCount(RED_FAIRY_DUST_ID) == 0 and st.getQuestItemsCount(PIXY_GARNET_ID) and st.getQuestItemsCount(LETO_OVERLORD_SKULL_ID) < 10 : if st.getQuestItemsCount(LETO_OVERLORD_SKULL_ID) == 9 : st.giveItems(LETO_OVERLORD_SKULL_ID,1) st.playSound("Itemsound.quest_middle") else: st.giveItems(LETO_OVERLORD_SKULL_ID,1) st.playSound("Itemsound.quest_itemget") return QUEST = Quest(219,qn,"Testimony Of Fate") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30476) QUEST.addTalkId(30476) QUEST.addTalkId(31845) QUEST.addTalkId(31850) QUEST.addTalkId(30114) QUEST.addTalkId(30210) QUEST.addTalkId(30358) QUEST.addTalkId(30419) QUEST.addTalkId(30463)
if st.getInt("cond") and st.getQuestItemsCount(RING_OF_TESTIMONY2_ID) == 1 and st.getQuestItemsCount(INPICIO_SAC_ID) <10 : if st.getRandom(100)<50 : st.giveItems(INPICIO_SAC_ID,1) st.playSound("ItemSound.quest_middle") elif npcId == 20233 : st.set("id","0") if st.getInt("cond") and st.getQuestItemsCount(RING_OF_TESTIMONY2_ID) == 1 and st.getQuestItemsCount(SPIDER_THORN_ID) <10 : if st.getRandom(100)<50 : st.giveItems(SPIDER_THORN_ID,1) st.playSound("ItemSound.quest_middle") return QUEST = Quest(221,qn,"Testimony Of Prosperity") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30104) QUEST.addTalkId(30104) QUEST.addTalkId(30005) QUEST.addTalkId(30368) QUEST.addTalkId(30466) QUEST.addTalkId(30517) QUEST.addTalkId(30519) QUEST.addTalkId(30531) QUEST.addTalkId(30532)
) 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.set("cond", "4") else: st.playSound("ItemSound.quest_itemget") st.giveItems(BONE_FRAGMENT1_ID, numItems) elif npcId in [20015, 20020]: if st.getQuestItemsCount(PRESERVE_OIL_ID) == 1: if st.getRandom(10) < 3 * Config.RATE_DROP_QUEST: st.set("cond", "7") st.giveItems(ZOMBIE_HEAD_ID, 1) st.playSound("ItemSound.quest_middle") st.takeItems(PRESERVE_OIL_ID, 1) return QUEST = Quest(103, qn, "Spirit Of Craftsman") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30307) QUEST.addTalkId(30307) QUEST.addTalkId(30132) QUEST.addTalkId(30144) QUEST.addKillId(20015) QUEST.addKillId(20020) QUEST.addKillId(20455) QUEST.addKillId(20517)
if not st: return if st.getState() != STARTED: return count = st.getQuestItemsCount(MARAKU_WEREWOLF_HEAD) if count < 40: if count < 39: st.playSound("ItemSound.quest_itemget") else: st.playSound("ItemSound.quest_middle") st.set("cond", "2") st.giveItems(MARAKU_WEREWOLF_HEAD, 1) if st.getRandom(100) <= 15: st.giveItems(MARAKU_WOLFMEN_TOTEM, 1) return QUEST = Quest(274, qn, "Against Wolf Men") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30569) QUEST.addTalkId(30569) QUEST.addKillId(20363) QUEST.addKillId(20364) STARTED.addQuestDrop(20363, MARAKU_WEREWOLF_HEAD, 1)
#else: #htmltext="<html><body>This quest has already been completed</body></html>" return htmltext 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 QUEST = Quest(607, qn, "Prove Your Courage!") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(Kadun) QUEST.addTalkId(Kadun) STARTED.addQuestDrop(Shadith, Shadith_Head, 1) QUEST.addKillId(Shadith)
htmltext = "30048-09.htm" elif ItemsCount_BP > 0 : htmltext = "30048-10.htm" st.takeItems(BAULS_POTION,-1) st.giveItems(NECKLACE,1) st.addExpAndSp(5672,446) st.set("cond","0") st.set("onlyone","1") st.setState(COMPLETED) st.playSound("ItemSound.quest_finish") else: htmltext = "30048-07.htm" return htmltext QUEST = Quest(1,qn,"Letters of Love") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(DARIN) QUEST.addTalkId(DARIN) QUEST.addTalkId(ROXXY) QUEST.addTalkId(BAULRO) STARTED.addQuestDrop(DARIN,DARINGS_LETTER,1) STARTED.addQuestDrop(DARIN,RAPUNZELS_KERCHIEF,1) STARTED.addQuestDrop(DARIN,DARINGS_RECEIPT,1)
return htmltext def onKill(self,npc,player,isPet): partyMember = self.getRandomPartyMember(player, "1") if not partyMember: return st = partyMember.getQuestState(qn) if st : if st.getState() == STARTED : numItems, chance = divmod(100*Config.RATE_DROP_QUEST,100) if st.getRandom(100) < chance : numItems += 1 st.giveItems(RELICS,int(numItems)) st.playSound("ItemSound.quest_itemget") if st.getRandom(100) < (5*Config.RATE_DROP_QUEST) : st.giveItems(ENTRANCE,1) st.playSound("ItemSound.quest_middle") return QUEST = Quest(619, qn, "Relics of the Old Empire") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(GHOST) QUEST.addTalkId(GHOST) for mobId in MOBS : QUEST.addKillId(mobId) STARTED.addQuestDrop(GHOST,RELICS,1) STARTED.addQuestDrop(GHOST,ENTRANCE,1)
elif npcId == JASMINE and cond == 1: htmltext = "30134-04.htm" elif id == STARTED: if npcId == ROSELYN and cond: if st.getQuestItemsCount(ROSELYNS_NOTE) == 0: htmltext = "30355-01.htm" else: htmltext = "30355-03.htm" elif npcId == HARNE and cond == 2 and st.getQuestItemsCount( ROSELYNS_NOTE) > 0: htmltext = "30144-01.htm" elif npcId == JASMINE and cond == 3: htmltext = "30134-05.htm" return htmltext QUEST = Quest(8, qn, "An Adventure Begins") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(JASMINE) QUEST.addTalkId(JASMINE) QUEST.addTalkId(ROSELYN) QUEST.addTalkId(HARNE) STARTED.addQuestDrop(JASMINE, ROSELYNS_NOTE, 1)
elif cond == 9 and st.getQuestItemsCount(TANAPIS_ORDER1) and st.getQuestItemsCount(SCEPTER_OF_TANTOS) == 0 : if npcId in [ 20778, 20779 ] : st.playSound("Itemsound.quest_before_battle") #st.addSpawn(27086) st.addSpawn(27086, 11839,-106261,-3550,300000) return "Revenant of Tantos Chief has spawned at X=11839 Y=-106261 Z=-3550" # Alternate coord. set: #st.addSpawn(27086,11567,-106785,-3520) elif npcId == 27086 : st.giveItems(SCEPTER_OF_TANTOS,1) st.set("cond","10") st.playSound("Itemsound.quest_middle") return QUEST = Quest(220,qn,"Testimony Of Glory") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30514) QUEST.addTalkId(30514) QUEST.addTalkId(30501) QUEST.addTalkId(30515) QUEST.addTalkId(30565) QUEST.addTalkId(30571) QUEST.addTalkId(30615)
class Quest(JQuest): def __init__(self, id, name, descr): JQuest.__init__(self, id, name, descr) def onAdvEvent(self, event, npc, player): htmltext = event st = player.getQuestState(qn) if not st: return if event.isdigit(): htmltext = None rbid = int(event) if rbid in RADAR.keys(): x, y, z = RADAR[rbid] player.sendPacket(RadarControl(2, 2, x, y, z)) player.sendPacket(RadarControl(0, 1, x, y, z)) st.exitQuest(1) return htmltext def onTalk(Self, npc, player): return "info.htm" QUEST = Quest(8000, qn, "custom") CREATED = State('Start', QUEST) QUEST.setInitialState(CREATED) for i in NPC: QUEST.addStartNpc(i) QUEST.addTalkId(i)
st.playSound("ItemSound.quest_middle") st.set("cond", "2") else: st.playSound("ItemSound.quest_itemget") elif skulls < 3: st.giveItems(ELF_SKULL, 1) if bones == 10 and skulls == 2: st.playSound("ItemSound.quest_middle") st.set("cond", "2") else: st.playSound("ItemSound.quest_itemget") return QUEST = Quest(162, qn, "Curse Of Fortress") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30147) QUEST.addTalkId(30147) QUEST.addKillId(20033) QUEST.addKillId(20345) QUEST.addKillId(20371) QUEST.addKillId(20463) QUEST.addKillId(20464) QUEST.addKillId(20504)
return htmltext def onKill(self,npc,player,isPet): st = player.getQuestState(qn) if st : if st.getState() == STARTED : count = st.getQuestItemsCount(GREY_STAR) if st.getInt("cond") == 7 and count < 1 and st.getRandom(100)<CHANCE : st.giveItems(GREY_STAR,1) st.playSound("ItemSound.quest_itemget") st.set("cond","8") return QUEST=Quest(117,qn,"Ocean Of Distant Star") CREATED=State('Start', QUEST) STARTED=State('Started', QUEST) COMPLETED=State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(ABEY) QUEST.addTalkId (ABEY) QUEST.addTalkId(GHOST) QUEST.addTalkId(OBI) QUEST.addTalkId(BOX) QUEST.addTalkId(GHOST_F) for MOBS in [22023,22024]: QUEST.addKillId(MOBS) STARTED.addQuestDrop(OBI,GREY_STAR,1)
if cm_sponsor.isOnline(): sponsor = cm_sponsor.getPlayerInstance() if sponsor: if player.isInsideRadius(sponsor, 1100, 1, 0): enabled = True if st.getInt("cond") == cond and count < max and st.getRandom( 100) < chance and enabled: st.giveItems(item, 1) if count == max - 1: st.set("cond", str(cond + 1)) st.playSound("ItemSound.quest_middle") else: st.playSound("ItemSound.quest_itemget") return QUEST = Quest(123, qn, "The Leader And The Follower") CREATED = State('Start', QUEST) PROGRESS = State('Progress', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(NEWYEAR) QUEST.addTalkId(NEWYEAR) for mob in DROPLIST.keys(): QUEST.addKillId(mob) PROGRESS.addQuestDrop(NEWYEAR, BLOOD, 1) PROGRESS.addQuestDrop(NEWYEAR, LEG, 1)