small boss progess

This commit is contained in:
Daniel Kauss Serna 2026-04-24 15:23:44 +02:00
parent 986c83ec8f
commit 3f9103b1c8
42 changed files with 769 additions and 54 deletions

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<comment version="3.0">
<caption>cajita</caption>
<note/>
<place/>
<categories/>
</comment>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<comment version="3.0">
<caption>chica</caption>
<note/>
<place/>
<categories/>
</comment>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<comment version="3.0">
<caption>Capa 21</caption>
<note/>
<place/>
<categories/>
</comment>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<comment version="3.0">
<caption>claw</caption>
<note/>
<place/>
<categories/>
</comment>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<comment version="3.0">
<caption>claw</caption>
<note/>
<place/>
<categories/>
</comment>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<comment version="3.0">
<caption>tubito</caption>
<note/>
<place/>
<categories/>
</comment>

BIN
assets/bosses/cajita.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bu5dfvirq7mxq"
path="res://.godot/imported/cajita.png-e07e4380bc9c608cadbaf6f97152d4fd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/bosses/cajita.png"
dest_files=["res://.godot/imported/cajita.png-e07e4380bc9c608cadbaf6f97152d4fd.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

BIN
assets/bosses/claw-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://onur5q1rodqt"
path="res://.godot/imported/claw-1.png-74633acc67bcf5fdd19a10d827abf02a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/bosses/claw-1.png"
dest_files=["res://.godot/imported/claw-1.png-74633acc67bcf5fdd19a10d827abf02a.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

BIN
assets/bosses/claw-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bo3g57ir520jf"
path="res://.godot/imported/claw-2.png-a2f8b57df06d156197d72c31ddcc6084.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/bosses/claw-2.png"
dest_files=["res://.godot/imported/claw-2.png-a2f8b57df06d156197d72c31ddcc6084.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

BIN
assets/bosses/claw-3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://x4frpycwroby"
path="res://.godot/imported/claw-3.png-1644032674af70a88eb8a8f7dbb7dceb.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/bosses/claw-3.png"
dest_files=["res://.godot/imported/claw-3.png-1644032674af70a88eb8a8f7dbb7dceb.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

BIN
assets/bosses/claw-4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cqq6a8fjw8k7b"
path="res://.godot/imported/claw-4.png-caa2fa1eda7917b02ae1e4ea3edfe0d0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/bosses/claw-4.png"
dest_files=["res://.godot/imported/claw-4.png-caa2fa1eda7917b02ae1e4ea3edfe0d0.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

BIN
assets/bosses/tubito.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cnkgyhhnig57y"
path="res://.godot/imported/tubito.png-e115e72f2588a58d6ea1a4d3dbc48014.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/bosses/tubito.png"
dest_files=["res://.godot/imported/tubito.png-e115e72f2588a58d6ea1a4d3dbc48014.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

BIN
assets/enemies/cajita.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://csdsskhqdg45r"
path="res://.godot/imported/cajita.png-8265182f3d1d2f82cb2d181787b51b06.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/enemies/cajita.png"
dest_files=["res://.godot/imported/cajita.png-8265182f3d1d2f82cb2d181787b51b06.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 MiB

After

Width:  |  Height:  |  Size: 1 MiB

Before After
Before After

View file

@ -2,7 +2,7 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://de8ehypelmgbq" uid="uid://cme75i5kh0atg"
path="res://.godot/imported/turquoise_room.png-c5069b9c77ead1e405c18230bcfa1a9a.ctex" path="res://.godot/imported/turquoise_room.png-c5069b9c77ead1e405c18230bcfa1a9a.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false

BIN
assets/vfx/cable.aseprite Normal file

Binary file not shown.

BIN
assets/vfx/cable.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 B

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cyrbml83j7s7b"
path="res://.godot/imported/cable.png-c2c8b43340a2d639c617c8a1787efc2d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/vfx/cable.png"
dest_files=["res://.godot/imported/cable.png-c2c8b43340a2d639c617c8a1787efc2d.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

View file

@ -4,22 +4,177 @@
[ext_resource type="PackedScene" uid="uid://ncgwx0yjn2gt" path="res://scenes/player.tscn" id="2_84w8w"] [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="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="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="PackedScene" uid="uid://b5m10vpq0kk8n" path="res://scenes/boss_spawner.tscn" id="4_cwigj"]
[ext_resource type="Script" uid="uid://t8ykexnisuw3" path="res://scenes/claw.gd" id="6_6wr5o"] [ext_resource type="Texture2D" uid="uid://cyrbml83j7s7b" path="res://assets/vfx/cable.png" id="5_nvwov"]
[ext_resource type="Script" uid="uid://ejd25ul4j5pp" path="res://scripts/hitbox.gd" id="6_io3m0"]
[ext_resource type="Texture2D" uid="uid://1wosmyr2md2i" path="res://assets/bosses/chica-2.png" id="7_6wr5o"] [ext_resource type="Texture2D" uid="uid://1wosmyr2md2i" path="res://assets/bosses/chica-2.png" id="7_6wr5o"]
[ext_resource type="Script" uid="uid://dr78dot5agp2p" path="res://scripts/cable.gd" id="8_cwigj"]
[ext_resource type="Texture2D" uid="uid://bu5dfvirq7mxq" path="res://assets/bosses/cajita.png" id="8_t0ayj"]
[ext_resource type="Script" uid="uid://mc1fw6f5texh" path="res://scripts/line_connect.gd" id="10_nvwov"]
[ext_resource type="Texture2D" uid="uid://onur5q1rodqt" path="res://assets/bosses/claw-1.png" id="10_vfq8f"]
[ext_resource type="Texture2D" uid="uid://bo3g57ir520jf" path="res://assets/bosses/claw-2.png" id="11_nvwov"]
[ext_resource type="Texture2D" uid="uid://x4frpycwroby" path="res://assets/bosses/claw-3.png" id="12_1400f"]
[ext_resource type="Texture2D" uid="uid://cqq6a8fjw8k7b" path="res://assets/bosses/claw-4.png" id="13_4pbd4"]
[ext_resource type="Texture2D" uid="uid://cnkgyhhnig57y" path="res://assets/bosses/tubito.png" id="14_0dfqf"]
[sub_resource type="NavigationPolygon" id="NavigationPolygon_cwigj"]
vertices = PackedVector2Array(665.21094, -180.10156, 674.77344, 257.85938, -333.97656, 245.13281, -290.95313, -190.89063)
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
outlines = Array[PackedVector2Array]([PackedVector2Array(-300, -201, 675, -190, 685, 268, -345, 255)])
[sub_resource type="Animation" id="Animation_6wr5o"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("MovePoint/Claw:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(2, -224.99994)]
}
[sub_resource type="Animation" id="Animation_cwigj"]
resource_name = "grab"
length = 1.5
tracks/0/type = "method"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0.7),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"spawn_enemies"
}]
}
[sub_resource type="Animation" id="Animation_vi6v3"]
resource_name = "smash"
length = 1.5
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("MovePoint/Hitbox:monitoring")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.2, 0.52),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [false, true, false]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("MovePoint/Claw:position")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.13333334, 0.2, 0.3, 0.81),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [Vector2(2, -224.99994), Vector2(2, -18), Vector2(2, -24), Vector2(2, -18), Vector2(2, -224.99994)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_cwigj"]
_data = {
&"RESET": SubResource("Animation_6wr5o"),
&"grab": SubResource("Animation_cwigj"),
&"smash": SubResource("Animation_vi6v3")
}
[sub_resource type="RectangleShape2D" id="RectangleShape2D_i50kd"]
size = Vector2(115, 60.500046)
[sub_resource type="SpriteFrames" id="SpriteFrames_ix723"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": ExtResource("10_vfq8f")
}, {
"duration": 1.0,
"texture": ExtResource("12_1400f")
}, {
"duration": 1.0,
"texture": ExtResource("11_nvwov")
}, {
"duration": 1.0,
"texture": ExtResource("13_4pbd4")
}],
"loop": true,
"name": &"default",
"speed": 5.0
}]
[node name="BossArena" type="Node2D" unique_id=1817081539] [node name="BossArena" type="Node2D" unique_id=1817081539]
[node name="Arena" type="Sprite2D" parent="." unique_id=138900999] [node name="Arena" type="Sprite2D" parent="." unique_id=138900999]
z_index = -2
position = Vector2(491, 321) position = Vector2(491, 321)
texture = ExtResource("1_7okkn") texture = ExtResource("1_7okkn")
[node name="NavigationRegion2D" type="NavigationRegion2D" parent="." unique_id=956156033]
position = Vector2(332, 406)
navigation_polygon = SubResource("NavigationPolygon_cwigj")
[node name="Player" parent="." unique_id=1743724931 instance=ExtResource("2_84w8w")] [node name="Player" parent="." unique_id=1743724931 instance=ExtResource("2_84w8w")]
position = Vector2(332, 406) position = Vector2(332, 406)
[node name="BossMachine" type="Node2D" parent="." unique_id=1366822299 node_paths=PackedStringArray("spawn_points")] [node name="BossMachine" type="Node2D" parent="." unique_id=1366822299 node_paths=PackedStringArray("spawn_points", "anim_player", "movable")]
script = ExtResource("3_84w8w") script = ExtResource("3_84w8w")
spawn_points = NodePath("Spanwpoints") spawn_points = NodePath("Spanwpoints")
spawn_scene = ExtResource("4_cwigj")
anim_player = NodePath("AnimationPlayer")
movable = NodePath("MovePoint")
[node name="Cable" type="Line2D" parent="BossMachine" unique_id=1685386266 node_paths=PackedStringArray("target_a", "target_b")]
z_index = -1
texture_repeat = 2
points = PackedVector2Array(400, 54.00006, 433.4146, 90.60722, 455.5857, 112.35656, 478.41217, 132.03459, 501.99182, 149.33456, 526.36475, 163.98936, 551.5204, 175.74184, 577.39026, 184.33817, 603.8364, 189.54301, 630.6511, 191.17232, 657.5769, 189.12798, 684.3383, 183.41934, 710.6758, 174.16643, 736.37134, 161.5936, 761.3873, 145.8899, 785.66644, 127.2229, 809.08386, 105.892075, 831.61316, 82.49083, 853.4609, 57.882732, 875, 33)
width = 4.28
texture = ExtResource("5_nvwov")
texture_mode = 1
joint_mode = 2
script = ExtResource("8_cwigj")
target_a = NodePath("../MovePoint/Cajita/CableEnd")
target_b = NodePath("CableStart")
[node name="CableStart" type="Marker2D" parent="BossMachine/Cable" unique_id=895744519]
position = Vector2(875, 33)
[node name="LineConnect" type="Line2D" parent="BossMachine" unique_id=829074019 node_paths=PackedStringArray("p1", "p2")]
position = Vector2(339, 52.00003)
points = PackedVector2Array(-9, 32.99997, -9, 81.99997)
width = 30.0
texture = ExtResource("14_0dfqf")
texture_mode = 2
script = ExtResource("10_nvwov")
p1 = NodePath("../MovePoint/Cajita/ShaftStart")
p2 = NodePath("../MovePoint/Claw/ShaftEnd")
[node name="Cable2" type="Line2D" parent="BossMachine" unique_id=1698104848 node_paths=PackedStringArray("target_a", "target_b")]
z_index = -1
texture_repeat = 2
points = PackedVector2Array(375, 16, 373.8593, 43.191643, 373.0625, 61.10778, 372.23343, 78.42529, 371.35992, 95.06819, 370.42853, 110.982735, 369.4226, 126.13191, 368.31882, 140.49055, 367.08148, 154.0409, 365.65115, 166.7671, 363.91754, 178.64566, 361.64096, 189.61905, 358.13318, 199.45197, 350.2255, 205.54736, 343.66098, 196.34799, 340.47632, 184.70204, 338.34995, 172.23978, 336.70596, 159.31265, 335.30392, 146.16144, 334, 133)
width = 5.825
texture = ExtResource("5_nvwov")
texture_mode = 1
joint_mode = 2
script = ExtResource("8_cwigj")
target_a = NodePath("../MovePoint/Cajita/CableStart")
target_b = NodePath("../MovePoint/Claw/CableEnd2")
rope_length = 200.0
iterations = 10
[node name="AnimationPlayer" type="AnimationPlayer" parent="BossMachine" unique_id=1359039881]
libraries/ = SubResource("AnimationLibrary_cwigj")
[node name="Spanwpoints" type="Node2D" parent="BossMachine" unique_id=4456145] [node name="Spanwpoints" type="Node2D" parent="BossMachine" unique_id=4456145]
@ -35,18 +190,51 @@ position = Vector2(221, 521)
[node name="Marker2D4" type="Marker2D" parent="BossMachine/Spanwpoints" unique_id=468086628] [node name="Marker2D4" type="Marker2D" parent="BossMachine/Spanwpoints" unique_id=468086628]
position = Vector2(228, 334) 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] [node name="Girl" type="Sprite2D" parent="BossMachine" unique_id=927639132]
position = Vector2(470, 200) position = Vector2(470, 200)
texture = ExtResource("7_6wr5o") texture = ExtResource("7_6wr5o")
[node name="MovePoint" type="Node2D" parent="BossMachine" unique_id=1751762232]
position = Vector2(330, 427)
[node name="Cajita" type="Sprite2D" parent="BossMachine/MovePoint" unique_id=2011291166]
position = Vector2(9, -374.99997)
texture = ExtResource("8_t0ayj")
[node name="CableStart" type="Marker2D" parent="BossMachine/MovePoint/Cajita" unique_id=1979592832]
position = Vector2(36, -36.00003)
[node name="ShaftStart" type="Marker2D" parent="BossMachine/MovePoint/Cajita" unique_id=1442721591]
position = Vector2(-9, 32.99997)
[node name="CableEnd" type="Marker2D" parent="BossMachine/MovePoint/Cajita" unique_id=200717428]
position = Vector2(61, 2.0000305)
[node name="Hitbox" type="Area2D" parent="BossMachine/MovePoint" unique_id=713433656]
monitoring = false
script = ExtResource("6_io3m0")
from_player = false
metadata/_custom_type_script = "uid://ejd25ul4j5pp"
[node name="CollisionShape2D" type="CollisionShape2D" parent="BossMachine/MovePoint/Hitbox" unique_id=1479358985]
shape = SubResource("RectangleShape2D_i50kd")
[node name="Claw" type="AnimatedSprite2D" parent="BossMachine/MovePoint" unique_id=218316761]
z_as_relative = false
position = Vector2(2, -224.99994)
sprite_frames = SubResource("SpriteFrames_ix723")
frame = 3
frame_progress = 0.31943718
[node name="CableEnd2" type="Marker2D" parent="BossMachine/MovePoint/Claw" unique_id=241840135]
position = Vector2(2, -69.00006)
[node name="ShaftEnd" type="Marker2D" parent="BossMachine/MovePoint/Claw" unique_id=1645182021]
position = Vector2(-2, -68.00006)
[node name="DangerRound" type="Sprite2D" parent="BossMachine/MovePoint" unique_id=2022174099]
self_modulate = Color(1, 0.22745098, 0.42352942, 1)
z_index = -1
position = Vector2(1, 3.0517578e-05)
scale = Vector2(4, 2.96)
texture = ExtResource("3_6wr5o")

