def onAdvEvent (self,event,npc,player) : htmltext = "<html><body>You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements.</body></html>" st = player.getQuestState(qn) if event == "Enter" : FourSepulchersManager.getInstance().tryEntry(npc,player) return if not st : return elif event == "accept" : if int(st.get("cond")) == 0 : if st.getPlayer().getLevel() >= 74 : st.setState(State.STARTED) st.playSound("ItemSound.quest_accept") htmltext = "31453-12.htm" st.set("cond","1") else : htmltext = "31453-SNG.htm" st.exitQuest(1) elif event == "11" : if st.getQuestItemsCount(SEALED_BOX) >= 1 : htmltext = "31454-1.htm" st.takeItems(SEALED_BOX,1) if st.getRandom(1000000) < 700000 : cnt = 1370 + st.getRandom(1374) st.giveItems(REWARDS[0],cnt) if st.getRandom(1000000) < 2 : st.giveItems(REWARDS[1],1) if st.getRandom(1000000) < 2 : st.giveItems(REWARDS[2],1) if st.getRandom(1000000) < 8 : st.giveItems(REWARDS[3],1) if st.getRandom(1000000) < 54858 : st.giveItems(REWARDS[4],1) if st.getRandom(1000000) < 2 : st.giveItems(REWARDS[5],1) if st.getRandom(1000000) < 3841 : st.giveItems(REWARDS[6],1) if st.getRandom(1000000) < 3201 : st.giveItems(REWARDS[7],1) if st.getRandom(1000000) < 6401 : st.giveItems(REWARDS[8],1) if st.getRandom(1000000) < 440 : st.giveItems(REWARDS[9],1) if st.getRandom(1000000) < 440 : st.giveItems(REWARDS[10],1) if st.getRandom(1000000) < 483 : st.giveItems(REWARDS[11],1) else : htmltext = "31454-NG.htm" elif event == "12" : if st.getQuestItemsCount(GOBLETS[0]) >= 1 and st.getQuestItemsCount(GOBLETS[1]) >= 1 and st.getQuestItemsCount(GOBLETS[2]) >= 1 and st.getQuestItemsCount(GOBLETS[3]) >= 1 : st.takeItems(GOBLETS[0],1) st.takeItems(GOBLETS[1],1) st.takeItems(GOBLETS[2],1) st.takeItems(GOBLETS[3],1) st.giveItems(ANTIQUE_BROOCH,1) st.set("cond","2") st.playSound("ItemSound.quest_finish") htmltext = "31453-22.htm" else : htmltext = "31453-FNG.htm" elif event == "13" : st.playSound("ItemSound.quest_accept") st.exitQuest(1) htmltext = "END.htm" elif event == "14" : st.playSound("ItemSound.quest_accept") htmltext = "CONTINUE.htm" # Ghost Chamberlain of Elmoreden: Teleport to 4th sepulcher elif event == "15" : if st.getQuestItemsCount(ANTIQUE_BROOCH) >= 1 : st.getPlayer().teleToLocation(178298,-84574,-7216) htmltext = None elif st.getQuestItemsCount(GRAVE_PASS) >= 1 : st.takeItems(GRAVE_PASS,1) st.getPlayer().teleToLocation(178298,-84574,-7216) htmltext = None else : htmltext = "NG.htm" # Ghost Chamberlain of Elmoreden: Teleport to Imperial Tomb entrance elif event == "16" : if st.getQuestItemsCount(ANTIQUE_BROOCH) >= 1 : st.getPlayer().teleToLocation(186942,-75602,-2834) htmltext = None elif st.getQuestItemsCount(GRAVE_PASS) >= 1 : st.takeItems(GRAVE_PASS,1) st.getPlayer().teleToLocation(186942,-75602,-2834) htmltext = None else : htmltext = "NG.htm" # Teleport to Pilgrims Temple elif event == "17" : if st.getQuestItemsCount(ANTIQUE_BROOCH) >= 1 : st.getPlayer().teleToLocation(169590,-90218,-2914) htmltext = None elif st.getQuestItemsCount(GRAVE_PASS) >= 1 : st.takeItems(GRAVE_PASS,1) st.getPlayer().teleToLocation(169590,-90218,-2914) htmltext = None else : htmltext = "NG.htm" return htmltext
def onTalk (self,npc,player): htmltext = "<html><body>目前沒有執行任務,或條件不符。</body></html>" st = player.getQuestState(qn) npcId = npc.getNpcId() id = st.getState() cond = st.getInt("cond") four = st.getInt("four") wigoth = st.getInt("wigoth") box = st.getInt("box") if not st : return htmltext if id == State.CREATED : if npcId == NS : # 無名的靈魂 if st.getPlayer().getLevel() > 73 : htmltext = str(npcId)+"-01.htm" else: htmltext = str(npcId)+"-00.htm" st.exitQuest(1) elif id == State.STARTED : if npcId == NS : # 無名的靈魂 if cond == 1 : if st.getQuestItemsCount(ALECTIA) and st.getQuestItemsCount(TISHAS) and st.getQuestItemsCount(MEKARA) and st.getQuestItemsCount(MORIGUL) : htmltext = str(npcId)+"-16.htm" else : htmltext = str(npcId)+"-13.htm" elif four == 2 or cond == 2 : htmltext = str(npcId)+"-19.htm" elif npcId == WGA : # 威格特的亡靈 - 皇帝陵墓(擊敗哈里夏的影子後) st.set("box","2") st.set("party","0") if st.getQuestItemsCount(ALECTIA) + st.getQuestItemsCount(TISHAS) + st.getQuestItemsCount(MEKARA) + st.getQuestItemsCount(MORIGUL) <= 1: htmltext = str(npcId)+"-01.htm" st.set("wigoth","1") elif st.getQuestItemsCount(ALECTIA) + st.getQuestItemsCount(TISHAS) + st.getQuestItemsCount(MEKARA) + st.getQuestItemsCount(MORIGUL) == 2: htmltext = str(npcId)+"-02.htm" st.set("wigoth","2") elif st.getQuestItemsCount(ALECTIA) + st.getQuestItemsCount(TISHAS) + st.getQuestItemsCount(MEKARA) + st.getQuestItemsCount(MORIGUL) == 3: htmltext = str(npcId)+"-04.htm" st.set("wigoth","3") elif st.getQuestItemsCount(ALECTIA) + st.getQuestItemsCount(TISHAS) + st.getQuestItemsCount(MEKARA) + st.getQuestItemsCount(MORIGUL) == 4: htmltext = str(npcId)+"-05.htm" st.set("wigoth","4") elif st.getQuestItemsCount(ALECTIA) + st.getQuestItemsCount(TISHAS) + st.getQuestItemsCount(MEKARA) + st.getQuestItemsCount(MORIGUL) > 4: htmltext = str(npcId)+"-05.htm" elif npcId == WGB : # 威格特的亡靈 - 巡禮者寺院 if st.getInt("box") != 2 : return "任務尚未完成。" if four==1 : if st.getQuestItemsCount(RELIC_PART) < 1000 and st.getQuestItemsCount(SEALED_BOX) > 0 : htmltext = str(npcId)+"-02.htm" elif st.getQuestItemsCount(RELIC_PART) > 999 and st.getQuestItemsCount(SEALED_BOX) == 0 : htmltext = str(npcId)+"-03.htm" elif st.getQuestItemsCount(RELIC_PART) > 999 and st.getQuestItemsCount(SEALED_BOX) > 0 : htmltext = str(npcId)+"-04.htm" elif st.getQuestItemsCount(RELIC_PART) == 0 and st.getQuestItemsCount(SEALED_BOX) == 0 : htmltext = str(npcId)+"-01.htm" elif four==2 : if st.getQuestItemsCount(RELIC_PART) < 1000 and st.getQuestItemsCount(SEALED_BOX) > 0 : htmltext = str(npcId)+"-06.htm" elif st.getQuestItemsCount(RELIC_PART) > 999 and st.getQuestItemsCount(SEALED_BOX) == 0 : htmltext = str(npcId)+"-07.htm" elif st.getQuestItemsCount(RELIC_PART) > 999 and st.getQuestItemsCount(SEALED_BOX) > 0 : htmltext = str(npcId)+"-08.htm" elif st.getQuestItemsCount(RELIC_PART) == 0 and st.getQuestItemsCount(SEALED_BOX) == 0 : htmltext = str(npcId)+"-05.htm" elif npcId in [COEA,COEB] : # 艾爾摩亞丁侍衛的亡靈 htmltext = str(npcId)+"-01.htm" elif npcId in [CSM,ESM,GSM,JSM]: # 陵墓管理員 if FourSepulchersManager.getInstance().IsEntryTime() : if player.isInParty(): if not player.getParty().isLeader(player): return "只有隊長可以申請。" else: partyMembers = [player] party = player.getParty() if party : partyMembers = party.getPartyMembers().toArray() for player in partyMembers : pst = player.getQuestState(qn) pst.set("party","0") if player.getParty().getMemberCount()==2: st.set("party","2") elif player.getParty().getMemberCount()==3: st.set("party","3") elif player.getParty().getMemberCount()==4: st.set("party","4") elif player.getParty().getMemberCount()==5: st.set("party","5") elif player.getParty().getMemberCount()==6: st.set("party","6") elif player.getParty().getMemberCount()==7: st.set("party","7") elif player.getParty().getMemberCount()==8: st.set("party","8") else: st.set("party","9") htmltext = str(npcId)+"-01.htm" else : st.set("party","1") htmltext = str(npcId)+"-01.htm" else : htmltext = str(npcId)+"-02.htm" elif npcId in HGKB : # 男爵禮拜堂守門人 if FourSepulchersManager.getInstance().IsAttackTime() : if player.isInParty(): if not player.getParty().isLeader(player): return "只有隊長可以申請。" if not st.getInt("party")==player.getParty().getMemberCount(): return "隊伍成員錯誤。" if st.getQuestItemsCount(HALLS_KEY) : partyMembers = [player] party = player.getParty() if party : partyMembers = party.getPartyMembers().toArray() for player in partyMembers : pst = player.getQuestState(qn) if pst.getQuestItemsCount(HALLS_KEY) < 1: return "隊伍成員沒有全部拿到鑰匙。" for player in partyMembers : npc.onBypassFeedback(player,"open_gate") for player in partyMembers : pst = player.getQuestState(qn) pst.takeItems(HALLS_KEY,-1) return return else: return HGKB_MSG else : if st.getInt("party") != 1: return "隊伍成員錯誤。" else: if st.getQuestItemsCount(HALLS_KEY) : npc.onBypassFeedback(player,"open_gate") return else: return HGKB_MSG else : return "條件不符,無法進入。" elif npcId in HGKV : # 子爵禮拜堂守門人 if FourSepulchersManager.getInstance().IsAttackTime() : if player.isInParty(): if not player.getParty().isLeader(player): return "只有隊長可以申請。" if not st.getInt("party")==player.getParty().getMemberCount(): return "隊伍成員錯誤。" if st.getQuestItemsCount(HALLS_KEY) : partyMembers = [player] party = player.getParty() if party : partyMembers = party.getPartyMembers().toArray() for player in partyMembers : pst = player.getQuestState(qn) if pst.getQuestItemsCount(HALLS_KEY) < 1: return "隊伍成員沒有全部拿到鑰匙。" for player in partyMembers : npc.onBypassFeedback(player,"open_gate") for player in partyMembers : pst = player.getQuestState(qn) pst.takeItems(HALLS_KEY,-1) return return else: return HGKV_MSG else : if st.getInt("party") != 1: return "隊伍成員錯誤。" else: if st.getQuestItemsCount(HALLS_KEY) : npc.onBypassFeedback(player,"open_gate") return else: return HGKV_MSG else : return "條件不符,無法進入。" elif npcId in HGKC : # 伯爵禮拜堂守門人 if FourSepulchersManager.getInstance().IsAttackTime() : if player.isInParty(): if not player.getParty().isLeader(player): return "只有隊長可以申請。" if not st.getInt("party")==player.getParty().getMemberCount(): return "隊伍成員錯誤。" if st.getQuestItemsCount(HALLS_KEY) : partyMembers = [player] party = player.getParty() if party : partyMembers = party.getPartyMembers().toArray() for player in partyMembers : pst = player.getQuestState(qn) if pst.getQuestItemsCount(HALLS_KEY) < 1: return "隊伍成員沒有全部拿到鑰匙。" for player in partyMembers : npc.onBypassFeedback(player,"open_gate") for player in partyMembers : pst = player.getQuestState(qn) pst.takeItems(HALLS_KEY,-1) return return else: return HGKC_MSG else : if st.getInt("party") != 1: return "隊伍成員錯誤。" else: if st.getQuestItemsCount(HALLS_KEY) : npc.onBypassFeedback(player,"open_gate") return else: return HGKC_MSG else : return "條件不符,無法進入。" elif npcId in HGKM : # 侯爵禮拜堂守門人 if FourSepulchersManager.getInstance().IsAttackTime() : if player.isInParty(): if not player.getParty().isLeader(player): return "只有隊長可以申請。" if not st.getInt("party")==player.getParty().getMemberCount(): return "隊伍成員錯誤。" if st.getQuestItemsCount(HALLS_KEY) : partyMembers = [player] party = player.getParty() if party : partyMembers = party.getPartyMembers().toArray() for player in partyMembers : pst = player.getQuestState(qn) if pst.getQuestItemsCount(HALLS_KEY) < 1: return "隊伍成員沒有全部拿到鑰匙。" for player in partyMembers : npc.onBypassFeedback(player,"open_gate") for player in partyMembers : pst = player.getQuestState(qn) pst.takeItems(HALLS_KEY,-1) return return else: return HGKM_MSG else : if st.getInt("party") != 1: return "隊伍成員錯誤。" else: if st.getQuestItemsCount(HALLS_KEY) : npc.onBypassFeedback(player,"open_gate") return else: return HGKM_MSG else : return "條件不符,無法進入。" elif npcId in HGKD : # 公爵禮拜堂守門人 if FourSepulchersManager.getInstance().IsAttackTime() : if player.isInParty(): if not player.getParty().isLeader(player): return "只有隊長可以申請。" if not st.getInt("party")==player.getParty().getMemberCount(): return "隊伍成員錯誤。" if st.getQuestItemsCount(HALLS_KEY) : partyMembers = [player] party = player.getParty() if party : partyMembers = party.getPartyMembers().toArray() for player in partyMembers : pst = player.getQuestState(qn) if pst.getQuestItemsCount(HALLS_KEY) < 1: return "隊伍成員沒有全部拿到鑰匙。" for player in partyMembers : npc.onBypassFeedback(player,"open_gate") for player in partyMembers : pst = player.getQuestState(qn) pst.takeItems(HALLS_KEY,-1) return return else: return HGKD_MSG else : if st.getInt("party") != 1: return "隊伍成員錯誤。" else: if st.getQuestItemsCount(HALLS_KEY) : npc.onBypassFeedback(player,"open_gate") return else: return HGKD_MSG else : return "條件不符,無法進入。" return htmltext
def onAdvEvent(self, event, npc, player): st = player.getQuestState(qn) if event == "Enter": FourSepulchersManager.getInstance().tryEntry(npc, player) return if not st: return elif event == "11": if st.getQuestItemsCount(SEALED_BOX) >= 1: htmltext = "31454-1.htm" st.takeItems(SEALED_BOX, 1) if st.getRandom(1000000) < 700000: cnt = 1370 + st.getRandom(1374) st.giveItems(REWARDS[0], cnt) if st.getRandom(1000000) < 2: st.giveItems(REWARDS[1], 1) if st.getRandom(1000000) < 2: st.giveItems(REWARDS[2], 1) if st.getRandom(1000000) < 8: st.giveItems(REWARDS[3], 1) if st.getRandom(1000000) < 54858: st.giveItems(REWARDS[4], 1) if st.getRandom(1000000) < 2: st.giveItems(REWARDS[5], 1) if st.getRandom(1000000) < 3841: st.giveItems(REWARDS[6], 1) if st.getRandom(1000000) < 3201: st.giveItems(REWARDS[7], 1) if st.getRandom(1000000) < 6401: st.giveItems(REWARDS[8], 1) if st.getRandom(1000000) < 440: st.giveItems(REWARDS[9], 1) if st.getRandom(1000000) < 440: st.giveItems(REWARDS[10], 1) if st.getRandom(1000000) < 483: st.giveItems(REWARDS[11], 1) else: return "31454-NG.htm" elif event == "12": if st.getQuestItemsCount( GOBLETS[0]) >= 1 and st.getQuestItemsCount( GOBLETS[1]) >= 1 and st.getQuestItemsCount( GOBLETS[2]) >= 1 and st.getQuestItemsCount( GOBLETS[3]) >= 1: st.takeItems(GOBLETS[0], 1) st.takeItems(GOBLETS[1], 1) st.takeItems(GOBLETS[2], 1) st.takeItems(GOBLETS[3], 1) st.giveItems(ANTIQUE_BROOCH, 1) st.set("cond", "2") st.playSound("ItemSound.quest_finish") return "31453-22.htm" else: return "31453-FNG.htm" elif event == "13": st.playSound("ItemSound.quest_accept") st.exitQuest(1) return "END.htm" elif event == "14": st.playSound("ItemSound.quest_accept") return "CONTINUE.htm" # Ghost Chamberlain of Elmoreden: Teleport to 4th sepulcher elif event == "15": if st.getQuestItemsCount(ANTIQUE_BROOCH) >= 1: st.getPlayer().teleToLocation(178298, -84574, -7216) return elif st.getQuestItemsCount(GRAVE_PASS) >= 1: st.takeItems(GRAVE_PASS, 1) st.getPlayer().teleToLocation(178298, -84574, -7216) return else: return "NG.htm" # Ghost Chamberlain of Elmoreden: Teleport to Imperial Tomb entrance elif event == "16": if st.getQuestItemsCount(ANTIQUE_BROOCH) >= 1: st.getPlayer().teleToLocation(186942, -75602, -2834) return elif st.getQuestItemsCount(GRAVE_PASS) >= 1: st.takeItems(GRAVE_PASS, 1) st.getPlayer().teleToLocation(186942, -75602, -2834) return else: return "NG.htm" # Teleport to Pilgrims Temple elif event == "17": if st.getQuestItemsCount(ANTIQUE_BROOCH) >= 1: st.getPlayer().teleToLocation(169590, -90218, -2914) return elif st.getQuestItemsCount(GRAVE_PASS) >= 1: st.takeItems(GRAVE_PASS, 1) st.getPlayer().teleToLocation(169590, -90218, -2914) return else: return "NG.htm"
def onAdvEvent(self, event, npc, player): htmltext = event st = player.getQuestState(qn) htmltext = event if event == "Enter": FourSepulchersManager.getInstance().tryEntry(npc, player) return if not st: return elif event == "accept": if int(st.get("cond")) == 0: if st.getPlayer().getLevel() >= 74: st.setState(State.STARTED) st.playSound("ItemSound.quest_accept") htmltext = "31453-13.htm" st.set("cond", "1") else: htmltext = "31453-12.htm" st.exitQuest(1) elif event == "11": if st.getQuestItemsCount(SEALED_BOX) >= 1: htmltext = "31454-13.htm" st.takeItems(SEALED_BOX, 1) reward = 0 rnd = st.getRandom(5) if rnd == 0: st.giveItems(57, 10000) reward = 1 elif rnd == 1: if st.getRandom(1000) < 848: reward = 1 i = st.getRandom(1000) if i < 43: st.giveItems(1884, 42) elif i < 66: st.giveItems(1895, 36) elif i < 184: st.giveItems(1876, 4) elif i < 250: st.giveItems(1881, 6) elif i < 287: st.giveItems(5549, 8) elif i < 484: st.giveItems(1874, 1) elif i < 681: st.giveItems(1889, 1) elif i < 799: st.giveItems(1877, 1) elif i < 902: st.giveItems(1894, 1) else: st.giveItems(4043, 1) if st.getRandom(1000) < 323: reward = 1 i = st.getRandom(1000) if i < 335: st.giveItems(1888, 1) elif i < 556: st.giveItems(4040, 1) elif i < 725: st.giveItems(1890, 1) elif i < 872: st.giveItems(5550, 1) elif i < 962: st.giveItems(1893, 1) elif i < 986: st.giveItems(4046, 1) else: st.giveItems(4048, 1) elif rnd == 2: if st.getRandom(1000) < 847: reward = 1 i = st.getRandom(1000) if i < 148: st.giveItems(1878, 8) elif i < 175: st.giveItems(1882, 24) elif i < 273: st.giveItems(1879, 4) elif i < 322: st.giveItems(1880, 6) elif i < 357: st.giveItems(1885, 6) elif i < 554: st.giveItems(1875, 1) elif i < 685: st.giveItems(1883, 1) elif i < 803: st.giveItems(5220, 1) elif i < 901: st.giveItems(4039, 1) else: st.giveItems(4044, 1) if st.getRandom(1000) < 251: reward = 1 i = st.getRandom(1000) if i < 350: st.giveItems(1887, 1) elif i < 587: st.giveItems(4042, 1) elif i < 798: st.giveItems(1886, 1) elif i < 922: st.giveItems(4041, 1) elif i < 966: st.giveItems(1892, 1) elif i < 996: st.giveItems(1891, 1) else: st.giveItems(4047, 1) elif rnd == 3: if st.getRandom(1000) < 31: reward = 1 i = st.getRandom(1000) if i < 223: st.giveItems(730, 1) elif i < 893: st.giveItems(948, 1) else: st.giveItems(960, 1) if st.getRandom(1000) < 5: reward = 1 i = st.getRandom(1000) if i < 202: st.giveItems(729, 1) elif i < 928: st.giveItems(947, 1) else: st.giveItems(959, 1) elif rnd == 4: if st.getRandom(1000) < 329: reward = 1 i = st.getRandom(1000) if i < 88: st.giveItems(6698, 1) elif i < 185: st.giveItems(6699, 1) elif i < 238: st.giveItems(6700, 1) elif i < 262: st.giveItems(6701, 1) elif i < 292: st.giveItems(6702, 1) elif i < 356: st.giveItems(6703, 1) elif i < 420: st.giveItems(6704, 1) elif i < 482: st.giveItems(6705, 1) elif i < 554: st.giveItems(6706, 1) elif i < 576: st.giveItems(6707, 1) elif i < 640: st.giveItems(6708, 1) elif i < 704: st.giveItems(6709, 1) elif i < 777: st.giveItems(6710, 1) elif i < 799: st.giveItems(6711, 1) elif i < 863: st.giveItems(6712, 1) elif i < 927: st.giveItems(6713, 1) else: st.giveItems(6714, 1) if st.getRandom(1000) < 54: reward = 1 i = st.getRandom(1000) if i < 100: st.giveItems(6688, 1) elif i < 198: st.giveItems(6689, 1) elif i < 298: st.giveItems(6690, 1) elif i < 398: st.giveItems(6691, 1) elif i < 499: st.giveItems(7579, 1) elif i < 601: st.giveItems(6693, 1) elif i < 703: st.giveItems(6694, 1) elif i < 801: st.giveItems(6695, 1) elif i < 902: st.giveItems(6696, 1) else: st.giveItems(6697, 1) if reward == 0: if st.getRandom(2) == 0: htmltext = "31454-14.htm" else: htmltext = "31454-15.htm" elif event == "12": if st.getQuestItemsCount( GOBLETS[0]) >= 1 and st.getQuestItemsCount( GOBLETS[1]) >= 1 and st.getQuestItemsCount( GOBLETS[2]) >= 1 and st.getQuestItemsCount( GOBLETS[3]) >= 1: st.takeItems(GOBLETS[0], -1) st.takeItems(GOBLETS[1], -1) st.takeItems(GOBLETS[2], -1) st.takeItems(GOBLETS[3], -1) st.giveItems(ANTIQUE_BROOCH, 1) st.set("cond", "2") st.playSound("ItemSound.quest_finish") htmltext = "31453-16.htm" else: htmltext = "31453-14.htm" elif event == "13": st.playSound("ItemSound.quest_finish") st.exitQuest(1) htmltext = "31453-18.htm" elif event == "14": htmltext = "31453-13.htm" if st.getInt("cond") == 2: htmltext = "31453-19.htm" # Ghost Chamberlain of Elmoreden: Teleport to 4th sepulcher elif event == "15": if st.getQuestItemsCount(ANTIQUE_BROOCH) >= 1: st.getPlayer().teleToLocation(178298, -84574, -7216) htmltext = None elif st.getQuestItemsCount(GRAVE_PASS) >= 1: st.takeItems(GRAVE_PASS, 1) st.getPlayer().teleToLocation(178298, -84574, -7216) htmltext = None else: htmltext = "" + str(npc.getNpcId()) + "-0.htm" # Ghost Chamberlain of Elmoreden: Teleport to Imperial Tomb entrance elif event == "16": if st.getQuestItemsCount(ANTIQUE_BROOCH) >= 1: st.getPlayer().teleToLocation(186942, -75602, -2834) htmltext = None elif st.getQuestItemsCount(GRAVE_PASS) >= 1: st.takeItems(GRAVE_PASS, 1) st.getPlayer().teleToLocation(186942, -75602, -2834) htmltext = None else: htmltext = "" + str(npc.getNpcId()) + "-0.htm" # Teleport to Pilgrims Temple elif event == "17": if st.getQuestItemsCount(ANTIQUE_BROOCH) >= 1: st.getPlayer().teleToLocation(169590, -90218, -2914) else: st.takeItems(GRAVE_PASS, 1) st.getPlayer().teleToLocation(169590, -90218, -2914) htmltext = "31452-6.htm" elif event == "18": if st.getQuestItemsCount(GOBLETS[0]) + st.getQuestItemsCount( GOBLETS[1]) + st.getQuestItemsCount( GOBLETS[2]) + st.getQuestItemsCount(GOBLETS[3]) < 3: htmltext = "31452-3.htm" elif st.getQuestItemsCount(GOBLETS[0]) + st.getQuestItemsCount( GOBLETS[1]) + st.getQuestItemsCount( GOBLETS[2]) + st.getQuestItemsCount(GOBLETS[3]) == 3: htmltext = "31452-4.htm" elif st.getQuestItemsCount(GOBLETS[0]) + st.getQuestItemsCount( GOBLETS[1]) + st.getQuestItemsCount( GOBLETS[2]) + st.getQuestItemsCount(GOBLETS[3]) >= 4: htmltext = "31452-5.htm" elif event == "19": if st.getQuestItemsCount(SEALED_BOX) >= 1: htmltext = "31919-3.htm" st.takeItems(SEALED_BOX, 1) reward = 0 rnd = st.getRandom(5) if rnd == 0: st.giveItems(57, 10000) reward = 1 elif rnd == 1: if st.getRandom(1000) < 848: reward = 1 i = st.getRandom(1000) if i < 43: st.giveItems(1884, 42) elif i < 66: st.giveItems(1895, 36) elif i < 184: st.giveItems(1876, 4) elif i < 250: st.giveItems(1881, 6) elif i < 287: st.giveItems(5549, 8) elif i < 484: st.giveItems(1874, 1) elif i < 681: st.giveItems(1889, 1) elif i < 799: st.giveItems(1877, 1) elif i < 902: st.giveItems(1894, 1) else: st.giveItems(4043, 1) if st.getRandom(1000) < 323: reward = 1 i = st.getRandom(1000) if i < 335: st.giveItems(1888, 1) elif i < 556: st.giveItems(4040, 1) elif i < 725: st.giveItems(1890, 1) elif i < 872: st.giveItems(5550, 1) elif i < 962: st.giveItems(1893, 1) elif i < 986: st.giveItems(4046, 1) else: st.giveItems(4048, 1) elif rnd == 2: if st.getRandom(1000) < 847: reward = 1 i = st.getRandom(1000) if i < 148: st.giveItems(1878, 8) elif i < 175: st.giveItems(1882, 24) elif i < 273: st.giveItems(1879, 4) elif i < 322: st.giveItems(1880, 6) elif i < 357: st.giveItems(1885, 6) elif i < 554: st.giveItems(1875, 1) elif i < 685: st.giveItems(1883, 1) elif i < 803: st.giveItems(5220, 1) elif i < 901: st.giveItems(4039, 1) else: st.giveItems(4044, 1) if st.getRandom(1000) < 251: reward = 1 i = st.getRandom(1000) if i < 350: st.giveItems(1887, 1) elif i < 587: st.giveItems(4042, 1) elif i < 798: st.giveItems(1886, 1) elif i < 922: st.giveItems(4041, 1) elif i < 966: st.giveItems(1892, 1) elif i < 996: st.giveItems(1891, 1) else: st.giveItems(4047, 1) elif rnd == 3: if st.getRandom(1000) < 31: reward = 1 i = st.getRandom(1000) if i < 223: st.giveItems(730, 1) elif i < 893: st.giveItems(948, 1) else: st.giveItems(960, 1) if st.getRandom(1000) < 5: reward = 1 i = st.getRandom(1000) if i < 202: st.giveItems(729, 1) elif i < 928: st.giveItems(947, 1) else: st.giveItems(959, 1) elif rnd == 4: if st.getRandom(1000) < 329: reward = 1 i = st.getRandom(1000) if i < 88: st.giveItems(6698, 1) elif i < 185: st.giveItems(6699, 1) elif i < 238: st.giveItems(6700, 1) elif i < 262: st.giveItems(6701, 1) elif i < 292: st.giveItems(6702, 1) elif i < 356: st.giveItems(6703, 1) elif i < 420: st.giveItems(6704, 1) elif i < 482: st.giveItems(6705, 1) elif i < 554: st.giveItems(6706, 1) elif i < 576: st.giveItems(6707, 1) elif i < 640: st.giveItems(6708, 1) elif i < 704: st.giveItems(6709, 1) elif i < 777: st.giveItems(6710, 1) elif i < 799: st.giveItems(6711, 1) elif i < 863: st.giveItems(6712, 1) elif i < 927: st.giveItems(6713, 1) else: st.giveItems(6714, 1) if st.getRandom(1000) < 54: reward = 1 i = st.getRandom(1000) if i < 100: st.giveItems(6688, 1) elif i < 198: st.giveItems(6689, 1) elif i < 298: st.giveItems(6690, 1) elif i < 398: st.giveItems(6691, 1) elif i < 499: st.giveItems(7579, 1) elif i < 601: st.giveItems(6693, 1) elif i < 703: st.giveItems(6694, 1) elif i < 801: st.giveItems(6695, 1) elif i < 902: st.giveItems(6696, 1) else: st.giveItems(6697, 1) if reward == 0: if st.getRandom(2) == 0: htmltext = "31919-4.htm" else: htmltext = "31919-5.htm" else: htmltext = "31919-6.htm" elif event == "20": #增加NPC 31920-START if st.getQuestItemsCount(SEALED_BOX) >= 1: htmltext = "31920-3.htm" st.takeItems(SEALED_BOX, 1) reward = 0 rnd = st.getRandom(5) if rnd == 0: st.giveItems(57, 10000) reward = 1 elif rnd == 1: if st.getRandom(1000) < 848: reward = 1 i = st.getRandom(1000) if i < 43: st.giveItems(1884, 42) elif i < 66: st.giveItems(1895, 36) elif i < 184: st.giveItems(1876, 4) elif i < 250: st.giveItems(1881, 6) elif i < 287: st.giveItems(5549, 8) elif i < 484: st.giveItems(1874, 1) elif i < 681: st.giveItems(1889, 1) elif i < 799: st.giveItems(1877, 1) elif i < 902: st.giveItems(1894, 1) else: st.giveItems(4043, 1) if st.getRandom(1000) < 323: reward = 1 i = st.getRandom(1000) if i < 335: st.giveItems(1888, 1) elif i < 556: st.giveItems(4040, 1) elif i < 725: st.giveItems(1890, 1) elif i < 872: st.giveItems(5550, 1) elif i < 962: st.giveItems(1893, 1) elif i < 986: st.giveItems(4046, 1) else: st.giveItems(4048, 1) elif rnd == 2: if st.getRandom(1000) < 847: reward = 1 i = st.getRandom(1000) if i < 148: st.giveItems(1878, 8) elif i < 175: st.giveItems(1882, 24) elif i < 273: st.giveItems(1879, 4) elif i < 322: st.giveItems(1880, 6) elif i < 357: st.giveItems(1885, 6) elif i < 554: st.giveItems(1875, 1) elif i < 685: st.giveItems(1883, 1) elif i < 803: st.giveItems(5220, 1) elif i < 901: st.giveItems(4039, 1) else: st.giveItems(4044, 1) if st.getRandom(1000) < 251: reward = 1 i = st.getRandom(1000) if i < 350: st.giveItems(1887, 1) elif i < 587: st.giveItems(4042, 1) elif i < 798: st.giveItems(1886, 1) elif i < 922: st.giveItems(4041, 1) elif i < 966: st.giveItems(1892, 1) elif i < 996: st.giveItems(1891, 1) else: st.giveItems(4047, 1) elif rnd == 3: if st.getRandom(1000) < 31: reward = 1 i = st.getRandom(1000) if i < 223: st.giveItems(730, 1) elif i < 893: st.giveItems(948, 1) else: st.giveItems(960, 1) if st.getRandom(1000) < 5: reward = 1 i = st.getRandom(1000) if i < 202: st.giveItems(729, 1) elif i < 928: st.giveItems(947, 1) else: st.giveItems(959, 1) elif rnd == 4: if st.getRandom(1000) < 329: reward = 1 i = st.getRandom(1000) if i < 88: st.giveItems(6698, 1) elif i < 185: st.giveItems(6699, 1) elif i < 238: st.giveItems(6700, 1) elif i < 262: st.giveItems(6701, 1) elif i < 292: st.giveItems(6702, 1) elif i < 356: st.giveItems(6703, 1) elif i < 420: st.giveItems(6704, 1) elif i < 482: st.giveItems(6705, 1) elif i < 554: st.giveItems(6706, 1) elif i < 576: st.giveItems(6707, 1) elif i < 640: st.giveItems(6708, 1) elif i < 704: st.giveItems(6709, 1) elif i < 777: st.giveItems(6710, 1) elif i < 799: st.giveItems(6711, 1) elif i < 863: st.giveItems(6712, 1) elif i < 927: st.giveItems(6713, 1) else: st.giveItems(6714, 1) if st.getRandom(1000) < 54: reward = 1 i = st.getRandom(1000) if i < 100: st.giveItems(6688, 1) elif i < 198: st.giveItems(6689, 1) elif i < 298: st.giveItems(6690, 1) elif i < 398: st.giveItems(6691, 1) elif i < 499: st.giveItems(7579, 1) elif i < 601: st.giveItems(6693, 1) elif i < 703: st.giveItems(6694, 1) elif i < 801: st.giveItems(6695, 1) elif i < 902: st.giveItems(6696, 1) else: st.giveItems(6697, 1) if reward == 0: if st.getRandom(2) == 0: htmltext = "31920-4.htm" else: htmltext = "31920-5.htm" else: htmltext = "31920-6.htm" #增加NPC 31920-END elif event.isdigit() and int(event) in RCP_REWARDS: st.takeItems(RELIC, 1000) st.giveItems(int(event), 1) htmltext = "31454-17.htm" return htmltext
def onTalk(self, npc, player): htmltext = "<html><body>目前沒有執行任務,或條件不符。</body></html>" st = player.getQuestState(qn) npcId = npc.getNpcId() id = st.getState() cond = st.getInt("cond") four = st.getInt("four") wigoth = st.getInt("wigoth") box = st.getInt("box") if not st: return htmltext if id == State.CREATED: if npcId == NS: # 無名的靈魂 if st.getPlayer().getLevel() > 73: htmltext = str(npcId) + "-01.htm" else: htmltext = str(npcId) + "-00.htm" st.exitQuest(1) elif id == State.STARTED: if npcId == NS: # 無名的靈魂 if cond == 1: if ( st.getQuestItemsCount(ALECTIA) and st.getQuestItemsCount(TISHAS) and st.getQuestItemsCount(MEKARA) and st.getQuestItemsCount(MORIGUL) ): htmltext = str(npcId) + "-16.htm" else: htmltext = str(npcId) + "-13.htm" elif four == 2 or cond == 2: htmltext = str(npcId) + "-19.htm" elif npcId == WGA: # 威格特的亡靈 - 皇帝陵墓(擊敗哈里夏的影子後) st.set("box", "2") st.set("party", "0") if ( st.getQuestItemsCount(ALECTIA) + st.getQuestItemsCount(TISHAS) + st.getQuestItemsCount(MEKARA) + st.getQuestItemsCount(MORIGUL) <= 1 ): htmltext = str(npcId) + "-01.htm" st.set("wigoth", "1") elif ( st.getQuestItemsCount(ALECTIA) + st.getQuestItemsCount(TISHAS) + st.getQuestItemsCount(MEKARA) + st.getQuestItemsCount(MORIGUL) == 2 ): htmltext = str(npcId) + "-02.htm" st.set("wigoth", "2") elif ( st.getQuestItemsCount(ALECTIA) + st.getQuestItemsCount(TISHAS) + st.getQuestItemsCount(MEKARA) + st.getQuestItemsCount(MORIGUL) == 3 ): htmltext = str(npcId) + "-04.htm" st.set("wigoth", "3") elif ( st.getQuestItemsCount(ALECTIA) + st.getQuestItemsCount(TISHAS) + st.getQuestItemsCount(MEKARA) + st.getQuestItemsCount(MORIGUL) == 4 ): htmltext = str(npcId) + "-05.htm" st.set("wigoth", "4") elif ( st.getQuestItemsCount(ALECTIA) + st.getQuestItemsCount(TISHAS) + st.getQuestItemsCount(MEKARA) + st.getQuestItemsCount(MORIGUL) > 4 ): htmltext = str(npcId) + "-05.htm" elif npcId == WGB: # 威格特的亡靈 - 巡禮者寺院 if st.getInt("box") != 2: return "任務尚未完成。" if four == 1: if st.getQuestItemsCount(RELIC_PART) < 1000 and st.getQuestItemsCount(SEALED_BOX) > 0: htmltext = str(npcId) + "-02.htm" elif st.getQuestItemsCount(RELIC_PART) > 999 and st.getQuestItemsCount(SEALED_BOX) == 0: htmltext = str(npcId) + "-03.htm" elif st.getQuestItemsCount(RELIC_PART) > 999 and st.getQuestItemsCount(SEALED_BOX) > 0: htmltext = str(npcId) + "-04.htm" elif st.getQuestItemsCount(RELIC_PART) == 0 and st.getQuestItemsCount(SEALED_BOX) == 0: htmltext = str(npcId) + "-01.htm" elif four == 2: if st.getQuestItemsCount(RELIC_PART) < 1000 and st.getQuestItemsCount(SEALED_BOX) > 0: htmltext = str(npcId) + "-06.htm" elif st.getQuestItemsCount(RELIC_PART) > 999 and st.getQuestItemsCount(SEALED_BOX) == 0: htmltext = str(npcId) + "-07.htm" elif st.getQuestItemsCount(RELIC_PART) > 999 and st.getQuestItemsCount(SEALED_BOX) > 0: htmltext = str(npcId) + "-08.htm" elif st.getQuestItemsCount(RELIC_PART) == 0 and st.getQuestItemsCount(SEALED_BOX) == 0: htmltext = str(npcId) + "-05.htm" elif npcId in [COEA, COEB]: # 艾爾摩亞丁侍衛的亡靈 htmltext = str(npcId) + "-01.htm" elif npcId in [CSM, ESM, GSM, JSM]: # 陵墓管理員 if FourSepulchersManager.getInstance().IsEntryTime(): if player.isInParty(): if not player.getParty().isLeader(player): return "只有隊長可以申請。" else: partyMembers = [player] party = player.getParty() if party: partyMembers = party.getPartyMembers().toArray() for player in partyMembers: pst = player.getQuestState(qn) pst.set("party", "0") if player.getParty().getMemberCount() == 2: st.set("party", "2") elif player.getParty().getMemberCount() == 3: st.set("party", "3") elif player.getParty().getMemberCount() == 4: st.set("party", "4") elif player.getParty().getMemberCount() == 5: st.set("party", "5") elif player.getParty().getMemberCount() == 6: st.set("party", "6") elif player.getParty().getMemberCount() == 7: st.set("party", "7") elif player.getParty().getMemberCount() == 8: st.set("party", "8") else: st.set("party", "9") htmltext = str(npcId) + "-01.htm" else: st.set("party", "1") htmltext = str(npcId) + "-01.htm" else: htmltext = str(npcId) + "-02.htm" elif npcId in HGKB: # 男爵禮拜堂守門人 if FourSepulchersManager.getInstance().IsAttackTime(): if player.isInParty(): if not player.getParty().isLeader(player): return "只有隊長可以申請。" if not st.getInt("party") == player.getParty().getMemberCount(): return "隊伍成員錯誤。" if st.getQuestItemsCount(HALLS_KEY): partyMembers = [player] party = player.getParty() if party: partyMembers = party.getPartyMembers().toArray() for player in partyMembers: pst = player.getQuestState(qn) if pst.getQuestItemsCount(HALLS_KEY) < 1: return "隊伍成員沒有全部拿到鑰匙。" for player in partyMembers: npc.onBypassFeedback(player, "open_gate") for player in partyMembers: pst = player.getQuestState(qn) pst.takeItems(HALLS_KEY, -1) return return else: return HGKB_MSG else: if st.getInt("party") != 1: return "隊伍成員錯誤。" else: if st.getQuestItemsCount(HALLS_KEY): npc.onBypassFeedback(player, "open_gate") return else: return HGKB_MSG else: return "條件不符,無法進入。" elif npcId in HGKV: # 子爵禮拜堂守門人 if FourSepulchersManager.getInstance().IsAttackTime(): if player.isInParty(): if not player.getParty().isLeader(player): return "只有隊長可以申請。" if not st.getInt("party") == player.getParty().getMemberCount(): return "隊伍成員錯誤。" if st.getQuestItemsCount(HALLS_KEY): partyMembers = [player] party = player.getParty() if party: partyMembers = party.getPartyMembers().toArray() for player in partyMembers: pst = player.getQuestState(qn) if pst.getQuestItemsCount(HALLS_KEY) < 1: return "隊伍成員沒有全部拿到鑰匙。" for player in partyMembers: npc.onBypassFeedback(player, "open_gate") for player in partyMembers: pst = player.getQuestState(qn) pst.takeItems(HALLS_KEY, -1) return return else: return HGKV_MSG else: if st.getInt("party") != 1: return "隊伍成員錯誤。" else: if st.getQuestItemsCount(HALLS_KEY): npc.onBypassFeedback(player, "open_gate") return else: return HGKV_MSG else: return "條件不符,無法進入。" elif npcId in HGKC: # 伯爵禮拜堂守門人 if FourSepulchersManager.getInstance().IsAttackTime(): if player.isInParty(): if not player.getParty().isLeader(player): return "只有隊長可以申請。" if not st.getInt("party") == player.getParty().getMemberCount(): return "隊伍成員錯誤。" if st.getQuestItemsCount(HALLS_KEY): partyMembers = [player] party = player.getParty() if party: partyMembers = party.getPartyMembers().toArray() for player in partyMembers: pst = player.getQuestState(qn) if pst.getQuestItemsCount(HALLS_KEY) < 1: return "隊伍成員沒有全部拿到鑰匙。" for player in partyMembers: npc.onBypassFeedback(player, "open_gate") for player in partyMembers: pst = player.getQuestState(qn) pst.takeItems(HALLS_KEY, -1) return return else: return HGKC_MSG else: if st.getInt("party") != 1: return "隊伍成員錯誤。" else: if st.getQuestItemsCount(HALLS_KEY): npc.onBypassFeedback(player, "open_gate") return else: return HGKC_MSG else: return "條件不符,無法進入。" elif npcId in HGKM: # 侯爵禮拜堂守門人 if FourSepulchersManager.getInstance().IsAttackTime(): if player.isInParty(): if not player.getParty().isLeader(player): return "只有隊長可以申請。" if not st.getInt("party") == player.getParty().getMemberCount(): return "隊伍成員錯誤。" if st.getQuestItemsCount(HALLS_KEY): partyMembers = [player] party = player.getParty() if party: partyMembers = party.getPartyMembers().toArray() for player in partyMembers: pst = player.getQuestState(qn) if pst.getQuestItemsCount(HALLS_KEY) < 1: return "隊伍成員沒有全部拿到鑰匙。" for player in partyMembers: npc.onBypassFeedback(player, "open_gate") for player in partyMembers: pst = player.getQuestState(qn) pst.takeItems(HALLS_KEY, -1) return return else: return HGKM_MSG else: if st.getInt("party") != 1: return "隊伍成員錯誤。" else: if st.getQuestItemsCount(HALLS_KEY): npc.onBypassFeedback(player, "open_gate") return else: return HGKM_MSG else: return "條件不符,無法進入。" elif npcId in HGKD: # 公爵禮拜堂守門人 if FourSepulchersManager.getInstance().IsAttackTime(): if player.isInParty(): if not player.getParty().isLeader(player): return "只有隊長可以申請。" if not st.getInt("party") == player.getParty().getMemberCount(): return "隊伍成員錯誤。" if st.getQuestItemsCount(HALLS_KEY): partyMembers = [player] party = player.getParty() if party: partyMembers = party.getPartyMembers().toArray() for player in partyMembers: pst = player.getQuestState(qn) if pst.getQuestItemsCount(HALLS_KEY) < 1: return "隊伍成員沒有全部拿到鑰匙。" for player in partyMembers: npc.onBypassFeedback(player, "open_gate") for player in partyMembers: pst = player.getQuestState(qn) pst.takeItems(HALLS_KEY, -1) return return else: return HGKD_MSG else: if st.getInt("party") != 1: return "隊伍成員錯誤。" else: if st.getQuestItemsCount(HALLS_KEY): npc.onBypassFeedback(player, "open_gate") return else: return HGKD_MSG else: return "條件不符,無法進入。" return htmltext