diff --git a/Content.Client/GameObjects/Components/Mobs/ClientOverlayEffectsComponent.cs b/Content.Client/GameObjects/Components/Mobs/ClientOverlayEffectsComponent.cs
index 580a3de334..acd8928375 100644
--- a/Content.Client/GameObjects/Components/Mobs/ClientOverlayEffectsComponent.cs
+++ b/Content.Client/GameObjects/Components/Mobs/ClientOverlayEffectsComponent.cs
@@ -28,7 +28,7 @@ namespace Content.Client.GameObjects.Components.Mobs
///
/// An enum representing the current state being applied to the user
///
- private readonly List _currentEffects = new List();
+ private List _currentEffects = new List();
[ViewVariables(VVAccess.ReadOnly)]
public List ActiveOverlays
@@ -49,7 +49,9 @@ namespace Content.Client.GameObjects.Components.Mobs
switch (message)
{
case PlayerAttachedMsg _:
- SetEffects(ActiveOverlays);
+ var overlays = new List(_currentEffects);
+ _currentEffects.Clear();
+ SetEffects(overlays);
break;
case PlayerDetachedMsg _:
ActiveOverlays = new List();
@@ -61,14 +63,20 @@ namespace Content.Client.GameObjects.Components.Mobs
{
base.HandleComponentState(curState, nextState);
- if(_playerManager?.LocalPlayer != null && _playerManager.LocalPlayer.ControlledEntity != Owner)
- return;
-
- if (!(curState is OverlayEffectComponentState state) || ActiveOverlays.Equals(state.Overlays))
+ if (!(curState is OverlayEffectComponentState state))
{
return;
}
+ if (_playerManager?.LocalPlayer != null && _playerManager.LocalPlayer.ControlledEntity != Owner)
+ {
+ _currentEffects = state.Overlays;
+ return;
+ }
+
+ if (ActiveOverlays.Equals(state.Overlays))
+ return;
+
ActiveOverlays = state.Overlays;
}