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
+}