Ejemplo n.º 1
0
                    mob = st.addSpawn(ABYSS_JEWEL3, 180000)
        elif npcId == ABYSS_JEWEL1:
            self.cancelQuestTimer("Jewel1_Timer1", npc, None)
            self.cancelQuestTimer("Jewel1_Timer2", npc, None)
        elif npcId == ABYSS_JEWEL2:
            self.cancelQuestTimer("Jewel2_Timer1", npc, None)
            self.cancelQuestTimer("Jewel2_Timer2", npc, None)
        return


QUEST = Quest(337, qn, "Audience With The Land Dragon")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)

QUEST.setInitialState(CREATED)

QUEST.addStartNpc(GABRIELLE)

QUEST.addAttackId(ABYSS_JEWEL1)
QUEST.addAttackId(ABYSS_JEWEL2)
QUEST.addAttackId(ABYSS_JEWEL3)

for npc in NPCS:
    QUEST.addTalkId(npc)

for mob in MOBS:
    QUEST.addKillId(mob)

for i in range(3852, 3865) + [3890]:
    STARTED.addQuestDrop(GABRIELLE, i, 1)
Ejemplo n.º 2
0
                            st.playSound("ItemSound.quest_middle")
                if st.getQuestItemsCount(
                        BROKEN_BLADE_TOP_ID) and st.getQuestItemsCount(
                            BROKEN_BLADE_BOTTOM_ID):
                    st.set("cond", "3")
        return


QUEST = Quest(101, qn, "Sword Of Solidarity Quest")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30008)

QUEST.addTalkId(30008)

QUEST.addTalkId(30283)

QUEST.addKillId(20361)
QUEST.addKillId(20362)

STARTED.addQuestDrop(30283, ALLTRANS_NOTE_ID, 1)
STARTED.addQuestDrop(30283, HOWTOGO_RUINS_ID, 1)
STARTED.addQuestDrop(20362, BROKEN_BLADE_TOP_ID, 1)
STARTED.addQuestDrop(20361, BROKEN_BLADE_TOP_ID, 1)
STARTED.addQuestDrop(20362, BROKEN_BLADE_BOTTOM_ID, 1)
STARTED.addQuestDrop(20361, BROKEN_BLADE_BOTTOM_ID, 1)
STARTED.addQuestDrop(30008, ROIENS_LETTER_ID, 1)
STARTED.addQuestDrop(30008, BROKEN_SWORD_HANDLE_ID, 1)
Ejemplo n.º 3
0
                    st.giveItems(LETTER_TO_DARKELF_ID, 1)
                    st.playSound("ItemSound.quest_itemget")
                if st.getQuestItemsCount(
                        HATOSS_ORDER3_ID) and st.getQuestItemsCount(
                            LETTER_TO_ELF_ID) == 0:
                    st.giveItems(LETTER_TO_ELF_ID, 1)
                    st.playSound("ItemSound.quest_itemget")
        return


QUEST = Quest(107, qn, "Merciless Punishment")
CREATED = State('Start', QUEST)
STARTING = State('Starting', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30568)

QUEST.addTalkId(30568)

QUEST.addTalkId(30580)

QUEST.addKillId(27041)

