| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #  | 
| # @todo: ±»¹¥»÷xx%¼¸ÂÊ´¥·¢¼¼ÄÜ  | 
| #  | 
| # @author: Alee  | 
| # @date 2017-12-9 ÏÂÎç09:41:44  | 
| # @version 1.0  | 
| #  | 
| # @note:   | 
| #  | 
| #---------------------------------------------------------------------  | 
|   | 
| import ChConfig  | 
| import GameWorld  | 
| import SkillCommon  | 
| import BuffSkill  | 
|   | 
| def CheckCanHappen(attacker, defender, passiveEffect, skillID, **skillkwargs):  | 
|     onlySkillID = passiveEffect.GetEffectValue(2) # µ¥×´Ì¬²»¿ÉÖØ¸´µÄBUFFID, ²ãÊý¾ö¶¨´¥·¢´ÎÊý  | 
|     if onlySkillID:  | 
|         if not defender:  | 
|             return False  | 
|         # Ä¿±êÉíÉϲéÕÒ  | 
|         findSkill = GameWorld.GetGameData().GetSkillBySkillID(passiveEffect.GetEffectValue(2))  | 
|         if not findSkill:  | 
|             return False  | 
|           | 
|         buffType = SkillCommon.GetBuffType(findSkill)  | 
|         buffTuple = SkillCommon.GetBuffManagerByBuffType(defender, buffType)  | 
|         if buffTuple == ():  | 
|             return False  | 
|           | 
|         buffManager = buffTuple[0]  | 
|         findBuff = buffManager.FindBuff(onlySkillID)  | 
|         if findBuff and findBuff.GetOwnerID() == attacker.GetID():  | 
|             # µ¥×´Ì¬²»¿ÉÖØ¸´µÄBUFFID, ²ãÊý¾ö¶¨´¥·¢´ÎÊý  | 
|             if findBuff.GetLayer() >= BuffSkill.GetBuffMaxLayer(findSkill):  | 
|                 return False  | 
|   | 
|     return GameWorld.CanHappen(passiveEffect.GetEffectValue(0))  | 
|   | 
|   | 
| def GetSkillData(passiveEffect):  | 
|     skillID = passiveEffect.GetEffectValue(1)  | 
|     return GameWorld.GetGameData().GetSkillBySkillID(skillID)  | 
|   | 
| def AfterUsePassiveSkill(attacker, defender, passiveEffect, tick):  | 
|     skillID = passiveEffect.GetEffectValue(2) # µ¥×´Ì¬²»¿ÉÖØ¸´µÄBUFFID  | 
|     if not skillID:  | 
|         return  | 
|     addSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID)  | 
|     if not addSkill:  | 
|         return  | 
|     buffType = SkillCommon.GetBuffType(addSkill)  | 
|     BuffSkill.AddBuffNoRefreshState(defender, buffType, addSkill, tick, [], attacker)  | 
|     return  | 
|   |