| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #  | 
| ##@package  | 
| #  | 
| # @todo: ³ÖÐø¼õÒæ¸ù¾ÝÖµ¼Ó³É£¬°Ù·Ö±È£¨·ÇÏßÐÔ£©  | 
| #  | 
| # @author: Alee  | 
| # @date 2019-4-29 ÏÂÎç02:32:15  | 
| # @version 1.0  | 
| #  | 
| # @note:   | 
| #  | 
| #---------------------------------------------------------------------  | 
| #µ¼Èë  | 
| import PlayerControl  | 
| import NPCCommon  | 
| import IPY_GameWorld  | 
| import GameWorld  | 
| import ChConfig  | 
| #---------------------------------------------------------------------  | 
| #È«¾Ö±äÁ¿  | 
| #---------------------------------------------------------------------  | 
|   | 
| #---------------------------------------------------------------------  | 
| def OnCalcBuffEx(defender, curEffect, calcDict, curBuff):  | 
|       | 
|     attrType = curEffect.GetEffectValue(0)  | 
|     value = curEffect.GetEffectValue(1)*curBuff.GetValue()  | 
|     calcDict[attrType] = calcDict.get(attrType, 0) - value  | 
|           | 
|     return   | 
|   | 
|   | 
| ## ·µ»ØbuffÀàÐÍ£¬ÏßÐÔÓë·ñ  | 
| #  @param   | 
| #  @return None  | 
| #  @remarks º¯ÊýÏêϸ˵Ã÷.    | 
| def GetCalcType():  | 
|     return ChConfig.TYPE_NoLinear  | 
|   | 
| def ProcessBuff(defender, curBuff, curEffect, processBuffTick, tick):  | 
|     # ´¥·¢¼Ó³É ÊôÐÔˢР | 
|     value = curBuff.GetValue()  | 
|     if value >= curEffect.GetEffectValue(2):  | 
|         return  | 
|       | 
|     curBuff.SetValue(value+1)  | 
|     #Ë¢ÐÂÊôÐÔ  | 
|     curObjType = defender.GetGameObjType()  | 
|     #Íæ¼Ò  | 
|     if curObjType == IPY_GameWorld.gotPlayer:  | 
|         #Ë¢ÐÂÍæ¼ÒÊôÐÔ  | 
|         playerControl = PlayerControl.PlayerControl(defender)  | 
|         #playerControl.CalcPassiveBuffAttr()  | 
|         playerControl.RefreshPlayerAttrByBuff()  | 
|     #NPC  | 
|     elif curObjType == IPY_GameWorld.gotNPC:  | 
|         npcControl = NPCCommon.NPCControl(defender)  | 
|         npcControl.RefreshNPCAttrState()  | 
|     return  | 
|   |