#!/usr/bin/python # -*- coding: GBK -*- # # ##@package SkillModule_25.py # # @todo:NPC NPCרÓà ÕÙ»½ÊÞ¼¼ÄÜÄ£°å # # @author jiang # @date 2012-07-13 # @version 1.2 # @note: # # @change: "2012-07-19 17:30" jiang DoLogic_NPC_UseSkill_SummonNPC²ÎÊýÐÞ¸Ä # @change: "2014-09-22 15:30" hxp Ôö¼Ó¿ÉÖ¸¶¨ÕÙ»½ÊÞ³öÏÖλÖÃΪÕÙ»½Õß½ÅÏ #------------------------------------------------------------------------------ """Version = 2014-09-22 15:30""" #------------------------------------------------------------------------------ # µ¼Èë import GameWorld import SkillCommon import BaseAttack import ChConfig #------------------------------------------------------------------------------ ## ÕÙ»½ÊÞ¼¼ÄÜÄ£°å # @param attacker ¹¥»÷ÕßʵÀý # @param defender ·ÀÊØÕßʵÀý # @param curSkill ¼¼ÄÜʵÀý # @param tagRoundPosX ÇøÓò×ø±êX # @param tagRoundPosY ÇøÓò×ø±êY # @param isEnhanceSkill ÊÇ·ñΪ¸½¼Ó¼¼ÄÜ # @param tick ʱ¼ä´Á # @return ·µ»ØÖµÎªÕæ, Êͷųɹ¦ def UseSkill(attacker, defender, curSkill, tagRoundPosX, tagRoundPosY, isEnhanceSkill, tick): curSummonID = curSkill.GetEffect(0).GetEffectValue(0) curSummonCount = curSkill.GetEffect(0).GetEffectValue(1) # µ¥´ÎÕÙ»½ÊýÁ¿ summonCountAll = curSkill.GetEffect(0).GetEffectValue(2) # ×ÜÕÙ»½ÊýÁ¿ if curSummonID <= 0 or curSummonCount <= 0: GameWorld.ErrLog("NPCʹÓü¼ÄÜ %s£¬ÕÙ»½ID»òÕßÊýÁ¿ÓÐÎó"%curSkill.GetSkillID()) return False maxAngryCount = attacker.GetNPCAngry().GetAngryCount() # Ô¤¾¯ÕÙ»½ if attacker.GetDictByKey(ChConfig.Def_NPC_Dict_SkillWarnSkillID) == curSkill.GetSkillID(): posCnt = attacker.GetDictByKey(ChConfig.Def_NPC_Dict_SkillWarnPosCnt) for i in xrange(posCnt): rebornPosX = attacker.GetDictByKey(ChConfig.Def_NPC_Dict_SkillWarnPosX % i) rebornPosY = attacker.GetDictByKey(ChConfig.Def_NPC_Dict_SkillWarnPosY % i) SkillCommon.DoLogic_NPC_UseSkill_SummonNPC(attacker, curSkill, curSummonID, summonCountAll, maxAngryCount, tick, True, curSkill.GetAtkRadius(), rebornPosX, rebornPosY) else: #ÕÙ»½ÊÞλÖÃÔÚ·ÀÊØÕß½ÅÏ if defender and attacker != defender: tagRoundPosX = defender.GetPosX() tagRoundPosY = defender.GetPosY() isUnderAttacker = curSkill.GetEffect(1).GetEffectValue(0) # ÊÇ·ñÕÙ»½ÔÚÕÙ»½Õß½ÅÏ if isUnderAttacker: tagRoundPosX = attacker.GetPosX() tagRoundPosY = attacker.GetPosY() #ÕÙ»½ for i in range(0, curSummonCount): SkillCommon.DoLogic_NPC_UseSkill_SummonNPC(attacker, curSkill, curSummonID, summonCountAll, maxAngryCount, tick, True, curSkill.GetAtkRadius(), tagRoundPosX, tagRoundPosY) return BaseAttack.DoSkillEx_AttackSucess(attacker, defender, curSkill, tick, isEnhanceSkill)