#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # #------------------------------------------------------------------------------- # ##@package SkillModule_12 # # @todo: Ö¸¶¨Ä¿±êÓнǶȵÄȺÌ巶Χ¹¥»÷Ä£°å # @author Alee # @date 2010-12-31 17:43 # @version 1.3 # # ÏêϸÃèÊö: Ö¸¶¨Ä¿±êÓнǶȵÄȺÌ巶Χ¹¥»÷Ä£°å # @change: "2011-1-11 17:30" Alee ²ÎÊý´íÎó,×ø±êÆðµãºÍË¥¼õ # @change: "2011-04-27 15:50" Alee ×Öµäȡֵ·À·¶ # @change: "2013-08-15 19:00" Alee ²¹×ãÄ¿±êÒÅ©µã # #------------------------------------------------------------------------------ """Version = 2013-08-15 19:00""" #------------------------------------------------------------------------------ #µ¼Èë import ChConfig import BaseAttack import GameWorld #--------------------------------------------------------------------- ##Ö¸¶¨Ä¿±êÓнǶȵÄȺÌ巶Χ¹¥»÷Ä£°å # @param attacker ¹¥»÷ÕßʵÀý # @param defender ·ÀÊØÕßʵÀý # @param curSkill ¼¼ÄÜʵÀý # @param tagRoundPosX ÇøÓò×ø±êX # @param tagRoundPosY ÇøÓò×ø±êY # @param isEnhanceSkill ÊÇ·ñΪ¸½¼Ó¼¼ÄÜ # @param tick ʱ¼ä´Á # @return ·µ»ØÖµÎªÕæ, Êͷųɹ¦ # @remarks Ö¸¶¨Ä¿±êÓнǶȵÄȺÌ巶Χ¹¥»÷Ä£°å def UseSkill(attacker, defender, curSkill, tagRoundPosX, tagRoundPosY, isEnhanceSkill, tick): skillEffect = curSkill.GetEffect(0) skillPer = skillEffect.GetEffectValue(0) skillEnhance = skillEffect.GetEffectValue(1) #---¹¥»÷±éÀúÆðµãÓÅÏȼ¶ 1.ÕÒÖ¸¶¨µã 2.·ÀÊØÕߣ¨°üÀ¨×Ô¼º£©--- if tagRoundPosX == -1 or tagRoundPosY == -1: if not defender: GameWorld.ErrLog("SkillModule_12 not defender!") return #ÆðµãÊǹ¥»÷·½£¬»¹ÊÇÊܺ¦·½£¬»¹ÊÇµãµØ tagRoundPosX = defender.GetPosX() tagRoundPosY = defender.GetPosY() attackRad = curSkill.GetAtkRadius() attackMatrix = ChConfig.Def_Angle_MatrixDict.get(attackRad) if attackMatrix == None: GameWorld.ErrLog("ÀàÐÍ´íÎó(%s), ÓнǶȵĹ¥»÷¾ØÕó"%attackRad) return False srcPosX, srcPosY = attacker.GetPosX(), attacker.GetPosY() skillMatrix = GameWorld.MatrixCircle(attackMatrix, attacker.GetPosX(), attacker.GetPosY(), tagRoundPosX, tagRoundPosY) #¼ÆËãÆ«ÒÆ²úÉú¶µã£¬²¹×ãÄ¿±êµã desDist = GameWorld.GetDist(srcPosX, srcPosY, tagRoundPosX, tagRoundPosY) atkDist = curSkill.GetAtkDist() if atkDist != 0 and desDist <= atkDist: insertIndex = int(desDist/float(atkDist)*len(skillMatrix)) if (tagRoundPosX, tagRoundPosY) not in skillMatrix: skillMatrix.insert(insertIndex, (tagRoundPosX, tagRoundPosY)) #ʹÓü¼ÄÜ return BaseAttack.AttackerSkillAttackArea(attacker, defender, attacker.GetPosX(), attacker.GetPosY(), curSkill, skillPer, skillEnhance, tick, [], isEnhanceSkill, skillMatrix)