diff --git a/Exiled.API/Features/Scp3114Ragdoll.cs b/Exiled.API/Features/Scp3114Ragdoll.cs
new file mode 100644
index 0000000000..01bb1869fd
--- /dev/null
+++ b/Exiled.API/Features/Scp3114Ragdoll.cs
@@ -0,0 +1,76 @@
+// -----------------------------------------------------------------------
+//
+// Copyright (c) Exiled Team. All rights reserved.
+// Licensed under the CC BY-SA 3.0 license.
+//
+// -----------------------------------------------------------------------
+
+namespace Exiled.API.Features
+{
+ using Exiled.API.Interfaces;
+ using PlayerRoles;
+
+ using BaseRagdoll = PlayerRoles.PlayableScps.Scp3114.Scp3114Ragdoll;
+
+ ///
+ /// A wrapper for SCP-3114 ragdolls.
+ ///
+ public class Scp3114Ragdoll : Ragdoll, IWrapper
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The base ragdoll to wrap.
+ internal Scp3114Ragdoll(BaseRagdoll ragdoll) : base(ragdoll)
+ {
+ Base = ragdoll;
+ }
+
+ ///
+ public new BaseRagdoll Base { get; }
+
+ ///
+ /// Gets or sets the role that the corpse is disguised as.
+ ///
+ public RoleTypeId DisguiseRole
+ {
+ get => Base._disguiseRole;
+ set => Base.Network_disguiseRole = value;
+ }
+
+ ///
+ /// Gets or sets the delay between when SCP-3114 can disguise this corpse.
+ ///
+ public float RevealDelay
+ {
+ get => Base._revealDelay;
+ set => Base._revealDelay = value;
+ }
+
+ ///
+ /// Gets or sets the time required to reveal this corpse.
+ ///
+ public float RevealDuration
+ {
+ get => Base._revealDuration;
+ set => Base._revealDuration = value;
+ }
+
+ ///
+ /// Gets or sets the current time of revealing this corpse.
+ ///
+ public float RevealElapsed
+ {
+ get => Base._revealElapsed;
+ set => Base._revealElapsed = value;
+ }
+
+ ///
+ /// Gets or sets a value indicating whether or not this corpse will trigger animation.
+ ///
+ public bool IsPlayingAnimation
+ {
+ get => Base._playingAnimation;
+ set => Base._playingAnimation = value;
+ }
+}