STARTED.addQuestDrop(30568, HATOSS_ORDER2_ID, 1)
STARTED.addQuestDrop(27041, LETTER_TO_DARKELF_ID, 1)
STARTED.addQuestDrop(27041, LETTER_TO_HUMAN_ID, 1)
STARTED.addQuestDrop(27041, LETTER_TO_ELF_ID, 1)
STARTED.addQuestDrop(30568, HATOSS_ORDER1_ID, 1)
STARTED.addQuestDrop(30568, HATOSS_ORDER3_ID, 1)
Ejemplo n.º 4
0
class Quest(JQuest):
    def __init__(self, id, name, descr):
        JQuest.__init__(self, id, name, descr)
        # All of these are overridden in the subclasses
        self.NPC = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        self.Items = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        self.Mob = [0, 1, 2]
        self.classid = 0
        self.prevclass = 0
        self.qn = "SagasSuperclass"
        self.X = [0, 1, 2]
        self.Y = [0, 1, 2]
        self.Z = [0, 1, 2]
        self.Text = [
            0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17
        ]
        self.Spawn_List = []
        #all these are not overridden by the subclasses (either cause they are constant or used only for this script)
        self.CREATED = State('Start', self)
        self.STARTED = State('Started', self)
        self.COMPLETED = State('Completed', self)

    # this function is called by subclasses in order to add their own NPCs
    def registerNPCs(self):
        self.addStartNpc(self.NPC[0])
        self.addAttackId(self.Mob[2])
        self.addFirstTalkId(self.NPC[4])
        for npc in self.NPC:
            self.addTalkId(npc)
        for mobid in self.Mob:
            self.addKillId(mobid)
        for item in self.Items:
            self.STARTED.addQuestDrop(self.NPC[0], item, 1)

    def Cast(self, npc, target, skillId, level):
        target.broadcastPacket(
            MagicSkillUser(target, target, skillId, level, 6000, 1))
        target.broadcastPacket(
            MagicSkillUser(npc, npc, skillId, level, 6000, 1))

    def FindTemplate(self, npcId):
        for spawn in SpawnTable.getInstance().getSpawnTable().values():
            if spawn.getNpcid() == npcId:
                npcinstance = spawn.getLastSpawn()
                break
        return npcinstance

    def AutoChat(self, npc, text):
        chars = npc.getKnownList().getKnownPlayers().values().toArray()
        if chars != None:
            for pc in chars:
                sm = CreatureSay(npc.getObjectId(), 0, npc.getName(), text)
                pc.sendPacket(sm)

    def AddSpawn(self, st, mob):
        name = st.getPlayer().getName()
        self.Spawn_List.append([mob.getObjectId(), name, mob])
        return

    def FindSpawn(self, player, npcObjectId):
        for mobId, playerName, mob in self.Spawn_List:
            if mobId == npcObjectId and playerName == player.getName():
                return mob
        return None

    def DeleteSpawn(self, st, mobid):
        name = st.getPlayer().getName()
        for npcId, playerName, mob in self.Spawn_List:
            if (mobid, name) == (npcId, playerName):
                self.Spawn_List.remove([mobid, name, mob])
                mob.decayMe()
                return
        return

    def giveHallishaMark(self, st2):
        if st2.getInt("spawned") == 0:
            if st2.getQuestItemsCount(self.Items[3]) >= 700:
                st2.takeItems(self.Items[3], 20)
                xx = int(st2.getPlayer().getX())
                yy = int(st2.getPlayer().getY())
                zz = int(st2.getPlayer().getZ())
                Archon = st2.addSpawn(self.Mob[1], xx, yy, zz)
                ArchonId = Archon.getObjectId()
                st2.set("Archon", str(ArchonId))
                self.AddSpawn(st2, Archon)
                st2.set("spawned", "1")
                st2.startQuestTimer("Archon Hellisha has despawned", 600000,
                                    Archon)
                self.AutoChat(
                    Archon, self.Text[13].replace('PLAYERNAME',
                                                  st2.getPlayer().getName()))
                Archon.addDamageHate(st2.getPlayer(), 0, 99999)
                Archon.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK,
                                            st2.getPlayer(), None)
            else:
                st2.giveItems(self.Items[3], 1)
        return

    def findRightState(self, player, mob):
        mobid = mob.getObjectId()
        name = player.getName()
        st1 = None
        if [mobid, name] in self.Spawn_List:
            st1 = L2World.getInstance().getPlayer(name)
        else:
            for entry in self.Spawn_List:
                if entry[0] == mobid:
                    name = entry[1]
                    st1 = L2World.getInstance().getPlayer(name)
                    break
        if st1:
            return st1.getQuestState(self.qn)
        return st1

    def onAdvEvent(self, event, npc, player):
        st = player.getQuestState(self.qn)
        if not st: return
        htmltext = ""  # simple initialization...if none of the events match, return nothing.
        cond = st.getInt("cond")
        id = st.getInt("id")
        player = st.getPlayer()
        if event == "accept":
            st.set("cond", "1")
            st.setState(self.STARTED)
            st.playSound("ItemSound.quest_accept")
            st.giveItems(self.Items[10], 1)
            htmltext = "0-03.htm"
        elif event == "0-1":
            if player.getLevel() < 76:
                htmltext = "0-02.htm"
                st.exitQuest(1)
            else:
                htmltext = "0-05.htm"
        elif event == "0-2":
            if player.getLevel() >= 76:
                st.setState(self.COMPLETED)
                st.set("cond", "0")
                htmltext = "0-07.htm"
                st.takeItems(self.Items[10], -1)
                st.addExpAndSp(2299404, 0)
                st.giveItems(57, 5000000)
                st.giveItems(6622, 1)
                player.setClassId(self.classid)
                if not player.isSubClassActive() and player.getBaseClass(
                ) == self.prevclass:
                    player.setBaseClass(self.classid)
                player.broadcastUserInfo()
                self.Cast(self.FindTemplate(self.NPC[0]), player, 4339, 1)
            else:
                st.takeItems(self.Items[10], -1)
                st.playSound("ItemSound.quest_middle")
                st.set("cond", "20")
                htmltext = "0-08.htm"
        elif event == "1-3":
            st.set("cond", "3")
            htmltext = "1-05.htm"
        elif event == "1-4":
            st.set("cond", "4")
            st.takeItems(self.Items[0], 1)
            if self.Items[11] != 0:
                st.takeItems(self.Items[11], 1)
            st.giveItems(self.Items[1], 1)
            htmltext = "1-06.htm"
        elif event == "2-1":
            st.set("cond", "2")
            htmltext = "2-05.htm"
        elif event == "2-2":
            st.set("cond", "5")
            st.takeItems(self.Items[1], 1)
            st.giveItems(self.Items[4], 1)
            htmltext = "2-06.htm"
        elif event == "3-5":
            htmltext = "3-07.htm"
        elif event == "3-6":
            st.set("cond", "11")
            htmltext = "3-02.htm"
        elif event == "3-7":
            st.set("cond", "12")
            htmltext = "3-03.htm"
        elif event == "3-8":
            st.set("cond", "13")
            st.takeItems(self.Items[2], 1)
            st.giveItems(self.Items[7], 1)
            htmltext = "3-08.htm"
        elif event == "4-1":
            htmltext = "4-010.htm"
        elif event == "4-2":
            st.giveItems(self.Items[9], 1)
            st.set("cond", "18")
            st.playSound("ItemSound.quest_middle")
            htmltext = "4-011.htm"
        elif event == "4-3":
            st.giveItems(self.Items[9], 1)
            st.set("cond", "18")
            Mob_2 = self.FindSpawn(player, st.getInt("Mob_2"))
            self.AutoChat(
                Mob_2, self.Text[13].replace('PLAYERNAME', player.getName()))
            st.set("Quest0", "0")
            self.DeleteSpawn(st, Mob_2.getObjectId())
            st.playSound("ItemSound.quest_middle")
            return
        elif event == "5-1":
            st.set("cond", "6")
            st.takeItems(self.Items[4], 1)
            self.Cast(self.FindTemplate(self.NPC[5]), player, 4546, 1)
            st.playSound("ItemSound.quest_middle")
            htmltext = "5-02.htm"
        elif event == "6-1":
            st.set("cond", "8")
            st.takeItems(self.Items[5], 1)
            self.Cast(self.FindTemplate(self.NPC[6]), player, 4546, 1)
            st.playSound("ItemSound.quest_middle")
            htmltext = "6-03.htm"
        elif event == "7-1":
            if st.getInt("spawned") == 1:
                htmltext = "7-03.htm"
            elif st.getInt("spawned") == 0:
                Mob_1 = st.addSpawn(self.Mob[0], self.X[0], self.Y[0],
                                    self.Z[0])
                st.set("Mob_1", str(Mob_1.getObjectId()))
                st.set("spawned", "1")
                st.startQuestTimer("Mob_1 Timer 1", 500, Mob_1)
                st.startQuestTimer("Mob_1 has despawned", 300000, Mob_1)
                self.AddSpawn(st, Mob_1)
                htmltext = "7-02.htm"
            else:
                htmltext = "7-04.htm"
        elif event == "7-2":
            st.set("cond", "10")
            st.takeItems(self.Items[6], 1)
            self.Cast(self.FindTemplate(self.NPC[7]), player, 4546, 1)
            st.playSound("ItemSound.quest_middle")
            htmltext = "7-06.htm"
        elif event == "8-1":
            st.set("cond", "14")
            st.takeItems(self.Items[7], 1)
            self.Cast(self.FindTemplate(self.NPC[8]), player, 4546, 1)
            st.playSound("ItemSound.quest_middle")
            htmltext = "8-02.htm"
        elif event == "9-1":
            st.set("cond", "17")
            st.takeItems(self.Items[8], 1)
            self.Cast(self.FindTemplate(self.NPC[9]), player, 4546, 1)
            st.playSound("ItemSound.quest_middle")
            htmltext = "9-03.htm"
        elif event == "10-1":
            if st.getInt("Quest0") == 0:
                Mob_3 = st.addSpawn(self.Mob[2], self.X[1], self.Y[1],
                                    self.Z[1])
                Mob_2 = st.addSpawn(self.NPC[4], self.X[2], self.Y[2],
                                    self.Z[2])
                self.AddSpawn(st, Mob_3)
                self.AddSpawn(st, Mob_2)
                st.set("Mob_3", str(Mob_3.getObjectId()))
                st.set("Mob_2", str(Mob_2.getObjectId()))
                st.set("Quest0", "1")
                st.set("Quest1", "45")
                st.startQuestTimer("Mob_3 Timer 1", 500, Mob_3)
                st.startQuestTimer("Mob_3 has despawned", 59000, Mob_3)
                st.startQuestTimer("Mob_2 Timer 1", 500, Mob_2)
                st.startQuestTimer("Mob_2 has despawned", 60000, Mob_2)
                htmltext = "10-02.htm"
            elif st.getInt("Quest1") == 45:
                htmltext = "10-03.htm"
            else:
                htmltext = "10-04.htm"
        elif event == "10-2":
            st.set("cond", "19")
            st.takeItems(self.Items[9], 1)
            self.Cast(self.FindTemplate(self.NPC[10]), player, 4546, 1)
            st.playSound("ItemSound.quest_middle")
            htmltext = "10-06.htm"
        elif event == "11-9":
            st.set("cond", "15")
            htmltext = "11-03.htm"
        elif event == "Mob_1 Timer 1":
            self.AutoChat(npc, self.Text[0].replace('PLAYERNAME',
                                                    player.getName()))
            return
        elif event == "Mob_1 has despawned":
            self.AutoChat(npc, self.Text[1].replace('PLAYERNAME',
                                                    player.getName()))
            self.DeleteSpawn(st, npc.getObjectId())
            st.set("spawned", "0")
            return
        elif event == "Archon of Hellisha has despawned":
            self.AutoChat(npc, self.Text[6].replace('PLAYERNAME',
                                                    player.getName()))
            self.DeleteSpawn(st, npc.getObjectId())
            st.set("spawned", "0")
            return
        elif event == "Mob_3 Timer 1":
            Mob_2 = self.FindSpawn(player, st.getInt("Mob_2"))
            if npc.getKnownList().knowsObject(Mob_2):
                npc.addDamageHate(Mob_2, 0, 99999)
                npc.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK,
                                         Mob_2, None)
                #Mob_2.addDamageHate(npc,0,99999)
                Mob_2.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK,
                                           npc, None)
                self.AutoChat(
                    npc, self.Text[14].replace('PLAYERNAME', player.getName()))
            else:
                st.startQuestTimer("Mob_3 Timer 1", 500, npc)
            return
        elif event == "Mob_3 has despawned":
            self.AutoChat(
                npc, self.Text[15].replace('PLAYERNAME', player.getName()))
            st.set("Quest0", "2")
            npc.reduceCurrentHp(9999999, npc)
            self.DeleteSpawn(st, npc.getObjectId())
            return
        elif event == "Mob_2 Timer 1":
            self.AutoChat(npc, self.Text[7].replace('PLAYERNAME',
                                                    player.getName()))
            st.startQuestTimer("Mob_2 Timer 2", 1500, npc)
            if st.getInt("Quest1") == 45:
                st.set("Quest1", "0")
            return
        elif event == "Mob_2 Timer 2":
            self.AutoChat(npc, self.Text[8].replace('PLAYERNAME',
                                                    player.getName()))
            st.startQuestTimer("Mob_2 Timer 3", 10000, npc)
            return
        elif event == "Mob_2 Timer 3":
            if st.getInt("Quest0") == 0:
                st.startQuestTimer("Mob_2 Timer 3", 13000, npc)
                if st.getRandom(2) == 0:
                    self.AutoChat(
                        npc, self.Text[9].replace('PLAYERNAME',
                                                  player.getName()))
                else:
                    self.AutoChat(
                        npc, self.Text[10].replace('PLAYERNAME',
                                                   player.getName()))
            return
        elif event == "Mob_2 has despawned":
            st.set("Quest1", str(st.getInt("Quest1") + 1))
            if st.getInt("Quest0") == 1 or st.getInt(
                    "Quest0") == 2 or st.getInt("Quest1") > 3:
                st.set("Quest0", "0")
                if st.getInt("Quest0") == 1:
                    self.AutoChat(
                        npc, self.Text[11].replace('PLAYERNAME',
                                                   player.getName()))
                else:
                    self.AutoChat(
                        npc, self.Text[12].replace('PLAYERNAME',
                                                   player.getName()))
                npc.reduceCurrentHp(9999999, npc)
                self.DeleteSpawn(st, npc.getObjectId())
            else:
                st.startQuestTimer("Mob_2 has despawned", 1000, npc)
            return
        return htmltext

    def onTalk(self, npc, player):
        htmltext = "<html><body>You are either not carrying out your quest or don't meet the criteria.</body></html>"
        st = player.getQuestState(self.qn)
        if st:
            npcId = npc.getNpcId()
            cond = st.getInt("cond")
            if st.getState() == self.COMPLETED and npcId == self.NPC[0]:
                htmltext == "<html><body>You have already completed this quest!</body></html>"
            elif player.getClassId().getId() == self.prevclass:
                if cond == 0:
                    if npcId == self.NPC[0]:
                        htmltext = "0-01.htm"
                elif cond == 1:
                    if npcId == self.NPC[0]:
                        htmltext = "0-04.htm"
                    elif npcId == self.NPC[2]:
                        htmltext = "2-01.htm"
                elif cond == 2:
                    if npcId == self.NPC[2]:
                        htmltext = "2-02.htm"
                    elif npcId == self.NPC[1]:
                        htmltext = "1-01.htm"
                elif cond == 3:
                    if npcId == self.NPC[1]:
                        if st.getQuestItemsCount(self.Items[0]):
                            if self.Items[11] == 0:
                                htmltext = "1-03.htm"
                            elif st.getQuestItemsCount(self.Items[11]):
                                htmltext = "1-03.htm"
                            else:
                                htmltext = "1-02.htm"
                        else:
                            htmltext = "1-02.htm"
                elif cond == 4:
                    if npcId == self.NPC[1]:
                        htmltext = "1-04.htm"
                    elif npcId == self.NPC[2]:
                        htmltext = "2-03.htm"
                elif cond == 5:
                    if npcId == self.NPC[2]:
                        htmltext = "2-04.htm"
                    elif npcId == self.NPC[5]:
                        htmltext = "5-01.htm"
                elif cond == 6:
                    if npcId == self.NPC[5]:
                        htmltext = "5-03.htm"
                    elif npcId == self.NPC[6]:
                        htmltext = "6-01.htm"
                elif cond == 7:
                    if npcId == self.NPC[6]:
                        htmltext = "6-02.htm"
                elif cond == 8:
                    if npcId == self.NPC[6]:
                        htmltext = "6-04.htm"
                    elif npcId == self.NPC[7]:
                        htmltext = "7-01.htm"
                elif cond == 9:
                    if npcId == self.NPC[7]:
                        htmltext = "7-05.htm"
                elif cond == 10:
                    if npcId == self.NPC[7]:
                        htmltext = "7-07.htm"
                    elif npcId == self.NPC[3]:
                        htmltext = "3-01.htm"
                elif cond == 11 or cond == 12:
                    if npcId == self.NPC[3]:
                        if st.getQuestItemsCount(self.Items[2]):
                            htmltext = "3-05.htm"
                        else:
                            htmltext = "3-04.htm"
                elif cond == 13:
                    if npcId == self.NPC[3]:
                        htmltext = "3-06.htm"
                    elif npcId == self.NPC[8]:
                        htmltext = "8-01.htm"
                elif cond == 14:
                    if npcId == self.NPC[8]:
                        htmltext = "8-03.htm"
                    elif npcId == self.NPC[11]:
                        htmltext = "11-01.htm"
                elif cond == 15:
                    if npcId == self.NPC[11]:
                        htmltext = "11-02.htm"
                    elif npcId == self.NPC[9]:
                        htmltext = "9-01.htm"
                elif cond == 16:
                    if npcId == self.NPC[9]:
                        htmltext = "9-02.htm"
                elif cond == 17:
                    if npcId == self.NPC[9]:
                        htmltext = "9-04.htm"
                    elif npcId == self.NPC[10]:
                        htmltext = "10-01.htm"
                elif cond == 18:
                    if npcId == self.NPC[10]:
                        htmltext = "10-05.htm"
                elif cond == 19:
                    if npcId == self.NPC[10]:
                        htmltext = "10-07.htm"
                    if npcId == self.NPC[0]:
                        htmltext = "0-06.htm"
                elif cond == 20:
                    if npcId == self.NPC[0]:
                        if player.getLevel() >= 76:
                            st.setState(self.COMPLETED)
                            st.set("cond", "0")
                            htmltext = "0-07.htm"
                            st.addExpAndSp(2299404, 0)
                            st.giveItems(57, 5000000)
                            st.giveItems(6622, 1)
                            player.setClassId(self.classid)
                            if not player.isSubClassActive(
                            ) and player.getBaseClass() == self.prevclass:
                                player.setBaseClass(self.classid)
                            player.broadcastUserInfo()
                            self.Cast(self.FindTemplate(self.NPC[0]), player,
                                      4339, 1)
                        else:
                            htmltext = "0-010.htm"
        return htmltext

    def onFirstTalk(self, npc, player):
        htmltext = ""
        st = player.getQuestState(self.qn)
        npcId = npc.getNpcId()
        if st:
            cond = st.getInt("cond")
            if npcId == self.NPC[4]:
                if cond == 17:
                    st2 = self.findRightState(player, npc)
                    if st2:
                        if st == st2:
                            if st.getInt("Tab") == 1:
                                if st.getInt("Quest0") == 0:
                                    htmltext = "4-04.htm"
                                elif st.getInt("Quest0") == 1:
                                    htmltext = "4-06.htm"
                            else:
                                if st.getInt("Quest0") == 0:
                                    htmltext = "4-01.htm"
                                elif st.getInt("Quest0") == 1:
                                    htmltext = "4-03.htm"
                        else:
                            if st.getInt("Tab") == 1:
                                if st.getInt("Quest0") == 0:
                                    htmltext = "4-05.htm"
                                elif st.getInt("Quest0") == 1:
                                    htmltext = "4-07.htm"
                            else:
                                if st.getInt("Quest0") == 0:
                                    htmltext = "4-02.htm"
                elif cond == 18:
                    htmltext = "4-08.htm"
        return htmltext

    def onAttack(self, npc, player, damage, isPet):
        st = player.getQuestState(self.qn)
        if st:
            if st.getInt("cond") == 17:
                if npc.getNpcId() == self.Mob[2]:
                    st2 = self.findRightState(player, npc)
                    if st == st2:
                        st.set("Quest0", str(st.getInt("Quest0") + 1))
                        if st.getInt("Quest0") == 1:
                            self.AutoChat(
                                npc,
                                self.Text[16].replace('PLAYERNAME',
                                                      player.getName()))
                        if st.getInt("Quest0") > 15:
                            st.set("Quest0", "1")
                            self.AutoChat(
                                npc,
                                self.Text[17].replace('PLAYERNAME',
                                                      player.getName()))
                            npc.reduceCurrentHp(9999999, npc)
                            self.DeleteSpawn(st, st.getInt("Mob_3"))
                            if st.getQuestTimer("Mob_3 has despawned"):
                                st.getQuestTimer(
                                    "Mob_3 has despawned").cancel()
                            st.set("Tab", "1")
        return

    def onKill(self, npc, player, isPet):
        npcId = npc.getNpcId()
        st = player.getQuestState(self.qn)
        if npcId in Archon_Minions:
            party = player.getParty()
            if party:
                PartyQuestMembers = []
                for player1 in party.getPartyMembers().toArray():
                    for q in Quests.keys():
                        st1 = player1.getQuestState(Quests[q])
                        if st1:
                            if player1.getClassId().getId() == QuestClass[
                                    int(q) - 70]:
                                if st1.getInt("cond") == 15:
                                    PartyQuestMembers.append(st1)
                                    break
                if len(PartyQuestMembers) > 0:
                    st2 = PartyQuestMembers[Rnd.get(len(PartyQuestMembers))]
                    st2.getQuest().giveHallishaMark(st2)
            else:
                for q in Quests.keys():
                    st1 = player.getQuestState(Quests[q])
                    if st1:
                        if player.getClassId().getId() == QuestClass[int(q) -
                                                                     70]:
                            if st1.getInt("cond") == 15:
                                st1.getQuest().giveHallishaMark(st1)
                                break
        elif npcId in Archon_Hellisha_Norm:
            for q in Quests.keys():
                st1 = player.getQuestState(Quests[q])
                if st1:
                    if player.getClassId().getId() == QuestClass[int(q) - 70]:
                        if st1.getInt("cond") == 15:
                            #This is just a guess....not really sure what it actually says, if anything
                            self.AutoChat(
                                npc,
                                st1.getQuest().Text[4].replace(
                                    'PLAYERNAME',
                                    st1.getPlayer().getName()))
                            st1.giveItems(st1.getQuest().Items[8], 1)
                            st1.takeItems(st1.getQuest().Items[3], -1)
                            st1.set("cond", "16")
                            st1.playSound("ItemSound.quest_middle")
                            break
        elif npcId in Guardian_Angels:
            for q in Quests.keys():
                st1 = player.getQuestState(Quests[q])
                if st1:
                    if player.getClassId().getId() == QuestClass[int(q) - 70]:
                        if st1.getInt("cond") == 6:
                            if st1.getInt("kills") < 9:
                                st1.set("kills", str(st1.getInt("kills") + 1))
                            else:
                                st1.playSound("ItemSound.quest_middle")
                                st1.giveItems(st1.getQuest().Items[5], 1)
                                st1.set("cond", "7")
                            break
        elif st:
            cond = st.getInt("cond")
            if npcId == self.Mob[0] and cond == 8:
                st2 = self.findRightState(player, npc)
                if st2:
                    if not player.isInParty():
                        if st == st2:
                            self.AutoChat(
                                npc,
                                self.Text[12].replace('PLAYERNAME',
                                                      player.getName()))
                            st.giveItems(self.Items[6], 1)
                            st.set("cond", "9")
                            st.playSound("ItemSound.quest_middle")
                    if st2.getQuestTimer("Mob_1 has despawned"):
                        st2.getQuestTimer("Mob_1 has despawned").cancel()
                    self.DeleteSpawn(st2, st2.getInt("Mob_1"))
                    st2.set("spawned", "0")
            elif npcId == self.Mob[1]:
                if cond == 15:
                    st2 = self.findRightState(player, npc)
                    if st2:
                        if not player.isInParty():
                            if st == st2:
                                self.AutoChat(
                                    npc, self.Text[4].replace(
                                        'PLAYERNAME', player.getName()))
                                st.giveItems(self.Items[8], 1)
                                st.takeItems(self.Items[3], -1)
                                st.set("cond", "16")
                                st.playSound("ItemSound.quest_middle")
                            else:
                                self.AutoChat(
                                    npc, self.Text[5].replace(
                                        'PLAYERNAME', player.getName()))
                        if st2.getQuestTimer("Archon Hellisha has despawned"):
                            st2.getQuestTimer(
                                "Archon Hellisha has despawned").cancel()
                        self.DeleteSpawn(st2, st2.getInt("Archon"))
                        st2.set("spawned", "0")
        else:
            if npcId == self.Mob[0]:
                st = self.findRightState(player, npc)
                if st:
                    if st.getQuestTimer("Mob_1 has despawned"):
                        st.getQuestTimer("Mob_1 has despawned").cancel()
                    self.DeleteSpawn(st, st.getInt("Mob_1"))
                    st.set("spawned", "0")
            elif npcId == self.Mob[1]:
                st = self.findRightState(player, npc)
                if st:
                    if st.getQuestTimer("Archon Hellisha has despawned"):
                        st.getQuestTimer(
                            "Archon Hellisha has despawned").cancel()
                    self.DeleteSpawn(st, st.getInt("Archon"))
                    st.set("spawned", "0")
        return
