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: