From 19d7914e78eb77363a667ca4f57e35734fb51b71 Mon Sep 17 00:00:00 2001 From: wangzhenxing Date: Fri, 26 Mar 2021 16:50:49 +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=E8=A7=A3=E5=86=B3=E6=94=BE=E9=80=90=E7=9B=AE?= =?UTF-8?q?=E6=A0=87=E6=9C=89=E4=B8=8D=E7=81=AD=E4=B8=8D=E4=BC=9A=E8=A2=AB?= =?UTF-8?q?=E9=80=89=E4=B8=AD=EF=BC=9B=E8=A7=A3=E5=86=B3=E5=8F=AA=E5=89=A9?= =?UTF-8?q?=E6=94=BE=E9=80=90=E7=9B=AE=E6=A0=87=E6=94=BB=E5=87=BB=E5=8A=A8?= =?UTF-8?q?=E7=94=BB=E5=BC=82=E5=B8=B8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Modules/Battle/Logic/Base/EffectCaster.lua | 13 +++++++++++++ .../~Lua/Modules/Battle/Logic/Misc/BattleUtil.lua | 2 +- .../~Lua/Modules/Battle/Logic/Role/Skill.lua | 14 ++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/EffectCaster.lua b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/EffectCaster.lua index 392ae55ecf..5228d326ac 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/EffectCaster.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Base/EffectCaster.lua @@ -174,6 +174,19 @@ function EffectCaster:GetDirectTargetsNoMiss() return list end +-- 获取直接目标和没有被放逐的目标,不包含miss的目标,可能为空 +function EffectCaster:GetDirectTargetsNoExile() + local list = {} + for _, role in ipairs(self.effectTargets[1]) do + if not role.isExile then + table.insert(list, role) + end + end + return list +end + + + -- 获取技能目标最大人数 function EffectCaster:GetMaxTargetNum() local mainEffect = self.effectList[1] diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Misc/BattleUtil.lua b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Misc/BattleUtil.lua index b81eb6e7be..e4db578d20 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Misc/BattleUtil.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Misc/BattleUtil.lua @@ -380,7 +380,7 @@ function BattleUtil.ChooseTarget(role, chooseId) local team = RoleManager.Query(function (r) return r.camp ~= role.camp end) if list then for key, value in pairs(team) do - if not value:IsDead() and not BattleUtil.ChecklistIsContainValue(role.exileTargets,value) then + if not value:IsRealDead() and not BattleUtil.ChecklistIsContainValue(role.exileTargets,value) then --return arr[i] table.insert(tempArr,value) end diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Role/Skill.lua b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Role/Skill.lua index 012db7b807..b2689b83d6 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Role/Skill.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Role/Skill.lua @@ -64,6 +64,15 @@ function Skill:Cast(func) -- 技能效果生效 if self.effectCaster then + --放技能前判断是否有目标,没有就不会放技能,直接执行技能回调 by 王振兴 2021/03/26 + --为解决攻击目标只剩被放逐的单位导致技能播放异常 + self.effectCaster:ChooseTarget() + local targets=LengthOfTable(self:GetDirectTargetsNoExile()) + if targets==0 and self.castDoneFunc then + self.castDoneFunc() + return + end + --end self.effectCaster:Cast() end @@ -106,6 +115,11 @@ end function Skill:GetDirectTargetsNoMiss() return self.effectCaster:GetDirectTargetsNoMiss() end + +-- 获取直接目标,不包含miss的目标,可能为空 +function Skill:GetDirectTargetsNoExile() + return self.effectCaster:GetDirectTargetsNoExile() +end -- 获取技能目标最大人数 function Skill:GetMaxTargetNum() return self.effectCaster:GetMaxTargetNum()