#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
#  
 | 
# @todo: buff±©»÷¹¥»÷¼õ×ÔÉí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  
 | 
      
 | 
    FBSkillValid = passiveEffect.GetEffectValue(1)  
 | 
    if FBSkillValid == 0:  
 | 
        # 0 Îª Ö»ÓÐÖ÷¶¯·¨±¦¼¼Äܱ©»÷¿É´¥·¢  
 | 
        useSkill = skillkwargs.get("useSkill", None)  
 | 
        if not useSkill:  
 | 
            return False  
 | 
        if useSkill.GetFuncType() != ChConfig.Def_SkillFuncType_FbSkill:  
 | 
            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  
 | 
      
 | 
    BuffSkill.SetBuffLayer(attacker, buff, buff.GetLayer()-1, skillTypeID=curSkill.GetSkillTypeID())  
 | 
      
 | 
    return True  
 | 
  
 | 
  
 |