Ejemplo n.º 5
0
    def onKill(self, npc, player, isPet):
        npcId = npc.getNpcId()
        partyMember = self.getRandomPartyMember(player, "2")
        if (partyMember and npcId != ARANEID):
            drop(partyMember, NECKLACE[npcId])
        else:
            partyMember = self.getRandomPartyMember(player, "4")
            if (partyMember and npcId != M_LIZARDMAN):
                drop(partyMember, DROPLIST[npcId])
        return


QUEST = Quest(39, qn, "Red Eyed Invaders")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(BABENCO)
QUEST.addTalkId(BABENCO)
QUEST.addTalkId(BATHIS)

QUEST.addKillId(M_LIZARDMAN)
QUEST.addKillId(M_LIZARDMAN_SCOUT)
QUEST.addKillId(M_LIZARDMAN_GUARD)
QUEST.addKillId(ARANEID)

for item in range(7178, 7182):
    STARTED.addQuestDrop(BABENCO, item, 1)
Ejemplo n.º 6
0
                st.giveItems(itemid, 1)
                if count == maxcount - 1:
                    st.playSound("ItemSound.quest_middle")
                    st.set("cond", str(cond + 1))
                    if npcId == 27093:
                        st.giveItems(STRANGE_MAP, 1)
                else:
                    st.playSound("Itemsound.quest_itemget")
        if npcId == 20781 and random < 30 and count < maxcount:
            st.addSpawn(27094, npc.getX(), npc.getY(), npc.getZ(),
                        npc.getHeading(), True, 300000)
        return


QUEST = Quest(225, qn, "Test Of Searcher")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30690)

for npcId in NPC:
    QUEST.addTalkId(npcId)

for mobId in MOB:
    QUEST.addKillId(mobId)

for item in range(2784, 2809):
    STARTED.addQuestDrop(30690, item, 1)
Ejemplo n.º 7
0
       st.takeItems(GOBLIN_CLUB,-1)
       htmltext = "31853-05.htm"
     else:
       htmltext = "31853-04.htm"
   return htmltext

 def onKill(self,npc,player,isPet):
   st = player.getQuestState(qn)
   if not st : return 
   if st.getState() != STARTED : return 
   
   if st.getRandom(10)<5 :
     st.giveItems(GOBLIN_CLUB,1)
     st.playSound("ItemSound.quest_itemget")
   return

QUEST       = Quest(267,qn,"Wrath Of Verdure")
CREATED     = State('Start', QUEST)
STARTING    = State('Starting', QUEST)
STARTED     = State('Started', QUEST)
COMPLETED   = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(31853)

QUEST.addTalkId(31853)

QUEST.addKillId(20325)

STARTED.addQuestDrop(20325,GOBLIN_CLUB,1)
Ejemplo n.º 8
0
QUEST = Quest(418, qn, "Path To Artisan")
CREATED = State('Start', QUEST)
STARTING = State('Starting', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30527)