View file

@ -2,9 +2,11 @@ extends Node2D
@export var speed = 300; @export var speed = 300;
@export var spawn_points : Node2D @export var spawn_points : Node2D
@export var spawn_scene : PackedScene
@export var anim_player : AnimationPlayer
@export var movable : Node2D
var target_pos := Vector2(0, 0) var target_pos := Vector2(0, 0)
@onready var marker : Sprite2D = $DangerRound
@onready var claw : Claw = $DangerRound/Claw
enum s { Follow, Smash, Spawn, Laser} enum s { Follow, Smash, Spawn, Laser}
var state = s.Follow var state = s.Follow
@ -29,12 +31,21 @@ func spawn_minions(times : int):
points.shuffle() points.shuffle()
for i in range(times): for i in range(times):
var p = points[i].global_position var p = points[i].global_position
await create_tween().tween_property(marker, "global_position", p, 1).finished await create_tween().tween_property(movable, "global_position", p, 1).finished
await claw.pickup() anim_player.play("grab")
await anim_player.animation_finished
state = s.Follow state = s.Follow
func spawn_enemies():
for j in range(3):
var enemy = spawn_scene.instantiate()
enemy.global_position = movable.global_position
add_child(enemy)
await get_tree().create_timer(0.1).timeout
func smash(): func smash():
await claw.smash(); anim_player.play("smash")
await anim_player.animation_finished
if randf() < 0.7: if randf() < 0.7:
state = s.Follow state = s.Follow
else: else:
@ -52,4 +63,4 @@ func follow(delta : float):
following = max_follow_time; following = max_follow_time;
func move_to(pos : Vector2, delta : float): func move_to(pos : Vector2, delta : float):
marker.global_position = marker.global_position.move_toward(pos, delta * speed) movable.global_position = movable.global_position.move_toward(pos, delta * speed)

24
scenes/boss_spawner.tscn Normal file
View file

@ -0,0 +1,24 @@
[gd_scene format=3 uid="uid://b5m10vpq0kk8n"]
[ext_resource type="Script" uid="uid://cojrjktxjgd6c" path="res://scripts/boss_spawner.gd" id="1_2trd2"]
[ext_resource type="Texture2D" uid="uid://d1jtklq43eomd" path="res://assets/enemies/blue-1.png" id="2_w6jr5"]
[ext_resource type="PackedScene" uid="uid://dvlr5hamruqrd" path="res://scenes/enemy_base.tscn" id="3_ft6eo"]
[ext_resource type="Texture2D" uid="uid://c0e666ifvdck6" path="res://assets/enemies/cerdipulpo_1.png" id="4_m15x1"]
[ext_resource type="PackedScene" uid="uid://ya6jfltqnl1b" path="res://scenes/heart_enemy.tscn" id="5_826mk"]
[ext_resource type="Texture2D" uid="uid://df5v6y1jiuc1x" path="res://assets/enemies/purple-1.png" id="6_omqto"]
[ext_resource type="PackedScene" uid="uid://bgb7ayjiy37t7" path="res://scenes/enemy_purple.tscn" id="7_0d2hh"]
[ext_resource type="Texture2D" uid="uid://trbpyx771jjf" path="res://assets/enemies/orange-8.png" id="8_is1el"]
[ext_resource type="PackedScene" uid="uid://1fqyupmquole" path="res://scenes/star_enemy.tscn" id="9_03vnn"]
[sub_resource type="CircleShape2D" id="CircleShape2D_2trd2"]
radius = 15.033297
[node name="BossSpawner" type="RigidBody2D" unique_id=768543663]
script = ExtResource("1_2trd2")
enemies = Array[Array]([[ExtResource("2_w6jr5"), ExtResource("3_ft6eo")], [ExtResource("4_m15x1"), ExtResource("5_826mk")], [ExtResource("6_omqto"), ExtResource("7_0d2hh")], [ExtResource("8_is1el"), ExtResource("9_03vnn")]])
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=371157067]
shape = SubResource("CircleShape2D_2trd2")
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=65910902]
texture = ExtResource("2_w6jr5")

