Example #1
0
    def onAdvEvent(self, event, npc, player):
        htmltext = event
        st = player.getQuestState(qn)
        if not st: return

        if event == "31001-02.htm":
            st.setState(State.STARTED)
            st.playSound("ItemSound.quest_accept")
        if event == "31001-05.htm":
            st.set("cond", "1")
            st.playSound("ItemSound.quest_middle")
        elif event == "32576-02.htm":
            st.giveItems(IdentityCard, 1)
            st.set("cond", "2")
            st.playSound("ItemSound.quest_middle")
        elif event == "30289-04.htm":
            player.stopAllEffects()
            SkillTable.getInstance().getInfo(6204,
                                             1).getEffects(player, player)
            st.set("cond", "3")
        elif event == "30289-07.htm":
            player.stopAllEffects()
        elif event == "30969-03.htm":
            st.addExpAndSp(52518015, 5817677)
            st.unset("cond")
            st.exitQuest(False)
            st.playSound("ItemSound.quest_finish")
        return htmltext
Example #2
0
	def onAdvEvent (self,event,npc,player):
		htmltext = event
		st = player.getQuestState(qn)
		if not st: return

		if event == "31001-02.htm":
			st.setState(State.STARTED)
			st.playSound("ItemSound.quest_accept")
		if event == "31001-05.htm":
			st.set("cond","1")
			st.playSound("ItemSound.quest_middle")
		elif event == "32576-02.htm":
			st.giveItems(IdentityCard,1)
			st.set("cond","2")
			st.playSound("ItemSound.quest_middle")
		elif event == "30289-04.htm":
			player.stopAllEffects()
			SkillTable.getInstance().getInfo(6204,1).getEffects(player,player)
			st.set("cond","3")
		elif event == "30289-07.htm":
			player.stopAllEffects()
		elif event == "30969-03.htm":
			st.addExpAndSp(52518015, 5817677)
			st.unset("cond") 
			st.exitQuest(False)
			st.playSound("ItemSound.quest_finish")
		return htmltext
Example #3
0
 def onAdvEvent(self, event, npc, player):
     htmltext = event
     st = player.getQuestState(qn)
     if not st: return
     if event in ["30839-02.htm", "31307-02.htm"]:
         st.set("cond", "1")
         st.setState(State.STARTED)
         st.playSound("ItemSound.quest_accept")
     elif event == "30839-05.htm":
         st.set("cond", "2")
         st.playSound("ItemSound.quest_middle")
     elif event == "31307-05.htm":
         st.set("cond", "7")
         st.playSound("ItemSound.quest_middle")
     elif event == "32325-03.htm":
         st.set("cond", "3")
         st.giveItems(YinSword, 1, Elementals.FIRE, 10)
         st.playSound("ItemSound.quest_middle")
     elif event == "32326-03.htm":
         st.set("cond", "8")
         st.giveItems(YangSword, 1, Elementals.EARTH, 10)
         st.playSound("ItemSound.quest_middle")
     elif event == "32325-06.htm":
         if st.getQuestItemsCount(YinSword):
             st.takeItems(YinSword, 1)
             htmltext = "32325-07.htm"
         st.giveItems(YinSword, 1, Elementals.FIRE, 10)
     elif event == "32326-06.htm":
         if st.getQuestItemsCount(YangSword):
             st.takeItems(YangSword, 1)
             htmltext = "32326-07.htm"
         st.giveItems(YangSword, 1, Elementals.EARTH, 10)
     elif event == "32325-09.htm":
         st.set("cond", "5")
         SkillTable.getInstance().getInfo(2635,
                                          1).getEffects(player, player)
         st.giveItems(YinSword, 1, Elementals.FIRE, 10)
         st.playSound("ItemSound.quest_middle")
     elif event == "32326-09.htm":
         st.set("cond", "10")
         SkillTable.getInstance().getInfo(2636,
                                          1).getEffects(player, player)
         st.giveItems(YangSword, 1, Elementals.EARTH, 10)
         st.playSound("ItemSound.quest_middle")
     elif event.isdigit():
         st.giveItems(10520 + int(event), 2)
         st.addExpAndSp(202160, 20375)
         st.unset("cond")
         st.exitQuest(False)
         st.playSound("ItemSound.quest_finish")
         htmltext = str(npc.getNpcId()) + "-1" + event + ".htm"
     return htmltext
Example #4
0
 def doRebirth(player):
     st = player.getQuestState(qn)
     #扣除道具
     for id, count in requireItem:
         st.takeItems(id, count)
     #降等
     player.removeExpAndSp(
         player.getExp() - ExperienceTable.getInstance().getExpForLevel(
             levelAfterRebirth), player.getSp())
     #記錄轉生次數
     st.set('times', str(st.getInt('times') + 1))
     #移除技能
     for i in player.getAllSkills():
         if i.getId() not in sixStatSkills:
             if i.getId() not in remove_skill_blacklist:
                 player.removeSkill(i)
     #轉種族
     newClass = st.getInt('newClass')
     st.getPlayer().setClassId(newClass)
     if player.isSubClassActive():
         player.getSubClasses().get(player.getClassIndex()).setClassId(
             player.getActiveClass())
     else:
         player.setBaseClass(player.getActiveClass())
     #st.getPlayer().setBaseClass(newClass)
     #st.getPlayer().setActiveClass(newClass)
     player.broadcastUserInfo()
     player.rewardSkills()
     player.sendSkillList()
     #player.stopAllToggles()
     #player.broadcastUserInfo()
     #變身..用作暫時解決轉種族後人物怪怪的問題
     #變身 瑪瑙獸 ID 617
     skillId = 617
     skillLevel = 1
     skill = SkillTable.getInstance().getInfo(skillId, skillLevel)
     if skill:
         skill.getEffects(player, player)
         #5秒後解除變身
         st.startQuestTimer('removeAllEffects', 5000)
         #player.untransform()
     #發道具獎勵
     for id, count in rewardItem:
         st.giveItems(id, count)
     #發素質獎勵
     if self.getFreeRebirthPoint(player) > 0:
         skillId = st.getInt('newSixStat')
         skillLevel = max(player.getSkillLevel(skillId), 1)
         player.addSkill(
             SkillTable.getInstance().getInfo(skillId, skillLevel + 1),
             True)
     return
Example #5
0
 def onAdvEvent (self,event,npc, player) :
     htmltext = event
     st = player.getQuestState(qn)
     if not st : return
     if event in ["30839-02.htm","31307-02.htm"] :
         st.set("cond","1")
         st.setState(State.STARTED)
         st.playSound("ItemSound.quest_accept")
     elif event == "30839-05.htm" :
         st.set("cond","2")
         st.playSound("ItemSound.quest_middle")
     elif event == "31307-05.htm" :
         st.set("cond","7")
         st.playSound("ItemSound.quest_middle")
     elif event == "32325-03.htm" :
         st.set("cond","3")
         st.giveItems(YinSword,1,Elementals.FIRE,10)
         st.playSound("ItemSound.quest_middle")
     elif event == "32326-03.htm" :
         st.set("cond","8")
         st.giveItems(YangSword,1,Elementals.EARTH,10)
         st.playSound("ItemSound.quest_middle")
     elif event == "32325-06.htm" :
         if st.getQuestItemsCount(YinSword):
            st.takeItems(YinSword,1)
            htmltext = "32325-07.htm"
         st.giveItems(YinSword,1,Elementals.FIRE,10)
     elif event == "32326-06.htm" :
         if st.getQuestItemsCount(YangSword):
            st.takeItems(YangSword,1)
            htmltext = "32326-07.htm"
         st.giveItems(YangSword,1,Elementals.EARTH,10)
     elif event == "32325-09.htm" :
         st.set("cond","5")
         SkillTable.getInstance().getInfo(2635,1).getEffects(player,player)
         st.giveItems(YinSword,1,Elementals.FIRE,10)
         st.playSound("ItemSound.quest_middle")
     elif event == "32326-09.htm" :
         st.set("cond","10")
         SkillTable.getInstance().getInfo(2636,1).getEffects(player,player)
         st.giveItems(YangSword,1,Elementals.EARTH,10)
         st.playSound("ItemSound.quest_middle")
     elif event.isdigit() :
         st.giveItems(10520+int(event),2)
         st.addExpAndSp(202160,20375)
         st.unset("cond")
         st.exitQuest(False)
         st.playSound("ItemSound.quest_finish")
         htmltext = str(npc.getNpcId())+"-1"+event+".htm"
     return htmltext
Example #6
0
 def makeRemoveLink(self, skill):
     return "<a action=\"bypass -h Quest " + self.qn + " remove " + str(
         skill.getId()) + " " + str(
             skill.getLevel()) + "\">" + SkillTable.getInstance().getInfo(
                 skill.getId(), skill.getLevel()).getName() + "(%d)" % str(
                     skill.getId()) + " Lv " + str(
                         skill.getLevel()) + "</a><BR1>"
Example #7
0
 def giveBuff(self, npc, player, skill_id, skill_lv):
     skill = SkillTable.getInstance().getInfo(skill_id, skill_lv)
     if skill:
         if skill.getSkillType() == L2SkillType.BUFF:
             skill.getEffects(npc, player)
         else:
             skill.useSkill(player, (player, ))
