123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630 |
- #Made by Emperorc
- 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.util import Rnd
- from com.l2jserver.gameserver.network.serverpackets import NpcSay
- qn = "335_TheSongOfTheHunter"
- #NPCS
- Grey = 30744
- Tor = 30745
- Cybellin = 30746
- #Items
- Cyb_Dagger = 3471
- License_1 = 3692
- License_2 = 3693
- Leaf_Pin = 3694
- Test_Instructions_1 = 3695
- Test_Instructions_2 = 3696
- Cyb_Req = 3697
- #Mobs
- Breka_Orc_Warrior = 20271
- Windsus = 20553
- Tarlk_Bugbear_Warrior = 20571
- Gremlin_Filcher = 27149
- Mobs = [Breka_Orc_Warrior, Windsus, Tarlk_Bugbear_Warrior, Gremlin_Filcher]
- Lizardmen = [20578,20579,20581,20582,20641,20642,20643]
- #Droplist Format- npcId:[itemId,itemAmount,chance]
- Level_1 = {
- 20550 : [3709,40,75], #Gaurdian Basilisk
- 20581 : [3710,20,50], #Leto Lizardman Shaman
- 27140 : [3711,1,100], #Breka Overlord Haka
- 27141 : [3712,1,100], #Breka Overlord Jaka
- 27142 : [3713,1,100], #Breka Overlord Marka
- 27143 : [3714,1,100], #Windsus Aleph
- 20563 : [3715,20,50], #Manashen Gargoyle
- 20565 : [3715,20,50], #Enchanted Stone Golemn
- 20555 : [3716,30,70], #Giant Fungus
- }
- Level_2 = {
- 20586 : [3717,20,50], #Timak Orc Warrior
- 20560 : [3718,20,50], #Trisalim Spider
- 20561 : [3718,20,50], #Trisalim Tarantula
- 20591 : [3719,30,100], #Valley Treant
- 20597 : [3719,30,100], #Valley Treant Elder
- 20675 : [3720,20,50], #Tairim
- 20660 : [3721,20,50], #Archer of Greed
- 27144 : [3722,1,100], #Tarlk Raider Athu
- 27145 : [3723,1,100], #Tarlk Raider Lanka
- 27146 : [3724,1,100], #Tarlk Raider Triska
- 27147 : [3725,1,100], #Tarlk Raider Motura
- 27148 : [3726,1,100], #Tarlk Raider Kalath
- }
- Grey_Advance = [
- #level 1
- [[3709],40],
- [[3710],20],
- [[3711,3712,3713],1],
- [[3714],1],
- [[3715],20],
- [[3716],30],
- #level 2
- [[3717],20],
- [[3718],20],
- [[3719],30],
- [[3720],20],
- [[3721],20],
- [[3722,3723,3724,3725,3726],1]
- ]
- #Droplist Format- npcId : [itemRequired,itemGive,itemToGiveAmount,itemAmount,chance]
- Tor_requests_1 = {
- 20578 : [3727,3769,'1',40,80], #Leto Lizardman Archer
- 20579 : [3727,3769,'1',40,83], #Leto Lizardman Soldier
- 20586 : [3728,3770,'1',50,89], #Timak Orc Warrior
- 20588 : [3728,3770,'1',50,100], #Timak Orc Overlord
- 20565 : [3729,3771,'1',50,100], #Enchanted Stone Golem
- 20556 : [3730,3772,'1',30,50], #Giant Monster Eye
- 20557 : [3731,3773,'1',40,80], #Dire Wyrm
- 20550 : [3732,3774,'Rnd.get(2) + 1',100,100], #Guardian Basilisk
- 20552 : [3733,3775,'1',50,100], #Fettered Soul
- 20553 : [3734,3776,'1',30,50], #Windsus
- 20554 : [3735,3777,'2',100,100],#Grandis
- 20631 : [3736,3778,'1',50,100], #Taik Orc Archer
- 20632 : [3736,3778,'1',50,93], #Taik Orc Warrior
- 20600 : [3737,3779,'1',30,50], #Karul Bugbear
- 20601 : [3738,3780,'1',40,62], #Tamlin Orc
- 20602 : [3738,3780,'1',40,80], #Tamlin Orc Archer
- 27157 : [3739,3781,'1',1,100], #Leto Chief Narak
- 20567 : [3740,3782,'1',50,50], #Enchanted Gargoyle
- 20269 : [3741,3783,'1',50,93], #Breka Orc Shaman
- 20271 : [3741,3783,'1',50,100], #Breka Orc Warrior
- 27156 : [3742,3784,'1',1,100], #Leto Shaman Ketz
- 27158 : [3743,3785,'1',1,100], #Timak Raider Kaikee
- 20603 : [3744,3786,'1',30,50], #Kronbe Spider
- 27160 : [3746,3788,'1',1,100], #Gok Magok
- 27164 : [3747,3789,'1',1,100] #Karul Chief Orooto
- }
- #Droplist Format- npcId : [itemRequired,itemGive,itemAmount,chance]
- Tor_requests_2 = {
- 20560 : [3749,3791,40,66], #Trisalim Spider
- 20561 : [3749,3791,40,75], #Trisalim Tarantula
- 20633 : [3750,3792,50,53], #Taik Orc Shaman
- 20634 : [3750,3792,50,99], #Taik Orc Captain
- 20641 : [3751,3793,40,88], #Harit Lizardman Grunt
- 20642 : [3751,3793,40,88], #Harit Lizardman Archer
- 20643 : [3751,3793,40,91], #Harit Lizardman Warrior
- 20661 : [3752,3794,20,50], #Hatar Ratman Thief
- 20662 : [3752,3794,20,52], #Hatar Ratman Boss
- 20667 : [3753,3795,30,90], #Farcran
- 20589 : [3754,3796,40,49], #Fline
- 20590 : [3755,3797,40,51], #Liele
- 20592 : [3756,3798,40,80], #Satyr
- 20598 : [3756,3798,40,100], #Satyr Elder
- 20682 : [3758,3800,30,70], #Vanor Silenos Grunt
- 20683 : [3758,3800,30,85], #Vanor Silenos Scout
- 20684 : [3758,3800,30,90], #Vanor Silenos Warrior
- 20571 : [3759,3801,30,63], #Tarlk Bugbear Warrior
- 27159 : [3760,3802,1,100], #Timak Overlord Okun
- 27161 : [3761,3803,1,100], #Taik Overlord Kakran
- 20639 : [3762,3804,40,86], #Mirror
- 20664 : [3763,3805,20,77], #Deprive
- 20593 : [3764,3806,20,68], #Unicorn
- 20599 : [3764,3806,20,86], #Unicorn Elder
- 27163 : [3765,3807,1,100], #Vanor Elder Kerunos
- 20659 : [3766,3808,20,73], #Grave Wanderer
- 27162 : [3767,3809,1,100], #Hatar Chieftain Kubel
- 20676 : [3768,3810,10,64] #Judge of Marsh
- }
- #FilcherDropList Format- reqId : [item,amount,bonus]
- Filcher = {
- 3752 : [3794,20,3],
- 3754 : [3796,40,5],
- 3755 : [3797,40,5],
- 3762 : [3804,40,5]
- }
- #SpawnList Format- npcId : [item1,item2,npcToSpawn]
- Tor_requests_tospawn = {
- 20582 : [3739,3781,27157], #Leto Lizardman Overlord
- 20581 : [3742,3784,27156], #Leto Lizardman Shaman
- 20586 : [3743,3785,27158], #Timak Orc Warrior
- 20554 : [3746,3788,27160], #Grandis
- #level 2
- 20588 : [3760,3802,27159], #Timak Orc Overlord
- 20634 : [3761,3803,27161], #Tiak Orc Captain
- 20686 : [3765,3807,27163], #Vanor Silenos Chieftan
- 20662 : [3767,3809,27162] #Hatar Ratman Boss
- }
- #RewardsList Format- requestId : [item,quantity,rewardAmount]
- Tor_Rewards_1 = {
- 3727 : [3769,40,2090],
- 3728 : [3770,50,6340],
- 3729 : [3771,50,9480],
- 3730 : [3772,30,9110],
- 3731 : [3773,40,8690],
- 3732 : [3774,100,9480],
- 3733 : [3775,50,11280],
- 3734 : [3776,30,9640],
- 3735 : [3777,100,9180],
- 3736 : [3778,50,5160],
- 3737 : [3779,30,3140],
- 3738 : [3780,40,3160],
- 3739 : [3781,1,6370],
- 3740 : [3782,50,19080],
- 3741 : [3783,50,17730],
- 3742 : [3784,1,5790],
- 3743 : [3785,1,8560],
- 3744 : [3786,30,8320],
- 3746 : [3788,1,27540],
- 3747 : [3789,1,20560],
- }
- Tor_Rewards_2 = {
- 3749 : [3791,40,7250],
- 3750 : [3792,50,7160],
- 3751 : [3793,40,6580],
- 3752 : [3794,20,10100],
- 3753 : [3795,30,13000],
- 3754 : [3796,40,7660],
- 3755 : [3797,40,7660],
- 3756 : [3798,40,11260],
- 3758 : [3800,30,8810],
- 3759 : [3801,30,7350],
- 3760 : [3802,1,8760],
- 3761 : [3803,1,9380],
- 3762 : [3804,40,17820],
- 3763 : [3805,20,17540],
- 3764 : [3806,20,14160],
- 3765 : [3807,1,15960],
- 3766 : [3808,20,39100],
- 3767 : [3809,1,39550],
- 3768 : [3810,10,41200]
- }
- #Format item : adenaAmount
- Cyb_Rewards = {
- 3699 : 3400,
- 3700 : 6800,
- 3701 : 13600,
- 3702 : 27200,
- 3703 : 54400,
- 3704 : 108800,
- 3705 : 217600,
- 3706 : 435200,
- 3707 : 870400
- }
- Tor_menu = [
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3727\">C: Obtain 40 charms of Kadesh</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3728\">C: Collect 50 Timak Jade Necklaces</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3729\">C: Gather 50 Enchanted Golem Shards</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3730\">C: Collect and bring back 30 pieces of Giant Monster Eye Meat</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3731\">C: Collect and bring back 40 Dire Wyrm Eggs</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3732\">C: Collect and bring back 100 guardian basilisk talons</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3733\">C: Collect and bring back 50 revenants chains</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3734\">C: Collect and bring back 30 Windsus Tusks</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3735\">C: Collect and bring back 100 Grandis Skulls</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3736\">C: Collect and bring back 50 Taik Obsidian Amulets</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3737\">C: Bring me 30 heads of karul bugbears</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3738\">C: Collect 40 Tamlin Ivory Charms</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3739\">B: Bring me the head of Elder Narak of the leto lizardmen</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3740\">B: Collect and bring back 50 Enchanted Gargoyle Horns</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3741\">B: Collect and bring back 50 Coiled Serpent Totems</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3742\">B: Bring me the totem of the Serpent Demon Kadesh</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3743\">B: Bring me the head of Kaikis</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3744\">B: Collect and bring back 30 Kronbe Venom Sacs</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3746\">A: Recover the precious stone tablet that was stolen from a Dwarven cargo wagon by grandis</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3747\">A: Recover the precious Book of Shunaiman</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3749\">C: Collect and bring back 40 Trisalim Venom Sacs</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3750\">C: Collect and bring back 50 Taik Orc Totems</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3751\">C: Collect and bring back 40 Harit Lizardman barbed necklaces</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3752\">C: Collect and bring back 20 coins of the old empire</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3753\">C: Kill 30 farcrans and bring back their skins</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3754\">C: Collect and bring back 40 Tempest Shards</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3755\">C: Collect and bring back 40 Tsunami Shards</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3756\">C: Collect and bring back 40 Satyr Manes</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3758\">C: Collect and bring back 30 Shillien Manes</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3759\">C: Collect and bring back 30 tarlk bugbear totems</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3760\">B: Bring me the head of Okun</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3761\">B: Bring me the head of Kakran</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3762\">B: Collect and bring back 40 narcissus soulstones</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3763\">B: Collect and bring back 20 Deprive Eyes</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3764\">B: Collect and bring back 20 horns of summon unicorn</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3765\">B: Bring me the golden mane of Kerunos</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3766\">A: Bring back 20 skulls of undead executed criminals</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3767\">A: Recover the stolen bust of the late King Travis</a><br>",
- "<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3768\">A: Recover 10 swords of Cadmus</a><br>"
- ]
- def HasItems(st,check) :
- count = 0
- for list in Grey_Advance :
- count2 = 0
- for item in list[0] :
- if not st.getQuestItemsCount(item) >= list[1] :
- break
- count2 += 1
- if count2 == len(list[0]) :
- count += 1
- if count >= check :
- return 1
- return 0
- def AutoChat(npc,text) :
- chars = npc.getKnownList().getKnownPlayers().values().toArray()
- if chars != None:
- for pc in chars :
- sm = NpcSay(npc.getObjectId(), 0, npc.getId(), text)
- pc.sendPacket(sm)
- def HasRequestCompleted(st,level) :
- rewards = Tor_Rewards_1
- if level == 2 :
- rewards = Tor_Rewards_2
- for req in rewards.keys() :
- if st.getQuestItemsCount(req) :
- if st.getQuestItemsCount(rewards[req][0]) >= rewards[req][1] :
- return req
- return 0
- class Quest (JQuest) :
- def __init__(self,id,name,descr):
- JQuest.__init__(self,id,name,descr)
- self.questItemIds = range(3692,3811) + [3471]
- def onAdvEvent (self,event,npc,player):
- st = self.getQuestState(player, False)
- if not st: return
- htmltext = event
- if event == "30744-03.htm" :
- st.setState(State.STARTED)
- st.playSound("ItemSound.quest_accept")
- st.giveItems(Test_Instructions_1,1)
- st.set("cond","1")
- #set Memo = 0
- elif event == "30744-32.htm" :
- st.playSound("ItemSound.quest_finish")
- if st.getQuestItemsCount(Leaf_Pin) >= 20 :
- htmltext = "30744-33.htm"
- st.giveItems(57,20000)
- st.exitQuest(1)
- elif event == "30744-19.htm" :
- if not HasItems(st,1) :
- st.giveItems(Test_Instructions_2,1)
- htmltext = "30744-18.htm"
- elif event == "30745-03.htm" :
- if st.getQuestItemsCount(Test_Instructions_2) :
- htmltext = "30745-04.htm"
- elif event == "Tor_list_1" :
- if not st.getInt("hasTask") :
- htmltext = "<html><body>Guild Member Tor:<br>"
- pins = st.getQuestItemsCount(Leaf_Pin)
- reply_0 = Rnd.get(12)
- reply_1 = Rnd.get(12)
- reply_2 = Rnd.get(12)
- reply_3 = Rnd.get(12)
- reply_4 = Rnd.get(12)
- if Rnd.get(100) < 20 :
- if pins < 4 and pins :
- reply_0 = Rnd.get(6) + 12
- reply_2 = Rnd.get(6)
- reply_3 = Rnd.get(6) + 6
- elif pins >= 4 :
- reply_0 = Rnd.get(6) + 6
- if not Rnd.get(20) :
- reply_1 = Rnd.get(2) + 18
- reply_2 = Rnd.get(6)
- reply_3 = Rnd.get(6) + 6
- elif pins >= 4 :
- if not Rnd.get(20) :
- reply_1 = Rnd.get(2) + 18
- reply_2 = Rnd.get(6)
- reply_3 = Rnd.get(6) + 6
- htmltext += Tor_menu[reply_0] + Tor_menu[reply_1] + Tor_menu[reply_2] + Tor_menu[reply_3] + Tor_menu[reply_4]
- htmltext += "</body></html>"
- elif event == "Tor_list_2" :
- if not st.getInt("hasTask") :
- htmltext = "<html><body>Guild Member Tor:<br>"
- pins = st.getQuestItemsCount(Leaf_Pin)
- reply_0 = Rnd.get(10)
- reply_1 = Rnd.get(10)
- reply_2 = Rnd.get(5)
- reply_3 = Rnd.get(5) + 5
- reply_4 = Rnd.get(10)
- if Rnd.get(100) < 20 :
- if pins < 4 and pins:
- reply_0 = Rnd.get(6) + 10
- elif pins >= 4 :
- reply_0 = Rnd.get(6) + 10
- if not Rnd.get(20):
- reply_1 = Rnd.get(3) + 16
- elif pins >= 4 :
- if not Rnd.get(20) :
- reply_1 = Rnd.get(3) + 16
- htmltext += Tor_menu[reply_0 + 20] + Tor_menu[reply_1 + 20] + Tor_menu[reply_2 + 20] + Tor_menu[reply_3 + 20] + Tor_menu[reply_4 + 20]
- htmltext += "</body></html>"
- elif event == "30745-10.htm" :
- st.takeItems(Leaf_Pin,1)
- for item in range(3727,3811) :
- st.takeItems(item,-1)
- st.set("hasTask","0")
- elif event == "30746-03.htm" :
- if not st.getQuestItemsCount(Cyb_Req) :
- st.giveItems(Cyb_Req,1)
- if not st.getQuestItemsCount(3471) :
- st.giveItems(3471,1)
- if not st.getQuestItemsCount(3698) :
- st.giveItems(3698,1)
- st.takeItems(6708,-1)
- elif event == "30746-08.htm" :
- for item in Cyb_Rewards.keys() :
- if st.getQuestItemsCount(item) :
- st.takeItems(item,-1)
- st.giveItems(57,Cyb_Rewards[item])
- break
- elif event == "30746-12.htm" :
- st.takeItems(3698,-1)
- st.takeItems(3697,-1)
- st.takeItems(3471,-1)
- elif event.isdigit() :
- event = int(event)
- st.giveItems(event,1)
- st.set("hasTask","1")
- event = event - 3712
- htmltext = "30745-" + str(event) + ".htm"
- return htmltext
- def onTalk (self,npc,player):
- htmltext = Quest.getNoQuestMsg(player)
- st = self.getQuestState(player, True)
- if not st : return htmltext
- npcId = npc.getId()
- cond = st.getInt("cond")
- id = st.getState()
- level = player.getLevel()
- bracelet_1 = st.getQuestItemsCount(License_1)
- bracelet_2 = st.getQuestItemsCount(License_2)
- if npcId == Grey :
- if id == State.CREATED :
- if level >= 35 :
- htmltext = "02"
- else :
- htmltext = "01"
- elif cond == 1 :
- if HasItems(st,3) :
- htmltext = "12"
- st.set("cond","2")
- for item in range(3709,3717) :
- st.takeItems(item,-1)
- st.takeItems(Test_Instructions_1,-1)
- st.giveItems(License_1,1)
- else :
- htmltext = "11"
- elif cond == 2 :
- instructions = st.getQuestItemsCount(Test_Instructions_2)
- if level < 45 and bracelet_1 :
- htmltext = "13"
- elif level >= 45 and bracelet_1 and not instructions :
- htmltext = "16"
- elif instructions :
- if HasItems(st,3) :
- htmltext = "28"
- st.set("cond","3")
- for item in range(3718,3727) :
- st.takeItems(item,-1)
- st.takeItems(Test_Instructions_2,-1)
- st.takeItems(License_1,-1)
- st.giveItems(License_2,1)
- else :
- htmltext = "27"
- elif cond == 3 :
- htmltext = "29"
- elif npcId == Tor :
- if not bracelet_1 and not bracelet_2 :
- htmltext = "01"
- elif bracelet_1 :
- req = HasRequestCompleted(st,1)
- if not st.getInt("hasTask") :
- if level >= 45 :
- if st.getQuestItemsCount(Test_Instructions_2) :
- htmltext = "04"
- else :
- htmltext = "05"
- else :
- htmltext = "02"
- elif req :
- htmltext = "12"
- item,quantity,reward = Tor_Rewards_1[req]
- st.giveItems(Leaf_Pin,1)
- st.giveItems(57,reward)
- st.playSound("ItemSound.quest_middle")
- st.set("hasTask","0")
- st.takeItems(req,-1)
- st.takeItems(item,-1)
- else :
- htmltext = "08"
- elif bracelet_2 :
- req = HasRequestCompleted(st,2)
- if not st.getInt("hasTask") :
- htmltext = "06"
- elif req :
- htmltext = "13"
- item,quantity,reward = Tor_Rewards_2[req]
- st.giveItems(Leaf_Pin,1)
- st.giveItems(57,reward)
- st.playSound("ItemSound.quest_middle")
- st.set("hasTask","0")
- st.takeItems(req,-1)
- st.takeItems(item,-1)
- else :
- htmltext = "08"
- elif npcId == Cybellin :
- if not bracelet_1 and not bracelet_2 :
- htmltext = "01"
- elif bracelet_1 or bracelet_2 :
- if not st.getQuestItemsCount(Cyb_Req) :
- htmltext = "02"
- elif st.getQuestItemsCount(3698) :
- htmltext = "05"
- elif st.getQuestItemsCount(3707) :
- htmltext = "07"
- st.takeItems(3707,-1)
- st.giveItems(57,Cyb_Rewards[3707])
- elif st.getQuestItemsCount(3708) :
- htmltext = "11"
- st.takeItems(3708,-1)
- elif st.getQuestItemsCount(3699) or st.getQuestItemsCount(3700) or st.getQuestItemsCount(3701) or st.getQuestItemsCount(3702) or \
- st.getQuestItemsCount(3703) or st.getQuestItemsCount(3704) or st.getQuestItemsCount(3705) or st.getQuestItemsCount(3706) :
- htmltext = "06"
- else :
- htmltext = "10"
- if htmltext.isdigit() :
- htmltext = str(npcId) + "-" + htmltext + ".htm"
- return htmltext
- def onKill(self,npc,player,isPet):
- st = self.getQuestState(player, False)
- if not st : return
- npcId = npc.getId()
- cond = st.getInt("cond")
- rand = Rnd.get(100)
- instructions_1 = st.getQuestItemsCount(Test_Instructions_1)
- instructions_2 = st.getQuestItemsCount(Test_Instructions_2)
- if cond == 1 and instructions_1 :
- if npcId in Level_1.keys() :
- item,amount,chance = Level_1[npcId]
- if rand < chance and st.getQuestItemsCount(item) < amount :
- st.giveItems(item,1)
- if st.getQuestItemsCount(item) >= amount :
- st.playSound("ItemSound.quest_middle")
- else :
- st.playSound("ItemSound.quest_itemget")
- elif npcId == Breka_Orc_Warrior and rand < 10 :
- if st.getQuestItemsCount(3711) == 0 :
- st.addSpawn(27140,300000)
- elif st.getQuestItemsCount(3712) == 0 :
- st.addSpawn(27141,300000)
- elif st.getQuestItemsCount(3713) == 0 :
- st.addSpawn(27142,300000)
- elif npcId == Windsus and not st.getQuestItemsCount(3714) and rand < 10 :
- st.addSpawn(27143,300000)
- elif cond == 2 :
- if instructions_2 :
- if npcId in Level_2.keys() :
- item,amount,chance = Level_2[npcId]
- if rand < chance and st.getQuestItemsCount(item) < amount :
- st.giveItems(item,1)
- if st.getQuestItemsCount(item) >= amount :
- st.playSound("ItemSound.quest_middle")
- else :
- st.playSound("ItemSound.quest_itemget")
- elif npcId == Tarlk_Bugbear_Warrior and rand < 10 :
- if st.getQuestItemsCount(3722) == 0 :
- st.addSpawn(27144,300000)
- elif st.getQuestItemsCount(3723) == 0 :
- st.addSpawn(27145,300000)
- elif st.getQuestItemsCount(3724) == 0 :
- st.addSpawn(27146,300000)
- elif st.getQuestItemsCount(3725) == 0 :
- st.addSpawn(27147,300000)
- elif st.getQuestItemsCount(3726) == 0 :
- st.addSpawn(27148,300000)
- elif npcId in Tor_requests_1.keys() :
- req,give,giveAmount,amount,chance = Tor_requests_1[npcId]
- if rand < chance and st.getQuestItemsCount(req) and st.getQuestItemsCount(give) < amount :
- st.giveItems(give,eval(giveAmount))
- if st.getQuestItemsCount(give) >= amount :
- st.playSound("ItemSound.quest_middle")
- else :
- st.playSound("ItemSound.quest_itemget")
- if npcId in [27160,27164] and Rnd.get(2) :
- st.addSpawn(27150,300000)
- st.addSpawn(27150,300000)
- AutoChat(npc,"We will destroy the legacy of the ancient empire!")
- elif cond == 3 :
- if npcId in Tor_requests_2.keys() :
- req,give,amount,chance = Tor_requests_2[npcId]
- if st.getQuestItemsCount(req) and st.getQuestItemsCount(give) < amount :
- if rand < chance :
- st.giveItems(give,1)
- if st.getQuestItemsCount(give) >= amount :
- st.playSound("ItemSound.quest_middle")
- else :
- st.playSound("ItemSound.quest_itemget")
- if npcId == 27162 and Rnd.get(2) :
- st.addSpawn(27150,300000)
- st.addSpawn(27150,300000)
- AutoChat(npc,"We will destroy the legacy of the ancient empire!")
- if npcId in [20661,20662,20589,20590,20639] and not Rnd.get(20) :
- st.addSpawn(Gremlin_Filcher,300000)
- AutoChat(npc,"Get out! The jewels are mine!")
- elif npcId == Gremlin_Filcher :
- req = 0
- for item in Filcher.keys() :
- if st.getQuestItemsCount(item) :
- req = item
- break
- if req :
- item,amount,bonus = Filcher[req]
- if st.getQuestItemsCount(item) < amount :
- st.giveItems(item,bonus)
- if st.getQuestItemsCount(item) >= amount :
- st.playSound("ItemSound.quest_middle")
- else :
- st.playSound("ItemSound.quest_itemget")
- AutoChat(npc,"What!")
- if npcId in Tor_requests_tospawn.keys() and rand < 10:
- it1,it2,id = Tor_requests_tospawn[npcId]
- if st.getQuestItemsCount(it1) and not st.getQuestItemsCount(it2) :
- st.addSpawn(id,300000)
- if npcId in Lizardmen and player.getActiveWeaponItem() and player.getActiveWeaponItem().getId() == Cyb_Dagger and st.getQuestItemsCount(Cyb_Req) and not st.getQuestItemsCount(3708):
- if Rnd.get(2) :
- if cond == 2 or cond == 3 :
- for item in range(3698,3707) :
- if st.getQuestItemsCount(item) :
- st.giveItems(item+1,1)
- st.takeItems(item,-1)
- if item >= 3703 :
- st.playSound("ItemSound.quest_jackpot")
- break
- else :
- for item in range(3698,3707) :
- st.takeItems(item,-1)
- st.giveItems(3708,1)
- return
- QUEST = Quest(335,qn,"The Song of the Hunter")
- QUEST.addStartNpc(Grey)
- QUEST.addTalkId(Grey)
- QUEST.addTalkId(Tor)
- QUEST.addTalkId(Cybellin)
- npcs = []
- for npc in Level_1.keys() + Level_2.keys() + Tor_requests_1.keys() + Tor_requests_2.keys() + Tor_requests_tospawn.keys() + Mobs :
- if npc not in npcs :
- QUEST.addKillId(npc)
- npcs.append(npc)
- del npcs
|