View file

@ -1,16 +0,0 @@
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;

View file

@ -1,7 +1,7 @@
[gd_scene format=3 uid="uid://ncgwx0yjn2gt"] [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="Script" uid="uid://sbseykg05177" path="res://scripts/player.gd" id="1_ur7pv"]
[ext_resource type="Resource" uid="uid://butr81mog5qjy" path="res://resources/purple_attack.tres" id="2_3v2ag"] [ext_resource type="Resource" uid="uid://cf7x0uuj6wnil" path="res://resources/scythe.tres" id="2_3v2ag"]
[ext_resource type="PackedScene" uid="uid://bp45yth1y3ia5" path="res://scenes/player_explosion.tscn" id="3_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="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"] [ext_resource type="Texture2D" uid="uid://d3abeekjumqyb" path="res://assets/player/maske1.png" id="5_jej6c"]

View file

@ -2,10 +2,14 @@ extends Sprite2D
@export var start_mask : MaskData @export var start_mask : MaskData
@export var spawn : RoomSpawn @export var spawn : RoomSpawn
var triggered = false
func _process(delta: float) -> void: func _input(event: InputEvent) -> void:
if triggered: return
var player : Player = get_tree().get_first_node_in_group("player") 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"): if (event.is_action_pressed("interact") and
player.equip_mask(start_mask) player.global_position.distance_to(global_position) < 50):
spawn.start_next_wave() player.equip_mask(start_mask)
spawn.start_next_wave()
triggered = true

