diff --git a/Assets/Scripts/Characters/Enemy/Enemy.cs b/Assets/Scripts/Characters/Enemy/Enemy.cs
index f2d331d..8ac3d46 100644
--- a/Assets/Scripts/Characters/Enemy/Enemy.cs
+++ b/Assets/Scripts/Characters/Enemy/Enemy.cs
@@ -18,7 +18,8 @@ namespace Characters.Enemy
         public float aggressionDistance = 5f;
 
         [HideInInspector] public bool canAttack;
-        
+
+        [SyncVar(hook = nameof(OnStateChanged)), HideInInspector] public EnemyState state = EnemyState.Idle;
         [SyncVar, HideInInspector] public float aimRigWeight;
 
         public readonly StateMachine<EnemyState> stateMachine = new StateMachine<EnemyState>();
@@ -92,7 +93,12 @@ namespace Characters.Enemy
         {
             base.TakeDamage();
             
-            stateMachine.SetCurrentState(EnemyState.Stunned);
+            state = EnemyState.Stunned;
+        }
+
+        void OnStateChanged(EnemyState prevState, EnemyState newState)
+        {
+            stateMachine.SetCurrentState(newState);
         }
     }
 }
\ No newline at end of file
diff --git a/Assets/Scripts/Characters/Enemy/States/ChaseState.cs b/Assets/Scripts/Characters/Enemy/States/ChaseState.cs
index a79761d..908c79d 100644
--- a/Assets/Scripts/Characters/Enemy/States/ChaseState.cs
+++ b/Assets/Scripts/Characters/Enemy/States/ChaseState.cs
@@ -14,11 +14,15 @@ namespace Characters.Enemy.States
 
         public override void Enter()
         {
+            if (!_enemy.isServer) return;
+            
             _enemy.SetAimRigWeight(1f);
         }
 
         public override void Update()
         {
+            if (!_enemy.isServer) return;
+            
             _enemy.agent.destination = _enemy.target.position;
 
             float distance = Vector3.Distance(_enemy.target.transform.position, _enemy.transform.position);
@@ -40,12 +44,14 @@ namespace Characters.Enemy.States
             }
             else
             {
-                _enemy.stateMachine.SetCurrentState(EnemyState.Idle);
+                _enemy.state = EnemyState.Idle;
             }
         }
 
         public override void Exit()
         {
+            if (!_enemy.isServer) return;
+            
             _enemy.target = null;
             
             _enemy.SetAimRigWeight(0f);
diff --git a/Assets/Scripts/Characters/Enemy/States/IdleState.cs b/Assets/Scripts/Characters/Enemy/States/IdleState.cs
index bd6447f..020d244 100644
--- a/Assets/Scripts/Characters/Enemy/States/IdleState.cs
+++ b/Assets/Scripts/Characters/Enemy/States/IdleState.cs
@@ -15,22 +15,28 @@ namespace Characters.Enemy.States
 
         public override void Enter()
         {
+            if (!_enemy.isServer) return;
+            
             _enemy.SetSpeedMul(0f);
             _enemy.animator.SetBool(DanceAnimHash, true);
         }
 
         public override void Update()
         {
+            if (!_enemy.isServer) return;
+            
             var stateInfo = _enemy.animator.GetCurrentAnimatorStateInfo(0);
 
             if (stateInfo.shortNameHash == DanceAnimHash && stateInfo.normalizedTime >= 1)
             {
-                _enemy.stateMachine.SetCurrentState(EnemyState.Patrol);
+                _enemy.state = EnemyState.Patrol;
             }
         }
 
         public override void Exit()
         {
+            if (!_enemy.isServer) return;
+            
             _enemy.animator.SetBool(DanceAnimHash, false);
             _enemy.SetSpeedMul(1f);
         }
diff --git a/Assets/Scripts/Characters/Enemy/States/PatrolState.cs b/Assets/Scripts/Characters/Enemy/States/PatrolState.cs
index 328c088..b9cdb42 100644
--- a/Assets/Scripts/Characters/Enemy/States/PatrolState.cs
+++ b/Assets/Scripts/Characters/Enemy/States/PatrolState.cs
@@ -21,12 +21,15 @@ namespace Characters.Enemy.States
 
         public override void Enter()
         {
+            if (!_enemy.isServer) return;
+            
             _enemy.SetAimRigWeight(0f);
         }
 
         public override void Update()
         {
-
+            if (!_enemy.isServer) return;
+            
             float sortDistance = float.MaxValue;
             foreach (var player in _networkManager.alive)
             {
@@ -41,7 +44,7 @@ namespace Characters.Enemy.States
 
             if (_enemy.target != null)
             {
-                _enemy.stateMachine.SetCurrentState(EnemyState.Chase);
+                _enemy.state = EnemyState.Chase;
             }
             
             var remainingDistance = _enemy.agent.GetPathRemainingDistance();
diff --git a/Assets/Scripts/Characters/Enemy/States/StunnedState.cs b/Assets/Scripts/Characters/Enemy/States/StunnedState.cs
index eb5c451..fb1a653 100644
--- a/Assets/Scripts/Characters/Enemy/States/StunnedState.cs
+++ b/Assets/Scripts/Characters/Enemy/States/StunnedState.cs
@@ -21,17 +21,24 @@ namespace Characters.Enemy.States
 
         public override void Enter()
         {
-            _enemy.canAttack = false;
-            _enemy.target = null;
-            
-            _enemy.SetSpeedMul(0f);
-            _enemy.GetComponent<NetworkAnimator>().SetTrigger(DamageAnimHash);
-            _enemy.hitVFX.Stop();
-            _enemy.hitVFX.Play();
+            if (_enemy.isServer)
+            {
+                _enemy.canAttack = false;
+                _enemy.target = null;
 
-            _task = new Task(GetStunned());
+                _enemy.SetSpeedMul(0f);
+                _enemy.GetComponent<NetworkAnimator>().SetTrigger(DamageAnimHash);
+                
+                _task = new Task(GetStunned());
+            }
+            else
+            {
+                _enemy.hitVFX.Stop();
+                _enemy.hitVFX.Play();
+            }
         }
 
+        [Server]
         public override void ReEnter()
         {
             _task.Stop();
@@ -40,6 +47,8 @@ namespace Characters.Enemy.States
 
         public override void Exit()
         {
+            if (!_enemy.isServer) return;
+            
             _task.Stop();
             _enemy.SetSpeedMul(1f);
             
@@ -50,7 +59,7 @@ namespace Characters.Enemy.States
         {
             yield return new WaitForSeconds(6);
             
-            _enemy.stateMachine.SetCurrentState(EnemyState.Patrol);
+            _enemy.state = EnemyState.Patrol;
         }
     }
 }
\ No newline at end of file