QUEST.addTalkId(30527)

QUEST.addTalkId(30298)
QUEST.addTalkId(30317)

QUEST.addKillId(20017)
QUEST.addKillId(20389)
QUEST.addKillId(20390)

STARTED.addQuestDrop(30527, SILVERYS_RING, 1)
STARTED.addQuestDrop(20389, RATMAN_TOOTH, 1)
STARTED.addQuestDrop(20390, BIG_RATMAN_TOOTH, 1)
STARTED.addQuestDrop(30527, PASS_1ST, 1)
STARTED.addQuestDrop(30298, PASS_2ND, 1)
STARTED.addQuestDrop(30298, SECRET_BOX2, 1)
STARTED.addQuestDrop(30527, PASS_1ST, 1)
STARTED.addQuestDrop(30298, PASS_2ND, 1)
STARTED.addQuestDrop(30298, SECRET_BOX2, 1)
STARTED.addQuestDrop(30317, KLUTOS_LETTER, 1)
STARTED.addQuestDrop(20017, SECRET_BOX1, 1)
STARTED.addQuestDrop(30298, FOOTPRINT, 1)
Ejemplo n.º 9
0
        return


QUEST = Quest(230, qn, "Test Of Summoner")
CREATED = State('Start', QUEST)
PROGRESS = State('Progress', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(NPC[1])

# adds all npcs, mobs to the progress state
for npcId in NPC:
    QUEST.addTalkId(npcId)
for mobId in DROPLIST_LARA.keys():
    QUEST.addKillId(mobId)
for mobId in DROPLIST_SUMMON.keys():
    QUEST.addKillId(mobId)
    QUEST.addAttackId(mobId)
#for summonId in PLAYER_SUMMONS:
#   PROGRESS.addKillId(summonId)

# this will add the player to the list of notified objects in onDeath Part
#addNotifyOfDeath(st.getPlayer())

#This is just to formal add the drops, in case that a player abort this quest.. the items should disappear
STARTED = State('Started', QUEST)

for item in range(3337, 3390):
    STARTED.addQuestDrop(30063, item, 1)
Ejemplo n.º 10
0
            st.set("cond", "10")
            st.playSound("ItemSound.quest_middle")
            st.addSpawn(30646, npc, True, 0)
        return


QUEST = Quest(211, qn, "Trial Of Challenger")
CREATED = State('Start', QUEST)
STARTING = State('Starting', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30644)

QUEST.addTalkId(30535)
QUEST.addTalkId(30644)
QUEST.addTalkId(30645)
QUEST.addTalkId(30646)
QUEST.addTalkId(30647)

QUEST.addKillId(27110)
QUEST.addKillId(27112)
QUEST.addKillId(27113)
QUEST.addKillId(27114)

STARTED.addQuestDrop(30647, SCROLL_OF_SHYSLASSY, 1)
STARTED.addQuestDrop(30644, LETTER_OF_KASH, 1)
STARTED.addQuestDrop(27112, WATCHERS_EYE1, 1)
STARTED.addQuestDrop(27110, BROKEN_KEY, 1)
STARTED.addQuestDrop(27113, WATCHERS_EYE2, 1)
Ejemplo n.º 11
0
        st = player.getQuestState(qn)
        if not st: return
        if st.getState() != STARTED: return

        npcId = npc.getNpcId()
        if npcId == 20521:
            if st.getInt(
                    "cond") == 1 and st.getQuestItemsCount(STARSTONE2_ID) < 20:
                if st.getRandom(2) == 0:
                    st.giveItems(STARSTONE2_ID, 1)
                    if st.getQuestItemsCount(STARSTONE2_ID) == 20:
                        st.playSound("ItemSound.quest_middle")
                        st.set("cond", "2")
                    else:
                        st.playSound("ItemSound.quest_itemget")
        return


QUEST = Quest(297, qn, "Gatekeepers Favor")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)

