예제 #1
0
 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)
예제 #2
0
            htmltext = "<html><body>I can't supply you with another Giran Scroll of Escape. Sorry traveller.</body></html>"
        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)
예제 #3
0
        st = partyMember.getQuestState(qn)
        if not st: return
        npcId = npc.getNpcId()
        chance = st.getRandom(100)
        if npcId in MOBS.keys():
            urnchance, porcchance = MOBS[npcId]
            if chance < urnchance:
                st.giveItems(URN, 1)
                st.playSound("ItemSound.quest_itemget")
            elif chance < porcchance:
                st.giveItems(PORCELAIN, 1)
                st.playSound("ItemSound.quest_itemget")
        return


QUEST = Quest(371, qn, "Shriek Of Ghosts")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(REVA)

QUEST.addTalkId(REVA)
QUEST.addTalkId(PATRIN)

for mob in MOBS.keys():
    QUEST.addKillId(mob)

for rew in PORC.keys():
    STARTED.addQuestDrop(PATRIN, rew, 1)
예제 #4
0
   classId = player.getClassId()
   id = classId.getId()
   htmltext = default
   if player.isSubClassActive() :
      st.exitQuest(1)
      return htmltext
   # Dark Elves only
   if npcId in NPCS :
     htmltext = str(npcId)
     if race in [2] :
       if classId.level() == 1 : # first occupation change already made
         htmltext += "-32.htm"
       elif classId.level() >= 2 : # second/third occupation change already made
         htmltext += "-31.htm"
       elif id == 31 :      # DE Fighter
         return htmltext+"-01.htm"
       elif id == 38 :      # DE Mystic
         return htmltext+"-08.htm"
     else :
       htmltext += "-33.htm"  # other races
   st.exitQuest(1)
   return htmltext

QUEST   = Quest(99997,qn,"village_master")
CREATED = State('Start', QUEST)

QUEST.setInitialState(CREATED)

for npc in NPCS :
    QUEST.addStartNpc(npc)
    QUEST.addTalkId(npc)
예제 #5
0
                    st.playSound("ItemSound.quest_middle")
                    st.set("cond", "9")
                else:
                    st.playSound("ItemSound.quest_itemget")
        elif npcId == 20021:  #Red Bear
            st.set("id", "0")
            #Only get a RED_SOIL if we are on the quest for the Earth Snake
            if st.getInt("cond") == 11:
                st.giveItems(RED_SOIL, 1)
                st.playSound("ItemSound.quest_middle")
                st.set("cond", "12")
        return


QUEST = Quest(404, qn, "Path To Wizard")
CREATED = State('Start', QUEST)
STARTING = State('Starting', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30391)

QUEST.addTalkId(30391)

QUEST.addTalkId(30409)
QUEST.addTalkId(30410)
QUEST.addTalkId(30411)
QUEST.addTalkId(30412)
QUEST.addTalkId(30413)
예제 #6
0
            if st.getQuestItemsCount(FAIRY_BREATH) == 0:
                htmltext = "30634-04.htm"
            else:
                htmltext = "30634-05.htm"
        return htmltext

    def onKill(self, npc, player, isPet):
        st = player.getQuestState(qn)
        if not st: return
        npcId = npc.getNpcId()
        if st.getInt("cond") == 1:
            chance = st.getRandom(100)
            if npcId in MOBS and chance < 90:
                st.giveItems(FAIRY_BREATH, 1)
                st.playSound("ItemSound.quest_itemget")
        return


QUEST = Quest(659, qn, "I'd Rather Be Collecting Fairy Breath")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)

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

for mob in MOBS:
    QUEST.addKillId(mob)

