diff --git a/EXILED/Exiled.Events/EventArgs/Player/DiedEventArgs.cs b/EXILED/Exiled.Events/EventArgs/Player/DiedEventArgs.cs index 26b6a26312..24e91e6870 100644 --- a/EXILED/Exiled.Events/EventArgs/Player/DiedEventArgs.cs +++ b/EXILED/Exiled.Events/EventArgs/Player/DiedEventArgs.cs @@ -13,6 +13,7 @@ namespace Exiled.Events.EventArgs.Player using Interfaces; using PlayerRoles; + using PlayerRoles.Ragdolls; using CustomAttackerHandler = API.Features.DamageHandlers.AttackerDamageHandler; using DamageHandlerBase = PlayerStatsSystem.DamageHandlerBase; @@ -20,7 +21,7 @@ namespace Exiled.Events.EventArgs.Player /// /// Contains all information after a player dies. /// - public class DiedEventArgs : IPlayerEvent, IAttackerEvent + public class DiedEventArgs : IPlayerEvent, IAttackerEvent, IRagdollEvent { /// /// Initializes a new instance of the class. @@ -32,12 +33,16 @@ public class DiedEventArgs : IPlayerEvent, IAttackerEvent /// /// /// - public DiedEventArgs(Player target, RoleTypeId targetOldRole, DamageHandlerBase damageHandler) + /// + /// + /// + public DiedEventArgs(Player target, RoleTypeId targetOldRole, DamageHandlerBase damageHandler, BasicRagdoll ragdoll) { DamageHandler = new CustomDamageHandler(target, damageHandler); Attacker = DamageHandler.BaseIs(out CustomAttackerHandler attackerDamageHandler) ? attackerDamageHandler.Attacker : null; Player = target; TargetOldRole = targetOldRole; + Ragdoll = Ragdoll.Get(ragdoll); } /// @@ -59,5 +64,10 @@ public DiedEventArgs(Player target, RoleTypeId targetOldRole, DamageHandlerBase /// Gets the attacker. /// public Player Attacker { get; } + + /// + /// Gets ragdoll of the dead player. + /// + public Ragdoll Ragdoll { get; } } } \ No newline at end of file diff --git a/EXILED/Exiled.Events/Patches/Events/Player/DyingAndDied.cs b/EXILED/Exiled.Events/Patches/Events/Player/DyingAndDied.cs index 9b4c29b3b1..489732cf08 100644 --- a/EXILED/Exiled.Events/Patches/Events/Player/DyingAndDied.cs +++ b/EXILED/Exiled.Events/Patches/Events/Player/DyingAndDied.cs @@ -19,6 +19,7 @@ namespace Exiled.Events.Patches.Events.Player using HarmonyLib; using PlayerRoles; + using PlayerRoles.Ragdolls; using PlayerStatsSystem; @@ -41,6 +42,7 @@ private static IEnumerable Transpiler(IEnumerable Transpiler(IEnumerable x.opcode == OpCodes.Pop); + + newInstructions[index] = new CodeInstruction(OpCodes.Stloc, ragdoll.LocalIndex); + newInstructions.InsertRange( newInstructions.Count - 1, new CodeInstruction[] @@ -90,6 +96,9 @@ private static IEnumerable Transpiler(IEnumerable Transpiler(IEnumerable.Pool.Return(newInstructions); } } -} \ No newline at end of file +}