From 6ef1d6c64302dddfa119a1ffa47e79a4c461d1ac Mon Sep 17 00:00:00 2001 From: wangzhenxing Date: Fri, 27 Aug 2021 18:02:50 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=88=98=E6=96=97=E3=80=91=3D=3D=3D?= =?UTF-8?q?=3D=3D=3D=3D=3D=3D=3D=3D=E8=A2=AB=E5=8A=A8115=20=20DOT=E7=B1=BB?= =?UTF-8?q?Buff=20=E6=B8=85=E9=99=A4=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../~Lua/Modules/Battle/Logic/Base/Buff.lua | 13 +++++++++++-- .../~Lua/Modules/Battle/Logic/Base/Passivity.lua | 7 ++++--- .../~Lua/Modules/Battle/Logic/Buff/DOT.lua | 4 +++- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Buff.lua b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Buff.lua index 8273577a6a..2bb99d0dc3 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Buff.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Buff.lua @@ -367,9 +367,18 @@ function BuffManager:PassUpdate() -- 当前轮释放的buff不结算 if buff.startRound ~= BattleLogic.GetCurRound() then buff.roundPass = buff.roundPass + 1 - if buff.roundPass >= buff.roundDuration then - buff.disperse = true + --如果是Dot类的buff 判断触发次数;其他的还按照之前的逻辑判断 by:wangzhenxing 2021/08/27 + if buff.triggerTime then + --现在按照 每回合都会触发来处理的;如果存在4回合触发2次的还需处理 by:wangzhenxing 2021/08/27 + if buff.triggerTime==buff.roundDuration then + buff.disperse = true + end + else + if buff.roundPass >= buff.roundDuration then + buff.disperse = true + end end + buff.target.Event:DispatchEvent(BattleEventName.BuffRoundChange, buff) end end diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Passivity.lua b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Passivity.lua index cdceec4e93..9df3dadf45 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Passivity.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Passivity.lua @@ -2118,10 +2118,13 @@ local passivityList = { local ct = args[4] -- 如果是技能的伤害则判断加成 - local onPassiveDamaging = function(func, target, damage, skill) + local onPassiveDamaging = function(func, target, damage, skill,ditType,bCrit,damageType) if skill and not skill.isTriggerJudge and judge==1 then return end + if damageType==3 then + return + end --处理伏虎觉醒十星附加的额外技能,额外技能不触发这个特性 2020/11/17 wangzhenxing if skill and skill.type== BattleSkillType.Extra and skill.owner.roleId==10015 and judge==1 then return @@ -3309,8 +3312,6 @@ local passivityList = { if skill.type == BattleSkillType.Normal and skill.owner and skill.owner.camp~=role.camp then local attack = role:GetRoleData(RoleDataName.Attack) local damage = floor(BattleUtil.ErrorCorrection(attack * f2)) - --持续回合数特殊处理,处理中毒等少触发一回合的情况 by:wangzhenxing 2021/08/26 17:58 - i1=i1+1 BattleUtil.RandomDot(f1, dot, role, skill.owner, i1, 1, damage) end end diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Buff/DOT.lua b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Buff/DOT.lua index a1e36a0b1f..14b69e1ded 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Buff/DOT.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Buff/DOT.lua @@ -8,6 +8,7 @@ function DOT:SetData(...) self.damagePro, --1 物理 2 魔法 (真实伤害时 为伤害值) self.damageFactor = ... --伤害系数 self.isRealDamage = false + self.triggerTime=0 --if self.damageType == 2 then -- self.cover = true -- self.layer = 1 @@ -38,12 +39,13 @@ function DOT:OnTrigger() else BattleUtil.CalDamage(nil, self.caster, self.target, self.damagePro, self.damageFactor, 0, self.damageType) end + self.triggerTime=self.triggerTime+1 return true end --效果结束时调用一次 function DOT:OnEnd() - + self.triggerTime=0 end --只有当cover字段为true时触发,返回true则被新效果覆盖