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 = []
     #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 #2
0
           htmltext = "30048-09.htm" 
         elif ItemsCount_BP > 0 : 
           htmltext = "30048-10.htm" 
           st.takeItems(BAULS_POTION,-1) 
           st.giveItems(NECKLACE,1) 
           st.set("cond","0") 
           st.set("onlyone","1") 
           st.setState(COMPLETED)
           st.playSound("ItemSound.quest_finish") 
         else: 
           htmltext = "30048-07.htm" 
   return htmltext

QUEST     = Quest(1,qn,"Letters of Love") 
CREATED   = State('Start',     QUEST) 
STARTING  = State('Starting',  QUEST) 
STARTED   = State('Started',   QUEST) 
COMPLETED = State('Completed', QUEST) 

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(DARIN) 

QUEST.addTalkId(DARIN) 

QUEST.addTalkId(ROXXY) 
QUEST.addTalkId(BAULRO) 

STARTED.addQuestDrop(DARIN,DARINGS_LETTER,1) 
STARTED.addQuestDrop(DARIN,RAPUNZELS_KERCHIEF,1) 
STARTED.addQuestDrop(DARIN,DARINGS_RECEIPT,1) 
STARTED.addQuestDrop(DARIN,BAULS_POTION,1) 
Example #3
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)

SOLO.addQuestDrop(SORINT,3811,1)
Example #4
0
     if st.getState() == STARTED :
       count = st.getQuestItemsCount(NECROHEART)
       if st.getInt("cond") == 1 and count < 10 :
          chance = DROP_CHANCE * Config.RATE_DROP_QUEST
          numItems, chance = divmod(int(chance),100)
          if st.getRandom(100) < chance : 
             numItems += 1
          if numItems :
             if count + numItems >= 10 :
                numItems = 10 - count
                st.playSound("ItemSound.quest_middle")
                st.set("cond","2")
             else:
                st.playSound("ItemSound.quest_itemget")
             st.giveItems(NECROHEART,int(numItems))
   return

QUEST       = Quest(637,qn,"Through the Gate Once More")
CREATED     = State('Start', QUEST)
STARTED     = State('Started', QUEST)
COMPLETED   = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(FLAURON)

QUEST.addTalkId(FLAURON)

for mob in range(21565,21568):
    QUEST.addKillId(mob)

STARTED.addQuestDrop(FLAURON,NECROHEART,1)
Example #5
0
      if not st : return
      count = st.getQuestItemsCount(VACUALITE_ORE)
      if st.getInt("cond") == 2 and count < 50 :
         chance = CHANCE_FOR_QUEST_ITEMS * Config.RATE_DROP_QUEST
         numItems, chance = divmod(chance,100)
         if st.getRandom(100) < chance : 
            numItems += 1
         if numItems :
            if count + numItems >= 50 :
               numItems = 50 - count
               st.playSound("ItemSound.quest_middle")
               st.set("cond","3")
            else:
               st.playSound("ItemSound.quest_itemget")   
            st.giveItems(VACUALITE_ORE,int(numItems)) 
      return

QUEST       = Quest(618,qn,"Into the Flame")
CREATED     = State('Start', QUEST)
STARTED     = State('Started', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(KLEIN)
QUEST.addTalkId(KLEIN)
QUEST.addTalkId(HILDA)

for mob in range(21274,21278)+range(21282,21286)+range(21290,21294) :
    QUEST.addKillId(mob)

for item in range(7265,7267) :
    STARTED.addQuestDrop(KLEIN,item,1)
Example #6
0
            elif npcId == 30094 and st.getInt("cond")==2 :
                htmltext = "30094-03.htm"
            elif npcId == 30090 and st.getInt("cond")==3 :
                htmltext = "30090-01.htm"
            elif npcId == 30090 and st.getInt("cond")==4 :
                htmltext = "30090-03.htm"
            elif npcId == 30116 and st.getInt("cond")==5 :
                htmltext = "30116-01.htm"
            elif npcId == 30116 and st.getInt("cond")==6 :
                htmltext = "30116-03.htm"

        return htmltext

QUEST       = Quest(47,qn,"Into The Dark Forest")
CREATED     = State('Start', QUEST)
STARTED     = State('Started', QUEST)
COMPLETED   = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30097)

QUEST.addTalkId(30097)

QUEST.addTalkId(30094)
QUEST.addTalkId(30090)
QUEST.addTalkId(30116)

STARTED.addQuestDrop(30097,GALLADUCCIS_ORDER_DOCUMENT_ID_1,1)
STARTED.addQuestDrop(30097,GALLADUCCIS_ORDER_DOCUMENT_ID_2,1)
STARTED.addQuestDrop(30097,GALLADUCCIS_ORDER_DOCUMENT_ID_3,1)
STARTED.addQuestDrop(30094,MAGIC_SWORD_HILT_ID,1)
Example #7
0
   if not st : return 
   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)
Example #8
0
         if not st.getQuestItemsCount(VICTIMS_ARM_BONE) :
            st.giveItems(VICTIMS_ARM_BONE,1)
         elif not st.getQuestItemsCount(VICTIMS_THIGH_BONE) :
            st.giveItems(VICTIMS_THIGH_BONE,1)
         elif not st.getQuestItemsCount(VICTIMS_SKULL) :
            st.giveItems(VICTIMS_SKULL,1)
         elif not st.getQuestItemsCount(VICTIMS_RIB_BONE) :
            st.giveItems(VICTIMS_RIB_BONE,1)
         elif not st.getQuestItemsCount(VICTIMS_SPINE) :
            st.giveItems(VICTIMS_SPINE,1)
     if random<=CHANCE2 :
         st.giveItems(USELESS_BONE_PIECES,st.getRandom(8)+1)
     return

QUEST       = Quest(345,qn,"Method To Raise The Dead")
CREATED     = State('Start', QUEST)
STARTED     = State('Started', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30970)

QUEST.addTalkId(30970)

QUEST.addTalkId(30912)
QUEST.addTalkId(30973)

