示例#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
                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)
示例#3
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)
示例#4
0
                            pst.set("id", "3")
                        if pst.getQuestTimer(
                                "Soul of Fire Nastron has despawned"):
                            pst.getQuestTimer(
                                "Soul of Fire Nastron has despawned").cancel()
        elif npcId in Varka_Mobs:
            st = player.getQuestState(qn)
            if st:
                if st.getQuestItemsCount(Fire_Heart):
                    st.takeItems(Fire_Heart, -1)
                st.unset("cond")
                st.unset("id")
                st.exitQuest(1)
        return


QUEST = Quest(616, qn, "Magical Power of Fire - Part 2")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(Udan)

QUEST.addTalkId(Udan)
QUEST.addTalkId(Alter)

QUEST.addKillId(Nastron)
STARTED.addQuestDrop(Nastron, Fire_Heart, 1)

for mobId in Varka_Mobs:
    QUEST.addKillId(mobId)
示例#5
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):
示例#6
0
BOX = 32342
REWARDS = [9692, 9693]


def dropItem(npc, itemId, count, player):
    ditem = ItemTable.getInstance().createItem("Loot", itemId, count, player)
    ditem.dropMe(npc, npc.getX(), npc.getY(), npc.getZ())


class evabox(JQuest):
    def __init__(self, id, name, descr):
        self.isSpawned = False
        JQuest.__init__(self, id, name, descr)

    def onKill(self, npc, player, isPet):
        found = False
        for effect in player.getAllEffects():
            if effect.getSkill().getId() in KISS_OF_EVA:
                found = True
        if found:
            dropid = Rnd.get(len(REWARDS))
            dropItem(npc, REWARDS[dropid], 1, player)
        return


QUEST = evabox(-1, "evabox", "ai")
CREATED = State('Start', QUEST)

QUEST.setInitialState(CREATED)

QUEST.addKillId(BOX)
示例#7
0
                            else:
                                st.playSound("ItemSound.quest_itemget")
        return

    # only leaders are registered for onDeath.  Therefore, st should always match that of the leader
    def onDeath(self, npc, pc, st):
        if st.getPlayer() == pc:
            timer1 = st.getQuestTimer("poison_timer")
            timer2 = st.getQuestTimer("chest_timer")
            if timer1 != None: timer1.cancel()
            if timer2 != None: timer2.cancel()
            st.exitQuest(1)
        if DEBUG: return "DEBUG: Leader died. Quest failed."

QUEST = Quest(501, qn, qd)
CREATED = State('Start', QUEST)
PART2 = State('Part2', QUEST)
PART3 = State('Part3', QUEST)
PART4 = State('Part4', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)

for i in [SIR_KRISTOF_RODEMAI, STATUE_OF_OFFERING]:
    QUEST.addStartNpc(i)
    QUEST.addTalkId(i)

for i in [WITCH_KALIS, WITCH_ATHREA]:
    QUEST.addTalkId(i)

CREATED.addQuestDrop(STATUE_OF_OFFERING, SYMBOL_OF_LOYALTY, 1)
示例#8
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)
示例#9
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)
示例#10
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)
示例#11
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)
示例#12
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)
示例#13
0
            numItems, chance = divmod(chance,100)
            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