diff --git a/Assets/Scripts/Pet.meta b/Assets/Scripts/Pet.meta
new file mode 100644
index 0000000000000000000000000000000000000000..906d9df54f840a4d37257e79715d4e8a6b816a1c
--- /dev/null
+++ b/Assets/Scripts/Pet.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 44c5a4345914ba142a9042e0a9f612d3
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scripts/Pet/PetAttacker.cs b/Assets/Scripts/Pet/PetAttacker.cs
new file mode 100644
index 0000000000000000000000000000000000000000..1f8a10767fcf8e69820c3944290a7c71bf044558
--- /dev/null
+++ b/Assets/Scripts/Pet/PetAttacker.cs
@@ -0,0 +1,71 @@
+using UnityEngine;
+
+public class PetAttacker : MonoBehaviour
+{
+    public int damageAmount = 20;
+    public string targetTag = "Enemy";
+    public ParticleSystem hitParticles; 
+
+    private void Update()
+    {
+        FindNearestEnemy();
+    }
+
+    private void FindNearestEnemy()
+    {
+        GameObject[] enemies = GameObject.FindGameObjectsWithTag(targetTag);
+        float closestDistanceSqr = Mathf.Infinity;
+        GameObject nearestEnemy = null;
+
+        foreach (GameObject enemy in enemies)
+        {
+            float distanceToEnemy = (enemy.transform.position - transform.position).sqrMagnitude;
+            if (distanceToEnemy < closestDistanceSqr)
+            {
+                closestDistanceSqr = distanceToEnemy;
+                nearestEnemy = enemy;
+            }
+        }
+
+        if (nearestEnemy != null)
+        {
+            AttackEnemy(nearestEnemy);
+        }
+    }
+
+    private void AttackEnemy(GameObject enemy)
+    {
+        if (enemy.CompareTag("Raja"))
+        {
+            RajaHealth rajaHealth = enemy.GetComponent<RajaHealth>();
+            if (rajaHealth != null)
+            {
+                rajaHealth.TakeDamage(damageAmount, hitParticles.transform.position);
+            }
+        }
+        else if (enemy.CompareTag("Jenderal"))
+        {
+            JenderalHealth jenderalHealth = enemy.GetComponent<JenderalHealth>();
+            if (jenderalHealth != null)
+            {
+                jenderalHealth.TakeDamage(damageAmount, hitParticles.transform.position);
+            }
+        }
+        else if (enemy.CompareTag("KepalaKeroco"))
+        {
+            KepalaKerocoHealth kepalaKerocoHealth = enemy.GetComponent<KepalaKerocoHealth>();
+            if (kepalaKerocoHealth != null)
+            {
+                kepalaKerocoHealth.TakeDamage(damageAmount, hitParticles.transform.position);
+            }
+        }
+        else if (enemy.CompareTag("Keroco"))
+        {
+            KerocoHealth kerocoHealth = enemy.GetComponent<KerocoHealth>();
+            if (kerocoHealth != null)
+            {
+                kerocoHealth.TakeDamage(damageAmount, hitParticles.transform.position);
+            }
+        }
+    }
+}
diff --git a/Assets/Scripts/Pet/PetAttacker.cs.meta b/Assets/Scripts/Pet/PetAttacker.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..59b52fa5478863873e4dbd80761ffd2306e9d8f4
--- /dev/null
+++ b/Assets/Scripts/Pet/PetAttacker.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 76ae8ec4b344d5d4c81eb81460792e9e
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scripts/Pet/PetHealer.cs b/Assets/Scripts/Pet/PetHealer.cs
new file mode 100644
index 0000000000000000000000000000000000000000..02002889525dae85aca6ef40f290b06a281ab456
--- /dev/null
+++ b/Assets/Scripts/Pet/PetHealer.cs
@@ -0,0 +1,24 @@
+using Nightmare;
+using UnityEngine;
+
+public class PetHealer : MonoBehaviour
+{
+    public int healAmount = 10;
+    public float healInterval = 2f;
+
+    private PlayerHealth playerHealth;
+
+    private void Awake()
+    {
+        playerHealth = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerHealth>();
+        InvokeRepeating(nameof(HealPlayer), healInterval, healInterval);
+    }
+
+    private void HealPlayer()
+    {
+        if (playerHealth != null)
+        {
+            playerHealth.currentHealth += healAmount;
+        }
+    }
+}
diff --git a/Assets/Scripts/Pet/PetHealer.cs.meta b/Assets/Scripts/Pet/PetHealer.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..23402b2f77cd52201171c80f555b960a57f02b58
--- /dev/null
+++ b/Assets/Scripts/Pet/PetHealer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 335afb094ee9bb943978eb1f537bf903
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scripts/Pet/PetHeatlh.cs b/Assets/Scripts/Pet/PetHeatlh.cs
new file mode 100644
index 0000000000000000000000000000000000000000..edfd7ff2d6097d5e19d8e00117980bb538c1b038
--- /dev/null
+++ b/Assets/Scripts/Pet/PetHeatlh.cs
@@ -0,0 +1,45 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class PetHeatlh : MonoBehaviour
+{
+    public int startingHealth = 100;
+    public int currentHealth;
+
+    public bool isDead;
+    public bool damaged;
+
+    void Awake()
+    {
+        currentHealth = startingHealth;
+    }
+
+    void Update()
+    {
+        
+    }
+
+    public void TakeDamage(int amount)
+    {
+        currentHealth -= amount;
+
+        if (currentHealth <= 0)
+        {
+            currentHealth = 0;
+            isDead = true;
+
+            Destroy(gameObject);
+        }
+        else
+        {
+            damaged = true;
+        }
+    }
+
+    public void CheatPetFullHP()
+    public void CheatPetFullHP()
+    {
+        currentHealth = 100;
+    }
+}
diff --git a/Assets/Scripts/Pet/PetHeatlh.cs.meta b/Assets/Scripts/Pet/PetHeatlh.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..0abccec50df5c7285ef65c71f592f996dfd7203b
--- /dev/null
+++ b/Assets/Scripts/Pet/PetHeatlh.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e13c7ffbce9ab78478de6505a5d1927d
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scripts/Pet/PetIncreaser.cs b/Assets/Scripts/Pet/PetIncreaser.cs
new file mode 100644
index 0000000000000000000000000000000000000000..883d0f7e12c1ed36d6aa8b81b79d588b47f9bb67
--- /dev/null
+++ b/Assets/Scripts/Pet/PetIncreaser.cs
@@ -0,0 +1,26 @@
+using UnityEngine;
+
+public class PetIncreaser : MonoBehaviour
+{
+    public float attackIncreasePercentage = 20f;
+
+    private void OnTriggerEnter(Collider other)
+    {
+        if (other.CompareTag("Jenderal"))
+        {
+            JenderalAttack jenderalShooting = other.GetComponent<JenderalAttack>();
+            if (jenderalShooting != null)
+            {
+                jenderalShooting.IncreaseAttack(attackIncreasePercentage);
+            }
+        }
+        else if (other.CompareTag("Raja"))
+        {
+            RajaAttack rajaShooting = other.GetComponent<RajaAttack>();
+            if (rajaShooting != null)
+            {
+                rajaShooting.IncreaseAttack(attackIncreasePercentage);
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/Pet/PetIncreaser.cs.meta b/Assets/Scripts/Pet/PetIncreaser.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..38a42540de3ec9012b780ebdeaf92987ac2d7bb5
--- /dev/null
+++ b/Assets/Scripts/Pet/PetIncreaser.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2a6ad8056f417284fbfc3a518b889690
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scripts/Pet/PetMovement.cs b/Assets/Scripts/Pet/PetMovement.cs
new file mode 100644
index 0000000000000000000000000000000000000000..70fdead090c5b518efdd11eee72d865ea4d21750
--- /dev/null
+++ b/Assets/Scripts/Pet/PetMovement.cs
@@ -0,0 +1,33 @@
+using UnityEngine;
+
+public class PetMovement : MonoBehaviour
+{
+    public float followDistance = 4f; 
+    public string playerTag = "Player";
+
+    private Transform player;
+
+    void Awake()
+    {
+        player = GameObject.FindGameObjectWithTag(playerTag).transform;
+
+        if (player == null)
+        {
+            Debug.LogError("Player not found! Make sure the player is tagged correctly.");
+        }
+    }
+
+    void Update()
+    {
+        if (player != null)
+        {
+            Vector3 directionToPlayer = player.position - transform.position;
+
+            //float distanceToPlayer = directionToPlayer.magnitude;
+
+            Vector3 targetPosition = player.position - directionToPlayer.normalized * followDistance;
+
+            transform.position = Vector3.Lerp(transform.position, targetPosition, Time.deltaTime);
+        }
+    }
+}
diff --git a/Assets/Scripts/Pet/PetMovement.cs.meta b/Assets/Scripts/Pet/PetMovement.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..39f80746450416f07b1be746ac14f613d62ceea3
--- /dev/null
+++ b/Assets/Scripts/Pet/PetMovement.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e8e40418ab897f743a587a87b683168d
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: