diff --git a/Assets/Prefabs/Mobs/GenerallMob.prefab b/Assets/Prefabs/Mobs/GenerallMob.prefab index 82cec88a8f7c72d5aa2191a9b48cf9f4b209b386..0947b149fbc76ca96610fb2068c928b385874fbf 100644 --- a/Assets/Prefabs/Mobs/GenerallMob.prefab +++ b/Assets/Prefabs/Mobs/GenerallMob.prefab @@ -1363,6 +1363,7 @@ MonoBehaviour: dpsDamage: 2 kerocoPrefab: {fileID: 2325763269826187407, guid: e98c9a00b4e345048863563f7f852572, type: 3} throwerPrefab: {fileID: 2325763269826187407, guid: 623ad408d8aa1e14fab3a04a668252ff, type: 3} + hansenPrefab: {fileID: 4114711531679115201, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} spawnArea: {fileID: 7277707005263899144} spawnCooldown: 14 ChaseProperties: diff --git a/Assets/Prefabs/Pets/Hansen.prefab b/Assets/Prefabs/Pets/Hansen.prefab index 79c9ddec136d479fbde52834da7e398d9fcb5574..fcc4d7f39154d7f667371b2a98bf545d690a0dd1 100644 --- a/Assets/Prefabs/Pets/Hansen.prefab +++ b/Assets/Prefabs/Pets/Hansen.prefab @@ -557,6 +557,10 @@ PrefabInstance: propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} + - target: {fileID: 1434627103891488, guid: 52d340ed9c2714c4f8aabf1f82df1b58, type: 3} + propertyPath: m_TagString + value: Enemy + objectReference: {fileID: 0} - target: {fileID: 4368491947231596, guid: 52d340ed9c2714c4f8aabf1f82df1b58, type: 3} propertyPath: m_LocalPosition.x value: 94.54 @@ -634,6 +638,9 @@ PrefabInstance: - targetCorrespondingSourceObject: {fileID: 1434627103891488, guid: 52d340ed9c2714c4f8aabf1f82df1b58, type: 3} insertIndex: -1 addedObject: {fileID: 191768514851741588} + - targetCorrespondingSourceObject: {fileID: 1434627103891488, guid: 52d340ed9c2714c4f8aabf1f82df1b58, type: 3} + insertIndex: -1 + addedObject: {fileID: 4030753692326633428} m_SourcePrefab: {fileID: 100100000, guid: 52d340ed9c2714c4f8aabf1f82df1b58, type: 3} --- !u!4 &4112060795234176653 stripped Transform: @@ -697,3 +704,26 @@ MonoBehaviour: target: {fileID: 0} speed: 5 boostAmount: 0.2 +--- !u!136 &4030753692326633428 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4114711531679115201} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Height: 1 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} diff --git a/Assets/Scenes/Main 1.unity b/Assets/Scenes/Main 1.unity index fb66b8aef1b6604c59598d336b388cb0a7d7076d..5715899b13ceb3aaaa7eaf9f656b5c5931b152c1 100644 --- a/Assets/Scenes/Main 1.unity +++ b/Assets/Scenes/Main 1.unity @@ -684,6 +684,8 @@ MonoBehaviour: weaponSwitching: {fileID: 1798128231} shop: {fileID: 1982473865} boss: {fileID: 286642978} + hansen: {fileID: 751208737} + hansen2: {fileID: 680231366} bossAnim: {fileID: 328399000} questStartMark: 00000000020000001000000010000000 dialogueManager: {fileID: 1606154424} @@ -1784,6 +1786,96 @@ MonoBehaviour: m_hasFontAssetChanged: 0 m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1001 &201770540 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1175606920} + m_Modifications: + - target: {fileID: 191768514851741588, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: target + value: + objectReference: {fileID: 1841674094} + - target: {fileID: 4112060795234176653, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_LocalPosition.x + value: 47.38 + objectReference: {fileID: 0} + - target: {fileID: 4112060795234176653, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_LocalPosition.y + value: 22.22 + objectReference: {fileID: 0} + - target: {fileID: 4112060795234176653, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_LocalPosition.z + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 4112060795234176653, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4112060795234176653, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4112060795234176653, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4112060795234176653, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4112060795234176653, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: -90 + objectReference: {fileID: 0} + - target: {fileID: 4112060795234176653, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4112060795234176653, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4114711531679115201, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_Name + value: Hansen + objectReference: {fileID: 0} + - target: {fileID: 4114711531679115201, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4114711531679115201, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_TagString + value: Enemy + objectReference: {fileID: 0} + - target: {fileID: 5857959205333623046, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5857959205333623046, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 9013331798879609954, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 9013331798879609954, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} +--- !u!4 &201770541 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4112060795234176653, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + m_PrefabInstance: {fileID: 201770540} + m_PrefabAsset: {fileID: 0} --- !u!1 &202422895 GameObject: m_ObjectHideFlags: 0 @@ -7541,6 +7633,11 @@ MonoBehaviour: m_hasFontAssetChanged: 0 m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &680231366 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 4114711531679115201, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + m_PrefabInstance: {fileID: 821152590} + m_PrefabAsset: {fileID: 0} --- !u!1 &748939475 GameObject: m_ObjectHideFlags: 0 @@ -7643,6 +7740,11 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 +--- !u!1 &751208737 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 4114711531679115201, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + m_PrefabInstance: {fileID: 201770540} + m_PrefabAsset: {fileID: 0} --- !u!1 &754132476 GameObject: m_ObjectHideFlags: 0 @@ -8275,6 +8377,96 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: -0.547, z: 0} +--- !u!1001 &821152590 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1175606920} + m_Modifications: + - target: {fileID: 191768514851741588, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: target + value: + objectReference: {fileID: 1841674094} + - target: {fileID: 4112060795234176653, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_LocalPosition.x + value: 47.38 + objectReference: {fileID: 0} + - target: {fileID: 4112060795234176653, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_LocalPosition.y + value: 22.22 + objectReference: {fileID: 0} + - target: {fileID: 4112060795234176653, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_LocalPosition.z + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 4112060795234176653, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4112060795234176653, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4112060795234176653, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4112060795234176653, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4112060795234176653, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: -90 + objectReference: {fileID: 0} + - target: {fileID: 4112060795234176653, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4112060795234176653, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4114711531679115201, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_Name + value: Hansen (1) + objectReference: {fileID: 0} + - target: {fileID: 4114711531679115201, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4114711531679115201, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_TagString + value: Enemy + objectReference: {fileID: 0} + - target: {fileID: 5857959205333623046, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5857959205333623046, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 9013331798879609954, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 9013331798879609954, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} +--- !u!4 &821152591 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4112060795234176653, guid: 759a19641eb808e47b0b7ebd00769739, type: 3} + m_PrefabInstance: {fileID: 821152590} + m_PrefabAsset: {fileID: 0} --- !u!1 &829854773 GameObject: m_ObjectHideFlags: 0 @@ -15040,6 +15232,8 @@ Transform: - {fileID: 1841674092} - {fileID: 1738628410} - {fileID: 1752539955} + - {fileID: 201770541} + - {fileID: 821152591} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1192642865 @@ -26633,7 +26827,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2998286262155772704, guid: 5397d653643e3fc41b28092f72b8191b, type: 3} propertyPath: m_LocalPosition.z - value: 24.84 + value: 25 objectReference: {fileID: 0} - target: {fileID: 2998286262155772704, guid: 5397d653643e3fc41b28092f72b8191b, type: 3} propertyPath: m_LocalRotation.w @@ -27749,6 +27943,17 @@ Transform: m_CorrespondingSourceObject: {fileID: 2998286262155772704, guid: 5397d653643e3fc41b28092f72b8191b, type: 3} m_PrefabInstance: {fileID: 1841674091} m_PrefabAsset: {fileID: 0} +--- !u!114 &1841674094 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: -6686281574365877710, guid: 5397d653643e3fc41b28092f72b8191b, type: 3} + m_PrefabInstance: {fileID: 1841674091} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 286642978} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 650cbee356c161842b1b59fe95c503b8, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &1851030069 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Cutscene/InGameTimelineManager.cs b/Assets/Scripts/Cutscene/InGameTimelineManager.cs index 3851333bb43fe939fc24f85fcc1d60f36e6bbf0e..35cfc3bea4e0c47aad315111a2ccc72457245a9d 100644 --- a/Assets/Scripts/Cutscene/InGameTimelineManager.cs +++ b/Assets/Scripts/Cutscene/InGameTimelineManager.cs @@ -20,6 +20,8 @@ public class InGameTimelineManager : TimelineManager [SerializeField] private WeaponSwitching weaponSwitching; [SerializeField] private Shop shop; [SerializeField] private GameObject boss; + [SerializeField] private GameObject hansen; + [SerializeField] private GameObject hansen2; [SerializeField] private Animator bossAnim; [SerializeField] private int[] questStartMark; [SerializeField] private DialogueManager dialogueManager; @@ -129,6 +131,8 @@ public class InGameTimelineManager : TimelineManager boss.GetComponent<Mob>().enabled = false; boss.SetActive(true); bossAnim.SetBool("Idle", true); + + break; case 18: audioManager.PlayBGMCrossfade("Termini"); @@ -143,8 +147,12 @@ public class InGameTimelineManager : TimelineManager player.transform.position = pos3; boss.GetComponent<Mob>().enabled = true; + boss.SetActive(true); bossAnim.SetBool("Idle", false); + hansen.SetActive(true); + hansen2.SetActive(true); + break; default: break; diff --git a/Assets/Scripts/Mobs/General/GeneralController.cs b/Assets/Scripts/Mobs/General/GeneralController.cs index e4284adc1b41d7860c9450c6541a01a8634433ae..40a9a9d5c8c9b2030f972bdcd89a71d440e9f0cf 100644 --- a/Assets/Scripts/Mobs/General/GeneralController.cs +++ b/Assets/Scripts/Mobs/General/GeneralController.cs @@ -17,6 +17,7 @@ public class GeneralController : Mob [Header("Spawn Properties")] [SerializeField] private GameObject kerocoPrefab; [SerializeField] private GameObject throwerPrefab; + [SerializeField] private GameObject hansenPrefab; [SerializeField] private SphereRadius spawnArea; [SerializeField] private float spawnCooldown; private float spawnTimer; @@ -45,8 +46,32 @@ public class GeneralController : Mob agent = GetComponent<NavMeshAgent>(); playerMask = LayerMask.GetMask("Player"); spawnTimer = spawnCooldown / 2; + + if (hansenPrefab != null) + { + GameObject hansen = Instantiate(hansenPrefab, transform.position, Quaternion.identity); // Spawns Hansen at the General's position + Hansen hansenScript = hansen.GetComponent<Hansen>(); + if (hansenScript != null) + { + // Properly get the MobEffectable component and pass it + MobEffectable effectableComponent = this.GetComponent<MobEffectable>(); + if (effectableComponent != null) + { + hansenScript.Initialize(effectableComponent); // Pass the appropriate MobEffectable component + } + else + { + Debug.LogError("MobEffectable component not found on GeneralController."); + } + } + else + { + Debug.LogError("Hansen script not found on the instantiated object."); + } + } } + override protected void Start() { base.Start(); diff --git a/Assets/Scripts/Pets/Hansen Vendi Agus/Hansen.cs b/Assets/Scripts/Pets/Hansen Vendi Agus/Hansen.cs index b30fde0586bf79bff22b9354e35750aee3f55174..a41378a4d517e5af7f4875bf11fb2110ef195e7e 100644 --- a/Assets/Scripts/Pets/Hansen Vendi Agus/Hansen.cs +++ b/Assets/Scripts/Pets/Hansen Vendi Agus/Hansen.cs @@ -10,22 +10,42 @@ public class Hansen : Pet [SerializeField] private float boostAmount = 0.2f; private Transform targetTransform; - protected override void Awake() { + protected override void Awake() + { agent = GetComponent<NavMeshAgent>(); agent.speed = speed; - targetTransform = target.transform; } - protected override void Start() { + // Initialize method to set up Hansen with a specific target + public void Initialize(MobEffectable newTarget) + { + target = newTarget; + if (target != null) + { + targetTransform = target.transform; + target.AddEffect(new MobAttackBoost(boostAmount)); // Applying effect to the target + } + } + + protected override void Start() + { base.Start(); - target.AddEffect(new MobAttackBoost(boostAmount)); } - private void Update() { - if (agent == null) { + private void Update() + { + if (agent == null) + { Destroy(gameObject); - } else { + } + else if (targetTransform != null) + { agent.SetDestination(targetTransform.position); } } -} \ No newline at end of file + + public void Die() + { + Destroy(gameObject); + } +} diff --git a/Assets/Scripts/Pets/Pet.cs b/Assets/Scripts/Pets/Pet.cs index e5837d1e634e2a4c5077887b96b843ea19141683..8602e53cb880b9033f3df45f54165264eba6ca8b 100644 --- a/Assets/Scripts/Pets/Pet.cs +++ b/Assets/Scripts/Pets/Pet.cs @@ -24,7 +24,18 @@ public abstract class Pet : Damageable ui.easeFillSlider.value = maxHealth; } - public override void TakeDamage(float damage) + protected override void Awake() + { + base.Awake(); + Events.OnDeath.AddListener(Die); // Subscribe to the OnDeath event + } + + protected void OnDestroy() + { + Events.OnDeath.RemoveListener(Die); // Clean up the listener to prevent memory leaks + } + + public void TakeDamage(float damage) { base.TakeDamage(damage); ui.fillSlider.value = currentHealth;