File diff suppressed because one or more lines are too long

View file

@ -1,7 +1,7 @@
[gd_scene format=3 uid="uid://bkjiwmc3yua2s"] [gd_scene format=3 uid="uid://bkjiwmc3yua2s"]
[ext_resource type="PackedScene" uid="uid://ncgwx0yjn2gt" path="res://scenes/player.tscn" id="1_kiokp"] [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="Texture2D" uid="uid://cme75i5kh0atg" 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://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://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="Script" uid="uid://dm2ayvfebi7x5" path="res://scripts/spawner.gd" id="5_rwd0d"]
@ -9,15 +9,15 @@
[ext_resource type="PackedScene" uid="uid://ya6jfltqnl1b" path="res://scenes/heart_enemy.tscn" id="7_rwd0d"] [ext_resource type="PackedScene" uid="uid://ya6jfltqnl1b" path="res://scenes/heart_enemy.tscn" id="7_rwd0d"]
[sub_resource type="NavigationPolygon" id="NavigationPolygon_kiokp"] [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) 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, 1037.1484, -75, 1018.8828, -51.851563, 1010.8125, -337.9375, 1027.9609, -325.92188, 1287.1797, -332.72656, 1291.8203, -75)
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)]) 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), PackedInt32Array(36, 37, 32, 35)])
outlines = Array[PackedVector2Array]([PackedVector2Array(-102, -527, 1504, -541, 1514, 539, -133, 553)]) outlines = Array[PackedVector2Array]([PackedVector2Array(-102, -527, 1504, -541, 1514, 539, -133, 553)])
[sub_resource type="RectangleShape2D" id="RectangleShape2D_kiokp"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_kiokp"]
size = Vector2(486.032, 52.7081) size = Vector2(486.032, 52.7081)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_2diqr"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_2diqr"]
size = Vector2(486.88434, 122.73932) size = Vector2(486.88434, 97.862274)
[node name="World2" type="Node2D" unique_id=219609187] [node name="World2" type="Node2D" unique_id=219609187]
@ -49,7 +49,7 @@ shape = SubResource("RectangleShape2D_kiokp")
collision_layer = 8 collision_layer = 8
[node name="CollisionShape2D" type="CollisionShape2D" parent="NavigationRegion2D/StaticBody2D3" unique_id=783263591] [node name="CollisionShape2D" type="CollisionShape2D" parent="NavigationRegion2D/StaticBody2D3" unique_id=783263591]
position = Vector2(969.5878, -150.63795) position = Vector2(957.15424, -150.28679)
rotation = 1.5425601 rotation = 1.5425601
shape = SubResource("RectangleShape2D_2diqr") shape = SubResource("RectangleShape2D_2diqr")