STARTED.addQuestDrop(GALATEA, FAIRY_BREATH, 1)
예제 #7
0
                    ATTACK_DIRECTIVES) and chance < CHANCE25:
                st.giveItems(ATTACK_DIRECTIVES, 1)
                st.playSound("ItemSound.quest_itemget")
        elif cond == 10 and npcId == 20066:
            heads = st.getQuestItemsCount(OL_MAHUM_HEAD)
            if heads < 30 and chance < CHANCE3:
                st.giveItems(OL_MAHUM_HEAD, 1)
                if heads == 29:
                    st.playSound("ItemSound.quest_middle")
                else:
                    st.playSound("ItemSound.quest_itemget")
        return


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)
예제 #8
0
    def onKill(self, npc, player, isPet):
        st = player.getQuestState(qn)
        if not st: return
        if st.getState() != STARTED: return

        item = ORC_AMULET
        if npc.getNpcId() in range(20471, 20474):
            item = ORC_NECKLACE
        if st.getRandom(10) > 4:
            st.giveItems(item, 1)
            st.playSound("ItemSound.quest_itemget")
        return


QUEST = Quest(260, qn, "Hunt For Orcs1")
CREATED = State('Start', QUEST)
STARTING = State('Starting', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30221)

QUEST.addTalkId(30221)

QUEST.addKillId(20468)
QUEST.addKillId(20469)
QUEST.addKillId(20470)
QUEST.addKillId(20471)
QUEST.addKillId(20472)
QUEST.addKillId(20473)
예제 #9
0
                            elif id == 2 and item != 0:
                                giveReward(st, item, chance, MAX, drop)
                        elif id == 2 and item != 0:
                            giveReward(st, item, chance, MAX, drop)
                    elif npcId in Varka_Silenos:
                        decreaseAlliance(st)
                        party = partyMember.getParty()
                        if party:
                            for player in party.getPartyMembers().toArray():
                                pst = player.getQuestState(qn)
                                if pst:
                                    decreaseAlliance(pst)
        return


QUEST = Quest(611, qn, "Alliance With Varka Silenos")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(Naran_Ashanuk)

QUEST.addTalkId(Naran_Ashanuk)

for mobId in Chance.keys():
    QUEST.addKillId(mobId)
STARTED.addQuestDrop(Naran_Ashanuk, Ketra_Badge_Soldier, 1)
STARTED.addQuestDrop(Naran_Ashanuk, Ketra_Badge_Officer, 1)
STARTED.addQuestDrop(Naran_Ashanuk, Ketra_Badge_Captain, 1)
for mobId in Varka_Silenos:
    QUEST.addKillId(mobId)
예제 #10
0
            if st.getQuestItemsCount(GOLD_LEAVES) == 5 :
              st.playSound("ItemSound.quest_middle")
            else:
              st.playSound("ItemSound.quest_itemget")
   elif npcId == 20047 :
        st.set("id","0")
        if st.getInt("cond") != 0 and st.getQuestItemsCount(LUCKY_POTPOURI) != 0 and st.getQuestItemsCount(AMETHYST)<2 and st.getRandom(100)<40 :
            st.giveItems(AMETHYST,1)
            if st.getQuestItemsCount(AMETHYST) == 2 :
              st.playSound("ItemSound.quest_middle")
            else:
              st.playSound("ItemSound.quest_itemget")
   return

QUEST       = Quest(408,qn,"Path To Elvenwizard")
CREATED     = State('Start', QUEST)
STARTING     = State('Starting', QUEST)
STARTED     = State('Started', QUEST)
COMPLETED   = State('Completed', QUEST)


QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30414)

QUEST.addTalkId(30414)

QUEST.addTalkId(30157)
QUEST.addTalkId(30371)
QUEST.addTalkId(30423)

QUEST.addKillId(20019)
예제 #11
0
                if cond == 4:
                    htmltext = "31662-0.htm"
                elif cond > 4:
                    htmltext = "31662-2.htm"
            elif npcId == FORGOTTEN_MONUMENT_3:
                if cond == 5:
                    htmltext = "31663-0.htm"
                elif cond > 5:
                    htmltext = "31663-2.htm"
            elif npcId == FORGOTTEN_MONUMENT_4:
                if cond == 6:
                    htmltext = "31664-0.htm"
                elif cond > 6:
                    htmltext = "31664-2.htm"
        return htmltext


QUEST = Quest(31, qn, "Secret Buried In The Swamp")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(ABERCROMBIE)

QUEST.addTalkId(ABERCROMBIE)

for i in range(31661, 31666):
    QUEST.addTalkId(i)

