Compare commits
16 Commits
menuing_an
...
main
| Author | SHA1 | Date |
|---|---|---|
|
|
9a82e74e41 | |
|
|
01648c5939 | |
|
|
fc40a5c368 | |
|
|
e46b196f71 | |
|
|
671c046c3c | |
|
|
f5bbfd839a | |
|
|
c6277ccf22 | |
|
|
5ee8c97455 | |
|
|
b9f024685b | |
|
|
6a2b122343 | |
|
|
4a4a664fee | |
|
|
452325a0b4 | |
|
|
8b76140c2a | |
|
|
681471259b | |
|
|
fa50773a0e | |
|
|
c2cbeba20c |
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 263 B |
|
|
@ -0,0 +1,40 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://pot4k8a6lxd0"
|
||||||
|
path="res://.godot/imported/knvie.png-6e2c57d6850f97653fad709f2c5186b5.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/weapons/knvie.png"
|
||||||
|
dest_files=["res://.godot/imported/knvie.png-6e2c57d6850f97653fad709f2c5186b5.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
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"time_start": 0,
|
||||||
|
"time_end": 60,
|
||||||
|
"entries": [
|
||||||
|
{ "enemy": "res://scenes/slime.tscn", "count_at_start": 0, "count_at_end": 15, "min_interval": 0.5 }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time_start": 60,
|
||||||
|
"time_end": 180,
|
||||||
|
"entries": [
|
||||||
|
{ "enemy": "res://scenes/slime.tscn", "count_at_start": 15, "count_at_end": 40, "min_interval": 0.3 },
|
||||||
|
{ "enemy": "res://scenes/blue_slime.tscn", "count_at_start": 0, "count_at_end": 10, "min_interval": 0.8 }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time_start": 180,
|
||||||
|
"time_end": -1,
|
||||||
|
"entries": [
|
||||||
|
{ "enemy": "res://scenes/slime.tscn", "count_at_start": 40, "count_at_end": 100, "min_interval": 0.2 },
|
||||||
|
{ "enemy": "res://scenes/blue_slime.tscn", "count_at_start": 10, "count_at_end": 60, "min_interval": 0.5 },
|
||||||
|
{ "enemy": "res://scenes/fire_slime.tscn", "count_at_start": 0, "count_at_end": 40, "min_interval": 0.6 }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
@ -0,0 +1,101 @@
|
||||||
|
[gd_scene format=3 uid="uid://bbhpa50ef6702"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://dw5y2tp34fxys" path="res://scripts/perk_card.gd" id="1_t8gqh"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://duo145bmwho8d" path="res://assets/UI assets pack 2/UI books & more.png" id="2_nlhlf"]
|
||||||
|
[ext_resource type="FontFile" uid="uid://cq0jx2aapggkg" path="res://assets/fonts/slkscrb.ttf" id="3_n4umd"]
|
||||||
|
[ext_resource type="FontFile" uid="uid://brooj0hba7650" path="res://assets/fonts/slkscr.ttf" id="4_40ty6"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cdktimg5axaxj" path="res://assets/Fire Pixel Bullet 16x16/All_Fire_Bullet_Pixel_16x16_01.png" id="4_nlhlf"]
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_fgk3h"]
|
||||||
|
atlas = ExtResource("2_nlhlf")
|
||||||
|
region = Rect2(561, 17, 46, 62)
|
||||||
|
|
||||||
|
[sub_resource type="LabelSettings" id="LabelSettings_qag4p"]
|
||||||
|
line_spacing = 5.0
|
||||||
|
font = ExtResource("3_n4umd")
|
||||||
|
font_size = 12
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_n4umd"]
|
||||||
|
atlas = ExtResource("4_nlhlf")
|
||||||
|
region = Rect2(258, 241, 25, 14)
|
||||||
|
|
||||||
|
[sub_resource type="LabelSettings" id="LabelSettings_ni87r"]
|
||||||
|
font = ExtResource("4_40ty6")
|
||||||
|
font_size = 11
|
||||||
|
|
||||||
|
[node name="PerkCard" type="Control" unique_id=1471811151]
|
||||||
|
custom_minimum_size = Vector2(200, 300)
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 0
|
||||||
|
script = ExtResource("1_t8gqh")
|
||||||
|
|
||||||
|
[node name="Card" type="TextureRect" parent="." unique_id=1832247473]
|
||||||
|
texture_filter = 1
|
||||||
|
custom_minimum_size = Vector2(200, 300)
|
||||||
|
layout_mode = 0
|
||||||
|
offset_right = 40.0
|
||||||
|
offset_bottom = 40.0
|
||||||
|
texture = SubResource("AtlasTexture_fgk3h")
|
||||||
|
|
||||||
|
[node name="Name" type="Label" parent="Card" unique_id=2006873472]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 5
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
offset_left = -50.5
|
||||||
|
offset_top = 43.0
|
||||||
|
offset_right = 50.5
|
||||||
|
offset_bottom = 92.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
text = "Zweizeilige
|
||||||
|
Überschrift
|
||||||
|
"
|
||||||
|
label_settings = SubResource("LabelSettings_qag4p")
|
||||||
|
horizontal_alignment = 1
|
||||||
|
|
||||||
|
[node name="TextureRect" type="TextureRect" parent="Card/Name" unique_id=2128840891]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 7
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_top = 1.0
|
||||||
|
anchor_right = 0.5
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
offset_left = -24.5
|
||||||
|
offset_top = -10.0
|
||||||
|
offset_right = 24.5
|
||||||
|
offset_bottom = 19.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 0
|
||||||
|
texture = SubResource("AtlasTexture_n4umd")
|
||||||
|
|
||||||
|
[node name="Description" type="Label" parent="Card" unique_id=859816848]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 7
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_top = 1.0
|
||||||
|
anchor_right = 0.5
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
offset_left = -65.0
|
||||||
|
offset_top = -176.0
|
||||||
|
offset_right = 69.0
|
||||||
|
offset_bottom = -43.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 0
|
||||||
|
text = "Text in Zeile Eins
|
||||||
|
Text in Zeile Eins
|
||||||
|
Text in Zeile Eins
|
||||||
|
Text in Zeile Eins
|
||||||
|
Text in Zeile Zwei
|
||||||
|
Text in Zeile Drei
|
||||||
|
Text in Zeile Vier
|
||||||
|
Text in Zeile Fünf"
|
||||||
|
label_settings = SubResource("LabelSettings_ni87r")
|
||||||
|
horizontal_alignment = 1
|
||||||
|
autowrap_mode = 2
|
||||||
|
|
||||||
|
[node name="Button" type="Button" parent="." unique_id=1274377333]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_right = 200.0
|
||||||
|
offset_bottom = 300.0
|
||||||
|
|
||||||
|
[connection signal="pressed" from="Button" to="." method="_on_button_pressed"]
|
||||||
|
|
@ -0,0 +1,752 @@
|
||||||
|
[gd_scene format=3 uid="uid://cpe6aiuqiox0u"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://dklt42vjjcks7" path="res://scripts/fire_slime.gd" id="1_88j2t"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://b1tyfy8ooudkc" path="res://assets/Slime3/With_shadow/Slime3_Death_with_shadow.png" id="2_ahfdi"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bbm1sv6hmc2j" path="res://assets/Slime3/With_shadow/Slime3_Hurt_with_shadow.png" id="3_kq38e"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bt07131sttb6e" path="res://assets/Slime3/With_shadow/Slime3_Walk_with_shadow.png" id="4_ret1g"]
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_u74be"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(0, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_hky14"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(64, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_1hmrm"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(128, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_icdnf"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(192, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_jpau6"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(256, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_pla0y"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(320, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_5ug5i"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(384, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_p0q1e"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(448, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_8gdmr"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(512, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_4gxlk"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(576, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_w642b"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(256, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_6tf61"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(0, 128, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_354yo"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(64, 128, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_wrhhh"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(128, 128, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_5l6b7"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(192, 128, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_ml8lr"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(256, 128, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_flrsr"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(320, 128, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_qr4cj"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(384, 128, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_o5jey"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(448, 128, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_1fjmf"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(512, 128, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_3dxre"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(576, 128, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_6mupu"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(0, 192, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_cpqhb"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(64, 192, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_vpjp1"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(128, 192, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_pyvbc"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(192, 192, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_t8xj5"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(256, 192, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_uq6gh"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(320, 192, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_q6wog"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(384, 192, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_jcate"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(448, 192, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_hl62h"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(512, 192, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_60nri"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(576, 192, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_60moo"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(0, 64, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_pguj2"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(64, 64, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_ybskn"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(128, 64, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_el31c"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(192, 64, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_7hu85"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(256, 64, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_fuihh"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(320, 64, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_mtyhi"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(384, 64, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_sjkfo"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(448, 64, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_htj0k"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(512, 64, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_6hck2"]
|
||||||
|
atlas = ExtResource("2_ahfdi")
|
||||||
|
region = Rect2(576, 64, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_0ksjp"]
|
||||||
|
atlas = ExtResource("3_kq38e")
|
||||||
|
region = Rect2(0, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_i4a22"]
|
||||||
|
atlas = ExtResource("3_kq38e")
|
||||||
|
region = Rect2(64, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_o8li6"]
|
||||||
|
atlas = ExtResource("3_kq38e")
|
||||||
|
region = Rect2(128, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_g0evx"]
|
||||||
|
atlas = ExtResource("3_kq38e")
|
||||||
|
region = Rect2(192, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_rdhnu"]
|
||||||
|
atlas = ExtResource("3_kq38e")
|
||||||
|
region = Rect2(256, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_84ews"]
|
||||||
|
atlas = ExtResource("3_kq38e")
|
||||||
|
region = Rect2(0, 128, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_1xfj1"]
|
||||||
|
atlas = ExtResource("3_kq38e")
|
||||||
|
region = Rect2(64, 128, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_trrl8"]
|
||||||
|
atlas = ExtResource("3_kq38e")
|
||||||
|
region = Rect2(128, 128, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_lr5qx"]
|
||||||
|
atlas = ExtResource("3_kq38e")
|
||||||
|
region = Rect2(192, 128, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_6ma40"]
|
||||||
|
atlas = ExtResource("3_kq38e")
|
||||||
|
region = Rect2(256, 128, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_kwtft"]
|
||||||
|
atlas = ExtResource("3_kq38e")
|
||||||
|
region = Rect2(128, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_enu58"]
|
||||||
|
atlas = ExtResource("3_kq38e")
|
||||||
|
region = Rect2(0, 192, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_7kdux"]
|
||||||
|
atlas = ExtResource("3_kq38e")
|
||||||
|
region = Rect2(64, 192, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_bqnxo"]
|
||||||
|
atlas = ExtResource("3_kq38e")
|
||||||
|
region = Rect2(128, 192, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_enu87"]
|
||||||
|
atlas = ExtResource("3_kq38e")
|
||||||
|
region = Rect2(192, 192, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_2h6h5"]
|
||||||
|
atlas = ExtResource("3_kq38e")
|
||||||
|
region = Rect2(256, 192, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_8fjfh"]
|
||||||
|
atlas = ExtResource("3_kq38e")
|
||||||
|
region = Rect2(0, 64, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_vh8hy"]
|
||||||
|
atlas = ExtResource("3_kq38e")
|
||||||
|
region = Rect2(64, 64, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_2rs53"]
|
||||||
|
atlas = ExtResource("3_kq38e")
|
||||||
|
region = Rect2(128, 64, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_6qhe6"]
|
||||||
|
atlas = ExtResource("3_kq38e")
|
||||||
|
region = Rect2(192, 64, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_5ch0i"]
|
||||||
|
atlas = ExtResource("3_kq38e")
|
||||||
|
region = Rect2(256, 64, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_ugw68"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(0, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_osbva"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(64, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_e2rds"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(128, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_8jpri"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(192, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_p46gn"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(256, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_tmsf0"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(320, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_8jftq"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(384, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_5xakg"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(448, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_wjesj"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(0, 128, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_xicij"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(64, 128, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_wt4kn"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(128, 128, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_dfaft"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(192, 128, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_01vj4"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(256, 128, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_fevc3"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(320, 128, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_o8mkr"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(384, 128, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_khlie"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(448, 128, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_rt0q0"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(0, 192, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_b1gjj"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(64, 192, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_bt6g4"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(128, 192, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_jsjsv"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(192, 192, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_0l68k"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(256, 192, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_iimw2"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(320, 192, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_jlqmn"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(384, 192, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_gctn2"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(448, 192, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_x6bpc"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(0, 64, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_23if8"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(64, 64, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_1wf5b"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(128, 64, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_263iu"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(192, 64, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_gk0vp"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(256, 64, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_n30n6"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(320, 64, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_an4xw"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(384, 64, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_ohh0e"]
|
||||||
|
atlas = ExtResource("4_ret1g")
|
||||||
|
region = Rect2(448, 64, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="SpriteFrames" id="SpriteFrames_05veu"]
|
||||||
|
animations = [{
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_u74be")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_hky14")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_1hmrm")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_icdnf")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_jpau6")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_pla0y")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_5ug5i")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_p0q1e")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_8gdmr")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_4gxlk")
|
||||||
|
}],
|
||||||
|
"loop": true,
|
||||||
|
"name": &"death_down",
|
||||||
|
"speed": 10.0
|
||||||
|
}, {
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_w642b")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_6tf61")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_354yo")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_wrhhh")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_5l6b7")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_ml8lr")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_flrsr")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_qr4cj")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_o5jey")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_1fjmf")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_3dxre")
|
||||||
|
}],
|
||||||
|
"loop": true,
|
||||||
|
"name": &"death_left",
|
||||||
|
"speed": 10.0
|
||||||
|
}, {
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_6mupu")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_cpqhb")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_vpjp1")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_pyvbc")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_t8xj5")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_uq6gh")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_q6wog")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_jcate")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_hl62h")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_60nri")
|
||||||
|
}],
|
||||||
|
"loop": true,
|
||||||
|
"name": &"death_right",
|
||||||
|
"speed": 10.0
|
||||||
|
}, {
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_60moo")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_pguj2")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_ybskn")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_el31c")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_7hu85")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_fuihh")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_mtyhi")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_sjkfo")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_htj0k")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_6hck2")
|
||||||
|
}],
|
||||||
|
"loop": true,
|
||||||
|
"name": &"death_up",
|
||||||
|
"speed": 10.0
|
||||||
|
}, {
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_0ksjp")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_i4a22")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_o8li6")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_g0evx")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_rdhnu")
|
||||||
|
}],
|
||||||
|
"loop": true,
|
||||||
|
"name": &"hurt_down",
|
||||||
|
"speed": 10.0
|
||||||
|
}, {
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_84ews")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_1xfj1")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_trrl8")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_lr5qx")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_6ma40")
|
||||||
|
}],
|
||||||
|
"loop": true,
|
||||||
|
"name": &"hurt_left",
|
||||||
|
"speed": 10.0
|
||||||
|
}, {
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_kwtft")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_enu58")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_7kdux")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_bqnxo")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_enu87")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_2h6h5")
|
||||||
|
}],
|
||||||
|
"loop": true,
|
||||||
|
"name": &"hurt_right",
|
||||||
|
"speed": 10.0
|
||||||
|
}, {
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_8fjfh")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_vh8hy")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_2rs53")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_6qhe6")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_5ch0i")
|
||||||
|
}],
|
||||||
|
"loop": true,
|
||||||
|
"name": &"hurt_up",
|
||||||
|
"speed": 10.0
|
||||||
|
}, {
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_ugw68")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_osbva")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_e2rds")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_8jpri")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_p46gn")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_tmsf0")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_8jftq")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_5xakg")
|
||||||
|
}],
|
||||||
|
"loop": true,
|
||||||
|
"name": &"walk_down",
|
||||||
|
"speed": 10.0
|
||||||
|
}, {
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_wjesj")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_xicij")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_wt4kn")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_dfaft")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_01vj4")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_fevc3")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_o8mkr")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_khlie")
|
||||||
|
}],
|
||||||
|
"loop": true,
|
||||||
|
"name": &"walk_left",
|
||||||
|
"speed": 10.0
|
||||||
|
}, {
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_rt0q0")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_b1gjj")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_bt6g4")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_jsjsv")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_0l68k")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_iimw2")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_jlqmn")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_gctn2")
|
||||||
|
}],
|
||||||
|
"loop": true,
|
||||||
|
"name": &"walk_right",
|
||||||
|
"speed": 10.0
|
||||||
|
}, {
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_x6bpc")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_23if8")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_1wf5b")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_263iu")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_gk0vp")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_n30n6")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_an4xw")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_ohh0e")
|
||||||
|
}],
|
||||||
|
"loop": true,
|
||||||
|
"name": &"walk_up",
|
||||||
|
"speed": 10.0
|
||||||
|
}]
|
||||||
|
|
||||||
|
[sub_resource type="CircleShape2D" id="CircleShape2D_1djsx"]
|
||||||
|
radius = 7.071068
|
||||||
|
|
||||||
|
[sub_resource type="CircleShape2D" id="CircleShape2D_odbmi"]
|
||||||
|
radius = 8.062258
|
||||||
|
|
||||||
|
[node name="FireSlime" type="CharacterBody2D" unique_id=1827403107]
|
||||||
|
script = ExtResource("1_88j2t")
|
||||||
|
metadata/_custom_type_script = "uid://c0uv02nt5ocvg"
|
||||||
|
|
||||||
|
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=1151813585]
|
||||||
|
texture_filter = 1
|
||||||
|
sprite_frames = SubResource("SpriteFrames_05veu")
|
||||||
|
animation = &"walk_down"
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=2114857632]
|
||||||
|
position = Vector2(0, 1)
|
||||||
|
shape = SubResource("CircleShape2D_1djsx")
|
||||||
|
|
||||||
|
[node name="Area2D" type="Area2D" parent="." unique_id=1305327123]
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D" unique_id=762851125]
|
||||||
|
position = Vector2(0, 1)
|
||||||
|
shape = SubResource("CircleShape2D_odbmi")
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
extends Node2D
|
extends Node2D
|
||||||
|
|
||||||
|
@onready var _timer_label: Label = $CanvasLayer/TimerLabel
|
||||||
|
@onready var _spawn_control = $SpawnControl
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
|
||||||
func _ready():
|
func _ready():
|
||||||
MusicManager.play(preload("res://assets/music&sfx/music/ashveil-355633.mp3"))
|
MusicManager.play(preload("res://assets/music&sfx/music/ashveil-355633.mp3"))
|
||||||
|
|
||||||
|
func _process(_delta: float) -> void:
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
var t = int(_spawn_control.elapsed_time)
|
||||||
func _process(delta: float) -> void:
|
_timer_label.text = "%02d:%02d" % [t / 60, t % 60]
|
||||||
pass
|
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@
|
||||||
[ext_resource type="Script" uid="uid://duauc778wc3hd" path="res://scripts/pause_menu.gd" id="18_264po"]
|
[ext_resource type="Script" uid="uid://duauc778wc3hd" path="res://scripts/pause_menu.gd" id="18_264po"]
|
||||||
[ext_resource type="FontFile" uid="uid://8v71dcws4q6o" path="res://assets/fonts/slkscre.ttf" id="19_1kice"]
|
[ext_resource type="FontFile" uid="uid://8v71dcws4q6o" path="res://assets/fonts/slkscre.ttf" id="19_1kice"]
|
||||||
[ext_resource type="Script" uid="uid://586y330mhx8" path="res://scripts/options_menu_ingame.gd" id="20_1kice"]
|
[ext_resource type="Script" uid="uid://586y330mhx8" path="res://scripts/options_menu_ingame.gd" id="20_1kice"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://dp8o40ssuh8ip" path="res://assets/Tiny RPG Mana Soul GUI v1.0/20250421barB-Sheet.png" id="16_ssvqc"]
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_ssvqc"]
|
[sub_resource type="Resource" id="Resource_ssvqc"]
|
||||||
script = ExtResource("6_ir15t")
|
script = ExtResource("6_ir15t")
|
||||||
|
|
@ -2383,11 +2384,6 @@ anchors_preset = 0
|
||||||
offset_right = 40.0
|
offset_right = 40.0
|
||||||
offset_bottom = 40.0
|
offset_bottom = 40.0
|
||||||
script = ExtResource("6_p57ef")
|
script = ExtResource("6_p57ef")
|
||||||
spawn_entries = Array[ExtResource("6_ir15t")]([SubResource("Resource_ssvqc"), SubResource("Resource_264po")])
|
|
||||||
|
|
||||||
[node name="SpawnTimer" type="Timer" parent="." unique_id=1852920556]
|
|
||||||
wait_time = 0.2
|
|
||||||
autostart = true
|
|
||||||
|
|
||||||
[node name="Witch" parent="." unique_id=1188927311 instance=ExtResource("7_u5sy4")]
|
[node name="Witch" parent="." unique_id=1188927311 instance=ExtResource("7_u5sy4")]
|
||||||
position = Vector2(304, 164)
|
position = Vector2(304, 164)
|
||||||
|
|
@ -2409,24 +2405,88 @@ script = ExtResource("10_vtaks")
|
||||||
[node name="CanvasLayer" type="CanvasLayer" parent="." unique_id=1323249211]
|
[node name="CanvasLayer" type="CanvasLayer" parent="." unique_id=1323249211]
|
||||||
|
|
||||||
[node name="ProgressBar" type="ProgressBar" parent="CanvasLayer" unique_id=825658619]
|
[node name="ProgressBar" type="ProgressBar" parent="CanvasLayer" unique_id=825658619]
|
||||||
offset_right = 607.0
|
anchors_preset = 5
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
offset_left = -303.5
|
||||||
|
offset_right = 303.5
|
||||||
offset_bottom = 27.0
|
offset_bottom = 27.0
|
||||||
|
grow_horizontal = 2
|
||||||
max_value = 5.0
|
max_value = 5.0
|
||||||
step = 1.0
|
step = 1.0
|
||||||
show_percentage = false
|
show_percentage = false
|
||||||
|
|
||||||
|
[node name="NinePatchRect" type="NinePatchRect" parent="CanvasLayer/ProgressBar" unique_id=1364517669]
|
||||||
|
texture_filter = 1
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
offset_left = -6.5
|
||||||
|
offset_top = -1.0
|
||||||
|
offset_right = 5.5
|
||||||
|
offset_bottom = 2.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
texture = ExtResource("16_ssvqc")
|
||||||
|
draw_center = false
|
||||||
|
region_rect = Rect2(0, 0, 95, 15)
|
||||||
|
patch_margin_left = 7
|
||||||
|
patch_margin_top = 5
|
||||||
|
patch_margin_right = 8
|
||||||
|
patch_margin_bottom = 6
|
||||||
|
|
||||||
|
[node name="TimerLabel" type="Label" parent="CanvasLayer" unique_id=1111111111]
|
||||||
|
anchors_preset = 5
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
offset_left = -60.0
|
||||||
|
offset_top = 31.0
|
||||||
|
offset_right = 60.0
|
||||||
|
offset_bottom = 55.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
text = "00:00"
|
||||||
|
horizontal_alignment = 1
|
||||||
|
theme_override_fonts/font = ExtResource("19_1kice")
|
||||||
|
theme_override_font_sizes/font_size = 20
|
||||||
|
theme_override_colors/font_color = Color(1, 1, 1, 1)
|
||||||
|
theme_override_colors/font_shadow_color = Color(0, 0, 0, 1)
|
||||||
|
theme_override_constants/shadow_offset_x = 1
|
||||||
|
theme_override_constants/shadow_offset_y = 1
|
||||||
|
|
||||||
[node name="LevelUpManager" type="Control" parent="CanvasLayer" unique_id=292400493]
|
[node name="LevelUpManager" type="Control" parent="CanvasLayer" unique_id=292400493]
|
||||||
process_mode = 3
|
process_mode = 3
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 0
|
anchors_preset = 5
|
||||||
offset_right = 40.0
|
anchor_left = 0.5
|
||||||
offset_bottom = 40.0
|
anchor_right = 0.5
|
||||||
|
grow_horizontal = 2
|
||||||
script = ExtResource("16_rysoc")
|
script = ExtResource("16_rysoc")
|
||||||
|
|
||||||
|
[node name="ColorRect" type="ColorRect" parent="CanvasLayer/LevelUpManager" unique_id=1319513730]
|
||||||
|
layout_mode = 1
|
||||||
|
offset_left = -656.0
|
||||||
|
offset_top = -9.0
|
||||||
|
offset_right = 642.0
|
||||||
|
offset_bottom = 728.0
|
||||||
|
color = Color(0, 0, 0, 0.0627451)
|
||||||
|
|
||||||
[node name="HBoxContainer" type="HBoxContainer" parent="CanvasLayer/LevelUpManager" unique_id=957625333]
|
[node name="HBoxContainer" type="HBoxContainer" parent="CanvasLayer/LevelUpManager" unique_id=957625333]
|
||||||
layout_mode = 0
|
custom_minimum_size = Vector2(1000, 400)
|
||||||
offset_right = 40.0
|
layout_mode = 1
|
||||||
offset_bottom = 40.0
|
anchors_preset = 8
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_top = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
anchor_bottom = 0.5
|
||||||
|
offset_left = -20.0
|
||||||
|
offset_top = 350.0
|
||||||
|
offset_right = 20.0
|
||||||
|
offset_bottom = 390.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
theme_override_constants/separation = 50
|
||||||
|
alignment = 1
|
||||||
|
|
||||||
[node name="PerkEffects" type="Node2D" parent="." unique_id=2027136639]
|
[node name="PerkEffects" type="Node2D" parent="." unique_id=2027136639]
|
||||||
script = ExtResource("16_ca42v")
|
script = ExtResource("16_ca42v")
|
||||||
|
|
@ -2575,7 +2635,6 @@ theme_override_fonts/font = ExtResource("19_1kice")
|
||||||
theme_override_font_sizes/font_size = 32
|
theme_override_font_sizes/font_size = 32
|
||||||
text = "Back"
|
text = "Back"
|
||||||
|
|
||||||
[connection signal="timeout" from="SpawnTimer" to="SpawnControl" method="_on_spawn_timer_timeout"]
|
|
||||||
[connection signal="pressed" from="PauseMenu/VBoxContainer/ContinueButton" to="PauseMenu" method="_on_continue_button_pressed"]
|
[connection signal="pressed" from="PauseMenu/VBoxContainer/ContinueButton" to="PauseMenu" method="_on_continue_button_pressed"]
|
||||||
[connection signal="pressed" from="PauseMenu/VBoxContainer/OptionsButton" to="PauseMenu" method="_on_options_button_pressed"]
|
[connection signal="pressed" from="PauseMenu/VBoxContainer/OptionsButton" to="PauseMenu" method="_on_options_button_pressed"]
|
||||||
[connection signal="pressed" from="PauseMenu/VBoxContainer/QuitButton" to="PauseMenu" method="_on_quit_button_pressed"]
|
[connection signal="pressed" from="PauseMenu/VBoxContainer/QuitButton" to="PauseMenu" method="_on_quit_button_pressed"]
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
[gd_scene format=3 uid="uid://oegpflgwf17e"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://dpj26ryawjq02" path="res://scripts/throwing_knive.gd" id="2_knive"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://pot4k8a6lxd0" path="res://assets/weapons/knvie.png" id="2_tyd64"]
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_frs86"]
|
||||||
|
atlas = ExtResource("2_tyd64")
|
||||||
|
region = Rect2(0, 0, 32, 32)
|
||||||
|
|
||||||
|
[sub_resource type="SpriteFrames" id="SpriteFrames_t4gbw"]
|
||||||
|
animations = [{
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_frs86")
|
||||||
|
}],
|
||||||
|
"loop": true,
|
||||||
|
"name": &"default",
|
||||||
|
"speed": 5.0
|
||||||
|
}]
|
||||||
|
|
||||||
|
[sub_resource type="RectangleShape2D" id="RectangleShape2D_1ss1s"]
|
||||||
|
size = Vector2(15, 7)
|
||||||
|
|
||||||
|
[node name="ThrowingKnive" type="Area2D" unique_id=882877238]
|
||||||
|
script = ExtResource("2_knive")
|
||||||
|
|
||||||
|
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=164559800]
|
||||||
|
texture_filter = 1
|
||||||
|
sprite_frames = SubResource("SpriteFrames_t4gbw")
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=886320879]
|
||||||
|
position = Vector2(0.5, -0.5)
|
||||||
|
shape = SubResource("RectangleShape2D_1ss1s")
|
||||||
|
|
@ -3,4 +3,5 @@ class_name Perk
|
||||||
|
|
||||||
@export var name: String
|
@export var name: String
|
||||||
@export var description: String
|
@export var description: String
|
||||||
|
@export var icon: Texture2D = null
|
||||||
var effect: Callable
|
var effect: Callable
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
extends Resource
|
||||||
|
class_name SpawnStage
|
||||||
|
|
||||||
|
@export var time_start: float = 0.0
|
||||||
|
@export var time_end: float = -1.0 # -1 = forever
|
||||||
|
@export var entries: Array[StageEntry]
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
uid://ca7n7kd1ki2is
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
extends Resource
|
||||||
|
class_name StageEntry
|
||||||
|
|
||||||
|
@export var enemy: PackedScene
|
||||||
|
@export var count_at_start: int = 0
|
||||||
|
@export var count_at_end: int = 20
|
||||||
|
@export var min_interval: float = 0.3
|
||||||
|
@export var max_spawns: int = -1 # -1 = unlimited
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
uid://dc737qsmg74i
|
||||||
|
|
@ -3,7 +3,7 @@ extends EnemyBase
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
super()
|
super()
|
||||||
speed = 0.1
|
speed = 15.0
|
||||||
hits_remaining = 2
|
hits_remaining = 2
|
||||||
$Area2D.body_entered.connect(_on_area_2d_body_entered)
|
$Area2D.body_entered.connect(_on_area_2d_body_entered)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -67,11 +67,10 @@ func _process(delta: float) -> void:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
func _chase_witch() -> void:
|
func _chase_witch() -> void:
|
||||||
var direction = Vector2(witch.global_position - global_position)
|
var direction = Vector2(witch.global_position - global_position).normalized()
|
||||||
if direction != Vector2.ZERO:
|
if direction != Vector2.ZERO:
|
||||||
last_direction = direction
|
last_direction = direction
|
||||||
velocity = direction * speed
|
velocity = direction * speed
|
||||||
velocity = direction * speed
|
|
||||||
|
|
||||||
if direction == Vector2.ZERO:
|
if direction == Vector2.ZERO:
|
||||||
animated_sprite_2d.play("idle")
|
animated_sprite_2d.play("idle")
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ extends Area2D
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready():
|
func _ready():
|
||||||
|
await get_tree().physics_frame
|
||||||
for body in get_overlapping_bodies():
|
for body in get_overlapping_bodies():
|
||||||
if body.is_in_group("enemies"):
|
if body.is_in_group("enemies"):
|
||||||
body.hit()
|
body.hit()
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
extends EnemyBase
|
||||||
|
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
super()
|
||||||
|
speed = 15.0
|
||||||
|
hits_remaining = 3
|
||||||
|
$Area2D.body_entered.connect(_on_area_2d_body_entered)
|
||||||
|
|
||||||
|
func _process(delta: float) -> void:
|
||||||
|
if is_dying or is_hurt:
|
||||||
|
return
|
||||||
|
_chase_witch()
|
||||||
|
|
||||||
|
func _on_area_2d_body_entered(body: Node2D) -> void:
|
||||||
|
if body == player:
|
||||||
|
hit()
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
uid://dklt42vjjcks7
|
||||||
|
|
@ -10,6 +10,6 @@ func _on_body_entered(body: Node2D) -> void:
|
||||||
if fireball_aoe:
|
if fireball_aoe:
|
||||||
var boom = explosion_scene.instantiate()
|
var boom = explosion_scene.instantiate()
|
||||||
boom.global_position = global_position
|
boom.global_position = global_position
|
||||||
get_parent().add_child(boom)
|
get_parent().call_deferred("add_child", boom)
|
||||||
queue_free()
|
queue_free()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,9 @@ extends Control
|
||||||
|
|
||||||
|
|
||||||
@onready var perk_effects = get_node("/root/Game/PerkEffects")
|
@onready var perk_effects = get_node("/root/Game/PerkEffects")
|
||||||
|
|
||||||
var perks
|
var perks
|
||||||
|
@onready var perkCard = preload("res://scenes/PerkCard.tscn")
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
perks = perk_effects.available_perks
|
perks = perk_effects.available_perks
|
||||||
|
|
@ -17,18 +19,23 @@ func _process(delta: float) -> void:
|
||||||
func show_perks():
|
func show_perks():
|
||||||
if perks.is_empty():
|
if perks.is_empty():
|
||||||
return
|
return
|
||||||
|
var tween = create_tween()
|
||||||
|
tween.tween_property($ColorRect, "color:a", 0.6, 0.3)
|
||||||
get_tree().paused = true
|
get_tree().paused = true
|
||||||
var shuffled = perks.duplicate()
|
var shuffled = perks.duplicate()
|
||||||
shuffled.shuffle()
|
shuffled.shuffle()
|
||||||
var chosen = shuffled.slice(0, 3)
|
var chosen = shuffled.slice(0, 3)
|
||||||
for x in chosen:
|
for x in chosen:
|
||||||
var button = Button.new()
|
var card = perkCard.instantiate()
|
||||||
button.text = x.name + "\n" + x.description
|
$HBoxContainer.add_child(card)
|
||||||
button.pressed.connect(func(): select_perk(x))
|
card.setup(x, func(): select_perk(x))
|
||||||
$HBoxContainer.add_child(button)
|
|
||||||
|
|
||||||
func select_perk(perk):
|
func select_perk(perk):
|
||||||
perk.effect.call()
|
perk.effect.call()
|
||||||
get_tree().paused = false
|
get_tree().paused = false
|
||||||
perks.erase(perk)
|
perks.erase(perk)
|
||||||
for child in $HBoxContainer.get_children(): child.queue_free()
|
for child in $HBoxContainer.get_children(): child.queue_free()
|
||||||
|
var tween = create_tween()
|
||||||
|
tween.tween_property($ColorRect, "color:a", 0.0, 0.3)
|
||||||
|
await tween.finished
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
extends Control
|
||||||
|
@export var icon: Texture2D
|
||||||
|
# Called when the node enters the scene tree for the first time.
|
||||||
|
var on_select: Callable
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func setup(perk: Perk, select: Callable):
|
||||||
|
$Button.modulate.a = 0
|
||||||
|
$Card/Name.text = perk.name
|
||||||
|
$Card/Description.text = perk.description
|
||||||
|
if perk.icon != null:
|
||||||
|
$Card/Name/TextureRect.texture = perk.icon
|
||||||
|
animate_in()
|
||||||
|
$Button.modulate.a = 0.3
|
||||||
|
$Button.mouse_entered.connect(func(): $Button.modulate.a = 0.6)
|
||||||
|
$Button.mouse_exited.connect(func(): $Button.modulate.a = 0.3)
|
||||||
|
on_select = select
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func _on_button_pressed() -> void:
|
||||||
|
await animate_out()
|
||||||
|
on_select.call()
|
||||||
|
pass # Replace with function body.
|
||||||
|
|
||||||
|
func animate_in():
|
||||||
|
await get_tree().process_frame
|
||||||
|
var start_y = global_position.y + 500
|
||||||
|
var end_y = global_position.y
|
||||||
|
global_position.y = start_y
|
||||||
|
var tween = create_tween()
|
||||||
|
tween.tween_property(self, "global_position:y", end_y, 0.3).set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_QUAD)
|
||||||
|
|
||||||
|
func animate_out():
|
||||||
|
var start_y = global_position.y
|
||||||
|
var end_y = global_position.y - 500
|
||||||
|
global_position.y = start_y
|
||||||
|
var tween = create_tween()
|
||||||
|
tween.tween_property(self, "global_position:y", end_y, 0.3).set_ease(Tween.EASE_IN).set_trans(Tween.TRANS_QUAD)
|
||||||
|
await tween.finished
|
||||||
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
uid://dw5y2tp34fxys
|
||||||
|
|
@ -3,35 +3,43 @@ extends Node2D
|
||||||
@onready var witch = get_node("/root/Game/Witch")
|
@onready var witch = get_node("/root/Game/Witch")
|
||||||
@onready var player = get_node("/root/Game/Player")
|
@onready var player = get_node("/root/Game/Player")
|
||||||
var fireball = preload("res://scenes/fireball.tscn")
|
var fireball = preload("res://scenes/fireball.tscn")
|
||||||
|
var throwing_knife = preload("res://scenes/throwing_knive.tscn")
|
||||||
var cauldron
|
var cauldron
|
||||||
var available_perks: Array[Perk] = []
|
var available_perks: Array[Perk] = []
|
||||||
var fireball_aoe_enabled = false
|
var fireball_aoe_enabled = false
|
||||||
# Called when the node enters the scene tree for the first time.
|
var throwing_knife_enabled = false
|
||||||
|
var throwing_knife_cooldown: float = 2.0
|
||||||
|
var _knife_timer: float = 0.0
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
cauldron = witch.get_node("CauldronBar")
|
cauldron = witch.get_node("CauldronBar")
|
||||||
var dsh = Perk.new()
|
var dsh = Perk.new()
|
||||||
dsh.name = "Doppelter Shuriken"
|
dsh.name = "Double Shuriken"
|
||||||
dsh.description = "Wirft zwei Shurikens statt einem"
|
dsh.description = "Throw two shurikens instead of one"
|
||||||
dsh.effect = double_shuriken
|
dsh.effect = double_shuriken
|
||||||
available_perks.append(dsh)
|
available_perks.append(dsh)
|
||||||
var faoe = Perk.new()
|
var faoe = Perk.new()
|
||||||
faoe.name = "AOE-Fireball"
|
faoe.name = "AOE Fireball"
|
||||||
faoe.description = "Feuerbälle erzeugen eine Explosion bei Berührung"
|
faoe.description = "Fireballs spawn an explosion on contact"
|
||||||
faoe.effect = fireball_aoe
|
faoe.effect = fireball_aoe
|
||||||
available_perks.append(faoe)
|
available_perks.append(faoe)
|
||||||
var bexp = Perk.new()
|
var bexp = Perk.new()
|
||||||
bexp.name = "Brewing-Explosion"
|
bexp.name = "Brew Explosion"
|
||||||
bexp.description = "Die Hexe erzeugt eine Explosion am Ende des Brauens"
|
bexp.description = "The Witch casts an explosion on finishing a brew"
|
||||||
bexp.effect = brew_explosion
|
bexp.effect = brew_explosion
|
||||||
available_perks.append(bexp)
|
available_perks.append(bexp)
|
||||||
|
var tk = Perk.new()
|
||||||
|
tk.name = "Throwing Knife"
|
||||||
|
tk.description = "Automatically throw a knife at the nearest enemy every second"
|
||||||
|
tk.effect = enable_throwing_knife
|
||||||
|
available_perks.append(tk)
|
||||||
|
|
||||||
pass # Replace with function body.
|
|
||||||
|
|
||||||
|
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
||||||
func _process(delta: float) -> void:
|
func _process(delta: float) -> void:
|
||||||
pass
|
if throwing_knife_enabled:
|
||||||
|
_knife_timer += delta
|
||||||
|
if _knife_timer >= throwing_knife_cooldown:
|
||||||
|
_knife_timer = 0.0
|
||||||
|
_shoot_throwing_knife()
|
||||||
|
|
||||||
func double_shuriken():
|
func double_shuriken():
|
||||||
witch.shuriken_count = 2
|
witch.shuriken_count = 2
|
||||||
|
|
@ -42,3 +50,25 @@ func fireball_aoe():
|
||||||
func brew_explosion():
|
func brew_explosion():
|
||||||
cauldron.brew_explosion = true
|
cauldron.brew_explosion = true
|
||||||
|
|
||||||
|
func enable_throwing_knife():
|
||||||
|
throwing_knife_enabled = true
|
||||||
|
var upg = Perk.new()
|
||||||
|
upg.name = "Knife Cooldown"
|
||||||
|
upg.description = "Reduce throwing knife cooldown by 0.2s (min 1s)"
|
||||||
|
upg.effect = knife_cooldown_upgrade
|
||||||
|
available_perks.append(upg)
|
||||||
|
|
||||||
|
func knife_cooldown_upgrade():
|
||||||
|
throwing_knife_cooldown = maxf(1.0, throwing_knife_cooldown - 0.2)
|
||||||
|
if throwing_knife_cooldown > 1.0:
|
||||||
|
var upg = Perk.new()
|
||||||
|
upg.name = "Knife Cooldown"
|
||||||
|
upg.description = "Reduce throwing knife cooldown by 0.2s (min 1s)"
|
||||||
|
upg.effect = knife_cooldown_upgrade
|
||||||
|
available_perks.append(upg)
|
||||||
|
|
||||||
|
func _shoot_throwing_knife() -> void:
|
||||||
|
var knife = throwing_knife.instantiate()
|
||||||
|
knife.global_position = witch.global_position
|
||||||
|
witch.get_parent().add_child(knife)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ extends EnemyBase
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.+
|
# Called every frame. 'delta' is the elapsed time since the previous frame.+
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
super()
|
super()
|
||||||
speed = 0.1
|
speed = 15.0
|
||||||
|
|
||||||
func _process(delta: float) -> void:
|
func _process(delta: float) -> void:
|
||||||
if is_dying:
|
if is_dying:
|
||||||
|
|
|
||||||
|
|
@ -1,72 +1,117 @@
|
||||||
extends Control
|
extends Control
|
||||||
|
|
||||||
var up_left
|
var up_left: Vector2
|
||||||
var down_right
|
var down_right: Vector2
|
||||||
var up_right
|
var up_right: Vector2
|
||||||
var down_left
|
var down_left: Vector2
|
||||||
var viewport_rect
|
var elapsed_time: float = 0.0
|
||||||
var elapsed_time = 0.0
|
|
||||||
@export var spawn_entries: Array[SpawnEntry]
|
const STAGES_JSON = "res://data/spawn_stages.json"
|
||||||
|
|
||||||
|
var stages: Array[SpawnStage] = []
|
||||||
|
|
||||||
|
# _state keys: Vector2i(stage_idx, entry_idx)
|
||||||
|
# values: { "timer": float, "alive": int }
|
||||||
|
var _state: Dictionary = {}
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
var camera: Camera2D = get_parent().get_node("Camera2D")
|
var camera: Camera2D = get_parent().get_node("Camera2D")
|
||||||
var viewport_size = get_viewport_rect().size
|
var viewport_size = get_viewport_rect().size
|
||||||
var world_size = viewport_size / camera.zoom
|
var world_size = viewport_size / camera.zoom
|
||||||
var world_origin = camera.global_position # anchor_mode = 0 → top-left corner
|
var world_origin = camera.global_position
|
||||||
|
|
||||||
up_left = world_origin
|
up_left = world_origin
|
||||||
down_right = world_origin + world_size
|
down_right = world_origin + world_size
|
||||||
up_right = Vector2(down_right.x, up_left.y)
|
up_right = Vector2(down_right.x, up_left.y)
|
||||||
down_left = Vector2(up_left.x, down_right.y)
|
down_left = Vector2(up_left.x, down_right.y)
|
||||||
|
|
||||||
|
_load_stages(STAGES_JSON)
|
||||||
|
|
||||||
|
for si in stages.size():
|
||||||
|
for ei in stages[si].entries.size():
|
||||||
|
_state[Vector2i(si, ei)] = { "timer": 0.0, "alive": 0, "spawned_total": 0 }
|
||||||
|
|
||||||
|
func _load_stages(path: String) -> void:
|
||||||
|
var file = FileAccess.open(path, FileAccess.READ)
|
||||||
|
if file == null:
|
||||||
|
push_error("spawn_control: cannot open " + path)
|
||||||
|
return
|
||||||
|
var data = JSON.parse_string(file.get_as_text())
|
||||||
|
if not data is Array:
|
||||||
|
push_error("spawn_control: invalid JSON in " + path)
|
||||||
|
return
|
||||||
|
for sd in data:
|
||||||
|
var stage = SpawnStage.new()
|
||||||
|
stage.time_start = float(sd["time_start"])
|
||||||
|
stage.time_end = float(sd["time_end"])
|
||||||
|
for ed in sd["entries"]:
|
||||||
|
var entry = StageEntry.new()
|
||||||
|
entry.enemy = load(ed["enemy"])
|
||||||
|
entry.count_at_start = int(ed["count_at_start"])
|
||||||
|
entry.count_at_end = int(ed["count_at_end"])
|
||||||
|
entry.min_interval = float(ed["min_interval"])
|
||||||
|
entry.max_spawns = int(ed.get("max_spawns", -1))
|
||||||
|
stage.entries.append(entry)
|
||||||
|
stages.append(stage)
|
||||||
|
|
||||||
func get_spawn_position() -> Vector2:
|
func get_spawn_position() -> Vector2:
|
||||||
var side = randi() % 4
|
var side = randi() % 4
|
||||||
var spawn_x
|
var spawn_x: float
|
||||||
var spawn_y
|
var spawn_y: float
|
||||||
if side == 0:
|
if side == 0:
|
||||||
# oben
|
|
||||||
spawn_x = randf_range(up_left.x, up_right.x)
|
spawn_x = randf_range(up_left.x, up_right.x)
|
||||||
spawn_y = up_left.y
|
spawn_y = up_left.y
|
||||||
elif side == 1:
|
elif side == 1:
|
||||||
# rechts
|
|
||||||
spawn_x = up_right.x
|
spawn_x = up_right.x
|
||||||
spawn_y = randf_range(up_right.y, down_right.y)
|
spawn_y = randf_range(up_right.y, down_right.y)
|
||||||
elif side == 2:
|
elif side == 2:
|
||||||
#unten
|
|
||||||
spawn_x = randf_range(up_left.x, up_right.x)
|
spawn_x = randf_range(up_left.x, up_right.x)
|
||||||
spawn_y = down_left.y
|
spawn_y = down_left.y
|
||||||
elif side == 3:
|
else:
|
||||||
#links
|
|
||||||
spawn_x = up_left.x
|
spawn_x = up_left.x
|
||||||
spawn_y = randf_range(up_right.y, down_right.y)
|
spawn_y = randf_range(up_right.y, down_right.y)
|
||||||
return Vector2(spawn_x, spawn_y)
|
return Vector2(spawn_x, spawn_y)
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
||||||
func _process(delta: float) -> void:
|
func _process(delta: float) -> void:
|
||||||
elapsed_time += delta
|
elapsed_time += delta
|
||||||
pass
|
|
||||||
|
|
||||||
func spawn_enemy() -> void:
|
for si in stages.size():
|
||||||
var sum_weight = 0.0
|
var stage: SpawnStage = stages[si]
|
||||||
var available = []
|
if elapsed_time < stage.time_start:
|
||||||
for entry in spawn_entries:
|
continue
|
||||||
if entry.min_time <= elapsed_time:
|
if stage.time_end != -1.0 and elapsed_time > stage.time_end:
|
||||||
available.append(entry)
|
continue
|
||||||
sum_weight += entry.weight
|
|
||||||
var roll = randf() * sum_weight
|
var t: float
|
||||||
var winner = null
|
if stage.time_end == -1.0:
|
||||||
for entry in available:
|
t = 1.0
|
||||||
roll -= entry.weight
|
else:
|
||||||
if roll <= 0:
|
t = clamp(
|
||||||
winner = entry
|
(elapsed_time - stage.time_start) / (stage.time_end - stage.time_start),
|
||||||
break
|
0.0, 1.0
|
||||||
if winner == null:
|
)
|
||||||
return
|
|
||||||
var enemy = winner.enemy.instantiate()
|
for ei in stage.entries.size():
|
||||||
|
var entry: StageEntry = stage.entries[ei]
|
||||||
|
var state: Dictionary = _state[Vector2i(si, ei)]
|
||||||
|
|
||||||
|
if entry.max_spawns != -1 and state["spawned_total"] >= entry.max_spawns:
|
||||||
|
continue
|
||||||
|
|
||||||
|
var target: int = roundi(lerpf(float(entry.count_at_start), float(entry.count_at_end), t))
|
||||||
|
var deficit: int = target - state["alive"]
|
||||||
|
if deficit <= 0:
|
||||||
|
continue
|
||||||
|
|
||||||
|
state["timer"] -= delta
|
||||||
|
if state["timer"] <= 0.0:
|
||||||
|
state["timer"] = max(entry.min_interval, 1.0 / float(deficit))
|
||||||
|
_spawn_one(entry, state)
|
||||||
|
|
||||||
|
func _spawn_one(entry: StageEntry, state: Dictionary) -> void:
|
||||||
|
var enemy = entry.enemy.instantiate()
|
||||||
enemy.global_position = get_spawn_position()
|
enemy.global_position = get_spawn_position()
|
||||||
|
state["alive"] += 1
|
||||||
|
state["spawned_total"] += 1
|
||||||
|
enemy.tree_exited.connect(func(): state["alive"] -= 1)
|
||||||
add_child(enemy)
|
add_child(enemy)
|
||||||
|
|
||||||
|
|
||||||
func _on_spawn_timer_timeout() -> void:
|
|
||||||
spawn_enemy()
|
|
||||||
pass # Replace with function body.
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
extends ProjectileBase
|
||||||
|
|
||||||
|
var _target_enemy: Node = null
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
super()
|
||||||
|
speed = 400.0
|
||||||
|
var witch = get_node("/root/Game/Witch")
|
||||||
|
_target_enemy = witch.get_nearest_enemy(witch.global_position, _knife_filter)
|
||||||
|
if _target_enemy == null:
|
||||||
|
queue_free()
|
||||||
|
return
|
||||||
|
_target_enemy.add_to_group("knife_targeted")
|
||||||
|
tree_exiting.connect(_on_knife_exiting)
|
||||||
|
var dir = global_position.direction_to(_target_enemy.global_position)
|
||||||
|
rotation = dir.angle()
|
||||||
|
launch(_target_enemy.global_position)
|
||||||
|
|
||||||
|
func _knife_filter(enemy: Node) -> bool:
|
||||||
|
return not enemy.is_dying and not enemy.is_hurt and not enemy.is_in_group("knife_targeted")
|
||||||
|
|
||||||
|
func _on_knife_exiting() -> void:
|
||||||
|
if is_instance_valid(_target_enemy) and _target_enemy.is_in_group("knife_targeted"):
|
||||||
|
_target_enemy.remove_from_group("knife_targeted")
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
uid://dpj26ryawjq02
|
||||||
|
|
@ -43,10 +43,12 @@ func shoot_shuriken():
|
||||||
get_parent().add_child(sh)
|
get_parent().add_child(sh)
|
||||||
await get_tree().create_timer(0.2).timeout
|
await get_tree().create_timer(0.2).timeout
|
||||||
|
|
||||||
func get_nearest_enemy(from: Vector2) -> Node:
|
func get_nearest_enemy(from: Vector2, filter: Callable = Callable()) -> Node:
|
||||||
var nearest = null
|
var nearest = null
|
||||||
var min_distance = INF
|
var min_distance = INF
|
||||||
for enemy in get_tree().get_nodes_in_group("enemies"):
|
for enemy in get_tree().get_nodes_in_group("enemies"):
|
||||||
|
if filter.is_valid() and not filter.call(enemy):
|
||||||
|
continue
|
||||||
var dist = from.distance_to(enemy.global_position)
|
var dist = from.distance_to(enemy.global_position)
|
||||||
if dist < min_distance:
|
if dist < min_distance:
|
||||||
min_distance = dist
|
min_distance = dist
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue