Example #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 = []
     #todos estes não são sobrescritos pelas subclasses (porque são constantes ou usadas apenas para este script)
     self.CREATED     = State('Start', self)
     self.STARTED     = State('Started', self)
     self.COMPLETED   = State('Completed', self)
Example #2
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)
Example #3
0
            else:
                return "30598-6.htm"  #you're not eligible to get a coupon (level caps, pkkills or didnt change class yet)
        elif event == "newbie_show_weapon":
            if 6 <= level <= 39 and not pkkills and occupation_level == 0:
                L2Multisell.getInstance().SeparateAndSend(
                    WEAPON_MULTISELL, player, False, 0.0)
            else:
                return "30598-7.htm"  #you're not eligible to use warehouse
        elif event == "newbie_show_armor":
            if 6 <= level <= 39 and not pkkills and occupation_level > 0:
                L2Multisell.getInstance().SeparateAndSend(
                    ACCESORIES_MULTISELL, player, False, 0.0)
            else:
                return "30598-8.htm"  #you're not eligible to use warehouse

    def onTalk(self, npc, player):
        st = player.getQuestState(qn)
        if not st: st = self.newQuestState(player)

        return "30598.htm"


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

QUEST.setInitialState(CREATED)

for i in NPCs:
    QUEST.addStartNpc(i)
    QUEST.addTalkId(i)
Example #4
0
                if st.getRandom(100) < 50:
                    st.giveItems(INPICIO_SAC_ID, 1)
                    st.playSound("ItemSound.quest_middle")
        elif npcId == 20233:
            st.set("id", "0")
            if st.getInt("cond") and st.getQuestItemsCount(
                    RING_OF_TESTIMONY2_ID
            ) == 1 and st.getQuestItemsCount(SPIDER_THORN_ID) < 10:
                if st.getRandom(100) < 50:
                    st.giveItems(SPIDER_THORN_ID, 1)
                    st.playSound("ItemSound.quest_middle")
        return


QUEST = Quest(221, qn, "Testimony Of Prosperity")
CREATED = State('Start', QUEST)
STARTING = State('Starting', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30104)

QUEST.addTalkId(30104)

QUEST.addTalkId(30005)
QUEST.addTalkId(30368)
QUEST.addTalkId(30466)
QUEST.addTalkId(30517)
QUEST.addTalkId(30519)
QUEST.addTalkId(30531)
Example #5
0

class Quest(JQuest):
    def __init__(self, id, name, descr):
        JQuest.__init__(self, id, name, descr)

    def onTalk(Self, npc, player):
        st = player.getQuestState(qn)
        htmltext = "<html><body>You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements.</body></html>"
        if player.isHero():
            if st.getQuestItemsCount(6842):
                htmltext = "You can't have more than one circlet."
            else:
                st.giveItems(6842, 1)
                htmltext = "Enjoy your Wings of Destiny Circlet."
            st.exitQuest(1)
        else:
            html = "<html><body>Monument of Heroes:<br>You're not a Hero and aren't eligible to receive the Wings of Destiny Circlet. Better luck next time.<br><a action=\"bypass -h npc_%objectId%_Chat 0\">Return</a></body></html>"
            htmltext = html.replace("%objectId%", str(npc.getObjectId()))
            st.exitQuest(1)
        return htmltext


QUEST = Quest(-1, qn, "custom")
CREATED = State('Start', QUEST)

QUEST.setInitialState(CREATED)

for i in MONUMENTS:
    QUEST.addStartNpc(i)
    QUEST.addTalkId(i)
Example #6
0
        if not st: return
        if st.getState() != PROGRESS: return

        npcId = npc.getNpcId()
        drop = st.getRandom(100)
        cond = st.getInt("cond")
        dropcond = DROPLIST[npcId][0]
        if drop < DROP_RATE and cond == dropcond:
            if st.getQuestItemsCount(DROPLIST[npcId][1]) == 0:
                st.giveItems(DROPLIST[npcId][1], 1)
                st.playSound("ItemSound.quest_itemget")
                st.set("cond", str(cond + 1))
        return


# Quest class and state definition
QUEST = Quest(QUEST_NUMBER, qn, QUEST_DESCRIPTION)

CREATED = State('Start', QUEST)
PROGRESS = State('Progress', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
# Quest NPC starter initialization
QUEST.addStartNpc(LADD)
# Quest initialization
QUEST.addTalkId(LADD)
QUEST.addTalkId(JOAN)

for i in DROPLIST.keys():
    QUEST.addKillId(i)
Example #7
0
                count = st.getQuestItemsCount(item)
                if st.getRandom(100) < chance:
                    numItems += 1
                if numItems:
                    if count + numItems >= REQUIRED_SPIDER_LEGS:
                        numItems = REQUIRED_SPIDER_LEGS - count
                        st.playSound("ItemSound.quest_middle")
                    else:
                        st.playSound("ItemSound.quest_itemget")
                    st.giveItems(item, int(numItems))
        return


# Quest class and state definition
QUEST = Quest(419, qn, "Wolf Collar")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)
SLAYED = State('Slayed', QUEST)
TALKED = State('Talked', QUEST)
COMPLETED = State('Completed', QUEST)

# Quest initialization
QUEST.setInitialState(CREATED)
# Quest NPC starter initialization
QUEST.addStartNpc(PET_MANAGER_MARTIN)

# Quest Item Drop initialization
for item in range(3417, 3428):
    STARTED.addQuestDrop(PET_MANAGER_MARTIN, item, 1)

# Quest mob initialization
Example #8
0
           spawnedNpc=st.addSpawn(GREAT_DEMON_KING,npc,True,0)
           autochat(spawnedNpc,"Who dares to kill my fiendly minion?!")
           st.startQuestTimer("greatdemon_timer1",600000,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)
Example #9
0
        npcId = str(npc.getNpcId())
        id = st.getState()
        if id == CREATED:
            st.set("cond", "0")
        if st.getInt("cond") == 0:
            htmltext = npcId + "-01.htm"
        elif check(st):
            htmltext = npcId + "-03.htm"
        elif st.getQuestItemsCount(
                RED_SOUL_CRYSTAL0_ID) == st.getQuestItemsCount(
                    GREEN_SOUL_CRYSTAL0_ID) == st.getQuestItemsCount(
                        BLUE_SOUL_CRYSTAL0_ID) == 0:
            htmltext = npcId + "-21.htm"
        return htmltext


QUEST = Quest(350, qn, "Enhance Your Weapon")
CREATED = State('Start', QUEST)
STARTING = State('Starting', QUEST)
STARTED = State('Started', QUEST)

QUEST.setInitialState(CREATED)

for npcId in NPC:
    QUEST.addStartNpc(npcId)
    QUEST.addTalkId(npcId)

STARTED.addQuestDrop(4629, RED_SOUL_CRYSTAL0_ID, 1)
STARTED.addQuestDrop(4640, GREEN_SOUL_CRYSTAL0_ID, 1)
STARTED.addQuestDrop(4651, BLUE_SOUL_CRYSTAL0_ID, 1)
Example #10
0
   item=DROP_LIST[npcId][0]
   random = st.getRandom(100)
   if item == KALDIS_COIN :
     if cond == 2 :
       if not st.getQuestItemsCount(item) and random < (chance - 10) :
          st.giveItems(item,1)
          st.playSound("ItemSound.quest_middle")
          st.set("cond","3")
   elif random < chance:
      st.giveItems(item,1)
      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)
SOLO        = State('Solo',   QUEST)
PARTY       = State('Party',   QUEST)
COMPLETED   = State('Completed', QUEST)

QUEST.setInitialState(CREATED)

# Quest NPC starter initialization
QUEST.addStartNpc(SORINT)
# Quest initialization
for npc in [SORINT, BERNARD, PAGE, HAGGER, STAN, RALFORD, FERRIS, COLLOB, PANO, DUNING, LORAIN]:
   QUEST.addTalkId(npc)

for mob in DROP_LIST.keys():
   QUEST.addKillId(mob)
Example #11
0
        count = st.getQuestItemsCount(KASHA_WOLF_FANG)
        if count < 50:
            numItems, chance = divmod(125 * Config.RATE_DROP_QUEST, 100)
            if st.getRandom(100) <= chance:
                numItems += 1
            numItems = int(numItems)
            if numItems != 0:
                if 50 <= (count + numItems):
                    numItems = 50 - count
                    st.playSound("ItemSound.quest_middle")
                    st.set("cond", "2")
                else:
                    st.playSound("ItemSound.quest_itemget")
                st.giveItems(KASHA_WOLF_FANG, numItems)
        return


QUEST = Quest(271, qn, "Proof Of Valor")
CREATED = State('Start', QUEST)
STARTING = State('Starting', QUEST)  # kept just for backwards compatibility
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30577)

QUEST.addTalkId(30577)

QUEST.addKillId(20475)
STARTED.addQuestDrop(20475, KASHA_WOLF_FANG, 1)
Example #12
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:
    QUEST.addKillId(mobId)
Example #13
0
                st.takeItems(M_EGG, 1)
                st.giveItems(57, 71318)
                st.setState(COMPLETED)
                st.set("cond", "0")
                st.playSound("ItemSound.quest_finish")
        elif npcId == KARAKAWEI:
            if cond == 4:
                htmltext = "32117-01.htm"
                if id == MIDDLE:
                    htmltext = "32117-02.htm"
            elif cond == 5:
                htmltext = "32117-04.htm"
        elif npcId == MANTARASA and cond == 5:
            htmltext = "32118-01.htm"
        return htmltext


QUEST = Quest(124, qn, "Meeting The Elroki")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)
MIDDLE = State('Middle', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)

QUEST.addStartNpc(MARQUEZ)
QUEST.addTalkId(MARQUEZ)
QUEST.addTalkId(MUSHIKA)
QUEST.addTalkId(ASAMAH)
QUEST.addTalkId(KARAKAWEI)
QUEST.addTalkId(MANTARASA)