Example #8
0
 def onAdvEvent (self,event,npc,player) :
    htmltext = event
    st = player.getQuestState(qn)
    if not st: return
    Alevel = player.getAllianceWithVarkaKetra()
    if str(event) in BUFF.keys() :
        skillId,level,seeds=BUFF[event]
        if st.getQuestItemsCount(Seed) >= seeds :
            st.takeItems(Seed,seeds)
            npc.setTarget(player)
            npc.doCast(SkillTable.getInstance().getInfo(skillId,level))
            npc.setCurrentHpMp(npc.getMaxHp(), npc.getMaxMp())
            htmltext = "31379-4.htm"
    elif event == "Withdraw" :
        if player.getWarehouse().getSize() == 0 :
            htmltext = "31381-0.htm"
        else :
            player.sendPacket(ActionFailed.STATIC_PACKET)
            player.setActiveWarehouse(player.getWarehouse())
            player.sendPacket(WareHouseWithdrawalList(player, 1))
    elif event == "Teleport" :
        if Alevel == -4 :
            htmltext = "31383-4.htm"
        elif Alevel == -5 :
            htmltext = "31383-5.htm"
    return htmltext
Example #9
0
	def giveBuff(self, npc, player, skill_id, skill_lv):
		skill = SkillTable.getInstance().getInfo(skill_id, skill_lv)
		if skill:
			if skill.getSkillType() == L2SkillType.BUFF:
				skill.getEffects(npc, player)
			else:
				skill.useSkill(player, (player,))
Example #10
0
 def onAttack (self,npc,player,damage,isPet, skill):
   st = player.getQuestState(qn)
   if not st : return 
   if st.getState() != State.STARTED : return 
   
   chance=self.getRandom(100)
   if chance < 3 :
      count = 0
      for item in range(5875,5879):
         if st.getQuestItemsCount(item) :
            count += 1
            st.takeItems(item,-1)
      if count:
         st.giveItems(5880,1)
   elif chance < 7 :
      for item in range(5875,5879):
         if st.getQuestItemsCount(item) :
            npc.doCast(SkillTable.getInstance().getInfo(4072,4))
            st.takeItems(item,-1)
            st.giveItems(item+1,1)
            if item < 5878 :
               st.playSound("ItemSound.quest_itemget")
            elif item == 5878 :
               st.playSound("ItemSound.quest_middle")
               st.set("cond","2")
            break
   return
Example #11
0
 def onAdvEvent (self,event,npc,player) :
    htmltext = event
    st = player.getQuestState(qn)
    if not st: return
    Alevel = player.getAllianceWithVarkaKetra()
    if str(event) in BUFF.keys() :
        skillId,level,horns=BUFF[event]
        if st.getQuestItemsCount(Horn) >= horns :
            st.takeItems(Horn,horns)
            npc.setTarget(player)
            npc.doCast(SkillTable.getInstance().getInfo(skillId,level))
            npc.setCurrentHpMp(npc.getMaxHp(), npc.getMaxMp())
            htmltext = "31372-4.htm"
        else :
            htmltext = "<html><body>魂靈引導者亞瑟法:<br>如果要得到祖先的祝福就需要供上<font color=\"LEVEL\">野牛的角</font>!你,在出戰場累積更多的戰績,你就會得到野牛的角為其代價!</body></html>"
    elif event == "Withdraw" :
        if player.getWarehouse().getSize() == 0 :
            htmltext = "31374-0.htm"
        else :
            player.sendPacket(ActionFailed.STATIC_PACKET)
            player.setActiveWarehouse(player.getWarehouse())
            player.sendPacket(WareHouseWithdrawalList(player, 1))
    elif event == "Teleport" :
        if Alevel == 4 :
            htmltext = "31376-4.htm"
        elif Alevel == 5 :
            htmltext = "31376-5.htm"
    return htmltext
Example #12
0
		def doRebirth(player):
			st = player.getQuestState(qn)
			#扣除道具
			for id, count in requireItem:
				st.takeItems(id, count)
			#降等
			player.removeExpAndSp(player.getExp() - ExperienceTable.getInstance().getExpForLevel(levelAfterRebirth), player.getSp())
			#記錄轉生次數
			st.set('times', str(st.getInt('times')+1))
			#移除技能
			for i in player.getAllSkills():
				if i.getId() not in sixStatSkills:
					if i.getId() not in remove_skill_blacklist:
						player.removeSkill(i)
			#轉種族
			newClass = st.getInt('newClass')
			st.getPlayer().setClassId(newClass)
			if player.isSubClassActive():
				player.getSubClasses().get(player.getClassIndex()).setClassId(player.getActiveClass())
			else:
				player.setBaseClass(player.getActiveClass())
			#st.getPlayer().setBaseClass(newClass)
			#st.getPlayer().setActiveClass(newClass)
			player.broadcastUserInfo()
			player.rewardSkills()
			player.sendSkillList()
			#player.stopAllToggles()
			#player.broadcastUserInfo()
			#變身..用作暫時解決轉種族後人物怪怪的問題
			#變身 瑪瑙獸 ID 617
			skillId = 617
			skillLevel = 1
			skill = SkillTable.getInstance().getInfo(skillId, skillLevel)
			if skill:
				skill.getEffects(player, player)
				#5秒後解除變身
				st.startQuestTimer('removeAllEffects', 5000)
				#player.untransform()
			#發道具獎勵
			for id, count in rewardItem:
				st.giveItems(id, count)
			#發素質獎勵
			if self.getFreeRebirthPoint(player) > 0:
				skillId = st.getInt('newSixStat')
				skillLevel = max(player.getSkillLevel(skillId), 1)
				player.addSkill(SkillTable.getInstance().getInfo(skillId, skillLevel + 1), True)
			return
Example #13
0
	def giveBuff(self, npc, player, skill_id, skill_lv):
		skill = str(skill_id) + "-" + str(skill_lv)
		if skill_lv > 1:
			if skill not in self.allowBuffList: return
		if skill_lv == 1:
			if str(skill_id) not in self.allowBuffList and skill not in self.allowBuffList: return
		skill = SkillTable.getInstance().getInfo(skill_id, skill_lv)
		if skill:
			skill.getEffects(npc, player)
Example #14
0
	def onAdvEvent(self, event, npc, player):
		if event.startswith('page '):
			page = event[len('page '):]
			return self.htm_header + self.htm_search + self.listSkills(player, int(page)) + self.htm_footer
		elif event.startswith('remove '):
			sid, slv = event[len('remove '):].split()
			sid = int(sid)
			slv = int(slv)
			player.removeSkill(SkillTable.getInstance().getInfo(sid, slv))
			player.sendSkillList()
		elif event.startswith('search '):
			kw = event[len('search '):]
			r = self.htm_warning
			skillTable = SkillTable.getInstance()
			for s in player.getAllSkills():
				if kw in skillTable.getInfo(s.getId(), s.getLevel()).getName() or kw == str(s.getId()):
					r += self.makeRemoveLink(s)
			return self.htm_header + self.htm_search + r + self.htm_footer
		return self.onFirstTalk(npc, player)
Example #15
0
	def onEnterZone(self, character, zone):
		try:
			if character.getTransformationId(): return
			if not isGM_join_event and player.isGM(): return
		except:
			return
		skillId, skillLevel = [672, 1]
		skill = SkillTable.getInstance().getInfo(skillId, skillLevel)
		if skill:
			skill.getEffects(character, character)
Example #16
0
	def onEnterWorld(self, player):
		for skill in player.getAllSkills():
			if skill.getId() in self.removeSkillsData.keys():
				for delskillid in self.removeSkillsData[skill.getId()]:
					level = player.getSkillLevel(delskillid)
					if level != -1:
						delskill = SkillTable.getInstance().getInfo(delskillid, level)
						player.removeSkill(delskill)
						print "%s 因覺醒技能 %s 已移除 %s" % (player.getName(), skill.getName(), delskill.getName())
		player.sendSkillList()
Example #17
0
def transformPlayer(npc, player, transid):
    if player.isTransformed() == True:
        player.untransform()
        time.sleep(2)
    for effect in player.getAllEffects():
        if effect.getAbnormalType() == "speed_up":
            effect.exit()
    npc.setTarget(player)
    npc.doCast(SkillTable.getInstance().getInfo(transid, 1))
    return
Example #18
0
 def onEnterZone(self, character, zone):
     try:
         if character.getTransformationId(): return
         if not isGM_join_event and player.isGM(): return
     except:
         return
     skillId, skillLevel = [672, 1]
     skill = SkillTable.getInstance().getInfo(skillId, skillLevel)
     if skill:
         skill.getEffects(character, character)
def transformPlayer(npc, player, transid) :
	if player.isTransformed() == True :
		player.untransform()
		time.sleep(2)
	for effect in player.getAllEffects() :
		if effect.getAbnormalType() == "speed_up":
			effect.exit()
	npc.setTarget(player)
	npc.doCast(SkillTable.getInstance().getInfo(transid,1))
	return
Example #20
0
    def onAdvEvent(self, event, npc, player):
        htmltext = event
        st = player.getQuestState(qn)
        if not st: return

        if event == "31001-05.htm":
            st.set("cond", "1")
            st.setState(State.STARTED)
            st.playSound("ItemSound.quest_middle")
        elif event == "32576-02.htm":
            st.giveItems(IdentityCard, 1)
            st.set("cond", "2")
            st.playSound("ItemSound.quest_middle")
        elif event == "30289-04.htm":
            player.stopAllEffects()
            SkillTable.getInstance().getInfo(6204,
                                             1).getEffects(player, player)
            st.set("cond", "3")
        elif event == "30289-07.htm":
            player.stopAllEffects()
            SkillTable.getInstance().getInfo(6204,
                                             1).getEffects(player, player)
        elif event == "30289-08.htm":
            player.stopAllEffects()
        elif event == "30289-11.htm":
            st.set("cond", "4")
            st.playSound("ItemSound.quest_middle")
            player.stopAllEffects()
        elif event == "30969-03.htm":
            st.addExpAndSp(52518015, 5817677)
            st.unset("cond")
            st.exitQuest(False)
            st.playSound("ItemSound.quest_finish")
        elif event == "quit":
            instanceId = player.getInstanceId()
            instance = InstanceManager.getInstance().getInstance(instanceId)
            player.setInstanceId(0)
            player.teleToLocation(-12491, 122331, -2984)
            htmltext = ""
        return htmltext
