local BattleConst = require "app/module/battle/battle_const" local BattleBuffSpecial = {} local BUFF_NAME = BattleConst.BUFF_NAME local ATTR_NAME = BattleConst.ATTR_NAM local function _addSkillOn(unitComp, buff, target, buffEffect) return target:addSkill(buff:getEffectNum()) end local function _addSkillOff(buffSender, target, buff, buffEffect) if buffEffect and buffEffect.result > 0 then target:removeSkill(buff:getEffectNum(), buffEffect.result) end end local function _skillFireTimesOn(unitComp, buff, target, buffEffect) target.unitEntity:addSkillExtraUseTimes(buff:getEffectNum(), 1) return 1 end local function _skillFireTimesOff(buffSender, target, buff, buffEffect) target.unitEntity:addSkillExtraUseTimes(buff:getEffectNum(), -1) return 1 end local _handleOn = { [BUFF_NAME.ADD_SKILL] = _addSkillOn, -- 添加技能 [BUFF_NAME.SKILL_FIRE_TIMES] = _skillFireTimesOn, -- 技能额外使用次数 } local _handleOff = { [BUFF_NAME.ADD_SKILL] = _addSkillOff, -- 添加技能 [BUFF_NAME.SKILL_FIRE_TIMES] = _skillFireTimesOff, -- 技能额外使用次数 } -- 特殊buff添加时 function BattleBuffSpecial.specialBuffOn(unitComp, buff, target, buffEffect) local func = _handleOn[buff:getName()] if func then return func(unitComp, buff, target, buffEffect) end return 0 end -- 特殊buff移除时 function BattleBuffSpecial.specialBuffOff(buffSender, target, buff, buffEffect) local func = _handleOff[buff:getName()] if func then func(buffSender, target, buff, buffEffect) end end return BattleBuffSpecial