| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #  | 
| # @todo: ÓнǶȵÄȺÌåbuff  | 
| #  | 
| # @author: Alee  | 
| # @date 2018-1-23 ÉÏÎç09:59:44  | 
| # @version 1.0  | 
| #  | 
| # @note:   | 
| #  | 
| #-------------------------------------------------------------------------------------------------------------  | 
| #µ¼Èë  | 
| import BaseAttack  | 
| import GameWorld  | 
| import ChConfig  | 
| #------------------------------------------------------------------------------   | 
|   | 
| def UseBuff(attacker, defender, curSkill, tick, tagRoundPosX, tagRoundPosY):  | 
|       | 
|     #---¹¥»÷±éÀúÆðµãÓÅÏȼ¶ 1.ÕÒÖ¸¶¨µã 2.·ÀÊØÕߣ¨°üÀ¨×Ô¼º£©---  | 
|     if tagRoundPosX == -1 or tagRoundPosY == -1:  | 
|         #ÆðµãÊǹ¥»÷·½£¬»¹ÊÇÊܺ¦·½£¬»¹ÊÇµãµØ  | 
|         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.SkillAddAreaBuff(attacker, defender, curSkill, attacker.GetPosX(),   | 
|                                        attacker.GetPosY(), tick, False, skillMatrix)  | 
|   |