boss start, some enemies

This commit is contained in:
Daniel Kauss Serna 2026-04-16 18:53:36 +02:00
parent 93968ff9fb
commit 66ecb04bd1
123 changed files with 1884 additions and 499 deletions

52
scenes/boss_arena.tscn Normal file
View file

@ -0,0 +1,52 @@
[gd_scene format=3 uid="uid://bp2lov56tjht4"]
[ext_resource type="Texture2D" uid="uid://crs865o7rclhe" path="res://assets/enviroment/arena.png" id="1_7okkn"]
[ext_resource type="PackedScene" uid="uid://ncgwx0yjn2gt" path="res://scenes/player.tscn" id="2_84w8w"]
[ext_resource type="Texture2D" uid="uid://bb7yept5f8ya0" path="res://assets/vfx/danger_round.png" id="3_6wr5o"]
[ext_resource type="Script" uid="uid://clccy2s0llda3" path="res://scenes/boss_machine.gd" id="3_84w8w"]
[ext_resource type="Texture2D" uid="uid://bqgunp07jecl7" path="res://assets/bosses/claw.png" id="4_vi6v3"]
[ext_resource type="Script" uid="uid://t8ykexnisuw3" path="res://scenes/claw.gd" id="6_6wr5o"]
[ext_resource type="Texture2D" uid="uid://1wosmyr2md2i" path="res://assets/bosses/chica-2.png" id="7_6wr5o"]
[node name="BossArena" type="Node2D" unique_id=1817081539]
[node name="Arena" type="Sprite2D" parent="." unique_id=138900999]
position = Vector2(491, 321)
texture = ExtResource("1_7okkn")
[node name="Player" parent="." unique_id=1743724931 instance=ExtResource("2_84w8w")]
position = Vector2(332, 406)
[node name="BossMachine" type="Node2D" parent="." unique_id=1366822299 node_paths=PackedStringArray("spawn_points")]
script = ExtResource("3_84w8w")
spawn_points = NodePath("Spanwpoints")
[node name="Spanwpoints" type="Node2D" parent="BossMachine" unique_id=4456145]
[node name="Marker2D" type="Marker2D" parent="BossMachine/Spanwpoints" unique_id=1979901668]
position = Vector2(846, 351)
[node name="Marker2D2" type="Marker2D" parent="BossMachine/Spanwpoints" unique_id=887716747]
position = Vector2(855, 558)
[node name="Marker2D3" type="Marker2D" parent="BossMachine/Spanwpoints" unique_id=786929856]
position = Vector2(221, 521)
[node name="Marker2D4" type="Marker2D" parent="BossMachine/Spanwpoints" unique_id=468086628]
position = Vector2(228, 334)
[node name="DangerRound" type="Sprite2D" parent="BossMachine" unique_id=2022174099]
self_modulate = Color(1, 0.22745098, 0.42352942, 1)
position = Vector2(215, 405.365)
scale = Vector2(4, 2.96)
texture = ExtResource("3_6wr5o")
[node name="Claw" type="Sprite2D" parent="BossMachine/DangerRound" unique_id=1906559880]
position = Vector2(0, -60)
scale = Vector2(0.25, 0.33783785)
texture = ExtResource("4_vi6v3")
script = ExtResource("6_6wr5o")
[node name="Girl" type="Sprite2D" parent="BossMachine" unique_id=927639132]
position = Vector2(470, 200)
texture = ExtResource("7_6wr5o")

55
scenes/boss_machine.gd Normal file
View file

@ -0,0 +1,55 @@
extends Node2D
@export var speed = 300;
@export var spawn_points : Node2D
var target_pos := Vector2(0, 0)
@onready var marker : Sprite2D = $DangerRound
@onready var claw : Claw = $DangerRound/Claw
enum s { Follow, Smash, Spawn, Laser}
var state = s.Follow
var max_follow_time = 2;
var following = max_follow_time;
var timer = 0;
func _ready() -> void:
target_pos = position
func _physics_process(delta: float) -> void:
match(state):
s.Follow:
follow(delta)
s.Smash:
pass
func spawn_minions(times : int):
var points : Array[Node]= spawn_points.get_children()
points.shuffle()
for i in range(times):
var p = points[i].global_position
await create_tween().tween_property(marker, "global_position", p, 1).finished
await claw.pickup()
state = s.Follow
func smash():
await claw.smash();
if randf() < 0.7:
state = s.Follow
else:
state = s.Spawn
spawn_minions(3)
func follow(delta : float):
var player : Player = get_tree().get_first_node_in_group("player")
if not player: return
move_to(player.global_position, delta)
following -= delta
if following < 0:
state = s.Smash
smash()
following = max_follow_time;
func move_to(pos : Vector2, delta : float):
marker.global_position = marker.global_position.move_toward(pos, delta * speed)

View file

@ -0,0 +1 @@
uid://clccy2s0llda3

33
scenes/boss_machine.tscn Normal file
View file

@ -0,0 +1,33 @@
[gd_scene format=3 uid="uid://b81ytfjjmvsty"]
[ext_resource type="Texture2D" uid="uid://crs865o7rclhe" path="res://assets/enviroment/arena.png" id="1_1n8bo"]
[ext_resource type="Texture2D" uid="uid://bqgunp07jecl7" path="res://assets/bosses/claw.png" id="2_8i6aj"]
[ext_resource type="Texture2D" uid="uid://co3ktm2wtfn8v" path="res://assets/bosses/girl.png" id="3_jdagj"]
[ext_resource type="Texture2D" uid="uid://bb7yept5f8ya0" path="res://assets/vfx/danger_round.png" id="4_8i6aj"]
[ext_resource type="PackedScene" uid="uid://ncgwx0yjn2gt" path="res://scenes/player.tscn" id="4_x8ru1"]
[node name="BossArena" type="Node2D" unique_id=1817081539]
[node name="Arena" type="Sprite2D" parent="." unique_id=138900999]
position = Vector2(491, 321)
texture = ExtResource("1_1n8bo")
[node name="Player" parent="." unique_id=1743724931 instance=ExtResource("4_x8ru1")]
position = Vector2(332, 406)
[node name="Boss" type="Node2D" parent="." unique_id=1366822299]
[node name="DangerRound" type="Sprite2D" parent="Boss" unique_id=2022174099]
self_modulate = Color(1, 0.22745098, 0.42352942, 1)
position = Vector2(215, 405.365)
scale = Vector2(4, 2.96)
texture = ExtResource("4_8i6aj")
[node name="Gancho" type="Sprite2D" parent="Boss/DangerRound" unique_id=1906559880]
position = Vector2(0, -83.56925)
scale = Vector2(0.25, 0.33783785)
texture = ExtResource("2_8i6aj")
[node name="Chica" type="Sprite2D" parent="Boss" unique_id=927639132]
position = Vector2(436, -13)
texture = ExtResource("3_jdagj")

