# Made by Mr. Have fun! Version 0.2 # rewritten by Rolarga Version 0.3 import sys from net.sf.l2j.gameserver.model.quest import State from net.sf.l2j.gameserver.model.quest import QuestState from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest MARK_OF_WITCHCRAFT_ID = 3307 ORIMS_DIAGRAM_ID = 3308 ALEXANDRIAS_BOOK_ID = 3309 IKERS_LIST_ID = 3310 DIRE_WYRM_FANG_ID = 3311 LETO_LIZARDMAN_CHARM_ID = 3312 EN_GOLEM_HEARTSTONE_ID = 3313 LARS_MEMO1_ID = 3314 NESTLE_MEMO1_ID = 3315 LEOPOLDS_JOURNAL1_ID = 3316 AKLANTOS_GEM1_ID = 3317 AKLANTOS_GEM2_ID = 3318 AKLANTOS_GEM3_ID = 3319 AKLANTOS_GEM4_ID = 3320 AKLANTOS_GEM5_ID = 3321 AKLANTOS_GEM6_ID = 3322 BRIMSTONE1_ID = 3323 ORIMS_INSTRUCTIONS_ID = 3324 ORIMS_LETTER1_ID = 3325 ORIMS_LETTER2_ID = 3326 SIR_VASPERS_LETTER_ID = 3327 VADINS_CRUCIFIX_ID = 3328 TAMLIN_ORC_AMULET_ID = 3329 VADINS_SANCTIONS_ID = 3330 IKERS_AMULET_ID = 3331 SOULTRAP_CRYSTAL_ID = 3332 PURGATORY_KEY_ID = 3333 ZERUEL_BIND_CRYSTAL_ID = 3334 BRIMSTONE2_ID = 3335 SWORD_OF_BINDING_ID = 3029 NPC = [7063,7098,7110,7188,7314,7417,7435,7476,7630,7631,7632,7633] STATS = ["cond","step","gem1","gem2","gem3","gem456"] #This handle all Mob-Drop related Data npcId:[var,value,maxcount,chance,giveList,takeList] DROPLIST={ 5101: ["step", [3,14], 1,100,[ZERUEL_BIND_CRYSTAL_ID,PURGATORY_KEY_ID],[BRIMSTONE2_ID,SOULTRAP_CRYSTAL_ID]], 5100: ["gem456", [3,4,5],1,100,[AKLANTOS_GEM4_ID,AKLANTOS_GEM5_ID,AKLANTOS_GEM6_ID],[LEOPOLDS_JOURNAL1_ID]], 601: ["step", [9],20,50,[TAMLIN_ORC_AMULET_ID],0], 602: ["step", [9],20,55,[TAMLIN_ORC_AMULET_ID],0], 5099: ["gem3", [2],1,100,[AKLANTOS_GEM3_ID],[LARS_MEMO1_ID]], 557: ["gem1", [2,3,4],20,100,[DIRE_WYRM_FANG_ID],0], 565: ["gem1", [2,3,4],20,80,[EN_GOLEM_HEARTSTONE_ID],0], 577: ["gem1", [2,3,4],20,50,[LETO_LIZARDMAN_CHARM_ID],0], 578: ["gem1", [2,3,4],20,50,[LETO_LIZARDMAN_CHARM_ID],0], 579: ["gem1", [2,3,4],20,60,[LETO_LIZARDMAN_CHARM_ID],0], 580: ["gem1", [2,3,4],20,60,[LETO_LIZARDMAN_CHARM_ID],0], 581: ["gem1", [2,3,4],20,70,[LETO_LIZARDMAN_CHARM_ID],0], 582: ["gem1", [2,3,4],20,70,[LETO_LIZARDMAN_CHARM_ID],0] } class Quest (JQuest) : def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) def onEvent (self,event,st) : htmltext = event # Orims Events if event == "1": htmltext = "7630-08.htm" st.setState(STARTED) st.playSound("ItemSound.quest_accept") st.giveItems(ORIMS_DIAGRAM_ID,1) for var in STATS: st.set(var,"1") elif event == "7630_1" : htmltext = "7630-04.htm" elif event == "7630_2" : htmltext = "7630-06.htm" elif event == "7630_3" : htmltext = "7630-07.htm" elif event == "7630_4" : htmltext = "7630-12.htm" elif event == "7630_5" : htmltext = "7630-13.htm" elif event == "7630_6" : htmltext = "7630-14.htm" st.giveItems(BRIMSTONE1_ID,1) st.takeItems(ALEXANDRIAS_BOOK_ID,1) st.takeItems(AKLANTOS_GEM1_ID,1) st.takeItems(AKLANTOS_GEM2_ID,1) st.takeItems(AKLANTOS_GEM3_ID,1) st.takeItems(AKLANTOS_GEM4_ID,1) st.takeItems(AKLANTOS_GEM5_ID,1) st.takeItems(AKLANTOS_GEM6_ID,1) st.set("step","3") st.getPcSpawn().addSpawn(5101,70298, 109564, -3731) elif event == "7630_7" : htmltext = "7630-16.htm" st.takeItems(BRIMSTONE1_ID,1) st.giveItems(ORIMS_INSTRUCTIONS_ID,1) st.giveItems(ORIMS_LETTER1_ID,1) st.giveItems(ORIMS_LETTER2_ID,1) st.set("step","5") elif event == "7630_8" : htmltext = "7630-20.htm" st.takeItems(ZERUEL_BIND_CRYSTAL_ID,1) elif event == "7630_9" : htmltext = "7630-21.htm" st.takeItems(PURGATORY_KEY_ID,1) elif event == "7630_10" : st.takeItems(SWORD_OF_BINDING_ID,1) st.takeItems(IKERS_AMULET_ID,1) st.takeItems(ORIMS_INSTRUCTIONS_ID,1) st.addExpAndSp(139796,40000) st.giveItems(MARK_OF_WITCHCRAFT_ID,1) htmltext = "7630-22.htm" for var in STATS: st.unset(var) st.setState(COMPLETED) st.getPcSpawn().removeAllSpawn() st.playSound("ItemSound.quest_finish") # Alexandrias Events elif event == "7098_1" : htmltext = "7098-02.htm" elif event == "7098_2" : htmltext = "7098-03.htm" st.giveItems(ALEXANDRIAS_BOOK_ID,1) st.takeItems(ORIMS_DIAGRAM_ID,1) st.set("step","2") # Ikers Events elif event == "7110_1" : htmltext = "7110-02.htm" elif event == "7110_2" : htmltext = "7110-03.htm" st.giveItems(IKERS_LIST_ID,1) st.set("gem1","2") elif event == "7110_3" : htmltext = "7110-08.htm" st.giveItems(SOULTRAP_CRYSTAL_ID,1) st.giveItems(IKERS_AMULET_ID,1) st.takeItems(ORIMS_LETTER2_ID,1) st.set("step",str(int(st.get("step"))+1)) # Kairas Events elif event == "7476_1" : htmltext = "7476-02.htm" st.giveItems(AKLANTOS_GEM2_ID,1) st.set("gem2","2") # Laras Events elif event == "7063_1" : htmltext = "7063-02.htm" st.giveItems(LARS_MEMO1_ID,1) st.set("gem3","2") # Nestles Events elif event == "7314_1" : htmltext = "7314-02.htm" st.giveItems(NESTLE_MEMO1_ID,1) st.set("gem456","2") # Leopolds Events elif event == "7435_1" : htmltext = "7435-02.htm" st.giveItems(LEOPOLDS_JOURNAL1_ID,1) st.takeItems(NESTLE_MEMO1_ID,1) st.set("gem456","3") # (Vasper) Klaus Events elif event == "7417_1" : htmltext = "7417-02.htm" elif event == "7417_2" : htmltext = "7417-03.htm" st.giveItems(SIR_VASPERS_LETTER_ID,1) st.takeItems(ORIMS_LETTER1_ID,1) st.set("step",str(int(st.get("step"))+2)) # Everts Events elif event == "7633_1" : htmltext = "7633-02.htm" st.giveItems(BRIMSTONE2_ID,1) st.getPcSpawn().addSpawn(5101,14027, 169896, -3646) return htmltext def onTalk (self,npc,st): npcId = npc.getNpcId() htmltext = "
I have nothing to say you" id = st.getState() # Start the Quest, initialisation and check if the player can take it if id == CREATED: for var in STATS: st.set(var,"0") if st.getPlayer().getClassId().getId() in [0x0b, 0x04, 0x20] : if st.getPlayer().getLevel() < 39: htmltext = "7630-02.htm" st.exitQuest(1) else: if st.getPlayer().getClassId().getId() == 0x0b : htmltext = "7630-03.htm" else: htmltext = "7630-05.htm" else: htmltext = "7630-01.htm" st.exitQuest(1) return htmltext # already done elif id == COMPLETED: return "This quest has already been completed." # in progress, player is working on the quest else: step = int(st.get("step")) # var init for easier working with it gem1 = int(st.get("gem1")) gem2 = int(st.get("gem2")) gem3 = int(st.get("gem3")) gem456 = int(st.get("gem456")) if npcId == NPC[8]: # orim if step == 1: htmltext = "7630-09.htm" elif step == 2: if gem1 == 6 and gem2 == 2 and gem3 == 3 and gem456 == 6: htmltext = "7630-11.htm" else: htmltext = "7630-10.htm" elif step == 3: htmltext = "7630-14.htm" elif step == 4: htmltext = "7630-15.htm" elif 4 < step < 13: htmltext = "7630-17.htm" elif step == 13 : htmltext = "7630-18.htm" elif step == 15 : htmltext = "7630-19.htm" elif npcId == NPC[1]: # alexandria if step == 1: htmltext = "7098-01.htm" elif step == 2: htmltext = "7098-04.htm" else: htmltext = "7098-05.htm" elif npcId == NPC[7]: #kaira if step == 2: if gem2 == 1: htmltext = "7476-01.htm" else : htmltext = "7476-03.htm" else: htmltext = "7476-04.htm" elif npcId == NPC[2]: # iker if step == 2: if gem1 == 1: htmltext = "7110-01.htm" elif gem1 in [2,3,4]: htmltext = "7110-04.htm" elif gem1 == 5: st.giveItems(AKLANTOS_GEM1_ID,1) st.takeItems(IKERS_LIST_ID,-1) st.takeItems(DIRE_WYRM_FANG_ID,-1) st.takeItems(LETO_LIZARDMAN_CHARM_ID,-1) st.takeItems(EN_GOLEM_HEARTSTONE_ID,-1) htmltext = "7110-05.htm" st.set("gem1","6") elif gem1 == 6: htmltext = "7110-06.htm" elif step in [5,12]: htmltext = "7110-07.htm" elif step == 13 : htmltext = "7110-09.htm" elif step == 14 : htmltext = "7110-10.htm" elif npcId == NPC[0]: # lara if step == 2 : if gem3 == 1: htmltext = "7063-01.htm" elif gem3 == 2: htmltext = "7063-03.htm" elif gem3 == 3: htmltext = "7063-04.htm" elif step in [3,4]: htmltext = "7063-05.htm" elif npcId == NPC[9] and gem3 == 2 : #roderik htmltext = "7631-01.htm" elif npcId == NPC[10] and gem3 == 2 : # endrigo htmltext = "7632-01.htm" elif npcId == NPC[4]: # nestle if step == 2 : if gem456 == 1: htmltext = "7314-01.htm" elif gem456 == 2: htmltext = "7314-03.htm" else: htmltext = "7314-04.htm" elif npcId == NPC[6]: # leopold if step == 2: if gem456 == 2: htmltext = "7435-01.htm" elif gem456 in [3,4,5] : htmltext = "7435-03.htm" elif gem456 == 6: htmltext = "7435-04.htm" else: htmltext = "7435-05.htm" elif npcId == NPC[5]: # klaus if step in [5,6]: htmltext = "7417-01.htm" elif step in [7,8]: htmltext = "7417-04.htm" elif step == 11: htmltext = "7417-05.htm" st.giveItems(SWORD_OF_BINDING_ID,1) st.takeItems(VADINS_SANCTIONS_ID,1) if st.getQuestItemsCount(SOULTRAP_CRYSTAL_ID) : st.set("step","13") else: st.set("step","12") elif step in [12,13]: htmltext = "7417-06.htm" elif npcId == NPC[3]: # vadin if step in [7,8]: htmltext = "7188-01.htm" st.giveItems(VADINS_CRUCIFIX_ID,1) st.takeItems(SIR_VASPERS_LETTER_ID,1) st.set("step","9") elif step == 9: htmltext = "7188-02.htm" elif step == 10: htmltext = "7188-03.htm" st.takeItems(TAMLIN_ORC_AMULET_ID,-1) st.giveItems(VADINS_SANCTIONS_ID,1) st.takeItems(VADINS_CRUCIFIX_ID,-1) st.set("step","11") elif step == 11: htmltext = "7188-04.htm" elif step == 12: htmltext = "7188-05.htm" elif npcId == NPC[11]: # evert if step == 13 and st.getQuestItemsCount(BRIMSTONE2_ID)==0: htmltext = "7633-01.htm" elif step in [13,14]: htmltext = "7633-02.htm" st.getPcSpawn().addSpawn(5101,13631,169853,-3697) st.set("step","14") elif step == 15 : htmltext = "7633-03.htm" return htmltext def onKill (self,npc,st): npcId = npc.getNpcId() var,value,maxcount,chance,giveList,takeList=DROPLIST[npcId] random=st.getRandom(100) isValue = int(st.get(var)) if int(st.get(var)) in value and random