From eb1e8cfcb8aa1416e7ab7e3ec113ebe3e6aaf734 Mon Sep 17 00:00:00 2001 From: Marco Date: Thu, 8 May 2025 10:56:00 +0200 Subject: [PATCH] Enemy feedback and mapping fixes --- Resources/RogueliteMaps/BigTest2.tres | 1 + Resources/RogueliteMaps/Transformers_Room.tres | 2 +- Scenes/Actors/Fairy_FSM.tscn | 3 ++- Scenes/Actors/Fairy_Guard_FSM.tscn | 3 ++- Scenes/Actors/Fairy_SpecialForce_FSM.tscn | 3 ++- Scenes/Actors/Fairy_Special_FSM.tscn | 3 ++- Scenes/Maps/Roguelike.tscn | 1 + Scenes/Maps/RogueliteMaps/Beginner1.tscn | 5 ++--- Scenes/Maps/RogueliteMaps/Corridor_3x2.tscn | 7 +++---- Scenes/Maps/RogueliteMaps/RgHorizontal1x1.tscn | 2 +- Scripts/Components/FSM/Enemy/AnimationModule.cs | 17 ++++++++++++++++- 11 files changed, 33 insertions(+), 14 deletions(-) diff --git a/Resources/RogueliteMaps/BigTest2.tres b/Resources/RogueliteMaps/BigTest2.tres index 34a94fd2..3069f5d4 100644 --- a/Resources/RogueliteMaps/BigTest2.tres +++ b/Resources/RogueliteMaps/BigTest2.tres @@ -12,6 +12,7 @@ RoomName = &"BigTest" Type = 1 ScenePath = &"uid://cglddtyl6o4fn" Size = Vector2i(2, 2) +StartShrouded = true DoorGridPositions = Array[Vector2i]([Vector2i(0, -1), Vector2i(0, 1), Vector2i(1, 0), Vector2i(-1, 0)]) SpawnableEnemies = Array[Object]([ExtResource("1_w1ns8"), ExtResource("2_gohkc"), ExtResource("3_x42ya"), ExtResource("4_qo81h")]) DoorDirections = 30 diff --git a/Resources/RogueliteMaps/Transformers_Room.tres b/Resources/RogueliteMaps/Transformers_Room.tres index 6a0a93b4..9a201ebf 100644 --- a/Resources/RogueliteMaps/Transformers_Room.tres +++ b/Resources/RogueliteMaps/Transformers_Room.tres @@ -10,7 +10,7 @@ script = ExtResource("5_rpfcq") RoomName = &"LongX3Map" Type = 1 -ScenePath = &"uid://ss7hm1utnvn1" +ScenePath = &"uid://640f2h7vxpq1" Size = Vector2i(1, 3) StartShrouded = true DoorGridPositions = Array[Vector2i]([Vector2i(0, -1), Vector2i(0, 1), Vector2i(1, 0), Vector2i(-1, 0)]) diff --git a/Scenes/Actors/Fairy_FSM.tscn b/Scenes/Actors/Fairy_FSM.tscn index 3183350f..517c0351 100644 --- a/Scenes/Actors/Fairy_FSM.tscn +++ b/Scenes/Actors/Fairy_FSM.tscn @@ -199,10 +199,11 @@ lifetime = 0.4 one_shot = true process_material = SubResource("ParticleProcessMaterial_poxpj") -[node name="AnimationModule" type="Node2D" parent="." node_paths=PackedStringArray("AnimationProvider", "StorageModule")] +[node name="AnimationModule" type="Node2D" parent="." node_paths=PackedStringArray("AnimationProvider", "StorageModule", "HealthProvider")] script = ExtResource("21_8kl2e") AnimationProvider = NodePath("../AnimationProvider") StorageModule = NodePath("../Storage") +HealthProvider = NodePath("../DamageReceiver/Health") [node name="DropsProvider" type="Node2D" parent="." node_paths=PackedStringArray("StorageModule")] script = ExtResource("22_poxpj") diff --git a/Scenes/Actors/Fairy_Guard_FSM.tscn b/Scenes/Actors/Fairy_Guard_FSM.tscn index 9c0f8900..5c33794c 100644 --- a/Scenes/Actors/Fairy_Guard_FSM.tscn +++ b/Scenes/Actors/Fairy_Guard_FSM.tscn @@ -201,10 +201,11 @@ lifetime = 0.4 one_shot = true process_material = SubResource("ParticleProcessMaterial_poxpj") -[node name="AnimationModule" type="Node2D" parent="." node_paths=PackedStringArray("AnimationProvider", "StorageModule")] +[node name="AnimationModule" type="Node2D" parent="." node_paths=PackedStringArray("AnimationProvider", "StorageModule", "HealthProvider")] script = ExtResource("22_ipl8g") AnimationProvider = NodePath("../AnimationProvider") StorageModule = NodePath("../Storage") +HealthProvider = NodePath("../DamageReceiver/Health") [node name="DropsProvider" type="Node2D" parent="." node_paths=PackedStringArray("StorageModule")] script = ExtResource("23_1llhk") diff --git a/Scenes/Actors/Fairy_SpecialForce_FSM.tscn b/Scenes/Actors/Fairy_SpecialForce_FSM.tscn index edb680e2..4d089008 100644 --- a/Scenes/Actors/Fairy_SpecialForce_FSM.tscn +++ b/Scenes/Actors/Fairy_SpecialForce_FSM.tscn @@ -355,10 +355,11 @@ lifetime = 0.4 one_shot = true process_material = SubResource("ParticleProcessMaterial_poxpj") -[node name="AnimationModule" type="Node2D" parent="." node_paths=PackedStringArray("AnimationProvider", "StorageModule")] +[node name="AnimationModule" type="Node2D" parent="." node_paths=PackedStringArray("AnimationProvider", "StorageModule", "HealthProvider")] script = ExtResource("22_uxv3s") AnimationProvider = NodePath("../AnimationProvider") StorageModule = NodePath("../Storage") +HealthProvider = NodePath("../DamageReceiver/Health") [node name="DropsProvider" type="Node2D" parent="." node_paths=PackedStringArray("StorageModule")] script = ExtResource("23_f8h5e") diff --git a/Scenes/Actors/Fairy_Special_FSM.tscn b/Scenes/Actors/Fairy_Special_FSM.tscn index daae69d0..19f845d9 100644 --- a/Scenes/Actors/Fairy_Special_FSM.tscn +++ b/Scenes/Actors/Fairy_Special_FSM.tscn @@ -200,10 +200,11 @@ lifetime = 0.4 one_shot = true process_material = SubResource("ParticleProcessMaterial_poxpj") -[node name="AnimationModule" type="Node2D" parent="." node_paths=PackedStringArray("AnimationProvider", "StorageModule")] +[node name="AnimationModule" type="Node2D" parent="." node_paths=PackedStringArray("AnimationProvider", "StorageModule", "HealthProvider")] script = ExtResource("22_23wbc") AnimationProvider = NodePath("../AnimationProvider") StorageModule = NodePath("../Storage") +HealthProvider = NodePath("../DamageReceiver/Health") [node name="DropsProvider" type="Node2D" parent="." node_paths=PackedStringArray("StorageModule")] script = ExtResource("23_5aqmo") diff --git a/Scenes/Maps/Roguelike.tscn b/Scenes/Maps/Roguelike.tscn index 82d2b87d..b5751a53 100644 --- a/Scenes/Maps/Roguelike.tscn +++ b/Scenes/Maps/Roguelike.tscn @@ -27,6 +27,7 @@ process_mode = 1 y_sort_enabled = true script = ExtResource("4_jtlua") MapThemes = Array[Object]([ExtResource("25_7gtqx")]) +ManualSeed = "18162257933587379688" [node name="CameraController" parent="." instance=ExtResource("6_gwtv6")] diff --git a/Scenes/Maps/RogueliteMaps/Beginner1.tscn b/Scenes/Maps/RogueliteMaps/Beginner1.tscn index 6a6611e5..32fecad5 100644 --- a/Scenes/Maps/RogueliteMaps/Beginner1.tscn +++ b/Scenes/Maps/RogueliteMaps/Beginner1.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=30 format=4 uid="uid://24wh7h2dbljf"] +[gd_scene load_steps=29 format=4 uid="uid://24wh7h2dbljf"] [ext_resource type="Script" uid="uid://b2j00riayxkit" path="res://Scripts/Controllers/RogueliteRoom.cs" id="1_vhsym"] [ext_resource type="Resource" uid="uid://dn3ai56rrxfnk" path="res://Resources/RogueliteMaps/Beginner1.tres" id="2_vhsym"] @@ -7,7 +7,6 @@ [ext_resource type="PackedScene" uid="uid://cl7s06sk106uo" path="res://Scenes/Props/VendingMachine.tscn" id="6_70a8f"] [ext_resource type="PackedScene" uid="uid://4q82gggqax87" path="res://Scenes/Items/Cheat_Gun_Pickup.tscn" id="6_pys6w"] [ext_resource type="PackedScene" uid="uid://djf0y08ix66fn" path="res://Scenes/Interactable/Chest.tscn" id="7_kublc"] -[ext_resource type="Script" uid="uid://epnwjptvks3t" path="res://Scripts/Resources/LootItem.cs" id="8_5uxd1"] [ext_resource type="Resource" uid="uid://cltxhkrqp055v" path="res://Resources/Items/Money_Pickup.tres" id="9_5yebg"] [ext_resource type="Resource" uid="uid://cajqlnyvlmybe" path="res://Resources/Items/IcicleRepeater_Improved.tres" id="10_6gtn1"] [ext_resource type="Resource" uid="uid://dwwbyyy3fo4bt" path="res://Resources/Items/IcicleRepeater_Advanced.tres" id="11_0a3am"] @@ -76,7 +75,7 @@ position = Vector2(275, -100) [node name="Chest" parent="Actors" instance=ExtResource("7_kublc")] position = Vector2(220, -109) -LootTable = Array[ExtResource("8_5uxd1")]([ExtResource("9_5yebg"), ExtResource("9_5yebg"), ExtResource("9_5yebg"), ExtResource("9_5yebg"), ExtResource("9_5yebg"), ExtResource("9_5yebg"), ExtResource("10_6gtn1"), ExtResource("11_0a3am"), ExtResource("12_t3lr8"), ExtResource("13_ii24s"), ExtResource("14_15ruc"), ExtResource("15_5uxd1"), ExtResource("16_iyfx3"), ExtResource("17_45mmk"), ExtResource("18_ipsj4"), ExtResource("19_ii24s"), ExtResource("19_ii24s"), ExtResource("19_ii24s"), ExtResource("20_15ruc"), ExtResource("20_15ruc"), ExtResource("20_15ruc"), ExtResource("21_5uxd1"), ExtResource("21_5uxd1"), ExtResource("21_5uxd1"), ExtResource("26_iyfx3")]) +LootTable = [ExtResource("9_5yebg"), ExtResource("9_5yebg"), ExtResource("9_5yebg"), ExtResource("9_5yebg"), ExtResource("9_5yebg"), ExtResource("9_5yebg"), ExtResource("10_6gtn1"), ExtResource("11_0a3am"), ExtResource("12_t3lr8"), ExtResource("13_ii24s"), ExtResource("14_15ruc"), ExtResource("15_5uxd1"), ExtResource("16_iyfx3"), ExtResource("17_45mmk"), ExtResource("18_ipsj4"), ExtResource("19_ii24s"), ExtResource("19_ii24s"), ExtResource("19_ii24s"), ExtResource("20_15ruc"), ExtResource("20_15ruc"), ExtResource("20_15ruc"), ExtResource("21_5uxd1"), ExtResource("21_5uxd1"), ExtResource("21_5uxd1"), ExtResource("26_iyfx3")] [node name="Label" type="Label" parent="Actors"] offset_left = 153.0 diff --git a/Scenes/Maps/RogueliteMaps/Corridor_3x2.tscn b/Scenes/Maps/RogueliteMaps/Corridor_3x2.tscn index 3dbd47c2..7b7f0cb5 100644 --- a/Scenes/Maps/RogueliteMaps/Corridor_3x2.tscn +++ b/Scenes/Maps/RogueliteMaps/Corridor_3x2.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=20 format=4 uid="uid://d06oxglp06qyt"] +[gd_scene load_steps=19 format=4 uid="uid://d06oxglp06qyt"] [ext_resource type="Script" uid="uid://b2j00riayxkit" path="res://Scripts/Controllers/RogueliteRoom.cs" id="1_oj14n"] [ext_resource type="Resource" uid="uid://c1lxymqnucaas" path="res://Resources/RogueliteMaps/Corridor_3x2.tres" id="2_oj14n"] @@ -12,7 +12,6 @@ [ext_resource type="Resource" uid="uid://dqnvesdj0dk3v" path="res://Resources/Bullets/simple_enemy_bullet.tres" id="7_nhpte"] [ext_resource type="Script" uid="uid://umyqgyxjiaig" path="res://Scripts/Actors/ChestMarker.cs" id="8_nhpte"] [ext_resource type="Texture2D" uid="uid://qeh4ai8h6sw5" path="res://Sprites/Chest.png" id="9_7q6f1"] -[ext_resource type="Script" uid="uid://b5fesrd4lv8t1" path="res://Scripts/Resources/Events/EventResource.cs" id="9_kbkbx"] [ext_resource type="Script" uid="uid://bwox5lmgiijcs" path="res://Scripts/Resources/Events/ActivateEvent.cs" id="10_wffoc"] [ext_resource type="PackedScene" uid="uid://dqr6myj0yaqvd" path="res://Scenes/Interactable/ScriptableMovementSensorLonger.tscn" id="11_wmiud"] @@ -98,11 +97,11 @@ BurstCoolDown = 0.0 [node name="MovementSensorLonger" parent="Tilemaps/Actors" instance=ExtResource("11_wmiud")] position = Vector2(216, 119) -Events = Array[ExtResource("9_kbkbx")]([SubResource("Resource_00xb4")]) +Events = [SubResource("Resource_00xb4")] [node name="MovementSensorLonger2" parent="Tilemaps/Actors" instance=ExtResource("11_wmiud")] position = Vector2(395, 117) -Events = Array[ExtResource("9_kbkbx")]([SubResource("Resource_00xb4")]) +Events = [SubResource("Resource_00xb4")] [node name="NavigationRegion2D" type="NavigationRegion2D" parent="."] visible = false diff --git a/Scenes/Maps/RogueliteMaps/RgHorizontal1x1.tscn b/Scenes/Maps/RogueliteMaps/RgHorizontal1x1.tscn index 00ae15d0..f41cb673 100644 --- a/Scenes/Maps/RogueliteMaps/RgHorizontal1x1.tscn +++ b/Scenes/Maps/RogueliteMaps/RgHorizontal1x1.tscn @@ -46,7 +46,7 @@ navigation_enabled = false metadata/_edit_lock_ = true [node name="Props" type="TileMapLayer" parent="Tilemaps" groups=["Solid"]] -tile_map_data = PackedByteArray("AAATAAQAAAAKAA8AAAATAAMAAAAKAA4AAAAAAAMAAAAKAA4AAAAAAAQAAAAKAA8AAAANAAEAAAAPAAAAAAANAAIAAAAPAAEAAAAOAAEAAAAQAAAAAAAOAAIAAAAQAAEAAAAPAAEAAAARAAAAAAAPAAIAAAARAAEAAAACAAEAAAAPAAAAAAACAAIAAAAPAAEAAAADAAEAAAAQAAAAAAADAAIAAAAQAAEAAAAEAAEAAAARAAAAAAAEAAIAAAARAAEAAAADAAMAAQAAAAAAAgAEAAMAAQAAAAAAAgAMAAgAAQAAAAAAAgAPAAgAAQAAAAAAAgAQAAMAAQAAAAAAAgAPAAMAAQAAAAAAAgAHAAQAAQAAAAAAAQAMAAcAAQAAAAAAAQAFAAMAAQAAAAAACQAKAAMAAQAAAAAADAAHAAMAAQAAAAAAEAA=") +tile_map_data = PackedByteArray("AAATAAQAAAAKAA8AAAATAAMAAAAKAA4AAAAAAAMAAAAKAA4AAAAAAAQAAAAKAA8AAAANAAEAAAAPAAAAAAANAAIAAAAPAAEAAAAOAAEAAAAQAAAAAAAOAAIAAAAQAAEAAAAPAAEAAAARAAAAAAAPAAIAAAARAAEAAAACAAEAAAAPAAAAAAACAAIAAAAPAAEAAAADAAEAAAAQAAAAAAADAAIAAAAQAAEAAAAEAAEAAAARAAAAAAAEAAIAAAARAAEAAAADAAMAAQAAAAAAAgAEAAMAAQAAAAAAAgAMAAgAAQAAAAAAAgAPAAgAAQAAAAAAAgAQAAMAAQAAAAAAAgAPAAMAAQAAAAAAAgAHAAQAAQAAAAAAAQAMAAcAAQAAAAAAAQAFAAMAAQAAAAAACQAKAAMAAQAAAAAADAAHAAMAAQAAAAAAEAAIAAMAAAAJAAwAAAAIAAQAAAAJAA0AAAAJAAMAAAAKAAwAAAAJAAQAAAAKAA0AAAA=") tile_set = ExtResource("5_0c8ec") navigation_enabled = false metadata/_edit_lock_ = true diff --git a/Scripts/Components/FSM/Enemy/AnimationModule.cs b/Scripts/Components/FSM/Enemy/AnimationModule.cs index 7c15606f..aaddf05d 100644 --- a/Scripts/Components/FSM/Enemy/AnimationModule.cs +++ b/Scripts/Components/FSM/Enemy/AnimationModule.cs @@ -1,4 +1,5 @@ -using Cirno.Scripts.Enums; +using Cirno.Scripts.Components.Actors; +using Cirno.Scripts.Enums; using Godot; namespace Cirno.Scripts.Components.FSM.Enemy; @@ -10,16 +11,30 @@ public partial class AnimationModule : ModuleBase [Export] public PlayerAnimationProvider AnimationProvider { get; set; } [Export] public EnemyStorageModule StorageModule { get; set; } + [Export] public ActorResourceProvider HealthProvider { get; set; } public override void EnterState(EnemyState state) { AnimationProvider.SetAnimation(StorageModule.AimingDirection); AnimationProvider.SetAnimation(Vector2.Zero); + if (HealthProvider is not null) + { + HealthProvider.ResourceDecreased += HealthProviderOnResourceDecreased; + } + } + + private void HealthProviderOnResourceDecreased(float oldValue, float newValue, float maxValue) + { + AnimationProvider?.Blink(); } public override void ExitState(EnemyState state) { AnimationProvider.SetAnimation(Vector2.Zero); + if (HealthProvider is not null) + { + HealthProvider.ResourceDecreased -= HealthProviderOnResourceDecreased; + } } public override void Init(IStateMachine machine)