diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Passivity.lua b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Passivity.lua index da3d148bdc..1a030e65e1 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Passivity.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Passivity.lua @@ -1019,21 +1019,23 @@ local passivityList = { end role.Event:AddEvent(BattleEventName.RoleHit, OnDamage,nil,nil,role) end, - --造成暴击时,额外造成目标最大生命值[a]%的伤害。 + --技能造成暴击时,额外造成目标最大生命值[a]%的伤害。 --a[float] [56] = function(role, args,id,judge) local f1 = args[1] local lastTrigger = 0 local OnRoleCrit = function(defRole, damage, bCrit, finalDmg, damageType, skill) - lastTrigger = lastTrigger + 1 - if lastTrigger > 1 then --加入限定避免循环触发 - return - end - local ar1 = floor(BattleUtil.FP_Mul(defRole:GetRoleData(RoleDataName.MaxHp), f1)) + -- lastTrigger = lastTrigger + 1 + -- if lastTrigger > 1 then --加入限定避免循环触发 + -- return + -- end + if skill and (skill.type==BattleSkillType.Special or skill.type==BattleSkillType.Extra or skill.type==BattleSkillType.DeadSkill ) then + local ar1 = floor(BattleUtil.FP_Mul(defRole:GetRoleData(RoleDataName.MaxHp), f1)) --local ar2 = BattleUtil.FP_Mul(role:GetRoleData(RoleDataName.Attack), 2.5) - BattleUtil.FinalDamage(nil, role, defRole, ar1) - lastTrigger = 0 + BattleUtil.FinalDamage(nil, role, defRole, ar1) + --lastTrigger = 0 + end end role.Event:AddEvent(BattleEventName.RoleCrit, OnRoleCrit,nil,nil,role) end, @@ -6287,7 +6289,8 @@ local passivityList = { --查找敌方燃烧数量 if num==10 then num=0 - local arr=RoleManager.Query(function (v) return v.camp~=role.camp end) + local arr=skill:GetDirectTargets() + -- local arr=RoleManager.Query(function (v) return v.camp~=role.camp end) for i = 1, #arr do local aaa=BattleLogic.BuffMgr:HasBuff(arr[i], BuffName.DOT, function (buff) return buff.damageType==1 end) if aaa then @@ -7373,7 +7376,7 @@ local passivityList = { return end --释放者死亡或释放着被沉默 - if caster:IsDead() or caster.ctrl_slient then + if caster:IsRealDead() or caster.ctrl_slient then return end local num=role.SuperSkillRage-role.Rage diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Buff/NoDead.lua b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Buff/NoDead.lua index 40c2c93752..d30137f614 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Buff/NoDead.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Buff/NoDead.lua @@ -17,22 +17,28 @@ function NoDead:onPassiveDamaging(func, target, damage, skill) local dd = BattleUtil.CountValue(damage, self.damageFactor, self.factorCT) - damage if func then func(-math.floor(BattleUtil.ErrorCorrection(dd))-self.recordDamage) - self.recordDamage=0 end end end -- 记录承受伤害 function NoDead:OnRoleBeHit(atkRole, damage, bCrit, finalDmg, damageType, skill,isDirect) - if skill and (skill.type == BattleSkillType.Special or skill.type==BattleSkillType.Extra ) and atkRole.camp~=self.target.camp then + if skill and (skill.type == BattleSkillType.Special or skill.type==BattleSkillType.Extra or skill.type==BattleSkillType.DeadSkill ) and atkRole.camp~=self.target.camp then self.recordDamage=self.recordDamage+math.floor(damage*0.1) end end +function NoDead:OnSkillCastEnd(skill) + if skill and (skill.type == BattleSkillType.Special or skill.type==BattleSkillType.Extra ) then + self.recordDamage=0 + end +end + --初始化后调用一次 function NoDead:OnStart() -- self.target.Event:AddEvent(BattleEventName.PassiveDamaging, self.onPassiveDamaging, self) + self.target.Event:AddEvent(BattleEventName.SkillCastEnd,self.OnSkillCastEnd,self) if self.target.star>=11 then self.target.Event:AddEvent(BattleEventName.RoleBeHit,self.OnRoleBeHit,self) end @@ -51,6 +57,7 @@ end --效果结束时调用一次 function NoDead:OnEnd() self.target.Event:RemoveEvent(BattleEventName.PassiveDamaging, self.onPassiveDamaging, self) + self.target.Event:RemoveEvent(BattleEventName.SkillCastEnd,self.OnSkillCastEnd,self) if self.target.star>=11 then self.target.Event:RemoveEvent(BattleEventName.RoleBeHit,self.OnRoleBeHit,self) end