From d5eda3c7b49c79c6c8c03b23548b061d31776b74 Mon Sep 17 00:00:00 2001 From: Marco Date: Tue, 29 Apr 2025 16:10:17 +0200 Subject: [PATCH] Basic boss patterns --- ExternalMaterial/RoboBoss/RoboBoss.png | 3 + ExternalMaterial/RoboBoss/RoboBoss.png.import | 34 ++++ ExternalMaterial/RoboBoss/RoboBoss.pxc | Bin 0 -> 3248 bytes ExternalMaterial/RoboBoss/RoboBoss.pxc1 | Bin 0 -> 3150 bytes .../Roguelite/Roguelite_Boss_1.tres | 145 ++++++++++++++++++ .../Roguelite/Roguelite_Boss_1_Script.tres | 11 ++ Resources/RogueliteMaps/Factory_Theme.tres | 2 +- Resources/Sprites/RoboBoss.tres | 98 ++++++++++++ Scenes/Actors/Roguelite_Boss_1.tscn | 60 ++------ Scenes/Maps/RogueliteMaps/Beginner1.tscn | 3 +- Scenes/Maps/RogueliteMaps/Boss1.tscn | 28 ++-- Scenes/Maps/RogueliteMaps/Long_Factory.tscn | 9 +- Scripts/Actors/RogueliteEnemySpawner.cs | 1 + Scripts/Resources/FSMMovementPattern.cs | 58 +++++++ Scripts/Resources/FSMMovementPattern.cs.uid | 1 + 15 files changed, 388 insertions(+), 65 deletions(-) create mode 100644 ExternalMaterial/RoboBoss/RoboBoss.png create mode 100644 ExternalMaterial/RoboBoss/RoboBoss.png.import create mode 100644 ExternalMaterial/RoboBoss/RoboBoss.pxc create mode 100644 ExternalMaterial/RoboBoss/RoboBoss.pxc1 create mode 100644 Resources/BossPhases/Roguelite/Roguelite_Boss_1.tres create mode 100644 Resources/BossPhases/Roguelite/Roguelite_Boss_1_Script.tres create mode 100644 Resources/Sprites/RoboBoss.tres create mode 100644 Scripts/Resources/FSMMovementPattern.cs create mode 100644 Scripts/Resources/FSMMovementPattern.cs.uid diff --git a/ExternalMaterial/RoboBoss/RoboBoss.png b/ExternalMaterial/RoboBoss/RoboBoss.png new file mode 100644 index 00000000..67c4eddb --- /dev/null +++ b/ExternalMaterial/RoboBoss/RoboBoss.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b43727a5335a3a4f4379b1954c14166ec51d35788b40aa6bb459a53ece54430 +size 3521 diff --git a/ExternalMaterial/RoboBoss/RoboBoss.png.import b/ExternalMaterial/RoboBoss/RoboBoss.png.import new file mode 100644 index 00000000..4018fcfe --- /dev/null +++ b/ExternalMaterial/RoboBoss/RoboBoss.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://p6cs703f5m3n" +path="res://.godot/imported/RoboBoss.png-f0fe8d2e5e22384032fb6bb9a9368471.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ExternalMaterial/RoboBoss/RoboBoss.png" +dest_files=["res://.godot/imported/RoboBoss.png-f0fe8d2e5e22384032fb6bb9a9368471.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/ExternalMaterial/RoboBoss/RoboBoss.pxc b/ExternalMaterial/RoboBoss/RoboBoss.pxc new file mode 100644 index 0000000000000000000000000000000000000000..9b3d5c151ab23b3a7782665e1d3f13e4ae2a9157 GIT binary patch literal 3248 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 literal 0 HcmV?d00001 diff --git a/Resources/BossPhases/Roguelite/Roguelite_Boss_1.tres b/Resources/BossPhases/Roguelite/Roguelite_Boss_1.tres new file mode 100644 index 00000000..605bfdee --- /dev/null +++ b/Resources/BossPhases/Roguelite/Roguelite_Boss_1.tres @@ -0,0 +1,145 @@ +[gd_resource type="Resource" script_class="BossPhase" load_steps=14 format=3 uid="uid://go6rfnglefe8"] + +[ext_resource type="Resource" uid="uid://bpc2kyft8q2qq" path="res://Resources/Bullets/simple_enemy_bullet_big.tres" id="1_favpk"] +[ext_resource type="Script" uid="uid://b5s5mjuk1rng5" path="res://Scripts/Resources/TimeModifier.cs" id="2_36ba4"] +[ext_resource type="Script" uid="uid://c0ndqalsc4jve" path="res://Scripts/AttackPatterns/SpiralPattern.cs" id="3_agmbo"] +[ext_resource type="PackedScene" uid="uid://dohakkayqj4w2" path="res://Scenes/Weapons/Bullets/enemyBullet_green.tscn" id="4_agmbo"] +[ext_resource type="Script" uid="uid://cdd6q2h0t1hhq" path="res://Scripts/Resources/BossPhase.cs" id="4_tppsm"] +[ext_resource type="Script" uid="uid://dslyrfcej3g2n" path="res://Scripts/Resources/BulletResource.cs" id="5_tppsm"] +[ext_resource type="PackedScene" uid="uid://ck6f08w1fy5fa" path="res://Scenes/Weapons/Bullets/enemyBullet_rice_yellow.tscn" id="6_tppsm"] + +[sub_resource type="Resource" id="Resource_n7vdy"] +script = ExtResource("3_agmbo") +BulletResource = ExtResource("1_favpk") +bulletCount = 16 +rotationSpeed = 15.0 +_rotationOffset = 0.0 +duration = 0.5 +spread = 360.0 +burstInterval = 0.1 +ShotsPerBurst = 4 +BurstRate = 2.0 +_targetPlayer = false +OverrideOwner = false +Owner = 0 +OverrideDamageType = false +DamageType = 0 +OverrideControllable = false +Controllable = false +OverrideCreationModifier = false +TimeModifiers = Array[ExtResource("2_36ba4")]([]) +WaitForCompletion = true +metadata/_custom_type_script = "uid://c0ndqalsc4jve" + +[sub_resource type="Resource" id="Resource_du806"] +script = ExtResource("5_tppsm") +BulletScene = ExtResource("4_agmbo") +BulletSpeed = 60.0 +Direction = Vector2(1, 0) +BulletDamage = 12.0 +LifeTime = 10.0 +DestroyOnCollision = true +Owner = 2 +DamageType = 0 +RotateSprite = false +Controllable = false +Freezable = true +Grazeable = true +GrazeValue = 1.0 +TimeModifiers = [] +metadata/_custom_type_script = "uid://dslyrfcej3g2n" + +[sub_resource type="Resource" id="Resource_hmrwn"] +script = ExtResource("3_agmbo") +BulletResource = SubResource("Resource_du806") +bulletCount = 8 +rotationSpeed = 0.0 +_rotationOffset = -90.0 +duration = 2.0 +spread = 128.0 +burstInterval = 0.2 +ShotsPerBurst = 4 +BurstRate = 0.0 +_targetPlayer = true +OverrideOwner = false +Owner = 0 +OverrideDamageType = false +DamageType = 0 +OverrideControllable = false +Controllable = false +OverrideCreationModifier = false +TimeModifiers = Array[ExtResource("2_36ba4")]([]) +WaitForCompletion = true +metadata/_custom_type_script = "uid://c0ndqalsc4jve" + +[sub_resource type="Resource" id="Resource_tppsm"] +script = ExtResource("3_agmbo") +BulletResource = ExtResource("1_favpk") +bulletCount = 16 +rotationSpeed = -15.0 +_rotationOffset = 0.0 +duration = 0.5 +spread = 360.0 +burstInterval = 0.1 +ShotsPerBurst = 4 +BurstRate = 2.0 +_targetPlayer = false +OverrideOwner = false +Owner = 0 +OverrideDamageType = false +DamageType = 0 +OverrideControllable = false +Controllable = false +OverrideCreationModifier = false +TimeModifiers = Array[ExtResource("2_36ba4")]([]) +WaitForCompletion = true +metadata/_custom_type_script = "uid://c0ndqalsc4jve" + +[sub_resource type="Resource" id="Resource_qhi1m"] +script = ExtResource("5_tppsm") +BulletScene = ExtResource("6_tppsm") +BulletSpeed = 80.0 +Direction = Vector2(1, 0) +BulletDamage = 12.0 +LifeTime = 10.0 +DestroyOnCollision = true +Owner = 2 +DamageType = 0 +RotateSprite = true +Controllable = false +Freezable = true +Grazeable = true +GrazeValue = 1.0 +TimeModifiers = null +metadata/_custom_type_script = "uid://dslyrfcej3g2n" + +[sub_resource type="Resource" id="Resource_we0cr"] +script = ExtResource("3_agmbo") +BulletResource = SubResource("Resource_qhi1m") +bulletCount = 1 +rotationSpeed = 0.0 +_rotationOffset = 0.0 +duration = 2.0 +spread = 360.0 +burstInterval = 0.2 +ShotsPerBurst = 8 +BurstRate = 1.0 +_targetPlayer = true +OverrideOwner = false +Owner = 0 +OverrideDamageType = false +DamageType = 0 +OverrideControllable = false +Controllable = false +OverrideCreationModifier = false +TimeModifiers = Array[ExtResource("2_36ba4")]([]) +WaitForCompletion = true +metadata/_custom_type_script = "uid://c0ndqalsc4jve" + +[resource] +script = ExtResource("4_tppsm") +PhaseName = "Asdf" +Threshold = 0 +PlayAnimation = false +Patterns = Array[Object]([SubResource("Resource_n7vdy"), SubResource("Resource_hmrwn"), SubResource("Resource_tppsm"), SubResource("Resource_we0cr")]) +metadata/_custom_type_script = "uid://cdd6q2h0t1hhq" diff --git a/Resources/BossPhases/Roguelite/Roguelite_Boss_1_Script.tres b/Resources/BossPhases/Roguelite/Roguelite_Boss_1_Script.tres new file mode 100644 index 00000000..62133106 --- /dev/null +++ b/Resources/BossPhases/Roguelite/Roguelite_Boss_1_Script.tres @@ -0,0 +1,11 @@ +[gd_resource type="Resource" script_class="BossScript" load_steps=4 format=3 uid="uid://umimlgb0hs7k"] + +[ext_resource type="Script" uid="uid://cdd6q2h0t1hhq" path="res://Scripts/Resources/BossPhase.cs" id="1_2i700"] +[ext_resource type="Resource" uid="uid://go6rfnglefe8" path="res://Resources/BossPhases/Roguelite/Roguelite_Boss_1.tres" id="2_bv4fb"] +[ext_resource type="Script" uid="uid://inasa76li3ym" path="res://Scripts/Resources/ScriptableBullets/BossScript.cs" id="3_hj6ge"] + +[resource] +script = ExtResource("3_hj6ge") +BossName = &"Test" +Phases = Array[ExtResource("1_2i700")]([ExtResource("2_bv4fb")]) +metadata/_custom_type_script = "uid://inasa76li3ym" diff --git a/Resources/RogueliteMaps/Factory_Theme.tres b/Resources/RogueliteMaps/Factory_Theme.tres index a4d5d5a0..07368f31 100644 --- a/Resources/RogueliteMaps/Factory_Theme.tres +++ b/Resources/RogueliteMaps/Factory_Theme.tres @@ -58,7 +58,7 @@ metadata/_custom_type_script = "uid://rgx0g5iqksnn" [sub_resource type="Resource" id="Resource_tsgja"] script = ExtResource("11_eegnh") -Items = Array[Object]([ExtResource("1_ae3bb"), ExtResource("2_p3lfl"), ExtResource("3_tsgja"), ExtResource("4_qo6vk"), ExtResource("5_ga54h"), ExtResource("6_cxv74"), ExtResource("7_f7mru"), ExtResource("8_3kwn2"), ExtResource("9_to7mi"), ExtResource("10_w335g")]) +Items = Array[Object]([ExtResource("1_ae3bb"), ExtResource("6_cxv74"), ExtResource("7_f7mru"), ExtResource("8_3kwn2"), ExtResource("9_to7mi"), ExtResource("10_w335g")]) metadata/_custom_type_script = "uid://rgx0g5iqksnn" [sub_resource type="Resource" id="Resource_11cll"] diff --git a/Resources/Sprites/RoboBoss.tres b/Resources/Sprites/RoboBoss.tres new file mode 100644 index 00000000..aea32152 --- /dev/null +++ b/Resources/Sprites/RoboBoss.tres @@ -0,0 +1,98 @@ +[gd_resource type="SpriteFrames" load_steps=9 format=3 uid="uid://crpuifbo5c7fd"] + +[ext_resource type="Texture2D" uid="uid://xhwfgbv0fjbr" path="res://Sprites/Actors/FairyGuard.png" id="1_eijki"] +[ext_resource type="Texture2D" uid="uid://p6cs703f5m3n" path="res://ExternalMaterial/RoboBoss/RoboBoss.png" id="2_c65c5"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_em6qg"] +atlas = ExtResource("1_eijki") +region = Rect2(0, 64, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_klwxr"] +atlas = ExtResource("1_eijki") +region = Rect2(16, 64, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_hakkv"] +atlas = ExtResource("2_c65c5") +region = Rect2(0, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_c65c5"] +atlas = ExtResource("2_c65c5") +region = Rect2(128, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_xmlxq"] +atlas = ExtResource("2_c65c5") +region = Rect2(384, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_68q7p"] +atlas = ExtResource("2_c65c5") +region = Rect2(256, 0, 64, 64) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_em6qg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_klwxr") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_em6qg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_em6qg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_em6qg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_em6qg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_em6qg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_em6qg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_em6qg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_em6qg") +}], +"loop": true, +"name": &"dead", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_hakkv") +}], +"loop": true, +"name": &"down", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_c65c5") +}], +"loop": true, +"name": &"left", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_xmlxq") +}], +"loop": true, +"name": &"right", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_68q7p") +}], +"loop": true, +"name": &"up", +"speed": 5.0 +}] diff --git a/Scenes/Actors/Roguelite_Boss_1.tscn b/Scenes/Actors/Roguelite_Boss_1.tscn index 3f0bd129..87b9c9c1 100644 --- a/Scenes/Actors/Roguelite_Boss_1.tscn +++ b/Scenes/Actors/Roguelite_Boss_1.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=46 format=3 uid="uid://dt7i3x3g5ktbl"] +[gd_scene load_steps=39 format=3 uid="uid://dt7i3x3g5ktbl"] [ext_resource type="Script" uid="uid://bi2edpdosngll" path="res://Scripts/Components/FSM/Enemy/EnemyFSMProxy.cs" id="1_krhq1"] [ext_resource type="Resource" uid="uid://ng3lpe8ifbsn" path="res://Resources/Enemies/Boss_1.tres" id="2_u32k8"] @@ -8,21 +8,17 @@ [ext_resource type="Script" uid="uid://dbmc3klko5x18" path="res://Scripts/Components/FSM/Enemy/Alert.cs" id="6_u32k8"] [ext_resource type="Script" uid="uid://difn6d5np1pui" path="res://Scripts/Components/FSM/Boss/Shooting.cs" id="7_u32k8"] [ext_resource type="Script" uid="uid://4hwtlc1ftjsc" path="res://Scripts/Components/FSM/Enemy/Dead.cs" id="8_3n0dy"] -[ext_resource type="Resource" uid="uid://bpc2kyft8q2qq" path="res://Resources/Bullets/simple_enemy_bullet_big.tres" id="8_xcri6"] -[ext_resource type="Script" uid="uid://b5s5mjuk1rng5" path="res://Scripts/Resources/TimeModifier.cs" id="9_3n0dy"] +[ext_resource type="Resource" uid="uid://umimlgb0hs7k" path="res://Resources/BossPhases/Roguelite/Roguelite_Boss_1_Script.tres" id="8_q8sxg"] [ext_resource type="Script" uid="uid://dj37rup1ibnn6" path="res://Scripts/Components/FSM/Enemy/Controlled.cs" id="9_d5ed4"] -[ext_resource type="Script" uid="uid://c0ndqalsc4jve" path="res://Scripts/AttackPatterns/SpiralPattern.cs" id="10_d5ed4"] -[ext_resource type="SpriteFrames" uid="uid://ch2ll1on8im2p" path="res://Resources/Sprites/FairyGuard.tres" id="10_v2gvi"] [ext_resource type="Script" uid="uid://mb4ugq74a17c" path="res://Scripts/Components/FSM/Enemy/PlayerDetectionModule.cs" id="11_qrag5"] -[ext_resource type="Script" uid="uid://cdd6q2h0t1hhq" path="res://Scripts/Resources/BossPhase.cs" id="11_v2gvi"] [ext_resource type="Script" uid="uid://bflvr26h52c55" path="res://Scripts/Components/FSM/Enemy/EnemyStorageModule.cs" id="12_n7vdy"] -[ext_resource type="Script" uid="uid://inasa76li3ym" path="res://Scripts/Resources/ScriptableBullets/BossScript.cs" id="12_qrag5"] [ext_resource type="Script" uid="uid://c6467d6yx50qh" path="res://Scripts/Components/BulletSpawner.cs" id="13_3n0dy"] [ext_resource type="Script" uid="uid://cq3hkweplldbr" path="res://Scripts/Components/Actors/GenericDamageReceiver.cs" id="13_uiuc5"] [ext_resource type="PackedScene" uid="uid://cuixq5ex0j40h" path="res://Scenes/enemyBullet.tscn" id="14_d5ed4"] [ext_resource type="PackedScene" uid="uid://cm564ue740cpx" path="res://Scenes/Actors/DeadFairyGuard.tscn" id="14_k00rh"] [ext_resource type="Script" uid="uid://cqwvssstkrdmw" path="res://Scripts/Components/Actors/ActorResourceProvider.cs" id="15_fumcm"] [ext_resource type="Script" uid="uid://ik7s65de723k" path="res://Scripts/Components/FSM/Enemy/NavigationMovementModule.cs" id="16_v7pqc"] +[ext_resource type="SpriteFrames" uid="uid://crpuifbo5c7fd" path="res://Resources/Sprites/RoboBoss.tres" id="17_3n0dy"] [ext_resource type="PackedScene" uid="uid://cj63k0dmk7tl1" path="res://Scenes/Weapons/enemy_weapon_base.tscn" id="17_o816w"] [ext_resource type="Resource" uid="uid://csdlihliv4cr8" path="res://Resources/Weapons/EnemyWeapon_simple.tres" id="18_jdgrw"] [ext_resource type="Script" uid="uid://dhsqsajq537qn" path="res://Scripts/Components/FSM/Enemy/EnemyAlarmModule.cs" id="19_ka71q"] @@ -36,49 +32,13 @@ [ext_resource type="Texture2D" uid="uid://cf2855sd3hqty" path="res://Sprites/Actors/Aiming_Reticule_Small.png" id="27_8kytv"] [sub_resource type="CircleShape2D" id="CircleShape2D_pnkma"] - -[sub_resource type="Resource" id="Resource_n7vdy"] -script = ExtResource("10_d5ed4") -BulletResource = ExtResource("8_xcri6") -bulletCount = 16 -rotationSpeed = 0.0 -_rotationOffset = 0.0 -duration = 5.0 -spread = 360.0 -burstInterval = 0.5 -ShotsPerBurst = 100 -BurstRate = 0.0 -_targetPlayer = false -OverrideOwner = false -Owner = 0 -OverrideDamageType = false -DamageType = 0 -OverrideControllable = false -Controllable = false -OverrideCreationModifier = false -TimeModifiers = Array[ExtResource("9_3n0dy")]([]) -WaitForCompletion = true -metadata/_custom_type_script = "uid://c0ndqalsc4jve" - -[sub_resource type="Resource" id="Resource_uiuc5"] -script = ExtResource("11_v2gvi") -PhaseName = "Asdf" -Threshold = 0 -PlayAnimation = false -Patterns = Array[Object]([SubResource("Resource_n7vdy")]) -metadata/_custom_type_script = "uid://cdd6q2h0t1hhq" - -[sub_resource type="Resource" id="Resource_k00rh"] -script = ExtResource("12_qrag5") -BossName = &"Test" -Phases = Array[ExtResource("11_v2gvi")]([SubResource("Resource_uiuc5")]) -metadata/_custom_type_script = "uid://inasa76li3ym" +radius = 23.0217 [sub_resource type="CircleShape2D" id="CircleShape2D_5wstg"] -radius = 29.0 +radius = 92.0054 [sub_resource type="CircleShape2D" id="CircleShape2D_6x22m"] -radius = 5.0 +radius = 24.0156 [sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_poxpj"] particle_flag_disable_z = true @@ -156,7 +116,7 @@ script = ExtResource("7_u32k8") DamageReceiver = NodePath("../../DamageReceiver") EquippedWeapon = NodePath("../../EnemyWeapon") StorageModule = NodePath("../../Storage") -BossScript = SubResource("Resource_k00rh") +BossScript = ExtResource("8_q8sxg") _moduleNodes = [NodePath("../../AnimationModule")] [node name="BulletSpawner" type="Node2D" parent="StateMachine/Shooting"] @@ -178,10 +138,11 @@ EquippedWeapon = NodePath("../../EnemyWeapon") _moduleNodes = [NodePath("../../AnimationModule")] [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] -sprite_frames = ExtResource("10_v2gvi") -animation = &"right" +sprite_frames = ExtResource("17_3n0dy") +animation = &"down" [node name="PlayerDetection" type="Area2D" parent="."] +visible = false collision_layer = 0 collision_mask = 2 script = ExtResource("11_qrag5") @@ -263,6 +224,7 @@ sprite_frames = SubResource("SpriteFrames_wafqr") script = ExtResource("25_8rqch") [node name="CrosshairProvider" type="Node2D" parent="." node_paths=PackedStringArray("AnimatedSprite")] +visible = false script = ExtResource("26_q2yik") AnimatedSprite = NodePath("Crosshair") CrosshairDistance = 35.0 diff --git a/Scenes/Maps/RogueliteMaps/Beginner1.tscn b/Scenes/Maps/RogueliteMaps/Beginner1.tscn index 4937dd88..b86f029d 100644 --- a/Scenes/Maps/RogueliteMaps/Beginner1.tscn +++ b/Scenes/Maps/RogueliteMaps/Beginner1.tscn @@ -15,10 +15,11 @@ [sub_resource type="RectangleShape2D" id="RectangleShape2D_u3c1h"] size = Vector2(272, 85) -[node name="Tilemaps" type="Node2D"] +[node name="Tilemaps" type="Node2D" node_paths=PackedStringArray("RoomClearActivation")] process_mode = 1 script = ExtResource("1_vhsym") RoomResource = ExtResource("2_vhsym") +RoomClearActivation = [] metadata/test_scene = "res://Scenes/Maps/Roguelike.tscn" [node name="Floor" type="TileMapLayer" parent="." node_paths=PackedStringArray("_solidLayers") groups=["Solid"]] diff --git a/Scenes/Maps/RogueliteMaps/Boss1.tscn b/Scenes/Maps/RogueliteMaps/Boss1.tscn index 487e7164..f073ee1a 100644 --- a/Scenes/Maps/RogueliteMaps/Boss1.tscn +++ b/Scenes/Maps/RogueliteMaps/Boss1.tscn @@ -1,17 +1,20 @@ -[gd_scene load_steps=5 format=4 uid="uid://brytwc48xpj78"] +[gd_scene load_steps=7 format=4 uid="uid://brytwc48xpj78"] [ext_resource type="Script" uid="uid://b2j00riayxkit" path="res://Scripts/Controllers/RogueliteRoom.cs" id="1_vm1u7"] [ext_resource type="Resource" uid="uid://cgac12krx7vbf" path="res://Resources/RogueliteMaps/Boss1.tres" id="2_vm1u7"] [ext_resource type="TileSet" uid="uid://6k28roiljylj" path="res://Tilesets/factory_tileset.tres" id="3_wmvx8"] [ext_resource type="Script" uid="uid://krean0uywtms" path="res://Scripts/TilemapAvoidance.cs" id="4_vo7cb"] +[ext_resource type="PackedScene" uid="uid://dt7i3x3g5ktbl" path="res://Scenes/Actors/Roguelite_Boss_1.tscn" id="5_wmvx8"] +[ext_resource type="PackedScene" uid="uid://crph24e6e0v0q" path="res://Scenes/Interactable/Control_Pad.tscn" id="6_vo7cb"] -[node name="Tilemaps" type="Node2D"] +[node name="Tilemaps" type="Node2D" node_paths=PackedStringArray("RoomClearActivation")] process_mode = 1 script = ExtResource("1_vm1u7") RoomResource = ExtResource("2_vm1u7") +RoomClearActivation = [] [node name="Floor" type="TileMapLayer" parent="." node_paths=PackedStringArray("_solidLayers") groups=["Solid"]] -tile_map_data = PackedByteArray("AAAAAAIAAAACAAAAAAAAAAMAAAACAAAAAAAAAAQAAAACAAAAAAAAAAUAAAACAAAAAAAAAAYAAAACAAAAAAAAAAcAAAACAAAAAAAAAAgAAAACAAAAAAAAAAkAAAACAAAAAAABAAIAAAACAAAAAAABAAMAAAACAAAAAAABAAQAAAACAAAAAAABAAUAAAACAAAAAAABAAYAAAACAAAAAAABAAcAAAACAAAAAAABAAgAAAACAAAAAAABAAkAAAACAAAAAAACAAIAAAACAAAAAAACAAMAAAACAAAAAAACAAQAAAAFAAIAAAACAAUAAAAFAAIAAAACAAYAAAAFAAIAAAACAAcAAAAFAAIAAAACAAgAAAAFAAIAAAACAAkAAAACAAAAAAADAAIAAAACAAAAAAADAAMAAAACAAAAAAADAAQAAAAFAAIAAAADAAUAAAACAAAAAAADAAYAAAAFAAIAAAADAAcAAAACAAAAAAADAAgAAAAFAAIAAAADAAkAAAACAAAAAAAEAAIAAAACAAAAAAAEAAMAAAACAAAAAAAEAAQAAAACAAAAAAAEAAUAAAAFAAIAAAAEAAYAAAACAAAAAAAEAAcAAAAFAAIAAAAEAAgAAAACAAAAAAAEAAkAAAACAAAAAAAFAAIAAAACAAAAAAAFAAMAAAACAAAAAAAFAAQAAAACAAAAAAAFAAUAAAACAAAAAAAFAAYAAAACAAAAAAAFAAcAAAACAAAAAAAFAAgAAAACAAAAAAAFAAkAAAACAAAAAAAGAAIAAAACAAAAAAAGAAMAAAACAAAAAAAGAAQAAAAFAAIAAAAGAAUAAAAFAAIAAAAGAAYAAAAFAAIAAAAGAAcAAAAFAAIAAAAGAAgAAAAFAAIAAAAGAAkAAAACAAAAAAAHAAIAAAACAAAAAAAHAAMAAAACAAAAAAAHAAQAAAAFAAIAAAAHAAUAAAACAAAAAAAHAAYAAAACAAAAAAAHAAcAAAACAAAAAAAHAAgAAAAFAAIAAAAHAAkAAAACAAAAAAAIAAIAAAACAAAAAAAIAAMAAAACAAAAAAAIAAQAAAAFAAIAAAAIAAUAAAAFAAIAAAAIAAYAAAAFAAIAAAAIAAcAAAAFAAIAAAAIAAgAAAAFAAIAAAAIAAkAAAACAAAAAAAJAAIAAAACAAAAAAAJAAMAAAACAAAAAAAJAAQAAAACAAAAAAAJAAUAAAACAAAAAAAJAAYAAAACAAAAAAAJAAcAAAACAAAAAAAJAAgAAAACAAAAAAAJAAkAAAACAAAAAAAKAAIAAAACAAAAAAAKAAMAAAACAAAAAAAKAAQAAAAFAAIAAAAKAAUAAAAFAAIAAAAKAAYAAAAFAAIAAAAKAAcAAAACAAAAAAAKAAgAAAAFAAIAAAAKAAkAAAACAAAAAAALAAIAAAACAAAAAAALAAUAAAACAAAAAAALAAYAAAAFAAIAAAALAAcAAAACAAAAAAALAAgAAAAFAAIAAAALAAkAAAACAAAAAAAMAAIAAAACAAAAAAAMAAUAAAACAAAAAAAMAAYAAAAFAAIAAAAMAAcAAAAFAAIAAAAMAAgAAAAFAAIAAAAMAAkAAAACAAAAAAANAAIAAAACAAAAAAANAAMAAAACAAAAAAANAAQAAAACAAAAAAANAAUAAAACAAAAAAANAAYAAAACAAAAAAANAAcAAAACAAAAAAANAAgAAAACAAAAAAANAAkAAAACAAAAAAAOAAIAAAACAAAAAAAOAAMAAAACAAAAAAAOAAQAAAAFAAIAAAAOAAUAAAAFAAIAAAAOAAYAAAAFAAIAAAAOAAcAAAACAAAAAAAOAAgAAAAFAAIAAAAOAAkAAAACAAAAAAAPAAIAAAACAAAAAAAPAAMAAAACAAAAAAAPAAQAAAAFAAIAAAAPAAUAAAACAAAAAAAPAAYAAAAFAAIAAAAPAAcAAAACAAAAAAAPAAgAAAAFAAIAAAAPAAkAAAACAAAAAAAQAAIAAAACAAAAAAAQAAMAAAACAAAAAAAQAAQAAAAFAAIAAAAQAAUAAAACAAAAAAAQAAYAAAAFAAIAAAAQAAcAAAAFAAIAAAAQAAgAAAAFAAIAAAAQAAkAAAACAAAAAAARAAIAAAACAAAAAAARAAMAAAACAAAAAAARAAQAAAACAAAAAAARAAUAAAACAAAAAAARAAYAAAACAAAAAAARAAcAAAACAAAAAAARAAgAAAACAAAAAAARAAkAAAACAAAAAAASAAIAAAACAAAAAAASAAMAAAACAAAAAAASAAQAAAACAAAAAAASAAUAAAACAAAAAAASAAYAAAACAAAAAAASAAcAAAACAAAAAAASAAgAAAACAAAAAAASAAkAAAACAAAAAAATAAIAAAACAAAAAAATAAMAAAACAAAAAAATAAQAAAACAAAAAAATAAUAAAACAAAAAAATAAYAAAACAAAAAAATAAcAAAACAAAAAAATAAgAAAACAAAAAAATAAkAAAACAAAAAAAAAAAAAAACAAAAAAAAAAEAAAACAAAAAAABAAAAAAACAAAAAAABAAEAAAACAAAAAAACAAAAAAACAAAAAAACAAEAAAACAAAAAAADAAAAAAACAAAAAAADAAEAAAACAAAAAAAEAAAAAAACAAAAAAAEAAEAAAACAAAAAAAFAAAAAAACAAAAAAAFAAEAAAACAAAAAAAGAAAAAAACAAAAAAAGAAEAAAACAAAAAAAHAAAAAAACAAAAAAAHAAEAAAACAAAAAAAIAAAAAAACAAAAAAAIAAEAAAACAAAAAAAJAAAAAAACAAAAAAAJAAEAAAACAAAAAAAKAAAAAAACAAAAAAAKAAEAAAACAAAAAAALAAAAAAACAAAAAAALAAEAAAACAAAAAAALAAMAAAACAAAAAAALAAQAAAAFAAIAAAAMAAAAAAACAAAAAAAMAAEAAAACAAAAAAAMAAMAAAACAAAAAAAMAAQAAAAFAAIAAAANAAAAAAACAAAAAAANAAEAAAACAAAAAAAOAAAAAAACAAAAAAAOAAEAAAACAAAAAAAPAAAAAAACAAAAAAAPAAEAAAACAAAAAAAQAAAAAAACAAAAAAAQAAEAAAACAAAAAAARAAAAAAACAAAAAAARAAEAAAACAAAAAAASAAAAAAACAAAAAAASAAEAAAACAAAAAAATAAAAAAACAAAAAAATAAEAAAACAAAAAAA=") +tile_map_data = PackedByteArray("AAAAAAIAAAALAAcAAAAAAAMAAAALAAcAAAAAAAQAAAALAAcAAAAAAAUAAAALAAcAAAAAAAYAAAALAAcAAAAAAAcAAAALAAcAAAAAAAgAAAALAAcAAAAAAAkAAAALAAcAAAABAAIAAAALAAcAAAABAAMAAAALAAcAAAABAAQAAAALAAcAAAABAAUAAAALAAcAAAABAAYAAAALAAcAAAABAAcAAAALAAcAAAABAAgAAAALAAcAAAABAAkAAAALAAcAAAACAAIAAAALAAcAAAACAAMAAAALAAcAAAACAAQAAAALAAcAAAACAAUAAAALAAcAAAACAAYAAAALAAcAAAACAAcAAAALAAcAAAACAAgAAAALAAcAAAACAAkAAAALAAcAAAADAAIAAAALAAcAAAADAAMAAAALAAcAAAADAAQAAAALAAcAAAADAAUAAAALAAcAAAADAAYAAAALAAcAAAADAAcAAAALAAcAAAADAAgAAAALAAcAAAADAAkAAAALAAcAAAAEAAIAAAALAAcAAAAEAAMAAAALAAcAAAAEAAQAAAALAAcAAAAEAAUAAAALAAcAAAAEAAYAAAALAAcAAAAEAAcAAAALAAcAAAAEAAgAAAALAAcAAAAEAAkAAAALAAcAAAAFAAIAAAALAAcAAAAFAAMAAAALAAcAAAAFAAQAAAALAAcAAAAFAAUAAAALAAcAAAAFAAYAAAALAAcAAAAFAAcAAAALAAcAAAAFAAgAAAALAAcAAAAFAAkAAAALAAcAAAAGAAIAAAALAAcAAAAGAAMAAAALAAcAAAAGAAQAAAALAAcAAAAGAAUAAAALAAcAAAAGAAYAAAALAAcAAAAGAAcAAAALAAcAAAAGAAgAAAALAAcAAAAGAAkAAAALAAcAAAAHAAIAAAALAAcAAAAHAAMAAAALAAcAAAAHAAQAAAALAAcAAAAHAAUAAAALAAcAAAAHAAYAAAALAAcAAAAHAAcAAAALAAcAAAAHAAgAAAALAAcAAAAHAAkAAAALAAcAAAAIAAIAAAALAAcAAAAIAAMAAAALAAcAAAAIAAQAAAALAAcAAAAIAAUAAAALAAcAAAAIAAYAAAALAAcAAAAIAAcAAAALAAcAAAAIAAgAAAALAAcAAAAIAAkAAAALAAcAAAAJAAIAAAALAAcAAAAJAAMAAAALAAcAAAAJAAQAAAALAAcAAAAJAAUAAAALAAcAAAAJAAYAAAALAAcAAAAJAAcAAAALAAcAAAAJAAgAAAALAAcAAAAJAAkAAAALAAcAAAAKAAIAAAALAAcAAAAKAAMAAAALAAcAAAAKAAQAAAALAAcAAAAKAAUAAAALAAcAAAAKAAYAAAALAAcAAAAKAAcAAAALAAcAAAAKAAgAAAALAAcAAAAKAAkAAAALAAcAAAALAAIAAAALAAcAAAALAAUAAAALAAcAAAALAAYAAAALAAcAAAALAAcAAAALAAcAAAALAAgAAAALAAcAAAALAAkAAAALAAcAAAAMAAIAAAALAAcAAAAMAAUAAAALAAcAAAAMAAYAAAALAAcAAAAMAAcAAAALAAcAAAAMAAgAAAALAAcAAAAMAAkAAAALAAcAAAANAAIAAAALAAcAAAANAAMAAAALAAcAAAANAAQAAAALAAcAAAANAAUAAAALAAcAAAANAAYAAAALAAcAAAANAAcAAAALAAcAAAANAAgAAAALAAcAAAANAAkAAAALAAcAAAAOAAIAAAALAAcAAAAOAAMAAAALAAcAAAAOAAQAAAALAAcAAAAOAAUAAAALAAcAAAAOAAYAAAALAAcAAAAOAAcAAAALAAcAAAAOAAgAAAALAAcAAAAOAAkAAAALAAcAAAAPAAIAAAALAAcAAAAPAAMAAAALAAcAAAAPAAQAAAALAAcAAAAPAAUAAAALAAcAAAAPAAYAAAALAAcAAAAPAAcAAAALAAcAAAAPAAgAAAALAAcAAAAPAAkAAAALAAcAAAAQAAIAAAALAAcAAAAQAAMAAAALAAcAAAAQAAQAAAALAAcAAAAQAAUAAAALAAcAAAAQAAYAAAALAAcAAAAQAAcAAAALAAcAAAAQAAgAAAALAAcAAAAQAAkAAAALAAcAAAARAAIAAAALAAcAAAARAAMAAAALAAcAAAARAAQAAAALAAcAAAARAAUAAAALAAcAAAARAAYAAAALAAcAAAARAAcAAAALAAcAAAARAAgAAAALAAcAAAARAAkAAAALAAcAAAASAAIAAAALAAcAAAASAAMAAAALAAcAAAASAAQAAAALAAcAAAASAAUAAAALAAcAAAASAAYAAAALAAcAAAASAAcAAAALAAcAAAASAAgAAAALAAcAAAASAAkAAAALAAcAAAATAAIAAAALAAcAAAATAAMAAAALAAcAAAATAAQAAAALAAcAAAATAAUAAAALAAcAAAATAAYAAAALAAcAAAATAAcAAAALAAcAAAATAAgAAAALAAcAAAATAAkAAAALAAcAAAAAAAAAAAALAAcAAAAAAAEAAAALAAcAAAABAAAAAAALAAcAAAABAAEAAAALAAcAAAACAAAAAAALAAcAAAACAAEAAAALAAcAAAADAAAAAAALAAcAAAADAAEAAAALAAcAAAAEAAAAAAALAAcAAAAEAAEAAAALAAcAAAAFAAAAAAALAAcAAAAFAAEAAAALAAcAAAAGAAAAAAALAAcAAAAGAAEAAAALAAcAAAAHAAAAAAALAAcAAAAHAAEAAAALAAcAAAAIAAAAAAALAAcAAAAIAAEAAAALAAcAAAAJAAAAAAALAAcAAAAJAAEAAAALAAcAAAAKAAAAAAALAAcAAAAKAAEAAAALAAcAAAALAAAAAAALAAcAAAALAAEAAAALAAcAAAALAAMAAAALAAcAAAALAAQAAAALAAcAAAAMAAAAAAALAAcAAAAMAAEAAAALAAcAAAAMAAMAAAALAAcAAAAMAAQAAAALAAcAAAANAAAAAAALAAcAAAANAAEAAAALAAcAAAAOAAAAAAALAAcAAAAOAAEAAAALAAcAAAAPAAAAAAALAAcAAAAPAAEAAAALAAcAAAAQAAAAAAALAAcAAAAQAAEAAAALAAcAAAARAAAAAAALAAcAAAARAAEAAAALAAcAAAASAAAAAAALAAcAAAASAAEAAAALAAcAAAATAAAAAAALAAcAAAATAAEAAAALAAcAAAAAAAoAAAALAAcAAAAAAAsAAAALAAcAAAAAAAwAAAALAAcAAAAAAA0AAAALAAcAAAAAAA4AAAALAAcAAAAAAA8AAAALAAcAAAAAABAAAAALAAcAAAAAABEAAAALAAcAAAAAABIAAAALAAcAAAAAABMAAAALAAcAAAABAAoAAAALAAcAAAABAAsAAAALAAcAAAABAAwAAAALAAcAAAABAA0AAAALAAcAAAABAA4AAAALAAcAAAABAA8AAAALAAcAAAABABAAAAALAAcAAAABABEAAAALAAcAAAABABIAAAALAAcAAAABABMAAAALAAcAAAACAAoAAAALAAcAAAACAAsAAAALAAcAAAACAAwAAAALAAcAAAACAA0AAAALAAcAAAACAA4AAAALAAcAAAACAA8AAAALAAcAAAACABAAAAALAAcAAAACABEAAAALAAcAAAACABIAAAALAAcAAAACABMAAAALAAcAAAADAAoAAAALAAcAAAADAAsAAAALAAcAAAADAAwAAAALAAcAAAADAA0AAAALAAcAAAADAA4AAAALAAcAAAADAA8AAAALAAcAAAADABAAAAALAAcAAAADABEAAAALAAcAAAADABIAAAALAAcAAAADABMAAAALAAcAAAAEAAoAAAALAAcAAAAEAAsAAAALAAcAAAAEAAwAAAALAAcAAAAEAA0AAAALAAcAAAAEAA4AAAALAAcAAAAEAA8AAAALAAcAAAAEABAAAAALAAcAAAAEABEAAAALAAcAAAAEABIAAAALAAcAAAAEABMAAAALAAcAAAAFAAoAAAALAAcAAAAFAAsAAAALAAcAAAAFAAwAAAALAAcAAAAFAA0AAAALAAcAAAAFAA4AAAALAAcAAAAFAA8AAAALAAcAAAAFABAAAAALAAcAAAAFABEAAAALAAcAAAAFABIAAAALAAcAAAAFABMAAAALAAcAAAAGAAoAAAALAAcAAAAGAAsAAAALAAcAAAAGAAwAAAALAAcAAAAGAA0AAAALAAcAAAAGAA4AAAALAAcAAAAGAA8AAAALAAcAAAAGABAAAAALAAcAAAAGABEAAAALAAcAAAAGABIAAAALAAcAAAAGABMAAAALAAcAAAAHAAoAAAALAAcAAAAHAAsAAAALAAcAAAAHAAwAAAALAAcAAAAHAA0AAAALAAcAAAAHAA4AAAALAAcAAAAHAA8AAAALAAcAAAAHABAAAAALAAcAAAAHABEAAAALAAcAAAAHABIAAAALAAcAAAAHABMAAAALAAcAAAAIAAoAAAALAAcAAAAIAAsAAAALAAcAAAAIAAwAAAALAAcAAAAIAA0AAAALAAcAAAAIAA4AAAALAAcAAAAIAA8AAAALAAcAAAAIABAAAAALAAcAAAAIABEAAAALAAcAAAAIABIAAAALAAcAAAAIABMAAAALAAcAAAAJAAoAAAALAAcAAAAJAAsAAAALAAcAAAAJAAwAAAALAAcAAAAJAA0AAAALAAcAAAAJAA4AAAALAAcAAAAJAA8AAAALAAcAAAAJABAAAAALAAcAAAAJABEAAAALAAcAAAAJABIAAAALAAcAAAAJABMAAAALAAcAAAAKAAoAAAALAAcAAAAKAAsAAAALAAcAAAAKAAwAAAALAAcAAAAKAA0AAAALAAcAAAAKAA4AAAALAAcAAAAKAA8AAAALAAcAAAAKABAAAAALAAcAAAAKABEAAAALAAcAAAAKABIAAAALAAcAAAAKABMAAAALAAcAAAALAAoAAAALAAcAAAALAAsAAAALAAcAAAALAAwAAAALAAcAAAALAA0AAAALAAcAAAALAA4AAAALAAcAAAALAA8AAAALAAcAAAALABAAAAALAAcAAAALABEAAAALAAcAAAALABIAAAALAAcAAAALABMAAAALAAcAAAAMAAoAAAALAAcAAAAMAAsAAAALAAcAAAAMAAwAAAALAAcAAAAMAA0AAAALAAcAAAAMAA4AAAALAAcAAAAMAA8AAAALAAcAAAAMABAAAAALAAcAAAAMABEAAAALAAcAAAAMABIAAAALAAcAAAAMABMAAAALAAcAAAANAAoAAAALAAcAAAANAAsAAAALAAcAAAANAAwAAAALAAcAAAANAA0AAAALAAcAAAANAA4AAAALAAcAAAANAA8AAAALAAcAAAANABAAAAALAAcAAAANABEAAAALAAcAAAANABIAAAALAAcAAAANABMAAAALAAcAAAAOAAoAAAALAAcAAAAOAAsAAAALAAcAAAAOAAwAAAALAAcAAAAOAA0AAAALAAcAAAAOAA4AAAALAAcAAAAOAA8AAAALAAcAAAAOABAAAAALAAcAAAAOABEAAAALAAcAAAAOABIAAAALAAcAAAAOABMAAAALAAcAAAAPAAoAAAALAAcAAAAPAAsAAAALAAcAAAAPAAwAAAALAAcAAAAPAA0AAAALAAcAAAAPAA4AAAALAAcAAAAPAA8AAAALAAcAAAAPABAAAAALAAcAAAAPABEAAAALAAcAAAAPABIAAAALAAcAAAAPABMAAAALAAcAAAAQAAoAAAALAAcAAAAQAAsAAAALAAcAAAAQAAwAAAALAAcAAAAQAA0AAAALAAcAAAAQAA4AAAALAAcAAAAQAA8AAAALAAcAAAAQABAAAAALAAcAAAAQABEAAAALAAcAAAAQABIAAAALAAcAAAAQABMAAAALAAcAAAARAAoAAAALAAcAAAARAAsAAAALAAcAAAARAAwAAAALAAcAAAARAA0AAAALAAcAAAARAA4AAAALAAcAAAARAA8AAAALAAcAAAARABAAAAALAAcAAAARABEAAAALAAcAAAARABIAAAALAAcAAAARABMAAAALAAcAAAASAAoAAAALAAcAAAASAAsAAAALAAcAAAASAAwAAAALAAcAAAASAA0AAAALAAcAAAASAA4AAAALAAcAAAASAA8AAAALAAcAAAASABAAAAALAAcAAAASABEAAAALAAcAAAASABIAAAALAAcAAAASABMAAAALAAcAAAATAAoAAAALAAcAAAATAAsAAAALAAcAAAATAAwAAAALAAcAAAATAA0AAAALAAcAAAATAA4AAAALAAcAAAATAA8AAAALAAcAAAATABAAAAALAAcAAAATABEAAAALAAcAAAATABIAAAALAAcAAAATABMAAAALAAcAAAA=") tile_set = ExtResource("3_wmvx8") navigation_enabled = false script = ExtResource("4_vo7cb") @@ -19,12 +22,13 @@ _solidLayers = [NodePath("../Solid"), NodePath("../Props")] metadata/_edit_lock_ = true [node name="Solid" type="TileMapLayer" parent="." groups=["Solid"]] -tile_map_data = PackedByteArray("AAATAAAAAAABAAsAAAASAAAAAAABAAQAAAARAAAAAAABAAQAAAAQAAAAAAABAAQAAAAPAAAAAAABAAQAAAAOAAAAAAABAAQAAAANAAAAAAABAAQAAAAMAAAAAAABAAQAAAALAAAAAAACAAQAAAAIAAAAAAADAAQAAAAHAAAAAAABAAQAAAAGAAAAAAABAAQAAAAFAAAAAAABAAQAAAAEAAAAAAABAAQAAAADAAAAAAABAAQAAAACAAAAAAABAAQAAAABAAAAAAABAAQAAAAAAAAAAAAAAAsAAAATAAIAAAAEAAQAAAATAAEAAAAAAAQAAAAAAAIAAAAEAAQAAAAAAAEAAAAAAAQAAAAAAAkAAAAAAAwAAAAAAAgAAAAAAAQAAAAAAAcAAAAAAAQAAAAAAAYAAAAFAAQAAAATAAkAAAABAAwAAAASAAkAAAABAAQAAAARAAkAAAABAAQAAAAQAAkAAAABAAQAAAAPAAkAAAABAAQAAAAOAAkAAAABAAQAAAANAAkAAAABAAQAAAAMAAkAAAABAAQAAAALAAkAAAACAAQAAAAIAAkAAAADAAQAAAAHAAkAAAABAAQAAAAGAAkAAAABAAQAAAAFAAkAAAABAAQAAAAEAAkAAAABAAQAAAADAAkAAAABAAQAAAACAAkAAAABAAQAAAABAAkAAAABAAQAAAATAAgAAAAAAAQAAAATAAcAAAAAAAQAAAATAAYAAAAFAAQAAAATAAMAAAALAAAAAAATAAQAAAALAAEAAAALAAEAAAALAAAAAAALAAIAAAALAAEAAAAMAAEAAAALAAAAAAAMAAIAAAALAAEAAAANAAEAAAALAAAAAAANAAIAAAALAAEAAAAOAAEAAAALAAAAAAAOAAIAAAALAAEAAAAPAAEAAAALAAAAAAAPAAIAAAALAAEAAAAQAAEAAAALAAAAAAAQAAIAAAALAAEAAAARAAEAAAALAAAAAAARAAIAAAALAAEAAAASAAEAAAALAAAAAAASAAIAAAALAAEAAAABAAEAAAALAAAAAAABAAIAAAALAAEAAAACAAEAAAALAAAAAAACAAIAAAALAAEAAAADAAEAAAALAAAAAAADAAIAAAALAAEAAAAEAAEAAAALAAAAAAAEAAIAAAALAAEAAAAFAAEAAAALAAAAAAAFAAIAAAALAAEAAAAGAAEAAAALAAAAAAAGAAIAAAALAAEAAAAHAAEAAAALAAAAAAAHAAIAAAALAAEAAAAIAAEAAAALAAAAAAAIAAIAAAALAAEAAAAAAAMAAAALAAAAAAAAAAQAAAALAAEAAAA=") +tile_map_data = PackedByteArray("AAAAAAoAAAABAA4AAAAAAAsAAAAAAAQAAAAAAAwAAAAAAAQAAAAAAA0AAAAAAAQAAAAAAA4AAAAAAAQAAAAAABAAAAAAAAQAAAAAABEAAAAAAAQAAAAAABIAAAAAAAQAAAAAABMAAAAAAAwAAAABABMAAAABAAQAAAACABMAAAABAAQAAAADABMAAAABAAQAAAAEABMAAAABAAQAAAAFABMAAAABAAQAAAAGABMAAAABAAQAAAAHABMAAAABAAQAAAAIABMAAAABAAQAAAALABMAAAABAAQAAAAMABMAAAABAAQAAAANABMAAAABAAQAAAAOABMAAAABAAQAAAAPABMAAAABAAQAAAAQABMAAAABAAQAAAARABMAAAABAAQAAAASABMAAAABAAQAAAATAAoAAAAAAAQAAAATAAsAAAAAAAQAAAATAAwAAAAAAAQAAAATAA0AAAAAAAQAAAATAA4AAAAAAAQAAAATABAAAAAAAAQAAAATABEAAAAAAAQAAAATABIAAAAAAAQAAAATABMAAAABAAwAAAACAAAAAAABAAQAAAACAAEAAAALAAAAAAACAAIAAAALAAEAAAADAAAAAAABAAQAAAADAAEAAAALAAAAAAAEAAAAAAABAAQAAAAEAAEAAAALAAAAAAAFAAAAAAABAAQAAAAFAAEAAAALAAAAAAAGAAAAAAABAAQAAAAGAAEAAAALAAAAAAAHAAAAAAABAAQAAAAHAAEAAAALAAAAAAAIAAAAAAADAAQAAAAIAAEAAAALAAAAAAANAAAAAAABAAQAAAANAAEAAAALAAAAAAAOAAAAAAABAAQAAAAOAAEAAAALAAAAAAAPAAAAAAABAAQAAAAPAAEAAAALAAAAAAAQAAAAAAABAAQAAAAQAAEAAAALAAAAAAARAAAAAAABAAQAAAARAAEAAAALAAAAAAASAAAAAAABAAQAAAASAAEAAAALAAAAAAATAAAAAAABAAsAAAATAAEAAAAAAAQAAAATAAgAAAAAAAQAAAAAAAAAAAAAAAsAAAAAAAEAAAAAAAQAAAAAAAIAAAAAAAQAAAAAAAMAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAYAAAAAAAQAAAAAAAcAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAkAAAABAA4AAAABAAAAAAABAAQAAAABAAEAAAALAAAAAAABAAIAAAALAAEAAAADAAIAAAALAAEAAAAEAAIAAAALAAEAAAAFAAIAAAALAAEAAAAGAAIAAAALAAEAAAAHAAIAAAALAAEAAAAIAAIAAAALAAEAAAALAAAAAAACAAQAAAALAAEAAAALAAAAAAALAAIAAAALAAEAAAAMAAAAAAABAAQAAAAMAAEAAAALAAAAAAAMAAIAAAALAAEAAAANAAIAAAALAAEAAAAOAAIAAAALAAEAAAAPAAIAAAALAAEAAAAQAAIAAAALAAEAAAARAAIAAAALAAEAAAASAAIAAAALAAEAAAATAAIAAAAAAAQAAAATAAMAAAAAAAQAAAATAAQAAAAAAAQAAAATAAYAAAAAAAQAAAATAAcAAAAAAAQAAAATAAkAAAAAAAQAAAAAAA8AAAAAAAQAAAAAAAUAAAAAAAQAAAAKABMAAAABAAQAAAAJABMAAAABAAQAAAATAA8AAAAAAAQAAAATAAUAAAAAAAQAAAA=") tile_set = ExtResource("3_wmvx8") navigation_enabled = false metadata/_edit_lock_ = true [node name="Props" type="TileMapLayer" parent="." groups=["Solid"]] +tile_map_data = PackedByteArray("AAALAAEAAAAJAAwAAAALAAIAAAAJAA0AAAAIAAEAAAAKAAwAAAAIAAIAAAAKAA0AAAA=") tile_set = ExtResource("3_wmvx8") navigation_enabled = false metadata/_edit_lock_ = true @@ -32,13 +36,11 @@ metadata/_edit_lock_ = true [node name="Actors" type="Node2D" parent="."] metadata/_edit_lock_ = true +[node name="Boss" parent="Actors" instance=ExtResource("5_wmvx8")] +position = Vector2(164, 159) + +[node name="ControlPad" parent="Actors" instance=ExtResource("6_vo7cb")] +position = Vector2(118, 37) +ActivationType = 1 + [node name="EnemySpawners" type="Node2D" parent="."] - -[node name="RogueliteEnemySpawner" type="Marker2D" parent="EnemySpawners"] -position = Vector2(57, 67) - -[node name="RogueliteEnemySpawner2" type="Marker2D" parent="EnemySpawners"] -position = Vector2(88, 126) - -[node name="RogueliteEnemySpawner3" type="Marker2D" parent="EnemySpawners"] -position = Vector2(266, 122) diff --git a/Scenes/Maps/RogueliteMaps/Long_Factory.tscn b/Scenes/Maps/RogueliteMaps/Long_Factory.tscn index 31c6a226..faf8cd25 100644 --- a/Scenes/Maps/RogueliteMaps/Long_Factory.tscn +++ b/Scenes/Maps/RogueliteMaps/Long_Factory.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=15 format=4 uid="uid://b7oa5icmcetwj"] +[gd_scene load_steps=16 format=4 uid="uid://b7oa5icmcetwj"] [ext_resource type="Script" uid="uid://b2j00riayxkit" path="res://Scripts/Controllers/RogueliteRoom.cs" id="1_84eqy"] [ext_resource type="Resource" uid="uid://b8lpo4im87rx7" path="res://Resources/RogueliteMaps/Long_Factory.tres" id="2_k6121"] @@ -8,6 +8,7 @@ [ext_resource type="PackedScene" uid="uid://dcbcyp1qogcl0" path="res://Scenes/Props/BigTankHorizontal.tscn" id="6_rse1i"] [ext_resource type="Script" uid="uid://8umfjejbkcsm" path="res://Scripts/Actors/RogueliteEnemySpawner.cs" id="6_x05mq"] [ext_resource type="Resource" uid="uid://qbo6avc7x64b" path="res://Resources/Enemies/Fairy_Guard.tres" id="7_agp2x"] +[ext_resource type="PackedScene" uid="uid://dux8pv1y8wkt0" path="res://Scenes/Props/Capacitor.tscn" id="7_jw5yi"] [ext_resource type="Resource" uid="uid://cqfyuurvqb8m6" path="res://Resources/Enemies/Base_Fairy_Special.tres" id="8_agp2x"] [ext_resource type="Script" uid="uid://umyqgyxjiaig" path="res://Scripts/Actors/ChestMarker.cs" id="10_3vkr4"] [ext_resource type="Texture2D" uid="uid://qeh4ai8h6sw5" path="res://Sprites/Chest.png" id="11_oc0wb"] @@ -66,6 +67,12 @@ position = Vector2(31, 49) [node name="BigTankHorizontal2" parent="Tilemaps/Actors" instance=ExtResource("6_rse1i")] position = Vector2(65, 48) +[node name="Capacitor" parent="Tilemaps/Actors" node_paths=PackedStringArray("Target") instance=ExtResource("7_jw5yi")] +position = Vector2(296, 55) +Health = 6.0 +ActivationType = 2 +Target = NodePath("../HorizontalForceField") + [node name="EnemySpawners" type="Node2D" parent="."] [node name="RogueliteEnemySpawner4" type="Marker2D" parent="EnemySpawners"] diff --git a/Scripts/Actors/RogueliteEnemySpawner.cs b/Scripts/Actors/RogueliteEnemySpawner.cs index 884f8bc4..b41dce84 100644 --- a/Scripts/Actors/RogueliteEnemySpawner.cs +++ b/Scripts/Actors/RogueliteEnemySpawner.cs @@ -62,6 +62,7 @@ public partial class RogueliteEnemySpawner : Marker2D Item = mapTheme.EnemiesLootTable.Items.ToList().Shuffle().First(), Chance = mapTheme.EnemyDropChance }); + _spawnedEnemy.ExtraLoot.Add(new LootDrop() { Item = mapTheme.PointItemResource, diff --git a/Scripts/Resources/FSMMovementPattern.cs b/Scripts/Resources/FSMMovementPattern.cs new file mode 100644 index 00000000..1900879c --- /dev/null +++ b/Scripts/Resources/FSMMovementPattern.cs @@ -0,0 +1,58 @@ +using Cirno.Scripts.Actors; +using Cirno.Scripts.AttackPatterns; +using Godot; + +namespace Cirno.Scripts.Resources; + +[GlobalClass] +public partial class FSMMovementPattern : AttackPattern +{ + [Export] private Vector2 relativeTargetPosition; + [Export] private float moveDuration = 2f; + [Export] private Tween.TransitionType transitionType = Tween.TransitionType.Linear; + [Export] private Tween.EaseType easeType = Tween.EaseType.InOut; + + public override IPatternMachine MakeMachine(Node2D parent) + { + return new FSMMovementPatternMachine(this, parent); + } + + public class FSMMovementPatternMachine(FSMMovementPattern pattern, Node2D parent) : IPatternMachine + { + public Node2D Parent => parent; + + private Tween tween; + private bool isComplete = false; + + protected IScriptHost Boss; + + public void Start() + { + if (parent is not IScriptHost boss) + return; + + Boss = boss; + tween = Parent.CreateTween(); + isComplete = false; + + Vector2 targetPosition = (Boss?.HomePosition ?? Parent.GlobalPosition) + pattern.relativeTargetPosition; + + boss.ChangeSpriteDirection(-(Parent.GlobalPosition - targetPosition)); + tween.TweenProperty(Parent, "global_position", targetPosition, pattern.moveDuration) + .SetTrans(pattern.transitionType) + .SetEase(pattern.easeType) + .Finished += () => + { + isComplete = true; + boss.ChangeSpriteDirection(Vector2.Zero); + }; + } + + public void UpdatePattern(double delta) { } + + public bool IsComplete() + { + return isComplete; + } + } +} diff --git a/Scripts/Resources/FSMMovementPattern.cs.uid b/Scripts/Resources/FSMMovementPattern.cs.uid new file mode 100644 index 00000000..5da242de --- /dev/null +++ b/Scripts/Resources/FSMMovementPattern.cs.uid @@ -0,0 +1 @@ +uid://bj3v4rlov86gw