#!/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  
 | 
  
 | 
def CheckCanHappen(attacker, defender, effect, tagSkill):  
 | 
    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())  
 | 
  
 | 
    # ¸ø¶Ô·½¼Óbuff  
 | 
    BuffSkill.DoAddBuff(defender, SkillCommon.GetBuffType(tagSkill), tagSkill,   
 | 
                        GameWorld.GetGameWorld().GetTick(), [], attacker, addForce = True)  
 | 
    return  
 | 
  
 |