16
scenes/claw.gd Normal file
View file

@ -0,0 +1,16 @@
class_name Claw extends Sprite2D
func smash():
await get_tree().create_timer(0.8).timeout
var t = create_tween()
t.tween_property(self, "position:y", 0, 0.1);
await t.tween_property(self, "position:y", -80, 1).finished;
func pickup():
await get_tree().create_timer(0.2).timeout
var t = create_tween()
t.tween_property(self, "position:y", 0, 0.4);
await t.tween_property(self, "position:y", -80, 1).finished;

1
scenes/claw.gd.uid Normal file
View file

@ -0,0 +1 @@
uid://t8ykexnisuw3

View file

@ -4,8 +4,10 @@
[ext_resource type="Resource" uid="uid://cf7x0uuj6wnil" path="res://resources/scythe.tres" id="2_j1ss0"]
[ext_resource type="Script" uid="uid://synocbtvgrf4" path="res://scripts/shadow.gd" id="2_vv3x1"]
[ext_resource type="PackedScene" uid="uid://c8l24d01bm2sg" path="res://scenes/enemy_explosion.tscn" id="3_esqeu"]
[ext_resource type="Texture2D" uid="uid://cyftyrf36mm0r" path="res://assets/enemies/cosa_1.png" id="5_xuskm"]
[ext_resource type="Texture2D" uid="uid://cyigyhudonahf" path="res://assets/enemies/cosa_2.png" id="6_3ysdf"]
[ext_resource type="Texture2D" uid="uid://d1jtklq43eomd" path="res://assets/enemies/blue-1.png" id="5_esqeu"]
[ext_resource type="Texture2D" uid="uid://36h16s60o2pm" path="res://assets/enemies/blue-2.png" id="6_yt5vg"]
[ext_resource type="Texture2D" uid="uid://24wii8yqwtw5" path="res://assets/enemies/blue-3.png" id="7_7t5mr"]
[ext_resource type="Texture2D" uid="uid://daqkggmbdqj7b" path="res://assets/enemies/blue-4.png" id="8_y8vm1"]
[sub_resource type="CircleShape2D" id="CircleShape2D_sw0xa"]
radius = 15.0
@ -14,10 +16,16 @@ radius = 15.0
animations = [{
"frames": [{
"duration": 1.0,
"texture": ExtResource("5_xuskm")
"texture": ExtResource("5_esqeu")
}, {
"duration": 1.0,
"texture": ExtResource("6_3ysdf")
"texture": ExtResource("6_yt5vg")
}, {
"duration": 1.0,
"texture": ExtResource("7_7t5mr")
}, {
"duration": 1.0,
"texture": ExtResource("8_y8vm1")
}],
"loop": true,
"name": &"default",
@ -52,4 +60,4 @@ shape = SubResource("CircleShape2D_sw0xa")
[node name="Anim" type="AnimatedSprite2D" parent="." unique_id=1536371166]
sprite_frames = SubResource("SpriteFrames_lxe82")
autoplay = "default"
frame_progress = 0.71773696
frame_progress = 0.98627317

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=8 format=3 uid="uid://c8l24d01bm2sg"]
[gd_scene format=3 uid="uid://c8l24d01bm2sg"]
[ext_resource type="Texture2D" uid="uid://b103rhhth5yu3" path="res://assets/vfx/death.png" id="1_bpht7"]
[ext_resource type="Script" uid="uid://b6f7w4uftych8" path="res://scripts/enemy_explosion.gd" id="2_bpht7"]
@ -35,7 +35,7 @@ scale_max = 1.1999999
color = Color(0.105882354, 0, 0.8117647, 1)
alpha_curve = SubResource("CurveTexture_bpht7")
[node name="EnemyExplosion" type="GPUParticles2D"]
[node name="EnemyExplosion" type="GPUParticles2D" unique_id=1175406929]
modulate = Color(1.3945211, 1.3945211, 1.3945211, 1)
z_index = -1
emitting = false

63
scenes/enemy_purple.tscn Normal file
View file

@ -0,0 +1,63 @@
[gd_scene format=3 uid="uid://bgb7ayjiy37t7"]
[ext_resource type="Script" uid="uid://b1t0k6dfubsmk" path="res://scripts/enemy.gd" id="1_jipp7"]
[ext_resource type="Resource" uid="uid://butr81mog5qjy" path="res://resources/purple_attack.tres" id="2_jipp7"]
[ext_resource type="PackedScene" uid="uid://c8l24d01bm2sg" path="res://scenes/enemy_explosion.tscn" id="3_613ir"]
[ext_resource type="Script" uid="uid://synocbtvgrf4" path="res://scripts/shadow.gd" id="4_ucc0c"]
[ext_resource type="Texture2D" uid="uid://df5v6y1jiuc1x" path="res://assets/enemies/purple-1.png" id="5_jipp7"]
[ext_resource type="Texture2D" uid="uid://bf15pguyrjko1" path="res://assets/enemies/purple-2.png" id="6_31l81"]
[ext_resource type="Texture2D" uid="uid://suept1htkfcl" path="res://assets/enemies/purple-3.png" id="7_613ir"]
[ext_resource type="Texture2D" uid="uid://dv0lgyyfy6lva" path="res://assets/enemies/purple-4.png" id="8_ucc0c"]
[sub_resource type="CircleShape2D" id="CircleShape2D_sw0xa"]
radius = 15.0
[sub_resource type="SpriteFrames" id="SpriteFrames_lxe82"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": ExtResource("5_jipp7")
}, {
"duration": 1.0,
"texture": ExtResource("6_31l81")
}, {
"duration": 1.0,
"texture": ExtResource("7_613ir")
}, {
"duration": 1.0,
"texture": ExtResource("8_ucc0c")
}],
"loop": true,
"name": &"default",
"speed": 5.0
}]
[node name="EnemyPurple" type="CharacterBody2D" unique_id=105822266 node_paths=PackedStringArray("main_visual") groups=["enemy"]]
collision_layer = 2
collision_mask = 3
motion_mode = 1
script = ExtResource("1_jipp7")
attack_charge_time = 0.1
flee_range = 0.0
approach_range = 60.0
current_mask_data = ExtResource("2_jipp7")
move_speed = 60.0
main_visual = NodePath("Anim")
death_scene = ExtResource("3_613ir")
[node name="Shadow" type="Node2D" parent="." unique_id=1662034478]
position = Vector2(0, 15)
script = ExtResource("4_ucc0c")
metadata/_custom_type_script = "uid://synocbtvgrf4"
[node name="NavigationAgent2D" type="NavigationAgent2D" parent="." unique_id=1850652218]
radius = 40.0
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1367309587]
rotation = 2.4698958e-05
shape = SubResource("CircleShape2D_sw0xa")
[node name="Anim" type="AnimatedSprite2D" parent="." unique_id=1536371166]
sprite_frames = SubResource("SpriteFrames_lxe82")
autoplay = "default"
frame_progress = 0.98627317