QUEST.addStartNpc(30540)
QUEST.addTalkId(30540)

QUEST.addKillId(20521)
STARTED.addQuestDrop(20521, STARSTONE2_ID, 1)
Ejemplo n.º 12
0
                count = st.getQuestItemsCount(DESTROYED_GOLEM_SHARD)
                if cond == 1 and count < 500:
                    chance = DROP_CHANCE * Config.RATE_DROP_QUEST
                    numItems, chance = divmod(chance, 100)
                    if st.getRandom(100) < chance:
                        numItems += 1
                    if numItems:
                        if count + numItems >= 500:
                            numItems = 500 - count
                            st.playSound("ItemSound.quest_middle")
                            st.set("cond", "2")
                        else:
                            st.playSound("ItemSound.quest_itemget")
                        st.giveItems(DESTROYED_GOLEM_SHARD, int(numItems))
        return


QUEST = Quest(647, qn, "Influx of Machines")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(32069)

QUEST.addTalkId(32069)

for i in range(22052, 22079):
    QUEST.addKillId(i)

STARTED.addQuestDrop(32069, DESTROYED_GOLEM_SHARD, 1)
Ejemplo n.º 13
0
    st = player.getQuestState(qn)
    if st :
        if st.getState() == STARTED :
            npcId = npc.getNpcId()
            cond = st.getInt("cond")
            id = st.getInt("id")
            Red_Totem = st.getQuestItemsCount(Totem)
            if npcId in Ketra_Orcs :
                st.unset("id")
                st.unset("aggro")
                st.exitQuest(1)
                if Red_Totem:
                   st.takeItems(Totem,-1)
    return


QUEST       = Quest(609,qn,"Magical Power of Water - Part 1")
CREATED     = State('Start', QUEST)
STARTED     = State('Started', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(Wahkan)
QUEST.addTalkId(Wahkan)
QUEST.addTalkId(Asefa)
QUEST.addTalkId(Udan_Box)

STARTED.addQuestDrop(Udan_Box,Totem,1)
for mobId in Varka_Mobs:
    QUEST.addAttackId(mobId)
for mobId in Ketra_Orcs:
    QUEST.addKillId(mobId)
Ejemplo n.º 14
0
    def onKill(self, npc, player, isPet):
        partyMember = self.getRandomPartyMemberState(player, STARTED)
        st = player.getQuestState(qn)
        if st:
            if st.getState() == STARTED:
                numItems = int(
                    (npc.getLevel() * 0.15 + 1.6) * Config.RATE_DROP_QUEST)
                if st.getRandom(100) >= 10:
                    numItems = 0
                if numItems > 0:
                    st.giveItems(DIMENSION_FRAGMENT_ID, numItems)
                    st.playSound("ItemSound.quest_itemget")
        return


QUEST = Quest(634, qn, "In Search of Dimensional Fragments")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)

for npcId in range(31494, 31508):
    QUEST.addTalkId(npcId)
    QUEST.addStartNpc(npcId)

for mobs in range(21208, 21256):
    QUEST.addKillId(mobs)

STARTED.addQuestDrop(7079, DIMENSION_FRAGMENT_ID, 1)
Ejemplo n.º 15
0
                if item != 0 and numItems >= 1:
                    prevItems = st.getQuestItemsCount(item)
                    if count > prevItems:
                        if count <= (prevItems + numItems):  #100 is maximum
                            numItems = count - prevItems
                            st.playSound("ItemSound.quest_middle")
                        else:
                            st.playSound("ItemSound.quest_itemget")
                        st.giveItems(item, int(numItems))
        return


QUEST = Quest(628, qn, "Hunt of the Golden Ram Mercenary Force")
CREATED = State('Start', QUEST)
STARTING = State('Starting', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(KAHMAN)

QUEST.addTalkId(KAHMAN)
QUEST.addTalkId(ABERCROMBIE)
QUEST.addTalkId(SELINA)

for mob in range(21508, 21518):
    QUEST.addKillId(mob)

for item in range(7246, 7250):
    STARTED.addQuestDrop(KAHMAN, item, 1)
Ejemplo n.º 16
0
            if random == CHANCE_barrel:
                st.giveItems(BARREL_OF_LEAGUE, 1)
                st.set("cond", "2")
        elif st.getRandom(100) < 4:
            st.giveItems(BARREL_OF_LEAGUE, 1)
            st.playSound("ItemSound.quest_itemget")
            st.set("cond", "2")
        return


QUEST = Quest(351, qn, "Black Swan")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30916)

QUEST.addTalkId(30916)
QUEST.addTalkId(30969)
QUEST.addTalkId(30897)

STARTED.addQuestDrop(30916, ORDER_OF_GOSTA, 1)
STARTED.addQuestDrop(30916, BARREL_OF_LEAGUE, 1)
STARTED.addQuestDrop(30916, LIZARD_FANG, 1)

QUEST.addKillId(20784)
QUEST.addKillId(20785)
QUEST.addKillId(21639)
QUEST.addKillId(21640)
QUEST.addKillId(21642)
QUEST.addKillId(21643)
Ejemplo n.º 17
0
CREATED = State('Start', QUEST)
STARTED = State('started', QUEST)
#Following states kept for backwards compatibility only.
MIDDLE = State('middle', QUEST)
END = State('end', QUEST)
COMPLETED = State('completed', QUEST)

QUEST.setInitialState(CREATED)