STARTED.addQuestDrop(30970,VICTIMS_ARM_BONE,1)
STARTED.addQuestDrop(30970,VICTIMS_THIGH_BONE,1)
STARTED.addQuestDrop(30970,VICTIMS_SKULL,1)
STARTED.addQuestDrop(30970,VICTIMS_RIB_BONE,1)
STARTED.addQuestDrop(30970,VICTIMS_SPINE,1)
Example #9
0
        if st:
            count = st.getQuestItemsCount(GRAVE_GOODS)
            if st.getInt("cond") == 1 and count < 180:
                chance = DROP_CHANCE * Config.RATE_DROP_QUEST
                numItems, chance = divmod(chance, 100)
                if st.getRandom(100) < chance:
                    numItems += 1
                if numItems:
                    if count + numItems >= 180:
                        numItems = 180 - count
                        st.playSound("ItemSound.quest_middle")
                        st.set("cond", "2")
                    else:
                        st.playSound("ItemSound.quest_itemget")
                    st.giveItems(GRAVE_GOODS, int(numItems))
        return


QUEST = Quest(645, qn, "Ghosts of Batur")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)

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

for i in MOBS:
    QUEST.addKillId(i)

STARTED.addQuestDrop(KARUDA, GRAVE_GOODS, 1)
Example #10
0
        if 66>st.getQuestItemsCount(DARKWING_BAT_FANG)>10 and st.getRandom(100) < 10 :
          st.addSpawn(27043)
          st.giveItems(VARANGKAS_PARASITE,1)
   else :
      if st.getQuestItemsCount(DARKWING_BAT_FANG) < 66 and st.getQuestItemsCount(VARANGKAS_PARASITE) :
        if st.getQuestItemsCount(DARKWING_BAT_FANG) < 65 :
          st.playSound("ItemSound.quest_itemget")
        else:
          st.playSound("ItemSound.quest_middle")
          st.set("cond","2")
        st.giveItems(DARKWING_BAT_FANG,5)
        st.takeItems(VARANGKAS_PARASITE,-1)
   return

QUEST       = Quest(275,qn,"Black Winged Spies")
CREATED     = State('Start', QUEST)
STARTING    = State('Starting', QUEST)
STARTED     = State('Started', QUEST)
COMPLETED   = State('Completed', QUEST)


QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30567)

QUEST.addTalkId(30567)

QUEST.addKillId(20316)
QUEST.addKillId(27043)

STARTED.addQuestDrop(20316,DARKWING_BAT_FANG,1)
STARTED.addQuestDrop(20316,VARANGKAS_PARASITE,1)
Example #11
0
                        if st.getQuestItemsCount(CHRYSOBERYL_ID) < 10:
                            st.giveItems(CHRYSOBERYL_ID, 1)
                            st.playSound("ItemSound.quest_itemget")
        elif npcId == 20480:
            if st.getInt("cond") == 1 and st.getQuestItemsCount(
                    BAT_DIAGRAM_ID) and st.getQuestItemsCount(
                        STAR_DIAMOND_ID) == 0:
                if st.getRandom(10) < 2:
                    st.giveItems(STAR_DIAMOND_ID, 1)
                    st.takeItems(BAT_DIAGRAM_ID, 1)
                    st.playSound("ItemSound.quest_middle")
        return


QUEST = Quest(108, qn, "Jumble Tumble Diamond Fuss")
CREATED = State('Start', QUEST)
STARTING = State('Starting', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30523)

QUEST.addTalkId(30523)

QUEST.addTalkId(30516)
QUEST.addTalkId(30521)
QUEST.addTalkId(30522)
QUEST.addTalkId(30523)
QUEST.addTalkId(30526)
QUEST.addTalkId(30529)
Example #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)
Example #13
0
         if st.getRandom(1000) < chance :
           numItems += 1
         numItems = int(numItems)
         if numItems != 0 :
            if int((count+numItems)/100) > int(count/100) :
                st.playSound("ItemSound.quest_middle")
            else :
                st.playSound("ItemSound.quest_itemget")
            st.giveItems(Molar,numItems)
     elif npcId in Varka_Mobs :
         st.unset("id")
         st.takeItems(Molar,-1)
         st.exitQuest(1)
     return

QUEST       = Quest(612, qn, "War With Ketra Orcs")
CREATED     = State('Start', QUEST)
STARTED     = State('Started', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(Ashas)

QUEST.addTalkId(Ashas)

for mobId in Ketra_Orcs :
  QUEST.addKillId(mobId)

STARTED.addQuestDrop(Ashas,Molar,1)

for mobId in Varka_Mobs :
  QUEST.addKillId(mobId)
Example #14
0
            st.set("id", "0")
            if st.getInt("cond") and st.getQuestItemsCount(
                    PENDANT_OF_MOTHER) == 0:
                st.giveItems(PENDANT_OF_MOTHER, 1)
                st.playSound("ItemSound.quest_middle")
        elif npcId == 20029:
            st.set("id", "0")
            if st.getInt("cond") and st.getQuestItemsCount(
                    PENDANT_OF_MOTHER) == 0:
                st.giveItems(PENDANT_OF_MOTHER, 1)
                st.playSound("ItemSound.quest_middle")
        return


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

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30022)

QUEST.addTalkId(30022)

QUEST.addTalkId(30017)
QUEST.addTalkId(30030)
QUEST.addTalkId(30253)
QUEST.addTalkId(30333)
QUEST.addTalkId(30408)
Example #15
0
    if st.getInt("cond") == 1 : 
     if st.getQuestItemsCount(KENDNELLS_ORDER7_ID) and st.getQuestItemsCount(KABOO_CHIEF_TORC2_ID) == 0 : 
      st.giveItems(KABOO_CHIEF_TORC2_ID,1) 
      st.playSound("ItemSound.quest_middle") 
   elif npcId == 27068 : 
    st.set("id","0") 
    if st.getInt("cond") == 1 : 
     if st.getQuestItemsCount(KENDNELLS_ORDER8_ID) and st.getQuestItemsCount(KABOO_CHIEF_TORC2_ID) == 0 : 
      st.giveItems(KABOO_CHIEF_TORC2_ID,1) 
      st.playSound("ItemSound.quest_middle") 
   return 