View file

@ -1,14 +0,0 @@
[gd_scene format=3 uid="uid://c8tpykprvk02l"]
[ext_resource type="Script" uid="uid://kyh2wu0jwdwd" path="res://scripts/enemy_spawn.gd" id="1_8pwvm"]
[ext_resource type="PackedScene" uid="uid://dvlr5hamruqrd" path="res://scenes/enemy_base.tscn" id="2_vav55"]
[ext_resource type="PackedScene" uid="uid://ya6jfltqnl1b" path="res://scenes/star_enemy.tscn" id="3_4ll2w"]
[ext_resource type="PackedScene" uid="uid://dbgsb7uyh2e5k" path="res://scenes/spit_dragon.tscn" id="4_muh2a"]
[node name="EnemySpawn" type="Node2D"]
z_index = 1
script = ExtResource("1_8pwvm")
enemies = Array[PackedScene]([ExtResource("2_vav55"), ExtResource("3_4ll2w"), ExtResource("4_muh2a")])
enemies_per_circle = 3
radius_step = 300.0
initial_radius = 700.0

View file

@ -6,6 +6,16 @@
[ext_resource type="Texture2D" uid="uid://binu4ig8dwobe" path="res://assets/enemies/green_(plum)-2.png" id="4_s3gbq"]
[ext_resource type="Texture2D" uid="uid://c2dgywtcsuicp" path="res://assets/enemies/green_(plum)-3.png" id="5_io1dp"]
[ext_resource type="Texture2D" uid="uid://bpf15ye4rok7r" path="res://assets/enemies/green_(plum)-4.png" id="6_0v5hx"]
[ext_resource type="Texture2D" uid="uid://bfp2lxnrv7ehq" path="res://assets/enemies/green_right_bouncy-1.png" id="7_226bu"]
[ext_resource type="Texture2D" uid="uid://cd35626bq14o0" path="res://assets/enemies/green_right_bouncy-2.png" id="8_it5s8"]
[ext_resource type="Texture2D" uid="uid://b2ukaf2kgvplu" path="res://assets/enemies/green_right_bouncy-3.png" id="9_1c6u7"]
[ext_resource type="Texture2D" uid="uid://r0e042k5u62m" path="res://assets/enemies/green_right_bouncy-4.png" id="10_bfwuh"]
[ext_resource type="Texture2D" uid="uid://qdsru1doca2w" path="res://assets/enemies/green_left-1.png" id="11_ljflw"]
[ext_resource type="Texture2D" uid="uid://c4bv6nkd41o32" path="res://assets/enemies/green_left-2.png" id="12_hh50a"]
[ext_resource type="Texture2D" uid="uid://nqy6loyw8sg8" path="res://assets/enemies/green_left-3.png" id="13_q0y7t"]
[ext_resource type="Texture2D" uid="uid://x2k5nkgwc0s4" path="res://assets/enemies/green_right-1.png" id="14_2gcyo"]
[ext_resource type="Texture2D" uid="uid://des1xs7rqh4gf" path="res://assets/enemies/green_right-2.png" id="15_ghehd"]
[ext_resource type="Texture2D" uid="uid://b2xwhhfa7opiw" path="res://assets/enemies/green_right-3.png" id="16_3gpoe"]
[sub_resource type="SpriteFrames" id="SpriteFrames_qegda"]
animations = [{
@ -23,7 +33,52 @@ animations = [{
"texture": ExtResource("6_0v5hx")
}],
"loop": true,
"name": &"default",
"name": &"attack_left",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": ExtResource("7_226bu")
}, {
"duration": 1.0,
"texture": ExtResource("8_it5s8")
}, {
"duration": 1.0,
"texture": ExtResource("9_1c6u7")
}, {
"duration": 1.0,
"texture": ExtResource("10_bfwuh")
}],
"loop": true,
"name": &"attack_right",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": ExtResource("11_ljflw")
}, {
"duration": 1.0,
"texture": ExtResource("12_hh50a")
}, {
"duration": 1.0,
"texture": ExtResource("13_q0y7t")
}],
"loop": true,
"name": &"run_left",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": ExtResource("14_2gcyo")
}, {
"duration": 1.0,
"texture": ExtResource("15_ghehd")
}, {
"duration": 1.0,
"texture": ExtResource("16_3gpoe")
}],
"loop": true,
"name": &"run_right",
"speed": 5.0
}]
@ -39,8 +94,8 @@ main_visual = NodePath("AnimatedSprite2D")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=876664215]
sprite_frames = SubResource("SpriteFrames_qegda")
frame = 3
frame_progress = 0.72517973
animation = &"run_right"
autoplay = "run_left"
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1259136395]
position = Vector2(0, 10)

