diff --git a/Assets/Prefabs/Pet/Fighter.prefab b/Assets/Prefabs/Pet/Fighter.prefab index 680dedd60bce4c637b2d3cf0809553fe3807e291..0987b18112698cf7ac7961da5c38a9576af8995f 100644 --- a/Assets/Prefabs/Pet/Fighter.prefab +++ b/Assets/Prefabs/Pet/Fighter.prefab @@ -5354,6 +5354,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: target: {fileID: 0} + previousTarget: {fileID: 0} targetCandidates: [] pet: {fileID: 4851026634604710378} --- !u!136 &3236930153314902909 diff --git a/Assets/Scenes/Level01.unity b/Assets/Scenes/Level01.unity index d30d5567fee988addbbaf10e3f0225b4ca56989a..67f96892856887593a13e13525ded304cf62fa0c 100644 --- a/Assets/Scenes/Level01.unity +++ b/Assets/Scenes/Level01.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 8900000, guid: a7bed68887a07e34394d4191b3081359, type: 3} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.13346876, g: 0.18373644, b: 0.2600042, a: 1} + m_IndirectSpecularColor: {r: 0.13346848, g: 0.18373615, b: 0.26000363, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &4 LightmapSettings: @@ -1527,7 +1527,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: c32067ea884548644b13cf9baddd4573, type: 3} m_Name: m_EditorClassIdentifier: - startingHealth: 100 + startingHealth: 300 currentHealth: 0 healthSlider: {fileID: 1027680864} damageImage: {fileID: 582750447} diff --git a/Assets/Scripts/Enemy/EnemyAttack.cs b/Assets/Scripts/Enemy/EnemyAttack.cs index 68fb0dde382be48e5ceb1d3e8098d7115eb9caae..e46f375611fa6c339a37497ced3e6d7dc6749e51 100644 --- a/Assets/Scripts/Enemy/EnemyAttack.cs +++ b/Assets/Scripts/Enemy/EnemyAttack.cs @@ -1,5 +1,7 @@ using UnityEngine; using System.Collections; +using UnityEngine.UIElements; +using System.Linq; namespace Nightmare { @@ -14,19 +16,22 @@ namespace Nightmare AudioSource swordAudio; GameObject player; + GameObject petObject; + PetHealth petObjectHealth; PlayerHealth playerHealth; EnemyHealth enemyHealth; public ShotgunEnemyShooting shotgunEnemyShooting; bool playerInRange; + bool goodPetInRange; float timer; - void Awake () + void Awake() { // Setting up the references. - player = GameObject.FindGameObjectWithTag ("Player"); - playerHealth = player.GetComponent <PlayerHealth> (); + player = GameObject.FindGameObjectWithTag("Player"); + playerHealth = player.GetComponent<PlayerHealth>(); enemyHealth = GetComponent<EnemyHealth>(); - anim = GetComponent <Animator> (); + anim = GetComponent<Animator>(); Transform swingingSword = transform.Find("Sword"); if (swingingSword != null) { @@ -46,69 +51,126 @@ namespace Nightmare StopPausible(); } - void OnTriggerEnter (Collider other) + void OnTriggerEnter(Collider other) { // If the entering collider is the player... - if(other.gameObject == player) + if (other.gameObject == player) { // ... the player is in range. playerInRange = true; } + else if (other.gameObject.CompareTag("PetHealer") || other.gameObject.CompareTag("PetFighter")) + { + goodPetInRange = true; + petObject = other.gameObject; + petObjectHealth = petObject.GetComponent<PetHealth>(); + + } + } - void OnTriggerExit (Collider other) + void OnTriggerExit(Collider other) { // If the exiting collider is the player... - if(other.gameObject == player) + if (other.gameObject == player) { // ... the player is no longer in range. playerInRange = false; } + else if (other.gameObject.CompareTag("PetHealer") || other.gameObject.CompareTag("PetFighter")) + { + goodPetInRange = false; + petObject = null; + petObjectHealth = null; + } + } + void findNearbyPet() + { + GameObject[] goodPets = GameObject.FindGameObjectsWithTag("PetHealer"); + GameObject[] fighter = GameObject.FindGameObjectsWithTag("PetFighter"); + goodPets = goodPets.Concat(fighter).ToArray(); + float shortestDistance; + float temp; + if (goodPets.Length > 0) + { + shortestDistance = Vector3.Distance(transform.position, goodPets[0].GetComponent<Transform>().position); + foreach (GameObject pet in goodPets) + { + temp = Vector3.Distance(transform.position, pet.GetComponent<Transform>().position); + if (temp < shortestDistance) + { + shortestDistance = temp; + petObject = pet; + petObjectHealth = petObject.GetComponent<PetHealth>(); + + } + } + } + } - void Update () + void Update() { if (isPaused) return; - + + findNearbyPet(); // Add the time since Update was last called to the timer. timer += Time.deltaTime; // If the timer exceeds the time between attacks, the player is in range and this enemy is alive... - if(timer >= timeBetweenAttacks && enemyHealth.CurrentHealth() > 0) + if (timer >= timeBetweenAttacks && enemyHealth.CurrentHealth() > 0) { // ... attack. if (shotgunEnemyShooting) { // Calculate the distance between the enemy and the player - float distanceToPlayer = Vector3.Distance(transform.position, player.transform.position); - if (distanceToPlayer < 10) ShotgunAttack(); + ShotgunAttack(); + } - else if (playerInRange) SwordAttack(); + else if (playerInRange || goodPetInRange) SwordAttack(); + + } // If the player has zero or less health... - if(playerHealth.currentHealth <= 0) + if (playerHealth.currentHealth <= 0) { // ... tell the animator the player is dead. - anim.SetTrigger ("PlayerDead"); + anim.SetTrigger("PlayerDead"); } } - void ShotgunAttack () + void ShotgunAttack() { // Reset the timer. timer = 0f; + float distanceToPlayer = Vector3.Distance(transform.position, player.transform.position); + float distanceToPet; - // If the player has health to lose... - if(playerHealth.currentHealth > 0) + if (distanceToPlayer < 10) { - // Rotate the enemy to face the player - transform.LookAt(player.transform.position); + // If the player has health to lose... + if (playerHealth.currentHealth > 0) + { + // Rotate the enemy to face the player + transform.LookAt(player.transform.position); - // ... damage the player. - shotgunEnemyShooting.Shoot(attackDamage); + // ... damage the player. + shotgunEnemyShooting.Shoot(attackDamage); + } } + else if (petObject != null) + { + distanceToPet = Vector3.Distance(transform.position, petObject.transform.position); + if (petObject.GetComponent<PetHealth>().currentHealth > 0 && distanceToPet < 10) + { + transform.LookAt(petObject.transform.position); + shotgunEnemyShooting.Shoot(attackDamage); + } + } + + } void SwordAttack() @@ -117,14 +179,30 @@ namespace Nightmare timer = 0f; // If the player has health to lose... - if (playerHealth.currentHealth > 0) + if (playerHealth != null && playerHealth.currentHealth > 0) { // ... damage the player. // If sword - if (swordAnim) swordAnim.SetTrigger("Attack"); - if (swordAudio) swordAudio.Play(); - playerHealth.TakeDamage(attackDamage); + if (playerInRange) + { + if (swordAnim) swordAnim.SetTrigger("Attack"); + if (swordAudio) swordAudio.Play(); + playerHealth.TakeDamage(attackDamage); + } + //If the pet has health to lose + } + else if (petObjectHealth != null && petObjectHealth.currentHealth > 0) + { + // and in range + if (goodPetInRange) + { + if (swordAnim) swordAnim.SetTrigger("Attack"); + if (swordAudio) swordAudio.Play(); + petObjectHealth.TakeDamage(attackDamage); + + } } + } } } \ No newline at end of file diff --git a/Assets/Scripts/Enemy/JenderalAbility.cs b/Assets/Scripts/Enemy/JenderalAbility.cs index de72943228f5f6cc0a2bc10a0bad9d5eebfd89ac..246f6b293cfe8eb1f552fa02c20f80d7e39c27fd 100644 --- a/Assets/Scripts/Enemy/JenderalAbility.cs +++ b/Assets/Scripts/Enemy/JenderalAbility.cs @@ -3,12 +3,17 @@ using System.Collections.Generic; using UnityEngine; using Nightmare; +using System.Linq; + public class JenderalAbility : MonoBehaviour { Animator anim; GameObject player; + GameObject petObject; PlayerHealth playerHealth; + PetHealth petObjectHealth; bool playerInRange; + bool petInRange; float timer; public int damageOvertime = 10; public float abilityRadius = 5f; @@ -27,9 +32,10 @@ public class JenderalAbility : MonoBehaviour { // Check if player is in radius of its unique ability CheckPlayerInRange(); + CheckPetInRange(); timer += Time.deltaTime; - if (timer >= 1 && playerInRange) + if (timer >= 1 && (playerInRange || petInRange)) { Ability(); } @@ -39,6 +45,32 @@ public class JenderalAbility : MonoBehaviour anim.SetTrigger("PlayerDead"); } } + void findNearbyPet() + { + GameObject[] goodPets; + GameObject[] fighter; + goodPets = GameObject.FindGameObjectsWithTag("PetHealer"); + fighter = GameObject.FindGameObjectsWithTag("PetFighter"); + goodPets = goodPets.Concat(fighter).ToArray(); + float shortestDistance; + float temp; + if (goodPets != null && goodPets.Length > 0) + { + shortestDistance = Vector3.Distance(transform.position, goodPets[0].GetComponent<Transform>().position); + foreach (GameObject pet in goodPets) + { + temp = Vector3.Distance(transform.position, pet.GetComponent<Transform>().position); + if (temp < shortestDistance) + { + shortestDistance = temp; + petObject = pet; + petObjectHealth = petObject.GetComponent<PetHealth>(); + + } + } + } + + } private void CheckPlayerInRange() { @@ -57,16 +89,57 @@ public class JenderalAbility : MonoBehaviour } } + private void CheckPetInRange() + { + findNearbyPet(); + if (petObject != null) + { + float distance = Mathf.Sqrt(Mathf.Pow(transform.position.x - petObject.transform.position.x, 2) + + Mathf.Pow(transform.position.y - petObject.transform.position.y, 2) + + Mathf.Pow(transform.position.z - petObject.transform.position.z, 2)); + + + if (distance <= abilityRadius) + { + petInRange = true; + } + else + { + petInRange = false; + } + } + + + } + + + + private void Ability() { // Reset timer timer = 0f; - // If the player has health to lose... - if (playerHealth.currentHealth > 0) + // If the player in range + if (playerInRange) { - // ... damage the player. - playerHealth.TakeDamage(damageOvertime); + // if the player has health to lose + if (playerHealth.currentHealth > 0) + { + // ... damage the player. + playerHealth.TakeDamage(damageOvertime); + } + // if the pet in range } + else if (petInRange) + { + // if the pet has health to lose + if (petObjectHealth.currentHealth > 0) + { + // ... damage the pet + petObjectHealth.TakeDamage(damageOvertime); + } + } + } } diff --git a/Assets/Scripts/Enemy/RajaAbility.cs b/Assets/Scripts/Enemy/RajaAbility.cs index f26e31ea3ab05848108928130c52202a53523b77..eaaad180e1e623858517b394ec108b62dd148796 100644 --- a/Assets/Scripts/Enemy/RajaAbility.cs +++ b/Assets/Scripts/Enemy/RajaAbility.cs @@ -2,15 +2,21 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; using Nightmare; +using System.Linq; +using UnityEngine.AI; public class RajaAbility : MonoBehaviour { Animator anim; GameObject player; PlayerHealth playerHealth; + GameObject petObject; + PetHealth petObjectHealth; + NavMeshAgent navmeshPet; PlayerMovement playerMovement; WeaponManager weaponManager; bool playerInRange; + bool petInRange; float timer; public int damageOvertime = 10; public float abilityRadius = 7f; @@ -37,9 +43,10 @@ public class RajaAbility : MonoBehaviour { // Check if player is in radius of its unique ability CheckPlayerInRange(); + CheckPetInRange(); timer += Time.deltaTime; - if (timer >= 1 && playerInRange) + if (timer >= 1 && (playerInRange || petInRange)) { Ability(); } @@ -48,6 +55,23 @@ public class RajaAbility : MonoBehaviour { playerMovement.speed = playerMovement.originSpeed; } + if (!petInRange && petObject != null) + { + if (petObject.GetComponent<Follow>() != null) + { + navmeshPet.speed = petObject.GetComponent<Follow>().initialSpeed; + } + else if (petObject.GetComponent<FighterMove>() != null) + { + navmeshPet.speed = petObject.GetComponent<FighterMove>().initialSpeed; + } + + if (petObject.GetComponent<FighterAttack>() != null) + { + petObject.GetComponent<FighterAttack>().currentDamage = petObject.GetComponent<FighterAttack>().initialDamage; + } + + } if (playerHealth.currentHealth <= 0) { @@ -55,6 +79,52 @@ public class RajaAbility : MonoBehaviour } } + void findNearbyPet() + { + GameObject[] goodPets = GameObject.FindGameObjectsWithTag("PetHealer"); + GameObject[] fighter = GameObject.FindGameObjectsWithTag("PetFighter"); + goodPets = goodPets.Concat(fighter).ToArray(); + float shortestDistance; + float temp; + if (goodPets.Length > 0) + { + shortestDistance = Vector3.Distance(transform.position, goodPets[0].GetComponent<Transform>().position); + foreach (GameObject pet in goodPets) + { + temp = Vector3.Distance(transform.position, pet.GetComponent<Transform>().position); + if (temp < shortestDistance) + { + shortestDistance = temp; + petObject = pet; + petObjectHealth = petObject.GetComponent<PetHealth>(); + navmeshPet = petObject.GetComponent<NavMeshAgent>(); + } + } + } + + } + private void CheckPetInRange() + { + findNearbyPet(); + if (petObject != null) + { + float distance = Mathf.Sqrt(Mathf.Pow(transform.position.x - petObject.transform.position.x, 2) + + Mathf.Pow(transform.position.y - petObject.transform.position.y, 2) + + Mathf.Pow(transform.position.z - petObject.transform.position.z, 2)); + + + if (distance <= abilityRadius) + { + petInRange = true; + } + else + { + petInRange = false; + } + } + + + } private void CheckPlayerInRange() { float distance = Mathf.Sqrt(Mathf.Pow(transform.position.x - player.transform.position.x, 2) + @@ -78,17 +148,32 @@ public class RajaAbility : MonoBehaviour timer = 0f; // If the player has health to lose... - if (playerHealth.currentHealth > 0) + if (playerHealth.currentHealth > 0 && playerInRange) { // ... damage the player. playerHealth.TakeDamage(damageOvertime); - if (!playerMovement.isTwoTimeSpeed){ + if (!playerMovement.isTwoTimeSpeed) + { playerMovement.speed -= playerMovement.speed * 0.2f; } - if (!weaponManager.cheatOn){ + if (!weaponManager.cheatOn) + { weaponManager.baseDamage -= weaponManager.baseDamage * 0.2f; } } + if (petObjectHealth.currentHealth > 0 && petInRange) + { + petObjectHealth.TakeDamage(damageOvertime); + navmeshPet.speed -= navmeshPet.speed * 0.2f; + + if (petObject.GetComponent<FighterAttack>() != null) + { + petObject.GetComponent<FighterAttack>().currentDamage -= 0.2 * petObject.GetComponent<FighterAttack>().currentDamage; + + } + + } } -} \ No newline at end of file +} + diff --git a/Assets/Scripts/Pet/FighterAttack.cs b/Assets/Scripts/Pet/FighterAttack.cs index 274cad8b782c5fe46d27bc8e7079e5efbf80dddf..138fd4b092d34e09ef00d88f8d21736f175b3a86 100644 --- a/Assets/Scripts/Pet/FighterAttack.cs +++ b/Assets/Scripts/Pet/FighterAttack.cs @@ -7,7 +7,8 @@ using static UnityEngine.GraphicsBuffer; public class FighterAttack : PausibleObject { public float intervalAttack = 0.7f; - public int damage = 3; + public double initialDamage = 5; + public double currentDamage; PetHealth health; GameObject enemy; Vector3 hitpoint; @@ -19,6 +20,7 @@ public class FighterAttack : PausibleObject health = GetComponent<PetHealth>(); anim = GetComponent<Animator>(); StartPausible(); + currentDamage = initialDamage; } void OnDestroy() @@ -54,6 +56,7 @@ public class FighterAttack : PausibleObject } } + IEnumerator ResetAttackAnimation() { @@ -72,7 +75,7 @@ public class FighterAttack : PausibleObject enemyCurrentHealth = (int)enemyHealth.CurrentHealth(); if (enemyCurrentHealth > 0) { - enemyHealth.TakeDamage(damage, hitpoint); + enemyHealth.TakeDamage(currentDamage, hitpoint); anim.SetBool("IsAttacking", true); StartCoroutine(ResetAttackAnimation()); } diff --git a/Assets/Scripts/Pet/FighterMove.cs b/Assets/Scripts/Pet/FighterMove.cs index 1399a83651b6853af127b374a1e137f323246dbc..3a16f6a4447c1da5aec8f972176270be1e4ca1b1 100644 --- a/Assets/Scripts/Pet/FighterMove.cs +++ b/Assets/Scripts/Pet/FighterMove.cs @@ -7,40 +7,64 @@ using UnityEngine.AI; public class FighterMove : MonoBehaviour { public GameObject target; + public GameObject previousTarget; public GameObject[] targetCandidates; public NavMeshAgent pet; PetHealth goodPetHealth; + public float initialSpeed; void Start() { pet = GetComponent<NavMeshAgent>(); goodPetHealth = GetComponent<PetHealth>(); + initialSpeed = pet.speed; } + void findNearbyEnermy() + { + targetCandidates = GameObject.FindGameObjectsWithTag("Enemy"); + if(targetCandidates.Length > 0) + { + target = targetCandidates[0]; + float shortestDistance = Vector3.Distance(this.transform.position, target.transform.position); + float current; + for (int i = 0; i < targetCandidates.Length; i++) + { + current = Vector3.Distance(this.transform.position, targetCandidates[i].transform.position); + if (current > shortestDistance) + { + shortestDistance = current; + target = targetCandidates[i]; + } + } + } + + } + void Update() { if (goodPetHealth != null && !goodPetHealth.isDead()) { - targetCandidates = GameObject.FindGameObjectsWithTag("Enemy"); - if (targetCandidates.Length > 0) + if (previousTarget != null && previousTarget.GetComponent<EnemyHealth>().currentHealth > 0) + { + pet.SetDestination(previousTarget.transform.position); + } + else { - target = targetCandidates[0]; - float shortestDistance = Vector3.Distance(this.transform.position, target.transform.position); - float current; - for (int i = 0; i < targetCandidates.Length; i++) + findNearbyEnermy(); + if(target != null) { - current = Vector3.Distance(this.transform.position, targetCandidates[i].transform.position); - if (current > shortestDistance) - { - shortestDistance = current; - target = targetCandidates[i]; - } + pet.SetDestination(target.transform.position); + previousTarget = target; } - pet.SetDestination(target.transform.position); + } } + + + } } diff --git a/Assets/Scripts/Pet/Follow.cs b/Assets/Scripts/Pet/Follow.cs index b46481f9dbc617daf62f46374a92e08393a9d0f3..5b2330e8998802ace6241a608465df6ed87a388f 100644 --- a/Assets/Scripts/Pet/Follow.cs +++ b/Assets/Scripts/Pet/Follow.cs @@ -10,12 +10,14 @@ public class Follow : MonoBehaviour NavMeshAgent pet; public Transform player; PetHealth petHealth; + public float initialSpeed; void Start() { petHealth = GetComponent<PetHealth>(); pet = GetComponent<NavMeshAgent>(); player = GameObject.FindGameObjectWithTag("Player").transform; + initialSpeed = (float)pet.speed; } // Update is called once per frame diff --git a/Assets/Scripts/Pet/GoodPetHealth.cs b/Assets/Scripts/Pet/GoodPetHealth.cs index b1e1705040b9dea1181a17c2ab02dc6066031b1b..c90b7fbfa88659878ad2daf094c6884ec3c43a39 100644 --- a/Assets/Scripts/Pet/GoodPetHealth.cs +++ b/Assets/Scripts/Pet/GoodPetHealth.cs @@ -17,8 +17,7 @@ public class PetHealth : MonoBehaviour void Start() { - GameObject player = GameObject.FindGameObjectWithTag ("Player"); - playerHealth = player.GetComponent<PlayerHealth>(); + playerHealth = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerHealth>(); anim = GetComponent<Animator>(); } @@ -29,6 +28,7 @@ public class PetHealth : MonoBehaviour { currentHealth -= amount; anim.SetBool("IsAttacked", true); + Debug.Log("update health pet: " + currentHealth); StartCoroutine(ResetIsAttacked()); } @@ -61,6 +61,8 @@ public class PetHealth : MonoBehaviour void Update() { + + if(playerHealth.currentHealth <= 0) { currentHealth = 0; diff --git a/Assets/Scripts/Pet/Healer.cs b/Assets/Scripts/Pet/Healer.cs index 42ff1566be8468460855bc8010748e64d5a7e888..7a4a3918e382a21d054b6648a6d1e00317c7f913 100644 --- a/Assets/Scripts/Pet/Healer.cs +++ b/Assets/Scripts/Pet/Healer.cs @@ -10,17 +10,14 @@ public class PetHealer : MonoBehaviour public float healingInterval = 2; void Start() { - GameObject player = GameObject.FindGameObjectWithTag ("Player"); - playerHealth = player.GetComponent<PlayerHealth>(); + playerHealth = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerHealth>(); StartCoroutine(healPlayer()); - Debug.Log(playerHealth.currentHealth); } private IEnumerator healPlayer() { while (true) { - Debug.Log(playerHealth.currentHealth); if (playerHealth.currentHealth > 0 && playerHealth.currentHealth < playerHealth.startingHealth) { playerHealth.GotHealed(healingAmount); diff --git a/Assets/Scripts/Weapon/ShotgunEnemyShooting.cs b/Assets/Scripts/Weapon/ShotgunEnemyShooting.cs index c40c69a87d0a2e25f27d67bf09edbf85a32e29a9..24cfe158069a4abf64e0f8520b214c34ff2670bb 100644 --- a/Assets/Scripts/Weapon/ShotgunEnemyShooting.cs +++ b/Assets/Scripts/Weapon/ShotgunEnemyShooting.cs @@ -97,13 +97,20 @@ public class ShotgunEnemyShooting : PausibleObject { // Try and find an PlayerHealth script on the gameobject hit. PlayerHealth playerHealth = shootHit.collider.GetComponent<PlayerHealth>(); - + PetHealth petHealth = shootHit.collider.GetComponent<PetHealth>(); + double damage; if (playerHealth != null) { // the damage taken is based on the distance from the player to the enemy - double damage = attackDamage - Vector3.Distance(transform.position, playerHealth.transform.position); + damage = attackDamage - Vector3.Distance(transform.position, playerHealth.transform.position); playerHealth.TakeDamage(damage); } + // check if there is pet nearby, if no player + else if(petHealth != null) + { + damage = attackDamage - Vector3.Distance(transform.position, petHealth.transform.position); + petHealth.TakeDamage(damage); + } // Set the second position of the line renderer to the point the raycast hit. gunLines[i].SetPosition(1, shootHit.point); diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index e3269c93da0696cc9800511d9c9b30bc2f3c6d69..bc915f164c30c08772499ce93c9d96800b8e9c53 100644 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2022.3.25f1 -m_EditorVersionWithRevision: 2022.3.25f1 (530ae0ba3889) +m_EditorVersion: 2022.3.24f1 +m_EditorVersionWithRevision: 2022.3.24f1 (334eb2a0b267) diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 6f95eba278c7b7cfd145693de6917c6dbde38d21..7bb75afe4bbf934353fa9bc71231f722018bfab8 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -14,14 +14,11 @@ TagManager: - Sword - WeaponManager - Pet -<<<<<<< HEAD - Announcement - Quest -======= - PetBuff - PetFighter - PetHealer ->>>>>>> 8795b50a017b190d698825c55eacf05b1fa8024f layers: - Default - TransparentFX