#!/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 import IPY_GameWorld def CheckCanHappen(attacker, defender, effect, tagSkill, **skillkwargs): 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()) if defender.GetGameObjType() != IPY_GameWorld.gotPlayer: # ²»·´µ¯NPC return # ¸ø¶Ô·½¼Óbuff BuffSkill.DoAddBuff(defender, SkillCommon.GetBuffType(tagSkill), tagSkill, GameWorld.GetGameWorld().GetTick(), [], attacker, addForce = True) return