#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
#-------------------------------------------------------------------------------  
 | 
#  
 | 
#-------------------------------------------------------------------------------  
 | 
#  
 | 
##@package Skill.GameBuffs.Buff_4012  
 | 
#  
 | 
# @todo:Ó°ÏìÍæ¼Ò״̬Ч¹û  
 | 
# @author hxp  
 | 
# @date 2015-3-4  
 | 
# @version 1.0  
 | 
#  
 | 
# ÏêϸÃèÊö: Ó°ÏìÍæ¼Ò״̬Ч¹û  
 | 
#  
 | 
#---------------------------------------------------------------------  
 | 
"""Version = 2015-3-4 20:00"""  
 | 
  
 | 
import PlayerControl  
 | 
import ChConfig  
 | 
import PassiveBuffEffMng  
 | 
import IPY_GameWorld  
 | 
import GameObj  
 | 
import GameWorld  
 | 
import SkillCommon  
 | 
  
 | 
## Ìí¼ÓBUFFºóµÄÂß¼  
 | 
#  @param None  
 | 
#  @return None  
 | 
def DoAddBuffOver(curObj, addBuff, curEffect, tick, buffOwner):  
 | 
    stateType = curEffect.GetEffectValue(0)  
 | 
    GameObj.SetPyPlayerState(curObj, stateType, 1)  
 | 
      
 | 
    curObj.SetDict("CurPyPlayerState", stateType)  
 | 
    PassiveBuffEffMng.OnPassiveSkillTrigger(curObj, None, None, ChConfig.TriggerType_BuffState, tick)  
 | 
      
 | 
    buffOwner = SkillCommon.GetBuffOwner(addBuff)  
 | 
    if buffOwner:  
 | 
        PassiveBuffEffMng.OnPassiveSkillTrigger(buffOwner, curObj, None, ChConfig.TriggerType_TagBuffState, tick)  
 | 
      
 | 
    return  
 | 
  
 | 
  
 | 
## BUFFÏûʧºó  
 | 
#  @param None  
 | 
#  @return None  
 | 
def OnBuffDisappear(curObj, curSkill, curBuff, curEffect, tick):  
 | 
  
 | 
    stateType = curEffect.GetEffectValue(0)  
 | 
    if CanDelStateEffect(curObj, ChConfig.Def_Skill_Effect_BuffState, stateType):  
 | 
        GameObj.SetPyPlayerState(curObj, stateType, 0)  
 | 
        GameWorld.DebugLog("È¡ÏûÓ°ÏìÍæ¼Ò״̬Ч¹û---%s - %s"%(curObj.GetID(), stateType))  
 | 
    return  
 | 
      
 | 
      
 | 
def OnBuffDisappearEx(curObj, curSkill, curBuff, curEffect, tick):  
 | 
  
 | 
    stateType = curEffect.GetEffectValue(0)  
 | 
    if CanDelStateEffect(curObj, ChConfig.Def_Skill_Effect_BuffState, stateType):  
 | 
        GameObj.SetPyPlayerState(curObj, stateType, 0)  
 | 
        GameWorld.DebugLog("È¡ÏûÓ°ÏìÍæ¼Ò״̬Ч¹û---%s - %s"%(curObj.GetID(), stateType))  
 | 
    return  
 | 
      
 | 
  
 | 
# ´óÓÚµÈÓÚ2¸ö״̬ Ôò²»ÇåÀí״̬  
 | 
def CanDelStateEffect(curObj, effectID, stateType):  
 | 
    cnt = 0  
 | 
    for buffType in xrange(IPY_GameWorld.bfBuff, IPY_GameWorld.btBufMax):  
 | 
        if buffType in ChConfig.Def_BuffType_OnlyPlayer:  
 | 
            continue  
 | 
          
 | 
        buffTuple = SkillCommon.GetBuffManagerByBuffType(curObj, buffType)  
 | 
        #ͨ¹ýÀàÐÍ»ñȡĿ±êµÄbuff¹ÜÀíÆ÷Ϊ¿Õ£¬ÔòÌø³ö  
 | 
        if buffTuple == ():  
 | 
            continue  
 | 
      
 | 
        buffManager = buffTuple[0]  
 | 
          
 | 
        for i in range(buffManager.GetEffectCount()):  
 | 
            effect = buffManager.GetEffect(i)  
 | 
            if not effect:  
 | 
                continue  
 | 
            if effect.GetEffectID() != effectID:  
 | 
                continue  
 | 
              
 | 
            if effect.GetEffectValue(0) == stateType:  
 | 
                cnt += 1  
 | 
            if cnt >= 2:  
 | 
                return False  
 | 
          
 | 
    return True  
 |