--不动明王印记 BuDongSign = Buff:New() --压制 --初始化Buff,通过传入一些自定义参数控制成长相关的数值 function BuDongSign:SetData(...) -- self.atkType, --1 物理 2.魔法 -- self.ct, -- self.value1=... self.f1=... self.maxPro=0 -- 刷新排序等级 self.curDamage=0 self.sort = 4 end --初始化后调用一次 function BuDongSign:OnStart() self.curDamage = 0 --本回合最多能扣到多少比例的血条 self.maxPro=(self.target:GetRoleData(RoleDataName.Hp)/self.target:GetRoleData(RoleDataName.MaxHp))-self.f1 if self.maxPro<0 then self.maxPro=0 end local function onFinalBeDamage(damagingFunc, atkRole, damage, skill, dotType, bCrit, damageType,isDirect) -- 非直接伤害不免除 if not skill and not isDirect then return end --判断伤害是否能超出能扣除的最大伤害 local maxDamage =math.floor(self.target:GetRoleData(RoleDataName.Hp)-(self.target:GetRoleData(RoleDataName.MaxHp) * self.maxPro)) self.curDamage=damage if self.curDamage > maxDamage then -- 计算免除的伤害值 local md = self.curDamage - maxDamage if md > damage then md = damage end if damagingFunc then damagingFunc(md) end end end self.target.Event:AddEvent(BattleEventName.CheckLiZhanZhiQu, onFinalBeDamage,nil,nil,self.target) local function onRoundChange() self.curDamage = 0 --本回合最多能扣到多少比例的血条 self.maxPro=(self.target:GetRoleData(RoleDataName.Hp)/self.target:GetRoleData(RoleDataName.MaxHp))-self.f1 if self.maxPro<0 then self.maxPro=0 end --LogError("本回合最多能扣到的比例=="..maxPro) end BattleLogic.Event:AddEvent(BattleEventName.BattleRoundChange, onRoundChange,nil,nil,self.target) end --间隔N帧触发,返回true时表示继续触发,返回false立刻触发OnEnd function BuDongSign:OnTrigger() return true end --效果结束时调用一次 function BuDongSign:OnEnd() end --只有当cover字段为true时触发,返回true则被新效果覆盖 function BuDongSign:OnCover(newBuff) return true end return BuDongSign