View file

@ -1,12 +1,12 @@
[gd_scene format=3 uid="uid://ya6jfltqnl1b"]
[ext_resource type="Script" uid="uid://buamdls133c2e" path="res://scripts/star_enemy.gd" id="1_rs3ab"]
[ext_resource type="Resource" uid="uid://0mtm64s4jthn" path="res://resources/stars.tres" id="2_2mruc"]
[ext_resource type="Script" uid="uid://synocbtvgrf4" path="res://scripts/shadow.gd" id="2_v0fr6"]
[ext_resource type="PackedScene" uid="uid://c8l24d01bm2sg" path="res://scenes/enemy_explosion.tscn" id="3_g3aa2"]
[ext_resource type="Texture2D" uid="uid://c0e666ifvdck6" path="res://assets/enemies/cerdipulpo_1.png" id="3_v0fr6"]
[ext_resource type="Texture2D" uid="uid://cinexqxlsuwnj" path="res://assets/enemies/cerdipulpo_2.png" id="4_nqoy7"]
[ext_resource type="Texture2D" uid="uid://cy034lyy4w74p" path="res://assets/enemies/cerdipulpo_3.png" id="5_2ls4a"]
[ext_resource type="Script" uid="uid://buamdls133c2e" path="res://scripts/star_enemy.gd" id="1_o614x"]
[ext_resource type="Resource" uid="uid://jar2mye8do0c" path="res://resources/hearts.tres" id="2_2tr1s"]
[ext_resource type="PackedScene" uid="uid://c8l24d01bm2sg" path="res://scenes/enemy_explosion.tscn" id="3_n20dk"]
[ext_resource type="Script" uid="uid://synocbtvgrf4" path="res://scripts/shadow.gd" id="4_ul27a"]
[ext_resource type="Texture2D" uid="uid://c0e666ifvdck6" path="res://assets/enemies/cerdipulpo_1.png" id="5_t5q7b"]
[ext_resource type="Texture2D" uid="uid://cinexqxlsuwnj" path="res://assets/enemies/cerdipulpo_2.png" id="6_sl6ak"]
[ext_resource type="Texture2D" uid="uid://cy034lyy4w74p" path="res://assets/enemies/cerdipulpo_3.png" id="7_3t5qr"]
[sub_resource type="CircleShape2D" id="CircleShape2D_rs3ab"]
radius = 16.0
@ -15,13 +15,13 @@ radius = 16.0
animations = [{
"frames": [{
"duration": 1.0,
"texture": ExtResource("3_v0fr6")
"texture": ExtResource("5_t5q7b")
}, {
"duration": 1.0,
"texture": ExtResource("4_nqoy7")
"texture": ExtResource("6_sl6ak")
}, {
"duration": 1.0,
"texture": ExtResource("5_2ls4a")
"texture": ExtResource("7_3t5qr")
}],
"loop": true,
"name": &"default",
@ -31,18 +31,18 @@ animations = [{
[node name="RangedEnemy" type="CharacterBody2D" unique_id=93153910 node_paths=PackedStringArray("main_visual") groups=["enemy"]]
collision_layer = 2
collision_mask = 3
script = ExtResource("1_rs3ab")
script = ExtResource("1_o614x")
attack_charge_time = 0.5
flee_range = 130.0
approach_range = 220.0
current_mask_data = ExtResource("2_2mruc")
current_mask_data = ExtResource("2_2tr1s")
move_speed = 40.0
main_visual = NodePath("Anim")
death_scene = ExtResource("3_g3aa2")
death_scene = ExtResource("3_n20dk")
[node name="Shadow" type="Node2D" parent="." unique_id=1651361569]
position = Vector2(0, 16)
script = ExtResource("2_v0fr6")
script = ExtResource("4_ul27a")
metadata/_custom_type_script = "uid://synocbtvgrf4"
[node name="NavigationAgent2D" type="NavigationAgent2D" parent="." unique_id=1882108293]

View file

@ -1,8 +1,8 @@
[gd_scene format=3 uid="uid://0n57icfpulmc"]
[ext_resource type="Texture2D" uid="uid://beefpuq6vu475" path="res://assets/vfx/heart.png" id="1_hugpe"]
[ext_resource type="Script" uid="uid://dyyqm52cwjimy" path="res://scripts/hearts.gd" id="2_q6mno"]
[ext_resource type="PackedScene" uid="uid://crptu0w0l57dd" path="res://scenes/hitbox.tscn" id="3_hugpe"]
[ext_resource type="Script" uid="uid://cemrdyqfubw7h" path="res://scripts/mask_projectile.gd" id="1_q6mno"]
[ext_resource type="Script" uid="uid://ejd25ul4j5pp" path="res://scripts/hitbox.gd" id="3_hugpe"]
[sub_resource type="CanvasTexture" id="CanvasTexture_7sc4i"]
diffuse_texture = ExtResource("1_hugpe")
@ -40,7 +40,13 @@ hue_variation_min = -0.07
hue_variation_max = 0.01
hue_variation_curve = SubResource("CurveTexture_hugpe")
[node name="Hearts" type="CPUParticles2D" unique_id=664421978]
[sub_resource type="CircleShape2D" id="CircleShape2D_q6mno"]
radius = 7.0
[node name="Hearts" type="Node2D" unique_id=99305116]
script = ExtResource("1_q6mno")
[node name="Hearts" type="CPUParticles2D" parent="." unique_id=664421978]
z_index = 1
amount = 32
texture = SubResource("CanvasTexture_7sc4i")
@ -54,13 +60,8 @@ color_ramp = SubResource("Gradient_hugpe")
hue_variation_min = -0.07
hue_variation_max = 0.01
hue_variation_curve = SubResource("Curve_215e1")
script = ExtResource("2_q6mno")
speed = 350.0
[node name="Hitbox" parent="." unique_id=735192092 instance=ExtResource("3_hugpe")]
scale = Vector2(0.63729316, 0.63729316)
[node name="Explosion" type="GPUParticles2D" parent="." unique_id=832599826]
[node name="Explosion" type="GPUParticles2D" parent="Hearts" unique_id=832599826]
z_index = 1
emitting = false
amount = 128
@ -72,8 +73,12 @@ fixed_fps = 0
draw_order = 0
process_material = SubResource("ParticleProcessMaterial_q6mno")
[node name="Timer" type="Timer" parent="." unique_id=1651057289]
wait_time = 10.0
[node name="Hitbox" type="Area2D" parent="." unique_id=2075108255]
script = ExtResource("3_hugpe")
metadata/_custom_type_script = "uid://ejd25ul4j5pp"
[connection signal="collided" from="Hitbox" to="." method="_on_hitbox_collided"]
[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox" unique_id=976519706]
shape = SubResource("CircleShape2D_q6mno")
[connection signal="hit_entity" from="Hitbox" to="." method="_on_hitbox_hit_entity"]
[connection signal="hit_obstacle" from="Hitbox" to="." method="_on_hitbox_hit_obstacle"]

View file

@ -1,7 +1,7 @@
[gd_scene format=3 uid="uid://ncgwx0yjn2gt"]
[ext_resource type="Script" uid="uid://sbseykg05177" path="res://scripts/player.gd" id="1_ur7pv"]
[ext_resource type="Resource" uid="uid://cmcdkylu5hog2" path="res://resources/grenade.tres" id="2_3v2ag"]
[ext_resource type="Resource" uid="uid://dquluu05ho3f4" path="res://resources/empty_mask.tres" id="2_3v2ag"]
[ext_resource type="PackedScene" uid="uid://bp45yth1y3ia5" path="res://scenes/player_explosion.tscn" id="3_3v2ag"]
[ext_resource type="Script" uid="uid://synocbtvgrf4" path="res://scripts/shadow.gd" id="4_3v2ag"]
[ext_resource type="Texture2D" uid="uid://d3abeekjumqyb" path="res://assets/player/maske1.png" id="5_jej6c"]

173
scenes/purple_attack.tscn Normal file
View file

@ -0,0 +1,173 @@
[gd_scene format=3 uid="uid://bbu38s3w5u3gk"]
[ext_resource type="Script" uid="uid://c1anp8np0aw0" path="res://scripts/scythe_attack.gd" id="1_vnsf0"]
[ext_resource type="Texture2D" uid="uid://cabc77u0tblxv" path="res://assets/masks/purple_attack-2.png" id="2_yhwo8"]
[ext_resource type="Texture2D" uid="uid://c4osojc1tqf77" path="res://assets/masks/purple_attack-1.png" id="3_7i1k2"]
[ext_resource type="Script" uid="uid://ejd25ul4j5pp" path="res://scripts/hitbox.gd" id="4_7i1k2"]
[sub_resource type="Animation" id="Animation_vnsf0"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(-3, -3)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath(".:rotation")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Hitbox:monitoring")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="Animation_ev5qi"]
resource_name = "attack"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0.033333335, 0.3),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [0, 1]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.06, 0.07, 0.1, 0.12, 0.13, 0.14, 0.15, 0.16, 0.19, 0.20000002, 0.21000001, 0.22, 0.23000002, 0.24000001, 0.25, 0.26, 0.28000003, 0.29000002, 0.3, 0.31, 0.32, 0.33000004, 0.34000003, 0.35000002, 0.37, 0.43),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 0,
"values": [Vector2(-3, -3), Vector2(-3, -3), Vector2(-3, 5), Vector2(-3, 5), Vector2(7, 7), Vector2(-3, 5), Vector2(-4, -6), Vector2(-3, -3), Vector2(-3, 5), Vector2(-4, -6), Vector2(7, 7), Vector2(-3, 5), Vector2(-3, 5), Vector2(-3, -3), Vector2(-3, 5), Vector2(5, -2), Vector2(5, -2), Vector2(-4, -6), Vector2(7, 7), Vector2(-3, 5), Vector2(7, 7), Vector2(-3, 5), Vector2(-3, 5), Vector2(5, -2), Vector2(5, -2), Vector2(-4, -6), Vector2(5, -2)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath(".:rotation")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.06, 0.07, 0.1, 0.12, 0.13, 0.14, 0.15, 0.16, 0.19, 0.20000002, 0.21000001, 0.22, 0.23000002, 0.24000001, 0.25, 0.26, 0.28000003, 0.29000002, 0.3, 0.31, 0.32, 0.33000004, 0.34000003, 0.35000002, 0.37, 0.43),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 0,
"values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
}
tracks/3/type = "method"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("../..")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0.53333336),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"queue_free"
}]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Hitbox:monitoring")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0, 0.36666667),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_0qdgb"]
_data = {
&"RESET": SubResource("Animation_vnsf0"),
&"attack": SubResource("Animation_ev5qi")
}
[sub_resource type="SpriteFrames" id="SpriteFrames_2rf1b"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": ExtResource("2_yhwo8")
}, {
"duration": 1.0,
"texture": ExtResource("3_7i1k2")
}],
"loop": true,
"name": &"default",
"speed": 5.0
}]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_vnsf0"]
size = Vector2(51.75, 16.25)
[node name="PurpleAttack" type="Node2D" unique_id=622535335]
script = ExtResource("1_vnsf0")
[node name="Node2D" type="Node2D" parent="." unique_id=1207589526]
position = Vector2(68, -52)
scale = Vector2(2, 2)
[node name="AnimationPlayer" type="AnimationPlayer" parent="Node2D" unique_id=1330172360]
root_node = NodePath("../AnimatedSprite2D")
libraries/ = SubResource("AnimationLibrary_0qdgb")
autoplay = &"attack"
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="Node2D" unique_id=291763539]
position = Vector2(-3, -3)
sprite_frames = SubResource("SpriteFrames_2rf1b")
flip_h = true
[node name="Hitbox" type="Area2D" parent="Node2D/AnimatedSprite2D" unique_id=88442753]
position = Vector2(3, 3)
monitoring = false
script = ExtResource("4_7i1k2")
dmg = 3
metadata/_custom_type_script = "uid://ejd25ul4j5pp"
[node name="CollisionShape2D" type="CollisionShape2D" parent="Node2D/AnimatedSprite2D/Hitbox" unique_id=1724936885]
position = Vector2(-2.625, 27.625)
shape = SubResource("RectangleShape2D_vnsf0")

