From 8998708ee7797032df4a318f331ef8d74136ce4a Mon Sep 17 00:00:00 2001
From: Chiquita Ahsanunnisa <16521248@mahasiswa.itb.ac.id>
Date: Sat, 11 May 2024 04:54:46 +0700
Subject: [PATCH] fix: stuck position

---
 .../Pets/AttackingPet/AttackingPetStateController.cs      | 8 ++++++++
 .../Library/BaseClasses/EntityObject/PlayerEntity.cs      | 5 ++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/Assets/_Scripts/Core/Entities/Pets/AttackingPet/AttackingPetStateController.cs b/Assets/_Scripts/Core/Entities/Pets/AttackingPet/AttackingPetStateController.cs
index ca13447e..138a6e7c 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 c95dc498..5e8afa98 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);
         }
     }
 }
-- 
GitLab