18
scripts/boss_spawner.gd Normal file
View file

@ -0,0 +1,18 @@
extends RigidBody2D
@export var enemies : Array[Array]
@onready var sprite : Sprite2D = $Sprite2D
func _ready() -> void:
var this_enemy = enemies.pick_random()
sprite.texture = this_enemy[0]
angular_velocity = (randf() - 0.5) * 46;
linear_velocity.y = -300;
linear_velocity.x = (randf() - 0.5) * 300
await get_tree().create_timer(randf() * 0.2 + 0.6).timeout
queue_free()
var enemy : Enemy = this_enemy[1].instantiate()
enemy.global_position = global_position
get_tree().root.add_child(enemy)

View file

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

64
scripts/cable.gd Normal file
View file

@ -0,0 +1,64 @@
@tool
extends Line2D
@export_group("Targets")
@export var target_a: Node2D
@export var target_b: Node2D
@export_group("Cable Settings")
@export var segment_count: int = 20
@export var rope_length: float = 300.0
@export var gravity: Vector2 = Vector2(0, 9.8)
@export var iterations: int = 5
var points_pos: Array[Vector2] = []
var points_prev: Array[Vector2] = []
var segment_dist: float
func _ready():
segment_dist = rope_length / segment_count
var start_pos = target_a.global_position if target_a else global_position
for i in range(segment_count):
points_pos.append(start_pos)
points_prev.append(start_pos)
points = PackedVector2Array(points_pos)
func _physics_process(delta: float):
if not target_a or not target_b:
return
_update_points(delta)
for i in range(iterations):
_apply_constraints()
var local_points = PackedVector2Array()
for p in points_pos:
local_points.append(to_local(p))
points = local_points
func _update_points(delta: float):
for i in range(segment_count):
var velocity = points_pos[i] - points_prev[i]
points_prev[i] = points_pos[i]
points_pos[i] += velocity + gravity * delta * 50.0
func _apply_constraints():
points_pos[0] = target_a.global_position
points_pos[segment_count - 1] = target_b.global_position
for i in range(segment_count - 1):
var p1 = points_pos[i]
var p2 = points_pos[i+1]
var diff = p1 - p2
var distance = diff.length()
var error = distance - segment_dist
var percent = error / distance
var offset = diff * percent * 0.5
if i != 0:
points_pos[i] -= offset
if i + 1 != segment_count - 1:
points_pos[i+1] += offset

