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