| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #  | 
| ##@package  | 
| #  | 
| # @todo: ¼õËÙרÓã¬ÊÜÊôÐÔÓ°ÏìÈç·ûÎÄ  | 
| #  | 
| # @author: Alee  | 
| # @date 2019-5-8 ÏÂÎç02:55:40  | 
| # @version 1.0  | 
| #  | 
| # @note:   | 
| #  | 
|   | 
| #------------------------------------------------------------------------------   | 
| #µ¼Èë  | 
| import ChConfig  | 
| import PlayerControl  | 
| import IPY_GameWorld  | 
| #---------------------------------------------------------------------  | 
|   | 
| ## buff·ÇÏßÐÔ¼õÉÙÊôÐÔ  | 
| #  @param defender Buff³ÐÊÜÕß  | 
| #  @param curEffect ¼¼ÄÜЧ¹û  | 
| #  @param calcDict ¼¼ÄÜЧ¹ûÀÛ¼Ó×Ü±í  | 
| #  @return None  | 
| def OnCalcBuffEx(defender, curEffect, calcDict, curBuff):  | 
|       | 
|     effect = curEffect.GetEffectValue(0)  | 
|     if curBuff and curBuff.GetLayer():  | 
|         # ²ã¼¶µþ¼ÓЧ¹û  | 
|         effect = effect*curBuff.GetLayer()  | 
|   | 
|     effect += curBuff.GetValue()  | 
|     calcDict[ChConfig.TYPE_Calc_AttrSpeed] = calcDict.get(ChConfig.TYPE_Calc_AttrSpeed, 0) - effect  | 
|           | 
|     return   | 
|   | 
|   | 
| ## ·µ»ØbuffÀàÐÍ£¬ÏßÐÔÓë·ñ  | 
| #  @param   | 
| #  @return None  | 
| #  @remarks º¯ÊýÏêϸ˵Ã÷.    | 
| def GetCalcType():  | 
|     return ChConfig.TYPE_NoLinear  | 
|   | 
|   | 
| ##¼ÆËãÔöǿֵ  | 
| # @param attacker ¹¥»÷ÕßʵÀý  | 
| # @param curSkill ¼¼ÄÜʵÀý  | 
| # @param curEffect µ±Ç°¼¼ÄÜЧ¹û1  | 
| # @return ×ÜÖµ  | 
| def CalcBuffValue(attacker, defender, curSkill, changeBuffValueDict):  | 
|       | 
|     return [PlayerControl.GetSubSpeedPer(attacker)]  |