STARTED.addQuestDrop(ABERCROMBIE, KRORINS_JOURNAL, 1)
예제 #12
0
        elif npcId == 27056:
            st.set("id", "0")
            if st.getInt("cond") and st.getQuestItemsCount(
                    SPIRIT_NET) == 1 and st.getQuestItemsCount(
                        BOUND_DURKA_SPIRIT) == 0:
                st.giveItems(BOUND_DURKA_SPIRIT, 1)
                st.takeItems(SPIRIT_NET, 1)
                st.takeItems(DURKA_PARASITE,
                             st.getQuestItemsCount(DURKA_PARASITE))
                st.playSound("ItemSound.quest_middle")
                st.set("cond", "10")
        return


QUEST = Quest(416, qn, "Path To Orc Shaman")
CREATED = State('Start', QUEST)
STARTING = State('Starting', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30585)

QUEST.addTalkId(30585)

QUEST.addTalkId(30502)
QUEST.addTalkId(30592)
QUEST.addTalkId(30593)

QUEST.addKillId(20335)
QUEST.addKillId(20038)
예제 #13
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)
예제 #14
0
        elif npcId == Shikon:
            if Alevel == -2:
                htmltext = "31382-1.htm"
            elif Alevel == -3 or Alevel == -4:
                htmltext = "31382-2.htm"
            elif Alevel == -5:
                htmltext = "31382-3.htm"
            else:
                htmltext = "31382-no.htm"
        elif npcId == Teranu:
            if Alevel >= 0:
                htmltext = "31383-no.htm"
            elif Alevel < 0 and Alevel > -4:
                htmltext = "31383-1.htm"
            elif Alevel == -4:
                htmltext = "31383-2.htm"
            else:
                htmltext = "31383-3.htm"
        return htmltext


QUEST = Quest(6051, qn, "custom")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)

QUEST.setInitialState(CREATED)
for i in NPCS:
    QUEST.addFirstTalkId(i)
QUEST.addTalkId(Udan)
QUEST.addTalkId(Hagos)
QUEST.addTalkId(Teranu)
예제 #15
0
    def onKill(self, npc, player, isPet):
        st = player.getQuestState(qn)
        if not st: return
        if st.getState() != STARTED: return

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


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

QUEST.setInitialState(CREATED)

QUEST.addStartNpc(30576)
QUEST.addTalkId(30576)

QUEST.addKillId(20333)
STARTED.addQuestDrop(20333, STARSTONE1_ID, 1)
예제 #16
0
   elif npcId == 31349 and st.getQuestItemsCount(7140) == 1 :
     if cond == 6 :
       st.set("BENEDICT","1")
       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)
예제 #17
0
                    st.giveItems(CARGO, 1)
                    st.playSound("ItemSound.quest_itemget")
            elif npcId in MOBS_2:
                if (chanse < 15) and (not holy):
                    st.giveItems(HOLY, 1)
                    st.playSound("ItemSound.quest_middle")
                elif (chanse < 15) and (not rosary):
                    st.giveItems(ROSARY, 1)
                    st.playSound("ItemSound.quest_middle")
            elif npcId == BIFRON:
                st.addSpawn(CHEST, npc, 30000)
        return


QUEST = Quest(340, qn, "Subjugation of Lizardmen")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(WEIZ)

QUEST.addTalkId(WEIZ)
QUEST.addTalkId(ADONIUS)
QUEST.addTalkId(LEVIAN)
QUEST.addTalkId(CHEST)

STARTED.addQuestDrop(CHEST, TOTEM, 1)

for i in MOBS_1 + MOBS_2 + [25146]:
    QUEST.addKillId(i)
예제 #18
0
        if not partyMember: return
        st = partyMember.getQuestState(qn)
        numItems, chance = divmod(DROP_RATE, MAX)
        drop = st.getRandom(MAX)
        if drop < chance:
            numItems = numItems + 1
        if int(numItems) != 0:
            st.giveItems(ANC_BOOK, int(numItems))
            st.playSound("ItemSound.quest_itemget")
        return


# Quest class and state definition
QUEST = Quest(QUEST_NUMBER,
              str(QUEST_NUMBER) + "_" + QUEST_NAME, QUEST_DESCRIPTION)

CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)

# Quest NPC starter initialization
QUEST.addStartNpc(HR_SOBLING)
# Quest initialization
QUEST.addTalkId(HR_SOBLING)

for i in MOBS:
    QUEST.addKillId(i)

STARTED.addQuestDrop(HR_SOBLING, DICT2, 1)
예제 #19
0
                    htmltext = "32052-2a.htm"
        return htmltext

    def onKill(self, npc, player, isPet):
        st = player.getQuestState(qn)
        if st:
            if st.getState() == STARTED:
                count = st.getQuestItemsCount(THIEF_GUILD_MARK)
                if st.getInt("cond") == 1 and count < 200 and st.getRandom(
                        100) < DROP_CHANCE:
                    st.giveItems(THIEF_GUILD_MARK, 1)
                    if count == 199:
                        st.playSound("ItemSound.quest_middle")
                        st.set("cond", "2")
                    else:
                        st.playSound("ItemSound.quest_itemget")
        return


QUEST = Quest(649, qn, "A Looter and a Railroad Man")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)

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

for BANDITS in [22017, 22018, 22019, 22021, 22022, 22023, 22024, 22026]:
    QUEST.addKillId(BANDITS)

STARTED.addQuestDrop(OBI, THIEF_GUILD_MARK, 1)
예제 #20
0
                    LIZARD_CAPTAIN_ORDER) == 0:
                st.giveItems(LIZARD_CAPTAIN_ORDER, 1)
                st.playSound("ItemSound.quest_middle")
                st.set("cond", "3")
        elif npcId == 27035:
            st.set("id", "0")
            if st.getInt("cond") and st.getQuestItemsCount(
                    TAMATOS_NECKLACE) == 0:
                st.giveItems(TAMATOS_NECKLACE, 1)
                st.playSound("ItemSound.quest_middle")
                st.set("cond", "5")
        return


QUEST = Quest(409, qn, "Path To Oracle")
CREATED = State('Start', QUEST)
STARTING = State('Starting', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30293)

QUEST.addTalkId(30293)

QUEST.addTalkId(30424)
QUEST.addTalkId(30428)

QUEST.addKillId(27032)
QUEST.addKillId(27033)
QUEST.addKillId(27034)
예제 #21
0
                else:
                    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)
예제 #22
0
                    if npcId == 27181:  # Imperial Gravekeeper
                        spawnedNpc = leader_st.addSpawn(30765, 120000)
                        npc.broadcastPacket(
                            CreatureSay(
                                spawnedNpc.getObjectId(), 0,
                                spawnedNpc.getName(),
                                "Curse of the gods on the one that defiles the property of the empire!"
                            ))
                        leader_st.set("ImpGraveKeeper", "3")
                        self.ImpGraveKepperStat = 1
                    else:
                        leader_st.addSpawn(27179)
        return

QUEST = Quest(503, qn, "Pursuit of Clan Ambition")
CREATED = State('Start', QUEST)
PROGRESS = State('Progress', QUEST)
COMPLETED = State('Completed', QUEST)

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

for npcId in NPC:
    QUEST.addTalkId(npcId)

for mobId in DROPLIST.keys():
    QUEST.addKillId(mobId)

QUEST.addAttackId(27181)

for i in range(3839, 3848) + range(3866, 3870):
예제 #23
0
                htmltext = "30357-05.htm"
            else:
                htmltext = "30357-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 + ((npc.getNpcId() - 20000) ^ 4)):
            st.giveItems(IMP_SHACKLES, 1)
            st.playSound("ItemSound.quest_itemget")
        return


QUEST = Quest(265, qn, "Chains Of Slavery")
CREATED = State('Start', QUEST)
STARTING = State('Starting', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30357)

QUEST.addTalkId(30357)

QUEST.addKillId(20004)
QUEST.addKillId(20005)

STARTED.addQuestDrop(20004, IMP_SHACKLES, 1)
예제 #24
0
        return htmltext

    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)
예제 #25
0
                                           spawnedNpc)
                    else:
                        st.giveItems(R4[st.getRandom(len(R4))], 1)
                except:
                    pass
            elif npcId == GREAT_DEMON_KING:
                try:
                    st.getQuestTimer("greatdemon_timer1").cancel()
                    st.giveItems(ADENA, 1412965)
                    st.playSound("ItemSound.quest_itemget")
                except:
                    pass
        return

