diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Misc/BattleDefine.lua b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Misc/BattleDefine.lua index 4e6faf4279..49ded718ac 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Misc/BattleDefine.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Misc/BattleDefine.lua @@ -194,6 +194,7 @@ BattleEventName = { PassiveChangeIgnoreDef = indexAdd(),--被动改变无视防御比例 PassiveChangeDefDMGReFac = indexAdd(),--被动改变防御方减伤比例 PassiveChangeRoleHit = indexAdd(),--被动改变角色命中 + RoleIsVanish = indexAdd(), -- 角色已经从显示层消失 } diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Monster/MonsterSkill/MTrigger.lua b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Monster/MonsterSkill/MTrigger.lua index 957211e94f..604f285101 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Monster/MonsterSkill/MTrigger.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Monster/MonsterSkill/MTrigger.lua @@ -184,6 +184,16 @@ local _TriggerConfig = { end, }, + [BattleEventName.RoleIsVanish]={ + [15]=function(skill, ...) + local args={...} + local role=RoleManager.GetDeadRole(skill.owner.camp) + if role and role:IsRealDead() then + return true + end + return false + end, + }, } function MTrigger.Init() diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Role/RoleManager.lua b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Role/RoleManager.lua index 8ae289047b..0923fb8e2d 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Role/RoleManager.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Role/RoleManager.lua @@ -116,6 +116,9 @@ function this.CheckDead() end for _, pos in ipairs(removePos) do table.insert(RealDeadList,_DeadRoleList[pos]) + BattleLogic.WaitForTrigger(1,function() + BattleLogic.Event:DispatchEvent(BattleEventName.RoleIsVanish,RealDeadList) + end) _DeadRoleList[pos] = nil end @@ -132,11 +135,13 @@ function this.CheckRelive() local removePos = {} for pos, role in pairs(_ReliveRoleList) do if role:Relive() then + table.removebyvalue(RealDeadList,role) isReliveFrame = true table.insert(removePos, pos) end end for _, pos in ipairs(removePos) do + _ReliveRoleList[pos] = nil end return isReliveFrame