View file

@ -1,14 +0,0 @@
[gd_scene format=3 uid="uid://dfad6rsacpogt"]
[ext_resource type="Script" uid="uid://ctninfm8hkbp2" path="res://scripts/spit.gd" id="1_1fhrs"]
[ext_resource type="Texture2D" uid="uid://br8dx2f3mfxcd" path="res://assets/masks/grenade.png" id="2_1fhrs"]
[ext_resource type="PackedScene" uid="uid://bbqgdjgil7nwx" path="res://scenes/spit_payload.tscn" id="4_03rlv"]
[node name="Spit" type="Node2D"]
script = ExtResource("1_1fhrs")
speed = 300.0
max_height = 50.0
payload = ExtResource("4_03rlv")
[node name="Bomb" type="Sprite2D" parent="."]
texture = ExtResource("2_1fhrs")

View file

@ -1,77 +0,0 @@
[gd_scene load_steps=16 format=3 uid="uid://dbgsb7uyh2e5k"]
[ext_resource type="Script" uid="uid://bpabecs0hf676" path="res://scripts/spit_dragon.gd" id="1_6aivh"]
[ext_resource type="Texture2D" uid="uid://b5ty5fqjdnlfu" path="res://assets/enemies/huronverde_1.png" id="2_3h3g6"]
[ext_resource type="Script" uid="uid://synocbtvgrf4" path="res://scripts/shadow.gd" id="2_6qa8c"]
[ext_resource type="PackedScene" uid="uid://bgpha7wiajw6q" path="res://scenes/mask_drop.tscn" id="2_new7s"]
[ext_resource type="Texture2D" uid="uid://crwb7susv0apj" path="res://assets/enemies/huronverde_2.png" id="3_6qa8c"]
[ext_resource type="PackedScene" uid="uid://c8l24d01bm2sg" path="res://scenes/enemy_explosion.tscn" id="3_r5vkq"]
[ext_resource type="Texture2D" uid="uid://c2oa1go8kc5pv" path="res://assets/enemies/huronverde_3.png" id="4_6si3t"]
[ext_resource type="PackedScene" uid="uid://0n57icfpulmc" path="res://scenes/hearts.tscn" id="4_a2jab"]
[ext_resource type="PackedScene" uid="uid://bmwgnwqj3scm5" path="res://scenes/scythe_attack.tscn" id="5_5psll"]
[ext_resource type="Texture2D" uid="uid://b451nklnl5d3v" path="res://assets/enemies/huronverde_4.png" id="5_pjesh"]
[ext_resource type="PackedScene" uid="uid://dfad6rsacpogt" path="res://scenes/spit.tscn" id="6_gtnbv"]
[ext_resource type="Texture2D" uid="uid://bld52vfos65qa" path="res://assets/enemies/huronverde_5.png" id="6_l0832"]
[ext_resource type="Texture2D" uid="uid://dgpuc3ej8t6s1" path="res://assets/enemies/huronverde_6.png" id="7_new7s"]
[sub_resource type="CircleShape2D" id="CircleShape2D_6si3t"]
radius = 16.03122
[sub_resource type="SpriteFrames" id="SpriteFrames_r5vkq"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": ExtResource("2_3h3g6")
}, {
"duration": 1.0,
"texture": ExtResource("3_6qa8c")
}, {
"duration": 1.0,
"texture": ExtResource("4_6si3t")
}],
"loop": true,
"name": &"attack",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": ExtResource("5_pjesh")
}, {
"duration": 1.0,
"texture": ExtResource("6_l0832")
}, {
"duration": 1.0,
"texture": ExtResource("7_new7s")
}],
"loop": true,
"name": &"default",
"speed": 5.0
}]
[node name="SpitDragon" type="CharacterBody2D" groups=["enemy"]]
script = ExtResource("1_6aivh")
mask_drop = ExtResource("2_new7s")
death_explosion = ExtResource("3_r5vkq")
heart_attack = ExtResource("4_a2jab")
scithe_attack = ExtResource("5_5psll")
spit_attack = ExtResource("6_gtnbv")
flee_range = 50
aproach_range = 150
current_mask = 2
[node name="Shadow" type="Node2D" parent="."]
position = Vector2(4, 24)
script = ExtResource("2_6qa8c")
shadow_size = 16.425
metadata/_custom_type_script = "uid://synocbtvgrf4"
[node name="NavigationAgent2D" type="NavigationAgent2D" parent="."]
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(0, 8)
shape = SubResource("CircleShape2D_6si3t")
[node name="Anim" type="AnimatedSprite2D" parent="."]
sprite_frames = SubResource("SpriteFrames_r5vkq")
autoplay = "default"
frame_progress = 0.56712055

