From cc85cd4b54198c208c8120555a9613bf447c5a9a Mon Sep 17 00:00:00 2001 From: Marco Date: Fri, 21 Mar 2025 15:33:37 +0100 Subject: [PATCH] Enemy FSM death --- Scenes/Actors/FairyGuard_New.tscn | 2 +- Scenes/Actors/Fairy_FSM.tscn | 3 ++- Scenes/Maps/PlayerFSMTest.tscn | 7 ++++++- Scripts/Components/FSM/Enemy/Dead.cs | 25 +++++++++++++++++++++++++ 4 files changed, 34 insertions(+), 3 deletions(-) diff --git a/Scenes/Actors/FairyGuard_New.tscn b/Scenes/Actors/FairyGuard_New.tscn index 13de0b30..b085d437 100644 --- a/Scenes/Actors/FairyGuard_New.tscn +++ b/Scenes/Actors/FairyGuard_New.tscn @@ -177,7 +177,7 @@ script = ExtResource("15_17yce") [node name="LootDrops" type="Node2D" parent="."] script = ExtResource("16_76vwd") -LootDrops = Array[ExtResource("17_gsthm")]([SubResource("Resource_lh4qp"), SubResource("Resource_fmqd5"), SubResource("Resource_gry1a"), SubResource("Resource_6b6qx")]) +LootDrops = [SubResource("Resource_lh4qp"), SubResource("Resource_fmqd5"), SubResource("Resource_gry1a"), SubResource("Resource_6b6qx")] [connection signal="area_entered" from="PlayerDetection" to="PlayerDetection" method="_on_area_entered"] [connection signal="area_exited" from="PlayerDetection" to="PlayerDetection" method="_on_area_exited"] diff --git a/Scenes/Actors/Fairy_FSM.tscn b/Scenes/Actors/Fairy_FSM.tscn index 3e2d3043..5d97035f 100644 --- a/Scenes/Actors/Fairy_FSM.tscn +++ b/Scenes/Actors/Fairy_FSM.tscn @@ -80,8 +80,9 @@ DamageReceiver = NodePath("../../DamageReceiver") EquippedWeapon = NodePath("../../EnemyWeapon") _moduleNodes = [NodePath("../../AnimationModule")] -[node name="Dead" type="Node2D" parent="StateMachine"] +[node name="Dead" type="Node2D" parent="StateMachine" node_paths=PackedStringArray("StorageModule")] script = ExtResource("8_pi7ab") +StorageModule = NodePath("../../Storage") [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] sprite_frames = ExtResource("1_ho0th") diff --git a/Scenes/Maps/PlayerFSMTest.tscn b/Scenes/Maps/PlayerFSMTest.tscn index f75601a1..43114f89 100644 --- a/Scenes/Maps/PlayerFSMTest.tscn +++ b/Scenes/Maps/PlayerFSMTest.tscn @@ -229,8 +229,10 @@ texture = SubResource("GradientTexture1D_4gtx8") position = Vector2(385, 111) scale = Vector2(0.66, 2.04) -[node name="FairyFsm" parent="Tilemaps/AcidHitboxes" instance=ExtResource("12_64bae")] +[node name="FairyFsm" parent="Tilemaps/AcidHitboxes" node_paths=PackedStringArray("DefeatScript") instance=ExtResource("12_64bae")] position = Vector2(776, -56) +DefeatScript = NodePath("../../Actors/HorizontalForceField2") +ActivationType = 2 [node name="Actors" type="Node2D" parent="Tilemaps"] y_sort_enabled = true @@ -247,6 +249,9 @@ EmitOnStart = true [node name="HorizontalForceField" parent="Tilemaps/Actors" instance=ExtResource("13_mljl7")] position = Vector2(304, 303) +[node name="HorizontalForceField2" parent="Tilemaps/Actors" instance=ExtResource("13_mljl7")] +position = Vector2(800, -112) + [node name="BlueKeycard" parent="Tilemaps/Actors" instance=ExtResource("14_0knpf")] position = Vector2(124, 306) diff --git a/Scripts/Components/FSM/Enemy/Dead.cs b/Scripts/Components/FSM/Enemy/Dead.cs index f646946a..56d4e6da 100644 --- a/Scripts/Components/FSM/Enemy/Dead.cs +++ b/Scripts/Components/FSM/Enemy/Dead.cs @@ -1,8 +1,33 @@ using Cirno.Scripts.Enums; +using Godot; namespace Cirno.Scripts.Components.FSM.Enemy; public partial class Dead : EnemyStateBase { public override EnemyState StateId => EnemyState.Dead; + + [Export] + public EnemyStorageModule StorageModule { get; private set; } + + // public override void Init(IStateMachine machine) + // { + // base.Init(machine); + // + // + // } + + public override void EnterState() + { + base.EnterState(); + + // Play death script + if (StorageModule.Root.DefeatScript is IActivable activatable) + { + activatable.Activate(StorageModule.Root.ActivationType); + } + + StorageModule.Root.QueueFree(); + + } } \ No newline at end of file