| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #  | 
| # @todo: buffÖеÖÏûdebuff²¢ÇÒ·´Éädebuff£¬²ã¼¶¾ö¶¨´ÎÊý  | 
| #  | 
| # @author: Alee  | 
| # @date 2018-1-9 ÏÂÎç09:39:37  | 
| # @version 1.0  | 
| #  | 
| # @note:   | 
| #  | 
| #---------------------------------------------------------------------  | 
|   | 
| import ChConfig  | 
| import GameWorld  | 
| import SkillCommon  | 
| import BuffSkill  | 
| import IPY_GameWorld  | 
|   | 
| def CheckCanHappen(attacker, defender, effect, tagSkill, **skillkwargs):  | 
|     debuffState = effect.GetEffectValue(1)  | 
|     if debuffState and debuffState != SkillCommon.GetBuffStateType(tagSkill):  | 
|         return False  | 
|       | 
|     if effect.GetEffectValue(2):  | 
|         if SkillCommon.GetBuffType(tagSkill) != ChConfig.Def_SkillBuffList.get(effect.GetEffectValue(2)):  | 
|             return False  | 
|     if not effect.GetEffectValue(0):  | 
|         return True  | 
|     return GameWorld.CanHappen(effect.GetEffectValue(0))  | 
|       | 
| def DoLogic(attacker, defender, effect, tagSkill, skillID):  | 
|     # ·´Éädebuff  | 
|     if not defender:  | 
|         return  | 
|   | 
|     findSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID)  | 
|     if not findSkill:  | 
|         return  | 
|       | 
|     buffType = SkillCommon.GetBuffType(findSkill)  | 
|     buffTuple = SkillCommon.GetBuffManagerByBuffType(attacker, buffType)  | 
|     if buffTuple == ():  | 
|         return  | 
|       | 
|     buffManager = buffTuple[0]  | 
|     findBuff = buffManager.FindBuffEx(skillID)  | 
|     if not findBuff:  | 
|         return  | 
|       | 
|     BuffSkill.SetBuffLayer(attacker, findBuff, findBuff.GetLayer()-1, skillTypeID=findSkill.GetSkillTypeID())  | 
|     if defender.GetGameObjType() != IPY_GameWorld.gotPlayer:  | 
|         # ²»·´µ¯NPC  | 
|         return  | 
|   | 
|     # ¸ø¶Ô·½¼Óbuff  | 
|     BuffSkill.DoAddBuff(defender, SkillCommon.GetBuffType(tagSkill), tagSkill,   | 
|                         GameWorld.GetGameWorld().GetTick(), [], attacker, addForce = True)  | 
|     return  | 
|   |