View file

@ -1,42 +0,0 @@
[gd_scene load_steps=6 format=3 uid="uid://bbqgdjgil7nwx"]
[ext_resource type="Texture2D" uid="uid://b103rhhth5yu3" path="res://assets/vfx/death.png" id="1_pi6vg"]
[ext_resource type="Script" uid="uid://8bsq7kvqky3d" path="res://scripts/spit_payload.gd" id="2_61mym"]
[ext_resource type="PackedScene" uid="uid://crptu0w0l57dd" path="res://scenes/hitbox.tscn" id="3_pi6vg"]
[sub_resource type="Gradient" id="Gradient_bnpwn"]
offsets = PackedFloat32Array(0, 0.60958904, 1)
colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 1, 0.4833991, 1.8241555e-05, 0.3690953, 0.25882354)
[sub_resource type="Curve" id="Curve_bnpwn"]
_limits = [-1.0, 1.0, 0.0, 1.0]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 1), 0.0, 0.0, 0, 0]
point_count = 2
[node name="SpitPayload" type="CPUParticles2D"]
emitting = false
amount = 128
texture = ExtResource("1_pi6vg")
lifetime = 0.3
one_shot = true
explosiveness = 0.95
emission_shape = 1
emission_sphere_radius = 17.16
direction = Vector2(0, 1)
spread = 180.0
gravity = Vector2(0, -400)
initial_velocity_max = 154.64
angular_velocity_min = -66.8
angular_velocity_max = 44.66
scale_amount_max = 2.0
color = Color(0, 0.61960787, 0.32156864, 0.8117647)
color_ramp = SubResource("Gradient_bnpwn")
hue_variation_min = -0.19
hue_variation_max = 0.16
hue_variation_curve = SubResource("Curve_bnpwn")
script = ExtResource("2_61mym")
[node name="Hitbox" parent="." instance=ExtResource("3_pi6vg")]
scale = Vector2(3.856148, 3.856148)
[connection signal="finished" from="." to="." method="_on_finished"]