Example #21
0
 def onAdvEvent(self, event, npc, player):
     if event.startswith('page '):
         page = event[len('page '):]
         return self.htm_header + self.htm_search + self.listSkills(
             player, int(page)) + self.htm_footer
     elif event.startswith('remove '):
         sid, slv = event[len('remove '):].split()
         sid = int(sid)
         slv = int(slv)
         player.removeSkill(SkillTable.getInstance().getInfo(sid, slv))
         player.sendSkillList()
     elif event.startswith('search '):
         kw = event[len('search '):]
         r = self.htm_warning
         skillTable = SkillTable.getInstance()
         for s in player.getAllSkills():
             if kw in skillTable.getInfo(
                     s.getId(), s.getLevel()).getName() or kw == str(
                         s.getId()):
                 r += self.makeRemoveLink(s)
         return self.htm_header + self.htm_search + r + self.htm_footer
     return self.onFirstTalk(npc, player)
Example #22
0
	def listAvailableSkill(self, player):
		sl = self.getAvailableSkill(player)
		r = "可學習的技能清單<br1>"
		r += '<a action="bypass -h Quest %s learn_all">全部學習</a><br1>' % self.qn
		for s in sl:
			if s and s.getName():
				ss = SkillTable.getInstance().getInfo(s.getSkillId(), s.getSkillLevel())
				if ss:
					sn = ss.getName()
				else:
					sn = s.getName()
				r += "<a action=\"bypass -h Quest " + self.qn + " learn " + str(s.getSkillId()) + " " + str(s.getSkillLevel()) + "\">" + sn + " Lv " + str(s.getSkillLevel()) + "</a><BR1>"
		return r
Example #23
0
	def onAdvEvent (self,event,npc,player):
		htmltext = event
		st = player.getQuestState(qn)
		if not st: return

		if event == "31001-05.htm":
			st.set("cond","1")
			st.setState(State.STARTED)
			st.playSound("ItemSound.quest_middle")
		elif event == "32576-02.htm":
			st.giveItems(IdentityCard,1)
			st.set("cond","2")
			st.playSound("ItemSound.quest_middle")
		elif event == "30289-04.htm":
			player.stopAllEffects()
			SkillTable.getInstance().getInfo(6204,1).getEffects(player,player)
			st.set("cond","3")
		elif event == "30289-07.htm":
			player.stopAllEffects()
			SkillTable.getInstance().getInfo(6204,1).getEffects(player,player)
		elif event == "30289-08.htm":
			player.stopAllEffects()
		elif event == "30289-11.htm":
			st.set("cond","4")
			st.playSound("ItemSound.quest_middle")
			player.stopAllEffects()
		elif event == "30969-03.htm":
			st.addExpAndSp(52518015, 5817677)
			st.unset("cond") 
			st.exitQuest(False)
			st.playSound("ItemSound.quest_finish")
		elif event == "quit":
			instanceId = player.getInstanceId()
			instance = InstanceManager.getInstance().getInstance(instanceId)
			player.setInstanceId(0)
			player.teleToLocation(-12491,122331,-2984)
			htmltext = ""
		return htmltext
Example #24
0
	def myAddSkill(self, player, id):
		oldSkill = player.getKnownSkill(id)
		sl = self.getAvailableSkill(player)
		for s in sl:
			if s.getSkillId() == id:
				newskill = SkillTable.getInstance().getInfo(s.getSkillId(), s.getSkillLevel())
				if newskill:
					player.addSkill(newskill, True)
				else:
					return 1
				if oldSkill == player.getKnownSkill(id):
					print self.qn, player, "學習技能錯誤", id, newskill.getName()
					player.sendMessage("學習技能錯誤 %s" % newskill.getName())
					return 1
				self.myAddSkill(player, id)
				break
		return 0
Example #25
0
 def listAvailableSkill(self, player):
     sl = self.getAvailableSkill(player)
     r = "可學習的技能清單<br1>"
     r += '<a action="bypass -h Quest %s learn_all">全部學習</a><br1>' % self.qn
     for s in sl:
         if s and s.getName():
             ss = SkillTable.getInstance().getInfo(s.getSkillId(),
                                                   s.getSkillLevel())
             if ss:
                 sn = ss.getName()
             else:
                 sn = s.getName()
             r += "<a action=\"bypass -h Quest " + self.qn + " learn " + str(
                 s.getSkillId()) + " " + str(
                     s.getSkillLevel()) + "\">" + sn + " Lv " + str(
                         s.getSkillLevel()) + "</a><BR1>"
     return r
Example #26
0
 def myAddSkill(self, player, id):
     oldSkill = player.getKnownSkill(id)
     sl = self.getAvailableSkill(player)
     for s in sl:
         if s.getSkillId() == id:
             newskill = SkillTable.getInstance().getInfo(
                 s.getSkillId(), s.getSkillLevel())
             if newskill:
                 player.addSkill(newskill, True)
             else:
                 return 1
             if oldSkill == player.getKnownSkill(id):
                 print self.qn, player, "學習技能錯誤", id, newskill.getName()
                 player.sendMessage("學習技能錯誤 %s" % newskill.getName())
                 return 1
             self.myAddSkill(player, id)
             break
     return 0
Example #27
0
 def onAdvEvent (self,event,npc, player) :
     htmltext = event
     st = player.getQuestState(qn)
     if not st : return
     if event == "32557-06.htm" :
         st.set("cond","1")
         st.setState(State.STARTED)
         st.playSound("ItemSound.quest_accept")
     elif event == "32557-09.htm" :
         st.set("transform","1")
         SkillTable.getInstance().getInfo(5982,1).getEffects(player,player)
     elif event == "32557-10.htm" :
         st.set("transform","2")
         SkillTable.getInstance().getInfo(5983,1).getEffects(player,player)
     elif event == "32557-13.htm" :
         if st.getInt("transform") == 1 :
             SkillTable.getInstance().getInfo(5982,1).getEffects(player,player)
         elif st.getInt("transform") == 2 :
             SkillTable.getInstance().getInfo(5983,1).getEffects(player,player)
     return htmltext
 def onAdvEvent (self,event,npc, player) :
     htmltext = event
     st = player.getQuestState(qn)
     if not st : return
     if event == "32557-06.htm" :
         st.set("cond","1")
         st.setState(State.STARTED)
         st.playSound("ItemSound.quest_accept")
     elif event == "32557-09.htm" :
         st.set("transform","1")
         SkillTable.getInstance().getInfo(5982,1).getEffects(player,player)
     elif event == "32557-10.htm" :
         st.set("transform","2")
         SkillTable.getInstance().getInfo(5983,1).getEffects(player,player)
     elif event == "32557-13.htm" :
         if st.getInt("transform") == 1 :
             SkillTable.getInstance().getInfo(5982,1).getEffects(player,player)
         elif st.getInt("transform") == 2 :
             SkillTable.getInstance().getInfo(5983,1).getEffects(player,player)
     return htmltext
Example #29
0
 def onAcquireSkillList (self, npc, player) :
   asl = AcquireSkillList(AcquireSkillList.SkillType.unk4)
   st = player.getQuestState(qn)
   oldSkills = player.getAllSkills()
   count = 0
   for i in SKILLITEMS:
     for j in SUBSKILLS[i]:
       minLevel = 0
       maxLevel = SkillTable.getInstance().getMaxLevel(j)
       for oldsk in oldSkills:
         if oldsk.getId() == j:
           minLevel = oldsk.getLevel()
       if minLevel < maxLevel:
         count+=1
         asl.addSkill(j, minLevel+1, maxLevel, 0, 0)
   player.sendPacket(asl)
   if count == 0:
     player.sendPacket(SystemMessage(SystemMessageId.NO_MORE_SKILLS_TO_LEARN))
   return ""
Example #30
0
 def onAcquireSkillList(self, npc, player):
     asl = AcquireSkillList(AcquireSkillList.SkillType.unk4)
     st = player.getQuestState(qn)
     oldSkills = player.getAllSkills()
     count = 0
     for i in SKILLITEMS:
         for j in SUBSKILLS[i]:
             minLevel = 0
             maxLevel = SkillTable.getInstance().getMaxLevel(j)
             for oldsk in oldSkills:
                 if oldsk.getId() == j:
                     minLevel = oldsk.getLevel()
             if minLevel < maxLevel:
                 count += 1
                 asl.addSkill(j, minLevel + 1, maxLevel, 0, 0)
     player.sendPacket(asl)
     if count == 0:
         player.sendPacket(
             SystemMessage(SystemMessageId.NO_MORE_SKILLS_TO_LEARN))
     return ""
Example #31
0
	def getBuffPage(self, selected_tab, col=1):
		dialog_width = 270
		c = 0
		skillTable = SkillTable.getInstance()
		r = "<table border=0 cellpadding=0 cellspacing=0 width=%d>" % dialog_width
		for id, bufflist in self.buff_pages:
			if id == selected_tab:
				r += "<tr>"
				for buff in bufflist:
					skill_id, skill_lv = self.buffToList(buff)
					r += "<td><table border=0 cellpadding=0 cellspacing=0 height=38 width=%d %%%s%%><tr><td>" % (dialog_width/col, buff)
					if self.isShowIcon:
						r += '<img src="%s" width=32 height=32></td><td>' % self.si_table.getIconName(skill_id)
					r += '<a action="bypass -h Quest %s %s %s">%s</a></td></tr></table></td>' % (self.qn, buff, selected_tab, skillTable.getInfo(skill_id, skill_lv).getName())
					c += 1
					if c % col == 0:
						r += "</tr><tr>"
				r += "</tr>"
				break
		r += "</table>"
		return self.htm_header + self.getTabHtm(selected_tab) + r + self.htm_footer
