123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576 |
- import sys
- from com.l2jserver.gameserver.model.quest import State
- from com.l2jserver.gameserver.model.quest import QuestState
- from com.l2jserver.gameserver.model.quest import Quest as JQuest
- from com.l2jserver.gameserver.instancemanager import FourSepulchersManager
- qn = "620_FourGoblets"
- #NPC
- NAMELESS_SPIRIT = 31453
- GHOST_OF_WIGOTH_1 = 31452
- GHOST_OF_WIGOTH_2 = 31454
- CONQ_SM = 31921
- EMPER_SM = 31922
- SAGES_SM = 31923
- JUDGE_SM = 31924
- GHOST_CHAMBERLAIN_1 = 31919
- GHOST_CHAMBERLAIN_2 = 31920
- #ITEMS
- ENTRANCE_PASS = 7075
- GRAVE_PASS = 7261
- GOBLETS = [7256,7257,7258,7259]
- RELIC = 7254
- SEALED_BOX = 7255
- #REWARDS
- ANTIQUE_BROOCH = 7262
- RCP_REWARDS = [ 6881,6883,6885,6887,6891,6893,6895,6897,6899,7580 ]
- class Quest (JQuest) :
- def __init__(self,id,name,descr):
- JQuest.__init__(self,id,name,descr)
- self.questItemIds = [ANTIQUE_BROOCH,SEALED_BOX,7256,7257,7258,7259,GRAVE_PASS]
- def onTalk (self,npc,player) :
- htmltext = Quest.getNoQuestMsg(player)
- st = self.getQuestState(player, True)
- id = st.getState()
- if id == State.CREATED :
- st.set("cond","0")
- npcId = npc.getId()
- if npcId == NAMELESS_SPIRIT:
- if int(st.get("cond")) == 0 :
- if st.getPlayer().getLevel() >= 74 :
- htmltext = "31453-1.htm"
- else :
- htmltext = "31453-12.htm"
- st.exitQuest(1)
- elif int(st.get("cond")) == 1 :
- if st.getQuestItemsCount(GOBLETS[0]) >= 1 and st.getQuestItemsCount(GOBLETS[1]) >= 1 and st.getQuestItemsCount(GOBLETS[2]) >= 1 and st.getQuestItemsCount(GOBLETS[3]) >= 1 :
- htmltext = "31453-15.htm"
- else :
- htmltext = "31453-14.htm"
- elif int(st.get("cond")) == 2 :
- htmltext = "31453-17.htm"
- elif npcId == GHOST_OF_WIGOTH_1 :
- if st.getInt("cond") == 1:
- if st.getQuestItemsCount(GOBLETS[0]) + st.getQuestItemsCount(GOBLETS[1]) + st.getQuestItemsCount(GOBLETS[2]) + st.getQuestItemsCount(GOBLETS[3]) == 1 :
- htmltext = "31452-1.htm"
- elif st.getQuestItemsCount(GOBLETS[0]) + st.getQuestItemsCount(GOBLETS[1]) + st.getQuestItemsCount(GOBLETS[2]) + st.getQuestItemsCount(GOBLETS[3]) > 1 :
- htmltext = "31452-2.htm"
- elif st.getInt("cond") == 2:
- htmltext = "31452-2.htm"
- elif npcId == GHOST_OF_WIGOTH_2 :
- if st.getQuestItemsCount(RELIC) >= 1000 :
- if st.getQuestItemsCount(SEALED_BOX) >= 1 :
- if st.getQuestItemsCount(GOBLETS[0]) >= 1 and st.getQuestItemsCount(GOBLETS[1]) >= 1 and st.getQuestItemsCount(GOBLETS[2]) >= 1 and st.getQuestItemsCount(GOBLETS[3]) >= 1 :
- htmltext = "31454-4.htm"
- else :
- if st.getQuestItemsCount(GOBLETS[0]) + st.getQuestItemsCount(GOBLETS[1]) + st.getQuestItemsCount(GOBLETS[2]) + st.getQuestItemsCount(GOBLETS[3]) > 1 :
- htmltext = "31454-8.htm"
- else :
- htmltext = "31454-12.htm"
- else :
- if st.getQuestItemsCount(GOBLETS[0]) >= 1 and st.getQuestItemsCount(GOBLETS[1]) >= 1 and st.getQuestItemsCount(GOBLETS[2]) >= 1 and st.getQuestItemsCount(GOBLETS[3]) >= 1 :
- htmltext = "31454-3.htm"
- else :
- if st.getQuestItemsCount(GOBLETS[0]) + st.getQuestItemsCount(GOBLETS[1]) + st.getQuestItemsCount(GOBLETS[2]) + st.getQuestItemsCount(GOBLETS[3]) > 1 :
- htmltext = "31454-7.htm"
- else :
- htmltext = "31454-11.htm"
- else :
- if st.getQuestItemsCount(SEALED_BOX) >= 1 :
- if st.getQuestItemsCount(GOBLETS[0]) >= 1 and st.getQuestItemsCount(GOBLETS[1]) >= 1 and st.getQuestItemsCount(GOBLETS[2]) >= 1 and st.getQuestItemsCount(GOBLETS[3]) >= 1 :
- htmltext = "31454-2.htm"
- else :
- if st.getQuestItemsCount(GOBLETS[0]) + st.getQuestItemsCount(GOBLETS[1]) + st.getQuestItemsCount(GOBLETS[2]) + st.getQuestItemsCount(GOBLETS[3]) > 1 :
- htmltext = "31454-6.htm"
- else :
- htmltext = "31454-10.htm"
- else :
- if st.getQuestItemsCount(GOBLETS[0]) >= 1 and st.getQuestItemsCount(GOBLETS[1]) >= 1 and st.getQuestItemsCount(GOBLETS[2]) >= 1 and st.getQuestItemsCount(GOBLETS[3]) >= 1 :
- htmltext = "31454-1.htm"
- else :
- if st.getQuestItemsCount(GOBLETS[0]) + st.getQuestItemsCount(GOBLETS[1]) + st.getQuestItemsCount(GOBLETS[2]) + st.getQuestItemsCount(GOBLETS[3]) > 1 :
- htmltext = "31454-5.htm"
- else :
- htmltext = "31454-9.htm"
- elif npcId == CONQ_SM :
- htmltext = "31921-E.htm"
- elif npcId == EMPER_SM :
- htmltext = "31922-E.htm"
- elif npcId == SAGES_SM :
- htmltext = "31923-E.htm"
- elif npcId == JUDGE_SM :
- htmltext = "31924-E.htm"
- elif npcId == GHOST_CHAMBERLAIN_1 :
- htmltext = "31919-1.htm"
- return htmltext
- def onKill (self,npc,player,isPet) :
- st = self.getQuestState(player, False)
- npcId = npc.getId()
- if st:
- if int(st.get("cond")) == 1 or int(st.get("cond")) == 2 :
- if npcId in range(18120,18256) :
- if self.getRandom(100) < 30 :
- st.giveItems(SEALED_BOX,1)
- st.playSound("ItemSound.quest_itemget")
- return
- def onAdvEvent (self,event,npc,player) :
- htmltext = event
- st = self.getQuestState(player, False)
- 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 = self.getRandom(5)
- if rnd == 0:
- st.giveItems(57,10000)
- reward = 1
- elif rnd == 1:
- if self.getRandom(1000) < 848 :
- reward = 1
- i = self.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 self.getRandom(1000) < 323 :
- reward = 1
- i = self.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 self.getRandom(1000) < 847 :
- reward = 1
- i = self.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 self.getRandom(1000) < 251 :
- reward = 1
- i = self.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 self.getRandom(1000) < 31 :
- reward = 1
- i = self.getRandom(1000)
- if i < 223 :
- st.giveItems(730,1)
- elif i < 893 :
- st.giveItems(948,1)
- else:
- st.giveItems(960,1)
- if self.getRandom(1000) < 5 :
- reward = 1
- i = self.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 self.getRandom(1000) < 329 :
- reward = 1
- i = self.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 self.getRandom(1000) < 54 :
- reward = 1
- i = self.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 self.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.getId())+"-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.getId())+"-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 = self.getRandom(5)
- if rnd == 0:
- st.giveItems(57,10000)
- reward = 1
- elif rnd == 1:
- if self.getRandom(1000) < 848 :
- reward = 1
- i = self.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 self.getRandom(1000) < 323 :
- reward = 1
- i = self.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 self.getRandom(1000) < 847 :
- reward = 1
- i = self.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 self.getRandom(1000) < 251 :
- reward = 1
- i = self.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 self.getRandom(1000) < 31 :
- reward = 1
- i = self.getRandom(1000)
- if i < 223 :
- st.giveItems(730,1)
- elif i < 893 :
- st.giveItems(948,1)
- else:
- st.giveItems(960,1)
- if self.getRandom(1000) < 5 :
- reward = 1
- i = self.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 self.getRandom(1000) < 329 :
- reward = 1
- i = self.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 self.getRandom(1000) < 54 :
- reward = 1
- i = self.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 self.getRandom(2) == 0 :
- htmltext = "31919-4.htm"
- else :
- htmltext = "31919-5.htm"
- else :
- htmltext = "31919-6.htm"
- elif event.isdigit() and int(event) in RCP_REWARDS :
- st.takeItems(RELIC,1000)
- st.giveItems(int(event),1)
- htmltext = "31454-17.htm"
- return htmltext
- QUEST = Quest(620,qn,"Four Goblets")
- QUEST.addStartNpc(NAMELESS_SPIRIT)
- QUEST.addTalkId(NAMELESS_SPIRIT)
- for npcTalkId in [GHOST_OF_WIGOTH_1,GHOST_OF_WIGOTH_2,CONQ_SM,EMPER_SM,SAGES_SM,JUDGE_SM,GHOST_CHAMBERLAIN_1,GHOST_CHAMBERLAIN_2] :
- QUEST.addTalkId(npcTalkId)
- for npcStartId in [CONQ_SM,EMPER_SM,SAGES_SM,JUDGE_SM,GHOST_CHAMBERLAIN_1,GHOST_CHAMBERLAIN_2] :
- QUEST.addStartNpc(npcStartId)
- for npcKillId in range(18120,18256) :
- QUEST.addKillId(npcKillId)
|