QUEST       = Quest(105,qn,"Skirmish With Orcs") 
CREATED     = State('Start', QUEST) 
STARTING     = State('Starting', QUEST) 
STARTED     = State('Started', QUEST) 
COMPLETED   = State('Completed', QUEST) 


QUEST.setInitialState(CREATED) 
QUEST.addStartNpc(30218) 

QUEST.addTalkId(30218) 

QUEST.addKillId(27059) 
QUEST.addKillId(27060) 
QUEST.addKillId(27061) 
QUEST.addKillId(27062) 
QUEST.addKillId(27064) 
QUEST.addKillId(27065) 
QUEST.addKillId(27067) 
Example #16
0
        st.playSound("ItemSound.quest_itemget")
        if st.getRandom(100) < chance:
            n = st.getRandom(100)
            if n < 25:
                st.giveItems(CLAY_URN_FRAGMENT, 1)
            elif n < 50:
                st.giveItems(BRASS_TRINKET_PIECE, 1)
            elif n < 75:
                st.giveItems(BRONZE_MIRROR_PIECE, 1)
            else:
                st.giveItems(JADE_NECKLACE_BEAD, 1)
        return


QUEST = Quest(327, qn, "Reclaim The Land")
CREATED = State('Start', QUEST)
STARTING = State('Starting', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30597)

QUEST.addTalkId(30597)

QUEST.addTalkId(30034)
QUEST.addTalkId(30313)
QUEST.addTalkId(30597)

for i in range(20495, 20502):
    QUEST.addKillId(i)
Example #17
0
      chance = st.getRandom(20)
      qty=0
      for i in DROP[npcId]:
         if i[0]<=chance<i[1]:
            qty=i[2]
      if qty :
        if count+qty>50 :
          qty=50-count
        if count+qty==50:
          st.playSound("ItemSound.quest_middle")
          st.set("cond","2")
        else :
          st.playSound("ItemSound.quest_itemget")
        st.giveItems(WOLF_CLAW,qty)
   return

QUEST       = Quest(264,qn,"Keen Claws")
CREATED     = State('Start', QUEST)
STARTING    = State('Starting', QUEST)
STARTED     = State('Started', QUEST)
COMPLETED   = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30136)

QUEST.addTalkId(30136)

QUEST.addKillId(20003)
QUEST.addKillId(20456)

STARTED.addQuestDrop(20003,WOLF_CLAW,1)
Example #18
0
        count = st.getQuestItemsCount(SILVER_CRYSTAL_ID)
        if st.getInt("cond") == 1 and count < 50:
            chance = 100 * Config.RATE_DROP_QUEST
            numItems, chance = divmod(chance, 100)
            if st.getRandom(100) < chance:
                numItems += 1
            if numItems:
                if count + numItems >= 50:
                    numItems = 50 - count
                    st.playSound("ItemSound.quest_middle")
                    st.set("cond", "2")
                else:
                    st.playSound("ItemSound.quest_itemget")
                st.giveItems(SILVER_CRYSTAL_ID, int(numItems))
        return


QUEST = Quest(431, qn, "Wedding March")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(31042)

QUEST.addTalkId(31042)

QUEST.addKillId(20786)
QUEST.addKillId(20787)

STARTED.addQuestDrop(20786, SILVER_CRYSTAL_ID, 1)
Example #19
0
   adamantite = st.getQuestItemsCount(ADAMANTITE_ORE)
   if st.getInt("cond") == 1 and adamantite < 20 :
       npcId = npc.getNpcId()
       numItems, chance = divmod(40*Config.RATE_DROP_QUEST,100)
       if st.getRandom(100) <= chance :
          numItems += 1
       numItems = int(numItems)   
       if numItems != 0 :
          if 20 <= (adamantite + numItems) :
             numItems = 20 - adamantite
             st.playSound("ItemSound.quest_middle")
             st.set("cond","2")
          else:
             st.playSound("ItemSound.quest_itemget")
          st.giveItems(ADAMANTITE_ORE,numItems)
   return

QUEST       = Quest(157,qn,"Recover Smuggled")
CREATED     = State('Start', QUEST)
STARTING    = State('Starting', QUEST)
STARTED     = State('Started', QUEST)
COMPLETED   = State('Completed', QUEST)


QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30005)

QUEST.addTalkId(30005)
QUEST.addKillId(20121)

STARTED.addQuestDrop(20121,ADAMANTITE_ORE,1)
Example #20
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)
Example #21
0
   count = st.getQuestItemsCount(PLAGUE_DUST)
   if cond == 1 and st.getRandom(100) < 40 and not count :
      st.giveItems(PLAGUE_DUST,1)
      st.playSound("ItemSound.quest_middle")
      st.set("cond","2")
   elif cond == 3 and st.getRandom(100) < 40 and count < 5 :
      if count == 4 :
         st.playSound("ItemSound.quest_middle")
         st.set("cond","4")
      else:
         st.playSound("ItemSound.quest_itemget")
      st.giveItems(PLAGUE_DUST,1)
   return

QUEST     = Quest(159,qn,"Protect Headsprings")
CREATED   = State('Start',     QUEST)
STARTING  = State('Starting',  QUEST)
STARTED   = State('Started',   QUEST)
COMPLETED = State('Completed', QUEST)


QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30154)

QUEST.addTalkId(30154)

QUEST.addKillId(27017)

STARTED.addQuestDrop(27017,PLAGUE_DUST,1)
STARTED.addQuestDrop(30154,HYACINTH_CHARM1,1)
STARTED.addQuestDrop(30154,HYACINTH_CHARM2,1)
Example #22
0
     if st.getQuestItemsCount(AMBER_BEAD_ID) < 70 :
      if st.getRandom(100) < 50 and player.getClassId().getId() == 0x36: #and IsSpoiled() == 1 :
        st.giveItems(AMBER_BEAD_ID,1)
        st.playSound("Itemsound.quest_itemget")
      if st.getRandom(100) < 50 :
        if st.getQuestItemsCount(AMBER_BEAD_ID) < 69 :
          st.giveItems(AMBER_BEAD_ID,1)
          st.playSound("Itemsound.quest_itemget")
        else:
          st.giveItems(AMBER_BEAD_ID,1)
          st.playSound("ItemSound.quest_middle")

   return

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


QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30103)

QUEST.addTalkId(30103)

QUEST.addTalkId(30210)
QUEST.addTalkId(30283)
QUEST.addTalkId(30298)
QUEST.addTalkId(30688)
Example #23
0
      if st.getState() == STARTED :
         item,chance = DROPLIST[npc.getNpcId()]
         count = st.getQuestItemsCount(item)
         if st.getInt("cond") == 1 and count < 100 :
            numItems, chance = divmod(chance*Config.RATE_DROP_QUEST,100)
            if st.getRandom(100) < chance :
               numItems += 1
            if count + numItems >= 100 :
              numItems = 100 - count
            if numItems != 0 :
              st.giveItems(item,int(numItems))
              if st.getQuestItemsCount(LEAF_OF_FLAVA) == st.getQuestItemsCount(BUFFALO_MEAT) == st.getQuestItemsCount(ANTELOPE_HORN) == 100 :
                 st.set("cond","2")
                 st.playSound("ItemSound.quest_middle")
              else :
                 st.playSound("ItemSound.quest_itemget")
   return

QUEST       = Quest(623,qn,"The Finest Food")
CREATED     = State('Start', QUEST)
STARTED     = State('Started', QUEST)

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

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

for item in range(7199,7202):
    STARTED.addQuestDrop(JEREMY,item,1)
Example #24
0
        htmltext = "<html><body>You are either not carrying out your quest or don't meet the criteria.</body></html>"
        st = player.getQuestState(qn)
        if st:
            npcId = npc.getNpcId()
            id = st.getState()
            cond = st.getInt("cond")
            if cond == 0 and id == CREATED:
                if npcId == WIZARD:
                    htmltext = "31522.htm"
            if cond == 1 and id == STARTED:
                htmltext = "31522-1.htm"
            if cond == 2 and id == STARTED:
                if st.getQuestItemsCount(V_HEART) == 200:
                    htmltext = "31522-2.htm"
        return htmltext


QUEST = Quest(632, qn, "Necromancer's Request")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)

for i in VAMPIRES:
    QUEST.addKillId(i)
for i in UNDEADS:
    QUEST.addKillId(i)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(WIZARD)
QUEST.addTalkId(WIZARD)
STARTED.addQuestDrop(WIZARD, V_HEART, 1)
STARTED.addQuestDrop(WIZARD, Z_BRAIN, 1)
Example #25
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)
Example #26
0
            else:
                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)
Example #27
0
              st.playSound("ItemSound.quest_itemget")
   elif npcId == 20545 :
        st.set("id","0")
        if st.getInt("cond") == 1 and st.getQuestItemsCount(FOX_FUR_ID)<10 and st.getQuestItemsCount(FOX_FUR_YARN_ID) == 0 :
          if st.getRandom(10)<4 :
            st.giveItems(FOX_FUR_ID,1)
            if st.getQuestItemsCount(FOX_FUR_ID) == 10 :
              st.playSound("ItemSound.quest_middle")
            else:
              st.playSound("ItemSound.quest_itemget")
   return

QUEST       = Quest(154,qn,"Sacrifice To Sea")
CREATED     = State('Start', QUEST)
STARTING     = State('Starting', QUEST)
STARTED     = State('Started', QUEST)
COMPLETED   = State('Completed', QUEST)


QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30312)

QUEST.addTalkId(30312)

QUEST.addTalkId(30051)
QUEST.addTalkId(30055)

QUEST.addKillId(20481)
QUEST.addKillId(20545)

STARTED.addQuestDrop(20481,FOX_FUR_ID,1)
Example #28
0
    def onKill(self, npc, player, isPet):
        st = player.getQuestState(qn)
        if not st: return
        if st.getState() != STARTED: return
        numItems, chance = divmod(CHANCE * Config.RATE_DROP_QUEST, MAX)
        if st.getQuestItemsCount(ROYAL_MEMBERSHIP):
            if st.getRandom(MAX) < chance:
                numItems = numItems + 1
            npcId = npc.getNpcId()
            if numItems != 0:
                st.giveItems(MOBS[npcId][st.getRandom(len(MOBS[npcId]))],
                             int(numItems))
                st.playSound("ItemSound.quest_itemget")
        return


QUEST = Quest(382, qn, "Kail's Magic Coin")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(VERGARA)

QUEST.addTalkId(VERGARA)

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

for coin in range(5961, 5964):
    STARTED.addQuestDrop(coin, VERGARA, 1)
Example #29
0
   htmltext = "<html><body>You are either not carrying out your quest or don't meet the criteria.</body></html>"
   st = player.getQuestState(qn)
   if not st : return htmltext
   npcId = npc.getNpcId()
   id = st.getState()
   cond = st.getInt("cond")
   if npcId == LIESEL and cond == 0 :
     if id == COMPLETED :
       htmltext = "<html><body>This quest has already been completed.</body></html>"
     elif player.getLevel() < 74 : 
       htmltext = "31263-1.htm"
       st.exitQuest(1)
     elif player.getLevel() >= 74 : 
       htmltext = "31263-0.htm"
   elif npcId == LIESEL and cond == 1 :
     htmltext = "31263-2.htm"
   elif npcId == GHOST_OF_ADVENTURER and cond == 1 and id == STARTED:
     htmltext = "31538-0.htm"
   return htmltext

QUEST       = Quest(14,qn,"Whereabouts Of The Archaeologist")
CREATED     = State('Start', QUEST)
STARTED     = State('Started', QUEST)
COMPLETED   = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(LIESEL)
QUEST.addTalkId(LIESEL)
QUEST.addTalkId(GHOST_OF_ADVENTURER)