Example #32
0
	def getBuffPage(self, selected_tab, col=1):
		dialog_width = 270
		c = 0
		skillTable = SkillTable.getInstance()
		r = "<table border=0 cellpadding=0 cellspacing=0 width=" + str(dialog_width) + ">"
		for id, bufflist in self.buff_pages:
			if id == selected_tab:
				r += "<tr>"
				for buff in bufflist:
					skill_id, skill_lv = self.buffToList(buff)
					# r += "<td><button width=16 height=16 fore=\"L2UI.CheckBox%" + buff + "%\"></td>"
					r += "<td><table border=0 cellpadding=0 cellspacing=0  height=38 width="+str(dialog_width/col)+" %" + buff + "%><tr><td>"
					if self.isShowIcon:
						r += "<img src=\"" + self.si_table.getIconName(skill_id) + "\" width=32 height=32></td><td>"
					r += "<a action=\"bypass -h Quest " + self.qn + " " + buff + " " + id + "\">" + skillTable.getInfo(skill_id, skill_lv).getName() + "</a></td></tr></table></td>"
					c += 1
					if c % col == 0:
						r += "</tr><tr>"
				r += "</tr>"
				break
		r += "</table>"
		return self.htm_header + self.getTabHtm(selected_tab) + r + self.htm_footer
 def onAdvEvent (self,event,npc,player) :
    st = player.getQuestState(qn)
    if not st: return
    htmltext = event
    cond = st.getInt("cond")
    if htmltext == "31554-03a.htm" : #Giving 100 Splinter Stakato Chitins. Getting Recruit mark
       if st.getQuestItemsCount(CHITIN)>=count and cond == 1 :
          st.set("cond","2")
          st.takeItems(CHITIN,-1)
          st.giveItems(RECRUIT,1)
          htmltext = "31554-04.htm"
    elif event == "31554-07.htm" : #Cancelling the quest
       st.exitQuest(1)
       st.playSound("ItemSound.quest_giveup")
    elif event in BUFF.keys() and cond == 3 : #Asking for buff
        skillId,level,coins=BUFF[event]
        if st.getQuestItemsCount(GOLDEN_RAM_COIN) >= coins :
          st.takeItems(GOLDEN_RAM_COIN,coins)
          npc.setTarget(player)
          npc.doCast(SkillTable.getInstance().getInfo(skillId,level))
          htmltext = "31556-1.htm"
        else :
          htmltext = "You don't have required items"
    return htmltext
Example #34
0
 def onAdvEvent (self,event,npc,player) :
    st = player.getQuestState(qn)
    if not st: return
    htmltext = event
    cond = st.getInt("cond")
    if htmltext == "31554-03a.htm" : #Giving 100 Splinter Stakato Chitins. Getting Recruit mark
       if st.getQuestItemsCount(CHITIN)>=count and cond == 1 :
          st.set("cond","2")
          st.takeItems(CHITIN,-1)
          st.giveItems(RECRUIT,1)
          htmltext = "31554-04.htm"
    elif event == "31554-07.htm" : #Cancelling the quest
       st.exitQuest(1)
       st.playSound("ItemSound.quest_giveup")
    elif event in BUFF.keys() and cond == 3 : #Asking for buff
        skillId,level,coins=BUFF[event]
        if st.getQuestItemsCount(GOLDEN_RAM_COIN) >= coins :
          st.takeItems(GOLDEN_RAM_COIN,coins)
          npc.setTarget(player)
          npc.doCast(SkillTable.getInstance().getInfo(skillId,level))
          htmltext = "31556-1.htm"
        else :
          htmltext = "材料不足。"
    return htmltext
Example #35
0
	def add_skill(self, player, skill_data_key):
		skill_id = self.skill_data[skill_data_key][0]
		new_skill_level = player.getSkillLevel(skill_id)
		new_skill_level = new_skill_level + 1 or 1
		player.addSkill(SkillTable.getInstance().getInfo(skill_id, new_skill_level), True)
Example #36
0
 def onAdvEvent (self,event,npc,player) :
   if event == "chest_timer" :
     self.athrea = 0
     return
   if player.isClanLeader() : leaderst = st = player.getQuestState(qn)
   else :
       # non-leaders doing this quest need both their own quest state and the leader's
       st = player.getQuestState(qn)
       if not st: return
       leaderst = leader(player)

   if not leaderst :
       if DEBUG :
           debug = "Event can't find leader"
           print debug
           return debug
       return
   debug = ""
   htmltext = event
   if player.isClanLeader() :
       if event == "30756-07.htm" :
           st.playSound("ItemSound.quest_accept")
           st.set("cond","1")
           st.setState(State.STARTED)
           st.set("part","1")
       elif event == "30759-03.htm" :
           st.set("part","2")
           st.set("cond","2")
           st.set("dead_list"," ")
       elif event == "30759-07.htm" :
           st.takeItems(SYMBOL_OF_LOYALTY,1) #Item is not stackable, thus need to do this for each item
           st.takeItems(SYMBOL_OF_LOYALTY,1)
           st.takeItems(SYMBOL_OF_LOYALTY,1)
           st.giveItems(ANTIDOTE_RECIPE,1)
           st.set("part","3")
           st.set("cond","3")
           st.startQuestTimer("poison_timer",3600000)
           st.addNotifyOfDeath(player)
           SkillTable.getInstance().getInfo(4082,1).getEffects(npc,player);
       elif event == "poison_timer" :
           st.exitQuest(1)
           if DEBUG :
               debug = "Times Up! Quest failed!"
               print debug
               return debug
           return
   elif event == "30757-05.htm" :
       if player.isClanLeader() : return "Only Clan Members can sacrifice themselves!"
       if st.getRandom(10) > 5 :
           htmltext = "30757-06.htm"
           st.giveItems(SYMBOL_OF_LOYALTY,1)
           deadlist = leaderst.get("dead_list").split()
           deadlist.append(player.getName())
           leaderst.set("dead_list"," ".join(deadlist))
       else :
           skill = SkillTable.getInstance().getInfo(4083,1)
           npc.setTarget(player)
           npc.doCast(skill)
           self.startQuestTimer(player.getName(),4000,npc,player,0)
   elif event == player.getName() :
       if player.isDead() :
           st.giveItems(SYMBOL_OF_LOYALTY,1)
           deadlist = leaderst.get("dead_list").split()
           deadlist.append(player.getName())
           leaderst.set("dead_list"," ".join(deadlist))
       elif DEBUG :
           debug = "player " + player.getName() + " didn't die!"
           print debug
           return debug
       return
   elif event == "30758-03.htm" :
       if not self.athrea :
           self.athrea = 1
           self.chests = 0
           leaderst.set("part","4")
           leaderst.set("chest_wins","0")
           for x,y,z in CHEST_LOCS :
               rand = st.getRandom(5)
               self.addSpawn(27173+rand,x,y,z,0,0,300000)
               self.startQuestTimer("chest_timer",300000,npc,player,0)
       else :
           htmltext = "30758-04.htm"
   elif event == "30758-07.htm" :
       if st.getQuestItemsCount(57) >= 667 and not self.athrea :
           htmltext = "30758-08.htm"
           st.takeItems(57, 667)
   if DEBUG and debug :
       print debug
       return debug
   return htmltext
Example #37
0
	def makeRemoveLink(self, skill):
		return "<a action=\"bypass -h Quest " + self.qn + " remove " + str(skill.getId()) + " " + str(skill.getLevel()) + "\">" + SkillTable.getInstance().getInfo(skill.getId(), skill.getLevel()).getName() + "(%d)" % str(skill.getId()) + " Lv " + str(skill.getLevel()) + "</a><BR1>"
Example #38
0
	def onAdvEvent (self,event,npc,player) :
		htmltext = event
		st = player.getQuestState(qn)
		if not st : return

		if str(event) in BUFF.keys():
			skillId,level,coins=BUFF[event]
			if st.getQuestItemsCount(GOLDEN_RAM_COIN) >= coins :
				st.takeItems(GOLDEN_RAM_COIN,coins)
				npc.setTarget(player)
				npc.doCast(SkillTable.getInstance().getInfo(skillId,level))
				htmltext = selina_01
			else :
				htmltext = selina_02
		elif event == "31554-03.htm" :
			st.set("cond","1")
			st.setState(State.STARTED)
			st.playSound("ItemSound.quest_accept")
		elif event == "kahman_06" :
			htmltext = kahman_06
			st.takeItems(CHITIN,-1)
			st.giveItems(RECRUIT,1)
			st.set("cond","2")
			st.playSound("ItemSound.quest_middle")
		elif event == "kahman_10" :
			htmltext = kahman_10
			st.exitQuest(1)
			st.playSound("ItemSound.quest_giveup")
		# 傭兵 卡姆恩
#		elif event == "kahman_c1" :
#			htmltext = kahman_c1
#		elif event == "kahman_c2" :
#			htmltext = kahman_c2
		elif event == "kahman_04" :
			htmltext = kahman_04
		elif event == "kahman_05" :
			htmltext = kahman_05
		elif event == "kahman_06" :
			htmltext = kahman_06
		elif event == "kahman_07" :
			htmltext = kahman_07
		elif event == "kahman_08" :
			htmltext = kahman_08
		elif event == "kahman_09" :
			htmltext = kahman_09
		elif event == "kahman_10" :
			htmltext = kahman_10
		elif event == "kahman_11" :
			htmltext = kahman_11
		elif event == "kahman_12" :
			htmltext = kahman_12
		# 傭兵隊補給兵 亞柏克隆比
