diff --git a/Assets/_Scripts/Core/Entities/Pets/AttackingPet/AttackingPetStateController.cs b/Assets/_Scripts/Core/Entities/Pets/AttackingPet/AttackingPetStateController.cs
index ca13447e34ba52d719d3a2632e6ebb3480bb5ce0..138a6e7c247756902439af30e2dada1e2a831224 100644
--- a/Assets/_Scripts/Core/Entities/Pets/AttackingPet/AttackingPetStateController.cs
+++ b/Assets/_Scripts/Core/Entities/Pets/AttackingPet/AttackingPetStateController.cs
@@ -10,6 +10,7 @@ public class AttackingPetStateController : PetStateController<AttackingPet>
     // Attributes
     public float followDistance = 6f;
     public float attackDistance = 3f;
+    public float maxDistFromOwner = 7f;
     [HideInInspector] public List<EnemyEntity> attackEnemies = new();
     [HideInInspector] public List<EnemyEntity> followEnemies = new();
     [HideInInspector] public EnemyEntity nearest;
@@ -25,6 +26,13 @@ public class AttackingPetStateController : PetStateController<AttackingPet>
     // Functions
     protected override int DetectState()
     {
+        // Prevent from stucking in the same state
+        if (Vector3.Distance(pet.transform.position, pet.Owner.CompanionController.transform.position) > maxDistFromOwner)
+        {
+            state = AttackingPetState.AI_IDLE_STATE;
+            return AttackingPetState.AI_IDLE_STATE;
+        }
+
         Collider[] attackCollider = Physics.OverlapSphere(pet.transform.position, attackDistance, enemyLayer);
         Collider[] followCollider = Physics.OverlapSphere(pet.transform.position, followDistance, enemyLayer);
 
diff --git a/Assets/_Scripts/Library/BaseClasses/EntityObject/PlayerEntity.cs b/Assets/_Scripts/Library/BaseClasses/EntityObject/PlayerEntity.cs
index c95dc498efbb98b8a0e548bd5a9c39c460cdcd28..5e8afa98129f52d8a6b00ed6df50cb4079c42f4a 100644
--- a/Assets/_Scripts/Library/BaseClasses/EntityObject/PlayerEntity.cs
+++ b/Assets/_Scripts/Library/BaseClasses/EntityObject/PlayerEntity.cs
@@ -157,7 +157,10 @@ public class PlayerEntity : CombatantEntity, IAccompaniable
 
         for (int i = 0; i < companionList.Count; i++)
         {
-            Destroy(companionList[i].gameObject);
+            Companion comp = companionList[i];
+            companionList.RemoveAt(i);
+            companionActive.RemoveAt(i);
+            Destroy(comp.gameObject);
         }
     }
 }