| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #  | 
| # @todo: buff¹¥»÷¼õ²ã  | 
| #  | 
| # @author: Alee  | 
| # @date 2018-1-30 ÏÂÎç05:11:45  | 
| # @version 1.0  | 
| #  | 
| # @note:   | 
| #  | 
| #---------------------------------------------------------------------  | 
|   | 
| import ChConfig  | 
| import GameWorld  | 
| import SkillCommon  | 
| import BuffSkill  | 
| import SkillShell  | 
| import IPY_GameWorld  | 
|   | 
| def CheckCanHappen(attacker, defender, passiveEffect, skillID, **skillkwargs):  | 
|     # ÏÈÅжϸÅÂÊ  | 
|     rate = passiveEffect.GetEffectValue(0)  | 
|     if rate and not GameWorld.CanHappen(rate):  | 
|         return False  | 
|       | 
|     # ¹ØÁª¼¼ÄÜ  | 
|     checkSkillID = passiveEffect.GetEffectValue(2)  | 
|     if checkSkillID:  | 
|         useSkill = skillkwargs.get("useSkill", None)  | 
|         if not useSkill:  | 
|             return False  | 
|         if useSkill.GetSkillTypeID() != checkSkillID:  | 
|             return False  | 
|        | 
|     curSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID)  | 
|     if not curSkill:  | 
|         return False  | 
|       | 
|     buffType = SkillCommon.GetBuffType(curSkill)  | 
|     buffTuple = SkillCommon.GetBuffManagerByBuffType(attacker, buffType)  | 
|     #ͨ¹ýÀàÐÍ»ñȡĿ±êµÄbuff¹ÜÀíÆ÷Ϊ¿Õ£¬ÔòÌø³ö  | 
|     if buffTuple == ():  | 
|         return False  | 
|       | 
|     buffManager = buffTuple[0]  | 
|     buff = buffManager.FindBuff(curSkill.GetSkillTypeID())  | 
|     if not buff:  | 
|         return False  | 
|   | 
|     if buff.GetLayer() <= 0:  | 
|         return False  | 
|     triggerSkillID = passiveEffect.GetEffectValue(1)  | 
|       | 
|     BuffSkill.SetBuffLayer(attacker, buff, buff.GetLayer()-1, skillTypeID=curSkill.GetSkillTypeID())  | 
|       | 
|     if triggerSkillID and attacker.GetGameObjType() == IPY_GameWorld.gotPlayer:  | 
|         skillManager = attacker.GetSkillManager()  | 
|         #»ñµÃ¼¼ÄÜ  | 
|         triggerSkill = skillManager.FindSkillBySkillTypeID(triggerSkillID)  | 
|         if triggerSkill:  | 
|             #Íæ¼Ò¼¼ÄÜ»áÉý¼¶  | 
|             SkillShell.UsePassiveTriggerSkill(attacker, triggerSkill, defender, GameWorld.GetGameWorld().GetTick(), isEnhanceSkill = True)  | 
|         else:  | 
|             triggerSkill = GameWorld.GetGameData().GetSkillBySkillID(triggerSkillID)  | 
|             if triggerSkill:  | 
|                 SkillShell.UsePassiveTriggerSkill(attacker, triggerSkill, defender, GameWorld.GetGameWorld().GetTick(), isEnhanceSkill = True)  | 
|     return True  | 
|   | 
|   | 
| def GetValue(attacker, defender, passiveEffect):  | 
|     return 0  |