#		elif event == "abercrombie_c1" :
#			htmltext = abercrombie_c1
#		elif event == "abercrombie_01" :
#			htmltext = abercrombie_01
#		elif event == "abercrombie_02" :
#			htmltext = abercrombie_02
		# 傭兵隊醫務兵 瑟麗娜
#		elif event == "selina_c1" :
#			htmltext = selina_c1
#		elif event == "selina_c2" :
#			htmltext = selina_c2
#		elif event == "selina_c3" :
#			htmltext = selina_c3
		elif event == "selina_01" :
			htmltext = selina_01
		elif event == "selina_02" :
			htmltext = selina_02
		return htmltext
Example #39
0
	def onAdvEvent (self,event,npc,player) :
		htmltext = event
		st = player.getQuestState(qn)
		if not st : return

		if str(event) in BUFF.keys():
			skillId,level,coins=BUFF[event]
			if st.getQuestItemsCount(GOLDEN_RAM_COIN) >= coins :
				st.takeItems(GOLDEN_RAM_COIN,coins)
				npc.setTarget(player)
				npc.doCast(SkillTable.getInstance().getInfo(skillId,level))
				htmltext = selina_01
			else :
				htmltext = selina_02
		elif event == "31554-03.htm" :
			st.set("cond","1")
			st.setState(State.STARTED)
			st.playSound("ItemSound.quest_accept")
		elif event == "kahman_06" :
			htmltext = kahman_06
			st.takeItems(CHITIN,-1)
			st.giveItems(RECRUIT,1)
			st.set("cond","2")
			st.playSound("ItemSound.quest_middle")
		elif event == "kahman_10" :
			htmltext = kahman_10
			st.exitQuest(1)
			st.playSound("ItemSound.quest_giveup")
		# 傭兵 卡姆恩
#		elif event == "kahman_c1" :
#			htmltext = kahman_c1
#		elif event == "kahman_c2" :
#			htmltext = kahman_c2
		elif event == "kahman_04" :
			htmltext = kahman_04
		elif event == "kahman_05" :
			htmltext = kahman_05
		elif event == "kahman_06" :
			htmltext = kahman_06
		elif event == "kahman_07" :
			htmltext = kahman_07
		elif event == "kahman_08" :
			htmltext = kahman_08
		elif event == "kahman_09" :
			htmltext = kahman_09
		elif event == "kahman_10" :
			htmltext = kahman_10
		elif event == "kahman_11" :
			htmltext = kahman_11
		elif event == "kahman_12" :
			htmltext = kahman_12
		# 傭兵隊補給兵 亞柏克隆比
#		elif event == "abercrombie_c1" :
#			htmltext = abercrombie_c1
#		elif event == "abercrombie_01" :
#			htmltext = abercrombie_01
#		elif event == "abercrombie_02" :
#			htmltext = abercrombie_02
		# 傭兵隊醫務兵 瑟麗娜
#		elif event == "selina_c1" :
#			htmltext = selina_c1
#		elif event == "selina_c2" :
#			htmltext = selina_c2
#		elif event == "selina_c3" :
#			htmltext = selina_c3
		elif event == "selina_01" :
			htmltext = selina_01
		elif event == "selina_02" :
			htmltext = selina_02
		return htmltext
Example #40
0
    def onAdvEvent(self, event, npc, player):
        #檢測轉生條件
        def check_rebirth_requirement(player):
            #檢測轉生要求等級
            if player.getLevel() < requireLevel: return False
            st = player.getQuestState(qn)
            #檢測轉生要求道具及數量
            for id, count in requireItem:
                if st.getQuestItemsCount(id) < count: return False
            #檢測轉生次數
            if st.getInt('times') >= maxRebirthTimes: return False
            #限制副職業不能轉生
            if player.isSubClassActive(): return False
            #檢測素質等級不能多於51
            sixStatId = st.getInt('newSixStat')
            if player.getSkillLevel(sixStatId) >= 51: return False
            #全部檢測通過
            return True

        #執行轉生
        def doRebirth(player):
            st = player.getQuestState(qn)
            #扣除道具
            for id, count in requireItem:
                st.takeItems(id, count)
            #降等
            player.removeExpAndSp(
                player.getExp() - ExperienceTable.getInstance().getExpForLevel(
                    levelAfterRebirth), player.getSp())
            #記錄轉生次數
            st.set('times', str(st.getInt('times') + 1))
            #移除技能
            for i in player.getAllSkills():
                if i.getId() not in sixStatSkills:
                    if i.getId() not in remove_skill_blacklist:
                        player.removeSkill(i)
            #轉種族
            newClass = st.getInt('newClass')
            st.getPlayer().setClassId(newClass)
            if player.isSubClassActive():
                player.getSubClasses().get(player.getClassIndex()).setClassId(
                    player.getActiveClass())
            else:
                player.setBaseClass(player.getActiveClass())
            #st.getPlayer().setBaseClass(newClass)
            #st.getPlayer().setActiveClass(newClass)
            player.broadcastUserInfo()
            player.rewardSkills()
            player.sendSkillList()
            #player.stopAllToggles()
            #player.broadcastUserInfo()
            #變身..用作暫時解決轉種族後人物怪怪的問題
            #變身 瑪瑙獸 ID 617
            skillId = 617
            skillLevel = 1
            skill = SkillTable.getInstance().getInfo(skillId, skillLevel)
            if skill:
                skill.getEffects(player, player)
                #5秒後解除變身
                st.startQuestTimer('removeAllEffects', 5000)
                #player.untransform()
            #發道具獎勵
            for id, count in rewardItem:
                st.giveItems(id, count)
            #發素質獎勵
            if self.getFreeRebirthPoint(player) > 0:
                skillId = st.getInt('newSixStat')
                skillLevel = max(player.getSkillLevel(skillId), 1)
                player.addSkill(
                    SkillTable.getInstance().getInfo(skillId, skillLevel + 1),
                    True)
            return

        try:
            nEvent = int(event)
        except:
            nEvent = -1
        #顯示 轉生狀態畫面
        if event == 'request_info':
            return 'info.htm'
        #執行重設轉生素質
        elif event == 'request_reset_sixstat':
            #移除六大素質技能
            for i in player.getAllSkills():
                if i.getId() in sixStatSkills:
                    player.removeSkill(i)
            return 'info.htm'
        #顯示設定轉生素質獎勵對話
        elif event == 'request_set_sixstat':
            return 'setSixStat.htm'
        #顯示 選擇新種族畫面
        elif event == 'request_choice_class':
            return 'choiceClass.htm'
        #記錄 新種族 及 下一步
        elif nEvent in baseClassID:
            st = player.getQuestState(qn)
            #記錄新種族
            st.set('newClass', event)
            return "choiceSixStat.htm"
        #記錄 轉生素質獎勵 及 下一步
        elif nEvent in sixStatSkills:
            st = player.getQuestState(qn)
            #記錄新素質要求
            st.set('newSixStat', event)
            return "confirm.htm"
        #確定要求轉生
        elif event == "request_rebirth":
            if check_rebirth_requirement(player):
                doRebirth(player)
                return "rebirth_ok.htm"
            else:
                return "rebirth_fail.htm"
        #移除所有狀態
        elif event == 'removeAllEffects':
            for e in player.getAllEffects():
                e.exit()
        #設定六大素質
        elif event.split()[0] == 'require_sixstat_add':
            try:
                c, n, v = event.split()
                v = max(int(v), 0)
                i = sixStatName.index(n)
            except:
                print qn + ":錯誤 event:" + event
                return ""
            newV = max(player.getSkillLevel(sixStatSkills[i]), 1) + v
            needPoint = v
            if needPoint == 0 or newV >= 51 or self.getFreeRebirthPoint(
                    player) < needPoint or player.isSubClassActive():
                return "setSixStatFail.htm"
            else:
                skillId = sixStatSkills[i]
                skillLevel = newV
                player.addSkill(
                    SkillTable.getInstance().getInfo(skillId, skillLevel),
                    True)
            return "info.htm"
        else:
            print qn + ":不明的要求:" + event
            return ""
        return
Example #41
0
 def onAdvEvent(self, event, npc, player):
     htmltext = event
     st = player.getQuestState(qn)
     if event == "learn":
         htmltext = ""
         st2 = player.getQuestState("136_MoreThanMeetsTheEye")
         if player.isSubClassActive():
             htmltext = "8005-04.htm"
         elif not st2 or st2.getState() != State.COMPLETED:
             htmltext = "8005-03.htm"
         else:
             j = 0
             for i in SKILLITEMS:
                 j += st.getQuestItemsCount(i)
             if j > 0:
                 self.onAcquireSkillList(npc, player)
             else:
                 htmltext = "8005-04.htm"
     elif event == "cancel":
         if st.getQuestItemsCount(57) < 10000000:
             htmltext = "8005-07.htm"
         elif player.getSubClasses().size() == 0:
             htmltext = "8005-03.htm"
         elif player.isSubClassActive():
             htmltext = "8005-04.htm"
         else:
             activeCertifications = 0
             for var in QUESTVARSITEMS:
                 for i in range(Config.MAX_SUBCLASS):
                     qvar = st.getGlobalQuestVar(var + str(i + 1))
                     if qvar.endswith(";"):
                         activeCertifications += 1
                     elif qvar != "" and qvar != "0":
                         activeCertifications += 1
             if activeCertifications == 0:
                 htmltext = "8005-08.htm"
             else:
                 for var in QUESTVARSITEMS:
                     for i in range(Config.MAX_SUBCLASS):
                         qvar = st.getGlobalQuestVar(var + str(i + 1))
                         if qvar.endswith(";"):
                             skill = SkillTable.getInstance().getInfo(
                                 int(qvar.replace(";", "")), 1)
                             if skill:
                                 qvar = st.getGlobalQuestVar(var +
                                                             str(i + 1))
                                 skillId = int(qvar.replace(";", ""))
                                 skillLevel = player.getSkillLevel(skillId)
                                 player.removeSkill(skill, skillLevel)
                                 st.saveGlobalQuestVar(
                                     var + str(i + 1), "0")
                         elif qvar != "" and qvar != "0":
                             Item = player.getInventory().getItemByObjectId(
                                 int(qvar))
                             if Item:
                                 player.destroyItem(qn, int(qvar), 1,
                                                    player, 0)
                             else:
                                 Item = player.getWarehouse(
                                 ).getItemByObjectId(int(qvar))
                                 if Item:
                                     print "Somehow " + player.getName(
                                     ) + " put certification book into warehouse!"
                                     player.getWarehouse().destroyItem(
                                         qn, Item, 1, player, None)
                                 else:
                                     print "Somehow " + player.getName(
                                     ) + " his/her delete certification book!"
                             st.saveGlobalQuestVar(var + str(i + 1), "0")
                 st.takeItems(57, 10000000)
                 htmltext = "8005-09.htm"
                 player.sendSkillList()
     return htmltext
Example #42
0
    def onTalk(self, npc, player):
        htmltext = "<html><body>目前沒有執行任務,或條件不符。</body></html>"
        st = player.getQuestState(qn)
        if not st: return htmltext

        npcId = npc.getNpcId()
        id = st.getState()
        cond = st.getInt("cond")

        if id == State.COMPLETED:
            htmltext = "<html><body>這是已經完成的任務。</body></html>"
        elif id == State.CREATED:
            if npcId == SirGustavAthebaldt and cond == 0:
                first = player.getQuestState("193_SevenSignDyingMessage")
                if first:
                    if first.getState(
                    ) == State.COMPLETED and player.getLevel() >= 79:
                        htmltext = "30760-0.htm"
                    else:
                        htmltext = "30760-0a.htm"
                        st.exitQuest(1)
                else:
                    htmltext = "30760-0b.htm"
                    st.exitQuest(1)
        elif id == State.STARTED:
            if npcId == SirGustavAthebaldt:
                if cond == 1: htmltext = "30760-1.htm"
                elif cond == 2: htmltext = "30760-3.htm"
                elif cond == 3: htmltext = "30760-6a.htm"
            elif npcId == Kollin:
                if cond == 3: htmltext = "32571-0.htm"
                elif cond == 4 and player.getFirstEffect(Frog) != None:
                    htmltext = "32571-3a.htm"
                elif cond == 4 and player.getFirstEffect(Frog) == None:
                    player.doCast(SkillTable.getInstance().getInfo(Frog, 1))
                    htmltext = "32571-3a.htm"
                elif cond == 5:
                    htmltext = "32571-4.htm"
                elif cond == 6:
                    htmltext = "32571-6.htm"
                elif cond == 7 and player.getFirstEffect(Frog) != None:
                    htmltext = "32571-7a.htm"
                elif cond == 7 and player.getFirstEffect(Frog) == None:
                    player.doCast(SkillTable.getInstance().getInfo(
                        YoungChild, 1))
                    htmltext = "32571-7a.htm"
                elif cond == 8:
                    htmltext = "32571-8.htm"
                elif cond == 9:
                    htmltext = "32571-10.htm"
                elif cond == 10 and player.getFirstEffect(Native) != None:
                    htmltext = "32571-11a.htm"
                elif cond == 10 and player.getFirstEffect(Native) == None:
                    player.doCast(SkillTable.getInstance().getInfo(Native, 1))
                    htmltext = "32571-11a.htm"
                elif cond == 11:
                    htmltext = "32571-12.htm"
                elif cond == 12:
                    htmltext = "32571-13a.htm"
            elif npcId == FrogKing:
                if cond == 4 and player.getFirstEffect(Frog) != None:
                    htmltext = "32572-0.htm"
                elif cond == 4 and player.getFirstEffect(Frog) == None:
                    htmltext = "32572-0a.htm"
            elif npcId == Tess:
                if cond == 7 and player.getFirstEffect(YoungChild) != None:
                    htmltext = "32573-0.htm"
                elif cond == 7 and player.getFirstEffect(YoungChild) == None:
                    htmltext = "32573-0a.htm"
            elif npcId == Kuta:
                if cond == 10 and player.getFirstEffect(Native) != None:
                    htmltext = "32574-0.htm"
                elif cond == 10 and player.getFirstEffect(Native) == None:
                    htmltext = "32574-0a.htm"
            elif npcId == ClaudiaAthebalt:
                if cond == 12: htmltext = "31001-0.htm"
        return htmltext
Example #43
0
    def onAdvEvent(self, event, npc, player):
        htmltext = event
        st = player.getQuestState(qn)
        if not st: return

        if event == "30760-1.htm":
            st.set("cond", "1")
            st.setState(State.STARTED)
            st.playSound("ItemSound.quest_accept")
        elif event == "30760-3.htm":
            st.set("cond", "2")
            st.playSound("ItemSound.quest_middle")
        elif event == "30760-4.htm":
            player.showQuestMovie(10)
            self.startQuestTimer("normal_world", 102000, None, player)
            return
        elif event == "30760-6.htm":
            st.giveItems(AthebaltsIntroduction, 1)
            st.set("cond", "3")
            st.playSound("ItemSound.quest_middle")
        elif event == "32571-3.htm":
            st.takeItems(AthebaltsIntroduction, -1)
            player.stopAllEffects()
            SkillTable.getInstance().getInfo(6201,
                                             1).getEffects(player, player)
            st.set("cond", "4")
            st.playSound("ItemSound.quest_middle")
        elif event == "32572-3.htm":
            st.giveItems(FrogKingsBead, 1)
            st.set("cond", "5")
            st.playSound("ItemSound.quest_middle")
        elif event == "32571-5.htm":
            st.takeItems(FrogKingsBead, -1)
            st.set("cond", "6")
            st.playSound("ItemSound.quest_middle")
        elif event == "32571-7.htm":
            player.stopAllEffects()
            SkillTable.getInstance().getInfo(6202,
                                             1).getEffects(player, player)
            st.set("cond", "7")
            st.playSound("ItemSound.quest_middle")
        elif event == "32573-2.htm":
            st.giveItems(GrandmaTessCandyPouch, 1)
            st.set("cond", "8")
            st.playSound("ItemSound.quest_middle")
        elif event == "32571-9.htm":
            st.takeItems(GrandmaTessCandyPouch, -1)
            st.set("cond", "9")
            st.playSound("ItemSound.quest_middle")
        elif event == "32571-11.htm":
            player.stopAllEffects()
            SkillTable.getInstance().getInfo(6203,
                                             1).getEffects(player, player)
            st.set("cond", "10")
            st.playSound("ItemSound.quest_middle")
        elif event == "32574-3.htm":
            st.giveItems(NativesGlove, 1)
            st.set("cond", "11")
            st.playSound("ItemSound.quest_middle")
        elif event == "32571-13.htm":
            st.takeItems(NativesGlove, -1)
            player.stopAllEffects()
            st.set("cond", "12")
            st.playSound("ItemSound.quest_middle")
        elif event == "31001-2.htm":
            st.addExpAndSp(52518015, 5817677)
            st.unset("cond")
            st.exitQuest(False)
            st.playSound("ItemSound.quest_finish")
        elif event == "normal_world":
            player.teleToLocation(80102, 56532, -1550)
            return "30760-4.htm"
        return htmltext
Example #44
0
 def add_skill(self, player, skill_data_key):
     skill_id = self.skill_data[skill_data_key][0]
     new_skill_level = player.getSkillLevel(skill_id)
     new_skill_level = new_skill_level + 1 or 1
     player.addSkill(
         SkillTable.getInstance().getInfo(skill_id, new_skill_level), True)