1
scripts/cable.gd.uid Normal file
View file

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

View file

@ -14,6 +14,7 @@ func _ready() -> void:
target_node = get_tree().get_first_node_in_group("player") target_node = get_tree().get_first_node_in_group("player")
nav_agent = NavigationAgent2D.new() nav_agent = NavigationAgent2D.new()
add_child(nav_agent) add_child(nav_agent)
move_speed = move_speed + (randf() - 0.5) * 10.0
func _physics_process(delta: float) -> void: func _physics_process(delta: float) -> void:
if not target_node: return if not target_node: return
@ -32,6 +33,9 @@ func _physics_process(delta: float) -> void:
else: else:
_handle_attack_charge(delta) _handle_attack_charge(delta)
if not nav_agent.is_target_reachable():
velocity = Vector2.ZERO;
_sprite_anim() _sprite_anim()
super._physics_process(delta) super._physics_process(delta)

View file

@ -3,7 +3,7 @@ signal hit_entity(entity : Entity);
signal hit_obstacle; signal hit_obstacle;
var from_player = true @export var from_player = true
var enabled = true var enabled = true
@export var deal_damage = true @export var deal_damage = true
@export var dmg = 1 @export var dmg = 1

9
scripts/line_connect.gd Normal file
View file

@ -0,0 +1,9 @@
@tool
extends Line2D
@export var p1 : Node2D
@export var p2 : Node2D
func _physics_process(delta: float) -> void:
points[0] = to_local(p1.global_position)
points[1] = to_local(p2.global_position)

View file

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

View file

@ -18,7 +18,7 @@ func _physics_process(delta: float) -> void:
position += dir * speed * delta position += dir * speed * delta
func _on_hitbox_hit_obstacle() -> void: func _on_hitbox_hit_obstacle() -> void:
queue_free() pass
func _on_hitbox_hit_entity(entity: Entity) -> void: func _on_hitbox_hit_entity(entity: Entity) -> void:
queue_free() queue_free()