st = player.getQuestState(qn) if not st: return if st.getState() != STARTED: return count = st.getQuestItemsCount(BONE_FRAGMENT) if count < 10 and st.getRandom(10) > 7: st.giveItems(BONE_FRAGMENT, 1) if count == 9: st.playSound("ItemSound.quest_middle") st.set("cond", "2") else: st.playSound("ItemSound.quest_itemget") return QUEST = Quest(320, qn, "Bones Tell Future") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30359) QUEST.addTalkId(30359) QUEST.addKillId(20517) QUEST.addKillId(20518) STARTED.addQuestDrop(20517, BONE_FRAGMENT, 1)
else : htmltext = "32052-2a.htm" return htmltext def onKill(self,npc,player,isPet): st = player.getQuestState(qn) if st : if st.getState() == STARTED : count = st.getQuestItemsCount(THIEF_GUILD_MARK) if st.getInt("cond") == 1 and count < 200 and st.getRandom(100)<DROP_CHANCE : st.giveItems(THIEF_GUILD_MARK,1) if count == 199 : st.playSound("ItemSound.quest_middle") st.set("cond","2") else: st.playSound("ItemSound.quest_itemget") return QUEST = Quest(649,qn,"A Looter and a Railroad Man") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(OBI) QUEST.addTalkId(OBI) for BANDITS in [22017,22018,22019,22021,22022,22023,22024,22026]: QUEST.addKillId(BANDITS) STARTED.addQuestDrop(OBI,THIEF_GUILD_MARK,1)
QUEST.addTalkId(30519) QUEST.addTalkId(30531) QUEST.addTalkId(30532) QUEST.addTalkId(30533) QUEST.addTalkId(30534) QUEST.addTalkId(30535) QUEST.addTalkId(30536) QUEST.addTalkId(30553) QUEST.addTalkId(30554) QUEST.addTalkId(30555) QUEST.addTalkId(30556) QUEST.addTalkId(30597) QUEST.addTalkId(30620) QUEST.addTalkId(30621) QUEST.addTalkId(30622) QUEST.addKillId(20154) QUEST.addKillId(20155) QUEST.addKillId(20156) QUEST.addKillId(20157) QUEST.addKillId(20223) QUEST.addKillId(20228) QUEST.addKillId(20230) QUEST.addKillId(20231) QUEST.addKillId(20232) QUEST.addKillId(20233) QUEST.addKillId(20234) for item in range(3239,3276)+[3428,3023,3030]: STARTED.addQuestDrop(30621,item,1)
#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 player in partyMembers: pst = player.getQuestState(qn) if pst: giveReward(pst, npc) else: pst = player.getQuestState(qn) if pst: giveReward(pst, npc) return QUEST = Quest(613, qn, "Prove Your Courage!") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(Ashas) QUEST.addTalkId(Ashas) STARTED.addQuestDrop(Hekaton, Hekaton_Head, 1) QUEST.addKillId(Hekaton)
return QUEST = Quest(171,qn,"Acts of Evil") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(ALVAH) QUEST.addTalkId(ALVAH) QUEST.addTalkId(ARODIN) QUEST.addTalkId(TYRA) QUEST.addTalkId(ROLENTO) QUEST.addTalkId(NETI) QUEST.addTalkId(BURAI) STARTED.addQuestDrop(ALVAH,RANGERS_REPORT1,1) 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.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 = "31545-0.htm" elif npcId == 31546 and cond == 4 and st.getQuestItemsCount( BOILED_EGGS): htmltext = "31546-0.htm" elif npcId == 31547 and cond == 5 and st.getQuestItemsCount( BOILED_EGGS): htmltext = "31547-0.htm" elif npcId == 31521 and cond == 6 and st.getQuestItemsCount( FEE_OF_EGGS) == 5: htmltext = "31521-2.htm" # elif npcId == 31521 and cond == 7 and st.getQuestItemsCount(FEE_OF_EGGS) == 5 : # htmltext = "31521-4.htm" # elif npcId == 31584 and cond == 7 and st.getQuestItemsCount(FEE_OF_EGGS) == 5 : #htmltext = "31584-1.htm" return htmltext QUEST = Quest(621, qn, "Egg Delivery") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(31521) QUEST.addTalkId(31521) for i in range(31543, 31548) + [31521, 31584]: QUEST.addTalkId(i) STARTED.addQuestDrop(31521, BOILED_EGGS, 1) STARTED.addQuestDrop(31521, FEE_OF_EGGS, 1)
def onKill(self, npc, player, isPet): st = player.getQuestState(qn) if not st: return if st.getState() != STARTED: return if not st.getQuestItemsCount(POISON_SAC) and st.getInt("cond") == 1: if st.getRandom(5) == 0: st.giveItems(POISON_SAC, 1) st.playSound("ItemSound.quest_middle") st.set("cond", "2") return QUEST = Quest(151, qn, "Save My Sister1") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30050) QUEST.addTalkId(30050) QUEST.addTalkId(30032) for mob in [20103, 20106, 20108]: QUEST.addKillId(mob) STARTED.addQuestDrop(30032, FEVER_MEDICINE, 1) STARTED.addQuestDrop(20108, POISON_SAC, 1)
QUEST.addTalkId(30078) QUEST.addTalkId(30461) QUEST.addKillId(20147) QUEST.addKillId(20154) QUEST.addKillId(20155) QUEST.addKillId(20156) QUEST.addKillId(20204) QUEST.addKillId(20223) QUEST.addKillId(20226) QUEST.addKillId(20228) QUEST.addKillId(20229) QUEST.addKillId(20265) QUEST.addKillId(20266) STARTED.addQuestDrop(30469, INGREDIENT_LIST_ID, 1) STARTED.addQuestDrop(30062, RED_MANDRAGORA_SAP_ID, 1) STARTED.addQuestDrop(30062, WHITE_MANDRAGORA_SAP_ID, 1) STARTED.addQuestDrop(30073, HONEY_ID, 1) STARTED.addQuestDrop(30073, GOLDEN_HONEY_ID, 1) STARTED.addQuestDrop(30078, DIONIAN_POTATO_ID, 1) STARTED.addQuestDrop(30067, GREEN_MOSS_BUNDLE_ID, 1) STARTED.addQuestDrop(30067, BROWN_MOSS_BUNDLE_ID, 1) STARTED.addQuestDrop(30069, MONSTER_EYE_MEAT_ID, 1) STARTED.addQuestDrop(30461, MIRIENS_REVIEW1_ID, 1) STARTED.addQuestDrop(30461, MIRIENS_REVIEW2_ID, 1) STARTED.addQuestDrop(30461, MIRIENS_REVIEW3_ID, 1) STARTED.addQuestDrop(30461, MIRIENS_REVIEW4_ID, 1) STARTED.addQuestDrop(30461, MIRIENS_REVIEW5_ID, 1) STARTED.addQuestDrop(30469, JONAS_STEAK_DISH1_ID, 1) STARTED.addQuestDrop(30469, JONAS_STEAK_DISH2_ID, 1)
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 npcId == 27016 : st.set("id","0") if st.getInt("cond") != 0 and st.getQuestItemsCount(CLAY_TABLET_ID) == 0 : st.giveItems(CLAY_TABLET_ID,1) st.playSound("ItemSound.quest_middle") return QUEST = Quest(158,qn,"Seed Of Evil") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30031) QUEST.addTalkId(30031) QUEST.addKillId(27016) STARTED.addQuestDrop(27016,CLAY_TABLET_ID,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)
st.giveItems(FELIM_TOOTH,1) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(415,qn,"Path To Orc Monk") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30587) QUEST.addTalkId(30587) QUEST.addTalkId(30501) QUEST.addTalkId(30590) QUEST.addTalkId(30591) QUEST.addKillId(20014) QUEST.addKillId(20017) QUEST.addKillId(20024) QUEST.addKillId(20359) QUEST.addKillId(20415) QUEST.addKillId(20478) QUEST.addKillId(20479) for item in range(1593,1615): STARTED.addQuestDrop(30587,item,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(48,qn,"To The Immortal Plateau") 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)
ABYSS_RUNESTONE1_ID) + st.getQuestItemsCount( ABYSS_RUNESTONE2_ID ) + st.getQuestItemsCount( ABYSS_RUNESTONE3_ID ) + st.getQuestItemsCount( ABYSS_RUNESTONE4_ID) == 4: st.set("cond", str(cond + 1)) return else: st.set("cond", str(cond + 1)) else: st.playSound("Itemsound.quest_itemget") return QUEST = Quest(213, qn, "Trial Of Seeker") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(NPCS[0]) for npcId in NPCS: for i in range(2647, 2674): QUEST.addTalkId(npcId) STARTED.addQuestDrop(npcId, i, 1) for mobId in MOBS: QUEST.addKillId(mobId)
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)
count = st.getQuestItemsCount(KASHA_WOLF_FANG) if count < 50 : numItems, chance = divmod(125*Config.RATE_DROP_QUEST,100) if st.getRandom(100) <= chance : numItems += 1 numItems = int(numItems) if numItems != 0 : if 50 <= (count + numItems) : numItems = 50 - count st.playSound("ItemSound.quest_middle") st.set("cond","2") else: st.playSound("ItemSound.quest_itemget") st.giveItems(KASHA_WOLF_FANG,numItems) return QUEST = Quest(271,qn,"Proof Of Valor") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) # kept just for backwards compatibility STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30577) QUEST.addTalkId(30577) QUEST.addKillId(20475) STARTED.addQuestDrop(20475,KASHA_WOLF_FANG,1)
st = player.getQuestState(qn) if not st: return if st.getState() != STARTED: return count = st.getQuestItemsCount(GRAVE_ROBBERS_HEAD) if count < 50: st.giveItems(GRAVE_ROBBERS_HEAD, 1) if count < 49: st.playSound("ItemSound.quest_itemget") else: st.playSound("ItemSound.quest_middle") st.set("cond", "2") return QUEST = Quest(272, qn, "Wrath Of Ancestors") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30572) QUEST.addTalkId(30572) QUEST.addKillId(20319) QUEST.addKillId(20320) STARTED.addQuestDrop(20319, GRAVE_ROBBERS_HEAD, 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)
st.playSound("ItemSound.quest_itemget") return QUEST = Quest(422, qn, "Repent your Sins") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30981) QUEST.addTalkId(30981) QUEST.addTalkId(30668) QUEST.addTalkId(30597) QUEST.addTalkId(30612) QUEST.addTalkId(30718) QUEST.addTalkId(30300) QUEST.addKillId(SCAVENGER_WERERAT) QUEST.addKillId(TUREK_WARHOUND) QUEST.addKillId(TYRANT_KINGPIN) QUEST.addKillId(TRISALIM_TARANTULA) STARTED.addQuestDrop(SCAVENGER_WERERAT, SCAVENGER_WERERAT_SKULL, 1) STARTED.addQuestDrop(TUREK_WARHOUND, TUREK_WARHOUND_TAIL, 1) STARTED.addQuestDrop(TYRANT_KINGPIN, TYRANT_KINGPIN_HEART, 1) STARTED.addQuestDrop(TRISALIM_TARANTULA, TRISALIM_TARANTULAS_VENOM_SAC, 1) STARTED.addQuestDrop(30981, MANUAL_OF_MANACLES, 1) STARTED.addQuestDrop(30981, PENITENTS_MANACLES, 1) STARTED.addQuestDrop(30981, PENITENTS_MANACLES2, 1) STARTED.addQuestDrop(30300, PENITENTS_MANACLES1, 1)
chance = Chance[npcId] #This is support for quest 606: War With Varka Silenos. Basically, if the person has both this quest and 606, then they only get one quest item, 50% chance for 606 quest item and 50% chance for this quest's item if st2: if (st.getRandom(2) == 1 or item == 0) and npcId in Chance_mane.keys(): item = 57 MAX = 100 drop = Mane chance = Chance_mane[npcId] giveReward(st, item, chance, MAX, drop) elif id == 2 and item != 0: giveReward(st, item, chance, MAX, drop) elif id == 2 and item != 0: giveReward(st, item, chance, MAX, drop) return QUEST = Quest(605, qn, "Alliance With Ketra Orcs") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(Wahkan) QUEST.addTalkId(Wahkan) for mobId in Chance.keys(): QUEST.addKillId(mobId) STARTED.addQuestDrop(Wahkan, Varka_Badge_Soldier, 1) STARTED.addQuestDrop(Wahkan, Varka_Badge_Officer, 1) STARTED.addQuestDrop(Wahkan, Varka_Badge_Captain, 1)
questState = partyPlayer.getQuestState(qn) if questState and (questState .getState() == STARTED): PartyQuestMembers.append(partyPlayer) if len(PartyQuestMembers) > 0 : for partyPlayer in PartyQuestMembers: questState = partyPlayer.getQuestState(qn) if questState.getRandom(100) >= 10: numItems = 0 if numItems > 0 : questState.giveItems(DIMENSION_FRAGMENT_ID,numItems) questState.playSound("ItemSound.quest_itemget") return QUEST = Quest(634, qn, "In Search of Dimensional Fragments") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) for npcId in range(31494,31508): QUEST.addTalkId(npcId) QUEST.addStartNpc(npcId) for mobs in range(21208,21256): QUEST.addKillId(mobs) STARTED.addQuestDrop(7079,DIMENSION_FRAGMENT_ID,1)
elif not partyMember1: partyMember = partyMember2 else: if Rnd.get(2): partyMember = partyMember2 if not partyMember: return st = partyMember.getQuestState(qn) if not st: return if st.getState() != STARTED: return count = st.getQuestItemsCount(ROUGH_JEWEL) if count < 10: st.giveItems(ROUGH_JEWEL, 1) if count == 9: st.playSound("ItemSound.quest_middle") st.set("cond", "3") else: st.playSound("ItemSound.quest_itemget") return QUEST = Quest(35, qn, "Find Glittering Jewelry") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30091) QUEST.addTalkId(30091) QUEST.addTalkId(30879) QUEST.addKillId(20135) STARTED.addQuestDrop(20135, ROUGH_JEWEL, 1)
if amount : htmltext = "30892-03.htm" st.giveItems(ADENA,amount) st.takeItems(ALLIGATOR_PELTS,-1) else : htmltext = "30892-04.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(ALLIGATOR_PELTS,1) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(338,qn,"Alligator Hunter") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30892) QUEST.addTalkId(30892) QUEST.addKillId(ALLIGATOR) STARTED.addQuestDrop(ALLIGATOR,ALLIGATOR_PELTS,1)
st = player.getQuestState(qn) if st: if st.getState() == STARTED: npcId = npc.getNpcId() cond = st.getInt("cond") id = st.getInt("id") Red_Totem = st.getQuestItemsCount(Totem) if npcId in Ketra_Orcs: st.unset("id") st.unset("aggro") st.exitQuest(1) if Red_Totem: st.takeItems(Totem, -1) return QUEST = Quest(609, qn, "Magical Power of Water - Part 1") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(Wahkan) QUEST.addTalkId(Wahkan) QUEST.addTalkId(Asefa) QUEST.addTalkId(Udan_Box) STARTED.addQuestDrop(Udan_Box, Totem, 1) for mobId in Varka_Mobs: QUEST.addAttackId(mobId) for mobId in Ketra_Orcs: QUEST.addKillId(mobId)
else: htmltext = "600.htm" #TODO: This is custom, need to get official text from retail else: htmltext = "600.htm" #TODO: This is custom, need to get official text from retail elif id == STARTED: htmltext = "400.htm" 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 and st.getInt("cond") == 1: if st.getRandom(100) < CHANCE: st.giveItems(DREAM_FRAGMENT_ID, 1) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(650, qn, "A Broken Dream") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(GHOST) QUEST.addTalkId(GHOST) QUEST.addKillId(CREWMAN) QUEST.addKillId(VAGABOND) STARTED.addQuestDrop(CREWMAN, DREAM_FRAGMENT_ID, 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)
cond, item, max, chance = DROPLIST[npc.getNpcId()] count = st.getQuestItemsCount(item) if st.getInt( "cond") == cond and count < max and st.getRandom(100) < chance: st.giveItems(item, 1) if count == max - 1: st.playSound("ItemSound.quest_middle") st.set("cond", str(cond + 1)) else: st.playSound("ItemSound.quest_itemget") return QUEST = Quest(38, qn, "Dragon Fangs") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(LUIS) QUEST.addTalkId(LUIS) QUEST.addTalkId(IRIS) QUEST.addTalkId(ROHMER) for mob in DROPLIST.keys(): QUEST.addKillId(mob) for item in range(7173, 7178): STARTED.addQuestDrop(LUIS, item, 1)
QUEST.setInitialState(CREATED) QUEST.addStartNpc(30523) QUEST.addTalkId(30523) QUEST.addTalkId(30516) QUEST.addTalkId(30521) QUEST.addTalkId(30522) QUEST.addTalkId(30523) QUEST.addTalkId(30526) QUEST.addTalkId(30529) QUEST.addTalkId(30555) QUEST.addKillId(20323) QUEST.addKillId(20324) QUEST.addKillId(20480) STARTED.addQuestDrop(30526, GEM_BOX1_ID, 1) STARTED.addQuestDrop(20480, STAR_DIAMOND_ID, 1) STARTED.addQuestDrop(30523, GOUPHS_CONTRACT_ID, 1) STARTED.addQuestDrop(30516, REEPS_CONTRACT_ID, 1) STARTED.addQuestDrop(30555, ELVEN_WINE_ID, 1) STARTED.addQuestDrop(30526, BRONPS_CONTRACT_ID, 1) STARTED.addQuestDrop(20323, AQUAMARINE_ID, 1) STARTED.addQuestDrop(20323, CHRYSOBERYL_ID, 1) STARTED.addQuestDrop(30523, COAL_PIECE_ID, 1) STARTED.addQuestDrop(30529, BRONPS_DICE_ID, 1) STARTED.addQuestDrop(30526, BRONPS_LETTER_ID, 1) STARTED.addQuestDrop(30521, BERRY_TART_ID, 1) STARTED.addQuestDrop(30522, BAT_DIAGRAM_ID, 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)
if not st: return if st.getState() != STARTED: return npcId = npc.getNpcId() if npcId == GEMSTONE_BEAST and st.getInt("cond") == 5 and st.getRandom( 2) == 1 and st.getQuestItemsCount(GEMSTONE_BEAST_CRYSTAL) < 10: st.giveItems(GEMSTONE_BEAST_CRYSTAL, 1) if st.getQuestItemsCount(GEMSTONE_BEAST_CRYSTAL) == 10: st.playSound("ItemSound.quest_middle") else: st.playSound("ItemSound.quest_itemget") return QUEST = Quest(347, qn, "Calculator") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(BRUNON) QUEST.addTalkId(BRUNON) QUEST.addTalkId(SILVERA) QUEST.addTalkId(SPIRON) QUEST.addTalkId(BALANKI) QUEST.addKillId(GEMSTONE_BEAST) STARTED.addQuestDrop(GEMSTONE_BEAST, GEMSTONE_BEAST_CRYSTAL, 1)