STARTED.addQuestDrop(GHOST_OF_ADVENTURER,LETTER,1)
Example #30
0
            st.playSound("ItemSound.quest_middle")
        elif npcId == 27113 and cond == 6 and not st.getQuestItemsCount(
                WATCHERS_EYE2):
            st.giveItems(WATCHERS_EYE2, 1)
            st.playSound("ItemSound.quest_middle")
            st.set("cond", "7")
            st.addSpawn(30646, npc, True, 0)
        elif npcId == 27114 and cond == 9:
            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)
Example #31
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 == GEMSTONE_BEAST and st.getInt("cond")==5 and st.getRandom(2)==1 and st.getQuestItemsCount(GEMSTONE_BEAST_CRYSTAL)<10 :
        st.giveItems(GEMSTONE_BEAST_CRYSTAL,1)
        if st.getQuestItemsCount(GEMSTONE_BEAST_CRYSTAL) == 10 :
            st.playSound("ItemSound.quest_middle")
        else:
            st.playSound("ItemSound.quest_itemget")
   return

QUEST       = Quest(347,qn,"Calculator")
CREATED     = State('Start', QUEST)
STARTED     = State('Started', QUEST)
COMPLETED   = State('Completed', QUEST)


QUEST.setInitialState(CREATED)
QUEST.addStartNpc(BRUNON)

QUEST.addTalkId(BRUNON)

QUEST.addTalkId(SILVERA)
QUEST.addTalkId(SPIRON)
QUEST.addTalkId(BALANKI)

QUEST.addKillId(GEMSTONE_BEAST)
STARTED.addQuestDrop(GEMSTONE_BEAST, GEMSTONE_BEAST_CRYSTAL, 1)
Example #32
0
                    count = st.getQuestItemsCount(item)
                    if count < 50:
                        if count + numItems > 50:
                            numItems = 50 - count
                        st.giveItems(item, numItems)
                        count_trunk = st.getQuestItemsCount(TRUNK_OF_NEPENTHES)
                        count_foot = st.getQuestItemsCount(
                            FOOT_OF_BANDERSNATCHLING)
                        count_spice = st.getQuestItemsCount(SECRET_SPICE)
                        if count_trunk == count_foot == count_spice == 50:
                            st.set("cond", "3")
                            st.playSound("ItemSound.quest_middle")
                        else:
                            st.playSound("ItemSound.quest_itemget")
        return


QUEST = Quest(624, qn, "The Finest Ingredients - Part 1")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)

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

for i in MOBS:
    QUEST.addKillId(i)

STARTED.addQuestDrop(JEREMY, TRUNK_OF_NEPENTHES, 1)
STARTED.addQuestDrop(JEREMY, FOOT_OF_BANDERSNATCHLING, 1)
STARTED.addQuestDrop(JEREMY, SECRET_SPICE, 1)
Example #33
0
      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")
   elif npcId == 20567 :
    if st.getInt("cond") == 28 and st.getQuestItemsCount(ENCHT_GARGOYLES_NAIL_ID)<5 :
      st.giveItems(ENCHT_GARGOYLES_NAIL_ID,1)
      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)
Example #34
0
                leader = clan.getLeader()
                if leader:
                    pleader = leader.getPlayerInstance()
                    if pleader:
                        if player.isInsideRadius(pleader, 1600, 1, 0):
                            st = pleader.getQuestState(qn)
        if not st: return
        option = st.getInt("raid")
        if st.getInt("cond") == 1 and st.getState(
        ) == STARTED and option in REWARDS_LIST.keys():
            raid, item = REWARDS_LIST[option]
            npcId = npc.getNpcId()
            if npcId == raid and not st.getQuestItemsCount(item):
                st.giveItems(item, 1)
                st.playSound("ItemSound.quest_middle")
        return


# Quest class and state definition
QUEST = Quest(508, qn, qd)
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)

QUEST.setInitialState(CREATED)

QUEST.addStartNpc(SIR_ERIC_RODEMAI)
QUEST.addTalkId(SIR_ERIC_RODEMAI)

for npc, item in REWARDS_LIST.values():
    QUEST.addKillId(npc)
    STARTED.addQuestDrop(npc, item, 1)
Example #35
0
       st.playSound("Itemsound.quest_before_battle")
       #st.addSpawn(27086)
       st.addSpawn(27086, 11839,-106261,-3550,300000)
       return "Revenant of Tantos Chief has spawned at X=11839 Y=-106261 Z=-3550"
       # Alternate coord. set:
       #st.addSpawn(27086,11567,-106785,-3520)
     elif npcId == 27086 :
       st.giveItems(SCEPTER_OF_TANTOS,1)
       st.set("cond","10")
       st.playSound("Itemsound.quest_middle")
   return

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


QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30514)

QUEST.addTalkId(30514)

QUEST.addTalkId(30501)
QUEST.addTalkId(30515)
QUEST.addTalkId(30565)
QUEST.addTalkId(30571)
QUEST.addTalkId(30615)
QUEST.addTalkId(30616)
QUEST.addTalkId(30617)
Example #36
0
            if npcId == 30533 and st.getInt("cond") == 1:
                htmltext = "30533-04.htm"
            elif npcId == 30520 and st.getInt("cond") == 3:
                htmltext = "30520-04.htm"
                st.set("cond", "4")
            elif npcId == 30520 and st.getInt("cond"):
                if st.getQuestItemsCount(VERY_EXPENSIVE_NECKLACE) == 0:
                    htmltext = "30520-01.htm"
                else:
                    htmltext = "30520-03.htm"
            elif npcId == 30650 and st.getInt("cond") == 2:
                if st.getQuestItemsCount(VERY_EXPENSIVE_NECKLACE):
                    htmltext = "30650-01.htm"
            elif npcId == 30533 and st.getInt("cond") == 4:
                htmltext = "30533-05.htm"
        return htmltext


QUEST = Quest(10, qn, "Into The World")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30533)

QUEST.addTalkId(30533)
QUEST.addTalkId(30520)
QUEST.addTalkId(30650)

STARTED.addQuestDrop(30520, VERY_EXPENSIVE_NECKLACE, 1)
Example #37
0
 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(qn)
   if not st : return htmltext

   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 #38
