#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
#  
 | 
# @todo: buffÖй¥»÷´¥·¢¼¼ÄÜ, ¸½¼ÓÅжϵ¥´Î״̬²»Öظ´´¥·¢  
 | 
#  
 | 
# @author: Alee  
 | 
# @date 2017-12-9 ÏÂÎç09:41:44  
 | 
# @version 1.0  
 | 
#  
 | 
# @note: ¹¥»÷ºóbuff´¥·¢Ð¼¼ÄÜ£¬ÈçÕ½ÕùѪÆÇ£ºÃ¿¸ô40Ãë´¥·¢£¬5ÃëÄÚÍæ¼Òÿ´Î¹¥»÷Ä¿±êÓÐ20%¼¸Âʳ°·í¶Ô·½1.5Ã루µ¥´Î״̬²»Öظ´´¥·¢£©  
 | 
#  
 | 
#---------------------------------------------------------------------  
 | 
  
 | 
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(onlySkillID)  
 | 
        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  
 | 
  
 |