Herbs from Pailaka
Posted: Thu Sep 30, 2010 3:31 pm
Well, i cant understand whats wrong with this script but on Pailaka herbs are autolooted (normaly they are not - only in Pailaka). They stuck in inventory and u can use them whole time without any reuse. Its strange.
Code: Select all
import sysfrom com.l2jserver.gameserver.model.actor.instance import L2PcInstancefrom com.l2jserver.gameserver.instancemanager import InstanceManagerfrom com.l2jserver.gameserver.model.entity import Instancefrom com.l2jserver.gameserver.model.quest import Statefrom com.l2jserver.gameserver.model.quest import QuestStatefrom com.l2jserver.gameserver.model.quest.jython import QuestJython as JQuestfrom com.l2jserver.gameserver.network.serverpackets import PlaySoundfrom com.l2jserver.util import Rnd qn = "129_PailakaDevilsLegacy" #NPCDISURVIVOR = 32498SUPPORTER = 32501DADVENTURER = 32508DADVENTURER2 = 32511Pailaka2nd = [18623, 18624, 18625, 18626, 18627]CHEST = 32495#BOSSKAMS = 18629HIKORO = 18630ALKASO = 18631GERBERA = 18632LEMATAN = 18633#ITEMSSWORD = 13042ENCHSWORD = 13043LASTSWORD = 13044KDROP = 13046ADROP = 13047HERBS = [8601, 8602, 8604, 8605]CHESTDROP = [13033, 13048, 13049, 13059]#REWARDSPBRACELET = 13295PERING = 13293 AMOUNTS1 = [1, 2]AMOUNTS2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] def isWithinLevel(player): if player.getLevel() > 67: return False if player.getLevel() < 61: return False return True class Quest (JQuest): def __init__(self, id, name, descr): JQuest.__init__(self, id, name, descr) self.questItemIds = [KDROP, ADROP, SWORD, ENCHSWORD, LASTSWORD, 13033, 13032, 13048, 13049, 13059, 13150] self.currentWorld = 0 def onEvent (self, event, st): cond = st.getInt("cond") htmltext = event if event == "32498-02.htm": st.set("cond", "1") st.setState(State.STARTED) st.playSound("ItemSound.quest_accept") if event == "32498-05.htm": st.set("cond", "2") st.playSound("ItemSound.quest_accept") if event == "32501-03.htm": st.set("cond", "3") st.playSound("ItemSound.quest_middle") st.giveItems(SWORD, 1) return htmltext def onTalk (self, npc, player): npcId = npc.getNpcId() htmltext = "32498-01.htm" st = player.getQuestState(qn) if not st: return htmltext id = st.getState() cond = st.getInt("cond") if id == State.CREATED: st.set("cond", "0") if npcId == DISURVIVOR: if cond == 0: if not isWithinLevel(player): htmltext = "32498-no.htm" st.exitQuest(1) else: return htmltext elif id == State.COMPLETED: htmltext = "32498-no.htm" elif cond == 1 or cond == 2: htmltext = "32498-06.htm" else: htmltext = "32498-07.htm" elif npcId == SUPPORTER: if cond == 1 or cond == 2: htmltext = "32501-01.htm" else: htmltext = "32501-04.htm" elif npcId == DADVENTURER: if st.getQuestItemsCount(SWORD) > 0 and st.getQuestItemsCount(KDROP) == 0: htmltext = "32508-01.htm" if st.getQuestItemsCount(ENCHSWORD) > 0 and st.getQuestItemsCount(ADROP) == 0: htmltext = "32508-01.htm" if st.getQuestItemsCount(SWORD) == 0 and st.getQuestItemsCount(KDROP) > 0: htmltext = "32508-05.htm" if st.getQuestItemsCount(ENCHSWORD) == 0 and st.getQuestItemsCount(ADROP) > 0: htmltext = "32508-05.htm" if st.getQuestItemsCount(SWORD) == 0 and st.getQuestItemsCount(ENCHSWORD) == 0: htmltext = "32508-05.htm" if st.getQuestItemsCount(KDROP) == 0 and st.getQuestItemsCount(ADROP) == 0: htmltext = "32508-01.htm" if player.getPet() != None: htmltext = "32508-04.htm" if st.getQuestItemsCount(SWORD) > 0 and st.getQuestItemsCount(KDROP) > 0: st.takeItems(SWORD, 1) st.takeItems(KDROP, 1) st.giveItems(ENCHSWORD, 1) htmltext = "32508-02.htm" if st.getQuestItemsCount(ENCHSWORD) > 0 and st.getQuestItemsCount(ADROP) > 0: st.takeItems(ENCHSWORD, 1) st.takeItems(ADROP, 1) st.giveItems(LASTSWORD, 1) htmltext = "32508-03.htm" if st.getQuestItemsCount(LASTSWORD) > 0: htmltext = "32508-03.htm" elif npcId == DADVENTURER2: if cond == 4: if player.getPet() != None: htmltext = "32511-03.htm" elif player.getPet() == None: st.takeItems(SWORD, st.getQuestItemsCount(SWORD)) st.takeItems(ENCHSWORD, st.getQuestItemsCount(ENCHSWORD)) st.takeItems(LASTSWORD, st.getQuestItemsCount(LASTSWORD)) st.giveItems(736, 1) st.takeItems(13033, st.getQuestItemsCount(13033)) st.takeItems(13048, st.getQuestItemsCount(13048)) st.takeItems(13049, st.getQuestItemsCount(13049)) st.takeItems(13059, st.getQuestItemsCount(13059)) st.giveItems(PBRACELET, 1) st.addExpAndSp(10810000, 950000) st.set("cond", "5") st.setState(State.COMPLETED) st.playSound("ItemSound.quest_finish") st.exitQuest(False) instanceObj = InstanceManager.getInstance().getInstance(player.getInstanceId()) instanceObj.setDuration(5) htmltext = "32511-01.htm" player.setVitalityPoints(20000, 1) elif id == State.COMPLETED: htmltext = "32511-02.htm" return htmltext def onKill(self, npc, player, isPet): st = player.getQuestState(qn) if not st: return npcId = npc.getNpcId() cond = st.getInt("cond") if npcId == KAMS and st.getQuestItemsCount(KDROP) == 0: st.giveItems(KDROP, 1) elif npcId == ALKASO and st.getQuestItemsCount(ADROP) == 0: st.giveItems(ADROP, 1) elif npcId == LEMATAN: st.set("cond", "4") st.playSound("ItemSound.quest_middle") Dwarf = self.addSpawn(DADVENTURER2, 84990, -208376, -3342, 55000, False, 0, False, npc.getInstanceId()) elif npcId in Pailaka2nd: if Rnd.get(100) < 80: st.dropItem(npc, player, HERBS[Rnd.get(len(HERBS))], AMOUNTS1[Rnd.get(len(AMOUNTS1))]) elif npcId == CHEST: if Rnd.get(100) < 80: st.dropItem(npc, player, CHESTDROP[Rnd.get(len(CHESTDROP))], AMOUNTS2[Rnd.get(len(AMOUNTS2))]) else: st.dropItem(npc, player, 13150, 1) QUEST = Quest(129, qn, "Pailaka Devil's Legacy") QUEST.addStartNpc(DISURVIVOR)QUEST.addTalkId(DISURVIVOR)QUEST.addTalkId(SUPPORTER)QUEST.addTalkId(DADVENTURER)QUEST.addTalkId(DADVENTURER2)QUEST.addKillId(KAMS)QUEST.addKillId(ALKASO)QUEST.addKillId(LEMATAN)QUEST.addKillId(CHEST)for i in Pailaka2nd: QUEST.addKillId(i)