def onKill(self, npc, player, isPet): st = player.getQuestState(qn) if not st: return if st.getState() != STARTED: return npcId = npc.getNpcId() if npcId == 27021: st.set("id", "0") if st.getInt("cond") == 1 and st.getQuestItemsCount( KIRUNAK_SKULL_ID) == 0: st.giveItems(KIRUNAK_SKULL_ID, 1) st.playSound("ItemSound.quest_middle") return QUEST = Quest(164, qn, "Blood Fiend") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30149) QUEST.addTalkId(30149) QUEST.addKillId(27021) STARTED.addQuestDrop(27021, KIRUNAK_SKULL_ID, 1)
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) QUEST.addKillId(20359) QUEST.addKillId(27030) STARTED.addQuestDrop(20359, KEY_OF_FLAME, 1) STARTED.addQuestDrop(30411, MAP_OF_LUSTER, 1) STARTED.addQuestDrop(30410, WIND_FEATHER, 1) STARTED.addQuestDrop(30412, BROKEN_BRONZE_MIRROR, 1) STARTED.addQuestDrop(27030, SPARKLE_PEBBLE, 1) STARTED.addQuestDrop(30413, RAMAS_DIARY, 1) STARTED.addQuestDrop(20021, RED_SOIL, 1) STARTED.addQuestDrop(30409, RUST_GOLD_COIN, 1) STARTED.addQuestDrop(30411, FLAME_EARING, 1) STARTED.addQuestDrop(30412, WIND_BANGEL, 1) STARTED.addQuestDrop(30413, WATER_NECKLACE, 1) STARTED.addQuestDrop(30409, EARTH_RING, 1)
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)
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) STARTED.addQuestDrop(ALVAH, RANGERS_REPORT2, 1) STARTED.addQuestDrop(ALVAH, RANGERS_REPORT3, 1) STARTED.addQuestDrop(ALVAH, RANGERS_REPORT4, 1) STARTED.addQuestDrop(ALVAH, OL_MAHUM_HEAD, 1) STARTED.addQuestDrop(ALVAH, CARGOBOX, 1) STARTED.addQuestDrop(ALVAH, TYRAS_BILL, 1) STARTED.addQuestDrop(ALVAH, CERTIFICATE, 1) STARTED.addQuestDrop(ALVAH, BLADE_MOLD, 1) STARTED.addQuestDrop(ALVAH, WEAPON_TRADE_CONTRACT, 1) for i in range(20494, 20500) + [20062, 20066, 20438]: QUEST.addKillId(i)
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)
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)
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) STARTED.addQuestDrop(20468, ORC_AMULET, 1) STARTED.addQuestDrop(20472, ORC_NECKLACE, 1)
QUEST.addTalkId(30585) QUEST.addTalkId(30502) QUEST.addTalkId(30592) QUEST.addTalkId(30593) QUEST.addKillId(20335) QUEST.addKillId(20038) QUEST.addKillId(20415) QUEST.addKillId(20043) QUEST.addKillId(20478) QUEST.addKillId(20479) QUEST.addKillId(27056) STARTED.addQuestDrop(30592, TOTEM_SPIRIT_CLAW, 1) STARTED.addQuestDrop(30585, FIRE_CHARM, 1) STARTED.addQuestDrop(20479, KASHA_BEAR_PELT, 1) STARTED.addQuestDrop(20478, KASHA_BSPIDER_HUSK, 1) STARTED.addQuestDrop(20415, FIERY_EGG1, 1) STARTED.addQuestDrop(30585, HESTUI_MASK, 1) STARTED.addQuestDrop(30585, FIERY_EGG2, 1) STARTED.addQuestDrop(30585, TATARUS_LETTER, 1) STARTED.addQuestDrop(30502, FLAME_CHARM, 1) STARTED.addQuestDrop(20335, GRIZZLY_BLOOD, 1) STARTED.addQuestDrop(30593, TOTEM_SPIRIT_BLOOD, 1) STARTED.addQuestDrop(30502, BLOOD_CAULDRON, 1) STARTED.addQuestDrop(27056, BOUND_DURKA_SPIRIT, 1) STARTED.addQuestDrop(20038, DURKA_PARASITE, 1) STARTED.addQuestDrop(20043, DURKA_PARASITE, 1) STARTED.addQuestDrop(30593, SPIRIT_NET, 1)
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)
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)
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 == 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)
if st: if st.getState() == STARTED: count = st.getQuestItemsCount(EYE_OF_DARKNESS) chance = CHANCE[npc.getNpcId()] * Config.RATE_DROP_QUEST numItems, chance = divmod(chance, 100) if st.getInt("cond") == 1: if st.getRandom(100) < chance: numItems = numItems + 1 if count + numItems >= 100: numItems = 100 - count st.playSound("ItemSound.quest_middle") st.set("cond", "2") else: st.playSound("ItemSound.quest_itemget") st.giveItems(EYE_OF_DARKNESS, int(numItems)) return QUEST = Quest(602, qn, "Shadow Of Light") 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, EYE_OF_DARKNESS, 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) STARTED.addQuestDrop(30130, UNDRES_LETTER_ID, 1)
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: QUEST.addKillId(mobId) for item in range(2880,2915): PART2.addQuestDrop(30510,item,1)
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.addKillId(20047) STARTED.addQuestDrop(30414,ROGELLIAS_LETTER,1) STARTED.addQuestDrop(20466,RED_DOWN,1) STARTED.addQuestDrop(30157,CHARM_OF_GRAIN,1) STARTED.addQuestDrop(30414,APPETIZING_APPLE,1) STARTED.addQuestDrop(20019,GOLD_LEAVES,1) STARTED.addQuestDrop(30371,SAP_OF_WORLD_TREE,1) STARTED.addQuestDrop(30414,IMMORTAL_LOVE,1) STARTED.addQuestDrop(20047,AMETHYST,1) STARTED.addQuestDrop(30423,LUCKY_POTPOURI,1) STARTED.addQuestDrop(30157,MAGICAL_POWERS_RUBY,1) STARTED.addQuestDrop(30371,PURE_AQUAMARINE,1) STARTED.addQuestDrop(30423,NOBILITY_AMETHYST,1) STARTED.addQuestDrop(30414,FERTILITY_PERIDOT,1)
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)
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)
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)
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)
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)
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) QUEST.addKillId(27035) STARTED.addQuestDrop(30428, MONEY_OF_SWINDLER, 1) STARTED.addQuestDrop(30424, DAIRY_OF_ALLANA, 1) STARTED.addQuestDrop(27032, LIZARD_CAPTAIN_ORDER, 1) STARTED.addQuestDrop(27033, LIZARD_CAPTAIN_ORDER, 1) STARTED.addQuestDrop(27034, LIZARD_CAPTAIN_ORDER, 1) STARTED.addQuestDrop(30293, CRYSTAL_MEDALLION, 1) STARTED.addQuestDrop(30424, HALF_OF_DAIRY, 1) STARTED.addQuestDrop(27035, TAMATOS_NECKLACE, 1)
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)
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): PROGRESS.addQuestDrop(27181, i, 1)
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)
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)
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) QUEST.addKillId(SECRET_KEEPER_TREE) for mob in DROPLIST.keys(): QUEST.addKillId(mob) STARTED.addQuestDrop(mob, DROPLIST[mob][0], 1) QUEST.addKillId(SUCCUBUS_OF_SEDUCTION) QUEST.addKillId(GRIMA) QUEST.addKillId(SANCHES) QUEST.addKillId(RAMSEBALIUS) QUEST.addKillId(BONAPARTERIUS) QUEST.addKillId(GREAT_DEMON_KING) for item in range(3678, 3683): STARTED.addQuestDrop(ALCHEMIST_MATILD, item, 1)
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) QUEST.addTalkId(KASSANDRA) QUEST.addTalkId(OGMAR) QUEST.addKillId(BARAHAM) QUEST.addKillId(20244) QUEST.addKillId(20245) QUEST.addKillId(20283) QUEST.addKillId(21508) QUEST.addKillId(21509) QUEST.addKillId(21510) QUEST.addKillId(21511) QUEST.addKillId(21512) STARTED.addQuestDrop(BARAHAM, LEGEND_OF_SEVENTEEN, 1) STARTED.addQuestDrop(BARAHAM, MALRUK_SUCCUBUS_CLAW, 1) STARTED.addQuestDrop(BARAHAM, ECHO_CRYSTAL, 1) STARTED.addQuestDrop(BARAHAM, POETRY_BOOK, 1) STARTED.addQuestDrop(BARAHAM, CRIMSON_MOSS, 1) STARTED.addQuestDrop(BARAHAM, RAHORAKTIS_MEDICINE, 1) STARTED.addQuestDrop(BARAHAM, VIRGILS_LETTER, 1)
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)
st.takeItems(POETRY_BOOK,-1) st.giveItems(GREENIS_LETTER,1) st.set("cond","5") st.set("id","5") st.playSound("ItemSound.quest_middle") elif npcId == GREENIS and st.getQuestItemsCount(GREENIS_LETTER) : htmltext = "30157-03.htm" elif npcId == GREENIS and (st.getQuestItemsCount(ARUJIENS_LETTER1) or st.getQuestItemsCount(ARUJIENS_LETTER2) or st.getQuestItemsCount(ARUJIENS_LETTER3)) : htmltext = "30157-01.htm" return htmltext QUEST = Quest(2,qn,"What Women Want") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(ARUJIEN) QUEST.addTalkId(ARUJIEN) QUEST.addTalkId(MIRABEL) QUEST.addTalkId(HERBIEL) QUEST.addTalkId(GREENIS) QUEST.addTalkId(ARUJIEN) STARTED.addQuestDrop(ARUJIEN,GREENIS_LETTER,1) STARTED.addQuestDrop(ARUJIEN,ARUJIENS_LETTER3,1) STARTED.addQuestDrop(ARUJIEN,ARUJIENS_LETTER1,1) STARTED.addQuestDrop(ARUJIEN,ARUJIENS_LETTER2,1) STARTED.addQuestDrop(ARUJIEN,POETRY_BOOK,1)