#!/usr/bin/python # -*- coding: GBK -*- # # @todo: buffÖй¥»÷´¥·¢¼¼ÄÜ, ¸½¼ÓÅжϵ¥´Î״̬²»Öظ´´¥·¢ # # @author: Alee # @date 2017-12-9 ÏÂÎç09:41:44 # @version 1.0 # # @note: ¹¥»÷ºóbuff´¥·¢Ð¼¼ÄÜ£¬ÈçÕ½ÕùѪÆÇ£ºÃ¿¸ô40Ãë´¥·¢£¬5ÃëÄÚÍæ¼Òÿ´Î¹¥»÷Ä¿±êÓÐ20%¼¸Âʳ°·í¶Ô·½1.5Ã루µ¥´Î״̬²»Öظ´´¥·¢£© # #--------------------------------------------------------------------- import ChConfig import GameWorld import SkillCommon import BuffSkill def CheckCanHappen(attacker, defender, passiveEffect, skillID, **skillkwargs): onlySkillID = passiveEffect.GetEffectValue(2) # µ¥×´Ì¬²»¿ÉÖØ¸´µÄBUFFID, ²ãÊý¾ö¶¨´¥·¢´ÎÊý if onlySkillID: if not defender: return False # Ä¿±êÉíÉϲéÕÒ findSkill = GameWorld.GetGameData().GetSkillBySkillID(onlySkillID) if not findSkill: return False buffType = SkillCommon.GetBuffType(findSkill) buffTuple = SkillCommon.GetBuffManagerByBuffType(defender, buffType) if buffTuple == (): return False buffManager = buffTuple[0] findBuff = buffManager.FindBuff(onlySkillID) if findBuff and findBuff.GetOwnerID() == attacker.GetID(): # µ¥×´Ì¬²»¿ÉÖØ¸´µÄBUFFID, ²ãÊý¾ö¶¨´¥·¢´ÎÊý if findBuff.GetLayer() >= BuffSkill.GetBuffMaxLayer(findSkill): return False return GameWorld.CanHappen(passiveEffect.GetEffectValue(0)) def GetSkillData(passiveEffect): skillID = passiveEffect.GetEffectValue(1) return GameWorld.GetGameData().GetSkillBySkillID(skillID) def AfterUsePassiveSkill(attacker, defender, passiveEffect, tick): skillID = passiveEffect.GetEffectValue(2) # µ¥×´Ì¬²»¿ÉÖØ¸´µÄBUFFID if not skillID: return addSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID) if not addSkill: return buffType = SkillCommon.GetBuffType(addSkill) BuffSkill.AddBuffNoRefreshState(defender, buffType, addSkill, tick, [], attacker) return