#!/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