diff --git a/.idea/.idea.Babushka/.idea/AndroidProjectSystem.xml b/.idea/.idea.Babushka/.idea/AndroidProjectSystem.xml
deleted file mode 100644
index e82600c..0000000
--- a/.idea/.idea.Babushka/.idea/AndroidProjectSystem.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Babushka.sln.DotSettings.user b/Babushka.sln.DotSettings.user
index 2de0701..349fb41 100644
--- a/Babushka.sln.DotSettings.user
+++ b/Babushka.sln.DotSettings.user
@@ -1,12 +1,15 @@
ForceIncluded
ForceIncluded
+ ForceIncluded
ForceIncluded
ForceIncluded
ForceIncluded
ForceIncluded
ForceIncluded
ForceIncluded
+ ForceIncluded
ForceIncluded
ForceIncluded
+ ForceIncluded
ForceIncluded
\ No newline at end of file
diff --git a/addons/babushkahelpers/babushka_dialogue_style.tres b/addons/babushkahelpers/babushka_dialogue_style.tres
new file mode 100644
index 0000000..ec319c2
--- /dev/null
+++ b/addons/babushkahelpers/babushka_dialogue_style.tres
@@ -0,0 +1,68 @@
+[gd_resource type="Resource" script_class="DialogicStyle" load_steps=18 format=3 uid="uid://b2fmyjrydbg57"]
+
+[ext_resource type="Script" uid="uid://dfx2htp24tuvm" path="res://addons/dialogic/Resources/dialogic_style_layer.gd" id="1_hr3vo"]
+[ext_resource type="PackedScene" uid="uid://c1k5m0w3r40xf" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.tscn" id="2_cpmol"]
+[ext_resource type="PackedScene" uid="uid://cn674foxwedqu" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/full_advance_input_layer.tscn" id="3_12uyf"]
+[ext_resource type="PackedScene" uid="uid://by6waso0mjpjp" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/textbox_with_speaker_portrait.tscn" id="4_ncyk4"]
+[ext_resource type="PackedScene" uid="uid://dsbwnp5hegnu3" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/glossary_popup_layer.tscn" id="5_qg2g4"]
+[ext_resource type="PackedScene" uid="uid://dhk6j6eb6e3q" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/vn_choice_layer.tscn" id="6_c5ex4"]
+[ext_resource type="PackedScene" uid="uid://cvgf4c6gg0tsy" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer.tscn" id="7_bopa1"]
+[ext_resource type="PackedScene" uid="uid://lx24i8fl6uo" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_layer.tscn" id="8_oycnw"]
+[ext_resource type="Script" uid="uid://b14h380mah4av" path="res://addons/dialogic/Resources/dialogic_style.gd" id="9_i6i1n"]
+
+[sub_resource type="Resource" id="Resource_w535h"]
+script = ExtResource("1_hr3vo")
+overrides = {}
+
+[sub_resource type="Resource" id="Resource_j3dy5"]
+script = ExtResource("1_hr3vo")
+scene = ExtResource("2_cpmol")
+overrides = {}
+
+[sub_resource type="Resource" id="Resource_d5o1r"]
+script = ExtResource("1_hr3vo")
+scene = ExtResource("3_12uyf")
+overrides = {}
+
+[sub_resource type="Resource" id="Resource_g7mor"]
+script = ExtResource("1_hr3vo")
+scene = ExtResource("4_ncyk4")
+overrides = {}
+
+[sub_resource type="Resource" id="Resource_wgjgg"]
+script = ExtResource("1_hr3vo")
+scene = ExtResource("5_qg2g4")
+overrides = {}
+
+[sub_resource type="Resource" id="Resource_45hxc"]
+script = ExtResource("1_hr3vo")
+scene = ExtResource("6_c5ex4")
+overrides = {}
+
+[sub_resource type="Resource" id="Resource_c53vn"]
+script = ExtResource("1_hr3vo")
+scene = ExtResource("7_bopa1")
+overrides = {}
+
+[sub_resource type="Resource" id="Resource_n6k7j"]
+script = ExtResource("1_hr3vo")
+scene = ExtResource("8_oycnw")
+overrides = {}
+
+[resource]
+script = ExtResource("9_i6i1n")
+name = "babushka_dialogue_style"
+layer_list = Array[String](["10", "11", "12", "13", "14", "15", "16"])
+layer_info = {
+"": SubResource("Resource_w535h"),
+"10": SubResource("Resource_j3dy5"),
+"11": SubResource("Resource_d5o1r"),
+"12": SubResource("Resource_g7mor"),
+"13": SubResource("Resource_wgjgg"),
+"14": SubResource("Resource_45hxc"),
+"15": SubResource("Resource_c53vn"),
+"16": SubResource("Resource_n6k7j")
+}
+base_overrides = {}
+layers = Array[ExtResource("1_hr3vo")]([])
+metadata/_latest_layer = ""
diff --git a/addons/dialogic/vesna_style.tres b/addons/dialogic/vesna_style.tres
new file mode 100644
index 0000000..89a40f3
--- /dev/null
+++ b/addons/dialogic/vesna_style.tres
@@ -0,0 +1,105 @@
+[gd_resource type="Resource" script_class="DialogicStyle" load_steps=21 format=3 uid="uid://benfqi2myyn58"]
+
+[ext_resource type="Script" uid="uid://dfx2htp24tuvm" path="res://addons/dialogic/Resources/dialogic_style_layer.gd" id="1_kc0s3"]
+[ext_resource type="PackedScene" uid="uid://c1k5m0w3r40xf" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.tscn" id="2_wjopr"]
+[ext_resource type="PackedScene" uid="uid://cy1y14inwkplb" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/vn_portrait_layer.tscn" id="3_depsi"]
+[ext_resource type="PackedScene" uid="uid://cn674foxwedqu" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/full_advance_input_layer.tscn" id="4_wy5ku"]
+[ext_resource type="PackedScene" uid="uid://bquja8jyk8kbr" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_layer.tscn" id="5_6srh5"]
+[ext_resource type="PackedScene" uid="uid://dsbwnp5hegnu3" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/glossary_popup_layer.tscn" id="6_iipq0"]
+[ext_resource type="PackedScene" uid="uid://dhk6j6eb6e3q" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/vn_choice_layer.tscn" id="7_jxwbe"]
+[ext_resource type="PackedScene" uid="uid://cvgf4c6gg0tsy" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer.tscn" id="8_4ig6v"]
+[ext_resource type="PackedScene" uid="uid://lx24i8fl6uo" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_layer.tscn" id="9_gni8k"]
+[ext_resource type="Script" uid="uid://b14h380mah4av" path="res://addons/dialogic/Resources/dialogic_style.gd" id="10_l174f"]
+
+[sub_resource type="Resource" id="Resource_qnla8"]
+script = ExtResource("1_kc0s3")
+overrides = {
+"global_bg_color": "Color(0.898039, 0.917647, 0.835294, 1)",
+"global_font_color": "Color(0.258824, 0.12549, 0.054902, 1)",
+"global_font_size": "30.0"
+}
+
+[sub_resource type="Resource" id="Resource_awdqn"]
+script = ExtResource("1_kc0s3")
+scene = ExtResource("2_wjopr")
+overrides = {}
+
+[sub_resource type="Resource" id="Resource_5pou4"]
+script = ExtResource("1_kc0s3")
+scene = ExtResource("3_depsi")
+overrides = {}
+
+[sub_resource type="Resource" id="Resource_6xrvb"]
+script = ExtResource("1_kc0s3")
+scene = ExtResource("4_wy5ku")
+overrides = {}
+
+[sub_resource type="Resource" id="Resource_k1327"]
+script = ExtResource("1_kc0s3")
+scene = ExtResource("5_6srh5")
+overrides = {
+"box_animation_in": "1",
+"box_animation_out": "1",
+"box_panel": "\"vn_textbox_default_panel.tres\"",
+"name_label_box_modulate": "Color(1, 1, 1, 1)",
+"name_label_box_panel": "\"res://dialog/Babushka_NPC_Namebox_background.tres\"",
+"name_label_custom_font_size": "30.0",
+"name_label_use_global_color": "false",
+"next_indicator_enabled": "false",
+"text_alignment": "1",
+"text_size": "40.0",
+"typing_sounds_end_sound": "\"res://audio/sfx/UI/Dialog/SFX_Dialog_Open_01.wav\"",
+"typing_sounds_sounds_folder": "\"res://audio/sfx/typing\""
+}
+
+[sub_resource type="Resource" id="Resource_qtijl"]
+script = ExtResource("1_kc0s3")
+scene = ExtResource("6_iipq0")
+overrides = {}
+
+[sub_resource type="Resource" id="Resource_nalij"]
+script = ExtResource("1_kc0s3")
+scene = ExtResource("7_jxwbe")
+overrides = {
+"font_size_custom": "30.0",
+"text_color_disabled": "Color(0.605469, 0.605469, 0.605469, 1)",
+"text_color_focused": "Color(1, 0.628906, 0.628906, 1)",
+"text_color_hovered": "Color(0.882353, 0.572549, 0.572549, 1)",
+"text_color_pressed": "Color(1, 0.882812, 0.53125, 1)",
+"text_color_use_global": "false"
+}
+
+[sub_resource type="Resource" id="Resource_ymn1b"]
+script = ExtResource("1_kc0s3")
+scene = ExtResource("8_4ig6v")
+overrides = {}
+
+[sub_resource type="Resource" id="Resource_8j3qh"]
+script = ExtResource("1_kc0s3")
+scene = ExtResource("9_gni8k")
+overrides = {}
+
+[sub_resource type="Resource" id="Resource_uu1x2"]
+script = ExtResource("1_kc0s3")
+scene = ExtResource("6_iipq0")
+overrides = {}
+
+[resource]
+script = ExtResource("10_l174f")
+name = "vesna_style"
+layer_list = Array[String](["10", "11", "12", "13", "14", "15", "16", "17", "18"])
+layer_info = {
+"": SubResource("Resource_qnla8"),
+"10": SubResource("Resource_awdqn"),
+"11": SubResource("Resource_5pou4"),
+"12": SubResource("Resource_6xrvb"),
+"13": SubResource("Resource_k1327"),
+"14": SubResource("Resource_qtijl"),
+"15": SubResource("Resource_nalij"),
+"16": SubResource("Resource_ymn1b"),
+"17": SubResource("Resource_8j3qh"),
+"18": SubResource("Resource_uu1x2")
+}
+base_overrides = {}
+layers = Array[ExtResource("1_kc0s3")]([])
+metadata/_latest_layer = "13"
diff --git a/art/farm/farming/farmobjekte/beetroot/beetroot_icon.png b/art/farm/farming/farmobjekte/beetroot/beetroot_icon.png
deleted file mode 100644
index 1adc85d..0000000
Binary files a/art/farm/farming/farmobjekte/beetroot/beetroot_icon.png and /dev/null differ
diff --git a/art/farm/farming/farmobjekte/beetroot/beetroot_template.png b/art/farm/farming/farmobjekte/beetroot/beetroot_template.png
new file mode 100644
index 0000000..9316351
Binary files /dev/null and b/art/farm/farming/farmobjekte/beetroot/beetroot_template.png differ
diff --git a/art/farm/farming/farmobjekte/beetroot/beetroot_icon.png.import b/art/farm/farming/farmobjekte/beetroot/beetroot_template.png.import
similarity index 72%
rename from art/farm/farming/farmobjekte/beetroot/beetroot_icon.png.import
rename to art/farm/farming/farmobjekte/beetroot/beetroot_template.png.import
index b844853..2af70d5 100644
--- a/art/farm/farming/farmobjekte/beetroot/beetroot_icon.png.import
+++ b/art/farm/farming/farmobjekte/beetroot/beetroot_template.png.import
@@ -2,16 +2,16 @@
importer="texture"
type="CompressedTexture2D"
-uid="uid://b5ade1s2ijunu"
-path="res://.godot/imported/beetroot_icon.png-aef760d681bd7ef4c12802c6da8d93f5.ctex"
+uid="uid://bmcs8bmwb5nti"
+path="res://.godot/imported/beetroot_template.png-fb068996df8536deae290d1895ce0ea5.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://art/farm/farming/farmobjekte/beetroot/beetroot_icon.png"
-dest_files=["res://.godot/imported/beetroot_icon.png-aef760d681bd7ef4c12802c6da8d93f5.ctex"]
+source_file="res://art/farm/farming/farmobjekte/beetroot/beetroot_template.png"
+dest_files=["res://.godot/imported/beetroot_template.png-fb068996df8536deae290d1895ce0ea5.ctex"]
[params]
diff --git a/art/farm/farming/farmobjekte/beetroot_01.png b/art/farm/farming/farmobjekte/beetroot_01.png
new file mode 100644
index 0000000..276345d
Binary files /dev/null and b/art/farm/farming/farmobjekte/beetroot_01.png differ
diff --git a/art/ui/UI/icons/icon-seed-tomatoe.png.import b/art/farm/farming/farmobjekte/beetroot_01.png.import
similarity index 66%
rename from art/ui/UI/icons/icon-seed-tomatoe.png.import
rename to art/farm/farming/farmobjekte/beetroot_01.png.import
index 25b7b20..e3fe595 100644
--- a/art/ui/UI/icons/icon-seed-tomatoe.png.import
+++ b/art/farm/farming/farmobjekte/beetroot_01.png.import
@@ -2,16 +2,16 @@
importer="texture"
type="CompressedTexture2D"
-uid="uid://ce04nexh36uwe"
-path="res://.godot/imported/icon-seed-tomatoe.png-f99f14181586ef4f8a8e12cfb3c0a0d0.ctex"
+uid="uid://diln6yxym4vsj"
+path="res://.godot/imported/beetroot_01.png-c7d0efc83156722c5a904d189bb4c09e.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://art/ui/UI/icons/icon-seed-tomatoe.png"
-dest_files=["res://.godot/imported/icon-seed-tomatoe.png-f99f14181586ef4f8a8e12cfb3c0a0d0.ctex"]
+source_file="res://art/farm/farming/farmobjekte/beetroot_01.png"
+dest_files=["res://.godot/imported/beetroot_01.png-c7d0efc83156722c5a904d189bb4c09e.ctex"]
[params]
diff --git a/art/farm/farming/farmobjekte/beetroot_01.png~ b/art/farm/farming/farmobjekte/beetroot_01.png~
new file mode 100644
index 0000000..402683b
Binary files /dev/null and b/art/farm/farming/farmobjekte/beetroot_01.png~ differ
diff --git a/art/farm/farming/farmobjekte/plant_template.png b/art/farm/farming/farmobjekte/plant_template.png
new file mode 100644
index 0000000..fd199bc
Binary files /dev/null and b/art/farm/farming/farmobjekte/plant_template.png differ
diff --git a/art/farm/farming/farmobjekte/plant_template.png.import b/art/farm/farming/farmobjekte/plant_template.png.import
new file mode 100644
index 0000000..11b5f07
--- /dev/null
+++ b/art/farm/farming/farmobjekte/plant_template.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://mrnc81ukugh6"
+path="res://.godot/imported/plant_template.png-37e6b051a10ecd9e81ba89f8794363f1.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://art/farm/farming/farmobjekte/plant_template.png"
+dest_files=["res://.godot/imported/plant_template.png-37e6b051a10ecd9e81ba89f8794363f1.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/art/farm/farming/farmobjekte/plant_template.png~ b/art/farm/farming/farmobjekte/plant_template.png~
new file mode 100644
index 0000000..b04c879
Binary files /dev/null and b/art/farm/farming/farmobjekte/plant_template.png~ differ
diff --git a/art/farm/farming/farmobjekte/tomaten/teen adulte tomaten.png b/art/farm/farming/farmobjekte/tomaten/teen adulte tomaten.png
index dde86fd..3945bbb 100644
Binary files a/art/farm/farming/farmobjekte/tomaten/teen adulte tomaten.png and b/art/farm/farming/farmobjekte/tomaten/teen adulte tomaten.png differ
diff --git a/art/farm/farming/farmobjekte/tomaten/teen adulte tomaten.png~ b/art/farm/farming/farmobjekte/tomaten/teen adulte tomaten.png~
new file mode 100644
index 0000000..dde86fd
Binary files /dev/null and b/art/farm/farming/farmobjekte/tomaten/teen adulte tomaten.png~ differ
diff --git a/art/farm/farming/farmobjekte/tomaten/tomaten_template.png b/art/farm/farming/farmobjekte/tomaten/tomaten_template.png
new file mode 100644
index 0000000..1cc150f
Binary files /dev/null and b/art/farm/farming/farmobjekte/tomaten/tomaten_template.png differ
diff --git a/art/farm/farming/farmobjekte/tomaten/tomaten_template.png.import b/art/farm/farming/farmobjekte/tomaten/tomaten_template.png.import
new file mode 100644
index 0000000..7e3c11c
--- /dev/null
+++ b/art/farm/farming/farmobjekte/tomaten/tomaten_template.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cyyxqmphcrjj"
+path="res://.godot/imported/tomaten_template.png-ec9351e1f99057077a67ecd23ac43d8c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://art/farm/farming/farmobjekte/tomaten/tomaten_template.png"
+dest_files=["res://.godot/imported/tomaten_template.png-ec9351e1f99057077a67ecd23ac43d8c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/art/farm/farming/farmobjekte/tomaten/tomaten_template.png~ b/art/farm/farming/farmobjekte/tomaten/tomaten_template.png~
new file mode 100644
index 0000000..a20ca3f
Binary files /dev/null and b/art/farm/farming/farmobjekte/tomaten/tomaten_template.png~ differ
diff --git a/art/test_tomatos.png.import b/art/test_tomatos.png.import
new file mode 100644
index 0000000..821515b
--- /dev/null
+++ b/art/test_tomatos.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b4krfobwq3r3h"
+path="res://.godot/imported/test_tomatos.png-46b768c505412676f924a2c122f4df61.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://art/test_tomatos.png"
+dest_files=["res://.godot/imported/test_tomatos.png-46b768c505412676f924a2c122f4df61.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/art/ui/UI/icons/icon-fruit-beetroot.png b/art/ui/UI/icons/icon-fruit-beetroot.png
new file mode 100644
index 0000000..50e1b98
Binary files /dev/null and b/art/ui/UI/icons/icon-fruit-beetroot.png differ
diff --git a/art/ui/UI/icons/icon-fruit-beetroot.png.import b/art/ui/UI/icons/icon-fruit-beetroot.png.import
new file mode 100644
index 0000000..0048f0a
--- /dev/null
+++ b/art/ui/UI/icons/icon-fruit-beetroot.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://djewfwrdt4iv3"
+path="res://.godot/imported/icon-fruit-beetroot.png-75fa09af63bd298716dc0f3f16587a05.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://art/ui/UI/icons/icon-fruit-beetroot.png"
+dest_files=["res://.godot/imported/icon-fruit-beetroot.png-75fa09af63bd298716dc0f3f16587a05.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/art/ui/UI/icons/icon-seed-beetroot.png b/art/ui/UI/icons/icon-seed-beetroot.png
new file mode 100644
index 0000000..ad21eb4
Binary files /dev/null and b/art/ui/UI/icons/icon-seed-beetroot.png differ
diff --git a/art/ui/UI/icons/icon-seed-beetroot.png.import b/art/ui/UI/icons/icon-seed-beetroot.png.import
new file mode 100644
index 0000000..befbc8a
--- /dev/null
+++ b/art/ui/UI/icons/icon-seed-beetroot.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b4pa77olxr14q"
+path="res://.godot/imported/icon-seed-beetroot.png-2fc33feff3be637327ca65cd50543877.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://art/ui/UI/icons/icon-seed-beetroot.png"
+dest_files=["res://.godot/imported/icon-seed-beetroot.png-2fc33feff3be637327ca65cd50543877.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/art/ui/UI/icons/icon-seed-tomato.png b/art/ui/UI/icons/icon-seed-tomato.png
new file mode 100644
index 0000000..7f456ea
Binary files /dev/null and b/art/ui/UI/icons/icon-seed-tomato.png differ
diff --git a/art/ui/UI/icons/icon-seed-tomato.png.import b/art/ui/UI/icons/icon-seed-tomato.png.import
new file mode 100644
index 0000000..d5eb484
--- /dev/null
+++ b/art/ui/UI/icons/icon-seed-tomato.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b51j84idxe7hr"
+path="res://.godot/imported/icon-seed-tomato.png-b3b4a4deb75c8279987c6b7277b3544b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://art/ui/UI/icons/icon-seed-tomato.png"
+dest_files=["res://.godot/imported/icon-seed-tomato.png-b3b4a4deb75c8279987c6b7277b3544b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/art/ui/UI/icons/icon-seed-tomatoe.png b/art/ui/UI/icons/icon-seed-tomatoe.png
deleted file mode 100644
index ac255bc..0000000
Binary files a/art/ui/UI/icons/icon-seed-tomatoe.png and /dev/null differ
diff --git a/audio/default_bus_layout.tres b/audio/default_bus_layout.tres
index 7fe0d48..0a60bf8 100644
--- a/audio/default_bus_layout.tres
+++ b/audio/default_bus_layout.tres
@@ -1,16 +1,16 @@
[gd_resource type="AudioBusLayout" format=3 uid="uid://b6dwkmkyb0axk"]
[resource]
-bus/0/volume_db = -5.93075
+bus/0/volume_db = -18.9844
bus/1/name = &"Music"
bus/1/solo = false
bus/1/mute = false
bus/1/bypass_fx = false
-bus/1/volume_db = -17.6573
+bus/1/volume_db = -8.39524
bus/1/send = &"Master"
bus/2/name = &"SFX"
bus/2/solo = false
bus/2/mute = false
bus/2/bypass_fx = false
-bus/2/volume_db = 0.0
+bus/2/volume_db = 0.267241
bus/2/send = &"Master"
diff --git a/audio/sfx/Footsteps/SFX_Footsteps_01.wav b/audio/sfx/Footsteps/Loop/SFX_Footsteps_01.wav
similarity index 100%
rename from audio/sfx/Footsteps/SFX_Footsteps_01.wav
rename to audio/sfx/Footsteps/Loop/SFX_Footsteps_01.wav
diff --git a/audio/sfx/Footsteps/Loop/SFX_Footsteps_01.wav.import b/audio/sfx/Footsteps/Loop/SFX_Footsteps_01.wav.import
new file mode 100644
index 0000000..1e8644e
--- /dev/null
+++ b/audio/sfx/Footsteps/Loop/SFX_Footsteps_01.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://bch0umdg2imsm"
+path="res://.godot/imported/SFX_Footsteps_01.wav-c91cd2c2e859f46748f268e851453a70.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Loop/SFX_Footsteps_01.wav"
+dest_files=["res://.godot/imported/SFX_Footsteps_01.wav-c91cd2c2e859f46748f268e851453a70.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/SFX_Footsteps_01_Reverb.wav b/audio/sfx/Footsteps/Loop/SFX_Footsteps_01_Reverb.wav
similarity index 100%
rename from audio/sfx/Footsteps/SFX_Footsteps_01_Reverb.wav
rename to audio/sfx/Footsteps/Loop/SFX_Footsteps_01_Reverb.wav
diff --git a/audio/sfx/Footsteps/Loop/SFX_Footsteps_01_Reverb.wav.import b/audio/sfx/Footsteps/Loop/SFX_Footsteps_01_Reverb.wav.import
new file mode 100644
index 0000000..182a8c8
--- /dev/null
+++ b/audio/sfx/Footsteps/Loop/SFX_Footsteps_01_Reverb.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://rmt3gwln5er3"
+path="res://.godot/imported/SFX_Footsteps_01_Reverb.wav-a6304ab0d6153ec55b3ba9c044774d3c.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Loop/SFX_Footsteps_01_Reverb.wav"
+dest_files=["res://.godot/imported/SFX_Footsteps_01_Reverb.wav-a6304ab0d6153ec55b3ba9c044774d3c.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/SFX_Footsteps_Gravel_01.wav b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Gravel_01.wav
similarity index 100%
rename from audio/sfx/Footsteps/SFX_Footsteps_Gravel_01.wav
rename to audio/sfx/Footsteps/Loop/SFX_Footsteps_Gravel_01.wav
diff --git a/audio/sfx/Footsteps/Loop/SFX_Footsteps_Gravel_01.wav.import b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Gravel_01.wav.import
new file mode 100644
index 0000000..61aaf3c
--- /dev/null
+++ b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Gravel_01.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://qhrohpgr45bc"
+path="res://.godot/imported/SFX_Footsteps_Gravel_01.wav-7c6ac51612b8731ddde51b7d717c9e01.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Loop/SFX_Footsteps_Gravel_01.wav"
+dest_files=["res://.godot/imported/SFX_Footsteps_Gravel_01.wav-7c6ac51612b8731ddde51b7d717c9e01.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/SFX_Footsteps_Gravel_02_Slow.wav b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Gravel_02_Slow.wav
similarity index 100%
rename from audio/sfx/Footsteps/SFX_Footsteps_Gravel_02_Slow.wav
rename to audio/sfx/Footsteps/Loop/SFX_Footsteps_Gravel_02_Slow.wav
diff --git a/audio/sfx/Footsteps/Loop/SFX_Footsteps_Gravel_02_Slow.wav.import b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Gravel_02_Slow.wav.import
new file mode 100644
index 0000000..829fb96
--- /dev/null
+++ b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Gravel_02_Slow.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://b4amxinouvd4n"
+path="res://.godot/imported/SFX_Footsteps_Gravel_02_Slow.wav-9c1afebbf12bea46192c7ace442b689b.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Loop/SFX_Footsteps_Gravel_02_Slow.wav"
+dest_files=["res://.godot/imported/SFX_Footsteps_Gravel_02_Slow.wav-9c1afebbf12bea46192c7ace442b689b.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/SFX_Footsteps_Leaves_01.wav b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Leaves_01.wav
similarity index 100%
rename from audio/sfx/Footsteps/SFX_Footsteps_Leaves_01.wav
rename to audio/sfx/Footsteps/Loop/SFX_Footsteps_Leaves_01.wav
diff --git a/audio/sfx/Footsteps/Loop/SFX_Footsteps_Leaves_01.wav.import b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Leaves_01.wav.import
new file mode 100644
index 0000000..d29f738
--- /dev/null
+++ b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Leaves_01.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://dsafp6vtc7yra"
+path="res://.godot/imported/SFX_Footsteps_Leaves_01.wav-554ab1c2aaa72bd81af776d57f42ef90.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Loop/SFX_Footsteps_Leaves_01.wav"
+dest_files=["res://.godot/imported/SFX_Footsteps_Leaves_01.wav-554ab1c2aaa72bd81af776d57f42ef90.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/SFX_Footsteps_Path_Forest_01.wav b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Path_Forest_01.wav
similarity index 100%
rename from audio/sfx/Footsteps/SFX_Footsteps_Path_Forest_01.wav
rename to audio/sfx/Footsteps/Loop/SFX_Footsteps_Path_Forest_01.wav
diff --git a/audio/sfx/Footsteps/Loop/SFX_Footsteps_Path_Forest_01.wav.import b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Path_Forest_01.wav.import
new file mode 100644
index 0000000..9d7044b
--- /dev/null
+++ b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Path_Forest_01.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://dqr5li4mapfpu"
+path="res://.godot/imported/SFX_Footsteps_Path_Forest_01.wav-97e6a4848f9146fe744234999b4bf1c5.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Loop/SFX_Footsteps_Path_Forest_01.wav"
+dest_files=["res://.godot/imported/SFX_Footsteps_Path_Forest_01.wav-97e6a4848f9146fe744234999b4bf1c5.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/SFX_Footsteps_Path_Forest_01_Reverb.wav b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Path_Forest_01_Reverb.wav
similarity index 100%
rename from audio/sfx/Footsteps/SFX_Footsteps_Path_Forest_01_Reverb.wav
rename to audio/sfx/Footsteps/Loop/SFX_Footsteps_Path_Forest_01_Reverb.wav
diff --git a/audio/sfx/Footsteps/Loop/SFX_Footsteps_Path_Forest_01_Reverb.wav.import b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Path_Forest_01_Reverb.wav.import
new file mode 100644
index 0000000..73eca6f
--- /dev/null
+++ b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Path_Forest_01_Reverb.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://dqoybnx0ues1q"
+path="res://.godot/imported/SFX_Footsteps_Path_Forest_01_Reverb.wav-dc984b00d3b1e8a515aeecdd5204bb0a.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Loop/SFX_Footsteps_Path_Forest_01_Reverb.wav"
+dest_files=["res://.godot/imported/SFX_Footsteps_Path_Forest_01_Reverb.wav-dc984b00d3b1e8a515aeecdd5204bb0a.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/SFX_Footsteps_Run_01.wav b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Run_01.wav
similarity index 100%
rename from audio/sfx/Footsteps/SFX_Footsteps_Run_01.wav
rename to audio/sfx/Footsteps/Loop/SFX_Footsteps_Run_01.wav
diff --git a/audio/sfx/Footsteps/Loop/SFX_Footsteps_Run_01.wav.import b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Run_01.wav.import
new file mode 100644
index 0000000..ff33298
--- /dev/null
+++ b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Run_01.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://isyf0pxos4fu"
+path="res://.godot/imported/SFX_Footsteps_Run_01.wav-f4d858b73e0b543c80c9f3a456be80c2.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Loop/SFX_Footsteps_Run_01.wav"
+dest_files=["res://.godot/imported/SFX_Footsteps_Run_01.wav-f4d858b73e0b543c80c9f3a456be80c2.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/SFX_Footsteps_Sand_Run_01.wav b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Sand_Run_01.wav
similarity index 100%
rename from audio/sfx/Footsteps/SFX_Footsteps_Sand_Run_01.wav
rename to audio/sfx/Footsteps/Loop/SFX_Footsteps_Sand_Run_01.wav
diff --git a/audio/sfx/Footsteps/Loop/SFX_Footsteps_Sand_Run_01.wav.import b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Sand_Run_01.wav.import
new file mode 100644
index 0000000..759634d
--- /dev/null
+++ b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Sand_Run_01.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://bf8seio4rjasb"
+path="res://.godot/imported/SFX_Footsteps_Sand_Run_01.wav-c66428d728aa429281d1aa676d7f4494.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Loop/SFX_Footsteps_Sand_Run_01.wav"
+dest_files=["res://.godot/imported/SFX_Footsteps_Sand_Run_01.wav-c66428d728aa429281d1aa676d7f4494.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/SFX_Footsteps_Stone_01.wav b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Stone_01.wav
similarity index 100%
rename from audio/sfx/Footsteps/SFX_Footsteps_Stone_01.wav
rename to audio/sfx/Footsteps/Loop/SFX_Footsteps_Stone_01.wav
diff --git a/audio/sfx/Footsteps/Loop/SFX_Footsteps_Stone_01.wav.import b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Stone_01.wav.import
new file mode 100644
index 0000000..670fd91
--- /dev/null
+++ b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Stone_01.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://cn3eqpa2wymih"
+path="res://.godot/imported/SFX_Footsteps_Stone_01.wav-07bed0dbfc4c1346a7acb3542e4f3023.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Loop/SFX_Footsteps_Stone_01.wav"
+dest_files=["res://.godot/imported/SFX_Footsteps_Stone_01.wav-07bed0dbfc4c1346a7acb3542e4f3023.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/SFX_Footsteps_Stone_02_Fast.wav b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Stone_02_Fast.wav
similarity index 100%
rename from audio/sfx/Footsteps/SFX_Footsteps_Stone_02_Fast.wav
rename to audio/sfx/Footsteps/Loop/SFX_Footsteps_Stone_02_Fast.wav
diff --git a/audio/sfx/Footsteps/Loop/SFX_Footsteps_Stone_02_Fast.wav.import b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Stone_02_Fast.wav.import
new file mode 100644
index 0000000..c2fce62
--- /dev/null
+++ b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Stone_02_Fast.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://coxdsm366o0ew"
+path="res://.godot/imported/SFX_Footsteps_Stone_02_Fast.wav-53a7bb2ee507e0fcf1f2fc809a2a6e3b.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Loop/SFX_Footsteps_Stone_02_Fast.wav"
+dest_files=["res://.godot/imported/SFX_Footsteps_Stone_02_Fast.wav-53a7bb2ee507e0fcf1f2fc809a2a6e3b.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/SFX_Footsteps_Stone_03_Slow.wav b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Stone_03_Slow.wav
similarity index 100%
rename from audio/sfx/Footsteps/SFX_Footsteps_Stone_03_Slow.wav
rename to audio/sfx/Footsteps/Loop/SFX_Footsteps_Stone_03_Slow.wav
diff --git a/audio/sfx/Footsteps/Loop/SFX_Footsteps_Stone_03_Slow.wav.import b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Stone_03_Slow.wav.import
new file mode 100644
index 0000000..b05c59e
--- /dev/null
+++ b/audio/sfx/Footsteps/Loop/SFX_Footsteps_Stone_03_Slow.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://dmuha4bwvfpih"
+path="res://.godot/imported/SFX_Footsteps_Stone_03_Slow.wav-8ff9d73cca5e99ce33894524f279dff8.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Loop/SFX_Footsteps_Stone_03_Slow.wav"
+dest_files=["res://.godot/imported/SFX_Footsteps_Stone_03_Slow.wav-8ff9d73cca5e99ce33894524f279dff8.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/SFX_Footsteps_Gravel_01.wav.asd b/audio/sfx/Footsteps/SFX_Footsteps_Gravel_01.wav.asd
new file mode 100644
index 0000000..43216ad
Binary files /dev/null and b/audio/sfx/Footsteps/SFX_Footsteps_Gravel_01.wav.asd differ
diff --git a/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_01.wav b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_01.wav
new file mode 100644
index 0000000..a00fe3f
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_01.wav differ
diff --git a/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_01.wav.import b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_01.wav.import
new file mode 100644
index 0000000..563306e
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_01.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://hm1pul4wvjxr"
+path="res://.godot/imported/SFX_Footstep_Gravel_01.wav-f2ea12d42b7051ccfcdcef18eb7067cf.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_01.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Gravel_01.wav-f2ea12d42b7051ccfcdcef18eb7067cf.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_02.wav b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_02.wav
new file mode 100644
index 0000000..18a61ba
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_02.wav differ
diff --git a/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_02.wav.import b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_02.wav.import
new file mode 100644
index 0000000..deb6fad
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_02.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://uqjnlflect0m"
+path="res://.godot/imported/SFX_Footstep_Gravel_02.wav-6e3a46d525327f6a6a81a7f2338036c4.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_02.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Gravel_02.wav-6e3a46d525327f6a6a81a7f2338036c4.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_03.wav b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_03.wav
new file mode 100644
index 0000000..c56c041
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_03.wav differ
diff --git a/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_03.wav.import b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_03.wav.import
new file mode 100644
index 0000000..e2983cc
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_03.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://c2a13ogaevpgs"
+path="res://.godot/imported/SFX_Footstep_Gravel_03.wav-8e474caa5a82624b2ffc2a4d795554bb.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_03.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Gravel_03.wav-8e474caa5a82624b2ffc2a4d795554bb.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_04.wav b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_04.wav
new file mode 100644
index 0000000..ddb30d1
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_04.wav differ
diff --git a/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_04.wav.import b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_04.wav.import
new file mode 100644
index 0000000..147c33d
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_04.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://cptf0ygsbrbuj"
+path="res://.godot/imported/SFX_Footstep_Gravel_04.wav-83c491fb4ba4f0ee4509f3acde8c54b5.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_04.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Gravel_04.wav-83c491fb4ba4f0ee4509f3acde8c54b5.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_05.wav b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_05.wav
new file mode 100644
index 0000000..cad9c5e
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_05.wav differ
diff --git a/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_05.wav.import b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_05.wav.import
new file mode 100644
index 0000000..37716e6
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_05.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://buxcxi6d6wo07"
+path="res://.godot/imported/SFX_Footstep_Gravel_05.wav-071ded09bede160653f00439a8c36ad7.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_05.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Gravel_05.wav-071ded09bede160653f00439a8c36ad7.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_06.wav b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_06.wav
new file mode 100644
index 0000000..129838e
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_06.wav differ
diff --git a/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_06.wav.import b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_06.wav.import
new file mode 100644
index 0000000..a77400e
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_06.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://nuqr6lwcjh5u"
+path="res://.godot/imported/SFX_Footstep_Gravel_06.wav-2a949816b3432dc85f973db8f999839f.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_06.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Gravel_06.wav-2a949816b3432dc85f973db8f999839f.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_07.wav b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_07.wav
new file mode 100644
index 0000000..326402d
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_07.wav differ
diff --git a/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_07.wav.import b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_07.wav.import
new file mode 100644
index 0000000..08931b1
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_07.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://djgd7rnfrkr22"
+path="res://.godot/imported/SFX_Footstep_Gravel_07.wav-7e082b0aec1afdc8eb96139b2027d3f9.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Gravel/No Reverb/SFX_Footstep_Gravel_07.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Gravel_07.wav-7e082b0aec1afdc8eb96139b2027d3f9.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_01_R.wav b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_01_R.wav
new file mode 100644
index 0000000..f718ce2
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_01_R.wav differ
diff --git a/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_01_R.wav.import b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_01_R.wav.import
new file mode 100644
index 0000000..ece6daa
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_01_R.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://ce5mxs2yrwgrh"
+path="res://.godot/imported/SFX_Footstep_Gravel_01_R.wav-28fe387ad04de3dfb1c4c4b76a7417d6.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_01_R.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Gravel_01_R.wav-28fe387ad04de3dfb1c4c4b76a7417d6.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_02_R.wav b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_02_R.wav
new file mode 100644
index 0000000..9d2f493
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_02_R.wav differ
diff --git a/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_02_R.wav.import b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_02_R.wav.import
new file mode 100644
index 0000000..2ccdb41
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_02_R.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://fihv17va3r58"
+path="res://.godot/imported/SFX_Footstep_Gravel_02_R.wav-7c04015d04012a7b1d812a76fd327db8.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_02_R.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Gravel_02_R.wav-7c04015d04012a7b1d812a76fd327db8.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_03_R.wav b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_03_R.wav
new file mode 100644
index 0000000..b3561bc
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_03_R.wav differ
diff --git a/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_03_R.wav.import b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_03_R.wav.import
new file mode 100644
index 0000000..2067408
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_03_R.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://cvvjd2i6x047n"
+path="res://.godot/imported/SFX_Footstep_Gravel_03_R.wav-4c2e5963f11a0c9a6e6af76080fbe04b.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_03_R.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Gravel_03_R.wav-4c2e5963f11a0c9a6e6af76080fbe04b.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_04_R.wav b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_04_R.wav
new file mode 100644
index 0000000..f8f9f87
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_04_R.wav differ
diff --git a/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_04_R.wav.import b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_04_R.wav.import
new file mode 100644
index 0000000..d2a5d92
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_04_R.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://dymoalptxmge"
+path="res://.godot/imported/SFX_Footstep_Gravel_04_R.wav-db13833c753bcd66104f5db6010fa57c.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_04_R.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Gravel_04_R.wav-db13833c753bcd66104f5db6010fa57c.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_05_R.wav b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_05_R.wav
new file mode 100644
index 0000000..3b2159d
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_05_R.wav differ
diff --git a/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_05_R.wav.import b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_05_R.wav.import
new file mode 100644
index 0000000..e4221fd
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_05_R.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://4555a4w30tda"
+path="res://.godot/imported/SFX_Footstep_Gravel_05_R.wav-00a83bb4edfe9d6b4339705a08a1e3e2.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_05_R.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Gravel_05_R.wav-00a83bb4edfe9d6b4339705a08a1e3e2.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_06_R.wav b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_06_R.wav
new file mode 100644
index 0000000..a7b6ee9
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_06_R.wav differ
diff --git a/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_06_R.wav.import b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_06_R.wav.import
new file mode 100644
index 0000000..b5f6d90
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_06_R.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://dpqvnogggvgea"
+path="res://.godot/imported/SFX_Footstep_Gravel_06_R.wav-9f624c4054a70ecc20780c664da46265.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_06_R.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Gravel_06_R.wav-9f624c4054a70ecc20780c664da46265.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_07_R.wav b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_07_R.wav
new file mode 100644
index 0000000..076a477
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_07_R.wav differ
diff --git a/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_07_R.wav.import b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_07_R.wav.import
new file mode 100644
index 0000000..05ec16a
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_07_R.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://c45docuhlqqme"
+path="res://.godot/imported/SFX_Footstep_Gravel_07_R.wav-178f978df9060582698e0f4687f88840.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_07_R.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Gravel_07_R.wav-178f978df9060582698e0f4687f88840.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_01.wav b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_01.wav
new file mode 100644
index 0000000..8124fa8
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_01.wav differ
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_01.wav.import b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_01.wav.import
new file mode 100644
index 0000000..65a7a01
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_01.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://di7hmg0xcuo23"
+path="res://.godot/imported/SFX_Footstep_Path_Forest_01.wav-17ecc206bd49a9a507c7ccabd93d0259.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_01.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Path_Forest_01.wav-17ecc206bd49a9a507c7ccabd93d0259.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_02.wav b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_02.wav
new file mode 100644
index 0000000..fba77f4
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_02.wav differ
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_02.wav.import b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_02.wav.import
new file mode 100644
index 0000000..95c16e0
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_02.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://ddyeknx3up57s"
+path="res://.godot/imported/SFX_Footstep_Path_Forest_02.wav-37ec9dc2e6d5f87770bd842ed3a3a622.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_02.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Path_Forest_02.wav-37ec9dc2e6d5f87770bd842ed3a3a622.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_03.wav b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_03.wav
new file mode 100644
index 0000000..1fe16c6
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_03.wav differ
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_03.wav.import b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_03.wav.import
new file mode 100644
index 0000000..b0bd871
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_03.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://woq2lt336s2j"
+path="res://.godot/imported/SFX_Footstep_Path_Forest_03.wav-5fbfe573cbd74b05115e32f08dc57671.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_03.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Path_Forest_03.wav-5fbfe573cbd74b05115e32f08dc57671.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_04.wav b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_04.wav
new file mode 100644
index 0000000..711c303
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_04.wav differ
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_04.wav.import b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_04.wav.import
new file mode 100644
index 0000000..fe35cbd
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_04.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://cf2mte8nkh3q7"
+path="res://.godot/imported/SFX_Footstep_Path_Forest_04.wav-9eaa38ff09c0864cb2b39ed83b9074ca.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_04.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Path_Forest_04.wav-9eaa38ff09c0864cb2b39ed83b9074ca.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_05.wav b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_05.wav
new file mode 100644
index 0000000..e6868f1
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_05.wav differ
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_05.wav.import b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_05.wav.import
new file mode 100644
index 0000000..c9ba64e
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_05.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://crvtmfnh4eq7x"
+path="res://.godot/imported/SFX_Footstep_Path_Forest_05.wav-22c960d8c4abf464621840367f9ad1db.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_05.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Path_Forest_05.wav-22c960d8c4abf464621840367f9ad1db.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_06.wav b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_06.wav
new file mode 100644
index 0000000..bbea8a1
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_06.wav differ
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_06.wav.import b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_06.wav.import
new file mode 100644
index 0000000..966a3b2
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_06.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://bg27srgckakgq"
+path="res://.godot/imported/SFX_Footstep_Path_Forest_06.wav-be7aaacdb84fa31234285412a9ba2828.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_06.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Path_Forest_06.wav-be7aaacdb84fa31234285412a9ba2828.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_07.wav b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_07.wav
new file mode 100644
index 0000000..0354fb6
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_07.wav differ
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_07.wav.import b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_07.wav.import
new file mode 100644
index 0000000..141c760
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_07.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://drlnpipt5h3ew"
+path="res://.godot/imported/SFX_Footstep_Path_Forest_07.wav-8a6682f6d4f7043537f9d4abb0e02e05.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Path/Forest/No Reverb/SFX_Footstep_Path_Forest_07.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Path_Forest_07.wav-8a6682f6d4f7043537f9d4abb0e02e05.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_01_R.wav b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_01_R.wav
new file mode 100644
index 0000000..e25037b
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_01_R.wav differ
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_01_R.wav.import b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_01_R.wav.import
new file mode 100644
index 0000000..89a6eae
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_01_R.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://it0uk6e3yiga"
+path="res://.godot/imported/SFX_Footstep_Path_Forest_01_R.wav-bcac6a727c6c99b0fad26b3ad68ff63b.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_01_R.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Path_Forest_01_R.wav-bcac6a727c6c99b0fad26b3ad68ff63b.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_02_R.wav b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_02_R.wav
new file mode 100644
index 0000000..af6908c
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_02_R.wav differ
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_02_R.wav.import b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_02_R.wav.import
new file mode 100644
index 0000000..c4e2e1d
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_02_R.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://boqptp2a1yg5a"
+path="res://.godot/imported/SFX_Footstep_Path_Forest_02_R.wav-805914fa123cc82d6bf4169491467caa.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_02_R.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Path_Forest_02_R.wav-805914fa123cc82d6bf4169491467caa.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_03_R.wav b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_03_R.wav
new file mode 100644
index 0000000..7fbc73e
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_03_R.wav differ
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_03_R.wav.import b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_03_R.wav.import
new file mode 100644
index 0000000..2631842
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_03_R.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://dmj8fk2nkwrhr"
+path="res://.godot/imported/SFX_Footstep_Path_Forest_03_R.wav-8e484a404a40051b85d4bb9f10eacab1.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_03_R.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Path_Forest_03_R.wav-8e484a404a40051b85d4bb9f10eacab1.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_04_R.wav b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_04_R.wav
new file mode 100644
index 0000000..b6a2ddc
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_04_R.wav differ
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_04_R.wav.import b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_04_R.wav.import
new file mode 100644
index 0000000..816163b
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_04_R.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://c6dyoy0jschdo"
+path="res://.godot/imported/SFX_Footstep_Path_Forest_04_R.wav-239aafc715f839dc51874a122a415abe.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_04_R.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Path_Forest_04_R.wav-239aafc715f839dc51874a122a415abe.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_05_R.wav b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_05_R.wav
new file mode 100644
index 0000000..ae4f36c
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_05_R.wav differ
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_05_R.wav.import b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_05_R.wav.import
new file mode 100644
index 0000000..1ec50d4
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_05_R.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://7nojc2luj6gg"
+path="res://.godot/imported/SFX_Footstep_Path_Forest_05_R.wav-a069b122059672e1f4fedb6e2216791e.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_05_R.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Path_Forest_05_R.wav-a069b122059672e1f4fedb6e2216791e.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_06_R.wav b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_06_R.wav
new file mode 100644
index 0000000..00ce426
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_06_R.wav differ
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_06_R.wav.import b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_06_R.wav.import
new file mode 100644
index 0000000..6ec936e
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_06_R.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://dmpu73yenookn"
+path="res://.godot/imported/SFX_Footstep_Path_Forest_06_R.wav-635c2aa95db4a10e59f1b54349a061e9.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_06_R.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Path_Forest_06_R.wav-635c2aa95db4a10e59f1b54349a061e9.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_07_R.wav b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_07_R.wav
new file mode 100644
index 0000000..9a79bac
Binary files /dev/null and b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_07_R.wav differ
diff --git a/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_07_R.wav.import b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_07_R.wav.import
new file mode 100644
index 0000000..879f7a6
--- /dev/null
+++ b/audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_07_R.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://burqjxw3yqdkv"
+path="res://.godot/imported/SFX_Footstep_Path_Forest_07_R.wav-ce7afa0e3049af1b7522d15501cc8846.sample"
+
+[deps]
+
+source_file="res://audio/sfx/Footsteps/Single/Path/Forest/Reverb/SFX_Footstep_Path_Forest_07_R.wav"
+dest_files=["res://.godot/imported/SFX_Footstep_Path_Forest_07_R.wav-ce7afa0e3049af1b7522d15501cc8846.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/audio/sfx/SFX_TwigBreaking_01.mp3.import b/audio/sfx/SFX_TwigBreaking_01.mp3.import
index db635ba..ce2590f 100644
--- a/audio/sfx/SFX_TwigBreaking_01.mp3.import
+++ b/audio/sfx/SFX_TwigBreaking_01.mp3.import
@@ -13,7 +13,7 @@ dest_files=["res://.godot/imported/SFX_TwigBreaking_01.mp3-8a8846649968a8e0f8e9b
[params]
loop=false
-loop_offset=0
-bpm=0
+loop_offset=0.0
+bpm=0.0
beat_count=0
bar_beats=4
diff --git a/audio/sfx/SFX_Typing_Single_01.wav b/audio/sfx/typing/SFX_Typing_Single_01.wav
similarity index 100%
rename from audio/sfx/SFX_Typing_Single_01.wav
rename to audio/sfx/typing/SFX_Typing_Single_01.wav
diff --git a/audio/sfx/SFX_Typing_Single_01.wav.import b/audio/sfx/typing/SFX_Typing_Single_01.wav.import
similarity index 51%
rename from audio/sfx/SFX_Typing_Single_01.wav.import
rename to audio/sfx/typing/SFX_Typing_Single_01.wav.import
index 7ffd9dd..d3f8a9a 100644
--- a/audio/sfx/SFX_Typing_Single_01.wav.import
+++ b/audio/sfx/typing/SFX_Typing_Single_01.wav.import
@@ -3,12 +3,12 @@
importer="wav"
type="AudioStreamWAV"
uid="uid://dqcbuu7prfbnq"
-path="res://.godot/imported/SFX_Typing_Single_01.wav-964e38c5174352aeed44b4107319ee9e.sample"
+path="res://.godot/imported/SFX_Typing_Single_01.wav-ec6d960b919de8fef456fdea8bea2177.sample"
[deps]
-source_file="res://audio/sfx/SFX_Typing_Single_01.wav"
-dest_files=["res://.godot/imported/SFX_Typing_Single_01.wav-964e38c5174352aeed44b4107319ee9e.sample"]
+source_file="res://audio/sfx/typing/SFX_Typing_Single_01.wav"
+dest_files=["res://.godot/imported/SFX_Typing_Single_01.wav-ec6d960b919de8fef456fdea8bea2177.sample"]
[params]
diff --git a/audio/sfx/SFX_Typing_Single_02.wav b/audio/sfx/typing/SFX_Typing_Single_02.wav
similarity index 100%
rename from audio/sfx/SFX_Typing_Single_02.wav
rename to audio/sfx/typing/SFX_Typing_Single_02.wav
diff --git a/audio/sfx/SFX_Typing_Single_02.wav.import b/audio/sfx/typing/SFX_Typing_Single_02.wav.import
similarity index 51%
rename from audio/sfx/SFX_Typing_Single_02.wav.import
rename to audio/sfx/typing/SFX_Typing_Single_02.wav.import
index 6a2c8d9..1d6373e 100644
--- a/audio/sfx/SFX_Typing_Single_02.wav.import
+++ b/audio/sfx/typing/SFX_Typing_Single_02.wav.import
@@ -3,12 +3,12 @@
importer="wav"
type="AudioStreamWAV"
uid="uid://dgxy8lhauxtvw"
-path="res://.godot/imported/SFX_Typing_Single_02.wav-443a7aa27fceae83c3f53b303093a96c.sample"
+path="res://.godot/imported/SFX_Typing_Single_02.wav-e1fb3fece74c791ab8138a4c131776dd.sample"
[deps]
-source_file="res://audio/sfx/SFX_Typing_Single_02.wav"
-dest_files=["res://.godot/imported/SFX_Typing_Single_02.wav-443a7aa27fceae83c3f53b303093a96c.sample"]
+source_file="res://audio/sfx/typing/SFX_Typing_Single_02.wav"
+dest_files=["res://.godot/imported/SFX_Typing_Single_02.wav-e1fb3fece74c791ab8138a4c131776dd.sample"]
[params]
diff --git a/audio/sfx/SFX_Typing_Single_03.wav b/audio/sfx/typing/SFX_Typing_Single_03.wav
similarity index 100%
rename from audio/sfx/SFX_Typing_Single_03.wav
rename to audio/sfx/typing/SFX_Typing_Single_03.wav
diff --git a/audio/sfx/SFX_Typing_Single_03.wav.import b/audio/sfx/typing/SFX_Typing_Single_03.wav.import
similarity index 51%
rename from audio/sfx/SFX_Typing_Single_03.wav.import
rename to audio/sfx/typing/SFX_Typing_Single_03.wav.import
index 19deea4..59635d6 100644
--- a/audio/sfx/SFX_Typing_Single_03.wav.import
+++ b/audio/sfx/typing/SFX_Typing_Single_03.wav.import
@@ -3,12 +3,12 @@
importer="wav"
type="AudioStreamWAV"
uid="uid://buxdceyvmqd68"
-path="res://.godot/imported/SFX_Typing_Single_03.wav-8365036b9c1cc04c0ff6cc3ca3c8c12e.sample"
+path="res://.godot/imported/SFX_Typing_Single_03.wav-dddcdf1baa4c63b9ca3bc0c14f2c5d2e.sample"
[deps]
-source_file="res://audio/sfx/SFX_Typing_Single_03.wav"
-dest_files=["res://.godot/imported/SFX_Typing_Single_03.wav-8365036b9c1cc04c0ff6cc3ca3c8c12e.sample"]
+source_file="res://audio/sfx/typing/SFX_Typing_Single_03.wav"
+dest_files=["res://.godot/imported/SFX_Typing_Single_03.wav-dddcdf1baa4c63b9ca3bc0c14f2c5d2e.sample"]
[params]
diff --git a/audio/sfx/SFX_Typing_Single_04.wav b/audio/sfx/typing/SFX_Typing_Single_04.wav
similarity index 100%
rename from audio/sfx/SFX_Typing_Single_04.wav
rename to audio/sfx/typing/SFX_Typing_Single_04.wav
diff --git a/audio/sfx/SFX_Typing_Single_04.wav.import b/audio/sfx/typing/SFX_Typing_Single_04.wav.import
similarity index 51%
rename from audio/sfx/SFX_Typing_Single_04.wav.import
rename to audio/sfx/typing/SFX_Typing_Single_04.wav.import
index 2e8ed2c..e9d9151 100644
--- a/audio/sfx/SFX_Typing_Single_04.wav.import
+++ b/audio/sfx/typing/SFX_Typing_Single_04.wav.import
@@ -3,12 +3,12 @@
importer="wav"
type="AudioStreamWAV"
uid="uid://2ktr6rikm3jl"
-path="res://.godot/imported/SFX_Typing_Single_04.wav-764c240d5e06802e783d71b97a715dff.sample"
+path="res://.godot/imported/SFX_Typing_Single_04.wav-6ab9917f5555b5f9929d12033fdd44c7.sample"
[deps]
-source_file="res://audio/sfx/SFX_Typing_Single_04.wav"
-dest_files=["res://.godot/imported/SFX_Typing_Single_04.wav-764c240d5e06802e783d71b97a715dff.sample"]
+source_file="res://audio/sfx/typing/SFX_Typing_Single_04.wav"
+dest_files=["res://.godot/imported/SFX_Typing_Single_04.wav-6ab9917f5555b5f9929d12033fdd44c7.sample"]
[params]
diff --git a/audio/sfx/SFX_Typing_Single_05.wav b/audio/sfx/typing/SFX_Typing_Single_05.wav
similarity index 100%
rename from audio/sfx/SFX_Typing_Single_05.wav
rename to audio/sfx/typing/SFX_Typing_Single_05.wav
diff --git a/audio/sfx/SFX_Typing_Single_05.wav.import b/audio/sfx/typing/SFX_Typing_Single_05.wav.import
similarity index 51%
rename from audio/sfx/SFX_Typing_Single_05.wav.import
rename to audio/sfx/typing/SFX_Typing_Single_05.wav.import
index 588d84c..016e879 100644
--- a/audio/sfx/SFX_Typing_Single_05.wav.import
+++ b/audio/sfx/typing/SFX_Typing_Single_05.wav.import
@@ -3,12 +3,12 @@
importer="wav"
type="AudioStreamWAV"
uid="uid://bijpyqwuxlqqe"
-path="res://.godot/imported/SFX_Typing_Single_05.wav-eeab3b806be7ba846c330907fb731892.sample"
+path="res://.godot/imported/SFX_Typing_Single_05.wav-a6e837201d0da4aa141a7a107f70b355.sample"
[deps]
-source_file="res://audio/sfx/SFX_Typing_Single_05.wav"
-dest_files=["res://.godot/imported/SFX_Typing_Single_05.wav-eeab3b806be7ba846c330907fb731892.sample"]
+source_file="res://audio/sfx/typing/SFX_Typing_Single_05.wav"
+dest_files=["res://.godot/imported/SFX_Typing_Single_05.wav-a6e837201d0da4aa141a7a107f70b355.sample"]
[params]
diff --git a/audio/sfx/SFX_Typing_Single_06.wav b/audio/sfx/typing/SFX_Typing_Single_06.wav
similarity index 100%
rename from audio/sfx/SFX_Typing_Single_06.wav
rename to audio/sfx/typing/SFX_Typing_Single_06.wav
diff --git a/audio/sfx/SFX_Typing_Single_06.wav.import b/audio/sfx/typing/SFX_Typing_Single_06.wav.import
similarity index 51%
rename from audio/sfx/SFX_Typing_Single_06.wav.import
rename to audio/sfx/typing/SFX_Typing_Single_06.wav.import
index f97e5e2..759e350 100644
--- a/audio/sfx/SFX_Typing_Single_06.wav.import
+++ b/audio/sfx/typing/SFX_Typing_Single_06.wav.import
@@ -3,12 +3,12 @@
importer="wav"
type="AudioStreamWAV"
uid="uid://ci2y37lxa8x54"
-path="res://.godot/imported/SFX_Typing_Single_06.wav-68a4fb43f26984fd33687883098549ed.sample"
+path="res://.godot/imported/SFX_Typing_Single_06.wav-916ff9e458c406a882bb59ada481d859.sample"
[deps]
-source_file="res://audio/sfx/SFX_Typing_Single_06.wav"
-dest_files=["res://.godot/imported/SFX_Typing_Single_06.wav-68a4fb43f26984fd33687883098549ed.sample"]
+source_file="res://audio/sfx/typing/SFX_Typing_Single_06.wav"
+dest_files=["res://.godot/imported/SFX_Typing_Single_06.wav-916ff9e458c406a882bb59ada481d859.sample"]
[params]
diff --git a/dialog/Characters/Chuga.dch b/dialog/Characters/Chuga.dch
index ebd1048..8473584 100644
--- a/dialog/Characters/Chuga.dch
+++ b/dialog/Characters/Chuga.dch
@@ -5,8 +5,19 @@
&"color": Color(1, 1, 1, 1),
&"custom_info": {
"sound_mood_default": "",
-"sound_moods": {},
-"style": ""
+"sound_moods": {
+"Mood 1": {
+"mode": 0,
+"name": "Mood 1",
+"pitch_base": 1.0,
+"pitch_variance": 0.0,
+"skip_characters": 0.0,
+"sound_path": "res://audio/sfx/typing",
+"volume_base": 0.0,
+"volume_variance": 0.0
+}
+},
+"style": "NPC_narrative"
},
&"default_portrait": "_tmp",
&"description": "helpful spirit forest",
diff --git a/dialog/Characters/Domovoi.dch b/dialog/Characters/Domovoi.dch
index 806636a..a6e0b5d 100644
--- a/dialog/Characters/Domovoi.dch
+++ b/dialog/Characters/Domovoi.dch
@@ -5,8 +5,19 @@
&"color": Color(1, 1, 1, 1),
&"custom_info": {
"sound_mood_default": "",
-"sound_moods": {},
-"style": ""
+"sound_moods": {
+"Mood 1": {
+"mode": 0,
+"name": "Mood 1",
+"pitch_base": 1.0,
+"pitch_variance": 0.0,
+"skip_characters": 0.0,
+"sound_path": "res://audio/sfx/typing",
+"volume_base": 0.0,
+"volume_variance": 0.0
+}
+},
+"style": "NPC_narrative"
},
&"default_portrait": "",
&"description": "Yeli's Domovoi",
diff --git a/dialog/Characters/Everyone.dch b/dialog/Characters/Everyone.dch
index e0a035c..fab01e8 100644
--- a/dialog/Characters/Everyone.dch
+++ b/dialog/Characters/Everyone.dch
@@ -5,8 +5,19 @@
&"color": Color(1, 1, 1, 1),
&"custom_info": {
"sound_mood_default": "",
-"sound_moods": {},
-"style": ""
+"sound_moods": {
+"Mood 1": {
+"mode": 0,
+"name": "Mood 1",
+"pitch_base": 1.0,
+"pitch_variance": 0.0,
+"skip_characters": 0.0,
+"sound_path": "res://audio/sfx/typing",
+"volume_base": 0.0,
+"volume_variance": 0.0
+}
+},
+"style": "NPC_narrative"
},
&"default_portrait": "",
&"description": "",
diff --git a/dialog/Characters/Yeli.dch b/dialog/Characters/Yeli.dch
index 4703cab..ab31057 100644
--- a/dialog/Characters/Yeli.dch
+++ b/dialog/Characters/Yeli.dch
@@ -12,7 +12,7 @@
"pitch_base": 1.0,
"pitch_variance": 0.0,
"skip_characters": 0.0,
-"sound_path": "",
+"sound_path": "res://audio/sfx/typing",
"volume_base": 0.0,
"volume_variance": 0.0
}
@@ -42,7 +42,8 @@
"mirror": false,
"offset": Vector2(0, 0),
"scale": 1,
-"scene": ""
+"scene": "",
+"sound_mood": "Mood 1"
},
"_part_side": {
"export_overrides": {
diff --git a/dialog/Characters/vesna.dch b/dialog/Characters/vesna.dch
index e452b0c..820a91f 100644
--- a/dialog/Characters/vesna.dch
+++ b/dialog/Characters/vesna.dch
@@ -17,7 +17,7 @@
"volume_variance": 0.0
}
},
-"style": "NPC_narrative"
+"style": "vesna_style"
},
&"default_portrait": "front",
&"description": "The main character. ",
diff --git a/dialog/NPC_narrative.tres b/dialog/NPC_narrative.tres
index 32487a3..8d2e8b1 100644
--- a/dialog/NPC_narrative.tres
+++ b/dialog/NPC_narrative.tres
@@ -1,6 +1,7 @@
-[gd_resource type="Resource" script_class="DialogicStyle" load_steps=21 format=3 uid="uid://f7q6jac5tsk8"]
+[gd_resource type="Resource" script_class="DialogicStyle" load_steps=22 format=3 uid="uid://f7q6jac5tsk8"]
[ext_resource type="Script" uid="uid://dfx2htp24tuvm" path="res://addons/dialogic/Resources/dialogic_style_layer.gd" id="1_0jwhi"]
+[ext_resource type="PackedScene" uid="uid://cqpb3ie51rwl5" path="res://addons/dialogic/Modules/DefaultLayoutParts/Base_Default/default_layout_base.tscn" id="1_8wrfq"]
[ext_resource type="PackedScene" uid="uid://c1k5m0w3r40xf" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.tscn" id="2_8wrfq"]
[ext_resource type="PackedScene" uid="uid://cy1y14inwkplb" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/vn_portrait_layer.tscn" id="3_t7aeg"]
[ext_resource type="PackedScene" uid="uid://cn674foxwedqu" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/full_advance_input_layer.tscn" id="4_85y6g"]
@@ -13,6 +14,7 @@
[sub_resource type="Resource" id="Resource_wg0yj"]
script = ExtResource("1_0jwhi")
+scene = ExtResource("1_8wrfq")
overrides = {
"global_bg_color": "Color(0.898375, 0.917922, 0.835355, 1)",
"global_font_color": "Color(0.257812, 0.125248, 0.0533752, 1)",
@@ -47,8 +49,10 @@ overrides = {
"name_label_custom_font_size": "30.0",
"name_label_use_global_color": "false",
"next_indicator_enabled": "false",
+"text_alignment": "1",
"text_size": "40.0",
-"typing_sounds_end_sound": "\"res://audio/sfx/UI/Dialog/SFX_Dialog_Open_01.wav\""
+"typing_sounds_end_sound": "\"res://audio/sfx/UI/Dialog/SFX_Dialog_Open_01.wav\"",
+"typing_sounds_sounds_folder": "\"res://audio/sfx/typing\""
}
[sub_resource type="Resource" id="Resource_clhbu"]
@@ -101,4 +105,4 @@ layer_info = {
}
base_overrides = {}
layers = Array[ExtResource("1_0jwhi")]([])
-metadata/_latest_layer = "15"
+metadata/_latest_layer = "13"
diff --git a/dialog/Scene1_farm_outside/yeli_intro_05.dtl b/dialog/Scene1_farm_outside/yeli_intro_05.dtl
index 2daadc0..e1037f1 100644
--- a/dialog/Scene1_farm_outside/yeli_intro_05.dtl
+++ b/dialog/Scene1_farm_outside/yeli_intro_05.dtl
@@ -1,5 +1,5 @@
[quest_complete quest_resource="res://resources/quests/demo/7_talk_yeli_inside_1.tres"]
-join Yeli center
+join Yeli right
Yeli: Thank you for your help out there.
Yeli: You must be tired. Please rest. I prepared a bed for you. It's in the room to the left.
Yeli: There is nothing interesting to see here.
diff --git a/dialog/Scene2_farm_inside/quest4_dinner.dtl b/dialog/Scene2_farm_inside/quest4_dinner.dtl
index e40074e..dbbc8d6 100644
--- a/dialog/Scene2_farm_inside/quest4_dinner.dtl
+++ b/dialog/Scene2_farm_inside/quest4_dinner.dtl
@@ -1,5 +1,5 @@
-join Yeli center
-join vesna center
+join Yeli right
+join vesna left
Everyone: Smachnoho!
vesna: Lovely soup, Yeli!
Yeli (_part_side): God bless you, my child! That’s also thanks to you.
diff --git a/dialog/quests/beetroot/quest3_beets_end.dtl b/dialog/quests/beetroot/quest3_beets_end.dtl
index 0dcdbf2..c67accf 100644
--- a/dialog/quests/beetroot/quest3_beets_end.dtl
+++ b/dialog/quests/beetroot/quest3_beets_end.dtl
@@ -1,5 +1,5 @@
-join Yeli center
-join vesna center
+join Yeli right
+join vesna left
Yeli (_part_side): Wow! So many?
Yeli (_part_side): Good job! Put it in the kettle!
[wait_input]
diff --git a/dialog/quests/beetroot/quest3_beets_interim.dtl b/dialog/quests/beetroot/quest3_beets_interim.dtl
index 4292adc..66eb447 100644
--- a/dialog/quests/beetroot/quest3_beets_interim.dtl
+++ b/dialog/quests/beetroot/quest3_beets_interim.dtl
@@ -1,4 +1,4 @@
-join vesna center
+join vesna left
join Domovoi center
vesna: Oh no, most of the beets aren’t ripe yet.
Domovoi: Pssss!
diff --git a/dialog/quests/ducks/quest1_ducks_end.dtl b/dialog/quests/ducks/quest1_ducks_end.dtl
index a4bf76a..ccc9445 100644
--- a/dialog/quests/ducks/quest1_ducks_end.dtl
+++ b/dialog/quests/ducks/quest1_ducks_end.dtl
@@ -1,5 +1,5 @@
-join vesna center
+join vesna left
[quest_complete quest_resource="res://resources/quests/demo/2_collect_ducks.tres"]
-That’s the last one. I should get back to Yeli.
+vesna: That’s the last one. I should get back to Yeli.
[quest_activate quest_resource="res://resources/quests/demo/3_talk_yeli_2.tres"]
[end_timeline]
diff --git a/dialog/quests/forest/quest5_forest_end.dtl b/dialog/quests/forest/quest5_forest_end.dtl
index 6ba59d5..27cfc4f 100644
--- a/dialog/quests/forest/quest5_forest_end.dtl
+++ b/dialog/quests/forest/quest5_forest_end.dtl
@@ -1,6 +1,6 @@
-join Chuga center
+join Chuga left
Chuga: I believe you’ve seen enough for today.
Chuga: And yes, you too.
-vesna: Thank you for playing!
+Chuga: Thank you for playing!
do SceneTransition.ChangeSceneToFileThreaded("res://scenes/Babushka_scene_credits.tscn")
[end_timeline]
diff --git a/dialog/quests/forest/quest5_forest_start.dtl b/dialog/quests/forest/quest5_forest_start.dtl
index 5c78e6f..b8ddf8e 100644
--- a/dialog/quests/forest/quest5_forest_start.dtl
+++ b/dialog/quests/forest/quest5_forest_start.dtl
@@ -1,6 +1,6 @@
[quest_complete quest_resource="res://resources/quests/demo/9_talk_to_chuga.tres"]
-join vesna center
-join Chuga center
+join vesna left
+join Chuga right
Chuga: Look who it is!
vesna: Your name was Chuga, right? I want to go to the forest!
Chuga: To the forest? After everything the others told you?
diff --git a/dialog/quests/tomatoes/quest2_tomatoes_end.dtl b/dialog/quests/tomatoes/quest2_tomatoes_end.dtl
index 3b6d971..7c061ae 100644
--- a/dialog/quests/tomatoes/quest2_tomatoes_end.dtl
+++ b/dialog/quests/tomatoes/quest2_tomatoes_end.dtl
@@ -1,4 +1,4 @@
-join vesna center
+join vesna left
vesna: I just wish I liked tomatoes more.
vesna: Well…Yeli probably started with the cooking. I should go inside.
[end_timeline]
diff --git a/dialog/quests/tomatoes/quest2_tomatoes_start.dtl b/dialog/quests/tomatoes/quest2_tomatoes_start.dtl
index d1878bd..c3e9f03 100644
--- a/dialog/quests/tomatoes/quest2_tomatoes_start.dtl
+++ b/dialog/quests/tomatoes/quest2_tomatoes_start.dtl
@@ -1,5 +1,5 @@
-join Yeli center
-join vesna center
+join Yeli right
+join vesna left
[quest_complete quest_resource="res://resources/quests/demo/3_talk_yeli_2.tres"]
Yeli (_part_side): Thank you, my child! Your Yeli is not so agile anymore.
vesna: But you’re diligent! You’ve started with the preparation for dinner.
diff --git a/dialog/yeli_quest_select.dtl b/dialog/yeli_quest_select.dtl
index 773a607..c98e172 100644
--- a/dialog/yeli_quest_select.dtl
+++ b/dialog/yeli_quest_select.dtl
@@ -7,4 +7,8 @@ ifquest res://resources/quests/demo/3_talk_yeli_2.tres, 1:
ifquest res://resources/quests/demo/5_talk_yeli_3.tres, 1:
jump quest2_tomatoes_interim/
[end_timeline]
-No Dialog for active quest "{ACTIVEQUEST}"
+ifquest res://resources/quests/demo/2_collect_ducks.tres, 1:
+ join Yeli right
+ Yeli: Have you collected all the ducks yet?
+ [end_timeline]
+Yeli doesn't seem to have anything to say...
diff --git a/export_presets.cfg b/export_presets.cfg
index 408bddd..7a58afc 100644
--- a/export_presets.cfg
+++ b/export_presets.cfg
@@ -9,7 +9,7 @@ custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
-export_path="_builds/Babushka_showcase_win_04/Babushka.exe"
+export_path="_builds/Babushka_win_0_5/Babushka.exe"
patches=PackedStringArray()
encryption_include_filters=""
encryption_exclude_filters=""
@@ -79,7 +79,7 @@ custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
-export_path="_builds/Babushka_showcase_lux_04/Babushka.x86_64"
+export_path="_builds/Babushka_linux_0_5/Babushka.x86_64"
patches=PackedStringArray()
encryption_include_filters=""
encryption_exclude_filters=""
diff --git a/prefabs/Interactables/inventory_dependent_interactable_test.tscn b/prefabs/Interactables/inventory_dependent_interactable_test.tscn
new file mode 100644
index 0000000..ae82d35
--- /dev/null
+++ b/prefabs/Interactables/inventory_dependent_interactable_test.tscn
@@ -0,0 +1,19 @@
+[gd_scene load_steps=5 format=3 uid="uid://bs4t0t7o4jmam"]
+
+[ext_resource type="Script" uid="uid://doxr432r22dd0" path="res://scripts/CSharp/Common/Items/InventoryDependentInteractable.cs" id="1_cu47d"]
+[ext_resource type="Resource" uid="uid://cndd64batns31" path="res://resources/items/wateringcan.tres" id="2_s5peo"]
+[ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="3_wsetd"]
+[ext_resource type="Texture2D" uid="uid://bleimj6jr1jka" path="res://art/general/rectangle.png" id="4_1dub8"]
+
+[node name="InventoryDependentInteractableTest" type="Node2D" node_paths=PackedStringArray("_interactionArea")]
+script = ExtResource("1_cu47d")
+_interactionArea = NodePath("InteractionArea")
+_itemsToReactTo = Array[Object]([ExtResource("2_s5peo")])
+
+[node name="InteractionArea" parent="." node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("3_wsetd")]
+_active = false
+_spriteToOutline = NodePath("../Sprite2D")
+
+[node name="Sprite2D" type="Sprite2D" parent="."]
+scale = Vector2(0.5, 0.5)
+texture = ExtResource("4_1dub8")
diff --git a/prefabs/Interactables/trash_object.tscn b/prefabs/Interactables/trash_object.tscn
index 9cd511d..190183e 100644
--- a/prefabs/Interactables/trash_object.tscn
+++ b/prefabs/Interactables/trash_object.tscn
@@ -1,7 +1,8 @@
-[gd_scene load_steps=15 format=3 uid="uid://sbf12hin4kes"]
+[gd_scene load_steps=16 format=3 uid="uid://sbf12hin4kes"]
[ext_resource type="Texture2D" uid="uid://bylgmr0skwtrs" path="res://art/farm/farming/farmobjekte/broken tools atlas.png" id="1_k4ca3"]
[ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="2_gcgfd"]
+[ext_resource type="Script" uid="uid://dkk1vjijvgrd7" path="res://scripts/CSharp/Common/Items/NonInventoryPickup.cs" id="2_ic616"]
[ext_resource type="AudioStream" uid="uid://be6g8b3v3u1ai" path="res://audio/sfx/Kitchen/SFX_Cooking_Knife_PickUp_01.wav" id="3_ktmp7"]
[ext_resource type="AudioStream" uid="uid://cgjsajsdrrn0j" path="res://audio/sfx/Kitchen/SFX_Cooking_Knife_PutDown_01.wav" id="4_ic616"]
[ext_resource type="AudioStream" uid="uid://br4drgupled6c" path="res://audio/sfx/Kitchen/SFX_Cooking_Pot_01.wav" id="5_dx175"]
@@ -12,7 +13,7 @@
[ext_resource type="AudioStream" uid="uid://duiyhe7yiyotb" path="res://audio/sfx/Kitchen/SFX_Cutlery_03.wav" id="10_aqih4"]
[ext_resource type="AudioStream" uid="uid://bc216pfieuc8h" path="res://audio/sfx/Kitchen/SFX_Cutlery_04.wav" id="11_kb03l"]
[ext_resource type="AudioStream" uid="uid://dp6qen84ptlvx" path="res://audio/sfx/Kitchen/SFX_Cutlery_05.wav" id="12_kka6u"]
-[ext_resource type="Script" uid="uid://cfnrd5k1k0gxw" path="res://scripts/CSharp/Common/AudioPlayer.cs" id="13_wswkg"]
+[ext_resource type="Script" uid="uid://cfnrd5k1k0gxw" path="res://scripts/CSharp/Common/AudioPlayer2D.cs" id="13_wswkg"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_dich4"]
streams_count = 10
@@ -34,6 +35,7 @@ texture = ExtResource("1_k4ca3")
offset = Vector2(1, -215)
region_enabled = true
region_rect = Rect2(44, 479, 356, 503)
+script = ExtResource("2_ic616")
[node name="InteractionArea" parent="." node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("2_gcgfd")]
position = Vector2(0, -172)
@@ -46,4 +48,5 @@ playback_type = 2
script = ExtResource("13_wswkg")
[connection signal="Interacted" from="InteractionArea" to="." method="queue_free"]
+[connection signal="Interacted" from="InteractionArea" to="." method="PlayPickupAnimation"]
[connection signal="Interacted" from="InteractionArea" to="AudioStreamPlayer2D" method="PlayOneShot"]
diff --git a/prefabs/UI/Inventory/Inventory.tscn b/prefabs/UI/Inventory/Inventory.tscn
index 780c512..e7e6fd2 100644
--- a/prefabs/UI/Inventory/Inventory.tscn
+++ b/prefabs/UI/Inventory/Inventory.tscn
@@ -1,7 +1,7 @@
-[gd_scene load_steps=11 format=3 uid="uid://cgjc4wurbgimy"]
+[gd_scene load_steps=12 format=3 uid="uid://cgjc4wurbgimy"]
[ext_resource type="Script" uid="uid://hg7jay2kt441" path="res://scripts/CSharp/Common/Inventory/InventoryUi.cs" id="1_6wusm"]
-[ext_resource type="Script" path="res://scripts/GdScript/dialogic_toggle.gd" id="1_l3npx"]
+[ext_resource type="Script" uid="uid://cvkw4qd2hxksi" path="res://scripts/GdScript/dialogic_toggle.gd" id="1_l3npx"]
[ext_resource type="Texture2D" uid="uid://3ln8aleyxgp1" path="res://art/ui/UI/UI_bag_export_01.png" id="3_vvo7l"]
[ext_resource type="Texture2D" uid="uid://u0dku75l17re" path="res://art/ui/UI/UI_bag_export_highlight_01.png" id="5_df8i8"]
[ext_resource type="PackedScene" uid="uid://c0kmdjeqkqrwv" path="res://prefabs/UI/Inventory/Slot.tscn" id="5_u7kje"]
@@ -11,6 +11,9 @@
[ext_resource type="PackedScene" uid="uid://2q1n6g2kj5er" path="res://prefabs/UI/Quest/QuestLog.tscn" id="7_vvo7l"]
[ext_resource type="Texture2D" uid="uid://qwia360i1ir1" path="res://art/ui/UI/inventory_active.png" id="8_df8i8"]
+[sub_resource type="LabelSettings" id="LabelSettings_l3npx"]
+font_size = 50
+
[node name="CanvasLayer" type="CanvasLayer"]
layer = 90
@@ -455,6 +458,22 @@ offset_bottom = 100.0
texture = ExtResource("8_df8i8")
expand_mode = 1
+[node name="Label" type="Label" parent="Inventory/SlotsContainer/SlotsMover"]
+layout_mode = 1
+anchors_preset = 6
+anchor_left = 1.0
+anchor_top = 0.5
+anchor_right = 1.0
+anchor_bottom = 0.5
+offset_left = 14.4142
+offset_top = 184.286
+offset_right = 54.4142
+offset_bottom = 207.286
+grow_horizontal = 0
+grow_vertical = 2
+text = "[I]"
+label_settings = SubResource("LabelSettings_l3npx")
+
[node name="QuestLogRoot" parent="." instance=ExtResource("7_vvo7l")]
[node name="Control" type="Control" parent="."]
@@ -488,6 +507,7 @@ offset_bottom = -20.0
grow_horizontal = 2
grow_vertical = 2
theme_override_colors/font_color = Color(0, 0, 0, 1)
-text = "Switch to Unity"
+text = "[Hier könnte Ihre Werbung stehen]"
horizontal_alignment = 1
vertical_alignment = 1
+autowrap_mode = 2
diff --git a/prefabs/UI/Inventory/Slot.tscn b/prefabs/UI/Inventory/Slot.tscn
index ac46040..47e5165 100644
--- a/prefabs/UI/Inventory/Slot.tscn
+++ b/prefabs/UI/Inventory/Slot.tscn
@@ -43,21 +43,6 @@ label_settings = SubResource("LabelSettings_7emux")
horizontal_alignment = 1
vertical_alignment = 1
-[node name="AmountLabel" type="Label" parent="."]
-layout_mode = 1
-anchors_preset = -1
-anchor_left = 1.0
-anchor_right = 1.0
-offset_left = -50.0
-offset_top = 9.0
-offset_right = -10.0
-offset_bottom = 49.0
-grow_horizontal = 0
-grow_vertical = 0
-theme_override_colors/font_color = Color(0, 0, 0, 1)
-text = "999"
-horizontal_alignment = 2
-
[node name="Icon" type="TextureRect" parent="."]
layout_mode = 1
anchors_preset = -1
@@ -73,4 +58,23 @@ texture = ExtResource("3_n5ryf")
expand_mode = 4
stretch_mode = 5
+[node name="AmountLabel" type="Label" parent="."]
+layout_mode = 1
+anchors_preset = -1
+anchor_left = 0.99
+anchor_top = 0.92
+anchor_right = 0.99
+anchor_bottom = 0.92
+offset_left = -47.0
+offset_top = -35.0
+offset_right = -8.00001
+offset_bottom = -3.0
+grow_horizontal = 0
+grow_vertical = 0
+theme_override_colors/font_color = Color(0, 0, 0, 1)
+theme_override_font_sizes/font_size = 25
+text = "999"
+horizontal_alignment = 2
+vertical_alignment = 2
+
[connection signal="gui_input" from="." to="." method="_on_gui_input"]
diff --git a/prefabs/UI/Quest/QuestListItem.tscn b/prefabs/UI/Quest/QuestListItem.tscn
index a69c45c..203ba0f 100644
--- a/prefabs/UI/Quest/QuestListItem.tscn
+++ b/prefabs/UI/Quest/QuestListItem.tscn
@@ -50,7 +50,7 @@ size_flags_horizontal = 3
size_flags_vertical = 1
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_font_sizes/font_size = 17
-text = "Switch to Unity"
+text = "[ Hier könnte ihre Werbung stehen]"
vertical_alignment = 1
autowrap_mode = 2
diff --git a/prefabs/characters/Player2D.tscn b/prefabs/characters/Player2D.tscn
index 4b40bba..e2308b9 100644
--- a/prefabs/characters/Player2D.tscn
+++ b/prefabs/characters/Player2D.tscn
@@ -1,7 +1,9 @@
-[gd_scene load_steps=477 format=3 uid="uid://c25udixd5m6l0"]
+[gd_scene load_steps=481 format=3 uid="uid://c25udixd5m6l0"]
[ext_resource type="Script" uid="uid://b05uyj001ehwi" path="res://scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs" id="1_yd5ep"]
[ext_resource type="Script" uid="uid://cjbclkxesh3hc" path="res://scripts/CSharp/Common/CharacterControls/PlayerMovement.cs" id="2_1vqmv"]
+[ext_resource type="Resource" uid="uid://c5yg3lx756v4v" path="res://resources/items/hoe.tres" id="2_dnm27"]
+[ext_resource type="Resource" uid="uid://cndd64batns31" path="res://resources/items/wateringcan.tres" id="3_e04c3"]
[ext_resource type="Script" uid="uid://n7oihifvqp23" path="res://scripts/CSharp/Common/Animation/VesnaAnimations.cs" id="3_f6xmn"]
[ext_resource type="Texture2D" uid="uid://7jrac5ii3ah3" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0001.png" id="3_tb2wl"]
[ext_resource type="Texture2D" uid="uid://c06b551t2qlo6" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0002.png" id="4_dy5kt"]
@@ -271,15 +273,18 @@
[ext_resource type="Texture2D" uid="uid://b37lpqrsjjuc0" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0010.png" id="466_pw1ip"]
[ext_resource type="Script" uid="uid://er03dkj8axlr" path="res://scripts/CSharp/Common/UI/WateringCanUi.cs" id="467_j4m0f"]
[ext_resource type="Texture2D" uid="uid://oi11ax6tml6j" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0012.png" id="468_08021"]
-[ext_resource type="Texture2D" uid="uid://l0k3vh3kdprp" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-1.png" id="468_f6xmn"]
-[ext_resource type="Texture2D" uid="uid://t4w7axbof7bq" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-2.png" id="469_nxglm"]
-[ext_resource type="Texture2D" uid="uid://di2npqkvvst6x" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-3.png" id="470_8fyd7"]
[ext_resource type="Texture2D" uid="uid://dsjj23763pej5" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0014.png" id="470_bmmei"]
-[ext_resource type="Texture2D" uid="uid://clti3basli30" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-4.png" id="471_dnm27"]
-[ext_resource type="Texture2D" uid="uid://n1v4hgd467wp" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-5.png" id="472_e04c3"]
+[ext_resource type="AudioStream" uid="uid://ce5mxs2yrwgrh" path="res://audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_01_R.wav" id="470_dnm27"]
+[ext_resource type="Script" uid="uid://dx25g14a7xi4w" path="res://scripts/CSharp/Common/Audio/AudioPlayer.cs" id="471_2f15g"]
+[ext_resource type="AudioStream" uid="uid://fihv17va3r58" path="res://audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_02_R.wav" id="471_e04c3"]
+[ext_resource type="AudioStream" uid="uid://cvvjd2i6x047n" path="res://audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_03_R.wav" id="472_g32y8"]
[ext_resource type="Texture2D" uid="uid://blh0t2ofqj2uq" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0016.png" id="472_wdxsr"]
+[ext_resource type="AudioStream" uid="uid://dymoalptxmge" path="res://audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_04_R.wav" id="473_8hbu5"]
[ext_resource type="Texture2D" uid="uid://l5ym7gi82l1b" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-6.png" id="473_g32y8"]
+[ext_resource type="AudioStream" uid="uid://4555a4w30tda" path="res://audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_05_R.wav" id="474_t1d6r"]
[ext_resource type="Texture2D" uid="uid://3t1m2xi4ks75" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0018.png" id="474_tu801"]
+[ext_resource type="AudioStream" uid="uid://dpqvnogggvgea" path="res://audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_06_R.wav" id="475_83c4i"]
+[ext_resource type="AudioStream" uid="uid://c45docuhlqqme" path="res://audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_07_R.wav" id="476_deeju"]
[ext_resource type="Texture2D" uid="uid://drtgi1qyq7fji" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0020.png" id="476_g4jjd"]
[ext_resource type="Texture2D" uid="uid://d3rdsclnqbx7" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0001.png" id="477_qko58"]
[ext_resource type="Texture2D" uid="uid://dqubvx1a08kn4" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0002.png" id="478_5myrm"]
@@ -469,11 +474,9 @@
[ext_resource type="Texture2D" uid="uid://ds2y033vahyi5" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0016.png" id="810_224qh"]
[ext_resource type="Texture2D" uid="uid://b0v61all3tsny" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0018.png" id="812_sf8kv"]
[ext_resource type="Texture2D" uid="uid://cao7vqax8cblo" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0020.png" id="814_3uq4g"]
-[ext_resource type="Texture2D" uid="uid://3pj2q7wtuion" path="res://art/farm/farming/farmobjekte/hoe.png" id="815_1ia2b"]
-[ext_resource type="Texture2D" uid="uid://x8hr8287ff2n" path="res://art/farm/farming/farmobjekte/tools atlas.png" id="816_1a3c1"]
[ext_resource type="Script" uid="uid://bcskt5ckh3rqa" path="res://scripts/CSharp/Common/Farming/FarmingControls2D.cs" id="817_6nrw3"]
-[ext_resource type="PackedScene" uid="uid://b1d2e7ely6hyw" path="res://prefabs/farm/tomato_field.tscn" id="818_16w6h"]
-[ext_resource type="Script" path="res://scripts/GdScript/dialogic_toggle.gd" id="819_4na52"]
+[ext_resource type="PackedScene" uid="uid://b1d2e7ely6hyw" path="res://prefabs/farm/base_field.tscn" id="818_16w6h"]
+[ext_resource type="Script" uid="uid://cvkw4qd2hxksi" path="res://scripts/GdScript/dialogic_toggle.gd" id="819_4na52"]
[sub_resource type="CircleShape2D" id="CircleShape2D_ssqtd"]
radius = 110.018
@@ -2066,18 +2069,31 @@ animations = [{
"speed": 16.0
}]
+[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_fmkiy"]
+streams_count = 7
+stream_0/stream = ExtResource("470_dnm27")
+stream_1/stream = ExtResource("471_e04c3")
+stream_2/stream = ExtResource("472_g32y8")
+stream_3/stream = ExtResource("473_8hbu5")
+stream_4/stream = ExtResource("474_t1d6r")
+stream_5/stream = ExtResource("475_83c4i")
+stream_6/stream = ExtResource("476_deeju")
+
[node name="Vesna" type="Node2D" node_paths=PackedStringArray("_farmingControls", "_player2d", "_vesnaAnimations")]
y_sort_enabled = true
script = ExtResource("1_yd5ep")
_farmingControls = NodePath("FarmingControls")
_player2d = NodePath("CharacterBody2D")
_vesnaAnimations = NodePath("CharacterBody2D/visuals")
+_hoe = ExtResource("2_dnm27")
+_wateringCan = ExtResource("3_e04c3")
-[node name="CharacterBody2D" type="CharacterBody2D" parent="." groups=["PlantGrowing"]]
+[node name="CharacterBody2D" type="CharacterBody2D" parent="." node_paths=PackedStringArray("_stepTimer")]
position = Vector2(0, 374)
collision_layer = 4
collision_mask = 3
script = ExtResource("2_1vqmv")
+_stepTimer = NodePath("../SFX/FootstepsAudio/Timer")
[node name="CollisionShape2D" type="CollisionShape2D" parent="CharacterBody2D"]
visible = false
@@ -2087,7 +2103,7 @@ position = Vector2(-24, -13)
shape = SubResource("CircleShape2D_ssqtd")
debug_color = Color(0.923708, 0.202722, 0.475262, 0.42)
-[node name="visuals" type="Node2D" parent="CharacterBody2D" node_paths=PackedStringArray("_sprite", "_wateringParticles")]
+[node name="visuals" type="Node2D" parent="CharacterBody2D" node_paths=PackedStringArray("_sprite", "_wateringParticles") groups=["Pickup", "PlantGrowing"]]
position = Vector2(0, -374)
script = ExtResource("3_f6xmn")
_sprite = NodePath("Animated Sprites")
@@ -2097,75 +2113,31 @@ _wateringParticles = NodePath("../../pouring water vfx")
position = Vector2(0, 450)
sprite_frames = SubResource("SpriteFrames_4yiyq")
animation = &"side walking wateringcan"
-frame_progress = 0.130831
+frame = 7
+frame_progress = 0.229832
offset = Vector2(0, -450)
-[node name="Hoe" type="Sprite2D" parent="CharacterBody2D/visuals"]
-visible = false
-position = Vector2(-35, -596)
-rotation = 0.74351
-scale = Vector2(0.24, 0.24)
-texture = ExtResource("815_1ia2b")
-region_enabled = true
-region_rect = Rect2(980, 179, 374, 1233)
-
-[node name="WateringCanEmpty" type="Sprite2D" parent="CharacterBody2D/visuals"]
-visible = false
-position = Vector2(-38, -603)
-scale = Vector2(0.5, 0.5)
-texture = ExtResource("816_1a3c1")
-region_enabled = true
-region_rect = Rect2(-1, 1128, 417, 299)
-
-[node name="WateringCanFull" type="Sprite2D" parent="CharacterBody2D/visuals"]
-visible = false
-modulate = Color(0.286, 0.16, 1, 1)
-position = Vector2(-38, -603)
-scale = Vector2(0.5, 0.5)
-texture = ExtResource("816_1a3c1")
-region_enabled = true
-region_rect = Rect2(-1, 1128, 417, 299)
-
-[node name="WateringCanUI" type="Node2D" parent="CharacterBody2D" node_paths=PackedStringArray("_stages")]
+[node name="WateringCanUI" type="Node2D" parent="CharacterBody2D" node_paths=PackedStringArray("_slider")]
position = Vector2(0, -929)
scale = Vector2(2, 2)
script = ExtResource("467_j4m0f")
-_stages = [NodePath("6"), NodePath("5"), NodePath("4"), NodePath("3"), NodePath("2"), NodePath("1")]
-
-[node name="1" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"]
-visible = false
-position = Vector2(1, 0)
-scale = Vector2(1.8, 1.8)
-texture = ExtResource("468_f6xmn")
-
-[node name="2" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"]
-visible = false
-position = Vector2(2, 2)
-scale = Vector2(1.6, 1.6)
-texture = ExtResource("469_nxglm")
+_slider = NodePath("HSlider")
-[node name="3" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"]
+[node name="HSlider" type="HSlider" parent="CharacterBody2D/WateringCanUI"]
visible = false
-position = Vector2(3, 5)
-scale = Vector2(1.4, 1.4)
-texture = ExtResource("470_8fyd7")
-
-[node name="4" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"]
-visible = false
-position = Vector2(3, 7)
-scale = Vector2(1.2, 1.2)
-texture = ExtResource("471_dnm27")
-
-[node name="5" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"]
-visible = false
-position = Vector2(2, 7)
-scale = Vector2(1.1, 1.1)
-texture = ExtResource("472_e04c3")
-
-[node name="6" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"]
-visible = false
-position = Vector2(3, 12)
-texture = ExtResource("473_g32y8")
+modulate = Color(0.3515, 0.780425, 0.95, 1)
+custom_minimum_size = Vector2(150, 50)
+anchors_preset = 5
+anchor_left = 0.5
+anchor_right = 0.5
+offset_left = -43.0
+offset_right = 57.0
+offset_bottom = 64.0
+grow_horizontal = 2
+max_value = 1.0
+step = 0.0
+editable = false
+scrollable = false
[node name="FarmingControls" type="Node2D" parent="." node_paths=PackedStringArray("_movingPlayer", "_wateringParticles")]
script = ExtResource("817_6nrw3")
@@ -2202,11 +2174,23 @@ scale = Vector2(0.7, 0.7)
script = ExtResource("819_4na52")
itemToToggle = NodePath("../CharacterBody2D/visuals/Animated Sprites")
+[node name="SFX" type="Node2D" parent="."]
+
+[node name="FootstepsAudio" type="AudioStreamPlayer" parent="SFX"]
+stream = SubResource("AudioStreamRandomizer_fmkiy")
+bus = &"SFX"
+script = ExtResource("471_2f15g")
+
+[node name="Timer" type="Timer" parent="SFX/FootstepsAudio"]
+wait_time = 0.5
+
[connection signal="FilledWateringCan" from="." to="CharacterBody2D/WateringCanUI" method="Refill"]
[connection signal="InventorySelectionChanged" from="." to="CharacterBody2D/WateringCanUI" method="IsWateringCanActive"]
-[connection signal="PickedUpTool" from="." to="CharacterBody2D" method="ActivateTool"]
+[connection signal="PickedUpTool" from="." to="CharacterBody2D/visuals" method="ActivateTool"]
[connection signal="PickedUpTool" from="." to="CharacterBody2D/WateringCanUI" method="IsWateringCanActive"]
-[connection signal="WateringField" from="FarmingControls" to="CharacterBody2D" method="PlayWateringAnimation"]
+[connection signal="WateringField" from="FarmingControls" to="CharacterBody2D/visuals" method="PlayWateringAnimation"]
[connection signal="WateringField" from="FarmingControls" to="CharacterBody2D/WateringCanUI" method="Water"]
[connection signal="timelineEnded" from="dialogic toggle" to="." method="EnableMovement"]
[connection signal="timelineStarted" from="dialogic toggle" to="." method="DisableMovement"]
+[connection signal="timelineStarted" from="DialogicToggle" to="SFX/FootstepsAudio/Timer" method="stop"]
+[connection signal="timeout" from="SFX/FootstepsAudio/Timer" to="SFX/FootstepsAudio" method="PlayOneShot"]
diff --git a/prefabs/characters/Yeli.tscn b/prefabs/characters/Yeli.tscn
index 798496a..fc3bde3 100644
--- a/prefabs/characters/Yeli.tscn
+++ b/prefabs/characters/Yeli.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=48 format=3 uid="uid://dfvgp1my5rydh"]
+[gd_scene load_steps=55 format=3 uid="uid://dfvgp1my5rydh"]
[ext_resource type="Texture2D" uid="uid://c34012j5ukiuf" path="res://art/animation/Yeli2D/F01-Yeli_Idle/0001.png" id="1_03m0b"]
[ext_resource type="Script" uid="uid://d2486x6upmwqq" path="res://scripts/GdScript/dialogic_starter.gd" id="1_at1n1"]
@@ -43,7 +43,13 @@
[ext_resource type="Texture2D" uid="uid://droj8w1mbm5k3" path="res://art/animation/Yeli2D/F02-Yeli_Talk/0019.png" id="39_vg7xi"]
[ext_resource type="Texture2D" uid="uid://by5vtadhdwwag" path="res://art/animation/Yeli2D/F02-Yeli_Talk/0020.png" id="40_ipyxb"]
[ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="42_ahrat"]
-[ext_resource type="Script" path="res://scripts/GdScript/dialogic_toggle.gd" id="44_aqu1t"]
+[ext_resource type="Script" uid="uid://cvkw4qd2hxksi" path="res://scripts/GdScript/dialogic_toggle.gd" id="44_aqu1t"]
+[ext_resource type="AudioStream" uid="uid://bsovtqwwqxqc0" path="res://audio/sfx/UI/Dialog/SFX_Dialog_01.wav" id="45_cim3h"]
+[ext_resource type="AudioStream" uid="uid://blvs5qmksdvxy" path="res://audio/sfx/UI/Dialog/SFX_Dialog_02.wav" id="46_njpxl"]
+[ext_resource type="AudioStream" uid="uid://b7xai1u4pmulg" path="res://audio/sfx/UI/Dialog/SFX_Dialog_03.wav" id="47_qbcgo"]
+[ext_resource type="AudioStream" uid="uid://1itiu3ktu2po" path="res://audio/sfx/UI/Dialog/SFX_Dialog_04.wav" id="48_7n5j4"]
+[ext_resource type="AudioStream" uid="uid://cvr2el0epo31a" path="res://audio/sfx/UI/Dialog/SFX_Dialog_05.wav" id="49_6twxa"]
+[ext_resource type="Script" uid="uid://dx25g14a7xi4w" path="res://scripts/CSharp/Common/Audio/AudioPlayer.cs" id="50_a7v1a"]
[sub_resource type="CircleShape2D" id="CircleShape2D_at1n1"]
resource_local_to_scene = true
@@ -186,6 +192,14 @@ animations = [{
radius = 84.0
height = 168.0
+[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_ngji7"]
+streams_count = 5
+stream_0/stream = ExtResource("45_cim3h")
+stream_1/stream = ExtResource("46_njpxl")
+stream_2/stream = ExtResource("47_qbcgo")
+stream_3/stream = ExtResource("48_7n5j4")
+stream_4/stream = ExtResource("49_6twxa")
+
[node name="Yeli" type="Node2D" node_paths=PackedStringArray("_sprite")]
z_index = 1
y_sort_enabled = true
@@ -224,7 +238,17 @@ scale = Vector2(0.7, 0.7)
script = ExtResource("44_aqu1t")
itemToToggle = NodePath("../TalkingControl/AnimatedSprite")
+[node name="SFX" type="Node" parent="."]
+
+[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="SFX"]
+stream = SubResource("AudioStreamRandomizer_ngji7")
+bus = &"SFX"
+script = ExtResource("50_a7v1a")
+
+[connection signal="FinishedTalking" from="." to="InteractionArea" method="SetActiveInverse"]
[connection signal="Talking" from="." to="Dialogic starter" method="open"]
[connection signal="Interacted" from="InteractionArea" to="." method="ToggleTalking"]
+[connection signal="timelineEnded" from="DialogicToggle" to="." method="ToggleTalking"]
+[connection signal="timelineStarted" from="DialogicToggle" to="SFX/AudioStreamPlayer" method="PlayOneShot"]
[editable path="InteractionArea"]
diff --git a/prefabs/farm/duck.tscn b/prefabs/farm/animals/duck.tscn
similarity index 97%
rename from prefabs/farm/duck.tscn
rename to prefabs/farm/animals/duck.tscn
index c83462a..3edde1e 100644
--- a/prefabs/farm/duck.tscn
+++ b/prefabs/farm/animals/duck.tscn
@@ -1,9 +1,9 @@
-[gd_scene load_steps=25 format=3 uid="uid://muuxxgvx33fp"]
+[gd_scene load_steps=24 format=3 uid="uid://muuxxgvx33fp"]
[ext_resource type="Script" uid="uid://7m1rt7agb6rm" path="res://scripts/CSharp/Common/Temp/MVPDuck.cs" id="1_54k4r"]
[ext_resource type="Texture2D" uid="uid://hvchk6t0xe7j" path="res://art/animals/Ente.png" id="1_cgxhx"]
[ext_resource type="AudioStream" uid="uid://qv0aubjeyi0u" path="res://audio/sfx/Animals/SFX_Duck_Quack_01.wav" id="3_kjie1"]
-[ext_resource type="Script" uid="uid://cfnrd5k1k0gxw" path="res://scripts/CSharp/Common/AudioPlayer.cs" id="3_rdn2q"]
+[ext_resource type="Script" uid="uid://cfnrd5k1k0gxw" path="res://scripts/CSharp/Common/AudioPlayer2D.cs" id="3_rdn2q"]
[ext_resource type="AudioStream" uid="uid://da84l8e44scwh" path="res://audio/sfx/Animals/SFX_Duck_Quack_02.wav" id="4_54k4r"]
[ext_resource type="AudioStream" uid="uid://bkx4vyigy0u0e" path="res://audio/sfx/Animals/SFX_Duck_Quack_03.wav" id="5_uo3dh"]
[ext_resource type="AudioStream" uid="uid://b5o5bu5to04dw" path="res://audio/sfx/Animals/SFX_Duck_Quack_04.wav" id="6_nxoeu"]
@@ -16,7 +16,6 @@
[ext_resource type="Animation" uid="uid://b3dwd88uvfk1k" path="res://art/animals/duck_flapFlap.res" id="14_uo3dh"]
[ext_resource type="AudioStream" uid="uid://bsr5m8u2sle5k" path="res://audio/sfx/Animals/SFX_Duck_Wings_07.wav" id="14_xhefb"]
[ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="15_uo3dh"]
-[ext_resource type="Material" uid="uid://blch5kdhkbj75" path="res://art/materials/simple_interactable_outline.tres" id="16_nxoeu"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_sot7i"]
streams_count = 4
@@ -163,7 +162,6 @@ libraries = {
[node name="InteractionArea" parent="." node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("15_uo3dh")]
position = Vector2(18, -250)
-_outlineMaterial = ExtResource("16_nxoeu")
_spriteToOutline = NodePath("../Duck rendered")
[node name="CollisionShape3D" parent="InteractionArea/Area2D" index="0"]
diff --git a/prefabs/farm/base_field.tscn b/prefabs/farm/base_field.tscn
new file mode 100644
index 0000000..ab21577
--- /dev/null
+++ b/prefabs/farm/base_field.tscn
@@ -0,0 +1,42 @@
+[gd_scene load_steps=9 format=3 uid="uid://b1d2e7ely6hyw"]
+
+[ext_resource type="Script" uid="uid://bdffon388rkty" path="res://scripts/CSharp/Common/Farming/FieldBehaviour2D.cs" id="1_qa01x"]
+[ext_resource type="Texture2D" uid="uid://cgmu3qlovdr22" path="res://art/masks/field_outline_1.png" id="2_w8caw"]
+[ext_resource type="Texture2D" uid="uid://eg5ej0mtuac" path="res://art/masks/field_outline_2.png" id="3_c014y"]
+[ext_resource type="Texture2D" uid="uid://djpigvoyadvjs" path="res://art/masks/field_outline_3.png" id="4_teirr"]
+[ext_resource type="Texture2D" uid="uid://c2pirgay3jfnn" path="res://art/farm/tilable grounds/böden/trockene farming erde.png" id="5_wx561"]
+[ext_resource type="Texture2D" uid="uid://ctvdxwgmfaj5c" path="res://art/farm/tilable grounds/böden/nasse farming erde.png" id="6_7m4xq"]
+[ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="7_2eegd"]
+[ext_resource type="Resource" uid="uid://d284vxftxhym0" path="res://resources/itemRepository.tres" id="7_w8caw"]
+
+[node name="BaseField" type="Node2D"]
+
+[node name="FieldBehaviour" type="Sprite2D" parent="." node_paths=PackedStringArray("_fieldSprite", "_maskSprite", "PlantingInteraction", "PlantingPlaceholder")]
+z_index = -1
+scale = Vector2(0.9, 1)
+script = ExtResource("1_qa01x")
+_fieldSprite = NodePath("MaskedField/FieldTexture")
+_maskSprite = NodePath("MaskedField")
+_maskTexture = Array[Texture2D]([ExtResource("2_w8caw"), ExtResource("3_c014y"), ExtResource("4_teirr")])
+Tilled = ExtResource("5_wx561")
+Watered = ExtResource("6_7m4xq")
+PlantingInteraction = NodePath("../InteractionArea")
+PlantingPlaceholder = NodePath("PlantPlaceholder")
+ItemRepository = ExtResource("7_w8caw")
+
+[node name="MaskedField" type="Sprite2D" parent="FieldBehaviour"]
+clip_children = 1
+scale = Vector2(1.5, 1.5)
+texture = ExtResource("3_c014y")
+
+[node name="FieldTexture" type="Sprite2D" parent="FieldBehaviour/MaskedField"]
+texture = ExtResource("5_wx561")
+
+[node name="PlantPlaceholder" type="Node2D" parent="FieldBehaviour"]
+
+[node name="InteractionArea" parent="." node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("7_2eegd")]
+position = Vector2(-16, -54)
+_active = false
+_spriteToOutline = NodePath("../FieldBehaviour/MaskedField/FieldTexture")
+
+[connection signal="Interacted" from="InteractionArea" to="FieldBehaviour" method="Farm"]
diff --git a/prefabs/farm/beet_field.tscn b/prefabs/farm/beet_field.tscn
deleted file mode 100644
index 41781fc..0000000
--- a/prefabs/farm/beet_field.tscn
+++ /dev/null
@@ -1,90 +0,0 @@
-[gd_scene load_steps=14 format=3 uid="uid://d4m5iy5mwqpq3"]
-
-[ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="1_tp1yj"]
-[ext_resource type="Script" uid="uid://bdffon388rkty" path="res://scripts/CSharp/Common/Farming/FieldBehaviour2D.cs" id="2_c6u1a"]
-[ext_resource type="Material" uid="uid://blch5kdhkbj75" path="res://art/materials/simple_interactable_outline.tres" id="2_pdgar"]
-[ext_resource type="Texture2D" uid="uid://cgmu3qlovdr22" path="res://art/masks/field_outline_1.png" id="3_b5av1"]
-[ext_resource type="Texture2D" uid="uid://eg5ej0mtuac" path="res://art/masks/field_outline_2.png" id="4_yav45"]
-[ext_resource type="Texture2D" uid="uid://djpigvoyadvjs" path="res://art/masks/field_outline_3.png" id="5_pdgar"]
-[ext_resource type="Texture2D" uid="uid://c2pirgay3jfnn" path="res://art/farm/tilable grounds/böden/trockene farming erde.png" id="6_a35l4"]
-[ext_resource type="Texture2D" uid="uid://ctvdxwgmfaj5c" path="res://art/farm/tilable grounds/böden/nasse farming erde.png" id="7_us3kg"]
-[ext_resource type="PackedScene" uid="uid://c3hwbwo423nbm" path="res://prefabs/farm/beet_plant.tscn" id="8_tgwxi"]
-[ext_resource type="Script" uid="uid://d2486x6upmwqq" path="res://scripts/GdScript/dialogic_starter.gd" id="9_b5av1"]
-[ext_resource type="Script" uid="uid://dnipeibppjirs" path="res://scripts/CSharp/Common/NPC/DialogicOverlayStarter.cs" id="10_yav45"]
-[ext_resource type="Script" uid="uid://drle5aies8ye4" path="res://scripts/GdScript/dialogic_event_forward.gd" id="11_yav45"]
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_a35l4"]
-resource_local_to_scene = true
-radius = 300.0
-
-[node name="BaseField" type="Node2D"]
-
-[node name="InteractionArea2" parent="." node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("1_tp1yj")]
-visible = false
-z_index = 1
-scale = Vector2(2.225, 2.225)
-_outlineMaterial = ExtResource("2_pdgar")
-_spriteToOutline = NodePath("../FieldBehaviour/MaskedField")
-
-[node name="FieldBehaviour" type="Sprite2D" parent="." node_paths=PackedStringArray("_fieldSprite", "_maskSprite", "_growingCollider")]
-z_index = -1
-scale = Vector2(0.9, 1)
-script = ExtResource("2_c6u1a")
-_fieldSprite = NodePath("MaskedField/FieldTexture")
-_maskSprite = NodePath("MaskedField")
-_maskTexture = Array[Texture2D]([ExtResource("3_b5av1"), ExtResource("4_yav45"), ExtResource("5_pdgar")])
-Tilled = ExtResource("6_a35l4")
-Watered = ExtResource("7_us3kg")
-_growingCollider = NodePath("../InteractionArea2")
-
-[node name="MaskedField" type="Sprite2D" parent="FieldBehaviour"]
-clip_children = 1
-scale = Vector2(1.5, 1.5)
-texture = ExtResource("4_yav45")
-
-[node name="FieldTexture" type="Sprite2D" parent="FieldBehaviour/MaskedField"]
-texture = ExtResource("6_a35l4")
-
-[node name="BeetRoot" parent="FieldBehaviour" node_paths=PackedStringArray("_smallPlants", "_field") groups=["PlantGrowing"] instance=ExtResource("8_tgwxi")]
-_smallPlants = [NodePath("SmallPlant/01"), NodePath("SmallPlant/02"), null, null]
-_state = 2
-_field = NodePath("..")
-
-[node name="01" parent="FieldBehaviour/BeetRoot/BigPlant" index="0"]
-visible = true
-
-[node name="CollisionShape3D" parent="FieldBehaviour/BeetRoot/ReadyPlantInventoryItem/PickupInteractionArea/Area2D" index="0"]
-shape = SubResource("CircleShape2D_a35l4")
-
-[node name="01" parent="FieldBehaviour/BeetRoot/ReadyPlantInventoryItem/ReadyPlant" index="0"]
-scale = Vector2(3, 3)
-
-[node name="02" parent="FieldBehaviour/BeetRoot/ReadyPlantInventoryItem/ReadyPlant" index="1"]
-scale = Vector2(3, 3)
-
-[node name="03" parent="FieldBehaviour/BeetRoot/ReadyPlantInventoryItem/ReadyPlant" index="2"]
-scale = Vector2(3, 3)
-
-[node name="04" parent="FieldBehaviour/BeetRoot/ReadyPlantInventoryItem/ReadyPlant" index="3"]
-scale = Vector2(3, 3)
-
-[node name="dialogic-starter" type="Node2D" parent="."]
-script = ExtResource("9_b5av1")
-
-[node name="DialogicOverlay" type="Node2D" parent="dialogic-starter"]
-script = ExtResource("10_yav45")
-_timelinesToPlay = PackedStringArray("talk_to_plant")
-_startOnReady = false
-
-[node name="DialogicEventListener" type="Node" parent="dialogic-starter"]
-script = ExtResource("11_yav45")
-eventName = "MagicWord"
-
-[connection signal="Interacted" from="InteractionArea2" to="dialogic-starter/DialogicOverlay" method="ToggleDialogue"]
-[connection signal="Interacted" from="InteractionArea2" to="dialogic-starter/DialogicEventListener" method="_register"]
-[connection signal="Dialogue" from="dialogic-starter/DialogicOverlay" to="dialogic-starter" method="open"]
-[connection signal="dialogicEventTriggered" from="dialogic-starter/DialogicEventListener" to="FieldBehaviour/BeetRoot" method="SayMagicWord"]
-
-[editable path="FieldBehaviour/BeetRoot"]
-[editable path="FieldBehaviour/BeetRoot/ReadyPlantInventoryItem"]
-[editable path="FieldBehaviour/BeetRoot/ReadyPlantInventoryItem/PickupInteractionArea"]
diff --git a/prefabs/farm/beet_plant.tscn b/prefabs/farm/beet_plant.tscn
deleted file mode 100644
index 9ab0020..0000000
--- a/prefabs/farm/beet_plant.tscn
+++ /dev/null
@@ -1,207 +0,0 @@
-[gd_scene load_steps=10 format=3 uid="uid://c3hwbwo423nbm"]
-
-[ext_resource type="Script" uid="uid://cms357f23fmfy" path="res://scripts/CSharp/Common/Farming/PlantBehaviour2D.cs" id="1_0kfos"]
-[ext_resource type="Texture2D" uid="uid://xtci0n8tquc0" path="res://art/farm/farming/farmobjekte/beetroot_00.png" id="2_rvwu0"]
-[ext_resource type="Shader" uid="uid://braevmqauoek7" path="res://shader/swaying_plant.gdshader" id="3_up8td"]
-[ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="4_cfgyx"]
-[ext_resource type="PackedScene" uid="uid://dpbbroif2tnil" path="res://prefabs/interactions/generic_item_on_ground_2d.tscn" id="5_25lcb"]
-[ext_resource type="Resource" uid="uid://blr8tine5m0ma" path="res://resources/items/tomato.tres" id="6_aml5p"]
-[ext_resource type="Texture2D" uid="uid://bleimj6jr1jka" path="res://art/general/rectangle.png" id="7_rvwu0"]
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_u4cty"]
-shader = ExtResource("3_up8td")
-shader_parameter/speed = 3.0
-shader_parameter/minStrength = 0.05
-shader_parameter/maxStrength = 0.36
-shader_parameter/strengthScale = 100.0
-shader_parameter/interval = 3.5
-shader_parameter/detail = 1.0
-shader_parameter/distortion = 0.0
-shader_parameter/heightOffset = 0.635
-shader_parameter/offset = 0.0
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_rvwu0"]
-resource_local_to_scene = true
-radius = 300.0
-
-[node name="BeetRoot" type="Node2D" node_paths=PackedStringArray("_seeds", "_smallPlants", "_bigPlants", "_readyPlants", "_harvestablePlant", "_magicEffect")]
-z_index = 1
-y_sort_enabled = true
-script = ExtResource("1_0kfos")
-_seeds = [NodePath("Seeds/BeetSeet"), NodePath("Seeds/BeetSeet2"), NodePath("Seeds/BeetSeet3")]
-_smallPlants = [NodePath("SmallPlant/01"), NodePath("SmallPlant/02"), null, null]
-_bigPlants = [NodePath("BigPlant/01"), NodePath("BigPlant/02"), NodePath("BigPlant/03"), NodePath("BigPlant/04")]
-_readyPlants = [NodePath("ReadyPlantInventoryItem/ReadyPlant/01"), NodePath("ReadyPlantInventoryItem/ReadyPlant/02"), NodePath("ReadyPlantInventoryItem/ReadyPlant/03"), NodePath("ReadyPlantInventoryItem/ReadyPlant/04")]
-_harvestablePlant = NodePath("ReadyPlantInventoryItem")
-_magicEffect = NodePath("magic vfx")
-
-[node name="Seeds" type="Node2D" parent="."]
-position = Vector2(0, 0.5)
-
-[node name="BeetSeet" type="Sprite2D" parent="Seeds"]
-visible = false
-y_sort_enabled = true
-scale = Vector2(2, 2)
-texture = ExtResource("2_rvwu0")
-flip_v = true
-region_enabled = true
-region_rect = Rect2(166, 289, 28, 38)
-
-[node name="BeetSeet2" type="Sprite2D" parent="Seeds"]
-visible = false
-y_sort_enabled = true
-scale = Vector2(2, 2)
-texture = ExtResource("2_rvwu0")
-flip_v = true
-region_enabled = true
-region_rect = Rect2(166, 289, 28, 38)
-
-[node name="BeetSeet3" type="Sprite2D" parent="Seeds"]
-visible = false
-y_sort_enabled = true
-scale = Vector2(2, 2)
-texture = ExtResource("2_rvwu0")
-flip_v = true
-region_enabled = true
-region_rect = Rect2(243, 207, 35, 69)
-
-[node name="SmallPlant" type="Node2D" parent="."]
-position = Vector2(0, 0.5)
-
-[node name="01" type="Sprite2D" parent="SmallPlant"]
-visible = false
-y_sort_enabled = true
-material = SubResource("ShaderMaterial_u4cty")
-scale = Vector2(2, 2)
-texture = ExtResource("2_rvwu0")
-region_enabled = true
-region_rect = Rect2(37, 178, 72, 116)
-
-[node name="02" type="Sprite2D" parent="SmallPlant"]
-visible = false
-y_sort_enabled = true
-material = SubResource("ShaderMaterial_u4cty")
-scale = Vector2(2, 2)
-texture = ExtResource("2_rvwu0")
-region_enabled = true
-region_rect = Rect2(313, 179, 73, 115)
-
-[node name="BigPlant" type="Node2D" parent="."]
-position = Vector2(0, 2)
-
-[node name="01" type="Sprite2D" parent="BigPlant"]
-visible = false
-y_sort_enabled = true
-material = SubResource("ShaderMaterial_u4cty")
-scale = Vector2(2, 2)
-texture = ExtResource("2_rvwu0")
-region_enabled = true
-region_rect = Rect2(6, 5, 136, 151)
-
-[node name="02" type="Sprite2D" parent="BigPlant"]
-visible = false
-y_sort_enabled = true
-material = SubResource("ShaderMaterial_u4cty")
-scale = Vector2(2, 2)
-texture = ExtResource("2_rvwu0")
-region_enabled = true
-region_rect = Rect2(148, 58, 111, 140)
-
-[node name="03" type="Sprite2D" parent="BigPlant"]
-visible = false
-y_sort_enabled = true
-material = SubResource("ShaderMaterial_u4cty")
-scale = Vector2(2, 2)
-texture = ExtResource("2_rvwu0")
-region_enabled = true
-region_rect = Rect2(264, 4, 131, 152)
-
-[node name="04" type="Sprite2D" parent="BigPlant"]
-y_sort_enabled = true
-material = SubResource("ShaderMaterial_u4cty")
-scale = Vector2(2, 2)
-texture = ExtResource("2_rvwu0")
-region_enabled = true
-region_rect = Rect2(18, 311, 129, 142)
-
-[node name="InteractionArea" parent="." instance=ExtResource("4_cfgyx")]
-position = Vector2(0, 2.3)
-_useOutline = false
-_useSprite = false
-
-[node name="ReadyPlantInventoryItem" parent="." instance=ExtResource("5_25lcb")]
-position = Vector2(0, 2.3)
-IsActive = false
-
-[node name="SpawnWithItem" parent="ReadyPlantInventoryItem" index="0"]
-_blueprint = ExtResource("6_aml5p")
-
-[node name="ItemLabel" parent="ReadyPlantInventoryItem" index="1"]
-visible = false
-
-[node name="PickupErrorLabel" parent="ReadyPlantInventoryItem" index="2"]
-visible = false
-
-[node name="CollisionShape3D" parent="ReadyPlantInventoryItem/PickupInteractionArea/Area2D" index="0"]
-shape = SubResource("CircleShape2D_rvwu0")
-
-[node name="Icon" parent="ReadyPlantInventoryItem" index="4"]
-visible = false
-
-[node name="ReadyPlant" type="Node2D" parent="ReadyPlantInventoryItem"]
-
-[node name="01" type="Sprite2D" parent="ReadyPlantInventoryItem/ReadyPlant"]
-visible = false
-y_sort_enabled = true
-material = SubResource("ShaderMaterial_u4cty")
-texture = ExtResource("2_rvwu0")
-region_enabled = true
-region_rect = Rect2(18, 311, 129, 142)
-
-[node name="02" type="Sprite2D" parent="ReadyPlantInventoryItem/ReadyPlant"]
-visible = false
-y_sort_enabled = true
-material = SubResource("ShaderMaterial_u4cty")
-texture = ExtResource("2_rvwu0")
-region_enabled = true
-region_rect = Rect2(6, 5, 136, 151)
-
-[node name="03" type="Sprite2D" parent="ReadyPlantInventoryItem/ReadyPlant"]
-visible = false
-y_sort_enabled = true
-material = SubResource("ShaderMaterial_u4cty")
-texture = ExtResource("2_rvwu0")
-region_enabled = true
-region_rect = Rect2(264, 4, 131, 152)
-
-[node name="04" type="Sprite2D" parent="ReadyPlantInventoryItem/ReadyPlant"]
-visible = false
-y_sort_enabled = true
-material = SubResource("ShaderMaterial_u4cty")
-texture = ExtResource("2_rvwu0")
-region_enabled = true
-region_rect = Rect2(148, 58, 111, 140)
-
-[node name="magic vfx" type="CPUParticles2D" parent="."]
-position = Vector2(-133, -347)
-rotation = -0.333807
-emitting = false
-amount = 20
-texture = ExtResource("7_rvwu0")
-lifetime = 0.5
-randomness = 1.0
-local_coords = true
-draw_order = 1
-emission_shape = 2
-emission_sphere_radius = 128.0
-linear_accel_min = 44.07
-linear_accel_max = 78.81
-scale_amount_min = 0.01
-scale_amount_max = 0.1
-color = Color(0.400601, 0.62444, 0.791217, 1)
-hue_variation_max = 0.4
-
-[connection signal="Interacted" from="InteractionArea" to="." method="Grow"]
-
-[editable path="ReadyPlantInventoryItem"]
-[editable path="ReadyPlantInventoryItem/PickupInteractionArea"]
diff --git a/prefabs/farm/tomato_plant.tscn b/prefabs/farm/plants/base_plant.tscn
similarity index 66%
rename from prefabs/farm/tomato_plant.tscn
rename to prefabs/farm/plants/base_plant.tscn
index a342358..0b9ea30 100644
--- a/prefabs/farm/tomato_plant.tscn
+++ b/prefabs/farm/plants/base_plant.tscn
@@ -1,20 +1,18 @@
-[gd_scene load_steps=13 format=3 uid="uid://gishbn0a8eke"]
+[gd_scene load_steps=11 format=3 uid="uid://gishbn0a8eke"]
[ext_resource type="Script" uid="uid://cms357f23fmfy" path="res://scripts/CSharp/Common/Farming/PlantBehaviour2D.cs" id="1_66p1c"]
-[ext_resource type="Texture2D" uid="uid://dtr4uga5uspg" path="res://art/farm/farming/farmobjekte/tomaten/tomaten baby.png" id="2_vjw4j"]
+[ext_resource type="Texture2D" uid="uid://mrnc81ukugh6" path="res://art/farm/farming/farmobjekte/plant_template.png" id="2_oyl0t"]
[ext_resource type="Shader" uid="uid://braevmqauoek7" path="res://shader/swaying_plant.gdshader" id="3_7hdur"]
-[ext_resource type="Texture2D" uid="uid://b2gu6ur2xc7s4" path="res://art/farm/farming/farmobjekte/tomaten/tomaten blume.png" id="4_hmj2d"]
[ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="5_3j24b"]
[ext_resource type="PackedScene" uid="uid://dpbbroif2tnil" path="res://prefabs/interactions/generic_item_on_ground_2d.tscn" id="6_gdrin"]
-[ext_resource type="Resource" uid="uid://blr8tine5m0ma" path="res://resources/items/tomato.tres" id="7_di4m0"]
-[ext_resource type="Texture2D" uid="uid://cnwd3mb3jnuxm" path="res://art/farm/farming/farmobjekte/tomaten/teen adulte tomaten.png" id="8_evgr8"]
+[ext_resource type="Resource" uid="uid://blr8tine5m0ma" path="res://resources/items/tomato.tres" id="7_vjw4j"]
[ext_resource type="Texture2D" uid="uid://bleimj6jr1jka" path="res://art/general/rectangle.png" id="9_vjw4j"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_u4cty"]
shader = ExtResource("3_7hdur")
-shader_parameter/speed = 3.0
+shader_parameter/speed = 2.0
shader_parameter/minStrength = 0.05
-shader_parameter/maxStrength = 0.36
+shader_parameter/maxStrength = 0.206
shader_parameter/strengthScale = 100.0
shader_parameter/interval = 3.5
shader_parameter/detail = 1.0
@@ -34,39 +32,40 @@ radius = 300.0
z_index = 1
y_sort_enabled = true
script = ExtResource("1_66p1c")
-_seeds = [NodePath("Seeds/TomatoSeed"), NodePath("Seeds/TomatoSeed2"), NodePath("Seeds/TomatoSeed3")]
-_smallPlants = [NodePath("SmallPlant/01"), NodePath("SmallPlant/02"), NodePath("SmallPlant/03"), NodePath("SmallPlant/04")]
-_bigPlants = [NodePath("BigPlant/01"), NodePath("BigPlant/02"), NodePath("BigPlant/03"), NodePath("BigPlant/04")]
-_readyPlants = [NodePath("ReadyPlantInventoryItem/ReadyPlant/01"), NodePath("ReadyPlantInventoryItem/ReadyPlant/02"), NodePath("ReadyPlantInventoryItem/ReadyPlant/03"), NodePath("ReadyPlantInventoryItem/ReadyPlant/04")]
+_seeds = [NodePath("Seeds/Seed1"), NodePath("Seeds/Seed2"), NodePath("Seeds/Seed3")]
+_smallPlants = [NodePath("SmallPlant/01"), NodePath("SmallPlant/02"), NodePath("SmallPlant/03")]
+_bigPlants = [NodePath("BigPlant/01"), NodePath("BigPlant/02"), NodePath("BigPlant/03")]
+_readyPlants = [NodePath("ReadyPlantInventoryItem/ReadyPlant/01"), NodePath("ReadyPlantInventoryItem/ReadyPlant/02"), NodePath("ReadyPlantInventoryItem/ReadyPlant/03")]
_harvestablePlant = NodePath("ReadyPlantInventoryItem")
_magicEffect = NodePath("magic vfx")
+_magicWordNeeded = false
[node name="Seeds" type="Node2D" parent="."]
position = Vector2(0, 0.5)
-[node name="TomatoSeed" type="Sprite2D" parent="Seeds"]
+[node name="Seed1" type="Sprite2D" parent="Seeds"]
visible = false
y_sort_enabled = true
-texture = ExtResource("2_vjw4j")
-flip_v = true
+position = Vector2(2.5, -56.5)
+texture = ExtResource("2_oyl0t")
region_enabled = true
-region_rect = Rect2(-2, 15, 85, 81)
+region_rect = Rect2(524, 1182, 294, 284)
-[node name="TomatoSeed2" type="Sprite2D" parent="Seeds"]
+[node name="Seed2" type="Sprite2D" parent="Seeds"]
visible = false
y_sort_enabled = true
-texture = ExtResource("2_vjw4j")
-flip_v = true
+position = Vector2(2.5, -56.5)
+texture = ExtResource("2_oyl0t")
region_enabled = true
-region_rect = Rect2(15, 177, 84, 108)
+region_rect = Rect2(930, 1182, 296, 289)
-[node name="TomatoSeed3" type="Sprite2D" parent="Seeds"]
+[node name="Seed3" type="Sprite2D" parent="Seeds"]
visible = false
y_sort_enabled = true
-texture = ExtResource("2_vjw4j")
-flip_v = true
+position = Vector2(2.5, -56.5)
+texture = ExtResource("2_oyl0t")
region_enabled = true
-region_rect = Rect2(3, 337, 85, 82)
+region_rect = Rect2(1328, 1184, 282, 292)
[node name="SmallPlant" type="Node2D" parent="."]
position = Vector2(0, 0.5)
@@ -75,33 +74,28 @@ position = Vector2(0, 0.5)
visible = false
y_sort_enabled = true
material = SubResource("ShaderMaterial_u4cty")
-texture = ExtResource("2_vjw4j")
+position = Vector2(2.5, -56.5)
+texture = ExtResource("2_oyl0t")
region_enabled = true
-region_rect = Rect2(203, 1, 128, 164)
+region_rect = Rect2(1810, 1190, 258, 299)
[node name="02" type="Sprite2D" parent="SmallPlant"]
visible = false
y_sort_enabled = true
material = SubResource("ShaderMaterial_u4cty")
-texture = ExtResource("2_vjw4j")
+position = Vector2(2.5, -56.5)
+texture = ExtResource("2_oyl0t")
region_enabled = true
-region_rect = Rect2(218, 204, 112, 130)
+region_rect = Rect2(2206, 1182, 274, 306)
[node name="03" type="Sprite2D" parent="SmallPlant"]
visible = false
y_sort_enabled = true
material = SubResource("ShaderMaterial_u4cty")
-texture = ExtResource("2_vjw4j")
+position = Vector2(2.5, -56.5)
+texture = ExtResource("2_oyl0t")
region_enabled = true
-region_rect = Rect2(224, 399, 105, 105)
-
-[node name="04" type="Sprite2D" parent="SmallPlant"]
-visible = false
-y_sort_enabled = true
-material = SubResource("ShaderMaterial_u4cty")
-texture = ExtResource("2_vjw4j")
-region_enabled = true
-region_rect = Rect2(228, 600, 85, 92)
+region_rect = Rect2(2588, 1178, 282, 300)
[node name="BigPlant" type="Node2D" parent="."]
position = Vector2(0, -300)
@@ -110,33 +104,28 @@ position = Vector2(0, -300)
visible = false
y_sort_enabled = true
material = SubResource("ShaderMaterial_u4cty")
-texture = ExtResource("4_hmj2d")
+position = Vector2(2.5, -56.5)
+texture = ExtResource("2_oyl0t")
region_enabled = true
-region_rect = Rect2(-8, 1, 498, 682)
+region_rect = Rect2(3454, 133, 850, 895)
[node name="02" type="Sprite2D" parent="BigPlant"]
visible = false
y_sort_enabled = true
material = SubResource("ShaderMaterial_u4cty")
-texture = ExtResource("4_hmj2d")
+position = Vector2(12.5, -44.5)
+texture = ExtResource("2_oyl0t")
region_enabled = true
-region_rect = Rect2(575, 82, 516, 591)
+region_rect = Rect2(4498, 134, 764, 903)
[node name="03" type="Sprite2D" parent="BigPlant"]
visible = false
y_sort_enabled = true
material = SubResource("ShaderMaterial_u4cty")
-texture = ExtResource("4_hmj2d")
+position = Vector2(16.5, -37.5)
+texture = ExtResource("2_oyl0t")
region_enabled = true
-region_rect = Rect2(-25, 694, 521, 687)
-
-[node name="04" type="Sprite2D" parent="BigPlant"]
-visible = false
-y_sort_enabled = true
-material = SubResource("ShaderMaterial_u4cty")
-texture = ExtResource("4_hmj2d")
-region_enabled = true
-region_rect = Rect2(546, 697, 535, 687)
+region_rect = Rect2(5416, 136, 647, 895)
[node name="GrowingInteractionArea" parent="." instance=ExtResource("5_3j24b")]
position = Vector2(0, 2.3)
@@ -151,7 +140,7 @@ position = Vector2(0, 2.3)
IsActive = false
[node name="SpawnWithItem" parent="ReadyPlantInventoryItem" index="0"]
-_blueprint = ExtResource("7_di4m0")
+_blueprint = ExtResource("7_vjw4j")
[node name="ItemLabel" parent="ReadyPlantInventoryItem" index="1"]
visible = false
@@ -177,33 +166,28 @@ position = Vector2(0, -400)
visible = false
y_sort_enabled = true
material = SubResource("ShaderMaterial_u4cty")
-texture = ExtResource("8_evgr8")
+position = Vector2(-24.5, 50.2)
+texture = ExtResource("2_oyl0t")
region_enabled = true
-region_rect = Rect2(399, 3, 679, 808)
+region_rect = Rect2(474, 130, 752, 887)
[node name="02" type="Sprite2D" parent="ReadyPlantInventoryItem/ReadyPlant"]
visible = false
y_sort_enabled = true
material = SubResource("ShaderMaterial_u4cty")
-texture = ExtResource("8_evgr8")
+position = Vector2(-1.5, 49.2)
+texture = ExtResource("2_oyl0t")
region_enabled = true
-region_rect = Rect2(1077, 109, 633, 695)
+region_rect = Rect2(1418, 134, 843, 887)
[node name="03" type="Sprite2D" parent="ReadyPlantInventoryItem/ReadyPlant"]
visible = false
y_sort_enabled = true
material = SubResource("ShaderMaterial_u4cty")
-texture = ExtResource("8_evgr8")
-region_enabled = true
-region_rect = Rect2(415, 838, 639, 817)
-
-[node name="04" type="Sprite2D" parent="ReadyPlantInventoryItem/ReadyPlant"]
-visible = false
-y_sort_enabled = true
-material = SubResource("ShaderMaterial_u4cty")
-texture = ExtResource("8_evgr8")
+position = Vector2(0.5, 49.2)
+texture = ExtResource("2_oyl0t")
region_enabled = true
-region_rect = Rect2(1167, 863, 528, 785)
+region_rect = Rect2(2461, 134, 841, 878)
[node name="magic vfx" type="CPUParticles2D" parent="."]
position = Vector2(-133, -347)
@@ -225,6 +209,7 @@ color = Color(0.400601, 0.62444, 0.791217, 1)
hue_variation_max = 0.4
[connection signal="Interacted" from="GrowingInteractionArea" to="." method="Grow"]
+[connection signal="SuccessfulPickUp" from="ReadyPlantInventoryItem" to="." method="queue_free"]
[editable path="GrowingInteractionArea"]
[editable path="ReadyPlantInventoryItem"]
diff --git a/prefabs/farm/plants/beet_plant.tscn b/prefabs/farm/plants/beet_plant.tscn
new file mode 100644
index 0000000..8f6dedc
--- /dev/null
+++ b/prefabs/farm/plants/beet_plant.tscn
@@ -0,0 +1,64 @@
+[gd_scene load_steps=6 format=3 uid="uid://d20oftcb5qso6"]
+
+[ext_resource type="PackedScene" uid="uid://gishbn0a8eke" path="res://prefabs/farm/plants/base_plant.tscn" id="1_2u3jr"]
+[ext_resource type="Texture2D" uid="uid://bmcs8bmwb5nti" path="res://art/farm/farming/farmobjekte/beetroot/beetroot_template.png" id="2_agmuy"]
+[ext_resource type="Resource" uid="uid://0mnsr4anoaiq" path="res://resources/items/beet.tres" id="3_agmuy"]
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_hiixr"]
+resource_local_to_scene = true
+radius = 300.0
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_ae08q"]
+resource_local_to_scene = true
+radius = 300.0
+
+[node name="Beet2" instance=ExtResource("1_2u3jr")]
+
+[node name="Seed1" parent="Seeds" index="0"]
+texture = ExtResource("2_agmuy")
+
+[node name="Seed2" parent="Seeds" index="1"]
+texture = ExtResource("2_agmuy")
+
+[node name="Seed3" parent="Seeds" index="2"]
+texture = ExtResource("2_agmuy")
+
+[node name="01" parent="SmallPlant" index="0"]
+texture = ExtResource("2_agmuy")
+
+[node name="02" parent="SmallPlant" index="1"]
+texture = ExtResource("2_agmuy")
+
+[node name="03" parent="SmallPlant" index="2"]
+texture = ExtResource("2_agmuy")
+
+[node name="01" parent="BigPlant" index="0"]
+texture = ExtResource("2_agmuy")
+
+[node name="02" parent="BigPlant" index="1"]
+texture = ExtResource("2_agmuy")
+
+[node name="03" parent="BigPlant" index="2"]
+texture = ExtResource("2_agmuy")
+
+[node name="CollisionShape3D" parent="GrowingInteractionArea/Area2D" index="0"]
+shape = SubResource("CircleShape2D_hiixr")
+
+[node name="SpawnWithItem" parent="ReadyPlantInventoryItem" index="0"]
+_blueprint = ExtResource("3_agmuy")
+
+[node name="CollisionShape3D" parent="ReadyPlantInventoryItem/PickupInteractionArea/Area2D" index="0"]
+shape = SubResource("CircleShape2D_ae08q")
+
+[node name="01" parent="ReadyPlantInventoryItem/ReadyPlant" index="0"]
+texture = ExtResource("2_agmuy")
+
+[node name="02" parent="ReadyPlantInventoryItem/ReadyPlant" index="1"]
+texture = ExtResource("2_agmuy")
+
+[node name="03" parent="ReadyPlantInventoryItem/ReadyPlant" index="2"]
+texture = ExtResource("2_agmuy")
+
+[editable path="GrowingInteractionArea"]
+[editable path="ReadyPlantInventoryItem"]
+[editable path="ReadyPlantInventoryItem/PickupInteractionArea"]
diff --git a/prefabs/farm/plants/tomato_plant.tscn b/prefabs/farm/plants/tomato_plant.tscn
new file mode 100644
index 0000000..5df96ea
--- /dev/null
+++ b/prefabs/farm/plants/tomato_plant.tscn
@@ -0,0 +1,60 @@
+[gd_scene load_steps=5 format=3 uid="uid://n8tv8gafsrfo"]
+
+[ext_resource type="PackedScene" uid="uid://gishbn0a8eke" path="res://prefabs/farm/plants/base_plant.tscn" id="1_ooshk"]
+[ext_resource type="Texture2D" uid="uid://cyyxqmphcrjj" path="res://art/farm/farming/farmobjekte/tomaten/tomaten_template.png" id="2_gdicx"]
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_on0x0"]
+resource_local_to_scene = true
+radius = 300.0
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_gkatd"]
+resource_local_to_scene = true
+radius = 300.0
+
+[node name="TomatoPlant" instance=ExtResource("1_ooshk")]
+
+[node name="Seed1" parent="Seeds" index="0"]
+texture = ExtResource("2_gdicx")
+
+[node name="Seed2" parent="Seeds" index="1"]
+texture = ExtResource("2_gdicx")
+
+[node name="Seed3" parent="Seeds" index="2"]
+texture = ExtResource("2_gdicx")
+
+[node name="01" parent="SmallPlant" index="0"]
+texture = ExtResource("2_gdicx")
+
+[node name="02" parent="SmallPlant" index="1"]
+texture = ExtResource("2_gdicx")
+
+[node name="03" parent="SmallPlant" index="2"]
+texture = ExtResource("2_gdicx")
+
+[node name="01" parent="BigPlant" index="0"]
+texture = ExtResource("2_gdicx")
+
+[node name="02" parent="BigPlant" index="1"]
+texture = ExtResource("2_gdicx")
+
+[node name="03" parent="BigPlant" index="2"]
+texture = ExtResource("2_gdicx")
+
+[node name="CollisionShape3D" parent="GrowingInteractionArea/Area2D" index="0"]
+shape = SubResource("CircleShape2D_on0x0")
+
+[node name="CollisionShape3D" parent="ReadyPlantInventoryItem/PickupInteractionArea/Area2D" index="0"]
+shape = SubResource("CircleShape2D_gkatd")
+
+[node name="01" parent="ReadyPlantInventoryItem/ReadyPlant" index="0"]
+texture = ExtResource("2_gdicx")
+
+[node name="02" parent="ReadyPlantInventoryItem/ReadyPlant" index="1"]
+texture = ExtResource("2_gdicx")
+
+[node name="03" parent="ReadyPlantInventoryItem/ReadyPlant" index="2"]
+texture = ExtResource("2_gdicx")
+
+[editable path="GrowingInteractionArea"]
+[editable path="ReadyPlantInventoryItem"]
+[editable path="ReadyPlantInventoryItem/PickupInteractionArea"]
diff --git a/prefabs/farm/tomato_field.tscn b/prefabs/farm/tomato_field.tscn
deleted file mode 100644
index 8f1e2bf..0000000
--- a/prefabs/farm/tomato_field.tscn
+++ /dev/null
@@ -1,54 +0,0 @@
-[gd_scene load_steps=10 format=3 uid="uid://b1d2e7ely6hyw"]
-
-[ext_resource type="Script" uid="uid://bdffon388rkty" path="res://scripts/CSharp/Common/Farming/FieldBehaviour2D.cs" id="2_vl3uw"]
-[ext_resource type="Texture2D" uid="uid://cgmu3qlovdr22" path="res://art/masks/field_outline_1.png" id="3_uqkef"]
-[ext_resource type="Texture2D" uid="uid://eg5ej0mtuac" path="res://art/masks/field_outline_2.png" id="4_di17a"]
-[ext_resource type="Texture2D" uid="uid://djpigvoyadvjs" path="res://art/masks/field_outline_3.png" id="5_4a8nv"]
-[ext_resource type="Texture2D" uid="uid://c2pirgay3jfnn" path="res://art/farm/tilable grounds/böden/trockene farming erde.png" id="6_l7j4c"]
-[ext_resource type="Texture2D" uid="uid://ctvdxwgmfaj5c" path="res://art/farm/tilable grounds/böden/nasse farming erde.png" id="7_f504p"]
-[ext_resource type="PackedScene" uid="uid://gishbn0a8eke" path="res://prefabs/farm/tomato_plant.tscn" id="8_jrdc4"]
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_jrdc4"]
-resource_local_to_scene = true
-radius = 300.0
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_l0vvv"]
-resource_local_to_scene = true
-radius = 300.0
-
-[node name="BaseField" type="Node2D"]
-
-[node name="FieldBehaviour" type="Sprite2D" parent="." node_paths=PackedStringArray("_fieldSprite", "_maskSprite", "_growingCollider")]
-z_index = -1
-scale = Vector2(0.9, 1)
-script = ExtResource("2_vl3uw")
-_fieldSprite = NodePath("MaskedField/FieldTexture")
-_maskSprite = NodePath("MaskedField")
-_maskTexture = Array[Texture2D]([ExtResource("3_uqkef"), ExtResource("4_di17a"), ExtResource("5_4a8nv")])
-Tilled = ExtResource("6_l7j4c")
-Watered = ExtResource("7_f504p")
-_growingCollider = NodePath("BasePlant2/GrowingInteractionArea")
-
-[node name="BasePlant2" parent="FieldBehaviour" node_paths=PackedStringArray("_field") groups=["PlantGrowing"] instance=ExtResource("8_jrdc4")]
-visible = false
-_field = NodePath("..")
-_magicWordNeeded = false
-
-[node name="CollisionShape3D" parent="FieldBehaviour/BasePlant2/GrowingInteractionArea/Area2D" index="0"]
-shape = SubResource("CircleShape2D_jrdc4")
-
-[node name="CollisionShape3D" parent="FieldBehaviour/BasePlant2/ReadyPlantInventoryItem/PickupInteractionArea/Area2D" index="0"]
-shape = SubResource("CircleShape2D_l0vvv")
-
-[node name="MaskedField" type="Sprite2D" parent="FieldBehaviour"]
-clip_children = 1
-scale = Vector2(1.5, 1.5)
-texture = ExtResource("4_di17a")
-
-[node name="FieldTexture" type="Sprite2D" parent="FieldBehaviour/MaskedField"]
-texture = ExtResource("6_l7j4c")
-
-[editable path="FieldBehaviour/BasePlant2"]
-[editable path="FieldBehaviour/BasePlant2/GrowingInteractionArea"]
-[editable path="FieldBehaviour/BasePlant2/ReadyPlantInventoryItem"]
-[editable path="FieldBehaviour/BasePlant2/ReadyPlantInventoryItem/PickupInteractionArea"]
diff --git a/prefabs/interactions/generic_item_on_ground_2d.tscn b/prefabs/interactions/generic_item_on_ground_2d.tscn
index af32756..c43511a 100644
--- a/prefabs/interactions/generic_item_on_ground_2d.tscn
+++ b/prefabs/interactions/generic_item_on_ground_2d.tscn
@@ -1,10 +1,15 @@
-[gd_scene load_steps=9 format=3 uid="uid://dpbbroif2tnil"]
+[gd_scene load_steps=15 format=3 uid="uid://dpbbroif2tnil"]
[ext_resource type="Script" uid="uid://btusf04xnywhm" path="res://scripts/CSharp/Common/Inventory/ItemOnGround2D.cs" id="1_tlhp6"]
[ext_resource type="Script" uid="uid://c8suoi3i6kqai" path="res://scripts/CSharp/Common/Inventory/ItemOnGroundSpawnWith.cs" id="3_xu8me"]
[ext_resource type="Material" uid="uid://bv3m12duf0dj6" path="res://art/materials/inventory_interactable_outline.tres" id="4_harr4"]
[ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="4_xu8me"]
[ext_resource type="Texture2D" uid="uid://cfxibry711o16" path="res://art/ui/UI/icons/icon-scythe.png" id="5_harr4"]
+[ext_resource type="AudioStream" uid="uid://bw630minafpvb" path="res://audio/sfx/UI/SFX_ItemPickUp_01.wav" id="6_gcj2v"]
+[ext_resource type="AudioStream" uid="uid://by8ubxnfbrisv" path="res://audio/sfx/UI/SFX_ItemPickUp_02.wav" id="7_edjam"]
+[ext_resource type="AudioStream" uid="uid://bqm6rchwtelxj" path="res://audio/sfx/UI/SFX_ItemPickUp_03.wav" id="8_kflfw"]
+[ext_resource type="AudioStream" uid="uid://brsufnpmig5fv" path="res://audio/sfx/UI/SFX_ItemPickUp_04.wav" id="9_dltn0"]
+[ext_resource type="Script" uid="uid://dx25g14a7xi4w" path="res://scripts/CSharp/Common/Audio/AudioPlayer.cs" id="10_clbey"]
[sub_resource type="Theme" id="Theme_tlhp6"]
default_font_size = 80
@@ -16,6 +21,13 @@ default_font_size = 40
resource_local_to_scene = true
radius = 300.0
+[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_7mdru"]
+streams_count = 4
+stream_0/stream = ExtResource("6_gcj2v")
+stream_1/stream = ExtResource("7_edjam")
+stream_2/stream = ExtResource("8_kflfw")
+stream_3/stream = ExtResource("9_dltn0")
+
[node name="GenericItemOnGround" type="Node2D"]
z_index = 1
y_sort_enabled = true
@@ -55,6 +67,15 @@ position = Vector2(5, -300)
scale = Vector2(0.868852, 0.868852)
texture = ExtResource("5_harr4")
+[node name="SFX" type="Node" parent="."]
+
+[node name="PickUpSound" type="AudioStreamPlayer" parent="SFX"]
+stream = SubResource("AudioStreamRandomizer_7mdru")
+bus = &"SFX"
+playback_type = 2
+script = ExtResource("10_clbey")
+
[connection signal="Interacted" from="PickupInteractionArea" to="." method="TryPickUp"]
+[connection signal="Interacted" from="PickupInteractionArea" to="SFX/PickUpSound" method="PlayOneShot"]
[editable path="PickupInteractionArea"]
diff --git a/project.godot b/project.godot
index 8c08406..baff4e1 100644
--- a/project.godot
+++ b/project.godot
@@ -28,9 +28,9 @@ buses/default_bus_layout="uid://b6dwkmkyb0axk"
SceneTransition="*res://scenes/SceneTransition.tscn"
Dialogic="*res://addons/dialogic/Core/DialogicGameHandler.gd"
InventoryManager="*res://scripts/CSharp/Common/Inventory/InventoryManager.cs"
+QuestManager="*res://prefabs/quests/quest_manager_autoload.tscn"
FightManagerAutoload="*res://prefabs/fight/fight_manager_autoload.tscn"
InputService="*res://scripts/CSharp/Common/Services/InputService.cs"
-QuestManager="*res://prefabs/quests/quest_manager_autoload.tscn"
Signal_Debugger="*res://addons/SignalVisualizer/Debugger/SignalDebugger.gd"
[dialogic]
@@ -75,7 +75,7 @@ variables={
"SHOW": "IGF"
}
glossary/default_case_sensitive=true
-layout/style_list=["res://dialog/NPC_narrative.tres"]
+layout/style_list=["res://dialog/NPC_narrative.tres", "res://addons/babushkahelpers/babushka_dialogue_style.tres", "res://addons/dialogic/vesna_style.tres"]
layout/default_style="res://dialog/NPC_narrative.tres"
extensions_folder="res://addons/dialogic_additions"
text/letter_speed=0.01
@@ -134,8 +134,10 @@ directories/tres_directory={
"SimpleButtonNormal": "res://addons/dialogic/Editor/Events/styles/SimpleButtonNormal.tres",
"TextBackground": "res://addons/dialogic/Editor/Events/styles/TextBackground.tres",
"TitleBgStylebox": "res://addons/dialogic/Editor/Common/TitleBgStylebox.tres",
+"babushka_dialogue_style": "res://addons/babushkahelpers/babushka_dialogue_style.tres",
"beet": "res://resources/items/beet.tres",
"beetRoot": "res://resources/quests/beetRoot.tres",
+"beet_seed": "res://resources/items/beet_seed.tres",
"choice_panel_focus": "res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choice_panel_focus.tres",
"choice_panel_hover": "res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choice_panel_hover.tres",
"choice_panel_normal": "res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/choice_panel_normal.tres",
@@ -145,6 +147,7 @@ directories/tres_directory={
"farming_equipment_glossary": "res://dialog/farming_equipment_glossary.tres",
"hoe": "res://resources/items/hoe.tres",
"inventory_interactable_outline": "res://art/materials/inventory_interactable_outline.tres",
+"itemRepository": "res://resources/itemRepository.tres",
"preview_character": "res://addons/dialogic/Modules/Character/preview_character.tres",
"rake": "res://resources/items/rake.tres",
"scythe": "res://resources/items/scythe.tres",
@@ -163,6 +166,7 @@ directories/tres_directory={
"tomato": "res://resources/items/tomato.tres",
"tomato_seed": "res://resources/items/tomato_seed.tres",
"unselected_stylebox": "res://addons/dialogic/Editor/Events/styles/unselected_stylebox.tres",
+"vesna_style": "res://addons/dialogic/vesna_style.tres",
"vn_textbox_default_panel": "res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_default_panel.tres",
"vn_textbox_name_label_panel": "res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_name_label_panel.tres",
"wateringcan": "res://resources/items/wateringcan.tres"
@@ -207,6 +211,7 @@ folder_colors={
[global_group]
PlantGrowing=""
+Pickup=""
[input]
diff --git a/resources/itemRepository.tres b/resources/itemRepository.tres
new file mode 100644
index 0000000..f9e2781
--- /dev/null
+++ b/resources/itemRepository.tres
@@ -0,0 +1,13 @@
+[gd_resource type="Resource" script_class="ItemRepository" load_steps=4 format=3 uid="uid://d284vxftxhym0"]
+
+[ext_resource type="Resource" uid="uid://d1uuxp1lp4aro" path="res://resources/items/tomato_seed.tres" id="1_67bbe"]
+[ext_resource type="Script" uid="uid://oafmfqkdqewd" path="res://scripts/CSharp/Common/Inventory/ItemRepository.cs" id="1_ew4x0"]
+[ext_resource type="Resource" uid="uid://duq7tshxv6uhp" path="res://resources/items/beet_seed.tres" id="2_67bbe"]
+
+[resource]
+script = ExtResource("1_ew4x0")
+itemInventoryRepository = Dictionary[Object, String]({
+ExtResource("1_67bbe"): "res://prefabs/farm/plants/tomato_plant.tscn",
+ExtResource("2_67bbe"): "res://prefabs/farm/plants/beet_plant.tscn"
+})
+metadata/_custom_type_script = "uid://oafmfqkdqewd"
diff --git a/resources/items/beet.tres b/resources/items/beet.tres
index 4526b26..d8c4391 100644
--- a/resources/items/beet.tres
+++ b/resources/items/beet.tres
@@ -1,11 +1,11 @@
[gd_resource type="Resource" script_class="ItemResource" load_steps=3 format=3 uid="uid://0mnsr4anoaiq"]
-[ext_resource type="Texture2D" uid="uid://b5ade1s2ijunu" path="res://art/farm/farming/farmobjekte/beetroot/beetroot_icon.png" id="1_wddc8"]
+[ext_resource type="Texture2D" uid="uid://djewfwrdt4iv3" path="res://art/ui/UI/icons/icon-fruit-beetroot.png" id="1_wddc8"]
[ext_resource type="Script" uid="uid://cbskymrxs6ksu" path="res://scripts/CSharp/Common/Inventory/ItemResource.cs" id="2_5t85d"]
[resource]
script = ExtResource("2_5t85d")
-name = "Tomato"
+name = "Beet"
color = Color(0.451671, 0.0462732, 0.396459, 1)
icon = ExtResource("1_wddc8")
maxStack = 20
diff --git a/resources/items/beet_seed.tres b/resources/items/beet_seed.tres
new file mode 100644
index 0000000..72853e9
--- /dev/null
+++ b/resources/items/beet_seed.tres
@@ -0,0 +1,12 @@
+[gd_resource type="Resource" script_class="ItemResource" load_steps=3 format=3 uid="uid://duq7tshxv6uhp"]
+
+[ext_resource type="Texture2D" uid="uid://b4pa77olxr14q" path="res://art/ui/UI/icons/icon-seed-beetroot.png" id="1_umigy"]
+[ext_resource type="Script" uid="uid://cbskymrxs6ksu" path="res://scripts/CSharp/Common/Inventory/ItemResource.cs" id="2_hrv3l"]
+
+[resource]
+script = ExtResource("2_hrv3l")
+name = "Beet Seeds"
+color = Color(0.451671, 0.0462732, 0.396459, 1)
+icon = ExtResource("1_umigy")
+maxStack = 20
+metadata/_custom_type_script = "uid://cbskymrxs6ksu"
diff --git a/resources/items/tomato_seed.tres b/resources/items/tomato_seed.tres
index e778349..d66cfd9 100644
--- a/resources/items/tomato_seed.tres
+++ b/resources/items/tomato_seed.tres
@@ -1,7 +1,7 @@
[gd_resource type="Resource" script_class="ItemResource" load_steps=3 format=3 uid="uid://d1uuxp1lp4aro"]
[ext_resource type="Script" uid="uid://cbskymrxs6ksu" path="res://scripts/CSharp/Common/Inventory/ItemResource.cs" id="1_dustj"]
-[ext_resource type="Texture2D" uid="uid://ce04nexh36uwe" path="res://art/ui/UI/icons/icon-seed-tomatoe.png" id="1_u15c2"]
+[ext_resource type="Texture2D" uid="uid://b51j84idxe7hr" path="res://art/ui/UI/icons/icon-seed-tomato.png" id="1_u15c2"]
[resource]
script = ExtResource("1_dustj")
diff --git a/scenes/Babushka_scene_farm_outside_2d.tscn b/scenes/Babushka_scene_farm_outside_2d.tscn
index 64a27a3..262cd94 100644
--- a/scenes/Babushka_scene_farm_outside_2d.tscn
+++ b/scenes/Babushka_scene_farm_outside_2d.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=119 format=3 uid="uid://gigb28qk8t12"]
+[gd_scene load_steps=116 format=3 uid="uid://gigb28qk8t12"]
[ext_resource type="PackedScene" uid="uid://c25udixd5m6l0" path="res://prefabs/characters/Player2D.tscn" id="1_7wfwe"]
[ext_resource type="Texture2D" uid="uid://8sr11ex30n0m" path="res://art/mockups/Kenney_Backgrounds/Samples/uncolored_hills.png" id="2_7b2ri"]
@@ -30,16 +30,16 @@
[ext_resource type="PackedScene" uid="uid://dfvgp1my5rydh" path="res://prefabs/characters/Yeli.tscn" id="24_wtdui"]
[ext_resource type="Script" uid="uid://dhxtdhfqx3bte" path="res://scripts/CSharp/Common/Farming/FieldService2D.cs" id="25_0qu0h"]
[ext_resource type="PackedScene" uid="uid://dpbbroif2tnil" path="res://prefabs/interactions/generic_item_on_ground_2d.tscn" id="25_hukxv"]
-[ext_resource type="Resource" uid="uid://c5yg3lx756v4v" path="res://resources/items/hoe.tres" id="26_ipqaa"]
-[ext_resource type="Resource" uid="uid://c7viddcd3kywp" path="res://resources/items/shovel.tres" id="27_ipqaa"]
[ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="27_klb81"]
[ext_resource type="Resource" uid="uid://dlcmqfjvgphqu" path="res://resources/items/rake.tres" id="28_6b2nr"]
[ext_resource type="Resource" uid="uid://cndd64batns31" path="res://resources/items/wateringcan.tres" id="28_ipqaa"]
-[ext_resource type="Resource" uid="uid://datee0flk1e84" path="res://resources/items/scythe.tres" id="29_wtdui"]
[ext_resource type="PackedScene" uid="uid://cgjc4wurbgimy" path="res://prefabs/UI/Inventory/Inventory.tscn" id="32_2nee2"]
[ext_resource type="Script" uid="uid://boehox1ydbcnx" path="res://scripts/CSharp/Common/Farming/WellBehaviour.cs" id="32_lbnqo"]
[ext_resource type="Script" uid="uid://cssdu8viimwm6" path="res://scripts/CSharp/Common/SceneTransition.cs" id="34_e5b7x"]
+[ext_resource type="Resource" uid="uid://d1uuxp1lp4aro" path="res://resources/items/tomato_seed.tres" id="35_64mdn"]
[ext_resource type="Texture2D" uid="uid://65e44yde224q" path="res://art/farm/Babushka_house_01.png" id="36_e5b7x"]
+[ext_resource type="Resource" uid="uid://duq7tshxv6uhp" path="res://resources/items/beet_seed.tres" id="36_fv1t2"]
+[ext_resource type="Texture2D" uid="uid://b4krfobwq3r3h" path="res://art/test_tomatos.png" id="36_l7ekk"]
[ext_resource type="AudioStream" uid="uid://cfqg50am0swb7" path="res://audio/Music/Farming_90BPM_69Bars_Loop.wav" id="37_8ey8m"]
[ext_resource type="AudioStream" uid="uid://dku1rq5cocisg" path="res://audio/Music/Farming_90BPM_69Bars.wav" id="37_di1ed"]
[ext_resource type="Shader" uid="uid://braevmqauoek7" path="res://shader/swaying_plant.gdshader" id="37_taxvr"]
@@ -47,7 +47,7 @@
[ext_resource type="AudioStream" uid="uid://fsiypqhql67w" path="res://audio/sfx/Farming/SFX_GettingWater_01.wav" id="39_di1ed"]
[ext_resource type="Texture2D" uid="uid://ccy6bwunhfvrf" path="res://art/farm/Babushka_house_frontDoor.png" id="39_lbnqo"]
[ext_resource type="AudioStream" uid="uid://foyw26hq1qp5" path="res://audio/sfx/Farming/SFX_GettingWater_02.wav" id="40_ceriq"]
-[ext_resource type="Script" uid="uid://cfnrd5k1k0gxw" path="res://scripts/CSharp/Common/AudioPlayer.cs" id="40_w3jkj"]
+[ext_resource type="Script" uid="uid://cfnrd5k1k0gxw" path="res://scripts/CSharp/Common/AudioPlayer2D.cs" id="40_w3jkj"]
[ext_resource type="Texture2D" uid="uid://dgavbfci8x178" path="res://art/nature/grass/grass-1.png" id="41_apj51"]
[ext_resource type="Script" uid="uid://clxb3n668oud3" path="res://scripts/CSharp/Common/Audio/AudioDebugger.cs" id="42_1nkjm"]
[ext_resource type="Texture2D" uid="uid://b644ofy7fml5w" path="res://art/nature/grass/grass-5.png" id="42_loeum"]
@@ -66,7 +66,7 @@
[ext_resource type="Script" uid="uid://dnipeibppjirs" path="res://scripts/CSharp/Common/NPC/DialogicOverlayStarter.cs" id="51_uxa2m"]
[ext_resource type="Script" uid="uid://d2486x6upmwqq" path="res://scripts/GdScript/dialogic_starter.gd" id="52_lwk6t"]
[ext_resource type="PackedScene" uid="uid://sbf12hin4kes" path="res://prefabs/Interactables/trash_object.tscn" id="53_ycj14"]
-[ext_resource type="PackedScene" uid="uid://muuxxgvx33fp" path="res://prefabs/farm/duck.tscn" id="62_i36hd"]
+[ext_resource type="PackedScene" uid="uid://muuxxgvx33fp" path="res://prefabs/farm/animals/duck.tscn" id="62_i36hd"]
[ext_resource type="Script" uid="uid://cldtt4atgymm5" path="res://scripts/CSharp/Common/Quest/QuestTrigger.cs" id="66_2065p"]
[ext_resource type="Resource" uid="uid://cm8kftow8br00" path="res://resources/quests/demo/1_talk_yeli_1.tres" id="67_tm0yg"]
[ext_resource type="Script" uid="uid://c741nyedy26mx" path="res://scripts/CSharp/Common/QuestBehaviour/DetectInventoryContains.cs" id="68_hux6i"]
@@ -165,10 +165,6 @@ size = Vector2(1041, 368)
resource_local_to_scene = true
radius = 371.058
-[sub_resource type="CircleShape2D" id="CircleShape2D_ycj14"]
-resource_local_to_scene = true
-radius = 300.0
-
[sub_resource type="CircleShape2D" id="CircleShape2D_2065p"]
resource_local_to_scene = true
radius = 300.0
@@ -177,27 +173,19 @@ radius = 300.0
resource_local_to_scene = true
radius = 300.0
-[sub_resource type="CircleShape2D" id="CircleShape2D_lbnqo"]
-resource_local_to_scene = true
-radius = 300.0
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_l4wxt"]
-resource_local_to_scene = true
-radius = 300.0
-
[sub_resource type="ShaderMaterial" id="ShaderMaterial_lhtpe"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_bcdgk"]
shader = ExtResource("37_taxvr")
shader_parameter/speed = 1.0
shader_parameter/minStrength = 0.05
-shader_parameter/maxStrength = 0.187
+shader_parameter/maxStrength = 0.326
shader_parameter/strengthScale = 100.0
shader_parameter/interval = 3.5
shader_parameter/detail = 2.095
shader_parameter/distortion = 1.0
shader_parameter/heightOffset = 0.51
-shader_parameter/offset = 1.0
+shader_parameter/offset = 100.0
[sub_resource type="ShaderMaterial" id="ShaderMaterial_618my"]
shader = ExtResource("37_taxvr")
@@ -230,25 +218,25 @@ size = Vector2(5782, 1176)
resource_local_to_scene = true
size = Vector2(7150, 1192)
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_uxa2m"]
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_lwk6t"]
shader = ExtResource("13_7p0hq")
shader_parameter/hue_shift = 0.0
-shader_parameter/saturation_mult = 0.753
+shader_parameter/saturation_mult = 0.871
shader_parameter/value_mult = 1.0
shader_parameter/brightness_add = 0.0
shader_parameter/contrast_mult = 1.0
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_lwk6t"]
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_ycj14"]
+size = Vector2(707.116, 604.111)
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_uxa2m"]
shader = ExtResource("13_7p0hq")
shader_parameter/hue_shift = 0.0
-shader_parameter/saturation_mult = 0.871
+shader_parameter/saturation_mult = 0.753
shader_parameter/value_mult = 1.0
shader_parameter/brightness_add = 0.0
shader_parameter/contrast_mult = 1.0
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_ycj14"]
-size = Vector2(707.116, 604.111)
-
[sub_resource type="AudioStreamPlaylist" id="AudioStreamPlaylist_ceriq"]
loop = false
stream_count = 1
@@ -284,7 +272,7 @@ metadata/_custom_type_script = "uid://be54lnb6gg81f"
[node name="BabushkaSceneFarmOutside2d" type="Node2D"]
script = ExtResource("34_e5b7x")
-_sceneNamesToLoad = PackedStringArray("res://scenes/Babushka_scene_indoor_common_room.tscn")
+_sceneNamesToLoad = PackedStringArray("res://scenes/Babushka_scene_indoor_common_room.tscn", "res://scenes/Babushka_scene_outside_beets.tscn")
[node name="Camera2D" type="Camera2D" parent="." node_paths=PackedStringArray("_followNode")]
position = Vector2(3180, 1961)
@@ -1051,7 +1039,6 @@ z_index = 1
position = Vector2(9322, 2018)
_fieldParent = NodePath("../Farm visuals/FieldParent")
_hoe = ExtResource("28_6b2nr")
-_wateringCan = ExtResource("28_ipqaa")
[node name="FarmingControls" parent="YSorted/Vesna" index="1" node_paths=PackedStringArray("_camera")]
_camera = NodePath("../../../Camera2D")
@@ -1084,16 +1071,6 @@ _id = 1
position = Vector2(146, -130)
shape = SubResource("CircleShape2D_p6n74")
-[node name="HoeGenericPickup" parent="YSorted" instance=ExtResource("25_hukxv")]
-visible = false
-position = Vector2(6095, 2087)
-
-[node name="SpawnWithItem" parent="YSorted/HoeGenericPickup" index="0"]
-_blueprint = ExtResource("26_ipqaa")
-
-[node name="CollisionShape3D" parent="YSorted/HoeGenericPickup/PickupInteractionArea/Area2D" index="0"]
-shape = SubResource("CircleShape2D_ycj14")
-
[node name="CanGenericPickup" parent="YSorted" instance=ExtResource("25_hukxv")]
position = Vector2(8192, 3507)
@@ -1115,25 +1092,36 @@ _blueprint = ExtResource("28_6b2nr")
[node name="CollisionShape3D" parent="YSorted/RakeGenericPickup/PickupInteractionArea/Area2D" index="0"]
shape = SubResource("CircleShape2D_tm0yg")
-[node name="ScytheGenericPickup" parent="YSorted" instance=ExtResource("25_hukxv")]
-visible = false
-position = Vector2(15642, 2158)
+[node name="SeedPickup" parent="YSorted" instance=ExtResource("25_hukxv")]
+position = Vector2(10114, 2469)
+_infiniteSupply = true
+_finiteSupply = 3
-[node name="SpawnWithItem" parent="YSorted/ScytheGenericPickup" index="0"]
-_blueprint = ExtResource("29_wtdui")
+[node name="SpawnWithItem" parent="YSorted/SeedPickup" index="0"]
+_blueprint = ExtResource("35_64mdn")
-[node name="CollisionShape3D" parent="YSorted/ScytheGenericPickup/PickupInteractionArea/Area2D" index="0"]
-shape = SubResource("CircleShape2D_lbnqo")
+[node name="CollisionShape3D" parent="YSorted/SeedPickup/PickupInteractionArea/Area2D" index="0"]
+shape = SubResource("CircleShape2D_tm0yg")
-[node name="ShovelGenericPickup" parent="YSorted" instance=ExtResource("25_hukxv")]
-visible = false
-position = Vector2(5454, 2049)
+[node name="Icon" parent="YSorted/SeedPickup" index="4"]
+scale = Vector2(1, 1)
+
+[node name="Sprite2D" type="Sprite2D" parent="YSorted/SeedPickup"]
+texture = ExtResource("36_l7ekk")
+region_enabled = true
+
+[node name="SeedPickup2" parent="YSorted" instance=ExtResource("25_hukxv")]
+position = Vector2(10892, 2469)
+_finiteSupply = 3
+
+[node name="SpawnWithItem" parent="YSorted/SeedPickup2" index="0"]
+_blueprint = ExtResource("36_fv1t2")
-[node name="SpawnWithItem" parent="YSorted/ShovelGenericPickup" index="0"]
-_blueprint = ExtResource("27_ipqaa")
+[node name="CollisionShape3D" parent="YSorted/SeedPickup2/PickupInteractionArea/Area2D" index="0"]
+shape = SubResource("CircleShape2D_tm0yg")
-[node name="CollisionShape3D" parent="YSorted/ShovelGenericPickup/PickupInteractionArea/Area2D" index="0"]
-shape = SubResource("CircleShape2D_l4wxt")
+[node name="Icon" parent="YSorted/SeedPickup2" index="4"]
+scale = Vector2(1, 1)
[node name="Farm visuals" type="Node2D" parent="YSorted"]
position = Vector2(-60, 122)
@@ -1157,7 +1145,7 @@ position = Vector2(-252.56, 231.32)
polygon = PackedVector2Array(247.227, 43.5123, 44.7822, 43.5123, -87.2178, 45.123, -104.329, -55.2797, -154.107, -73.5347, -160.107, -380.38, -175.44, -400.783, -63.44, -512.461, 97.8934, -541.991, 261.671, -599.172, 374.782, -526.421, 502.338, -526.421, 637.893, -396.488, 598.56, -360.783, 596.338, -58.2327, 528.782, -58.2327, 501.449, 45.9283)
[node name="EnterHouseInteraction" parent="YSorted/Farm visuals/Static" node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("27_klb81")]
-position = Vector2(5839, 2349)
+position = Vector2(5834, 2354)
scale = Vector2(2.425, 2.425)
_spriteToOutline = NodePath("DoorSprite")
_id = 0
@@ -1192,6 +1180,7 @@ region_rect = Rect2(130, 0, 201, 278)
[node name="bush6" type="Sprite2D" parent="YSorted/Farm visuals/Static/greenery/left side"]
modulate = Color(0.8428, 0.8771, 0.98, 1)
+z_index = 2
material = SubResource("ShaderMaterial_bcdgk")
position = Vector2(2612, 4022)
scale = Vector2(2, 2)
@@ -1287,6 +1276,7 @@ region_enabled = true
region_rect = Rect2(1699, 76, 280, 230)
[node name="bush14" type="Sprite2D" parent="YSorted/Farm visuals/Static/greenery/left side"]
+z_index = 2
material = SubResource("ShaderMaterial_bcdgk")
position = Vector2(8925, 4194)
scale = Vector2(-5.54387, 3.80466)
@@ -1297,6 +1287,7 @@ region_rect = Rect2(130, 0, 201, 278)
[node name="bush15" type="Sprite2D" parent="YSorted/Farm visuals/Static/greenery/left side"]
modulate = Color(1, 0.86, 0.86, 1)
+z_index = 2
material = SubResource("ShaderMaterial_bcdgk")
position = Vector2(7757, 4194)
scale = Vector2(3.21806, 3.18583)
@@ -1410,18 +1401,6 @@ offset = Vector2(0, -172)
region_enabled = true
region_rect = Rect2(1837, 651, 139, 180)
-[node name="bush24" type="Sprite2D" parent="YSorted/Farm visuals/Static/greenery/left side"]
-modulate = Color(0.8428, 0.8771, 0.98, 1)
-z_index = 2
-y_sort_enabled = true
-material = SubResource("ShaderMaterial_bcdgk")
-position = Vector2(15973, 3380)
-scale = Vector2(-1.93815, 1.5875)
-texture = ExtResource("14_mrwmr")
-offset = Vector2(0, -172)
-region_enabled = true
-region_rect = Rect2(1464, 419, 144, 115)
-
[node name="bush3" type="Sprite2D" parent="YSorted/Farm visuals/Static/greenery/left side"]
modulate = Color(1, 0.86, 0.86, 1)
material = SubResource("ShaderMaterial_bcdgk")
@@ -1559,6 +1538,7 @@ region_enabled = true
region_rect = Rect2(1699, 76, 280, 230)
[node name="bush13" type="Sprite2D" parent="YSorted/Farm visuals/Static/greenery/right side"]
+z_index = 2
material = SubResource("ShaderMaterial_bcdgk")
position = Vector2(8145, 4141)
scale = Vector2(-2.82886, 2.51195)
@@ -1568,6 +1548,7 @@ region_enabled = true
region_rect = Rect2(1699, 76, 280, 230)
[node name="bush14" type="Sprite2D" parent="YSorted/Farm visuals/Static/greenery/right side"]
+z_index = 2
material = SubResource("ShaderMaterial_bcdgk")
position = Vector2(8925, 4194)
scale = Vector2(-5.54387, 3.80466)
@@ -1578,6 +1559,7 @@ region_rect = Rect2(130, 0, 201, 278)
[node name="bush15" type="Sprite2D" parent="YSorted/Farm visuals/Static/greenery/right side"]
modulate = Color(0.8428, 0.8771, 0.98, 1)
+z_index = 2
material = SubResource("ShaderMaterial_bcdgk")
position = Vector2(7763, 4164)
scale = Vector2(3.21806, 3.18583)
@@ -1844,7 +1826,6 @@ region_enabled = true
region_rect = Rect2(29, 204, 219, 159)
[node name="grass27" type="Sprite2D" parent="YSorted/Farm visuals/Static/greenery/grass"]
-z_index = -5
position = Vector2(7757, 3423)
rotation = 1.57079
scale = Vector2(7.28513, 6.16997)
@@ -1992,7 +1973,7 @@ region_rect = Rect2(29, 204, 219, 159)
[node name="grass5" type="Sprite2D" parent="YSorted/Farm visuals/Static/greenery/grass"]
z_index = -5
-position = Vector2(15375, 3149)
+position = Vector2(15381, 3152)
scale = Vector2(5.77602, 3.87779)
texture = ExtResource("44_uxa2m")
region_enabled = true
@@ -2141,21 +2122,6 @@ shape = SubResource("RectangleShape2D_p6n74")
[node name="Blocker" type="Node2D" parent="YSorted"]
-[node name="Fence Door" type="Sprite2D" parent="YSorted/Blocker"]
-material = SubResource("ShaderMaterial_uxa2m")
-position = Vector2(11205, 1560)
-rotation = 0.00432089
-scale = Vector2(-0.905, 0.925)
-texture = ExtResource("49_i36hd")
-
-[node name="StaticBody2D" type="StaticBody2D" parent="YSorted/Blocker/Fence Door"]
-collision_layer = 2
-collision_mask = 4
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="YSorted/Blocker/Fence Door/StaticBody2D"]
-position = Vector2(-113.561, 193.035)
-shape = SubResource("RectangleShape2D_2vojv")
-
[node name="Fence Door2" type="Sprite2D" parent="YSorted/Blocker"]
material = SubResource("ShaderMaterial_lwk6t")
position = Vector2(3788, 1563)
@@ -2171,6 +2137,26 @@ collision_mask = 4
position = Vector2(-106.663, 182.891)
shape = SubResource("RectangleShape2D_ycj14")
+[node name="InteractionArea" parent="YSorted/Blocker" node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("27_klb81")]
+position = Vector2(11234, 1850)
+_spriteToOutline = NodePath("Fence Door")
+_id = 1
+
+[node name="Fence Door" type="Sprite2D" parent="YSorted/Blocker/InteractionArea"]
+material = SubResource("ShaderMaterial_uxa2m")
+position = Vector2(1, -271)
+rotation = -3.13727
+scale = Vector2(0.905, -0.925)
+texture = ExtResource("49_i36hd")
+
+[node name="StaticBody2D" type="StaticBody2D" parent="YSorted/Blocker/InteractionArea/Fence Door"]
+collision_layer = 2
+collision_mask = 4
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="YSorted/Blocker/InteractionArea/Fence Door/StaticBody2D"]
+position = Vector2(-113.561, 193.035)
+shape = SubResource("RectangleShape2D_2vojv")
+
[node name="ducks" type="Node2D" parent="YSorted"]
z_index = 1
y_sort_enabled = true
@@ -2332,6 +2318,13 @@ offset_top = 0.228533
offset_right = -456.339
offset_bottom = 30.2285
+[node name="QuestLogRoot" parent="CanvasLayer" index="2"]
+metadata/_edit_use_anchors_ = true
+
+[node name="Text" parent="CanvasLayer/Control/ColorRect" index="0"]
+text = "[Hier könnte ihre Werbung stehen]"
+autowrap_mode = 3
+
[node name="Audio" type="Node" parent="."]
[node name="Background Music Ramp up" type="AudioStreamPlayer2D" parent="Audio"]
@@ -2353,6 +2346,24 @@ area_mask = 33
playback_type = 1
script = ExtResource("42_1nkjm")
+[node name="Background Music loop2" type="AudioStreamPlayer2D" parent="Audio"]
+position = Vector2(4002, 2030)
+stream = ExtResource("37_8ey8m")
+max_distance = 1e+06
+bus = &"Music"
+area_mask = 33
+playback_type = 1
+script = ExtResource("42_1nkjm")
+
+[node name="Background Music loop2" type="AudioStreamPlayer2D" parent="Audio/Background Music loop2"]
+position = Vector2(4002, 2030)
+stream = ExtResource("37_8ey8m")
+max_distance = 1e+06
+bus = &"Music"
+area_mask = 33
+playback_type = 1
+script = ExtResource("42_1nkjm")
+
[node name="SFX" type="Node" parent="Audio"]
[node name="Farming SFX" type="AudioStreamPlayer2D" parent="Audio/SFX"]
@@ -2373,28 +2384,28 @@ max_distance = 2e+07
playback_type = 2
script = ExtResource("40_w3jkj")
-[node name="SpeicialQuestTrigger" type="Node" parent="."]
+[node name="SpecialQuestTrigger" type="Node" parent="."]
-[node name="QuestInstantStart" type="Node" parent="SpeicialQuestTrigger"]
+[node name="QuestInstantStart" type="Node" parent="SpecialQuestTrigger"]
-[node name="QuestTrigger" type="Node" parent="SpeicialQuestTrigger/QuestInstantStart"]
+[node name="QuestTrigger" type="Node" parent="SpecialQuestTrigger/QuestInstantStart"]
script = ExtResource("66_2065p")
questResource = ExtResource("67_tm0yg")
toStatus = 1
makeActive = true
-[node name="ToolsCollectedTrigger" type="Node" parent="SpeicialQuestTrigger"]
+[node name="ToolsCollectedTrigger" type="Node" parent="SpecialQuestTrigger"]
script = ExtResource("68_hux6i")
_itemsToContain = Array[Resource]([SubResource("Resource_y820s"), SubResource("Resource_50loj")])
_onAvailableQuest = ExtResource("68_lbnqo")
_toNextQuest = ExtResource("69_l4wxt")
-[node name="FieldWorkTrigger" type="Node" parent="SpeicialQuestTrigger"]
+[node name="FieldWorkTrigger" type="Node" parent="SpecialQuestTrigger"]
script = ExtResource("74_fv1t2")
_onAvailableQuest = ExtResource("75_l7ekk")
_toNextQuest = ExtResource("76_xcwle")
-[node name="StartDialog" type="Node" parent="SpeicialQuestTrigger/FieldWorkTrigger"]
+[node name="StartDialog" type="Node" parent="SpecialQuestTrigger/FieldWorkTrigger"]
script = ExtResource("77_l7ekk")
timeline = "quest2_tomatoes_end"
@@ -2403,9 +2414,12 @@ timeline = "quest2_tomatoes_end"
[connection signal="InteractedTool" from="YSorted/Brünnen/InteractionArea" to="YSorted/Vesna" method="TryFillWateringCan"]
[connection signal="SuccessfulPickUp" from="YSorted/CanGenericPickup" to="YSorted/Vesna" method="HandlePickUp"]
[connection signal="SuccessfulPickUp" from="YSorted/RakeGenericPickup" to="YSorted/Vesna" method="HandlePickUp"]
+[connection signal="SuccessfulPickUp" from="YSorted/SeedPickup" to="YSorted/Vesna" method="HandlePickUp"]
+[connection signal="SuccessfulPickUp" from="YSorted/SeedPickup2" to="YSorted/Vesna" method="HandlePickUp"]
[connection signal="InteractedTool" from="YSorted/Farm visuals/Static/EnterHouseInteraction" to="." method="LoadSceneAtIndex"]
[connection signal="FieldCreated" from="YSorted/Farm visuals/FieldParent" to="Audio/SFX/Farming SFX" method="PlayOneShot"]
[connection signal="input_event" from="YSorted/Farm visuals/FieldParent/Area2D" to="YSorted/Vesna/FarmingControls" method="InputEventPressedOn"]
+[connection signal="InteractedTool" from="YSorted/Blocker/InteractionArea" to="." method="LoadSceneAtIndex"]
[connection signal="GoalReached" from="YSorted/ducks" to="YSorted/ducks/DialogicToggle" method="ToggleDialogue"]
[connection signal="DuckCollected" from="YSorted/ducks/Duck2" to="YSorted/ducks" method="Increment"]
[connection signal="DuckCollected" from="YSorted/ducks/Duck3" to="YSorted/ducks" method="Increment"]
@@ -2415,19 +2429,17 @@ timeline = "quest2_tomatoes_end"
[connection signal="DuckCollected" from="YSorted/ducks/Duck7" to="YSorted/ducks" method="Increment"]
[connection signal="Dialogue" from="YSorted/ducks/DialogicToggle" to="YSorted/ducks/dialogic starter" method="open"]
[connection signal="finished" from="Audio/Background Music Ramp up" to="Audio/Background Music loop" method="PlayFromOffset"]
-[connection signal="ready" from="SpeicialQuestTrigger/QuestInstantStart" to="SpeicialQuestTrigger/QuestInstantStart/QuestTrigger" method="Trigger"]
-[connection signal="OnFulfilled" from="SpeicialQuestTrigger/FieldWorkTrigger" to="SpeicialQuestTrigger/FieldWorkTrigger/StartDialog" method="open"]
+[connection signal="ready" from="SpecialQuestTrigger/QuestInstantStart" to="SpecialQuestTrigger/QuestInstantStart/QuestTrigger" method="Trigger"]
+[connection signal="OnFulfilled" from="SpecialQuestTrigger/FieldWorkTrigger" to="SpecialQuestTrigger/FieldWorkTrigger/StartDialog" method="open"]
[editable path="YSorted/Vesna"]
[editable path="YSorted/Brünnen/InteractionArea"]
-[editable path="YSorted/HoeGenericPickup"]
-[editable path="YSorted/HoeGenericPickup/PickupInteractionArea"]
[editable path="YSorted/CanGenericPickup"]
[editable path="YSorted/CanGenericPickup/PickupInteractionArea"]
[editable path="YSorted/RakeGenericPickup"]
[editable path="YSorted/RakeGenericPickup/PickupInteractionArea"]
-[editable path="YSorted/ScytheGenericPickup"]
-[editable path="YSorted/ScytheGenericPickup/PickupInteractionArea"]
-[editable path="YSorted/ShovelGenericPickup"]
-[editable path="YSorted/ShovelGenericPickup/PickupInteractionArea"]
+[editable path="YSorted/SeedPickup"]
+[editable path="YSorted/SeedPickup/PickupInteractionArea"]
+[editable path="YSorted/SeedPickup2"]
+[editable path="YSorted/SeedPickup2/PickupInteractionArea"]
[editable path="CanvasLayer"]
diff --git a/scenes/Babushka_scene_farm_outside_2d_ducksCollected.tscn b/scenes/Babushka_scene_farm_outside_2d_ducksCollected.tscn
index 02836e9..9cd1c59 100644
--- a/scenes/Babushka_scene_farm_outside_2d_ducksCollected.tscn
+++ b/scenes/Babushka_scene_farm_outside_2d_ducksCollected.tscn
@@ -48,7 +48,7 @@
[ext_resource type="Script" uid="uid://dhxtdhfqx3bte" path="res://scripts/CSharp/Common/Farming/FieldService2D.cs" id="47_o4ch6"]
[ext_resource type="Texture2D" uid="uid://blb3agipyxnal" path="res://art/farm/farming/farmobjekte/zaun/fence_door.png" id="48_hknn3"]
[ext_resource type="Script" uid="uid://l6iq8rpym5io" path="res://scripts/CSharp/Common/Util/Counter.cs" id="49_3bowf"]
-[ext_resource type="PackedScene" uid="uid://muuxxgvx33fp" path="res://prefabs/farm/duck.tscn" id="50_j7vsa"]
+[ext_resource type="PackedScene" uid="uid://muuxxgvx33fp" path="res://prefabs/farm/animals/duck.tscn" id="50_j7vsa"]
[ext_resource type="Script" uid="uid://dnipeibppjirs" path="res://scripts/CSharp/Common/NPC/DialogicOverlayStarter.cs" id="51_v78io"]
[ext_resource type="Script" uid="uid://d2486x6upmwqq" path="res://scripts/GdScript/dialogic_starter.gd" id="52_qgfjh"]
[ext_resource type="PackedScene" uid="uid://cgjc4wurbgimy" path="res://prefabs/UI/Inventory/Inventory.tscn" id="53_v4u68"]
@@ -57,7 +57,7 @@
[ext_resource type="AudioStream" uid="uid://cfqg50am0swb7" path="res://audio/Music/Farming_90BPM_69Bars_Loop.wav" id="56_smepe"]
[ext_resource type="AudioStream" uid="uid://vcftvrpi6c7k" path="res://audio/sfx/Farming/SFX_Harke_03_Solo.wav" id="57_ayguc"]
[ext_resource type="AudioStream" uid="uid://bxh5m04vdo0sr" path="res://audio/sfx/Farming/SFX_Harke_04_Solo.wav" id="58_qeach"]
-[ext_resource type="Script" uid="uid://cfnrd5k1k0gxw" path="res://scripts/CSharp/Common/AudioPlayer.cs" id="59_0knno"]
+[ext_resource type="Script" uid="uid://cfnrd5k1k0gxw" path="res://scripts/CSharp/Common/AudioPlayer2D.cs" id="59_0knno"]
[ext_resource type="AudioStream" uid="uid://dapsknn486aee" path="res://audio/sfx/Farming/SFX_WateringPlants_01.wav" id="60_xaxer"]
[ext_resource type="AudioStream" uid="uid://dnyne8wov50so" path="res://audio/sfx/Farming/SFX_WateringPlants_02.wav" id="61_b4x0p"]
[ext_resource type="AudioStream" uid="uid://fsiypqhql67w" path="res://audio/sfx/Farming/SFX_GettingWater_01.wav" id="62_811xr"]
@@ -1020,7 +1020,6 @@ z_index = 1
position = Vector2(-2031, 2949)
_fieldParent = NodePath("../Farm visuals/FieldParent")
_hoe = ExtResource("29_36k8l")
-_wateringCan = ExtResource("30_te7n5")
[node name="FarmingControls" parent="YSorted/Vesna" index="1" node_paths=PackedStringArray("_camera")]
_camera = NodePath("../../../Camera2D")
@@ -2074,10 +2073,11 @@ rotation = 1.5708
scale = Vector2(0.1, 10.8)
texture = ExtResource("26_rnkrk")
-[node name="FieldParent" type="Node2D" parent="YSorted/Farm visuals"]
+[node name="FieldParent" type="Node2D" parent="YSorted/Farm visuals" node_paths=PackedStringArray("fields")]
position = Vector2(53, 20)
scale = Vector2(1, 0.993819)
script = ExtResource("47_o4ch6")
+fields = {}
metadata/_custom_type_script = "uid://dhxtdhfqx3bte"
[node name="Area2D" type="Area2D" parent="YSorted/Farm visuals/FieldParent"]
diff --git a/scenes/Babushka_scene_forest_fight_1_2d.tscn b/scenes/Babushka_scene_forest_fight_1_2d.tscn
index a9f7fee..e00c3f9 100644
--- a/scenes/Babushka_scene_forest_fight_1_2d.tscn
+++ b/scenes/Babushka_scene_forest_fight_1_2d.tscn
@@ -49,7 +49,7 @@
[ext_resource type="AudioStream" uid="uid://vcftvrpi6c7k" path="res://audio/sfx/Farming/SFX_Harke_03_Solo.wav" id="54_4l7ky"]
[ext_resource type="AudioStream" uid="uid://bxh5m04vdo0sr" path="res://audio/sfx/Farming/SFX_Harke_04_Solo.wav" id="55_dk5xw"]
[ext_resource type="Script" uid="uid://cldtt4atgymm5" path="res://scripts/CSharp/Common/Quest/QuestTrigger.cs" id="55_ub0r7"]
-[ext_resource type="Script" uid="uid://cfnrd5k1k0gxw" path="res://scripts/CSharp/Common/AudioPlayer.cs" id="56_bjj0f"]
+[ext_resource type="Script" uid="uid://cfnrd5k1k0gxw" path="res://scripts/CSharp/Common/AudioPlayer2D.cs" id="56_bjj0f"]
[ext_resource type="Resource" uid="uid://c3mwhrvk12oml" path="res://resources/quests/demo/9_talk_to_chuga.tres" id="56_q833x"]
[ext_resource type="AudioStream" uid="uid://dapsknn486aee" path="res://audio/sfx/Farming/SFX_WateringPlants_01.wav" id="57_ehh6a"]
[ext_resource type="AudioStream" uid="uid://dnyne8wov50so" path="res://audio/sfx/Farming/SFX_WateringPlants_02.wav" id="58_mfld1"]
diff --git a/scenes/Babushka_scene_indoor_common_room.tscn b/scenes/Babushka_scene_indoor_common_room.tscn
index 9d5dc34..4c596d6 100644
--- a/scenes/Babushka_scene_indoor_common_room.tscn
+++ b/scenes/Babushka_scene_indoor_common_room.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=41 format=3 uid="uid://bm21nqepnwaik"]
+[gd_scene load_steps=40 format=3 uid="uid://bm21nqepnwaik"]
[ext_resource type="Script" uid="uid://cssdu8viimwm6" path="res://scripts/CSharp/Common/SceneTransition.cs" id="1_3vr4f"]
[ext_resource type="Texture2D" uid="uid://cnhsxxps2cw5" path="res://art/indoor/room export/Room_01_table.png" id="2_ubg3a"]
@@ -7,7 +7,6 @@
[ext_resource type="Texture2D" uid="uid://waqmjrxduxfq" path="res://art/indoor/room export/Room_01_walls.png" id="5_sndxu"]
[ext_resource type="Texture2D" uid="uid://bqwhptcgg5ons" path="res://art/indoor/room export/Room_01_dorr_R.png" id="6_blyw3"]
[ext_resource type="Texture2D" uid="uid://vyk63d0pgqm5" path="res://art/indoor/room export/Room_01_dioor L.png" id="7_yd2gv"]
-[ext_resource type="Material" uid="uid://blch5kdhkbj75" path="res://art/materials/simple_interactable_outline.tres" id="8_7a68a"]
[ext_resource type="Texture2D" uid="uid://b2rj7wkyu6ehy" path="res://art/indoor/room export/Room_01_pechka.png" id="8_ofqcg"]
[ext_resource type="Texture2D" uid="uid://dhvi5404cqioa" path="res://art/indoor/room export/Room_01_window.png" id="9_aoesu"]
[ext_resource type="Texture2D" uid="uid://bpi35nxbhput8" path="res://art/indoor/room export/Room_01_pechkaDoor.png" id="10_xcryd"]
@@ -22,15 +21,15 @@
[ext_resource type="AudioStream" uid="uid://cohyenfo1rtxh" path="res://audio/sfx/Animals/SFX_Cat_Meow_01.wav" id="16_d7yky"]
[ext_resource type="PackedScene" uid="uid://dfvgp1my5rydh" path="res://prefabs/characters/Yeli.tscn" id="16_dhsxs"]
[ext_resource type="AudioStream" uid="uid://b2cmf5ie7cwka" path="res://audio/sfx/Animals/SFX_Cat_Meow_02.wav" id="17_7a68a"]
-[ext_resource type="Script" path="res://scripts/GdScript/dialogic_toggle.gd" id="17_k0k8c"]
+[ext_resource type="Script" uid="uid://cvkw4qd2hxksi" path="res://scripts/GdScript/dialogic_toggle.gd" id="17_k0k8c"]
[ext_resource type="AudioStream" uid="uid://cttisejnt2l8f" path="res://audio/sfx/Animals/SFX_Cat_Meow_03.wav" id="18_dhsxs"]
[ext_resource type="Script" uid="uid://bqomwxclsbhd3" path="res://scripts/CSharp/Common/Camera/CameraController.cs" id="18_dw4nn"]
[ext_resource type="AudioStream" uid="uid://cbmagiou0n0t3" path="res://audio/sfx/Animals/SFX_Cat_Meow_04.wav" id="19_k0k8c"]
[ext_resource type="AudioStream" uid="uid://bk1bj01fokjp7" path="res://audio/sfx/Animals/SFX_Cat_Meow_05.wav" id="20_dw4nn"]
[ext_resource type="Script" uid="uid://cldtt4atgymm5" path="res://scripts/CSharp/Common/Quest/QuestTrigger.cs" id="21_blyw3"]
[ext_resource type="AudioStream" uid="uid://r2f6xmjvyyjv" path="res://audio/sfx/Animals/SFX_Cat_Purr_01.wav" id="21_ytap8"]
-[ext_resource type="Script" uid="uid://cfnrd5k1k0gxw" path="res://scripts/CSharp/Common/AudioPlayer.cs" id="22_tggq2"]
-[ext_resource type="Resource" path="res://resources/quests/beetRoot.tres" id="22_yd2gv"]
+[ext_resource type="Script" uid="uid://cfnrd5k1k0gxw" path="res://scripts/CSharp/Common/AudioPlayer2D.cs" id="22_tggq2"]
+[ext_resource type="Resource" uid="uid://cbpurnewhyefa" path="res://resources/quests/beetRoot.tres" id="22_yd2gv"]
[ext_resource type="PackedScene" uid="uid://cgjc4wurbgimy" path="res://prefabs/UI/Inventory/Inventory.tscn" id="24_yd2gv"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_a2ood"]
@@ -312,7 +311,6 @@ region_rect = Rect2(3161, 313, 679, 1050)
[node name="OutsideDoor" parent="BackWall/Room01DorrR" node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("11_gpagp")]
position = Vector2(-7, 248)
-_outlineMaterial = ExtResource("8_7a68a")
_spriteToOutline = NodePath("..")
_id = 1
@@ -325,7 +323,6 @@ region_rect = Rect2(0, 0, 3840, 2160)
[node name="VesnasRoomDoor" parent="BackWall/Room01DoorL" node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("11_gpagp")]
position = Vector2(-1559, -16)
-_outlineMaterial = ExtResource("8_7a68a")
_spriteToOutline = NodePath("..")
_id = 0
@@ -362,7 +359,6 @@ region_rect = Rect2(2360, 864, 356, 251)
[node name="InteractionArea" parent="BackWall/Room01PechkaDoor" node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("11_gpagp")]
scale = Vector2(1.8, 1.96)
-_outlineMaterial = ExtResource("8_7a68a")
_spriteToOutline = NodePath("..")
[node name="CollisionShape3D" parent="BackWall/Room01PechkaDoor/InteractionArea/Area2D" index="0"]
@@ -413,7 +409,6 @@ script = ExtResource("22_tggq2")
[node name="InteractionArea" parent="BackWall/Katze" node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("11_gpagp")]
position = Vector2(-6.5, -44)
scale = Vector2(0.5, 0.5)
-_outlineMaterial = ExtResource("8_7a68a")
_spriteToOutline = NodePath("..")
[node name="Room assets" type="Node" parent="BackWall"]
diff --git a/scenes/Babushka_scene_outside_beets.tscn b/scenes/Babushka_scene_outside_beets.tscn
index c5acf97..6b44b2b 100644
--- a/scenes/Babushka_scene_outside_beets.tscn
+++ b/scenes/Babushka_scene_outside_beets.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=91 format=3 uid="uid://b3ibx4resa1f3"]
+[gd_scene load_steps=81 format=3 uid="uid://b3ibx4resa1f3"]
[ext_resource type="Script" uid="uid://cssdu8viimwm6" path="res://scripts/CSharp/Common/SceneTransition.cs" id="1_6krrk"]
[ext_resource type="Script" uid="uid://bqomwxclsbhd3" path="res://scripts/CSharp/Common/Camera/CameraController.cs" id="2_4ktoi"]
@@ -28,18 +28,16 @@
[ext_resource type="Texture2D" uid="uid://3ed3dgq3irn2" path="res://art/farm/farming/farmobjekte/zaun/tilable fence end part2.png" id="26_bwvai"]
[ext_resource type="PackedScene" uid="uid://c25udixd5m6l0" path="res://prefabs/characters/Player2D.tscn" id="27_qtaxr"]
[ext_resource type="Resource" uid="uid://dlcmqfjvgphqu" path="res://resources/items/rake.tres" id="28_le48k"]
-[ext_resource type="Resource" uid="uid://cndd64batns31" path="res://resources/items/wateringcan.tres" id="29_6laxt"]
[ext_resource type="Texture2D" uid="uid://dg7rlugnq0t45" path="res://art/farm/farming/farmobjekte/brünnen.png" id="30_lgb3w"]
[ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="31_xcb8u"]
-[ext_resource type="PackedScene" uid="uid://dpbbroif2tnil" path="res://prefabs/interactions/generic_item_on_ground_2d.tscn" id="32_752hh"]
-[ext_resource type="Resource" uid="uid://c5yg3lx756v4v" path="res://resources/items/hoe.tres" id="33_v0fwx"]
[ext_resource type="Shader" uid="uid://braevmqauoek7" path="res://shader/swaying_plant.gdshader" id="37_7c2wq"]
[ext_resource type="Texture2D" uid="uid://bq2wojyy4ptva" path="res://art/nature/baum märz 2025/sonnenblume7.png" id="38_0bsmo"]
[ext_resource type="Texture2D" uid="uid://dgavbfci8x178" path="res://art/nature/grass/grass-1.png" id="39_8mefg"]
[ext_resource type="Texture2D" uid="uid://h2b5aufaaw7w" path="res://art/nature/grass/grass-2.png" id="40_67iq1"]
+[ext_resource type="PackedScene" uid="uid://b1d2e7ely6hyw" path="res://prefabs/farm/base_field.tscn" id="40_efblm"]
[ext_resource type="Texture2D" uid="uid://b644ofy7fml5w" path="res://art/nature/grass/grass-5.png" id="41_0irm8"]
+[ext_resource type="PackedScene" uid="uid://d20oftcb5qso6" path="res://prefabs/farm/plants/beet_plant.tscn" id="41_vyqmy"]
[ext_resource type="Texture2D" uid="uid://badnnid7dgnpk" path="res://art/nature/grass/grass-4.png" id="42_7jeth"]
-[ext_resource type="PackedScene" uid="uid://d4m5iy5mwqpq3" path="res://prefabs/farm/beet_field.tscn" id="43_dr6bm"]
[ext_resource type="Texture2D" uid="uid://ct7ea8ikor5rf" path="res://art/nature/grass/grass-3.png" id="43_g8k4k"]
[ext_resource type="Texture2D" uid="uid://d3dwl6ph0pu1d" path="res://art/nature/grass/grass-6.png" id="44_jgrpl"]
[ext_resource type="Script" uid="uid://dhxtdhfqx3bte" path="res://scripts/CSharp/Common/Farming/FieldService2D.cs" id="46_xkmgh"]
@@ -50,7 +48,7 @@
[ext_resource type="AudioStream" uid="uid://cfqg50am0swb7" path="res://audio/Music/Farming_90BPM_69Bars_Loop.wav" id="55_aq24k"]
[ext_resource type="AudioStream" uid="uid://vcftvrpi6c7k" path="res://audio/sfx/Farming/SFX_Harke_03_Solo.wav" id="56_vojpc"]
[ext_resource type="AudioStream" uid="uid://bxh5m04vdo0sr" path="res://audio/sfx/Farming/SFX_Harke_04_Solo.wav" id="57_euap5"]
-[ext_resource type="Script" uid="uid://cfnrd5k1k0gxw" path="res://scripts/CSharp/Common/AudioPlayer.cs" id="58_m3hs4"]
+[ext_resource type="Script" uid="uid://cfnrd5k1k0gxw" path="res://scripts/CSharp/Common/AudioPlayer2D.cs" id="58_m3hs4"]
[ext_resource type="AudioStream" uid="uid://dapsknn486aee" path="res://audio/sfx/Farming/SFX_WateringPlants_01.wav" id="59_km2vg"]
[ext_resource type="AudioStream" uid="uid://dnyne8wov50so" path="res://audio/sfx/Farming/SFX_WateringPlants_02.wav" id="60_qi2gu"]
[ext_resource type="AudioStream" uid="uid://fsiypqhql67w" path="res://audio/sfx/Farming/SFX_GettingWater_01.wav" id="61_wy1mx"]
@@ -137,14 +135,6 @@ size = Vector2(1041, 368)
resource_local_to_scene = true
radius = 371.058
-[sub_resource type="CircleShape2D" id="CircleShape2D_2nee2"]
-resource_local_to_scene = true
-radius = 300.0
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_ipqaa"]
-resource_local_to_scene = true
-radius = 300.0
-
[sub_resource type="ShaderMaterial" id="ShaderMaterial_bcdgk"]
shader = ExtResource("37_7c2wq")
shader_parameter/speed = 1.0
@@ -173,30 +163,6 @@ shader_parameter/offset = 0.0
shader = ExtResource("24_anpd4")
shader_parameter/tiling_scale = Vector2(1, 20)
-[sub_resource type="CircleShape2D" id="CircleShape2D_hpgl7"]
-resource_local_to_scene = true
-radius = 300.0
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_qavgq"]
-resource_local_to_scene = true
-radius = 300.0
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_dr6bm"]
-resource_local_to_scene = true
-radius = 300.0
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_njxly"]
-resource_local_to_scene = true
-radius = 300.0
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_34r5t"]
-resource_local_to_scene = true
-radius = 300.0
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_54ty3"]
-resource_local_to_scene = true
-radius = 300.0
-
[sub_resource type="ShaderMaterial" id="ShaderMaterial_lwk6t"]
shader = ExtResource("17_lwdq7")
shader_parameter/hue_shift = 0.0
@@ -231,7 +197,7 @@ stream_2/stream = ExtResource("63_td2xu")
[node name="BabushkaSceneFarmOutside2d" type="Node2D"]
script = ExtResource("1_6krrk")
-_sceneNamesToLoad = PackedStringArray("res://scenes/Babushka_scene_indoor_common_room.tscn")
+_sceneNamesToLoad = PackedStringArray("res://scenes/res://scenes/Babushka_scene_farm_outside_2d.tscn.tscn")
[node name="Camera2D" type="Camera2D" parent="." node_paths=PackedStringArray("_followNode")]
position = Vector2(3180, 1961)
@@ -947,7 +913,6 @@ z_index = 1
position = Vector2(2693, 1876)
_fieldParent = NodePath("../Farm visuals/FieldParent")
_hoe = ExtResource("28_le48k")
-_wateringCan = ExtResource("29_6laxt")
[node name="Animated Sprites" parent="YSorted/Vesna/CharacterBody2D/visuals" index="0"]
position = Vector2(-33, 554)
@@ -956,7 +921,6 @@ position = Vector2(-33, 554)
_camera = NodePath("../../../Camera2D")
[node name="Brünnen" type="Sprite2D" parent="YSorted"]
-visible = false
z_index = 1
y_sort_enabled = true
material = SubResource("ShaderMaterial_2vojv")
@@ -973,46 +937,14 @@ collision_mask = 4
position = Vector2(145.5, -224)
shape = SubResource("RectangleShape2D_0sfl7")
-[node name="InteractionArea" parent="YSorted/Brünnen" instance=ExtResource("31_xcb8u")]
+[node name="InteractionArea" parent="YSorted/Brünnen" node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("31_xcb8u")]
+_spriteToOutline = NodePath("..")
_id = 1
[node name="CollisionShape3D" parent="YSorted/Brünnen/InteractionArea/Area2D" index="0"]
position = Vector2(146, -130)
shape = SubResource("CircleShape2D_p6n74")
-[node name="HoeGenericPickup" parent="YSorted" instance=ExtResource("32_752hh")]
-visible = false
-position = Vector2(6095, 2087)
-
-[node name="SpawnWithItem" parent="YSorted/HoeGenericPickup" index="0"]
-_blueprint = ExtResource("33_v0fwx")
-
-[node name="CollisionShape3D" parent="YSorted/HoeGenericPickup/InteractionArea2/Area2D" index="0"]
-shape = SubResource("CircleShape2D_2nee2")
-
-[node name="CanGenericPickup" parent="YSorted" instance=ExtResource("32_752hh")]
-visible = false
-position = Vector2(8192, 3507)
-
-[node name="SpawnWithItem" parent="YSorted/CanGenericPickup" index="0"]
-_blueprint = ExtResource("29_6laxt")
-
-[node name="InteractionArea2" parent="YSorted/CanGenericPickup" index="3"]
-position = Vector2(0, -159)
-
-[node name="CollisionShape3D" parent="YSorted/CanGenericPickup/InteractionArea2/Area2D" index="0"]
-shape = SubResource("CircleShape2D_ipqaa")
-
-[node name="RakeGenericPickup" parent="YSorted" instance=ExtResource("32_752hh")]
-visible = false
-position = Vector2(8391, 2060)
-
-[node name="SpawnWithItem" parent="YSorted/RakeGenericPickup" index="0"]
-_blueprint = ExtResource("28_le48k")
-
-[node name="CollisionShape3D" parent="YSorted/RakeGenericPickup/InteractionArea2/Area2D" index="0"]
-shape = SubResource("CircleShape2D_ipqaa")
-
[node name="Farm visuals" type="Node2D" parent="YSorted"]
position = Vector2(-60, 122)
@@ -1751,119 +1683,131 @@ rotation = 1.5708
scale = Vector2(0.1, 8.7)
texture = ExtResource("26_bwvai")
-[node name="FieldParent" type="Node2D" parent="YSorted/Farm visuals"]
+[node name="FieldParent" type="Node2D" parent="YSorted/Farm visuals" node_paths=PackedStringArray("fields")]
position = Vector2(53, 20)
scale = Vector2(1, 0.993819)
script = ExtResource("46_xkmgh")
+fields = {}
metadata/_custom_type_script = "uid://dhxtdhfqx3bte"
-[node name="BaseField" parent="YSorted/Farm visuals" instance=ExtResource("43_dr6bm")]
-position = Vector2(447, 2597)
+[node name="BaseField" parent="YSorted/Farm visuals/FieldParent" instance=ExtResource("40_efblm")]
+position = Vector2(651, 2630.26)
+scale = Vector2(1, 1.00622)
-[node name="BeetRoot" parent="YSorted/Farm visuals/BaseField/FieldBehaviour" index="1" node_paths=PackedStringArray("_smallPlants")]
-_smallPlants = [NodePath("SmallPlant/01"), NodePath("SmallPlant/02"), null, null]
+[node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField" index="0"]
+FieldState = 3
-[node name="BeetSeet" parent="YSorted/Farm visuals/BaseField/FieldBehaviour/BeetRoot/Seeds" index="0"]
-visible = true
+[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
+_state = 2
+_field = NodePath("../..")
-[node name="01" parent="YSorted/Farm visuals/BaseField/FieldBehaviour/BeetRoot/BigPlant" index="0"]
-visible = false
+[node name="BaseField2" parent="YSorted/Farm visuals/FieldParent" instance=ExtResource("40_efblm")]
+position = Vector2(1226, 3098.15)
+scale = Vector2(1, 1.00622)
-[node name="CollisionShape3D" parent="YSorted/Farm visuals/BaseField/FieldBehaviour/BeetRoot/ReadyPlantInventoryItem/InteractionArea2/Area2D" index="0"]
-shape = SubResource("CircleShape2D_hpgl7")
+[node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField2" index="0"]
+FieldState = 3
-[node name="BaseField2" parent="YSorted/Farm visuals" instance=ExtResource("43_dr6bm")]
-position = Vector2(1230, 2590)
+[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField2/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
+_state = 1
+_field = NodePath("../..")
-[node name="BeetRoot" parent="YSorted/Farm visuals/BaseField2/FieldBehaviour" index="1" node_paths=PackedStringArray("_smallPlants")]
-_smallPlants = [NodePath("SmallPlant/01"), NodePath("SmallPlant/02"), null, null]
+[node name="BaseField3" parent="YSorted/Farm visuals/FieldParent" instance=ExtResource("40_efblm")]
+position = Vector2(1782, 2606.11)
+scale = Vector2(1, 1.00622)
-[node name="01" parent="YSorted/Farm visuals/BaseField2/FieldBehaviour/BeetRoot/BigPlant" index="0"]
-visible = false
+[node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField3" index="0"]
+FieldState = 3
-[node name="03" parent="YSorted/Farm visuals/BaseField2/FieldBehaviour/BeetRoot/BigPlant" index="2"]
-visible = true
+[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField3/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
+_state = 2
+_field = NodePath("../..")
-[node name="CollisionShape3D" parent="YSorted/Farm visuals/BaseField2/FieldBehaviour/BeetRoot/ReadyPlantInventoryItem/InteractionArea2/Area2D" index="0"]
-shape = SubResource("CircleShape2D_qavgq")
+[node name="BaseField4" parent="YSorted/Farm visuals/FieldParent" instance=ExtResource("40_efblm")]
+position = Vector2(2559, 2624.22)
+scale = Vector2(1, 1.00622)
-[node name="BaseField3" parent="YSorted/Farm visuals" instance=ExtResource("43_dr6bm")]
-position = Vector2(1994, 2603)
+[node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField4" index="0"]
+FieldState = 3
-[node name="BeetRoot" parent="YSorted/Farm visuals/BaseField3/FieldBehaviour" index="1" node_paths=PackedStringArray("_smallPlants")]
-_smallPlants = [NodePath("SmallPlant/01"), NodePath("SmallPlant/02"), null, null]
+[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField4/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
+_state = 2
+_field = NodePath("../..")
-[node name="01" parent="YSorted/Farm visuals/BaseField3/FieldBehaviour/BeetRoot/SmallPlant" index="0"]
-visible = true
+[node name="BaseField5" parent="YSorted/Farm visuals/FieldParent" instance=ExtResource("40_efblm")]
+position = Vector2(3305, 2624.22)
+scale = Vector2(1, 1.00622)
-[node name="01" parent="YSorted/Farm visuals/BaseField3/FieldBehaviour/BeetRoot/BigPlant" index="0"]
-visible = false
-
-[node name="CollisionShape3D" parent="YSorted/Farm visuals/BaseField3/FieldBehaviour/BeetRoot/ReadyPlantInventoryItem/InteractionArea2/Area2D" index="0"]
-shape = SubResource("CircleShape2D_dr6bm")
-
-[node name="BaseField4" parent="YSorted/Farm visuals" instance=ExtResource("43_dr6bm")]
-position = Vector2(478, 3098)
-
-[node name="BeetRoot" parent="YSorted/Farm visuals/BaseField4/FieldBehaviour" index="1" node_paths=PackedStringArray("_smallPlants")]
-_smallPlants = [NodePath("SmallPlant/01"), NodePath("SmallPlant/02"), null, null]
-
-[node name="BeetSeet3" parent="YSorted/Farm visuals/BaseField4/FieldBehaviour/BeetRoot/Seeds" index="2"]
-visible = true
+[node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField5" index="0"]
+FieldState = 3
-[node name="01" parent="YSorted/Farm visuals/BaseField4/FieldBehaviour/BeetRoot/BigPlant" index="0"]
-visible = false
+[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField5/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
+_state = 2
+_field = NodePath("../..")
-[node name="CollisionShape3D" parent="YSorted/Farm visuals/BaseField4/FieldBehaviour/BeetRoot/ReadyPlantInventoryItem/InteractionArea2/Area2D" index="0"]
-shape = SubResource("CircleShape2D_njxly")
+[node name="BaseField6" parent="YSorted/Farm visuals/FieldParent" instance=ExtResource("40_efblm")]
+position = Vector2(4033, 2618.18)
+scale = Vector2(1, 1.00622)
-[node name="BaseField5" parent="YSorted/Farm visuals" instance=ExtResource("43_dr6bm")]
-position = Vector2(1279, 3123)
+[node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField6" index="0"]
+FieldState = 3
-[node name="BeetRoot" parent="YSorted/Farm visuals/BaseField5/FieldBehaviour" index="1" node_paths=PackedStringArray("_smallPlants")]
-_smallPlants = [NodePath("SmallPlant/01"), NodePath("SmallPlant/02"), null, null]
+[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField6/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
+_state = 1
+_field = NodePath("../..")
-[node name="Seeds" parent="YSorted/Farm visuals/BaseField5/FieldBehaviour/BeetRoot" index="0"]
-visible = false
+[node name="BaseField7" parent="YSorted/Farm visuals/FieldParent" instance=ExtResource("40_efblm")]
+position = Vector2(4755, 2630.26)
+scale = Vector2(1, 1.00622)
-[node name="01" parent="YSorted/Farm visuals/BaseField5/FieldBehaviour/BeetRoot/BigPlant" index="0"]
-visible = false
+[node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField7" index="0"]
+FieldState = 3
-[node name="02" parent="YSorted/Farm visuals/BaseField5/FieldBehaviour/BeetRoot/BigPlant" index="1"]
-visible = true
+[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField7/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
+_state = 2
+_field = NodePath("../..")
-[node name="CollisionShape3D" parent="YSorted/Farm visuals/BaseField5/FieldBehaviour/BeetRoot/ReadyPlantInventoryItem/InteractionArea2/Area2D" index="0"]
-shape = SubResource("CircleShape2D_34r5t")
+[node name="BaseField8" parent="YSorted/Farm visuals/FieldParent" instance=ExtResource("40_efblm")]
+position = Vector2(4418, 3226.95)
+scale = Vector2(1, 1.00622)
-[node name="BaseField6" parent="YSorted/Farm visuals" instance=ExtResource("43_dr6bm")]
-position = Vector2(2037, 3135)
+[node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField8" index="0"]
+FieldState = 3
-[node name="BeetRoot" parent="YSorted/Farm visuals/BaseField6/FieldBehaviour" index="1" node_paths=PackedStringArray("_smallPlants")]
-_smallPlants = [NodePath("SmallPlant/01"), NodePath("SmallPlant/02"), null, null]
+[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField8/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
+_state = 2
+_field = NodePath("../..")
-[node name="01" parent="YSorted/Farm visuals/BaseField6/FieldBehaviour/BeetRoot/SmallPlant" index="0"]
-visible = true
+[node name="BaseField9" parent="YSorted/Farm visuals/FieldParent" instance=ExtResource("40_efblm")]
+position = Vector2(5317, 3208.83)
+scale = Vector2(1, 1.00622)
-[node name="01" parent="YSorted/Farm visuals/BaseField6/FieldBehaviour/BeetRoot/BigPlant" index="0"]
-visible = false
+[node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField9" index="0"]
+FieldState = 3
-[node name="CollisionShape3D" parent="YSorted/Farm visuals/BaseField6/FieldBehaviour/BeetRoot/ReadyPlantInventoryItem/InteractionArea2/Area2D" index="0"]
-shape = SubResource("CircleShape2D_54ty3")
+[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField9/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
+_state = 1
+_field = NodePath("../..")
[node name="Blocker" type="Node2D" parent="YSorted"]
-[node name="Fence Door2" type="Sprite2D" parent="YSorted/Blocker"]
+[node name="BackToFarm" parent="YSorted/Blocker" node_paths=PackedStringArray("_spriteToOutline") instance=ExtResource("31_xcb8u")]
+position = Vector2(3774, 2025)
+_spriteToOutline = NodePath("Fence Door2")
+_id = 0
+
+[node name="Fence Door2" type="Sprite2D" parent="YSorted/Blocker/BackToFarm"]
material = SubResource("ShaderMaterial_lwk6t")
-position = Vector2(3788, 1563)
+position = Vector2(60, -450)
rotation = -0.0963081
scale = Vector2(0.903, 0.96)
texture = ExtResource("47_xfjh2")
-[node name="StaticBody2D" type="StaticBody2D" parent="YSorted/Blocker/Fence Door2"]
+[node name="StaticBody2D" type="StaticBody2D" parent="YSorted/Blocker/BackToFarm/Fence Door2"]
collision_layer = 2
collision_mask = 4
-[node name="CollisionShape2D" type="CollisionShape2D" parent="YSorted/Blocker/Fence Door2/StaticBody2D"]
+[node name="CollisionShape2D" type="CollisionShape2D" parent="YSorted/Blocker/BackToFarm/Fence Door2/StaticBody2D"]
position = Vector2(-106.663, 182.891)
shape = SubResource("RectangleShape2D_ycj14")
@@ -1950,41 +1894,19 @@ script = ExtResource("58_m3hs4")
[connection signal="FilledWateringCan" from="YSorted/Vesna" to="Audio/SFX/FillWater SFX2" method="PlayOneShot"]
[connection signal="WateringField" from="YSorted/Vesna/FarmingControls" to="Audio/SFX/Watering SFX" method="PlayOneShot"]
[connection signal="InteractedTool" from="YSorted/Brünnen/InteractionArea" to="YSorted/Vesna" method="TryFillWateringCan"]
-[connection signal="SuccessfulPickUp" from="YSorted/CanGenericPickup" to="YSorted/Vesna" method="HandlePickUp"]
-[connection signal="SuccessfulPickUp" from="YSorted/RakeGenericPickup" to="YSorted/Vesna" method="HandlePickUp"]
[connection signal="FieldCreated" from="YSorted/Farm visuals/FieldParent" to="Audio/SFX/Farming SFX" method="PlayOneShot"]
+[connection signal="InteractedTool" from="YSorted/Blocker/BackToFarm" to="." method="LoadSceneAtIndex"]
[connection signal="finished" from="Audio/Background Music Ramp up" to="Audio/Background Music loop" method="PlayFromOffset"]
[editable path="YSorted/Vesna"]
[editable path="YSorted/Brünnen/InteractionArea"]
-[editable path="YSorted/HoeGenericPickup"]
-[editable path="YSorted/HoeGenericPickup/InteractionArea2"]
-[editable path="YSorted/CanGenericPickup"]
-[editable path="YSorted/CanGenericPickup/InteractionArea2"]
-[editable path="YSorted/RakeGenericPickup"]
-[editable path="YSorted/RakeGenericPickup/InteractionArea2"]
-[editable path="YSorted/Farm visuals/BaseField"]
-[editable path="YSorted/Farm visuals/BaseField/FieldBehaviour/BeetRoot"]
-[editable path="YSorted/Farm visuals/BaseField/FieldBehaviour/BeetRoot/ReadyPlantInventoryItem"]
-[editable path="YSorted/Farm visuals/BaseField/FieldBehaviour/BeetRoot/ReadyPlantInventoryItem/InteractionArea2"]
-[editable path="YSorted/Farm visuals/BaseField2"]
-[editable path="YSorted/Farm visuals/BaseField2/FieldBehaviour/BeetRoot"]
-[editable path="YSorted/Farm visuals/BaseField2/FieldBehaviour/BeetRoot/ReadyPlantInventoryItem"]
-[editable path="YSorted/Farm visuals/BaseField2/FieldBehaviour/BeetRoot/ReadyPlantInventoryItem/InteractionArea2"]
-[editable path="YSorted/Farm visuals/BaseField3"]
-[editable path="YSorted/Farm visuals/BaseField3/FieldBehaviour/BeetRoot"]
-[editable path="YSorted/Farm visuals/BaseField3/FieldBehaviour/BeetRoot/ReadyPlantInventoryItem"]
-[editable path="YSorted/Farm visuals/BaseField3/FieldBehaviour/BeetRoot/ReadyPlantInventoryItem/InteractionArea2"]
-[editable path="YSorted/Farm visuals/BaseField4"]
-[editable path="YSorted/Farm visuals/BaseField4/FieldBehaviour/BeetRoot"]
-[editable path="YSorted/Farm visuals/BaseField4/FieldBehaviour/BeetRoot/ReadyPlantInventoryItem"]
-[editable path="YSorted/Farm visuals/BaseField4/FieldBehaviour/BeetRoot/ReadyPlantInventoryItem/InteractionArea2"]
-[editable path="YSorted/Farm visuals/BaseField5"]
-[editable path="YSorted/Farm visuals/BaseField5/FieldBehaviour/BeetRoot"]
-[editable path="YSorted/Farm visuals/BaseField5/FieldBehaviour/BeetRoot/ReadyPlantInventoryItem"]
-[editable path="YSorted/Farm visuals/BaseField5/FieldBehaviour/BeetRoot/ReadyPlantInventoryItem/InteractionArea2"]
-[editable path="YSorted/Farm visuals/BaseField6"]
-[editable path="YSorted/Farm visuals/BaseField6/FieldBehaviour/BeetRoot"]
-[editable path="YSorted/Farm visuals/BaseField6/FieldBehaviour/BeetRoot/ReadyPlantInventoryItem"]
-[editable path="YSorted/Farm visuals/BaseField6/FieldBehaviour/BeetRoot/ReadyPlantInventoryItem/InteractionArea2"]
+[editable path="YSorted/Farm visuals/FieldParent/BaseField"]
+[editable path="YSorted/Farm visuals/FieldParent/BaseField2"]
+[editable path="YSorted/Farm visuals/FieldParent/BaseField3"]
+[editable path="YSorted/Farm visuals/FieldParent/BaseField4"]
+[editable path="YSorted/Farm visuals/FieldParent/BaseField5"]
+[editable path="YSorted/Farm visuals/FieldParent/BaseField6"]
+[editable path="YSorted/Farm visuals/FieldParent/BaseField7"]
+[editable path="YSorted/Farm visuals/FieldParent/BaseField8"]
+[editable path="YSorted/Farm visuals/FieldParent/BaseField9"]
[editable path="CanvasLayer"]
diff --git a/scenes/Babushka_scene_startMenu.tscn b/scenes/Babushka_scene_startMenu.tscn
index 262a257..f4ea948 100644
--- a/scenes/Babushka_scene_startMenu.tscn
+++ b/scenes/Babushka_scene_startMenu.tscn
@@ -6,7 +6,7 @@
[node name="BabushkaSceneStartMenu" type="Node2D"]
script = ExtResource("1_fj2fh")
-_sceneNamesToLoad = PackedStringArray("res://scenes/Babushka_scene_farm_outside_2d.tscn")
+_sceneNamesToLoad = PackedStringArray("res://scenes/Babushka_scene_disclaimer.tscn")
[node name="CanvasLayer" type="CanvasLayer" parent="."]
diff --git a/scenes/testing/animation_setup_test.tscn b/scenes/testing/animation_setup_test.tscn
index edba314..29e4c9d 100644
--- a/scenes/testing/animation_setup_test.tscn
+++ b/scenes/testing/animation_setup_test.tscn
@@ -72,7 +72,6 @@ rest = Transform2D(1, 0, 0, 1, 24.3826, -1.82351)
[node name="head" type="Bone2D" parent="Vesna/Skeleton2D/hip/chest/neck"]
position = Vector2(13.2948, -0.197781)
rotation = 1.52891
-scale = Vector2(1, 1)
rest = Transform2D(0.0418757, 0.999123, -0.999123, 0.0418757, 13.2948, -0.197781)
[node name="armR" type="Bone2D" parent="Vesna/Skeleton2D/hip/chest"]
@@ -84,7 +83,6 @@ rest = Transform2D(-0.674355, -0.0959749, 0.0959749, -0.674355, 19.1624, -26.827
[node name="forearmR" type="Bone2D" parent="Vesna/Skeleton2D/hip/chest/armR"]
position = Vector2(26.3157, -1.29047)
rotation = -2.2602
-scale = Vector2(1, 1)
rest = Transform2D(-0.636078, -0.771625, 0.771625, -0.636078, 26.3157, -1.29047)
[node name="handR" type="Bone2D" parent="Vesna/Skeleton2D/hip/chest/armR/forearmR"]
@@ -101,5 +99,4 @@ rest = Transform2D(-0.99956, -0.0296662, 0.0296662, -0.99956, -4.51055, -13.9084
[node name="legRLower" type="Bone2D" parent="Vesna/Skeleton2D/hip/legR"]
position = Vector2(24.8604, -0.524962)
rotation = -3.11367
-scale = Vector2(1, 1)
rest = Transform2D(-0.99961, -0.0279217, 0.0279217, -0.99961, 24.8604, -0.524962)
diff --git a/scripts/CSharp/Common/Animation/Duck.cs b/scripts/CSharp/Common/Animation/Duck.cs
index 008722a..766f472 100644
--- a/scripts/CSharp/Common/Animation/Duck.cs
+++ b/scripts/CSharp/Common/Animation/Duck.cs
@@ -5,8 +5,8 @@ namespace Babushka.scripts.CSharp.Common.Animation;
public partial class Duck : Node2D
{
[Export] private CharacterBody2D _characterBody;
- [Export] private AudioPlayer _nakNakAudio;
- [Export] private AudioPlayer _wingFlapAudio;
+ [Export] private AudioPlayer2D _nakNakAudio;
+ [Export] private AudioPlayer2D _wingFlapAudio;
[Export] private Node2D _vesna;
[Export] private float _runningSpeed = 3f;
[Export] private float _slowSpeed = 0.5f;
diff --git a/scripts/CSharp/Common/Audio/AudioPlayer.cs b/scripts/CSharp/Common/Audio/AudioPlayer.cs
new file mode 100644
index 0000000..cc41f48
--- /dev/null
+++ b/scripts/CSharp/Common/Audio/AudioPlayer.cs
@@ -0,0 +1,14 @@
+using Godot;
+
+namespace Babushka.scripts.CSharp.Common.Audio;
+
+public partial class AudioPlayer : AudioStreamPlayer
+{
+ ///
+ /// For SFX and other audio that should be played only once and not looped.
+ ///
+ public void PlayOneShot()
+ {
+ Play();
+ }
+}
\ No newline at end of file
diff --git a/scripts/CSharp/Common/Audio/AudioPlayer.cs.uid b/scripts/CSharp/Common/Audio/AudioPlayer.cs.uid
new file mode 100644
index 0000000..65f1e31
--- /dev/null
+++ b/scripts/CSharp/Common/Audio/AudioPlayer.cs.uid
@@ -0,0 +1 @@
+uid://dx25g14a7xi4w
diff --git a/scripts/CSharp/Common/AudioPlayer.cs b/scripts/CSharp/Common/AudioPlayer2D.cs
similarity index 79%
rename from scripts/CSharp/Common/AudioPlayer.cs
rename to scripts/CSharp/Common/AudioPlayer2D.cs
index 1be2174..62409a2 100644
--- a/scripts/CSharp/Common/AudioPlayer.cs
+++ b/scripts/CSharp/Common/AudioPlayer2D.cs
@@ -2,7 +2,7 @@ using Godot;
namespace Babushka.scripts.CSharp.Common;
-public partial class AudioPlayer : AudioStreamPlayer2D
+public partial class AudioPlayer2D : AudioStreamPlayer2D
{
///
/// For SFX and other audio that should be played only once and not looped.
diff --git a/scripts/CSharp/Common/AudioPlayer.cs.uid b/scripts/CSharp/Common/AudioPlayer2D.cs.uid
similarity index 100%
rename from scripts/CSharp/Common/AudioPlayer.cs.uid
rename to scripts/CSharp/Common/AudioPlayer2D.cs.uid
diff --git a/scripts/CSharp/Common/CharacterControls/InteractionArea2D.cs b/scripts/CSharp/Common/CharacterControls/InteractionArea2D.cs
index 72ea54b..1c93896 100644
--- a/scripts/CSharp/Common/CharacterControls/InteractionArea2D.cs
+++ b/scripts/CSharp/Common/CharacterControls/InteractionArea2D.cs
@@ -1,4 +1,5 @@
using System;
+using Babushka.scripts.CSharp.Common.Services;
using Godot;
namespace Babushka.scripts.CSharp.Common.CharacterControls;
@@ -25,10 +26,13 @@ public partial class InteractionArea2D : Node2D
set => _active = value;
}
+ public void SetActiveInverse(bool active)
+ {
+ IsActive = !active;
+ }
public override void _Ready()
{
-
if (_useSprite && _useOutline)
{
try
@@ -40,12 +44,12 @@ public partial class InteractionArea2D : Node2D
GD.PrintErr($"No sprite to outline found on: {GetParent().Name}" + exception.Message);
}
}
-
}
+
public void OnPlayerEntered(Node2D player)
{
- if (!_active)
+ if (!_active || !InputService.Instance.InputEnabled)
return;
if(_showLabel)
@@ -72,21 +76,31 @@ public partial class InteractionArea2D : Node2D
public override void _Input(InputEvent @event)
{
- if (!_active)
+ if (!_active || !InputService.Instance.InputEnabled)
return;
if (@event.IsAction("interact") && @event.IsPressed())
{
- if (_area.HasOverlappingBodies())
- {
- _label.Hide();
+ TryInteract();
+ }
+
+ if (@event.IsActionPressed("click") && @event.IsPressed())
+ {
+ TryInteract();
+ }
+ }
+
+ private void TryInteract()
+ {
+ if (_area.HasOverlappingBodies())
+ {
+ _label.Hide();
- if (_useSprite && _useOutline)
- _spriteToOutline.Material = _backupMaterial;
+ if (_useSprite && _useOutline)
+ _spriteToOutline.Material = _backupMaterial;
- EmitSignal(SignalName.InteractedTool, _id);
- EmitSignal(SignalName.Interacted);
- }
+ EmitSignal(SignalName.InteractedTool, _id);
+ EmitSignal(SignalName.Interacted);
}
}
diff --git a/scripts/CSharp/Common/CharacterControls/PlayerMovement.cs b/scripts/CSharp/Common/CharacterControls/PlayerMovement.cs
index 029a6b8..bb95566 100644
--- a/scripts/CSharp/Common/CharacterControls/PlayerMovement.cs
+++ b/scripts/CSharp/Common/CharacterControls/PlayerMovement.cs
@@ -1,5 +1,3 @@
-using System.Threading.Tasks;
-using Babushka.scripts.CSharp.Common.Inventory;
using Babushka.scripts.CSharp.Common.Services;
using Godot;
@@ -8,8 +6,7 @@ namespace Babushka.scripts.CSharp.Common.CharacterControls;
public partial class PlayerMovement : CharacterBody2D
{
[Export] private float _speed = 1000f;
-
- private InventoryManager _inventoryManager;
+ [Export] private Timer _stepTimer;
public override void _Process(double delta)
{
@@ -49,6 +46,19 @@ public partial class PlayerMovement : CharacterBody2D
anyActionPressed = true;
}
+
+ if (Velocity.LengthSquared() == 0 && currentVelocity.LengthSquared() > 0)
+ {
+ _stepTimer.Start();
+ _stepTimer.SetPaused(false);
+ }
+
+ if (currentVelocity.LengthSquared() == 0 && Velocity.LengthSquared() != 0)
+ {
+ _stepTimer.Stop();
+ _stepTimer.SetPaused(true);
+ }
+
if (anyActionPressed)
{
@@ -67,5 +77,9 @@ public partial class PlayerMovement : CharacterBody2D
Velocity = currentVelocity;
MoveAndSlide();
}
+ else
+ {
+ Velocity = Vector2.Zero;
+ }
}
}
diff --git a/scripts/CSharp/Common/Farming/FieldBehaviour2D.cs b/scripts/CSharp/Common/Farming/FieldBehaviour2D.cs
index b747ebf..19ad9d0 100644
--- a/scripts/CSharp/Common/Farming/FieldBehaviour2D.cs
+++ b/scripts/CSharp/Common/Farming/FieldBehaviour2D.cs
@@ -1,5 +1,6 @@
using System;
using Babushka.scripts.CSharp.Common.CharacterControls;
+using Babushka.scripts.CSharp.Common.Inventory;
using Godot;
namespace Babushka.scripts.CSharp.Common.Farming;
@@ -13,7 +14,10 @@ public partial class FieldBehaviour2D : Sprite2D
[Export] private Texture2D Tilled;
[Export] private Texture2D Watered;
[Export] public FieldState FieldState = FieldState.Tilled;
- [Export] private InteractionArea2D _growingCollider;
+ [Export] public InteractionArea2D PlantingInteraction;
+ [Export] public Node2D PlantingPlaceholder;
+ [Export] public ItemRepository ItemRepository;
+
public Vector2 FieldPosition;
@@ -31,19 +35,22 @@ public partial class FieldBehaviour2D : Sprite2D
{
case FieldState.Empty:
FieldState = FieldState.Empty;
+ PlantingInteraction.IsActive = false;
break;
case FieldState.Tilled:
FieldState = FieldState.Tilled;
_fieldSprite.Texture = Tilled;
- _growingCollider.Visible = false;
+ PlantingInteraction.IsActive = true;
break;
case FieldState.Watered:
FieldState = FieldState.Watered;
_fieldSprite.Texture = Watered;
- _growingCollider.Visible = true;
+ PlantingInteraction.IsActive = true;
break;
case FieldState.Planted:
FieldState = FieldState.Planted;
+ _fieldSprite.Texture = Tilled;
+ PlantingInteraction.IsActive = false;
break;
default:
FieldState = FieldState.NotFound;
@@ -62,19 +69,41 @@ public partial class FieldBehaviour2D : Sprite2D
///
public void Farm()
{
- switch (FieldState)
+ if (TryPlant())
{
- case FieldState.Empty:
- _fieldSprite.Texture = Tilled;
- FieldState = FieldState.Tilled;
- break;
- case FieldState.Watered:
- FieldState = FieldState.Planted;
- break;
- case FieldState.Planted:
- break;
- default:
- break;
+ UpdateFieldState(FieldState.Planted);
}
}
+
+ private bool TryPlant()
+ {
+ bool success = false;
+ int currentSlotIndex = InventoryManager.Instance.CurrentSelectedSlotIndex;
+ ItemInstance? item = InventoryManager.Instance.playerInventory.Slots[currentSlotIndex].itemInstance;
+
+ if (item == null || PlantingPlaceholder.GetChildCount() > 0 || item.amount == 0)
+ return success;
+
+ string prefabPath = ItemRepository.TryGetPrefabPath(item.blueprint);
+
+ if (prefabPath != null)
+ {
+ PackedScene prefab = ResourceLoader.Load(prefabPath, nameof(PackedScene));
+ Node2D plant2d = prefab.Instantiate();
+ PlantingPlaceholder.AddChild(plant2d);
+ plant2d.GlobalPosition = PlantingPlaceholder.GlobalPosition;
+ PlantBehaviour2D? plantBehaviour = plant2d as PlantBehaviour2D;
+
+ if (plantBehaviour != null)
+ {
+ plantBehaviour.Field = this;
+ }
+
+ InventoryManager.Instance.playerInventory.RemoveItem(currentSlotIndex);
+ success = true;
+ }
+
+ return success;
+ }
+
}
\ No newline at end of file
diff --git a/scripts/CSharp/Common/Farming/FieldService2D.cs b/scripts/CSharp/Common/Farming/FieldService2D.cs
index 0583dbd..0d241e9 100644
--- a/scripts/CSharp/Common/Farming/FieldService2D.cs
+++ b/scripts/CSharp/Common/Farming/FieldService2D.cs
@@ -12,20 +12,6 @@ public partial class FieldService2D : Node2D
[Signal] public delegate void FieldCreatedEventHandler();
- /*
- public override void _PhysicsProcess(double delta)
- {
- var spaceState = GetWorld2D().DirectSpaceState;
- // use global coordinates, not local to node
- var query = PhysicsRayQueryParameters2D.Create(GetGlobalMousePosition(), new Vector3(0,0,-1),
- CollisionMask, [GetRid()]);
- var result = spaceState.IntersectRay(query);
- if (result.Count > 0)
- GD.Print("Hit at point: ", result["position"]);
- }
- */
-
-
//Create
public bool TryAddEntry(Vector2I key, FieldBehaviour2D field)
{
diff --git a/scripts/CSharp/Common/Farming/PlantBehaviour2D.cs b/scripts/CSharp/Common/Farming/PlantBehaviour2D.cs
index d078b19..6a3439a 100644
--- a/scripts/CSharp/Common/Farming/PlantBehaviour2D.cs
+++ b/scripts/CSharp/Common/Farming/PlantBehaviour2D.cs
@@ -1,5 +1,5 @@
using System;
-using Babushka.scripts.CSharp.Common.CharacterControls;
+using Babushka.scripts.CSharp.Common.Animation;
using Babushka.scripts.CSharp.Common.Inventory;
using Godot;
@@ -25,19 +25,46 @@ public partial class PlantBehaviour2D : Node2D
private string _magicWordDialogicEventName = "MagicWord";
private Sprite2D _currentPlantSprite = null;
private bool _magicWordSaid = false;
+
+ ///
+ /// public accessor for the field reference
+ ///
+ public FieldBehaviour2D Field
+ {
+ get => _field;
+ set => _field = value;
+ }
+
+ public override void _Ready()
+ {
+ if (_state == PlantState.None)
+ {
+ GetTree().CallGroup("PlantGrowing", VesnaAnimations.MethodName.PlayFarmingAnimation);
+ _state = PlantState.Planted;
+ _currentPlantSprite = GetRandomSprite(_seeds);
+ _currentPlantSprite.Visible = true;
+ }
+ else
+ {
+ GrowPlant();
+ }
+ }
+
+ public void Grow()
+ {
+ GetTree().CallGroup("PlantGrowing", VesnaAnimations.MethodName.PlayFarmingAnimation);
+ GrowPlant();
+ }
///
/// Transitions the plant to its next growth stage.
///
- public void Grow()
+ public void GrowPlant()
{
if (_field.FieldState != FieldState.Watered || _magicWordSaid != _magicWordNeeded)
return;
- //GetTree().CallGroup("PlantGrowing", PlayerMovement.MethodName.PlayFarmingAnimation);
- // todo:
- // find out why the last plant stage is being skipped the second time around
switch (_state)
{
case PlantState.None:
@@ -47,26 +74,30 @@ public partial class PlantBehaviour2D : Node2D
break;
case PlantState.Planted:
_state = PlantState.SmallPlant;
- _currentPlantSprite.Visible = false;
+ if(_currentPlantSprite != null)
+ _currentPlantSprite.Visible = false;
_currentPlantSprite = GetRandomSprite(_smallPlants);
_currentPlantSprite.Visible = true;
break;
case PlantState.SmallPlant:
_state = PlantState.BigPlant;
- _currentPlantSprite.Visible = false;
+ if(_currentPlantSprite != null)
+ _currentPlantSprite.Visible = false;
_currentPlantSprite = GetRandomSprite(_bigPlants);
_currentPlantSprite.Visible = true;
break;
case PlantState.BigPlant:
_state = PlantState.Ready;
- _currentPlantSprite.Visible = false;
+ if(_currentPlantSprite != null)
+ _currentPlantSprite.Visible = false;
_currentPlantSprite = GetRandomSprite(_readyPlants);
_currentPlantSprite.Visible = true;
ActivatePickupAfterDelay(true);
break;
case PlantState.Ready:
_state = PlantState.None;
- _currentPlantSprite.Visible = false;
+ if(_currentPlantSprite != null)
+ _currentPlantSprite.Visible = false;
_currentPlantSprite = null;
ActivatePickupAfterDelay(false);
break;
diff --git a/scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs b/scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs
index 13df0bf..05eba7a 100644
--- a/scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs
+++ b/scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs
@@ -46,23 +46,21 @@ public partial class VesnaBehaviour2D : Node
{
InventorySlot currentSlot = InventoryManager.Instance.GetCurrentSelectedSlot();
ItemInstance? currentItem = currentSlot.itemInstance;
-
- if (currentItem == null)
- return;
-
+
int toolId = -1;
- if (currentItem.blueprint == _hoe)
+ if (currentItem != null && currentItem.blueprint == _hoe)
{
toolId = 0;
}
- if (currentItem.blueprint == _wateringCan)
+ if (currentItem != null && currentItem.blueprint == _wateringCan)
{
toolId = 1;
}
ActivateTool(toolId);
+ _vesnaAnimations.ActivateTool(toolId >= 0, toolId);
EmitSignal(SignalName.InventorySelectionChanged, toolId);
}
diff --git a/scripts/CSharp/Common/Inventory/InventoryActionResult.cs b/scripts/CSharp/Common/Inventory/InventoryActionResult.cs
index be9c0e5..14efb3e 100644
--- a/scripts/CSharp/Common/Inventory/InventoryActionResult.cs
+++ b/scripts/CSharp/Common/Inventory/InventoryActionResult.cs
@@ -3,8 +3,8 @@
public enum InventoryActionResult
{
Success,
- DestinationDoesNotExists,
+ DestinationDoesNotExist,
DestinationFull,
- SourceDoesNotExists,
+ SourceDoesNotExist,
SourceIsEmpty
}
diff --git a/scripts/CSharp/Common/Inventory/InventoryInstance.cs b/scripts/CSharp/Common/Inventory/InventoryInstance.cs
index 8812fe7..d1c7b50 100644
--- a/scripts/CSharp/Common/Inventory/InventoryInstance.cs
+++ b/scripts/CSharp/Common/Inventory/InventoryInstance.cs
@@ -17,6 +17,9 @@ public partial class InventoryInstance : Node
[Signal]
public delegate void InventoryContentsChangedEventHandler();
+ ///
+ /// The total amount of Inventoryslots in the inventory (empty and occupied).
+ ///
[Export]
public int SlotAmount
{
@@ -49,7 +52,7 @@ public partial class InventoryInstance : Node
private InventoryActionResult AddItemAndStackRecursive(ItemInstance newItem, int slotSearch)
{
if (newItem.blueprint == null || newItem.amount == 0)
- return InventoryActionResult.SourceDoesNotExists;
+ return InventoryActionResult.SourceDoesNotExist;
var slotIndex = -1;
// find stackable slot
@@ -97,7 +100,7 @@ public partial class InventoryInstance : Node
if (inventorySlot < 0 || inventorySlot >= _slots.Count)
{
itemInstance = null;
- return InventoryActionResult.SourceDoesNotExists;
+ return InventoryActionResult.SourceDoesNotExist;
}
if (_slots[inventorySlot].IsEmpty())
@@ -107,7 +110,14 @@ public partial class InventoryInstance : Node
}
itemInstance = _slots[inventorySlot].itemInstance;
- _slots[inventorySlot].itemInstance = null;
+ if (itemInstance == null)
+ return InventoryActionResult.SourceDoesNotExist;
+
+ itemInstance.amount -= 1;
+
+ if(itemInstance.amount == 0)
+ _slots[inventorySlot].itemInstance = null;
+
EmitSignal(SignalName.InventoryContentsChanged);
return InventoryActionResult.Success;
}
@@ -120,7 +130,7 @@ public partial class InventoryInstance : Node
public InventoryActionResult AddItemToSlot(ItemInstance itemInstance, int destinationSlot)
{
if (destinationSlot < 0 || destinationSlot >= _slots.Count)
- return InventoryActionResult.DestinationDoesNotExists;
+ return InventoryActionResult.DestinationDoesNotExist;
if (!_slots[destinationSlot].IsEmpty())
return InventoryActionResult.DestinationFull;
diff --git a/scripts/CSharp/Common/Inventory/InventorySlot.cs b/scripts/CSharp/Common/Inventory/InventorySlot.cs
index 9ee5a5a..fec8f36 100644
--- a/scripts/CSharp/Common/Inventory/InventorySlot.cs
+++ b/scripts/CSharp/Common/Inventory/InventorySlot.cs
@@ -1,9 +1,21 @@
#nullable enable
namespace Babushka.scripts.CSharp.Common.Inventory;
+///
+/// Represents a virtual object wrapper for an item instance.
+/// Can return the containing item or null.
+///
public class InventorySlot
{
+ ///
+ /// The inventory item instance that may or may not be bound to this slot.
+ ///
public ItemInstance? itemInstance;
+
+ ///
+ /// Whether or not this slot is currently occupied by an item instance.
+ ///
+ ///
public bool IsEmpty()
{
return itemInstance == null;
diff --git a/scripts/CSharp/Common/Inventory/ItemRepository.cs b/scripts/CSharp/Common/Inventory/ItemRepository.cs
new file mode 100644
index 0000000..a9b85c7
--- /dev/null
+++ b/scripts/CSharp/Common/Inventory/ItemRepository.cs
@@ -0,0 +1,29 @@
+
+using Godot;
+using Godot.Collections;
+
+namespace Babushka.scripts.CSharp.Common.Inventory;
+
+///
+/// A dictionary wrapper resource that holds references to ItemResources and maps them to their respective prefabs.
+///
+[GlobalClass]
+public partial class ItemRepository : Resource
+{
+ [Export] public Dictionary itemInventoryRepository;
+
+ ///
+ /// Returns the path to the itemPrefab for the inventory item.
+ ///
+ ///
+ ///
+ public string TryGetPrefabPath(ItemResource resource)
+ {
+ if (itemInventoryRepository.Keys.Contains(resource))
+ {
+ return itemInventoryRepository[resource];
+ }
+
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/scripts/CSharp/Common/Inventory/ItemRepository.cs.uid b/scripts/CSharp/Common/Inventory/ItemRepository.cs.uid
new file mode 100644
index 0000000..29cac99
--- /dev/null
+++ b/scripts/CSharp/Common/Inventory/ItemRepository.cs.uid
@@ -0,0 +1 @@
+uid://oafmfqkdqewd
diff --git a/scripts/CSharp/Common/Inventory/ItemResource.cs b/scripts/CSharp/Common/Inventory/ItemResource.cs
index 0e0ed89..fd1b427 100644
--- a/scripts/CSharp/Common/Inventory/ItemResource.cs
+++ b/scripts/CSharp/Common/Inventory/ItemResource.cs
@@ -1,4 +1,5 @@
using Godot;
+
namespace Babushka.scripts.CSharp.Common.Inventory;
[GlobalClass]
@@ -15,7 +16,7 @@ public partial class ItemResource : Resource
[Export]
public int maxStack;
-
+
public ItemResource()
{
name = "";
@@ -23,3 +24,4 @@ public partial class ItemResource : Resource
maxStack = 1;
}
}
+
diff --git a/scripts/CSharp/Common/Items/InventoryDependentInteractable.cs b/scripts/CSharp/Common/Items/InventoryDependentInteractable.cs
new file mode 100644
index 0000000..84de2d5
--- /dev/null
+++ b/scripts/CSharp/Common/Items/InventoryDependentInteractable.cs
@@ -0,0 +1,57 @@
+using Babushka.scripts.CSharp.Common.CharacterControls;
+using Babushka.scripts.CSharp.Common.Inventory;
+using Godot;
+using Godot.Collections;
+
+namespace Babushka.scripts.CSharp.Common.Items;
+
+public partial class InventoryDependentInteractable : Node2D
+{
+ [Export] private InteractionArea2D _interactionArea;
+ [Export] private Array _itemsToReactTo;
+ [Export] private bool _activateOnItem = true;
+
+ private InventoryManager _inventoryManager;
+ private InventoryInstance _inventoryInstance;
+
+ public override void _Ready()
+ {
+ _inventoryManager = InventoryManager.Instance;
+ _inventoryInstance = _inventoryManager.playerInventory;
+ _inventoryManager.SlotIndexChanged += HandleInventorySelectedSlotIndexChanged;
+ }
+
+ private void HandleInventorySelectedSlotIndexChanged(int newIndex)
+ {
+ int currentSlotIndex = InventoryManager.Instance.CurrentSelectedSlotIndex;
+ ItemInstance? item = InventoryManager.Instance.playerInventory.Slots[currentSlotIndex].itemInstance;
+
+ if (item != null)
+ {
+ if (_activateOnItem)
+ {
+ _interactionArea.IsActive = Match(item.blueprint);
+ }
+ else
+ {
+ _interactionArea.IsActive = !Match(item.blueprint);
+ }
+ }
+
+ }
+
+ private bool Match(ItemResource inventoryItem)
+ {
+ bool matched = false;
+
+ foreach (ItemResource item in _itemsToReactTo)
+ {
+ if (inventoryItem == item)
+ {
+ matched = true;
+ }
+ }
+
+ return matched;
+ }
+}
\ No newline at end of file
diff --git a/scripts/CSharp/Common/Items/InventoryDependentInteractable.cs.uid b/scripts/CSharp/Common/Items/InventoryDependentInteractable.cs.uid
new file mode 100644
index 0000000..4eeb9c5
--- /dev/null
+++ b/scripts/CSharp/Common/Items/InventoryDependentInteractable.cs.uid
@@ -0,0 +1 @@
+uid://doxr432r22dd0
diff --git a/scripts/CSharp/Common/Items/NonInventoryPickup.cs b/scripts/CSharp/Common/Items/NonInventoryPickup.cs
new file mode 100644
index 0000000..1124923
--- /dev/null
+++ b/scripts/CSharp/Common/Items/NonInventoryPickup.cs
@@ -0,0 +1,13 @@
+using Babushka.scripts.CSharp.Common.Animation;
+using Godot;
+
+namespace Babushka.scripts.CSharp.Common.Items;
+
+public partial class NonInventoryPickup : Node2D
+{
+ public void PlayPickupAnimation()
+ {
+ // todo: replace with EventBus implementation as soon as this is possible
+ GetTree().CallGroup("Pickup", VesnaAnimations.MethodName.PlayPickUpAnimation);
+ }
+}
\ No newline at end of file
diff --git a/scripts/CSharp/Common/Items/NonInventoryPickup.cs.uid b/scripts/CSharp/Common/Items/NonInventoryPickup.cs.uid
new file mode 100644
index 0000000..699a9ee
--- /dev/null
+++ b/scripts/CSharp/Common/Items/NonInventoryPickup.cs.uid
@@ -0,0 +1 @@
+uid://dkk1vjijvgrd7
diff --git a/scripts/CSharp/Common/NPC/TalkingCharacter.cs b/scripts/CSharp/Common/NPC/TalkingCharacter.cs
index 96c5fc5..feda0aa 100644
--- a/scripts/CSharp/Common/NPC/TalkingCharacter.cs
+++ b/scripts/CSharp/Common/NPC/TalkingCharacter.cs
@@ -12,7 +12,8 @@ public partial class TalkingCharacter : Node2D
private int _timelineIndex = 0;
[Signal] public delegate void TalkingEventHandler(string timelineName);
-
+ [Signal] public delegate void FinishedTalkingEventHandler(bool hasTimeLinesToPlay);
+
public override void _Ready()
{
ToggleTalking();
@@ -37,5 +38,7 @@ public partial class TalkingCharacter : Node2D
}
if (_sprite != null)
_sprite.Play();
+
+ EmitSignal(SignalName.FinishedTalking, _timelineIndex >= _timelinesToPlay.Length);
}
}
diff --git a/scripts/CSharp/Common/Quest/QuestMessagePopup.cs b/scripts/CSharp/Common/Quest/QuestMessagePopup.cs
index 6cb8792..0baf839 100644
--- a/scripts/CSharp/Common/Quest/QuestMessagePopup.cs
+++ b/scripts/CSharp/Common/Quest/QuestMessagePopup.cs
@@ -1,6 +1,5 @@
using Godot;
using System;
-using System.Net.Mime;
using Babushka.scripts.CSharp.Common.Quest;
public partial class QuestMessagePopup : Control
diff --git a/scripts/CSharp/Common/SceneManagement/SceneTransitionThreaded.cs b/scripts/CSharp/Common/SceneManagement/SceneTransitionThreaded.cs
index eeaff47..556bc3e 100644
--- a/scripts/CSharp/Common/SceneManagement/SceneTransitionThreaded.cs
+++ b/scripts/CSharp/Common/SceneManagement/SceneTransitionThreaded.cs
@@ -48,7 +48,6 @@ public partial class SceneTransitionThreaded : CanvasLayer
public async void ChangeSceneToFile(string scenePath)
{
animationPlayer.Play("fadeIn");
- //yield(animationPlayer, "animation_finished");
await ToSignal(animationPlayer, "animation_finished");
GetTree().ChangeSceneToFile(scenePath);
animationPlayer.Play("fadeOut");
diff --git a/scripts/CSharp/Common/SceneTransition.cs b/scripts/CSharp/Common/SceneTransition.cs
index 7649041..e6c5426 100644
--- a/scripts/CSharp/Common/SceneTransition.cs
+++ b/scripts/CSharp/Common/SceneTransition.cs
@@ -17,7 +17,7 @@ public partial class SceneTransition : Node
public void LoadSceneAtIndex(int index)
{
string sceneName = _sceneNamesToLoad[index];
- SceneTransitionThreaded.Instance.ChangeSceneToFile(sceneName);
+ SceneTransitionThreaded.Instance.ChangeSceneToFileThreaded(sceneName);
UnloadAfterDelay();
}
diff --git a/scripts/CSharp/Common/Temp/MVPDuck.cs b/scripts/CSharp/Common/Temp/MVPDuck.cs
index d1e72b3..7c7cf93 100644
--- a/scripts/CSharp/Common/Temp/MVPDuck.cs
+++ b/scripts/CSharp/Common/Temp/MVPDuck.cs
@@ -12,13 +12,20 @@ public partial class MVPDuck : Node2D
[Export] private int _transferDelayMs;
[Export] private AnimationPlayer _animationPlayer;
[Export] private string _flapAnimationName = "flapFlap";
+
+ private bool _collected;
[Signal] public delegate void DuckCollectedEventHandler();
public void TransferToTargetAfterDelay()
{
- MoveAfterDelay();
- PlayAnimation();
+ if (!_collected)
+ {
+ MoveAfterDelay();
+ PlayAnimation();
+ _collected = true;
+ }
+
}
private void PlayAnimation()
diff --git a/scripts/CSharp/Common/UI/WateringCanUi.cs b/scripts/CSharp/Common/UI/WateringCanUi.cs
index ae62695..122df0c 100644
--- a/scripts/CSharp/Common/UI/WateringCanUi.cs
+++ b/scripts/CSharp/Common/UI/WateringCanUi.cs
@@ -5,7 +5,7 @@ namespace Babushka.scripts.CSharp.Common.UI;
public partial class WateringCanUi : Node2D
{
- [Export] private Sprite2D[] _stages;
+ [Export] private Slider _slider;
private const int WATERING_CAN_ID = 1;
@@ -35,10 +35,8 @@ public partial class WateringCanUi : Node2D
private void UpdateSprites()
{
- for (int i = 0; i < _stages.Length; i++)
- {
- _stages[i].Visible = WateringCanState.Active && i < WateringCanState.GetFillState();
- }
+ _slider.Visible = WateringCanState.Active;
+ _slider.Value = (float)WateringCanState.GetFillState() / WateringCanState.MAX_FILLSTATE;
}
}
\ No newline at end of file
diff --git a/shader/swaying_plant.gdshader b/shader/swaying_plant.gdshader
index dcaae5a..01c04ce 100644
--- a/shader/swaying_plant.gdshader
+++ b/shader/swaying_plant.gdshader
@@ -35,9 +35,21 @@ float getWind(vec2 vertex, vec2 uv, float time){
return wind;
}
+float hash(vec2 p) {
+ return fract(sin(dot(p, vec2(12.9898,78.233))) * 43758.5453123);
+}
+
+float noise(vec2 x) {
+ vec2 p = floor(x);
+ vec2 f = fract(x);
+ f = f * f * (3.0 - 2.0 * f);
+ vec2 a = vec2(1.0, 0.0);
+ return mix(mix(hash(p + a.yy), hash(p + a.xy), f.x), mix(hash(p + a.yx), hash(p + a.xx), f.x), f.y);
+}
+
void vertex() {
vec4 pos = MODEL_MATRIX * vec4(0.0, 0.0, 0.0, 1.0);
- float time = TIME * speed + sin(float(INSTANCE_ID) * offset);
- //float time = TIME * speed + pos.x * pos.y ; not working when moving...
+ //float time = TIME * speed + sin(VERTEX.x * noise(VERTEX.xy) * offset);
+ float time = TIME * speed + sin(pos.x * offset) * cos( pos.x * offset) ;
VERTEX.x += getWind(VERTEX.xy, UV, time);
-}
\ No newline at end of file
+}