QUEST.addTalkId(30501) QUEST.addTalkId(30515) QUEST.addTalkId(30565) QUEST.addTalkId(30571) QUEST.addTalkId(30615) QUEST.addTalkId(30616) QUEST.addTalkId(30617) QUEST.addTalkId(30618) QUEST.addTalkId(30619) QUEST.addTalkId(30642) for i in DROPLIST_COND_1.keys()+DROPLIST_COND_4.keys()+DROPLIST_COND_6.keys()+[20778,20779,27086] : QUEST.addKillId(i) STARTED.addQuestDrop(30514,VOKIYANS_ORDER1,1) STARTED.addQuestDrop(20563,MANASHEN_SHARD,1) STARTED.addQuestDrop(20193,TYRANT_TALON,1) STARTED.addQuestDrop(20550,GUARDIAN_BASILISK_FANG,1) STARTED.addQuestDrop(30514,VOKIYANS_ORDER2,1) STARTED.addQuestDrop(30615,SCEPTER_OF_BREKA,1) STARTED.addQuestDrop(30616,SCEPTER_OF_ENKU,1) STARTED.addQuestDrop(30619,SCEPTER_OF_VUKU,1) STARTED.addQuestDrop(30617,SCEPTER_OF_TUREK,1) STARTED.addQuestDrop(30618,SCEPTER_OF_TUNATH,1) STARTED.addQuestDrop(30642,CHIANTAS_ORDER1,1) STARTED.addQuestDrop(30515,MANAKIAS_LETTER1,1) STARTED.addQuestDrop(30515,MANAKIAS_LETTER2,1) STARTED.addQuestDrop(30501,KASMANS_LETTER1,1) STARTED.addQuestDrop(30642,CHIANTAS_ORDER2,1) STARTED.addQuestDrop(30571,TANAPIS_ORDER1,1)
if not st : return if st.getState() != STARTED : return n = st.getRandom(100) if n > 95 : st.giveItems(TARANTULA_SPINNERETTE,1) st.playSound("ItemSound.quest_itemget") elif n > 45 : st.giveItems(TARANTULA_SPIDER_SILK,1) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(296,qn,"Silk Of Tarantula") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30519) QUEST.addTalkId(30519) QUEST.addTalkId(30548) QUEST.addKillId(20394) QUEST.addKillId(20403) QUEST.addKillId(20508) STARTED.addQuestDrop(20508,TARANTULA_SPIDER_SILK,1) STARTED.addQuestDrop(20394,TARANTULA_SPINNERETTE,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)
FAIRY_TREES[i][2] + 70 * pow(-1, j % 2), FAIRY_TREES[i][3] + 70 * pow(-1, k % 2), FAIRY_TREES[i][4]) htmltext = FAIRY_TREES[i][5] return htmltext def onKill(self, npc, player, isPet): return # Quest class and state definition QUEST = Quest(QUEST_NUMBER, str(QUEST_NUMBER) + "_" + QUEST_NAME, QUEST_DESCRIPTION) CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) # Quest NPC starter initialization QUEST.addStartNpc(SG_CRONOS) # Quest initialization QUEST.addTalkId(SG_CRONOS) QUEST.addTalkId(FY_MYMYU) STARTING.addQuestDrop(SG_CRONOS, FT_LEAF, 1) for i in range(4): QUEST.addTalkId(FAIRY_TREES[i][0])
# no longer participate in the party-quest pool for this item) if st.getQuestItemsCount(FLARE_SHARD) == max: st.unset("awaitsFlare") elif st.getQuestItemsCount(FREEZING_SHARD) == max: st.unset("awaitsFreezing") if st.getQuestItemsCount(FLARE_SHARD) == st.getQuestItemsCount( FREEZING_SHARD) == max: st.set("cond", str(cond + 1)) st.playSound("ItemSound.quest_middle") else: st.playSound("ItemSound.quest_itemget") return QUEST = Quest(369, qn, "Collector of Jewels") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(NELL) QUEST.addTalkId(NELL) for mob in DROPLIST_FREEZE.keys(): QUEST.addKillId(mob) for mob in DROPLIST_FLARE.keys(): QUEST.addKillId(mob) STARTED.addQuestDrop(NELL, FLARE_SHARD, 1) STARTED.addQuestDrop(NELL, FREEZING_SHARD, 1)
elif npcId == 30090 and st.getInt("cond")==3 : htmltext = "30090-01.htm" elif npcId == 30090 and st.getInt("cond")==4 : htmltext = "30090-03.htm" elif npcId == 30116 and st.getInt("cond")==5 : htmltext = "30116-01.htm" elif npcId == 30116 and st.getInt("cond")==6 : htmltext = "30116-03.htm" return htmltext QUEST = Quest(47,qn,"Into The Dark Forest") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30097) QUEST.addTalkId(30097) QUEST.addTalkId(30094) QUEST.addTalkId(30090) QUEST.addTalkId(30116) STARTED.addQuestDrop(30097,GALLADUCCIS_ORDER_DOCUMENT_ID_1,1) STARTED.addQuestDrop(30097,GALLADUCCIS_ORDER_DOCUMENT_ID_2,1) STARTED.addQuestDrop(30097,GALLADUCCIS_ORDER_DOCUMENT_ID_3,1) STARTED.addQuestDrop(30094,MAGIC_SWORD_HILT_ID,1) STARTED.addQuestDrop(30090,GEMSTONE_POWDER_ID,1) STARTED.addQuestDrop(30116,PURIFIED_MAGIC_NECKLACE_ID,1)
if st.getRandom(10) < 4 and st.getQuestItemsCount( DARK_BEZOAR_ID) < 13: st.giveItems(DARK_BEZOAR_ID, 1) if st.getQuestItemsCount(DARK_BEZOAR_ID) == 13: st.playSound("ItemSound.quest_middle") else: st.playSound("ItemSound.quest_itemget") return QUEST = Quest(165, qn, "Wild Hunt") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30348) QUEST.addTalkId(30348) QUEST.addKillId(20456) QUEST.addKillId(20529) QUEST.addKillId(20532) QUEST.addKillId(20536) STARTED.addQuestDrop(20529, DARK_BEZOAR_ID, 1) STARTED.addQuestDrop(20532, DARK_BEZOAR_ID, 1) STARTED.addQuestDrop(20536, DARK_BEZOAR_ID, 1) STARTED.addQuestDrop(20456, DARK_BEZOAR_ID, 1)
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)
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)
count = st.getQuestItemsCount(TOP_QUALITY_MEAT) if st.getInt("cond") == 1 and count < 120: chance = 100 * 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(TOP_QUALITY_MEAT, int(numItems)) return QUEST = Quest(631, qn, "Delicious Top Choice Meat") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(TUNATUN) QUEST.addTalkId(TUNATUN) for npcId in range(21460, 21468) + range(21479, 21487) + range(21498, 21506): QUEST.addKillId(npcId) STARTED.addQuestDrop(21460, TOP_QUALITY_MEAT, 1)
st.giveItems(item, 1) if count + 1 >= 65: st.playSound("ItemSound.quest_middle") st.unset(partyCond) else: 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) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) # Quest NPC starter initialization QUEST.addStartNpc(MANAKIA) # Quest initialization QUEST.addTalkId(MANAKIA) QUEST.addTalkId(TORAI) for i in DROPLIST.keys(): QUEST.addKillId(i) STARTING.addQuestDrop(i, DROPLIST[i][0], 1)
w_bil = st.getQuestItemsCount(WINDSUS_BILE1) if h_egg ==30 and m_ven == 30 and w_bil == 30: st.set("cond",str(cond+1)) else: st.set("cond",str(cond+1)) else: st.giveItems(itemid,1) st.playSound("Itemsound.quest_itemget") return QUEST = Quest(223,qn,"Test Of Champion") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30624) QUEST.addTalkId(30624) for npcId in [30093,30196,30625]: QUEST.addTalkId(npcId) for mobId in [20145,20158,27088,27089,20551,20553,20577,20578,20579,20580,20581,20582,20780]: QUEST.addKillId(mobId) for item in range(3277,3293): STARTED.addQuestDrop(30093,item,1)
if partyMember2: if Rnd.get(2): partyMember = partyMember2 st = partyMember.getQuestState(qn) if not st: return if st.getState() != STARTED: return count = st.getQuestItemsCount(SPINNERET) if count < 10: st.giveItems(SPINNERET, 1) if count == 9: st.playSound("ItemSound.quest_middle") st.set("cond", "5") else: st.playSound("ItemSound.quest_itemget") return QUEST = Quest(34, qn, "In Search of Clothes") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30088) QUEST.addTalkId(30088) QUEST.addTalkId(30165) QUEST.addTalkId(30294) QUEST.addKillId(20560) STARTED.addQuestDrop(20560, SPINNERET, 1)
st = player.getQuestState(qn) if st: if npcId == SOUL_OF_WELL: self.well = 0 elif npcId in MOBS: if st.getRandom(10) < 1 and st.getQuestItemsCount(SKULL) < 1: st.giveItems(SKULL, 1) st.playSound("ItemSound.quest_itemget") st.set("cond", "5") return QUEST = Quest(22, qn, "Tragedy In Von Hellmann Forest") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(INNOCENTIN) QUEST.addStartNpc(TIFAREN) for npcid in NPCS: QUEST.addTalkId(npcid) for item in range(7141, 7148): STARTED.addQuestDrop(INNOCENTIN, item, 1) QUEST.addAttackId(SOUL_OF_WELL) for mobid in MOBS + [SOUL_OF_WELL]: QUEST.addKillId(mobid)
id = st.getState() cond = st.getInt("cond") if id == CREATED: st.set("cond", "0") if npcId == FUNDIN and cond == 0: if id == COMPLETED: htmltext = "<html><body>This quest has already been completed.</body></html>" elif player.getLevel() < 74: htmltext = "31274-1.htm" st.exitQuest(1) elif player.getLevel() >= 74: htmltext = "31274-0.htm" elif npcId == FUNDIN and cond == 1: htmltext = "31274-2.htm" elif npcId == VULCAN and cond == 1 and id == STARTED: htmltext = "31539-0.htm" return htmltext QUEST = Quest(13, qn, "Parcel Delivery") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(31274) QUEST.addTalkId(31274) QUEST.addTalkId(31539) STARTED.addQuestDrop(31539, PACKAGE, 1)
def onKill(self, npc, player, isPet): st = player.getQuestState(qn) if not st: return if st.getState() != STARTED: return st.giveItems(SUPPLY_ITEM, 1) if st.getRandom(10) == 1: # % chance is custom st.giveItems(SUSPICIOUS_DOCUMENT, 1) if st.getQuestItemsCount(SUSPICIOUS_DOCUMENT) == 5: st.takeItems(SUSPICIOUS_DOCUMENT, 5) st.giveItems(RECIPE_OF_SUPPLY, 1) st.playSound("ItemSound.quest_itemget") st.playSound("ItemSound.quest_itemget") return QUEST = Quest(360, qn, "Plunder Their Supplies") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(COLEMAN) QUEST.addTalkId(COLEMAN) QUEST.addKillId(TAIK_SEEKER) QUEST.addKillId(TAIK_LEADER) STARTED.addQuestDrop(COLEMAN, RECIPE_OF_SUPPLY, 1) STARTED.addQuestDrop(COLEMAN, SUPPLY_ITEM, 1) STARTED.addQuestDrop(COLEMAN, SUSPICIOUS_DOCUMENT, 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(118, qn, "To Lead And Be Led") CREATED = State('Start', QUEST) PROGRESS = State('Progress', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(PINTER) QUEST.addTalkId(PINTER) for mob in DROPLIST.keys(): QUEST.addKillId(mob) PROGRESS.addQuestDrop(PINTER, BLOOD, 1) PROGRESS.addQuestDrop(PINTER, LEG, 1)
else: htmltext = "30361-05.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(100) < 50: st.giveItems(WIND_SHARD, 1) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(317, qn, "Catch The Wind") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30361) QUEST.addTalkId(30361) QUEST.addKillId(20036) QUEST.addKillId(20044) STARTED.addQuestDrop(20036, WIND_SHARD, 1)
st = player.getQuestState(qn) if not st : return if st.getState() != STARTED : return item=ORC_NECKLACE if npc.getNpcId() == 20385 : item = ORC_AMULET if st.getRandom(10)>4 : st.giveItems(item,1) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(263,qn,"Kill All Sylphs1") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30346) QUEST.addTalkId(30346) QUEST.addKillId(20385) QUEST.addKillId(20386) QUEST.addKillId(20387) QUEST.addKillId(20388) STARTED.addQuestDrop(20385,ORC_AMULET,1) STARTED.addQuestDrop(20386,ORC_NECKLACE,1)
QUEST.addKillId(20156) QUEST.addKillId(20168) QUEST.addKillId(20200) QUEST.addKillId(20201) QUEST.addKillId(20202) QUEST.addKillId(20223) QUEST.addKillId(20267) QUEST.addKillId(20268) QUEST.addKillId(20269) QUEST.addKillId(20270) QUEST.addKillId(20271) QUEST.addKillId(20079) QUEST.addKillId(20080) QUEST.addKillId(20081) QUEST.addKillId(20083) STARTED.addQuestDrop(30283,RP_JOURNEYMAN_RING_ID,1) STARTED.addQuestDrop(30283,ALLTRANS_INSTRUCTIONS_ID,1) STARTED.addQuestDrop(30283,RP_JOURNEYMAN_RING_ID,1) STARTED.addQuestDrop(30103,VALKONS_RECOMMEND_ID,1) STARTED.addQuestDrop(20223,MANDRAGORA_BERRY_ID,1) STARTED.addQuestDrop(30283,ALLTRANS_RECOMMEND1_ID,1) STARTED.addQuestDrop(20267,DUNINGS_KEY_ID,1) STARTED.addQuestDrop(30210,NORMANS_INSTRUCTIONS_ID,1) STARTED.addQuestDrop(30210,NORMANS_LIST_ID,1) STARTED.addQuestDrop(30210,NORMANS_RECEIPT_ID,1) STARTED.addQuestDrop(30283,ALLTRANS_RECOMMEND2_ID,1) STARTED.addQuestDrop(30298,PINTERS_INSTRUCTIONS_ID,1) STARTED.addQuestDrop(30298,RP_AMBER_BEAD_ID,1) STARTED.addQuestDrop(20079,AMBER_BEAD_ID,1) STARTED.addQuestDrop(30688,DUNINGS_INSTRUCTIONS_ID,1)
QUEST.addKillId(20157) QUEST.addKillId(20158) QUEST.addKillId(20192) QUEST.addKillId(20193) QUEST.addKillId(20202) QUEST.addKillId(20230) QUEST.addKillId(20232) QUEST.addKillId(20233) QUEST.addKillId(20234) QUEST.addKillId(20270) QUEST.addKillId(27079) QUEST.addKillId(20554) QUEST.addKillId(20582) QUEST.addKillId(20600) STARTED.addQuestDrop(30614, ALDERS_SKULL1_ID, 1) STARTED.addQuestDrop(30476, KAIRAS_INSTRUCTIONS_ID, 1) STARTED.addQuestDrop(30210, REVELATIONS_MANUSCRIPT_ID, 1) STARTED.addQuestDrop(30476, KAIRAS_LETTER1_ID, 1) STARTED.addQuestDrop(20144, KASANDRAS_REMAINS_ID, 1) STARTED.addQuestDrop(30463, BELLADONNA_ID, 1) STARTED.addQuestDrop(30614, HERBALISM_TEXTBOOK_ID, 1) STARTED.addQuestDrop(30463, IXIAS_LIST_ID, 1) STARTED.addQuestDrop(20158, MEDUSA_ICHOR_ID, 1) STARTED.addQuestDrop(20192, TYRANTS_BLOOD_ID, 1) STARTED.addQuestDrop(20233, M_SPIDER_FLUIDS_ID, 1) STARTED.addQuestDrop(20202, DEAD_SEEKER_DUNG_ID, 1) STARTED.addQuestDrop(20230, NIGHTSHADE_ROOT_ID, 1) STARTED.addQuestDrop(30476, ALDERS_SKULL2_ID, 1) STARTED.addQuestDrop(30114, ALDERS_RECEIPT_ID, 1) STARTED.addQuestDrop(30476, KAIRAS_RECOMMEND_ID, 1)
QUEST = Quest(418, qn, "Path To Artisan") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30527) QUEST.addTalkId(30527) QUEST.addTalkId(30298) QUEST.addTalkId(30317) QUEST.addKillId(20017) QUEST.addKillId(20389) QUEST.addKillId(20390) STARTED.addQuestDrop(30527, SILVERYS_RING, 1) STARTED.addQuestDrop(20389, RATMAN_TOOTH, 1) STARTED.addQuestDrop(20390, BIG_RATMAN_TOOTH, 1) STARTED.addQuestDrop(30527, PASS_1ST, 1) STARTED.addQuestDrop(30298, PASS_2ND, 1) STARTED.addQuestDrop(30298, SECRET_BOX2, 1) STARTED.addQuestDrop(30527, PASS_1ST, 1) STARTED.addQuestDrop(30298, PASS_2ND, 1) STARTED.addQuestDrop(30298, SECRET_BOX2, 1) STARTED.addQuestDrop(30317, KLUTOS_LETTER, 1) STARTED.addQuestDrop(20017, SECRET_BOX1, 1) STARTED.addQuestDrop(30298, FOOTPRINT, 1)
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) STARTED.addQuestDrop(30130,UNDRES_LETTER_ID,1)
return QUEST = Quest(401, qn, "Path To Warrior") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30010) QUEST.addTalkId(30010) QUEST.addTalkId(30253) QUEST.addKillId(20035) QUEST.addKillId(20038) QUEST.addKillId(20042) QUEST.addKillId(20043) STARTED.addQuestDrop(30253, SIMPLONS_LETTER, 1) STARTED.addQuestDrop(30253, RUSTED_BRONZE_SWORD2, 1) STARTED.addQuestDrop(30010, EINS_LETTER, 1) STARTED.addQuestDrop(30253, WARRIOR_GUILD_MARK, 1) STARTED.addQuestDrop(20035, RUSTED_BRONZE_SWORD1, 1) STARTED.addQuestDrop(20042, RUSTED_BRONZE_SWORD1, 1) STARTED.addQuestDrop(20043, POISON_SPIDER_LEG2, 1) STARTED.addQuestDrop(20038, POISON_SPIDER_LEG2, 1) STARTED.addQuestDrop(30010, RUSTED_BRONZE_SWORD3, 1)
htmltext = "30350-03.htm" else: htmltext = "30350-02.htm" st.exitQuest(1) elif cond == 1 and collette : htmltext = "30350-05.htm" elif id == STARTED : if npcId == HAPROCK : if cond == 1 and collette : htmltext = "30255-01.htm" elif cond == 2 and norman : htmltext = "30255-05.htm" elif npcId == NORMAN and cond == 2 and norman : htmltext = "30210-01.htm" return htmltext QUEST = Quest(167,qn,"Dwarven Kinship") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(COLLETTE) QUEST.addTalkId(COLLETTE) QUEST.addTalkId(NORMAN) QUEST.addTalkId(HAPROCK) STARTED.addQuestDrop(NORMAN,COLLETTE_LETTER,1) STARTED.addQuestDrop(NORMAN,NORMANS_LETTER,1)
if cond == 10 and not st.getQuestItemsCount(HAIR_OF_NAHIR): st.giveItems(HAIR_OF_NAHIR, 1) st.set("cond", "11") st.playSound("ItemSound.quest_middle") elif npcId == 27118: if cond == 13 and not st.getQuestItemsCount(DEBRIS_OF_WILLOW): if not st.getRandom(5): st.giveItems(DEBRIS_OF_WILLOW, 1) st.set("cond", "14") st.playSound("ItemSound.quest_middle") return QUEST = Quest(215, qn, "Trial Of Pilgrim") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30648) for npcId in [ 30648, 30036, 30117, 30362, 30550, 30571, 30612, 30649, 30650, 30651, 30652 ]: for itemId in range(2721, 2734): QUEST.addTalkId(npcId) STARTED.addQuestDrop(npcId, itemId, 1) for mobId in range(27116, 27119): QUEST.addKillId(mobId)
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)
if npcId == 20085 : if n<5 : st.giveItems(GOLEM_HEARTSTONE,1) st.playSound("ItemSound.quest_itemget") elif n<58 : st.giveItems(BROKEN_HEARTSTONE,1) st.playSound("ItemSound.quest_itemget") elif npcId == 20083 : if n<6 : st.giveItems(GOLEM_HEARTSTONE,1) st.playSound("ItemSound.quest_itemget") elif n<56 : st.giveItems(BROKEN_HEARTSTONE,1) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(329,qn,"Curiosity Of Dwarf") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30437) QUEST.addTalkId(30437) QUEST.addKillId(20083) QUEST.addKillId(20085) STARTED.addQuestDrop(20085,BROKEN_HEARTSTONE,1) STARTED.addQuestDrop(20085,GOLEM_HEARTSTONE,1)
st = partyMember.getQuestState(qn) numItems, chance = divmod(DROP_RATE,MAX) if st.getRandom(MAX) < chance : numItems = numItems + 1 if int(numItems) != 0 : st.giveItems(ANC_SCROLL,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) STARTING = State('Starting', 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) QUEST.addTalkId(WF_CLIFF) for i in MOBS : QUEST.addKillId(i) STARTED.addQuestDrop(HR_SOBLING,DICT1,1) STARTED.addQuestDrop(HR_SOBLING,MST_BK,1)
STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30421) QUEST.addTalkId(30421) QUEST.addTalkId(30415) QUEST.addTalkId(30418) QUEST.addTalkId(30419) QUEST.addKillId(20015) QUEST.addKillId(20022) QUEST.addKillId(20045) QUEST.addKillId(20517) QUEST.addKillId(20518) STARTED.addQuestDrop(30418,SEEDS_OF_HORROR,1) STARTED.addQuestDrop(30415,SEEDS_OF_ANGER,1) STARTED.addQuestDrop(30419,SEEDS_OF_LUNACY,1) STARTED.addQuestDrop(30421,SEEDS_OF_DESPAIR,1) STARTED.addQuestDrop(20045,HEART_OF_LUNACY,1) STARTED.addQuestDrop(30419,HUB_SCENT,1) STARTED.addQuestDrop(20015,FAMILYS_ASHES,1) STARTED.addQuestDrop(30415,LUCKY_KEY,1) STARTED.addQuestDrop(30418,CANDLE,1) STARTED.addQuestDrop(20517,KNEE_BONE,1) STARTED.addQuestDrop(20518,KNEE_BONE,1) STARTED.addQuestDrop(20022,KNEE_BONE,1)