QUEST.addStartNpc(ALCHEMIST_MATILD)

QUEST.addTalkId(ALCHEMIST_MATILD)
QUEST.addTalkId(TORAI)
QUEST.addTalkId(RUPINA)
QUEST.addTalkId(WISDOM_CHEST)

QUEST.addKillId(SECRET_KEEPER_TREE)

for mob in DROPLIST.keys():
    QUEST.addKillId(mob)
    STARTED.addQuestDrop(mob, DROPLIST[mob][0], 1)

QUEST.addKillId(SUCCUBUS_OF_SEDUCTION)
QUEST.addKillId(GRIMA)
QUEST.addKillId(SANCHES)
QUEST.addKillId(RAMSEBALIUS)
QUEST.addKillId(BONAPARTERIUS)
QUEST.addKillId(GREAT_DEMON_KING)

for item in range(3678, 3683):
    STARTED.addQuestDrop(ALCHEMIST_MATILD, item, 1)
Ejemplo n.º 18
0
                        htmltext = "31370-05.htm"
                #else:
                #htmltext="<html><body>This quest has already been completed</body></html>"
        return htmltext

    def onKill(self, npc, player, isPet):
        partyMembers = [player]
        party = player.getParty()
        if party:
            partyMembers = party.getPartyMembers().toArray()
            for player in partyMembers:
                pst = player.getQuestState(qn)
                if pst:
                    giveReward(pst, npc)
        else:
            pst = player.getQuestState(qn)
            if pst:
                giveReward(pst, npc)
        return


QUEST = Quest(607, qn, "Prove Your Courage!")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(Kadun)
QUEST.addTalkId(Kadun)

STARTED.addQuestDrop(Shadith, Shadith_Head, 1)
QUEST.addKillId(Shadith)
Ejemplo n.º 19
0
        if st.getState() != STARTED: return

        npcId = npc.getNpcId()
        count = st.getQuestItemsCount(HONEY_POUCH)
        if st.getInt("cond") == 1 and count < 100:
            st.giveItems(HONEY_POUCH, 1)
            if count == 99:
                st.playSound("ItemSound.quest_middle")
                st.set("cond", "2")
            else:
                st.playSound("ItemSound.quest_itemget")
        return


QUEST = Quest(299, qn, "Gather Ingredients For A Pie")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30620)
QUEST.addTalkId(30620)

QUEST.addTalkId(30063)
QUEST.addTalkId(30466)

QUEST.addKillId(WASP_LEADER)
QUEST.addKillId(WASP_WORKER)

STARTED.addQuestDrop(WASP_WORKER, HONEY_POUCH, 1)
STARTED.addQuestDrop(EMILY, AVELLAN_SPICE, 1)
STARTED.addQuestDrop(EMILY, FRUIT_BASKET, 1)
Ejemplo n.º 20
0
                if st.getInt("AGRIPEL") == 1 and st.getInt(
                        "DOMINIC") == 1 and st.getInt("BENEDICT") == 1:
                    htmltext = "31349-02.htm"
                    st.set("cond", "7")
                    st.playSound("ItemSound.quest_middle")
                    return htmltext
                htmltext = "31349-0" + str(st.getRandom(3)) + ".htm"
            elif cond == 7:
                htmltext = "31349-03.htm"
        elif npcId == 31328:
            if cond == 7:
                if st.getQuestItemsCount(7140) == 1:
                    htmltext = "31328-01.htm"
            elif cond == 0 and onlyone == 1:
                htmltext = "31328-06.htm"
        return htmltext


QUEST = Quest(21, qn, "Hidden Truth")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(31522)

for NPC in [31522, 31523, 31524, 31525, 31526, 31348, 31349, 31350, 31328]:
    QUEST.addTalkId(NPC)

STARTED.addQuestDrop(31526, 7140, 1)
Ejemplo n.º 21
0
            else:
                htmltext = "30078-03.htm"
        return htmltext

    def onKill(self, npc, player, isPet):
        st = player.getQuestState(qn)
        if not st: return
        if st.getState() != STARTED: return

        npcId = npc.getNpcId()
        cond = st.getInt("cond")
        if cond == 1:
            st.dropQuestItems(BEAR_SKIN, 1, 20, CHANCE, 1)
        return


QUEST = Quest(341, qn, "Hunting For Wild Beasts")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30078)

QUEST.addTalkId(30078)

STARTED.addQuestDrop(30078, BEAR_SKIN, 1)

QUEST.addKillId(20021)
QUEST.addKillId(20203)
QUEST.addKillId(20310)
QUEST.addKillId(20335)
Ejemplo n.º 22
0
        st = player.getQuestState(qn)
        if st:
            if npcId == SOUL_OF_WELL:
                self.well = 0
            elif npcId in MOBS:
                if st.getRandom(10) < 1 and st.getQuestItemsCount(SKULL) < 1:
                    st.giveItems(SKULL, 1)
                    st.playSound("ItemSound.quest_itemget")
                    st.set("cond", "5")
        return


QUEST = Quest(22, qn, "Tragedy In Von Hellmann Forest")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(INNOCENTIN)
QUEST.addStartNpc(TIFAREN)

for npcid in NPCS:
    QUEST.addTalkId(npcid)

for item in range(7141, 7148):
    STARTED.addQuestDrop(INNOCENTIN, item, 1)

QUEST.addAttackId(SOUL_OF_WELL)

for mobid in MOBS + [SOUL_OF_WELL]:
    QUEST.addKillId(mobid)
Ejemplo n.º 23
0
                    htmltext = "30042-02.htm"
                    st.exitQuest(1)
            elif st.getInt("cond") and st.getQuestItemsCount(
                    OFFICIAL_LETTER_ID):
                htmltext = "30042-05.htm"
        elif npcId == 30311 and st.getInt("cond") and st.getQuestItemsCount(
                OFFICIAL_LETTER_ID) and id == STARTED:
            st.takeItems(OFFICIAL_LETTER_ID, -1)
            st.giveItems(HASTE_POTION_ID, int(Config.RATE_QUESTS_REWARD))
            st.unset("cond")
            st.setState(COMPLETED)
            st.playSound("ItemSound.quest_finish")
            htmltext = "30311-01.htm"
        return htmltext


QUEST = Quest(155, qn, "Find Sir Windawood")
CREATED = State('Start', QUEST)
STARTING = State('Starting', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30042)

QUEST.addTalkId(30042)

QUEST.addTalkId(30311)

STARTED.addQuestDrop(30042, OFFICIAL_LETTER_ID, 1)
Ejemplo n.º 24
0
                if st.getQuestItemsCount(ENCHT_GARGOYLES_NAIL_ID) < 5:
                    st.playSound("ItemSound.quest_itemget")
                else:
                    st.playSound("ItemSound.quest_middle")
                    if st.getQuestItemsCount(
                            GHOULS_SKIN_ID) == 10 and st.getQuestItemsCount(
                                MEDUSAS_BLOOD_ID
                            ) == 12 and st.getQuestItemsCount(
                                FETTEREDSOULS_ICHOR_ID
                            ) == 5 and st.getQuestItemsCount(
                                ENCHT_GARGOYLES_NAIL_ID) == 5:
                        st.set("cond", "29")
        return


