diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity
index 75c54e051778fad087ffd7cbdc7fd6bf72ccbd78..2a82535939b75c31c82d0a6a1f718d1abd961865 100644
--- a/Assets/Scenes/Main.unity
+++ b/Assets/Scenes/Main.unity
@@ -38,7 +38,7 @@ RenderSettings:
   m_ReflectionIntensity: 1
   m_CustomReflection: {fileID: 0}
   m_Sun: {fileID: 0}
-  m_IndirectSpecularColor: {r: 0.026700953, g: 0.29866886, b: 0.49627915, a: 1}
+  m_IndirectSpecularColor: {r: 0.026566118, g: 0.29867774, b: 0.49624193, a: 1}
   m_UseRadianceAmbientProbe: 0
 --- !u!157 &3
 LightmapSettings:
@@ -7192,7 +7192,7 @@ GameObject:
   serializedVersion: 6
   m_Component:
   - component: {fileID: 1479356872}
-  - component: {fileID: 1479356871}
+  - component: {fileID: 1479356874}
   - component: {fileID: 1479356870}
   - component: {fileID: 1479356873}
   m_Layer: 5
@@ -7218,27 +7218,6 @@ MonoBehaviour:
   - {fileID: 8300000, guid: e16c85036de7075408c4637a0ea763ae, type: 3}
   - {fileID: 8300000, guid: 4fff99673a41e24439d527ad0bd6b569, type: 3}
   fadeDuration: 1
---- !u!65 &1479356871
-BoxCollider:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1479356869}
-  m_Material: {fileID: 0}
-  m_IncludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_ExcludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_LayerOverridePriority: 0
-  m_IsTrigger: 1
-  m_ProvidesContacts: 0
-  m_Enabled: 1
-  serializedVersion: 3
-  m_Size: {x: 200, y: 50, z: 200}
-  m_Center: {x: 0, y: 0, z: 0}
 --- !u!224 &1479356872
 RectTransform:
   m_ObjectHideFlags: 0
@@ -7354,6 +7333,27 @@ AudioSource:
     m_PreInfinity: 2
     m_PostInfinity: 2
     m_RotationOrder: 4
+--- !u!135 &1479356874
+SphereCollider:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1479356869}
+  m_Material: {fileID: 0}
+  m_IncludeLayers:
+    serializedVersion: 2
+    m_Bits: 0
+  m_ExcludeLayers:
+    serializedVersion: 2
+    m_Bits: 0
+  m_LayerOverridePriority: 0
+  m_IsTrigger: 1
+  m_ProvidesContacts: 0
+  m_Enabled: 1
+  serializedVersion: 3
+  m_Radius: 125
+  m_Center: {x: 0, y: 0, z: 0}
 --- !u!4 &1482324798 stripped
 Transform:
   m_CorrespondingSourceObject: {fileID: 850649989193942044, guid: ae358aa425fe140409d8a560f4492730, type: 3}
diff --git a/Assets/Scripts/Enemy/EnemyMovement.cs b/Assets/Scripts/Enemy/EnemyMovement.cs
index 26b1df5a7aca8d8a3ca9cea8221f5c8d64bd4e1c..120a30ac119ddd9a7dd1f5cd54a8e0137f06ac3c 100644
--- a/Assets/Scripts/Enemy/EnemyMovement.cs
+++ b/Assets/Scripts/Enemy/EnemyMovement.cs
@@ -15,11 +15,13 @@ public class EnemyMovement : MonoBehaviour
 
     private float lastAttackTime;
     private Transform player;