0
                        if st.getQuestItemsCount(
                                SEED_OF_VERDURE_ID) and st.getQuestItemsCount(
                                    BREATH_OF_WINDS_ID):
                            st.set("cond", "3")
                            st.playSound("Itemsound.quest_middle")
                        else:
                            st.playSound("Itemsound.quest_itemget")
                    elif npcId == 20213:  # Condition 19 Porta
                        st.set("cond", "20")
                        st.playSound("ItemSound.quest_middle")
                else:
                    st.playSound("Itemsound.quest_itemget")
        return

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

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30191)

QUEST.addTalkId(30191)

QUEST.addTalkId(30031)
QUEST.addTalkId(30154)
QUEST.addTalkId(30358)
QUEST.addTalkId(30464)
QUEST.addTalkId(30515)
QUEST.addTalkId(30531)
Example #39
0
 def onKill(self,npc,player,isPet) :
     partyMember = self.getRandomPartyMemberState(player,STARTED)
     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)
Example #40
0
                    st.playSound("ItemSound.quest_middle")
                else:
                    st.playSound("ItemSound.quest_itemget")
        elif npcId == VEGUS and not (clover + album) and st.getInt("id"):
            if st.getRandom(100) < VEGUS_CHANCE:
                st.giveItems(CLOVER_COIN, 1)
                if coin:
                    st.playSound("ItemSound.quest_middle")
                else:
                    st.playSound("ItemSound.quest_itemget")
        return


QUEST = Quest(QuestNumber,
              str(QuestNumber) + "_" + QuestName, QuestDescription)
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(SORINT)

QUEST.addTalkId(SORINT)

QUEST.addTalkId(SANDRA)

QUEST.addKillId(ANCIENT_GARGOYLE)
QUEST.addKillId(VEGUS)

STARTED.addQuestDrop(KAILS_COIN, SORINT, 1)
STARTED.addQuestDrop(COIN_ALBUM, SORINT, 1)
STARTED.addQuestDrop(CLOVER_COIN, SORINT, 1)
Example #41
0
             htmltext = "31517-2a.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 :  
         count = st.getQuestItemsCount(BLOOD_OF_SAINT)  
         if st.getInt("cond") == 1 and count < 300 :  
            st.giveItems(BLOOD_OF_SAINT,1)  
            if count == 299 :  
               st.playSound("ItemSound.quest_middle")  
               st.set("cond","2")  
            else:  
               st.playSound("ItemSound.quest_itemget") 
   return

QUEST       = Quest(626,qn,"A Dark Twilight")
CREATED     = State('Start', QUEST)
STARTED     = State('Started', QUEST)

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

for mobs in range(21520,21541):
  QUEST.addKillId(mobs)

STARTED.addQuestDrop(21520,BLOOD_OF_SAINT,1)
Example #42
0
                st.playSound("ItemSound.quest_itemget")
        elif npcId == 20022:
            if st.getInt("cond") == 16 and st.getQuestItemsCount(
                    BONE_FRAGMENT7) == 0:
                st.giveItems(BONE_FRAGMENT7, 1)
                st.playSound("ItemSound.quest_itemget")
        elif npcId == 20100:
            if st.getInt("cond") == 16 and st.getQuestItemsCount(
                    BONE_FRAGMENT8) == 0:
                st.giveItems(BONE_FRAGMENT8, 1)
                st.playSound("ItemSound.quest_itemget")
        return


QUEST = Quest(227, qn, "Test Of Reformer")
CREATED = State('Start', QUEST)
STARTING = State('Starting', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30118)

QUEST.addTalkId(30118)

for npcId in [30666, 30667, 30669, 30670, 30732, 30668]:
    QUEST.addTalkId(npcId)
for mobId in [
        20100, 20102, 20104, 20404, 20022, 27099, 27128, 27130, 27129, 27132,
        27131
]:
Example #43
0
            htmltext = "30042-03.htm"
         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)
Example #44
0
            elif npcId == 30094 and st.getInt("cond") == 2:
                htmltext = "30094-03.htm"
            elif npcId == 30090 and st.getInt("cond") == 3:
                htmltext = "30090-01.htm"
            elif npcId == 30090 and st.getInt("cond") == 4:
                htmltext = "30090-03.htm"
            elif npcId == 30116 and st.getInt("cond") == 5:
                htmltext = "30116-01.htm"
            elif npcId == 30116 and st.getInt("cond") == 6:
                htmltext = "30116-03.htm"

        return htmltext


QUEST = Quest(45, qn, "To Talking Island")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30097)

QUEST.addTalkId(30097)

QUEST.addTalkId(30094)
QUEST.addTalkId(30090)
QUEST.addTalkId(30116)

STARTED.addQuestDrop(30097, GALLADUCCIS_ORDER_DOCUMENT_ID_1, 1)
STARTED.addQuestDrop(30097, GALLADUCCIS_ORDER_DOCUMENT_ID_2, 1)
STARTED.addQuestDrop(30097, GALLADUCCIS_ORDER_DOCUMENT_ID_3, 1)
Example #45
0
   st = partyMember.getQuestState(qn)
   if st :
     if st.getState() == STARTED :
       count = st.getQuestItemsCount(PROOF_OF_AVENGER)
       if st.getInt("cond") == 1 and count < 100 :
         chance = DROP_CHANCE * Config.RATE_DROP_QUEST
         numItems, chance = divmod(chance,100)
         if st.getRandom(100) < chance : 
           numItems = numItems + 1
         if numItems :
           if count + numItems >= 100 :
             numItems = 100 - count
             st.playSound("ItemSound.quest_middle")
             st.set("cond","2")
           else:
             st.playSound("ItemSound.quest_itemget")   
           st.giveItems(PROOF_OF_AVENGER,int(numItems))       
   return

QUEST       = Quest(601,qn,"Watching Eyes")
CREATED     = State('Start', QUEST)
STARTED     = State('Started', QUEST)

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

for i in MOBS :
  QUEST.addKillId(i)

STARTED.addQuestDrop(EYE_OF_ARGOS,PROOF_OF_AVENGER,1)
Example #46
0
                count = st.getQuestItemsCount(NECROHEART)
                if st.getInt("cond") == 1 and count < 10:
                    chance = DROP_CHANCE * Config.RATE_DROP_QUEST
                    numItems, chance = divmod(int(chance), 100)
                    if st.getRandom(100) < chance:
                        numItems += 1
                    if numItems:
                        if count + numItems >= 10:
                            numItems = 10 - count
                            st.playSound("ItemSound.quest_middle")
                            st.set("cond", "2")
                        else:
                            st.playSound("ItemSound.quest_itemget")
                        st.giveItems(NECROHEART, int(numItems))
        return


QUEST = Quest(637, qn, "Through the Gate Once More")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(FLAURON)

QUEST.addTalkId(FLAURON)

for mob in range(21565, 21568):
    QUEST.addKillId(mob)

STARTED.addQuestDrop(FLAURON, NECROHEART, 1)
Example #47
0
         htmltext = "31543-0.htm"
       elif npcId == 31544 and cond == 2 and st.getQuestItemsCount(BOILED_EGGS) :
         htmltext = "31544-0.htm"
       elif npcId == 31545 and cond == 3 and st.getQuestItemsCount(BOILED_EGGS) :
         htmltext = "31545-0.htm"
       elif npcId == 31546 and cond == 4 and st.getQuestItemsCount(BOILED_EGGS) :
         htmltext = "31546-0.htm"
       elif npcId == 31547 and cond == 5 and st.getQuestItemsCount(BOILED_EGGS) :
         htmltext = "31547-0.htm"
       elif npcId == 31521 and cond == 6 and st.getQuestItemsCount(FEE_OF_EGGS) == 5 :
         htmltext = "31521-2.htm"
       elif npcId == 31521 and cond == 7 and st.getQuestItemsCount(FEE_OF_EGGS) == 5 :
         htmltext = "31521-4.htm"
       elif npcId == 31584 and cond == 7 and st.getQuestItemsCount(FEE_OF_EGGS) == 5 :
         htmltext = "31584-1.htm"
   return htmltext

QUEST       = Quest(621,qn,"Egg Delivery")
CREATED     = State('Start', QUEST)
STARTED     = State('Started', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(31521)

QUEST.addTalkId(31521)

for i in range(31543,31548)+[31521,31584]:
    QUEST.addTalkId(i)

STARTED.addQuestDrop(31521,BOILED_EGGS,1)
STARTED.addQuestDrop(31521,FEE_OF_EGGS,1)
Example #48
0
        return htmltext

    def onKill(self, npc, player, isPet):
        st = player.getQuestState(qn)
        if st:
            if st.getState() == STARTED:
                count = st.getQuestItemsCount(GEM_OF_SUBMISSION)
                if st.getInt("cond") == 1 and count < 300:
                    st.giveItems(GEM_OF_SUBMISSION, 1)
                    if count == 299:
                        st.playSound("ItemSound.quest_middle")
                        st.set("cond", "2")
                    else:
                        st.playSound("ItemSound.quest_itemget")
        return


QUEST = Quest(627, qn, "Heart In Search Of Power")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(31518)

QUEST.addTalkId(31518)
QUEST.addTalkId(31519)

for mobs in range(21520, 21541):
    QUEST.addKillId(mobs)

STARTED.addQuestDrop(21520, GEM_OF_SUBMISSION, 1)
Example #49
0
       st.takeItems(WIND_SHARD,-1)
       htmltext = "30361-07.htm"
     else :
       htmltext = "30361-05.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(100) < 50:
      st.giveItems(WIND_SHARD,1)
      st.playSound("ItemSound.quest_itemget")
   return

QUEST       = Quest(317,qn,"Catch The Wind")
CREATED     = State('Start', QUEST)
STARTING     = State('Starting', QUEST)
STARTED     = State('Started', QUEST)
COMPLETED   = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30361)

QUEST.addTalkId(30361)

QUEST.addKillId(20036)
QUEST.addKillId(20044)

STARTED.addQuestDrop(20036,WIND_SHARD,1)
Example #50
0
            GrandBossManager.getInstance().setBossStatus(Benom, LIVE)
            self.BenomIsSpawned = 0
            self.Benomm.deleteMe()
        return

    def onAttack(self, npc, player, damage, isPet):
        self.cancelQuestTimer("BenomWalk", npc, None)
        self.cancelQuestTimer("BenomWalkFinish", npc, None)
        self.startQuestTimer("Attacking", 100, npc, player)
        return

    def onKill(self, npc, player, isPet):
        GrandBossManager.getInstance().setBossStatus(Benom, DEAD)
        self.cancelQuestTimer("BenomWalk", npc, None)
        self.cancelQuestTimer("BenomWalkFinish", npc, None)
        self.cancelQuestTimer("BenomBossDespawn", npc, None)
        self.cancelQuestTimer("Talk", npc, None)
        self.cancelQuestTimer("Attacking", npc, None)
        return


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

# Quest initialization
QUEST.setInitialState(CREATED)

QUEST.addStartNpc(BenomTeleport)
QUEST.addTalkId(BenomTeleport)
QUEST.addAttackId(Benom)
QUEST.addKillId(Benom)
Example #51
0
              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)

QUEST.addKillId(20021)
Example #52
0
                if heart < 1:
                    st.giveItems(TYRANT_KINGPIN_HEART, 1)
                    st.playSound("ItemSound.quest_middle")
        elif npcId == TRISALIM_TARANTULA:
            if condition == 9:
                if sacs < 3:
                    st.giveItems(TRISALIM_TARANTULAS_VENOM_SAC, 1)
                    if skulls == 3:
                        st.playSound("ItemSound.quest_middle")
                    else:
                        st.playSound("ItemSound.quest_itemget")
        return


QUEST = Quest(422, qn, "Repent your Sins")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(30981)

QUEST.addTalkId(30981)
QUEST.addTalkId(30668)
QUEST.addTalkId(30597)
QUEST.addTalkId(30612)
QUEST.addTalkId(30718)
QUEST.addTalkId(30300)