View file

@ -15,7 +15,7 @@
[ext_resource type="Texture2D" uid="uid://dul78gwc33opl" path="res://assets/player/angel_wing.png" id="24_0oaoo"]
[ext_resource type="Script" uid="uid://b5o4ky21bvg66" path="res://scripts/grass.gd" id="24_how36"]
[ext_resource type="PackedScene" uid="uid://dvlr5hamruqrd" path="res://scenes/enemy_base.tscn" id="24_ujl0k"]
[ext_resource type="PackedScene" uid="uid://ya6jfltqnl1b" path="res://scenes/star_enemy.tscn" id="25_8gabg"]
[ext_resource type="PackedScene" uid="uid://ya6jfltqnl1b" path="res://scenes/heart_enemy.tscn" id="25_8gabg"]
[ext_resource type="PackedScene" uid="uid://c8tpykprvk02l" path="res://scenes/enemy_spawn.tscn" id="25_ijrci"]
[ext_resource type="PackedScene" uid="uid://bgpha7wiajw6q" path="res://scenes/mask_drop.tscn" id="26_trymr"]
[ext_resource type="Resource" uid="uid://jar2mye8do0c" path="res://resources/hearts.tres" id="27_trymr"]

View file

@ -1,6 +1,6 @@
[gd_scene format=3 uid="uid://dkik6vdjvfl3h"]
[ext_resource type="Script" uid="uid://cemrdyqfubw7h" path="res://scripts/star.gd" id="1_mcqwg"]
[ext_resource type="Script" uid="uid://cemrdyqfubw7h" path="res://scripts/mask_projectile.gd" id="1_mcqwg"]
[ext_resource type="AudioStream" uid="uid://dbmjok4h3yqgc" path="res://assets/sfx/star.wav" id="2_ef0hr"]
[ext_resource type="Texture2D" uid="uid://dsak25b3jrn2r" path="res://assets/masks/star.png" id="2_j6vao"]
[ext_resource type="Script" uid="uid://ejd25ul4j5pp" path="res://scripts/hitbox.gd" id="4_8d8bx"]

11
scenes/start_mask.gd Normal file
View file

@ -0,0 +1,11 @@
extends Sprite2D
@export var start_mask : MaskData
@export var spawn : RoomSpawn
func _process(delta: float) -> void:
var player : Player = get_tree().get_first_node_in_group("player")
if player.global_position.distance_to(global_position) < 50:
if Input.is_action_pressed("interact"):
player.equip_mask(start_mask)
spawn.start_next_wave()

1
scenes/start_mask.gd.uid Normal file
View file

@ -0,0 +1 @@
uid://ddh8l6em0wo51

File diff suppressed because one or more lines are too long

View file

