diff --git a/EXILED/Exiled.Events/EventArgs/Player/ShowingHitMarkerEventArgs.cs b/EXILED/Exiled.Events/EventArgs/Player/ShowingHitMarkerEventArgs.cs
new file mode 100644
index 000000000..b0aab33b4
--- /dev/null
+++ b/EXILED/Exiled.Events/EventArgs/Player/ShowingHitMarkerEventArgs.cs
@@ -0,0 +1,70 @@
+// -----------------------------------------------------------------------
+//
+// Copyright (c) ExMod Team. All rights reserved.
+// Licensed under the CC BY-SA 3.0 license.
+//
+// -----------------------------------------------------------------------
+
+namespace Exiled.Events.EventArgs.Player
+{
+ using API.Features;
+ using Interfaces;
+
+ ///
+ /// Contains all information before a hitmarker is show to player.
+ ///
+ public class ShowingHitMarkerEventArgs : IPlayerEvent, IDeniableEvent
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public ShowingHitMarkerEventArgs(ReferenceHub hub, float size, bool shouldPlayAudio, HitmarkerType hitmarkerType, bool isAllowed)
+ {
+ Player = Player.Get(hub);
+ Size = size;
+ ShouldPlayAudio = shouldPlayAudio;
+ HitmarkerType = hitmarkerType;
+ IsAllowed = isAllowed;
+ }
+
+ ///
+ /// Gets the player that the hitmarker is being shown to.
+ ///
+ public Player Player { get; }
+
+ ///
+ /// Gets or sets the target size multiplier.
+ ///
+ public float Size { get; set; }
+
+ ///
+ /// Gets or sets a value indicating whether the hitmarker sound effect should play.
+ ///
+ public bool ShouldPlayAudio { get; set; }
+
+ ///
+ /// Gets or sets a the type of the hitmarker.
+ ///
+ public HitmarkerType HitmarkerType { get; set; }
+
+ ///
+ /// Gets or sets a value indicating whether the hitmarker should be shown.
+ ///
+ public bool IsAllowed { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/EXILED/Exiled.Events/Events.cs b/EXILED/Exiled.Events/Events.cs
index 806733557..a39d252a5 100644
--- a/EXILED/Exiled.Events/Events.cs
+++ b/EXILED/Exiled.Events/Events.cs
@@ -92,6 +92,7 @@ public override void OnEnabled()
LabApi.Events.Handlers.PlayerEvents.ReloadingWeapon += Handlers.Player.OnReloadingWeapon;
LabApi.Events.Handlers.PlayerEvents.UnloadingWeapon += Handlers.Player.OnUnloadingWeapon;
+ LabApi.Events.Handlers.PlayerEvents.SendingHitmarker += Handlers.Player.OnShowingHitMarker;
LabApi.Events.Handlers.Scp127Events.Talking += Handlers.Scp127.OnTalking;
LabApi.Events.Handlers.Scp127Events.Talked += Handlers.Scp127.OnTalked;
@@ -137,6 +138,7 @@ public override void OnDisabled()
LabApi.Events.Handlers.PlayerEvents.ReloadingWeapon -= Handlers.Player.OnReloadingWeapon;
LabApi.Events.Handlers.PlayerEvents.UnloadingWeapon -= Handlers.Player.OnUnloadingWeapon;
+ LabApi.Events.Handlers.PlayerEvents.SendingHitmarker -= Handlers.Player.OnShowingHitMarker;
LabApi.Events.Handlers.Scp127Events.Talking -= Handlers.Scp127.OnTalking;
LabApi.Events.Handlers.Scp127Events.Talked -= Handlers.Scp127.OnTalked;
diff --git a/EXILED/Exiled.Events/Handlers/Player.cs b/EXILED/Exiled.Events/Handlers/Player.cs
index 424823116..539c83b65 100644
--- a/EXILED/Exiled.Events/Handlers/Player.cs
+++ b/EXILED/Exiled.Events/Handlers/Player.cs
@@ -32,6 +32,11 @@ public class Player
///
public static Event Hit { get; set; } = new ();
+ ///
+ /// Invoked before a player is shown a hitmarker.
+ ///
+ public static Event ShowingHitMarker { get; set; } = new ();
+
///
/// Invoked before authenticating a .
///
@@ -1439,6 +1444,23 @@ public static void OnItemRemoved(ReferenceHub referenceHub, InventorySystem.Item
/// The instance.
public static void OnHit(HitEventArgs ev) => Hit.InvokeSafely(ev);
+ ///
+ /// Called before a player is shown a hitmarker.
+ ///
+ /// The instance.
+ public static void OnShowingHitMarker(PlayerSendingHitmarkerEventArgs labEv)
+ {
+ if (!ShowingHitMarker.Patched)
+ return;
+
+ ShowingHitMarkerEventArgs ev = new(labEv.Player.ReferenceHub, labEv.Size, labEv.PlayAudio, labEv.Hitmarker, labEv.IsAllowed);
+ ShowingHitMarker.InvokeSafely(ev);
+ labEv.Size = ev.Size;
+ labEv.PlayAudio = ev.ShouldPlayAudio;
+ labEv.Hitmarker = ev.HitmarkerType;
+ labEv.IsAllowed = ev.IsAllowed;
+ }
+
///
/// Called before Emergency Release Button is pressed.
///