QUEST.addKillId(SCAVENGER_WERERAT)
QUEST.addKillId(TUREK_WARHOUND)
QUEST.addKillId(TYRANT_KINGPIN)
Example #53
0
            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)
QUEST.addKillId(20466)
QUEST.addKillId(20047)
Example #54
0
 def onFirstTalk (self,npc,player):
   st = player.getQuestState(qn)
   if not st :
      qs = player.getQuestState("140_ShadowFoxPart2")
      st = self.newQuestState(player)
      if qs :
          if qs.getState().getName() == 'Completed' and st.getState() == CREATED :
              st.setState(STARTED)
   elif st.getState() == COMPLETED and player.getLevel() >= 38 :
      qs2 = player.getQuestState("998_FallenAngelSelect")
      qs3 = player.getQuestState("142_FallenAngelRequestOfDawn")
      qs4 = player.getQuestState("143_FallenAngelRequestOfDusk")
      if qs2 :
         if qs.getState().getName() == 'Completed' and not (qs3 or qs4) :
             qs2.setState(STARTED)
   npc.showChatWindow(player)
   return

QUEST       = Quest(141,qn,"Shadow Fox - 3")

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

QUEST.setInitialState(CREATED)

QUEST.addFirstTalkId(NATOOLS) #this quest doesnt have starter npc, quest will appear in list only when u finish quest 140
QUEST.addTalkId(NATOOLS)
for mob in NPC :
   QUEST.addKillId(mob)
Example #55
0
    item, partyCond  = DROPLIST[npcId]
    partyMember = self.getRandomPartyMember(player, partyCond, "1")
    if not partyMember : return
    st = partyMember.getQuestState(qn)
    count = st.getQuestItemsCount(item)
    if count < 100 :
       st.giveItems(item,1)
       if count + 1 >= 100 :
          st.playSound("ItemSound.quest_middle")
          st.unset(partyCond)
       else :
          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(MANAKIA)
# Quest initialization
QUEST.addTalkId(MANAKIA)
 
for i in DROPLIST.keys() :
  QUEST.addKillId(i)
  STARTED.addQuestDrop(i,DROPLIST[i][0],1)
Example #56
0
        st = player.getQuestState(qn)
        if not st: return
        if st.getState() != STARTED: return

        npcId = npc.getNpcId()
        if npcId == GEMSTONE_BEAST and st.getInt("cond") == 5 and st.getRandom(
                2) == 1 and st.getQuestItemsCount(GEMSTONE_BEAST_CRYSTAL) < 10:
            st.giveItems(GEMSTONE_BEAST_CRYSTAL, 1)
            if st.getQuestItemsCount(GEMSTONE_BEAST_CRYSTAL) == 10:
                st.playSound("ItemSound.quest_middle")
            else:
                st.playSound("ItemSound.quest_itemget")
        return


QUEST = Quest(347, qn, "Calculator")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)
COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
QUEST.addStartNpc(BRUNON)

QUEST.addTalkId(BRUNON)

QUEST.addTalkId(SILVERA)
QUEST.addTalkId(SPIRON)
QUEST.addTalkId(BALANKI)

QUEST.addKillId(GEMSTONE_BEAST)
STARTED.addQuestDrop(GEMSTONE_BEAST, GEMSTONE_BEAST_CRYSTAL, 1)
Example #57
0
   elif npcId == 30956 and st.getInt("cond") == 2 :
        st.giveItems(4319,1)
        st.set("cond","3")
        htmltext = "30956_3.htm"
   elif npcId == 30956 and st.getInt("cond") == 3 :
        htmltext = "<html><body>Find Barbado..</body></html>"
   elif npcId == 30959 and st.getInt("cond") == 3 :
        st.takeItems(4319,1)
        st.set("cond","4")
        htmltext = "30959_1.htm"
   elif npcId == 30959 and st.getInt("cond") == 4 :
        htmltext = "<html><body>Go back to Nanarin..</body></html>"
   elif npcId == 30956 and st.getInt("cond") == 4 :
        htmltext = "30956_4.htm"
   return htmltext


QUEST       = Quest(363,qn,"Sorrowful Sounds of Flute")
CREATED     = State('Start', QUEST)
STARTED     = State('Started', QUEST)
COMPLETED   = State('Completed', QUEST)


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

QUEST.addTalkId(30595)
QUEST.addTalkId(30959)

STARTED.addQuestDrop(30959,4319,1)
Example #58
0
                htmltext = "32028-01.htm"
        return htmltext

    def onKill(self, npc, player, isPet):
        st = player.getQuestState(qn)
        if not st: return
        if st.getState() == STARTED:
            chance = DROP_CHANCE * Config.RATE_DROP_QUEST
            numItems, chance = divmod(chance, 100)
            random = st.getRandom(100)
            if random <= chance:
                numItems += 1
            if int(numItems) != 0:
                st.giveItems(SCRIPTURES, int(numItems))
                st.playSound("ItemSound.quest_itemget")
        return


QUEST = Quest(639, qn, "Guardians of the Holy Grail")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)

QUEST.setInitialState(CREATED)

QUEST.addStartNpc(DOMINIC)
QUEST.addTalkId(DOMINIC)
QUEST.addTalkId(GREMORY)
QUEST.addTalkId(GRAIL)

for i in MONSTERS:
    QUEST.addKillId(i)
Example #59
0
       else :
         htmltext = "30405-02.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()
   st.giveItems(GIANT_SPIDER_SKIN,1)
   st.playSound("ItemSound.quest_itemget")
   return

QUEST       = Quest(259,qn,"Ranchers Plea")
CREATED     = State('Start', QUEST)
STARTING    = State('Starting', QUEST)
STARTED     = State('Started', QUEST)
COMPLETED   = State('Completed', QUEST)

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

QUEST.addTalkId(30405)

QUEST.addKillId(20103)
QUEST.addKillId(20106)
QUEST.addKillId(20108)

STARTED.addQuestDrop(20103,GIANT_SPIDER_SKIN,1)
Example #60
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