@ -2,12 +2,117 @@
[ext_resource type="PackedScene" uid="uid://ncgwx0yjn2gt" path="res://scenes/player.tscn" id="1_kiokp"]
[ext_resource type="Texture2D" uid="uid://de8ehypelmgbq" path="res://assets/enviroment/turquoise_room.png" id="2_2diqr"]
[ext_resource type="Script" uid="uid://dr2icqss6nekh" path="res://scripts/room_spawn.gd" id="3_2diqr"]
[ext_resource type="Script" uid="uid://beuumo3n5tycr" path="res://scripts/wave_node.gd" id="4_o7h1l"]
[ext_resource type="Script" uid="uid://dm2ayvfebi7x5" path="res://scripts/spawner.gd" id="5_rwd0d"]
[ext_resource type="PackedScene" uid="uid://dvlr5hamruqrd" path="res://scenes/enemy_base.tscn" id="6_hgrhv"]
[ext_resource type="PackedScene" uid="uid://ya6jfltqnl1b" path="res://scenes/heart_enemy.tscn" id="7_rwd0d"]
[sub_resource type="NavigationPolygon" id="NavigationPolygon_kiokp"]
vertices = PackedVector2Array(1047.2266, 532.96094, -122.703125, 542.90625, -121.78125, 510.84375, 1503.8984, 529.0781, 1429, 529.71875, 1373.5391, -529.8828, 1494.0938, -530.90625, 212.04688, -241.00781, 382.3672, -241.82813, 646.78906, 97.89844, 480.7422, 102.27344, 136.10938, 6.46875, 134.04688, -165.79688, 489.72656, 447.0703, -29.859375, 450.92188, -24.117188, 9.7421875, 79.32031, 9.5390625, 79.24219, 6.9921875, -97.74219, -138.49219, -115.671875, 298.25, -92.27344, -517.0781, 62.929688, -518.4297, 78.52344, -16, -86.703125, -143.64063, 893.8906, -419.96094, 918.4375, -402.72656, 891.09375, -401.96094, 635.8828, -417.10156, 737.0781, 95.53906, 474.14844, -242.27344, 633.8906, -243.04688, 905.02344, 91.140625, 1291.8203, -75, 1043.1328, -75, 1036.0313, -326.1328, 1287.1797, -332.72656)
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2), PackedInt32Array(3, 4, 5, 6), PackedInt32Array(7, 8, 9, 10, 11, 12), PackedInt32Array(10, 13, 14, 15, 16), PackedInt32Array(15, 17, 16), PackedInt32Array(10, 16, 11), PackedInt32Array(18, 19, 20), PackedInt32Array(21, 22, 23, 20), PackedInt32Array(23, 18, 20), PackedInt32Array(24, 25, 26, 27), PackedInt32Array(28, 29, 30, 31), PackedInt32Array(30, 27, 26, 31), PackedInt32Array(32, 33, 34, 35)])
outlines = Array[PackedVector2Array]([PackedVector2Array(-102, -527, 1504, -541, 1514, 539, -133, 553)])
[sub_resource type="RectangleShape2D" id="RectangleShape2D_kiokp"]
size = Vector2(486.032, 52.7081)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_2diqr"]
size = Vector2(486.88434, 122.73932)
[node name="World2" type="Node2D" unique_id=219609187]
[node name="TurquoiseRoom" type="Sprite2D" parent="." unique_id=1018129227]
z_index = -1
position = Vector2(622, -86)
texture = ExtResource("2_2diqr")
[node name="Player" parent="." unique_id=1743724931 instance=ExtResource("1_kiokp")]
position = Vector2(156, 163)
[node name="NavigationRegion2D" type="NavigationRegion2D" parent="." unique_id=1469638376]
navigation_polygon = SubResource("NavigationPolygon_kiokp")
[node name="StaticBody2D" type="StaticBody2D" parent="NavigationRegion2D" unique_id=669042548]
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="NavigationRegion2D/StaticBody2D" unique_id=1174976426]
polygon = PackedVector2Array(79, -3, -34, 0, -40, 461, 500, 457, 491, 112, 911, 101, 1042, -65, 1302, -65, 1297, -343, 1031, -336, 897, -430, 626, -427, 624, -253, 208, -251, 124, -170, 126, -3, 89, -1, 72, -549, 1364, -521, 1419, 530, -114, 501, -88, -132)
[node name="StaticBody2D2" type="StaticBody2D" parent="NavigationRegion2D" unique_id=1925879962]
collision_layer = 8
[node name="CollisionShape2D" type="CollisionShape2D" parent="NavigationRegion2D/StaticBody2D2" unique_id=114451581]
position = Vector2(557.5386, -75.96382)
rotation = 0.9094325
shape = SubResource("RectangleShape2D_kiokp")
[node name="StaticBody2D3" type="StaticBody2D" parent="NavigationRegion2D" unique_id=260629622]
collision_layer = 8
[node name="CollisionShape2D" type="CollisionShape2D" parent="NavigationRegion2D/StaticBody2D3" unique_id=783263591]
position = Vector2(969.5878, -150.63795)
rotation = 1.5425601
shape = SubResource("RectangleShape2D_2diqr")
[node name="RoomSpawn" type="Area2D" parent="." unique_id=624711405]
collision_mask = 3
script = ExtResource("3_2diqr")
metadata/_custom_type_script = "uid://dr2icqss6nekh"
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="RoomSpawn" unique_id=1656193736]
polygon = PackedVector2Array(130, -3, 580, 93, 899, 98, 899, -418, 117, -176)
[node name="WaveNode" type="Node2D" parent="RoomSpawn" unique_id=748675639]
script = ExtResource("4_o7h1l")
metadata/_custom_type_script = "uid://beuumo3n5tycr"
[node name="Spawner" type="Marker2D" parent="RoomSpawn/WaveNode" unique_id=1018314094]
position = Vector2(259, -69)
script = ExtResource("5_rwd0d")
spawn_instance = ExtResource("6_hgrhv")
metadata/_custom_type_script = "uid://dm2ayvfebi7x5"
[node name="Spawner2" type="Marker2D" parent="RoomSpawn/WaveNode" unique_id=1808813106]
position = Vector2(468, -49)
script = ExtResource("5_rwd0d")
spawn_instance = ExtResource("6_hgrhv")
metadata/_custom_type_script = "uid://dm2ayvfebi7x5"
[node name="Spawner3" type="Marker2D" parent="RoomSpawn/WaveNode" unique_id=533329493]
position = Vector2(713, -219)
script = ExtResource("5_rwd0d")
spawn_instance = ExtResource("6_hgrhv")
metadata/_custom_type_script = "uid://dm2ayvfebi7x5"
[node name="Spawner4" type="Marker2D" parent="RoomSpawn/WaveNode" unique_id=1288062944]
position = Vector2(835, -140)
script = ExtResource("5_rwd0d")
spawn_instance = ExtResource("7_rwd0d")
metadata/_custom_type_script = "uid://dm2ayvfebi7x5"
[node name="WaveNode2" type="Node2D" parent="RoomSpawn" unique_id=787447092]
script = ExtResource("4_o7h1l")
metadata/_custom_type_script = "uid://beuumo3n5tycr"
[node name="Spawner" type="Marker2D" parent="RoomSpawn/WaveNode2" unique_id=1482319996]
position = Vector2(373, -139)
script = ExtResource("5_rwd0d")
spawn_instance = ExtResource("6_hgrhv")
metadata/_custom_type_script = "uid://dm2ayvfebi7x5"
[node name="Spawner4" type="Marker2D" parent="RoomSpawn/WaveNode2" unique_id=792445265]
position = Vector2(373, -139)
script = ExtResource("5_rwd0d")
spawn_instance = ExtResource("6_hgrhv")
metadata/_custom_type_script = "uid://dm2ayvfebi7x5"
[node name="Spawner2" type="Marker2D" parent="RoomSpawn/WaveNode2" unique_id=563517414]
position = Vector2(402, -1)
script = ExtResource("5_rwd0d")
spawn_instance = ExtResource("6_hgrhv")
metadata/_custom_type_script = "uid://dm2ayvfebi7x5"
[node name="Spawner3" type="Marker2D" parent="RoomSpawn/WaveNode2" unique_id=167921925]
position = Vector2(796, -282)
script = ExtResource("5_rwd0d")
spawn_instance = ExtResource("6_hgrhv")
metadata/_custom_type_script = "uid://dm2ayvfebi7x5"