QUEST = Quest(334, qn, "The Wishing Potion")
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)
예제 #26
0
            partyMember = self.getRandomPartyMember(player, "14")
            if partyMember:
                st = partyMember.getQuestState(qn)
                chance = st.getRandom(100)
                if CRIMSON_MOSS_CHANCE >= chance and st.getQuestItemsCount(
                        CRIMSON_MOSS) < 5:
                    st.giveItems(CRIMSON_MOSS, 1)
                    st.playSound("ItemSound.quest_itemget")
                    if st.getQuestItemsCount(CRIMSON_MOSS) == 5:
                        st.set("cond", "15")
                        st.playSound("ItemSound.quest_middle")
        return


QUEST = Quest(241, qn, "Possessor Of A Precious Soul - 1")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

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

QUEST.addTalkId(STEDMIEL)
QUEST.addTalkId(GABRIELLE)
QUEST.addTalkId(GILMORE)
QUEST.addTalkId(KANTABILON)
QUEST.addTalkId(NOEL)
QUEST.addTalkId(RAHORAKTI)
QUEST.addTalkId(CARADINE)
QUEST.addTalkId(VIRGIL)
예제 #27
0
        st.set("cond","3")
        htmltext = "30957-04.htm"
     elif cond == 3 :
        htmltext = "30957-05.htm"
     elif cond == 2 :
        htmltext = "30957-03.htm"
   elif npcId == 30960 and cond :
        htmltext = "30960-01.htm"
   elif npcId == 30961 and cond :
        htmltext = "30961-01.htm"
   elif npcId == 30060 and st.getQuestItemsCount(BEER) :
        st.set("ok","1")
        st.takeItems(BEER,1)
        htmltext = "30060-01.htm"
   return htmltext

QUEST       = Quest(364,qn,"Ask What You Need to Do")
CREATED     = State('Start', QUEST)
STARTED     = State('Started', QUEST)
COMPLETED   = State('Completed', QUEST)


QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30959)

for npcId in [30959,30957,30060,30961,30960]:
  QUEST.addTalkId(npcId)

STARTED.addQuestDrop(30959,KEY_1,1)
STARTED.addQuestDrop(30959,KEY_2,1)
STARTED.addQuestDrop(30960,BEER,1)
예제 #28
0
          if count<maxcount:
            st.giveItems(item,1)
            # spawns 5 new medusas around the dead queen *muha*
            if npcId == 27108:
              for i in range(5):
                st.addSpawn(20158)
            if count == maxcount-1:
              st.playSound("ItemSound.quest_middle")
              st.set(var,str(isValue+1))
            else:
              st.playSound("ItemSound.quest_itemget")
            return


QUEST     = Quest(233,qn,"Test Of Warspirit")
CREATED   = State('Start', QUEST)
PART1     = State('Part1', QUEST)
PART2     = State('Part2', QUEST)
COMPLETED = State('Completed', QUEST)


QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30510)

for npcId in NPC:
  QUEST.addTalkId(npcId)

for mobId in PART1_MOBS:
  QUEST.addKillId(mobId)

for mobId in PART2_MOBS:
예제 #29
0
        id = st.getState()
        cond = st.getInt("cond")
        if id == COMPLETED:
            htmltext = "<html><body>This quest have already been completed</body></html>"
        elif npcId == MOIRA:
            if cond == 0:
                if player.getLevel() >= 20:
                    htmltext = "31979-02.htm"
                else:
                    htmltext = "31979-01.htm"
                    st.exitQuest(1)
            else:
                htmltext = "31979-03.htm"
        elif npcId == KARUDA and cond == 1 and id == STARTED:
            htmltext = "32017-01.htm"
            st.set("ok", "1")
        return htmltext


QUEST = Quest(122, qn, "Ominous News")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(MOIRA)

QUEST.addTalkId(MOIRA)

QUEST.addTalkId(KARUDA)
예제 #30
0
            st.exitQuest(1)
         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)