+    private Transform saveZone;
     private NavMeshAgent agent;
     private AudioSource audioSource;
 
     void Awake()
     {
+        saveZone = GameObject.FindGameObjectWithTag("SaveZone")?.transform;
         player = GameObject.FindGameObjectWithTag("Player")?.transform;
         agent = GetComponent<NavMeshAgent>();
         agent.updateRotation = false;
@@ -29,28 +31,35 @@ public class EnemyMovement : MonoBehaviour
 
     void FixedUpdate()
     {
-        if ((GetComponent<EnemyHealth>().currentHealth <= 0) || (player == null))
+        if (!IsInsideVillage())
         {
-            enemyAnimator.SetBool("isAttacking", false);
-            enemyAnimator.SetBool("isChasing", false);
-            enemyAnimator.SetBool("isPatrolling", false);
-            agent.ResetPath();
-        }
-        else if (IsUsingShotgun() && IsTooCloseToPlayer())
-        {
-            RunAway();
-        }
-        else if (IsAttacking() && !IsRunningAway())
-        {
-            Attack();
-        }
-        else if (IsChasing())
-        {
-            Chase();
+            if ((GetComponent<EnemyHealth>().currentHealth <= 0) || (player == null))
+            {
+                enemyAnimator.SetBool("isAttacking", false);
+                enemyAnimator.SetBool("isChasing", false);
+                enemyAnimator.SetBool("isPatrolling", false);
+                agent.ResetPath();
+            }
+            else if (IsUsingShotgun() && IsTooCloseToPlayer())
+            {
+                RunAway();
+            }
+            else if (IsAttacking() && !IsRunningAway())
+            {
+                Attack();
+            }
+            else if (IsChasing())
+            {
+                Chase();
+            }
+            else
+            {
+                Patrol();
+            }
         }
         else
         {
-            Patrol();
+            GetAwayFromVillage();
         }
     }
 
@@ -60,13 +69,6 @@ public class EnemyMovement : MonoBehaviour
         return Vector3.Distance(transform.position, player.position) <= attackRadius;
     }
 
-    bool IsChasing()
-    {
-        if (player == null) return false;
-        float distanceToPlayer = Vector3.Distance(transform.position, player.position);
-        return distanceToPlayer <= visionRadius && distanceToPlayer > attackRadius;
-    }
-
     void Attack()
     {
         // Set animation bools
@@ -89,6 +91,13 @@ public class EnemyMovement : MonoBehaviour
         }
     }
 
+    bool IsChasing()
+    {
+        if (player == null) return false;
+        float distanceToPlayer = Vector3.Distance(transform.position, player.position);
+        return distanceToPlayer <= visionRadius && distanceToPlayer > attackRadius;
+    }
+
     void Chase()
     {
         // Set animation bools
@@ -146,6 +155,27 @@ public class EnemyMovement : MonoBehaviour
         return Vector3.Distance(transform.position, player.position) <= attackRadius * 0.5f;
     }
 
+    bool IsInsideVillage()
+    {
+        if (saveZone == null) return false;
+        return Vector3.Distance(transform.position, saveZone.position) <= 125;
+    }
+
+    void GetAwayFromVillage()
+    {
+        Vector3 runDirection = transform.position - saveZone.position;
+        runDirection.y = 0;
+        runDirection.Normalize();
+        Vector3 runDestination = transform.position + runDirection * patrolRadius;
+        if (NavMesh.SamplePosition(runDestination, out NavMeshHit hit, patrolRadius, 1))
+        {
+            agent.SetDestination(hit.position);
+            enemyAnimator.SetBool("isAttacking", false);
+            enemyAnimator.SetBool("isChasing", false);
+            enemyAnimator.SetBool("isPatrolling", true);
+        }
+    }
+
     public bool IsRunningAway()
     {
         return (enemyAnimator.GetCurrentAnimatorStateInfo(0).IsName("Female Sword Walk") || enemyAnimator.GetCurrentAnimatorStateInfo(0).IsName("Male_Sword_Walk") || enemyAnimator.GetCurrentAnimatorStateInfo(0).IsName("Female Sword Sprint") || enemyAnimator.GetCurrentAnimatorStateInfo(0).IsName("Male Sword Sprint"));