From 30f953f6de6425ac1b11ae06b22a0ff97db112c8 Mon Sep 17 00:00:00 2001 From: wangzhenxing Date: Sat, 28 Nov 2020 16:18:50 +0900 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=88=98=E6=96=97=E3=80=91=20?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E6=9F=A5=E6=89=BE=E9=80=BB=E8=BE=91=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=20=E6=8E=92=E9=99=A4=E6=8B=A5=E6=9C=89=E4=B8=8D?= =?UTF-8?q?=E7=81=AD=E7=9A=84=E5=8D=95=E4=BD=8D=20=E5=92=8C=20=20=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E4=B8=8D=E7=81=AD=E7=9A=84=E6=97=A0=E5=BA=8F=E5=88=97?= =?UTF-8?q?=E8=A1=A8=20=20=20=20103=E6=95=88=E6=9E=9C=E6=94=B9=E6=88=90?= =?UTF-8?q?=E6=B2=BB=E7=96=97=E9=9A=8F=E6=9C=BA=E5=A4=9A=E4=B8=AA=E5=8D=95?= =?UTF-8?q?=E4=BD=8D=20=20=20=20276=E8=A2=AB=E5=8A=A8=20=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E7=BB=99=E9=9A=8F=E6=9C=BA=E8=8B=B1=E9=9B=84=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../~Lua/Modules/Battle/Logic/Base/Effect.lua | 7 ++-- .../Modules/Battle/Logic/Base/Passivity.lua | 2 +- .../Modules/Battle/Logic/Role/RoleManager.lua | 33 ++++++++++++++++++- 3 files changed, 37 insertions(+), 5 deletions(-) diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Effect.lua b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Effect.lua index 6461adf37f..889fc7dc13 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Effect.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Effect.lua @@ -1976,15 +1976,16 @@ local effectList = { caster.Event:DispatchEvent(BattleEventName.RoleViewBullet, skill, target) BattleLogic.WaitForTrigger(interval, function () local OnBeHit = function(atkRole, damage, bCrit, finalDmg, damageType) - local arr = RoleManager.Query(function (r) return r.camp == caster.camp end) + local arr = RoleManager.NoOrder(function (r) return r.camp == caster.camp end,false,true) BattleUtil.SortByHpFactor(arr, 1) - -- 检测技能伤害治疗加成 - f2 = BattleUtil.CheckSkillDamageHeal(f2, caster, arr[1]) + -- 检测技能伤害治疗加成 -- 治疗血量最低队友实际伤害的f2% --之前是finaldag 改成 damage for i = 1, LengthOfTable(arr) do if i<=num then + f2 = BattleUtil.CheckSkillDamageHeal(f2, caster, arr[i]) BattleUtil.ApplyTreat(caster, arr[i], floor(damage*f2)) + end 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 e148dc2f3b..1ab69d3d54 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Passivity.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/Passivity.lua @@ -5638,7 +5638,7 @@ local passivityList = { -- 释放技能后 local onSkillEnd = function(skill) if skill.type == BattleSkillType.Special or skill.type==BattleSkillType.Extra then - local list= RoleManager.Query(function(v) return v.camp == role.camp and v.element==ele end) + local list= RoleManager.NoOrder(function(v) return v.camp == role.camp and v.element==ele end,true) if not list or LengthOfTable(list)==0 then return end diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Role/RoleManager.lua b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Role/RoleManager.lua index f775b9c2e3..f0b78310d7 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Role/RoleManager.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Role/RoleManager.lua @@ -154,7 +154,38 @@ function RoleManager.Query(func, inCludeDeadRole) end) return list end - +-- 查找角色(不包含死亡和拥有不灭的) 2020/11/28 王振兴 +function RoleManager.QueryNoDead(func) + local list = {} + local index = 1 + if func then + for pos, v in pairs(PosList) do + if func(v) and not v:IsRealDead() and v.deadFilter then + list[index] = v + index = index + 1 + end + end + end + table.sort(list, function(a, b) + return a.position < b.position + end) + return list +end +-- 查找角色(无排序,无死亡单位,无不灭) 2020/11/28 王振兴 +function RoleManager.NoOrder(func) + local list = {} + local index = 1 + if func then + for pos, v in pairs(PosList) do + if func(v) and not v:IsRealDead() and v.deadFilter then + list[index] = v + index = index + 1 + end + end + end + BattleUtil.RandomList(list) + return list +end --对位规则: 1敌方相同对位 2若死亡或不存在,选取相邻阵位最近且阵位索引最小的 function this.GetAggro(role)