Example #45
0
    def onTalk(self, npc, player):
        htmltext = "<html><body>目前沒有執行任務,或條件不符。</body></html>"
        st = player.getQuestState(qn)
        if not st:
            return htmltext
        id = st.getState()
        cond = st.getInt("cond")
        npcId = npc.getNpcId()

        if id == State.CREATED and npcId == CRONOS:
            if player.getLevel() < 45 and (
                st.getQuestItemsCount(3500) or st.getQuestItemsCount(3501) or st.getQuestItemsCount(3502)
            ):
                st.exitQuest(1)
                htmltext = "30610-01.htm"
            elif player.getLevel() >= 45 and (
                (st.getQuestItemsCount(3500) + st.getQuestItemsCount(3501) + st.getQuestItemsCount(3502)) >= 2
            ):
                st.exitQuest(1)
                htmltext = "30610-02.htm"
            elif player.getLevel() >= 45 and (
                (st.getQuestItemsCount(3500) + st.getQuestItemsCount(3501) + st.getQuestItemsCount(3502)) == 1
            ):
                if st.getQuestItemsCount(3500) == 1:
                    item = player.getInventory().getItemByItemId(3500)
                    if item.getEnchantLevel() < 55:
                        htmltext = "30610-03.htm"
                    else:
                        htmltext = "30610-04.htm"
                elif st.getQuestItemsCount(3501) == 1:
                    item = player.getInventory().getItemByItemId(3501)
                    if item.getEnchantLevel() < 55:
                        htmltext = "30610-03.htm"
                    else:
                        htmltext = "30610-04.htm"
                elif st.getQuestItemsCount(3502) == 1:
                    item = player.getInventory().getItemByItemId(3502)
                    if item.getEnchantLevel() < 55:
                        htmltext = "30610-03.htm"
                    else:
                        htmltext = "30610-04.htm"
        elif id == State.STARTED:
            if npcId == CRONOS:
                htmltext = "30610-07.htm"
            if npcId == MIMYU:
                if st.getInt("id") == 1:
                    st.set("id", "2")
                    htmltext = "30747-01.htm"
                elif st.getInt("id") == 2:
                    summon = player.getPet()
                    if summon:
                        if summon.getControlItem().getObjectId() == st.getInt("summonOid"):
                            htmltext = "30747-04.htm"
                        else:
                            htmltext = "30747-03.htm"
                    else:
                        htmltext = "30747-02.htm"
                elif st.getInt("id") == 0:
                    htmltext = "30747-07.htm"
                elif st.getInt("id") > 0 and st.getInt("id") < 15 and st.getQuestItemsCount(FT_LEAF) >= 1:
                    htmltext = "30747-11.htm"
                elif st.getInt("id") == 15 and st.getQuestItemsCount(FT_LEAF) == 0:
                    summon = player.getPet()
                    if summon:
                        if summon.getControlItem().getObjectId() == st.getInt("summonOid"):
                            st.set("id", "16")
                            htmltext = "30747-13.htm"
                        else:
                            htmltext = "30747-14.htm"
                    else:
                        htmltext = "30747-12.htm"
                elif st.getInt("id") == 16:
                    summon = player.getPet()
                    if summon:
                        htmltext = "30747-15.htm"
                    elif (st.getQuestItemsCount(3500) + st.getQuestItemsCount(3501) + st.getQuestItemsCount(3502)) == 1:
                        if st.getQuestItemsCount(3500) == 1:
                            item = player.getInventory().getItemByItemId(3500)
                            if item.getObjectId() == st.getInt("summonOid"):
                                # EvolvePet(player,item,4422)
                                st.takeItems(3500, 1)
                                st.giveItems(4422, 1)
                                htmltext = "30747-16.htm"
                                st.exitQuest(1)
                                st.playSound("ItemSound.quest_finish")
                            else:
                                npc.setTarget(player)
                                skill = SkillTable.getInstance().getInfo(4167, 1)
                                if skill != None:
                                    skill.getEffects(npc, player)
                                htmltext = "30747-18.htm"
                        elif st.getQuestItemsCount(3501) == 1:
                            item = player.getInventory().getItemByItemId(3501)
                            if item.getObjectId() == st.getInt("summonOid"):
                                # EvolvePet(player,item,4423)
                                st.takeItems(3501, 1)
                                st.giveItems(4423, 1)
                                htmltext = "30747-16.htm"
                                st.exitQuest(1)
                                st.playSound("ItemSound.quest_finish")
                            else:
                                npc.setTarget(player)
                                skill = SkillTable.getInstance().getInfo(4167, 1)
                                if skill != None:
                                    skill.getEffects(npc, player)
                                htmltext = "30747-18.htm"
                        elif st.getQuestItemsCount(3502) == 1:
                            item = player.getInventory().getItemByItemId(3502)
                            if item.getObjectId() == st.getInt("summonOid"):
                                # EvolvePet(player,item,4424)
                                st.takeItems(3502, 1)
                                st.giveItems(4424, 1)
                                htmltext = "30747-16.htm"
                                st.exitQuest(1)
                                st.playSound("ItemSound.quest_finish")
                            else:
                                npc.setTarget(player)
                                skill = SkillTable.getInstance().getInfo(4167, 1)
                                if skill != None:
                                    skill.getEffects(npc, player)
                                htmltext = "30747-18.htm"
                        else:
                            htmltext = "30747-18.htm"
                    elif (st.getQuestItemsCount(3500) + st.getQuestItemsCount(3501) + st.getQuestItemsCount(3502)) >= 2:
                        htmltext = "30747-17.htm"
        return htmltext
Example #46
0
	def onTalk (self, npc, player) :
		htmltext = "<html><body>目前沒有執行任務,或條件不符。</body></html>"
		st = player.getQuestState(qn)
		if not st: return htmltext

		#id = st.getState()
		npcId = npc.getNpcId()
		cond = st.getInt("cond")

		if npcId == MUSHIKA :
			first = player.getQuestState("124_MeetingTheElroki")
			if st.getState() == State.COMPLETED :
				htmltext = "<html><body>這是已經完成的任務。</body></html>"
			elif first and first.getState() == State.COMPLETED and st.getState() == State.CREATED and player.getLevel() >= 76 :
				htmltext = "32114-01.htm"
			elif cond == 0 :
				htmltext = "32114-00.htm"
			elif cond == 1 :
				htmltext = "32114-07.htm"
			elif cond == 2 :
				htmltext = "32114-10.htm"
			elif cond >= 3 and cond < 8:
				htmltext = "32114-11.htm"
			elif cond == 8 :
				st.addExpAndSp(859195,86603)
				st.unset("cond")
				st.unset("pilar1")
				st.unset("pilar2")
				st.unset("pilar3")
				st.setState(State.COMPLETED)
				st.exitQuest(False)
				st.playSound("ItemSound.quest_finish")
				htmltext = "32114-12.htm"
		elif npcId == KARAKAWEI :
			if cond == 2 :
				htmltext = "32117-01.htm"
			elif cond == 3 :
				htmltext = "32117-09.htm"
			elif cond == 4 :
				st.takeItems(ORNITHOMIMUS_CLAW,-1)
				st.takeItems(DEINONYCHUS_BONE,-1)
				st.playSound("ItemSound.quest_middle")
				htmltext = "32117-10.htm"
			elif cond == 5 :
				htmltext = "32117-15.htm"
			elif cond == 6 or cond == 7 :
				htmltext = "32117-16.htm"
			elif cond == 8 :
				htmltext = "32117-17.htm"
		elif npcId == ULU_KAIMU :
			if cond == 5 :
				npc.doCast(SkillTable.getInstance().getInfo(5089,1))
				htmltext = "32119-01.htm"
			elif cond == 6 :
				htmltext = "32119-14.htm"
		elif npcId == BALU_KAIMU :
			if cond == 6 :
				npc.doCast(SkillTable.getInstance().getInfo(5089,1))
				htmltext = "32120-01.htm"
			elif cond == 7 :
				htmltext = "32120-16.htm"
		elif npcId == CHUTA_KAIMU :
			if cond == 7 :
				npc.doCast(SkillTable.getInstance().getInfo(5089,1))
				htmltext = "32121-01.htm"
			elif cond == 8 :
				htmltext = "32121-17.htm"
		return htmltext
Example #47
0
    def onTalk(self, npc, player):
        htmltext = "<html><body>目前沒有執行任務,或條件不符。</body></html>"
        st = player.getQuestState(qn)
        if not st: return htmltext
        id = st.getState()
        cond = st.getInt("cond")
        npcId = npc.getNpcId()

        if id == State.CREATED and npcId == CRONOS:
            if player.getLevel() < 45 and (st.getQuestItemsCount(3500)
                                           or st.getQuestItemsCount(3501)
                                           or st.getQuestItemsCount(3502)):
                st.exitQuest(1)
                htmltext = "30610-01.htm"
            elif player.getLevel() >= 45 and (
                (st.getQuestItemsCount(3500) + st.getQuestItemsCount(3501) +
                 st.getQuestItemsCount(3502)) >= 2):
                st.exitQuest(1)
                htmltext = "30610-02.htm"
            elif player.getLevel() >= 45 and (
                (st.getQuestItemsCount(3500) + st.getQuestItemsCount(3501) +
                 st.getQuestItemsCount(3502)) == 1):
                if st.getQuestItemsCount(3500) == 1:
                    item = player.getInventory().getItemByItemId(3500)
                    if item.getEnchantLevel() < 55:
                        htmltext = "30610-03.htm"
                    else:
                        htmltext = "30610-04.htm"
                elif st.getQuestItemsCount(3501) == 1:
                    item = player.getInventory().getItemByItemId(3501)
                    if item.getEnchantLevel() < 55:
                        htmltext = "30610-03.htm"
                    else:
                        htmltext = "30610-04.htm"
                elif st.getQuestItemsCount(3502) == 1:
                    item = player.getInventory().getItemByItemId(3502)
                    if item.getEnchantLevel() < 55:
                        htmltext = "30610-03.htm"
                    else:
                        htmltext = "30610-04.htm"
        elif id == State.STARTED:
            if npcId == CRONOS:
                htmltext = "30610-07.htm"
            if npcId == MIMYU:
                if st.getInt("id") == 1:
                    st.set("id", "2")
                    htmltext = "30747-01.htm"
                elif st.getInt("id") == 2:
                    summon = player.getPet()
                    if summon:
                        if summon.getControlItem().getObjectId() == st.getInt(
                                "summonOid"):
                            htmltext = "30747-04.htm"
                        else:
                            htmltext = "30747-03.htm"
                    else:
                        htmltext = "30747-02.htm"
                elif st.getInt("id") == 0:
                    htmltext = "30747-07.htm"
                elif st.getInt("id") > 0 and st.getInt(
                        "id") < 15 and st.getQuestItemsCount(FT_LEAF) >= 1:
                    htmltext = "30747-11.htm"
                elif st.getInt("id") == 15 and st.getQuestItemsCount(
                        FT_LEAF) == 0:
                    summon = player.getPet()
                    if summon:
                        if summon.getControlItem().getObjectId() == st.getInt(
                                "summonOid"):
                            st.set("id", "16")
                            htmltext = "30747-13.htm"
                        else:
                            htmltext = "30747-14.htm"
                    else:
                        htmltext = "30747-12.htm"
                elif st.getInt("id") == 16:
                    summon = player.getPet()
                    if summon:
                        htmltext = "30747-15.htm"
                    elif (st.getQuestItemsCount(3500) +
                          st.getQuestItemsCount(3501) +
                          st.getQuestItemsCount(3502)) == 1:
                        if st.getQuestItemsCount(3500) == 1:
                            item = player.getInventory().getItemByItemId(3500)
                            if item.getObjectId() == st.getInt("summonOid"):
                                #EvolvePet(player,item,4422)
                                st.takeItems(3500, 1)
                                st.giveItems(4422, 1)
                                htmltext = "30747-16.htm"
                                st.exitQuest(1)
                                st.playSound("ItemSound.quest_finish")
                            else:
                                npc.setTarget(player)
                                skill = SkillTable.getInstance().getInfo(
                                    4167, 1)
                                if skill != None:
                                    skill.getEffects(npc, player)
                                htmltext = "30747-18.htm"
                        elif st.getQuestItemsCount(3501) == 1:
                            item = player.getInventory().getItemByItemId(3501)
                            if item.getObjectId() == st.getInt("summonOid"):
                                #EvolvePet(player,item,4423)
                                st.takeItems(3501, 1)
                                st.giveItems(4423, 1)
                                htmltext = "30747-16.htm"
                                st.exitQuest(1)
                                st.playSound("ItemSound.quest_finish")
                            else:
                                npc.setTarget(player)
                                skill = SkillTable.getInstance().getInfo(
                                    4167, 1)
                                if skill != None:
                                    skill.getEffects(npc, player)
                                htmltext = "30747-18.htm"
                        elif st.getQuestItemsCount(3502) == 1:
                            item = player.getInventory().getItemByItemId(3502)
                            if item.getObjectId() == st.getInt("summonOid"):
                                #EvolvePet(player,item,4424)
                                st.takeItems(3502, 1)
                                st.giveItems(4424, 1)
                                htmltext = "30747-16.htm"
                                st.exitQuest(1)
                                st.playSound("ItemSound.quest_finish")
                            else:
                                npc.setTarget(player)
                                skill = SkillTable.getInstance().getInfo(
                                    4167, 1)
                                if skill != None:
                                    skill.getEffects(npc, player)
                                htmltext = "30747-18.htm"
                        else:
                            htmltext = "30747-18.htm"
                    elif (st.getQuestItemsCount(3500) +
                          st.getQuestItemsCount(3501) +
                          st.getQuestItemsCount(3502)) >= 2:
                        htmltext = "30747-17.htm"
        return htmltext