QUEST = Quest(214, qn, "Trial Of Scholar")
CREATED = State('Start', QUEST)
STARTING = State('Starting', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(NPC[0])

for npcId in NPC:
    for i in range(2674, 2721):
        QUEST.addTalkId(npcId)
        STARTED.addQuestDrop(npcId, i, 1)

for mobId in MOBS:
    QUEST.addKillId(mobId)
Ejemplo n.º 25
0
                # no longer participate in the party-quest pool for this item)
                if st.getQuestItemsCount(FLARE_SHARD) == max:
                    st.unset("awaitsFlare")
                elif st.getQuestItemsCount(FREEZING_SHARD) == max:
                    st.unset("awaitsFreezing")

                if st.getQuestItemsCount(FLARE_SHARD) == st.getQuestItemsCount(
                        FREEZING_SHARD) == max:
                    st.set("cond", str(cond + 1))
                    st.playSound("ItemSound.quest_middle")
                else:
                    st.playSound("ItemSound.quest_itemget")
        return


QUEST = Quest(369, qn, "Collector of Jewels")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(NELL)

QUEST.addTalkId(NELL)

for mob in DROPLIST_FREEZE.keys():
    QUEST.addKillId(mob)
for mob in DROPLIST_FLARE.keys():
    QUEST.addKillId(mob)

STARTED.addQuestDrop(NELL, FLARE_SHARD, 1)
STARTED.addQuestDrop(NELL, FREEZING_SHARD, 1)
Ejemplo n.º 26
0
        item, chance = DROPLIST[npc.getNpcId()]
        if st.getRandom(100) < chance:
            st.giveItems(item, 1)
            st.playSound("ItemSound.quest_itemget")
        return


QUEST = Quest(326, qn, "Vanquish Remnants")
CREATED = State('Start', QUEST)
STARTING = State('Starting', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30435)

QUEST.addTalkId(30435)

QUEST.addKillId(20436)
QUEST.addKillId(20437)
QUEST.addKillId(20438)
QUEST.addKillId(20439)
QUEST.addKillId(20053)
QUEST.addKillId(20058)
QUEST.addKillId(20061)
QUEST.addKillId(20063)
QUEST.addKillId(20066)

STARTED.addQuestDrop(20053, RED_CROSS_BADGE, 1)
STARTED.addQuestDrop(20061, BLUE_CROSS_BADGE, 1)
STARTED.addQuestDrop(20066, BLACK_CROSS_BADGE, 1)
Ejemplo n.º 27
0
   if st.getState() != STARTED : return 
   
   count=st.getQuestItemsCount(FLOATING_STONE)
   if count < 50 :
     if st.getRandom(100) < 25 and count < 49 :
       st.giveItems(FLOATING_STONE,2)
     else:
       st.giveItems(FLOATING_STONE,1)
     if count == 49 :
         st.playSound("ItemSound.quest_middle")
         st.set("cond","2")
     else:
         st.playSound("ItemSound.quest_itemget")
   return

QUEST       = Quest(295,qn,"Dreams Of Flight")
CREATED     = State('Start', QUEST)
STARTING     = State('Starting', QUEST)
STARTED     = State('Started', QUEST)
COMPLETED   = State('Completed', QUEST)


QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30536)

QUEST.addTalkId(30536)

QUEST.addKillId(20153)

STARTED.addQuestDrop(20153,FLOATING_STONE,1)
Ejemplo n.º 28
0

QUEST = Quest(171, qn, "Acts of Evil")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(ALVAH)

QUEST.addTalkId(ALVAH)

QUEST.addTalkId(ARODIN)
QUEST.addTalkId(TYRA)
QUEST.addTalkId(ROLENTO)
QUEST.addTalkId(NETI)
QUEST.addTalkId(BURAI)

STARTED.addQuestDrop(ALVAH, RANGERS_REPORT1, 1)
STARTED.addQuestDrop(ALVAH, RANGERS_REPORT2, 1)
STARTED.addQuestDrop(ALVAH, RANGERS_REPORT3, 1)
STARTED.addQuestDrop(ALVAH, RANGERS_REPORT4, 1)
STARTED.addQuestDrop(ALVAH, OL_MAHUM_HEAD, 1)
STARTED.addQuestDrop(ALVAH, CARGOBOX, 1)
STARTED.addQuestDrop(ALVAH, TYRAS_BILL, 1)
STARTED.addQuestDrop(ALVAH, CERTIFICATE, 1)
STARTED.addQuestDrop(ALVAH, BLADE_MOLD, 1)
STARTED.addQuestDrop(ALVAH, WEAPON_TRADE_CONTRACT, 1)

for i in range(20494, 20500) + [20062, 20066, 20438]:
    QUEST.addKillId(i)
Ejemplo n.º 29
0
                    else:
                        htmltext = "600.htm"  #TODO: This is custom, need to get official text from retail
                else:
                    htmltext = "600.htm"  #TODO: This is custom, need to get official text from retail
            elif id == STARTED:
                htmltext = "400.htm"
        return htmltext

    def onKill(self, npc, player, isPet):
        partyMember = self.getRandomPartyMember(player, "1")
        if not partyMember: return
        st = partyMember.getQuestState(qn)
        if st:
            if st.getState() == STARTED and st.getInt("cond") == 1:
                if st.getRandom(100) < CHANCE:
                    st.giveItems(DREAM_FRAGMENT_ID, 1)
                    st.playSound("ItemSound.quest_itemget")
        return


QUEST = Quest(650, qn, "A Broken Dream")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(GHOST)
QUEST.addTalkId(GHOST)
QUEST.addKillId(CREWMAN)
QUEST.addKillId(VAGABOND)
STARTED.addQuestDrop(CREWMAN, DREAM_FRAGMENT_ID, 1)
Ejemplo n.º 30
0
        elif npcId == MIRABEL and cond == 1:
            htmltext = "30146-04.htm"
        elif id == STARTED:
            if npcId == ARIEL and cond:
                if st.getQuestItemsCount(ARIELS_RECOMMENDATION) == 0:
                    htmltext = "30148-01.htm"
                else:
                    htmltext = "30148-03.htm"
            elif npcId == ASTERIOS and cond == 2 and st.getQuestItemsCount(
                    ARIELS_RECOMMENDATION) > 0:
                htmltext = "30154-01.htm"
            elif npcId == MIRABEL and cond == 3:
                htmltext = "30146-05.htm"
        return htmltext


QUEST = Quest(7, qn, "A Trip Begins")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(MIRABEL)

QUEST.addTalkId(MIRABEL)

QUEST.addTalkId(ARIEL)
QUEST.addTalkId(ASTERIOS)

STARTED.addQuestDrop(MIRABEL, ARIELS_RECOMMENDATION, 1)