| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #  | 
| ##@package  | 
| #  | 
| # @todo: Á½¸öÈËÖ®¼äÓÐÒ»ÌõÌØÐ§Á¬½Ó£¬ÅäºÏ9999ÓÃÓÚÅжϾàÀë  | 
| #  | 
| # @author: Alee  | 
| # @date 2019-5-6 ÏÂÎç04:30:33  | 
| # @version 1.0  | 
| #  | 
| # @note:   | 
| #  | 
| #---------------------------------------------------------------------  | 
| #µ¼Èë  | 
| import SkillCommon  | 
| import GameWorld  | 
| import ChConfig  | 
| import PlayerControl  | 
|   | 
| def ProcessBuff(defender, curBuff, curEffect, processBuffTick, tick):  | 
|     buffOwner = SkillCommon.GetBuffOwner(curBuff)  | 
|       | 
|     if not buffOwner:  | 
|         curBuff.SetRemainTime(0)  | 
|         return  | 
|       | 
|     if GameWorld.GetDistEx(defender.GetPosX(), defender.GetPosY(), buffOwner.GetPosX(), buffOwner.GetPosY()) > curEffect.GetEffectValue(0):  | 
|         curBuff.SetRemainTime(0)  | 
|         return      | 
|     return  | 
|   | 
|   | 
| def OnCalcBuffEx(defender, curEffect, calcDict, curBuff):  | 
|       | 
|     attrType = curEffect.GetEffectValue(1)  | 
|     value = curEffect.GetEffectValue(2) + curBuff.GetValue2()  | 
|     calcDict[attrType] = calcDict.get(attrType, 0) - value  | 
|           | 
|     return   | 
|   | 
| ## ·µ»ØbuffÀàÐÍ£¬ÏßÐÔÓë·ñ  | 
| #  @param   | 
| #  @return None  | 
| #  @remarks º¯ÊýÏêϸ˵Ã÷.    | 
| def GetCalcType():  | 
|     return ChConfig.TYPE_NoLinear  | 
|   | 
| ## Ìí¼ÓBUFFºóµÄÂß¼  | 
| #  @param None  | 
| #  @return None  | 
| def DoAddBuffOver(curObj, addBuff, curEffect, tick, buffOwner):  | 
|     if not buffOwner:  | 
|         return  | 
|     if curEffect.GetEffectValue(1) != ChConfig.TYPE_Calc_AttrSpeed:  | 
|         return  | 
|       | 
|     addBuff.SetValue2(PlayerControl.GetSubSpeedPer(buffOwner))  | 
|     return  | 
|   |