Example #48
0
 def onAdvEvent (self, event, npc, player) :
   htmltext = event
   st = player.getQuestState(qn)
   if event == "learn":
     htmltext = ""
     st2 = player.getQuestState("136_MoreThanMeetsTheEye")
     if player.isSubClassActive():
       htmltext = "8005-04.htm"
     elif not st2 or st2.getState() != State.COMPLETED :
       htmltext = "8005-03.htm"
     else:
       j=0
       for i in SKILLITEMS:
         j+=st.getQuestItemsCount(i)
       if j > 0:
         self.onAcquireSkillList(npc,player)
       else:
         htmltext = "8005-04.htm"
   elif event == "cancel":
     if st.getQuestItemsCount(57) < 10000000:
       htmltext = "8005-07.htm"
     elif player.getSubClasses().size() == 0:
       htmltext = "8005-03.htm"
     elif player.isSubClassActive():
       htmltext = "8005-04.htm"
     else:
       activeCertifications = 0
       for var in QUESTVARSITEMS:
         for i in range(Config.MAX_SUBCLASS):
           qvar = st.getGlobalQuestVar(var+str(i+1))
           if qvar.endswith(";") :
             activeCertifications += 1
           elif qvar != "" and qvar != "0" :
             activeCertifications += 1
       if activeCertifications == 0:
         htmltext = "8005-08.htm"
       else:
         for var in QUESTVARSITEMS:
           for i in range(Config.MAX_SUBCLASS):
             qvar = st.getGlobalQuestVar(var+str(i+1))
             if qvar.endswith(";"):
               skill = SkillTable.getInstance().getInfo(int(qvar.replace(";","")), 1)
               if skill:
                 qvar = st.getGlobalQuestVar(var+str(i+1))
                 skillId = int(qvar.replace(";",""))
                 skillLevel = player.getSkillLevel(skillId)
                 player.removeSkill(skill,skillLevel)
                 st.saveGlobalQuestVar(var+str(i+1), "0")
             elif qvar != "" and qvar != "0" :
               Item = player.getInventory().getItemByObjectId(int(qvar))
               if Item :
                 player.destroyItem(qn, int(qvar), 1, player, 0)
               else :
                 Item = player.getWarehouse().getItemByObjectId(int(qvar))
                 if Item :
                   print "Somehow " + player.getName() + " put certification book into warehouse!"
                   player.getWarehouse().destroyItem(qn, Item, 1, player, None)
                 else:
                   print "Somehow " + player.getName() + " his/her delete certification book!"
               st.saveGlobalQuestVar(var+str(i+1), "0")
         st.takeItems(57,10000000)
         htmltext = "8005-09.htm"
         player.sendSkillList()
   return htmltext
Example #49
0
	def onAdvEvent(self, event, npc, player):
		#檢測轉生條件
		def check_rebirth_requirement(player):
			#檢測轉生要求等級
			if player.getLevel() < requireLevel: return False
			st = player.getQuestState(qn)
			#檢測轉生要求道具及數量
			for id, count in requireItem:
				if st.getQuestItemsCount(id) < count: return False
			#檢測轉生次數
			if st.getInt('times') >= maxRebirthTimes: return False
			#限制副職業不能轉生
			if player.isSubClassActive(): return False
			#檢測素質等級不能多於51
			sixStatId = st.getInt('newSixStat')
			if player.getSkillLevel(sixStatId) >= 51: return False
			#全部檢測通過
			return True
		#執行轉生
		def doRebirth(player):
			st = player.getQuestState(qn)
			#扣除道具
			for id, count in requireItem:
				st.takeItems(id, count)
			#降等
			player.removeExpAndSp(player.getExp() - ExperienceTable.getInstance().getExpForLevel(levelAfterRebirth), player.getSp())
			#記錄轉生次數
			st.set('times', str(st.getInt('times')+1))
			#移除技能
			for i in player.getAllSkills():
				if i.getId() not in sixStatSkills:
					if i.getId() not in remove_skill_blacklist:
						player.removeSkill(i)
			#轉種族
			newClass = st.getInt('newClass')
			st.getPlayer().setClassId(newClass)
			if player.isSubClassActive():
				player.getSubClasses().get(player.getClassIndex()).setClassId(player.getActiveClass())
			else:
				player.setBaseClass(player.getActiveClass())
			#st.getPlayer().setBaseClass(newClass)
			#st.getPlayer().setActiveClass(newClass)
			player.broadcastUserInfo()
			player.rewardSkills()
			player.sendSkillList()
			#player.stopAllToggles()
			#player.broadcastUserInfo()
			#變身..用作暫時解決轉種族後人物怪怪的問題
			#變身 瑪瑙獸 ID 617
			skillId = 617
			skillLevel = 1
			skill = SkillTable.getInstance().getInfo(skillId, skillLevel)
			if skill:
				skill.getEffects(player, player)
				#5秒後解除變身
				st.startQuestTimer('removeAllEffects', 5000)
				#player.untransform()
			#發道具獎勵
			for id, count in rewardItem:
				st.giveItems(id, count)
			#發素質獎勵
			if self.getFreeRebirthPoint(player) > 0:
				skillId = st.getInt('newSixStat')
				skillLevel = max(player.getSkillLevel(skillId), 1)
				player.addSkill(SkillTable.getInstance().getInfo(skillId, skillLevel + 1), True)
			return
		try:
			nEvent = int(event)
		except:
			nEvent = -1
		#顯示 轉生狀態畫面
		if event == 'request_info':
			return 'info.htm'
		#執行重設轉生素質
		elif event == 'request_reset_sixstat':
			#移除六大素質技能
			for i in player.getAllSkills():
				if i.getId() in sixStatSkills:
					player.removeSkill(i)
			return 'info.htm'
		#顯示設定轉生素質獎勵對話
		elif event == 'request_set_sixstat':
			return 'setSixStat.htm'
		#顯示 選擇新種族畫面
		elif event == 'request_choice_class':
			return 'choiceClass.htm'
		#記錄 新種族 及 下一步
		elif nEvent in baseClassID:
			st = player.getQuestState(qn)
			#記錄新種族
			st.set('newClass', event)
			return "choiceSixStat.htm"
		#記錄 轉生素質獎勵 及 下一步
		elif nEvent in sixStatSkills:
			st = player.getQuestState(qn)
			#記錄新素質要求
			st.set('newSixStat', event)
			return "confirm.htm"
		#確定要求轉生
		elif event == "request_rebirth":
			if check_rebirth_requirement(player):
				doRebirth(player)
				return "rebirth_ok.htm"
			else:
				return "rebirth_fail.htm"
		#移除所有狀態
		elif event == 'removeAllEffects':
			for e in player.getAllEffects():
				e.exit()
		#設定六大素質
		elif event.split()[0] == 'require_sixstat_add':
			try:
				c, n, v = event.split()
				v = max(int(v), 0)
				i = sixStatName.index(n)
			except:
				print qn + ":錯誤 event:" + event
				return ""
			newV = max(player.getSkillLevel(sixStatSkills[i]), 1) + v
			needPoint = v
			if needPoint == 0 or newV >= 51 or self.getFreeRebirthPoint(player) < needPoint or player.isSubClassActive():
				return "setSixStatFail.htm"
			else:
				skillId = sixStatSkills[i]
				skillLevel = newV
				player.addSkill(SkillTable.getInstance().getInfo(skillId, skillLevel), True)
			return "info.htm"
		else:
			print qn + ":不明的要求:" + event
			return ""
		return