Compare commits

..

67 Commits

Author SHA1 Message Date
jonathan 7ab513f01c Made that vesna can move to the beets scene 2026-02-04 22:17:45 +01:00
jonathan c7142111ed Made Player inventory saveable 2026-02-04 22:01:26 +01:00
jonathan a6fa4315dc Moved the player inventory and selected slot to VesnaEntity 2026-02-04 21:32:24 +01:00
jonathan 7841252809 Make Vesna entity save current position 2026-02-04 20:40:50 +01:00
jonathan 1b77718b9b Added basic vesna entity 2026-02-04 20:25:54 +01:00
jonathan 0bf3cc19c7 Changed naming stile for constants to CAPSLOCK 2026-02-04 19:57:46 +01:00
jonathan 89321e917a Removed all outside connection to and from the Vesna prefabs 2026-02-04 19:43:49 +01:00
jonathan 2cbf7e15a4 Changed camera no not need a direct reference to vesna 2026-02-04 19:40:10 +01:00
Jonathan 628da80ed3 Merge pull request 'feature/entity_rework' (#52) from feature/entity_rework into develop
Reviewed-on: #52
Reviewed-by: Jonathan <cblech@ymail.com>
2026-02-03 18:44:13 +01:00
Katharina Ziolkowski 0dfbd73978 Reverted ItemOnGround to make everything compile again 2026-02-03 17:59:38 +01:00
Katharina Ziolkowski 8a93b00e72 Merge branch 'develop' into feature/entity_rework
# Conflicts:
#	scenes/scene_credits.tscn
#	scenes/scene_farm_outside_2d.tscn
#	scenes/scene_fight_world_room.tscn
#	scenes/scene_indoor_vesnas_room.tscn
#	scenes/scene_outside_beets.tscn
#	scripts/CSharp/Common/Farming/PlantBehaviour2D.cs
2026-02-03 17:53:28 +01:00
Katharina Ziolkowski ba7d550c3f Implemented Save and Load functionality 2026-02-03 17:30:35 +01:00
Katharina Ziolkowski b65a3bbd6d Managed the freeing of entityplacers. Also cleaned up EntityManager 2026-02-03 15:36:59 +01:00
Katharina Ziolkowski bcbc074c86 First adjustments to the Entity System to make it work with different types 2026-02-03 13:55:13 +01:00
jonathan 745f54b375 WIP 2026-01-29 17:42:32 +01:00
kziolkowski 2c8a024528 Merge pull request 'feature/build_0_7' (#49) from feature/build_0_7 into develop
Reviewed-on: #49
Reviewed-by: Jonathan <cblech@ymail.com>
2026-01-27 13:04:21 +01:00
kziolkowski 76eb408a40 Merge branch 'develop' into feature/build_0_7 2026-01-27 13:01:34 +01:00
Katharina Ziolkowski ff143f07e7 deleted unused autosave file 2026-01-27 13:00:38 +01:00
Jonathan b50ca5b919 Merge pull request 'einfügen von Gesichtsausdrücken für Vesna' (#46) from Vesna_Gesichtsausdrücke_einfügen_ into develop
Reviewed-on: #46
Reviewed-by: Jonathan <cblech@ymail.com>
2026-01-13 23:43:46 +01:00
jonathan 59d313d97d Added basic entity scripts 2025-12-18 14:27:27 +01:00
Jonathan 9032272599 Merge pull request 'BlobFighter TargetSelection ColliderShape2D Transform angepasst' (#42) from Enemy_selection_overlap into develop
Reviewed-on: #42
Reviewed-by: Jonathan <cblech@ymail.com>
2025-12-18 13:06:03 +01:00
jlink a2ef3bfaf0 Window angepasst 2025-12-18 13:02:32 +01:00
jlink 1ab1071246 HoverIndicator off 2025-12-17 15:29:58 +01:00
kziolkowski b0ee8c4c58 fixed path strings in scene transitions and added disclaimer and credits back into the flow 2025-12-17 01:07:39 +01:00
kziolkowski 522fdfa365 Added fightworld background and cat dialogue 2025-12-17 00:40:43 +01:00
kziolkowski 4f6c5ab9c1 fixed some layering issues in beetroot scene and added a mock convo with the domovoi 2025-12-17 00:15:42 +01:00
kziolkowski 11e24e249e Fixed Field outline not disappearing when switching tools 2025-12-16 23:29:48 +01:00
kziolkowski f3080df4b7 moved fence door collision shape up to reduce unwanted triggering 2025-12-16 23:13:38 +01:00
kziolkowski f6e83e7fef Added event handlers in Fieldbehaviour to react to watering can state changes 2025-12-16 23:13:09 +01:00
kziolkowski 3bdc8cd03f Deactivated harvestable plant on spawn 2025-12-16 23:06:58 +01:00
kziolkowski f862827d98 Removed Print statements 2025-12-16 23:06:41 +01:00
kziolkowski a401cbe5b9 🐛 fixed field activator self-deactivating on load bug 2025-12-16 22:53:22 +01:00
kziolkowski 48660b167c Merge branch 'feature/bugfixes_polish_II' into feature/build_0_7
# Conflicts:
#	scenes/scene_farm_outside_2d.tscn
2025-12-16 21:59:04 +01:00
Jonathan e5b2b8b8ab Merge pull request 'Connect farming and fighting by making them codependent' (#44) from feature/farm_fight_loop into develop
Reviewed-on: #44
2025-12-16 20:44:26 +01:00
Jonathan 2fa8aa9fbc Merge pull request 'Vesna resets to bed after death' (#47) from Vesna_resets_to_bed_after_dead into develop
Reviewed-on: #47
Reviewed-by: Jonathan <cblech@ymail.com>
2025-12-16 19:37:29 +01:00
Jonathan 6deb6e29fd Merge pull request 'Made attack selection only select alive enemies' (#45) from bug/attack_dead_enemy into develop
Reviewed-on: #45
Reviewed-by: kziolkowski <katharina.ziolkowski@gmail.com>
2025-12-16 19:30:33 +01:00
Jonathan edc133749f Merge pull request 'Randomized who starts the fight' (#41) from randomise_fight_start into develop
Reviewed-on: #41
Reviewed-by: kziolkowski <katharina.ziolkowski@gmail.com>
2025-12-16 19:28:37 +01:00
jonathan 5f75bde317 💄 Made heal button show how many beats are left 2025-12-16 19:24:20 +01:00
jonathan 7310bfbf6e Added flying beet to the ui when used 2025-12-16 19:09:03 +01:00
jonathan fef8380a57 When beetroot is in inventory the player can heal 2025-12-16 19:09:03 +01:00
jonathan f42c2c86b1 Defeated enemygroups now drop a beet_seed 2025-12-16 19:09:03 +01:00
kziolkowski f1a2e6166b 🐛 fixed field setup in beet scene 2025-12-16 18:09:51 +01:00
kziolkowski c0111e4c17 🐛 fixed rake triggering field interaction + watering can interaction 2025-12-16 16:43:46 +01:00
jlink 2ed9dbbc52 Vesna resets to bed after death 2025-12-16 15:34:52 +01:00
kziolkowski 4f660c4af8 🐛 fixed rake still activating field outlines bug 2025-12-16 15:11:32 +01:00
kziolkowski 13fcf059e9 Added trash object savestate 2025-12-16 15:03:27 +01:00
kziolkowski 7f58aeae76 removed GD.Prints 2025-12-16 14:33:54 +01:00
jlink 3456340bb7 einfügen von Gesichtsausdrücken für Vesna 2025-12-16 14:30:23 +01:00
kziolkowski 30750d2e3c ♻️ removed planted state from Fieldstate because it didn't make any sense. 2025-12-16 14:27:12 +01:00
kziolkowski 950731b225 🐛 Fixed ObjectNotDisposedException on Well in beetroot scene 2025-12-16 13:46:28 +01:00
kziolkowski feb591f56a ♻️ modified changed path in start scene 2025-12-16 13:46:07 +01:00
kziolkowski aac0992590 ♻️ scene name refactoring part two: fixing scene transition paths in scenes 2025-12-16 13:34:32 +01:00
kziolkowski 21cf2d1a6a ♻️ Renamed scenes 2025-12-16 13:17:39 +01:00
kziolkowski 3f5cfed477 removed test scene 2025-12-16 13:14:46 +01:00
kziolkowski 64c15c2e63 removed print statements 2025-12-16 13:14:25 +01:00
kziolkowski a98c842ee0 🐛 Fixed field interaction bug 2025-12-16 13:04:40 +01:00
kziolkowski abed751d29 🚧 WIP trying to make fields have outlines again 2025-12-15 22:45:02 +01:00
kziolkowski ce113e16da 🐛 planting seeds works again 2025-12-15 21:33:04 +01:00
kziolkowski c55e527bf4 Merge branch 'develop' into feature/bugfixes_polish_II 2025-12-15 20:41:44 +01:00
kziolkowski c509a52001 🚧 Basic interaction works now too 2025-12-12 13:49:16 +01:00
kziolkowski 9e0e87ef17 🚧 WIP detection works now 2025-12-12 13:46:32 +01:00
kziolkowski 7ffbb8e68d pulled ceiling lower in kitchen scene 2025-12-12 10:34:52 +01:00
kziolkowski b232cb31c3 🚧 interaction kinda sorta works now, still needs tweaking 2025-12-10 16:57:39 +01:00
kziolkowski a6260efc07 Merge branch 'develop' into feature/bugfixes_polish_II 2025-12-10 16:24:18 +01:00
jlink 09f55d3aa7 BlobFighter TargetSelection ColliderShape2D Transform angepasst 2025-12-10 15:29:56 +01:00
kziolkowski 9499c27444 🚧 WIP: trying to rework the detection system (it fails) 2025-12-09 17:51:00 +01:00
jonathan a736adaafb Randomized who starts the fight 2025-12-09 15:07:50 +01:00
160 changed files with 10181 additions and 996 deletions
+3
View File
@@ -8,4 +8,7 @@
<Folder Include="prefabs\UI\Inventory\" /> <Folder Include="prefabs\UI\Inventory\" />
<Folder Include="scripts\CSharp\Low Code\Randomizer\" /> <Folder Include="scripts\CSharp\Low Code\Randomizer\" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
</ItemGroup>
</Project> </Project>
+2
View File
@@ -1,5 +1,7 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> <wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=236f7aa5_002D7b06_002D43ca_002Dbf2a_002D9b31bfcff09a/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Any" AccessRightKinds="Private" Description="Constant fields (private)"&gt;&lt;ElementKinds&gt;&lt;Kind Name="CONSTANT_FIELD" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" WarnAboutPrefixesAndSuffixes="False" Prefix="" Suffix="" Style="AA_BB" /&gt;&lt;/Policy&gt;</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=53eecf85_002Dd821_002D40e8_002Dac97_002Dfdb734542b84/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Instance" AccessRightKinds="Protected, ProtectedInternal, Internal, Public, PrivateProtected" Description="Instance fields (not private)"&gt;&lt;ElementKinds&gt;&lt;Kind Name="FIELD" /&gt;&lt;Kind Name="READONLY_FIELD" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" WarnAboutPrefixesAndSuffixes="False" Prefix="" Suffix="" Style="aaBb" /&gt;&lt;/Policy&gt;</s:String> <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=53eecf85_002Dd821_002D40e8_002Dac97_002Dfdb734542b84/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Instance" AccessRightKinds="Protected, ProtectedInternal, Internal, Public, PrivateProtected" Description="Instance fields (not private)"&gt;&lt;ElementKinds&gt;&lt;Kind Name="FIELD" /&gt;&lt;Kind Name="READONLY_FIELD" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" WarnAboutPrefixesAndSuffixes="False" Prefix="" Suffix="" Style="aaBb" /&gt;&lt;/Policy&gt;</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=669e5282_002Dfb4b_002D4e90_002D91e7_002D07d269d04b60/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Any" AccessRightKinds="Protected, ProtectedInternal, Internal, Public, PrivateProtected" Description="Constant fields (not private)"&gt;&lt;ElementKinds&gt;&lt;Kind Name="CONSTANT_FIELD" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" WarnAboutPrefixesAndSuffixes="False" Prefix="" Suffix="" Style="AA_BB" /&gt;&lt;/Policy&gt;</s:String>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=0B2502BD29F5EC4798EEFD2950AA7E06/Description/@EntryValue">Godot Signal</s:String> <s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=0B2502BD29F5EC4798EEFD2950AA7E06/Description/@EntryValue">Godot Signal</s:String>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=0B2502BD29F5EC4798EEFD2950AA7E06/Text/@EntryValue">[Signal] <s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=0B2502BD29F5EC4798EEFD2950AA7E06/Text/@EntryValue">[Signal]
public delegate void $SignalName$EventHandler($END$);</s:String> public delegate void $SignalName$EventHandler($END$);</s:String>
Binary file not shown.

After

Width:  |  Height:  |  Size: 652 KiB

+40
View File
@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dc1xim3mqlj1o"
path="res://.godot/imported/angry.png-e4eff51de743a11598498a3e284ae0a1.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/characters/Vesna/angry.png"
dest_files=["res://.godot/imported/angry.png-e4eff51de743a11598498a3e284ae0a1.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 650 KiB

+40
View File
@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bhd8ui4bdauoq"
path="res://.godot/imported/sad.png-07f44c713781510c0fa11821d4fa50bc.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/characters/Vesna/sad.png"
dest_files=["res://.godot/imported/sad.png-07f44c713781510c0fa11821d4fa50bc.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 649 KiB

+40
View File
@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://4xvgqwrwh3vw"
path="res://.godot/imported/smile.png-2ef625357927edd0d495bf554ac57e21.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/characters/Vesna/smile.png"
dest_files=["res://.godot/imported/smile.png-2ef625357927edd0d495bf554ac57e21.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 648 KiB

+40
View File
@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dcxkqut5edp2b"
path="res://.godot/imported/surprise.png-79afea119cbe923f9aa9e4554a23ed80.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/characters/Vesna/surprise.png"
dest_files=["res://.godot/imported/surprise.png-79afea119cbe923f9aa9e4554a23ed80.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 651 KiB

+40
View File
@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ing4qavovh4r"
path="res://.godot/imported/surprised.png-ab52144d1f41186a697c9a0e1584b3ee.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/characters/Vesna/surprised.png"
dest_files=["res://.godot/imported/surprised.png-ab52144d1f41186a697c9a0e1584b3ee.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 575 KiB

+40
View File
@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ciaabo8kcx2hw"
path="res://.godot/imported/fightworld_background.png-be6589f7fa4be8e56ee338eabec1ff36.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/fightworld_background.png"
dest_files=["res://.godot/imported/fightworld_background.png-be6589f7fa4be8e56ee338eabec1ff36.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dfp3tpx3fjges"
path="res://.godot/imported/domovoi_single.png-54325e2fb332bab49d527581994f50c7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/indoor/indoor outdoor/domovoi_single.png"
dest_files=["res://.godot/imported/domovoi_single.png-54325e2fb332bab49d527581994f50c7.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

+40
View File
@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://s1yoemhrupwe"
path="res://.godot/imported/vesna_indoor_bed.png-82be6dfddfce8701f4d35f6270cb0cdb.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/indoor/vesna_indoor_bed.png"
dest_files=["res://.godot/imported/vesna_indoor_bed.png-82be6dfddfce8701f4d35f6270cb0cdb.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

+40
View File
@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dnlhlf1mx01h5"
path="res://.godot/imported/vesna_indoor_door.png-480faae15ccfa0c6172c753cd0b4d6a0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/indoor/vesna_indoor_door.png"
dest_files=["res://.godot/imported/vesna_indoor_door.png-480faae15ccfa0c6172c753cd0b4d6a0.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
@@ -4,19 +4,22 @@ importer="scene"
importer_version=1 importer_version=1
type="PackedScene" type="PackedScene"
uid="uid://b3kyrsoobmkhp" uid="uid://b3kyrsoobmkhp"
valid=false path="res://.godot/imported/best_house_blender.blend-ac89c74aef2f275bdf4b4baadee17c0c.scn"
[deps] [deps]
source_file="res://art/mockups/3d/best_house_blender.blend" source_file="res://art/mockups/3d/best_house_blender.blend"
dest_files=["res://.godot/imported/best_house_blender.blend-ac89c74aef2f275bdf4b4baadee17c0c.scn"]
[params] [params]
nodes/root_type="" nodes/root_type=""
nodes/root_name="" nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true nodes/apply_root_scale=true
nodes/root_scale=1.0 nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true meshes/ensure_tangents=true
meshes/generate_lods=true meshes/generate_lods=true
@@ -31,6 +34,9 @@ animation/trimming=false
animation/remove_immutable_tracks=true animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false animation/import_rest_as_RESET=false
import_script/path="" import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={} _subresources={}
blender/nodes/visible=0 blender/nodes/visible=0
blender/nodes/active_collection_only=false blender/nodes/active_collection_only=false
@@ -50,3 +56,4 @@ blender/materials/export_materials=1
blender/animation/limit_playback=true blender/animation/limit_playback=true
blender/animation/always_sample=true blender/animation/always_sample=true
blender/animation/group_tracks=true blender/animation/group_tracks=true
gltf/naming_version=0
+12 -2
View File
@@ -19,12 +19,22 @@
}, },
"style": "NPC_narrative" "style": "NPC_narrative"
}, },
&"default_portrait": "", &"default_portrait": "default",
&"description": "Yeli's Domovoi", &"description": "Yeli's Domovoi",
&"display_name": "Domovoi", &"display_name": "Domovoi",
&"mirror": false, &"mirror": false,
&"nicknames": [""], &"nicknames": [""],
&"offset": Vector2(0, 0), &"offset": Vector2(0, 0),
&"portraits": {}, &"portraits": {
"default": {
"export_overrides": {
"image": "\"res://art/indoor/indoor outdoor/domovoi_single.png\""
},
"mirror": false,
"offset": Vector2(0, -300),
"scale": 1.0,
"scene": ""
}
},
&"scale": 1.0 &"scale": 1.0
} }
+20 -10
View File
@@ -1,19 +1,29 @@
{ {
"@path": "res://addons/dialogic/Resources/character.gd", "@path": "res://addons/dialogic/Resources/character.gd",
"@subpath": NodePath(""), "@subpath": NodePath(""),
"_translation_id": "16", &"_translation_id": "16",
"color": Color(1, 1, 1, 1), &"color": Color(1, 1, 1, 1),
"custom_info": { &"custom_info": {
"sound_mood_default": "", "sound_mood_default": "",
"sound_moods": {}, "sound_moods": {},
"style": "" "style": ""
}, },
"default_portrait": "", &"default_portrait": "side",
"description": "", &"description": "",
"display_name": "Semi Cat", &"display_name": "Black Cat",
&"mirror": false,
&"nicknames": [""],
&"offset": Vector2(0, 0),
&"portraits": {
"side": {
"export_overrides": {
"image": "\"res://art/animals/katze.png\""
},
"mirror": false, "mirror": false,
"nicknames": [""], "offset": Vector2(0, -300),
"offset": Vector2(0, 0), "scale": 1.5,
"portraits": {}, "scene": ""
"scale": 1.0 }
},
&"scale": 1.0
} }
+45
View File
@@ -26,6 +26,15 @@
&"nicknames": ["vesna"], &"nicknames": ["vesna"],
&"offset": Vector2(-300, 0), &"offset": Vector2(-300, 0),
&"portraits": { &"portraits": {
"angry": {
"export_overrides": {
"image": "\"res://art/characters/Vesna/angry.png\""
},
"mirror": false,
"offset": Vector2(150, 0),
"scale": 0.65,
"scene": ""
},
"front": { "front": {
"export_overrides": { "export_overrides": {
"image": "\"res://art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0001.png\"" "image": "\"res://art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0001.png\""
@@ -52,6 +61,42 @@
"offset": Vector2(0, 0), "offset": Vector2(0, 0),
"scale": 1.0, "scale": 1.0,
"scene": "" "scene": ""
},
"sad": {
"export_overrides": {
"image": "\"res://art/characters/Vesna/sad.png\""
},
"mirror": false,
"offset": Vector2(150, 0),
"scale": 0.65,
"scene": ""
},
"smile": {
"export_overrides": {
"image": "\"res://art/characters/Vesna/smile.png\""
},
"mirror": false,
"offset": Vector2(150, 0),
"scale": 0.65,
"scene": ""
},
"surprise": {
"export_overrides": {
"image": "\"res://art/characters/Vesna/surprise.png\""
},
"mirror": false,
"offset": Vector2(150, 0),
"scale": 0.65,
"scene": ""
},
"surprised": {
"export_overrides": {
"image": "\"res://art/characters/Vesna/surprised.png\""
},
"mirror": false,
"offset": Vector2(150, 0),
"scale": 0.65,
"scene": ""
} }
}, },
&"scale": 1.0 &"scale": 1.0
+5
View File
@@ -0,0 +1,5 @@
join vesna (half side) left
join semi_cat right
vesna: (pets)
semi_cat: mrau!
[end_timeline]
+1
View File
@@ -0,0 +1 @@
uid://clwlhu4lpmyqm
+1 -1
View File
@@ -2,7 +2,7 @@ join vesna left
vesna: Hello! vesna: Hello!
join Yeli (_side) right join Yeli (_side) right
Yeli (_frontal): Welcome to Babushka! Yeli (_frontal): Welcome to Babushka!
vesna (half side): We are Cozy Raven. This is our first showcase. vesna (half side): We are Cozy Raven. This is a preview showcase.
Yeli (_part_side): Many of the lofty, idealist, dreamy things that we wanted to implement are still in the backlog, waiting for their turn. Yeli (_part_side): Many of the lofty, idealist, dreamy things that we wanted to implement are still in the backlog, waiting for their turn.
vesna (front): But alas! The deadlines loomed, the bugs were strong with this one, and our days only have 24 hours. vesna (front): But alas! The deadlines loomed, the bugs were strong with this one, and our days only have 24 hours.
Yeli (_frontal): So please be kind when you test this demo. We poured our hearts and our love for the slavic folklore into this one and will continue to do so. Yeli (_frontal): So please be kind when you test this demo. We poured our hearts and our love for the slavic folklore into this one and will continue to do so.
+2 -2
View File
@@ -1,9 +1,9 @@
join Yeli right join Yeli right
join vesna left join vesna left
Yeli (_part_side): Wow! So many? Yeli (_part_side): Wow! So many?
Yeli (_part_side): Good job! Put it in the kettle! Yeli (_frontal): Good job! Put it in the kettle!
[wait_input] [wait_input]
Yeli (_part_side): Mmmh! This will be something. Yeli (_part_side): Mmmh! This will be something.
Yeli (_part_side): Thank you! I can take everything else from here. Yeli (_frontal): Thank you! I can take everything else from here.
Yeli (_part_side): See you for dinner! Yeli (_part_side): See you for dinner!
[end_timeline] [end_timeline]
+1 -1
View File
@@ -1,5 +1,5 @@
join Yeli right join Yeli right
join vesna left join vesna (surprise) left
[quest_complete quest_resource="res://resources/quests/demo/1_talk_yeli_1.tres"] [quest_complete quest_resource="res://resources/quests/demo/1_talk_yeli_1.tres"]
Yeli (_part_side): Come here, you little quacking beast! Yeli (_part_side): Come here, you little quacking beast!
- What a mess! - What a mess!
+1 -1
View File
@@ -1,4 +1,4 @@
join Chuga left join Chuga center
Chuga: I believe youve seen enough for today. Chuga: I believe youve seen enough for today.
Chuga: And yes, you too. Chuga: And yes, you too.
Chuga: Thank you for playing! Chuga: Thank you for playing!
+1 -1
View File
@@ -2,7 +2,7 @@
join vesna left join vesna left
join Chuga right join Chuga right
Chuga: Look who it is! Chuga: Look who it is!
vesna: Your name was Chuga, right? I want to go to the forest! vesna (half side): Your name was Chuga, right? I want to go to the forest!
Chuga: To the forest? After everything the others told you? Chuga: To the forest? After everything the others told you?
vesna: Will you let me through? vesna: Will you let me through?
Chuga: Will I? Chuga: Will I?
@@ -1,9 +1,9 @@
join Yeli center join Yeli left
join vesna center join vesna right
[quest_complete quest_resource="res://resources/quests/demo/5_talk_yeli_3.tres"] [quest_complete quest_resource="res://resources/quests/demo/5_talk_yeli_3.tres"]
Yeli (_part_side): Great! Now I need you to plant some tomatoes! Yeli (_part_side): Great! Now I need you to plant some tomatoes!
label plant tomatoes label plant tomatoes
Yeli (_part_side): Use the hoe to break up the soil. Then plant the seeds and water the fields. Yeli (_frontal): Use the hoe to break up the soil. Then plant the seeds and water the fields.
Yeli (_part_side): Got it? Yeli (_part_side): Got it?
- Of course! - Of course!
- Wait … How do I plant the tomatoes again? - Wait … How do I plant the tomatoes again?
@@ -2,11 +2,11 @@ join Yeli right
join vesna left join vesna left
[quest_complete quest_resource="res://resources/quests/demo/3_talk_yeli_2.tres"] [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. Yeli (_part_side): Thank you, my child! Your Yeli is not so agile anymore.
vesna: But youre diligent! Youve started with the preparation for dinner. vesna (half side): But youre diligent! Youve started with the preparation for dinner.
Yeli (_part_side): Indeed, I have. Yeli (_frontal): Indeed, I have.
Yeli (_part_side): But, oh my, those ducks messed up the tomatos. Yeli (_part_side): But, oh my, those ducks messed up the tomatos.
Yeli (_part_side): Oh, would you like to assist me? Yeli (_frontal): Oh, would you like to assist me?
vesna: What do I have to do? vesna (front): What do I have to do?
Yeli (_part_side): First, take the hoe and watering can over there! Then come back to me! Yeli (_part_side): First, take the hoe and watering can over there! Then come back to me!
[quest_activate quest_resource="res://resources/quests/demo/4_collect_tools.tres"] [quest_activate quest_resource="res://resources/quests/demo/4_collect_tools.tres"]
[end_timeline] [end_timeline]
+8
View File
@@ -0,0 +1,8 @@
join Domovoi right
join vesna (half side) left
vesna: Hello?
...
vesna: Is someone home?
(No answer.)
vesna: Hmpf!
[end_timeline]
+1
View File
@@ -0,0 +1 @@
uid://cc1hkf45dtrnj
+4 -2
View File
@@ -9,7 +9,7 @@ custom_features=""
export_filter="all_resources" export_filter="all_resources"
include_filter="" include_filter=""
exclude_filter="" exclude_filter=""
export_path="_builds/Babushka_win_0_5/Babushka.exe" export_path="_builds/Babushka_showcase_6a/Babushka.exe"
patches=PackedStringArray() patches=PackedStringArray()
encryption_include_filters="" encryption_include_filters=""
encryption_exclude_filters="" encryption_exclude_filters=""
@@ -26,6 +26,7 @@ debug/export_console_wrapper=1
binary_format/embed_pck=false binary_format/embed_pck=false
texture_format/s3tc_bptc=true texture_format/s3tc_bptc=true
texture_format/etc2_astc=false texture_format/etc2_astc=false
shader_baker/enabled=false
binary_format/architecture="x86_64" binary_format/architecture="x86_64"
codesign/enable=false codesign/enable=false
codesign/timestamp=true codesign/timestamp=true
@@ -79,7 +80,7 @@ custom_features=""
export_filter="all_resources" export_filter="all_resources"
include_filter="" include_filter=""
exclude_filter="" exclude_filter=""
export_path="_builds/Babushka_linux_0_5/Babushka.x86_64" export_path="_builds/Babushka_showcase_lux_06a/Babushka.x86_64"
patches=PackedStringArray() patches=PackedStringArray()
encryption_include_filters="" encryption_include_filters=""
encryption_exclude_filters="" encryption_exclude_filters=""
@@ -96,6 +97,7 @@ debug/export_console_wrapper=1
binary_format/embed_pck=false binary_format/embed_pck=false
texture_format/s3tc_bptc=true texture_format/s3tc_bptc=true
texture_format/etc2_astc=false texture_format/etc2_astc=false
shader_baker/enabled=false
binary_format/architecture="x86_64" binary_format/architecture="x86_64"
ssh_remote_deploy/enabled=false ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip" ssh_remote_deploy/host="user@host_ip"
+6 -3
View File
@@ -1,7 +1,8 @@
[gd_scene load_steps=17 format=3 uid="uid://sbf12hin4kes"] [gd_scene load_steps=18 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="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="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="2_gcgfd"]
[ext_resource type="Script" uid="uid://c2cgj153m05sp" path="res://scripts/CSharp/Common/Interactables/TrashObject.cs" id="2_u7jgg"]
[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://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://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"] [ext_resource type="AudioStream" uid="uid://br4drgupled6c" path="res://audio/sfx/Kitchen/SFX_Cooking_Pot_01.wav" id="5_dx175"]
@@ -29,13 +30,15 @@ stream_7/stream = ExtResource("10_aqih4")
stream_8/stream = ExtResource("11_kb03l") stream_8/stream = ExtResource("11_kb03l")
stream_9/stream = ExtResource("12_kka6u") stream_9/stream = ExtResource("12_kka6u")
[node name="trashObject" type="Sprite2D"] [node name="trashObject" type="Sprite2D" groups=["Saveable"]]
z_index = 1 z_index = 1
y_sort_enabled = true y_sort_enabled = true
texture = ExtResource("1_k4ca3") texture = ExtResource("1_k4ca3")
offset = Vector2(1, -215) offset = Vector2(1, -215)
region_enabled = true region_enabled = true
region_rect = Rect2(44, 479, 356, 503) region_rect = Rect2(44, 479, 356, 503)
script = ExtResource("2_u7jgg")
metadata/SaveID = ""
[node name="InteractionArea" parent="." node_paths=PackedStringArray("_spritesToOutline") instance=ExtResource("2_gcgfd")] [node name="InteractionArea" parent="." node_paths=PackedStringArray("_spritesToOutline") instance=ExtResource("2_gcgfd")]
position = Vector2(0, -172) position = Vector2(0, -172)
@@ -51,6 +54,6 @@ script = ExtResource("13_wswkg")
script = ExtResource("14_dx175") script = ExtResource("14_dx175")
_eventResources = Array[Object]([ExtResource("15_u7jgg")]) _eventResources = Array[Object]([ExtResource("15_u7jgg")])
[connection signal="Interacted" from="InteractionArea" to="." method="queue_free"] [connection signal="Interacted" from="InteractionArea" to="." method="Collect"]
[connection signal="Interacted" from="InteractionArea" to="AudioStreamPlayer2D" method="PlayOneShot"] [connection signal="Interacted" from="InteractionArea" to="AudioStreamPlayer2D" method="PlayOneShot"]
[connection signal="Interacted" from="InteractionArea" to="PickupAnimationEventRaiser" method="RaiseEvents"] [connection signal="Interacted" from="InteractionArea" to="PickupAnimationEventRaiser" method="RaiseEvents"]
+12
View File
@@ -0,0 +1,12 @@
[gd_scene load_steps=3 format=3 uid="uid://7pvvop5hfl01"]
[ext_resource type="Script" uid="uid://iquhbkr7pqeg" path="res://scripts/CSharp/Common/Savegame/SaveCheats.cs" id="1_vcrak"]
[ext_resource type="Script" uid="uid://ca4s0algeij1h" path="res://scripts/CSharp/Common/Savegame/SaveIDProviderTool.cs" id="2_q0tmy"]
[node name="SaveSystem" type="Node"]
[node name="SaveGameCheat" type="Node" parent="."]
script = ExtResource("1_vcrak")
[node name="SaveIDProvider" type="Node" parent="."]
script = ExtResource("2_q0tmy")
+29 -7
View File
@@ -1,4 +1,4 @@
[gd_scene load_steps=489 format=3 uid="uid://c25udixd5m6l0"] [gd_scene load_steps=495 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://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="Script" uid="uid://cjbclkxesh3hc" path="res://scripts/CSharp/Common/CharacterControls/PlayerMovement.cs" id="2_1vqmv"]
@@ -286,6 +286,7 @@
[ext_resource type="Script" uid="uid://dj1qjambsa4pg" path="res://scripts/CSharp/Common/Farming/WateringCanSaveHelper.cs" id="472_kduih"] [ext_resource type="Script" uid="uid://dj1qjambsa4pg" path="res://scripts/CSharp/Common/Farming/WateringCanSaveHelper.cs" id="472_kduih"]
[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="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="AudioStream" uid="uid://dymoalptxmge" path="res://audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_04_R.wav" id="473_8hbu5"]
[ext_resource type="Script" uid="uid://ccdhx1lt4n271" path="res://scripts/CSharp/Common/Camera/CameraTarget.cs" id="473_fn3kd"]
[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="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="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://dpqvnogggvgea" path="res://audio/sfx/Footsteps/Single/Gravel/Reverb/SFX_Footstep_Gravel_06_R.wav" id="475_83c4i"]
@@ -299,8 +300,12 @@
[ext_resource type="Texture2D" uid="uid://bopxv06co1osl" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0006.png" id="482_wfdif"] [ext_resource type="Texture2D" uid="uid://bopxv06co1osl" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0006.png" id="482_wfdif"]
[ext_resource type="Script" uid="uid://iquhbkr7pqeg" path="res://scripts/CSharp/Common/Savegame/SaveCheats.cs" id="483_kduih"] [ext_resource type="Script" uid="uid://iquhbkr7pqeg" path="res://scripts/CSharp/Common/Savegame/SaveCheats.cs" id="483_kduih"]
[ext_resource type="Texture2D" uid="uid://coyggdfwgkeru" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0008.png" id="484_32thn"] [ext_resource type="Texture2D" uid="uid://coyggdfwgkeru" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0008.png" id="484_32thn"]
[ext_resource type="AudioStream" uid="uid://fsiypqhql67w" path="res://audio/sfx/Farming/SFX_GettingWater_01.wav" id="484_jb7tm"]
[ext_resource type="Script" uid="uid://ca4s0algeij1h" path="res://scripts/CSharp/Common/Savegame/SaveIDProviderTool.cs" id="484_upuan"] [ext_resource type="Script" uid="uid://ca4s0algeij1h" path="res://scripts/CSharp/Common/Savegame/SaveIDProviderTool.cs" id="484_upuan"]
[ext_resource type="AudioStream" uid="uid://foyw26hq1qp5" path="res://audio/sfx/Farming/SFX_GettingWater_02.wav" id="485_fn3kd"]
[ext_resource type="Texture2D" uid="uid://du6x1h42smp6m" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0010.png" id="486_kobao"] [ext_resource type="Texture2D" uid="uid://du6x1h42smp6m" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0010.png" id="486_kobao"]
[ext_resource type="AudioStream" uid="uid://c43a6x43jkikl" path="res://audio/sfx/Farming/SFX_GettingWater_Well_01_Reverb.wav" id="486_ux0r8"]
[ext_resource type="Script" uid="uid://cfnrd5k1k0gxw" path="res://scripts/CSharp/Common/AudioPlayer2D.cs" id="487_7qtxa"]
[ext_resource type="Texture2D" uid="uid://bras5gn8ov27l" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0012.png" id="488_ygjj5"] [ext_resource type="Texture2D" uid="uid://bras5gn8ov27l" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0012.png" id="488_ygjj5"]
[ext_resource type="Texture2D" uid="uid://rjmsht4g8dvp" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0014.png" id="490_6603x"] [ext_resource type="Texture2D" uid="uid://rjmsht4g8dvp" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0014.png" id="490_6603x"]
[ext_resource type="Texture2D" uid="uid://diqnv8ut7lffx" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0016.png" id="492_0tmn6"] [ext_resource type="Texture2D" uid="uid://diqnv8ut7lffx" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0016.png" id="492_0tmn6"]
@@ -484,7 +489,7 @@
[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://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://cao7vqax8cblo" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0020.png" id="814_3uq4g"]
[ext_resource type="Script" uid="uid://bcskt5ckh3rqa" path="res://scripts/CSharp/Common/Farming/FarmingControls2D.cs" id="817_6nrw3"] [ext_resource type="Script" uid="uid://bcskt5ckh3rqa" path="res://scripts/CSharp/Common/Farming/FarmingControls2D.cs" id="817_6nrw3"]
[ext_resource type="Script" uid="uid://cvkw4qd2hxksi" path="res://scripts/GdScript/dialogic_toggle.gd" id="819_4na52"] [ext_resource type="Script" path="res://scripts/GdScript/dialogic_toggle.gd" id="819_4na52"]
[sub_resource type="CircleShape2D" id="CircleShape2D_ssqtd"] [sub_resource type="CircleShape2D" id="CircleShape2D_ssqtd"]
radius = 110.018 radius = 110.018
@@ -2087,11 +2092,17 @@ stream_4/stream = ExtResource("474_t1d6r")
stream_5/stream = ExtResource("475_83c4i") stream_5/stream = ExtResource("475_83c4i")
stream_6/stream = ExtResource("476_deeju") stream_6/stream = ExtResource("476_deeju")
[node name="Vesna" type="Node2D" node_paths=PackedStringArray("_farmingControls", "_player2d", "_vesnaAnimations")] [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_4da77"]
streams_count = 3
stream_0/stream = ExtResource("484_jb7tm")
stream_1/stream = ExtResource("485_fn3kd")
stream_2/stream = ExtResource("486_ux0r8")
[node name="Vesna" type="Node2D" node_paths=PackedStringArray("_farmingControls", "player2d", "_vesnaAnimations")]
y_sort_enabled = true y_sort_enabled = true
script = ExtResource("1_yd5ep") script = ExtResource("1_yd5ep")
_farmingControls = NodePath("FarmingControls") _farmingControls = NodePath("FarmingControls")
_player2d = NodePath("CharacterBody2D") player2d = NodePath("CharacterBody2D")
_vesnaAnimations = NodePath("CharacterBody2D/visuals") _vesnaAnimations = NodePath("CharacterBody2D/visuals")
_hoe = ExtResource("2_dnm27") _hoe = ExtResource("2_dnm27")
_wateringCan = ExtResource("3_e04c3") _wateringCan = ExtResource("3_e04c3")
@@ -2123,9 +2134,6 @@ frame = 7
frame_progress = 0.229832 frame_progress = 0.229832
offset = Vector2(0, -450) offset = Vector2(0, -450)
[node name="DetectionCross" parent="CharacterBody2D" instance=ExtResource("466_e04c3")]
position = Vector2(0, -200)
[node name="PlantCreatedEventListener" type="Node" parent="CharacterBody2D"] [node name="PlantCreatedEventListener" type="Node" parent="CharacterBody2D"]
script = ExtResource("467_8hbu5") script = ExtResource("467_8hbu5")
_eventResources = Array[Object]([ExtResource("468_t1d6r")]) _eventResources = Array[Object]([ExtResource("468_t1d6r")])
@@ -2175,6 +2183,13 @@ scrollable = false
script = ExtResource("472_kduih") script = ExtResource("472_kduih")
_wateringCanFillStateNode = NodePath("../WateringCanFillState") _wateringCanFillStateNode = NodePath("../WateringCanFillState")
[node name="DetectionCross" parent="CharacterBody2D" instance=ExtResource("466_e04c3")]
position = Vector2(0, -260)
[node name="CameraTarget" type="Node2D" parent="CharacterBody2D"]
script = ExtResource("473_fn3kd")
Priority = 10.0
[node name="FarmingControls" type="Node2D" parent="." node_paths=PackedStringArray("_movingPlayer")] [node name="FarmingControls" type="Node2D" parent="." node_paths=PackedStringArray("_movingPlayer")]
script = ExtResource("817_6nrw3") script = ExtResource("817_6nrw3")
_sceneKeyProvider = ExtResource("471_83c4i") _sceneKeyProvider = ExtResource("471_83c4i")
@@ -2197,6 +2212,12 @@ script = ExtResource("471_2f15g")
[node name="Timer" type="Timer" parent="SFX/FootstepsAudio"] [node name="Timer" type="Timer" parent="SFX/FootstepsAudio"]
wait_time = 0.5 wait_time = 0.5
[node name="FillWater SFX2" type="AudioStreamPlayer2D" parent="SFX"]
stream = SubResource("AudioStreamRandomizer_4da77")
max_distance = 20000000.0
playback_type = 2
script = ExtResource("487_7qtxa")
[node name="SaveSystem" type="Node" parent="."] [node name="SaveSystem" type="Node" parent="."]
[node name="SaveGameCheat" type="Node" parent="SaveSystem"] [node name="SaveGameCheat" type="Node" parent="SaveSystem"]
@@ -2206,6 +2227,7 @@ script = ExtResource("483_kduih")
script = ExtResource("484_upuan") script = ExtResource("484_upuan")
[connection signal="FilledWateringCan" from="." to="CharacterBody2D/WateringCan/WateringCanUI" method="Refill"] [connection signal="FilledWateringCan" from="." to="CharacterBody2D/WateringCan/WateringCanUI" method="Refill"]
[connection signal="FilledWateringCan" from="." to="SFX/FillWater SFX2" method="PlayOneShot"]
[connection signal="InventorySelectionChanged" from="." to="CharacterBody2D/WateringCan/WateringCanUI" method="IsWateringCanActive"] [connection signal="InventorySelectionChanged" from="." to="CharacterBody2D/WateringCan/WateringCanUI" method="IsWateringCanActive"]
[connection signal="PickedUpTool" from="." to="CharacterBody2D/visuals" method="ActivateTool"] [connection signal="PickedUpTool" from="." to="CharacterBody2D/visuals" method="ActivateTool"]
[connection signal="PickedUpTool" from="." to="CharacterBody2D/WateringCan/WateringCanUI" method="IsWateringCanActive"] [connection signal="PickedUpTool" from="." to="CharacterBody2D/WateringCan/WateringCanUI" method="IsWateringCanActive"]
+2 -2
View File
@@ -247,9 +247,9 @@ script = ExtResource("50_a7v1a")
[connection signal="Talking" from="." to="Dialogic starter" method="open"] [connection signal="Talking" from="." to="Dialogic starter" method="open"]
[connection signal="Interacted" from="InteractionArea" to="." method="StartTalking"] [connection signal="Interacted" from="InteractionArea" to="." method="StartTalking"]
[connection signal="Interacted" from="InteractionArea" to="InteractionArea" method="ToggleActive"]
[connection signal="timelineEnded" from="Dialogic starter" to="." method="StopTalking"] [connection signal="timelineEnded" from="Dialogic starter" to="." method="StopTalking"]
[connection signal="timelineEnded" from="Dialogic starter" to="InteractionArea" method="ToggleActive"] [connection signal="timelineEnded" from="Dialogic starter" to="InteractionArea" method="SetActiveTrue"]
[connection signal="timelineStarted" from="Dialogic starter" to="InteractionArea" method="SetActiveFalse"]
[connection signal="timelineEnded" from="DialogicToggle" to="." method="ToggleTalking"] [connection signal="timelineEnded" from="DialogicToggle" to="." method="ToggleTalking"]
[connection signal="timelineStarted" from="DialogicToggle" to="SFX/AudioStreamPlayer" method="PlayOneShot"] [connection signal="timelineStarted" from="DialogicToggle" to="SFX/AudioStreamPlayer" method="PlayOneShot"]
+17
View File
@@ -0,0 +1,17 @@
[gd_scene load_steps=4 format=3 uid="uid://cv7trh2b3dyiv"]
[ext_resource type="Script" uid="uid://dcn4giw1auva4" path="res://scripts/CSharp/GameEntity/EntityPlacer/VesnaEntityPlacer.cs" id="1_nq5fu"]
[ext_resource type="Script" uid="uid://n7oihifvqp23" path="res://scripts/CSharp/Common/Animation/VesnaAnimations.cs" id="2_cpdud"]
[ext_resource type="Texture2D" uid="uid://cloe0etis2lcu" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0001.png" id="451_d8nvl"]
[node name="VesnaPlacer" type="Node2D"]
script = ExtResource("1_nq5fu")
[node name="visuals" type="Node2D" parent="." node_paths=PackedStringArray("_sprite")]
position = Vector2(0, -374)
script = ExtResource("2_cpdud")
_sprite = NodePath("")
[node name="0001" type="Sprite2D" parent="visuals"]
position = Vector2(1, 0)
texture = ExtResource("451_d8nvl")
+17
View File
@@ -0,0 +1,17 @@
[gd_scene load_steps=5 format=3 uid="uid://hdfejdnmp8sl"]
[ext_resource type="Script" uid="uid://umop2b1m1qm8" path="res://scripts/CSharp/GameEntity/Management/EntityManager.cs" id="1_2bwns"]
[ext_resource type="Script" uid="uid://bogqp274y1pgr" path="res://scripts/CSharp/GameEntity/Management/EntityNodeCreator.cs" id="2_8m173"]
[ext_resource type="PackedScene" uid="uid://sbf12hin4kes" path="res://prefabs/Interactables/trash_object.tscn" id="3_v3vdc"]
[ext_resource type="PackedScene" uid="uid://c25udixd5m6l0" path="res://prefabs/characters/Vesna.tscn" id="4_8m173"]
[node name="EntityManager" type="Node" node_paths=PackedStringArray("_nodeCreator")]
script = ExtResource("1_2bwns")
_nodeCreator = NodePath("EntityCreator")
[node name="EntityCreator" type="Node" parent="."]
script = ExtResource("2_8m173")
_entityPrefabs = Dictionary[String, PackedScene]({
"TrashEntity": ExtResource("3_v3vdc"),
"VesnaEntity": ExtResource("4_8m173")
})
+1 -3
View File
@@ -1,8 +1,7 @@
[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="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="Texture2D" uid="uid://hvchk6t0xe7j" path="res://art/animals/Ente.png" id="1_cgxhx"]
[ext_resource type="Resource" uid="uid://tt3d166mntmi" path="res://resources/low code/farming/var_sceneNameProvider.tres" id="2_fdf3t"]
[ext_resource type="AudioStream" uid="uid://qv0aubjeyi0u" path="res://audio/sfx/Animals/SFX_Duck_Quack_01.wav" id="3_kjie1"] [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/AudioPlayer2D.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://da84l8e44scwh" path="res://audio/sfx/Animals/SFX_Duck_Quack_02.wav" id="4_54k4r"]
@@ -143,7 +142,6 @@ viewport_path = NodePath("SubViewport")
z_index = 1 z_index = 1
y_sort_enabled = true y_sort_enabled = true
script = ExtResource("1_54k4r") script = ExtResource("1_54k4r")
_sceneKeyProvider = ExtResource("2_fdf3t")
_transferDelayMs = 1000 _transferDelayMs = 1000
_animationPlayer = NodePath("AnimationPlayer") _animationPlayer = NodePath("AnimationPlayer")
+9 -5
View File
@@ -1,4 +1,4 @@
[gd_scene load_steps=25 format=3 uid="uid://b1d2e7ely6hyw"] [gd_scene load_steps=26 format=3 uid="uid://b1d2e7ely6hyw"]
[ext_resource type="Script" uid="uid://j2mhvb45egej" path="res://scripts/CSharp/Low Code/Variables/VariableNode.cs" id="1_4mg73"] [ext_resource type="Script" uid="uid://j2mhvb45egej" path="res://scripts/CSharp/Low Code/Variables/VariableNode.cs" id="1_4mg73"]
[ext_resource type="Script" uid="uid://bdffon388rkty" path="res://scripts/CSharp/Common/Farming/FieldBehaviour2D.cs" id="1_qa01x"] [ext_resource type="Script" uid="uid://bdffon388rkty" path="res://scripts/CSharp/Common/Farming/FieldBehaviour2D.cs" id="1_qa01x"]
@@ -23,6 +23,7 @@
[ext_resource type="Texture2D" uid="uid://l5ym7gi82l1b" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-6.png" id="21_4mg73"] [ext_resource type="Texture2D" uid="uid://l5ym7gi82l1b" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-6.png" id="21_4mg73"]
[ext_resource type="Resource" uid="uid://dlcmqfjvgphqu" path="res://resources/items/rake.tres" id="21_68xcd"] [ext_resource type="Resource" uid="uid://dlcmqfjvgphqu" path="res://resources/items/rake.tres" id="21_68xcd"]
[ext_resource type="Script" uid="uid://dlbjjgbs0n4b0" path="res://scripts/CSharp/Common/Farming/FieldActivator.cs" id="22_57jmp"] [ext_resource type="Script" uid="uid://dlbjjgbs0n4b0" path="res://scripts/CSharp/Common/Farming/FieldActivator.cs" id="22_57jmp"]
[ext_resource type="PackedScene" uid="uid://7pvvop5hfl01" path="res://prefabs/SaveSystem/save_system.tscn" id="24_avqr3"]
[sub_resource type="CircleShape2D" id="CircleShape2D_57jmp"] [sub_resource type="CircleShape2D" id="CircleShape2D_57jmp"]
resource_local_to_scene = true resource_local_to_scene = true
@@ -38,7 +39,7 @@ z_index = 1
scale = Vector2(1.3499999, 1.5) scale = Vector2(1.3499999, 1.5)
texture = ExtResource("9_wx561") texture = ExtResource("9_wx561")
[node name="FieldBehaviour" type="Sprite2D" parent="." node_paths=PackedStringArray("_fieldIndex", "_saveIdHolder", "_fieldSprite", "_maskSprite", "_outlineSprite", "PlantingInteraction", "FieldInteractionArea", "PlantingPlaceholder", "_wateringParticles")] [node name="FieldBehaviour" type="Sprite2D" parent="." node_paths=PackedStringArray("_fieldIndex", "_saveIdHolder", "_fieldSprite", "_maskSprite", "_outlineSprite", "PlantingInteraction", "PlantingPlaceholder", "_wateringParticles")]
visible = false visible = false
z_index = -1 z_index = -1
y_sort_enabled = true y_sort_enabled = true
@@ -56,7 +57,6 @@ _maskTexture = Array[Texture2D]([ExtResource("2_w8caw"), ExtResource("3_c014y"),
Tilled = ExtResource("5_wx561") Tilled = ExtResource("5_wx561")
Watered = ExtResource("6_7m4xq") Watered = ExtResource("6_7m4xq")
PlantingInteraction = NodePath("InteractionArea") PlantingInteraction = NodePath("InteractionArea")
FieldInteractionArea = NodePath("InteractionArea")
PlantingPlaceholder = NodePath("PlantPlaceholder") PlantingPlaceholder = NodePath("PlantPlaceholder")
ItemRepository = ExtResource("7_w8caw") ItemRepository = ExtResource("7_w8caw")
_wateringParticles = NodePath("../pouring water vfx") _wateringParticles = NodePath("../pouring water vfx")
@@ -74,11 +74,11 @@ texture = ExtResource("5_wx561")
y_sort_enabled = true y_sort_enabled = true
[node name="InteractionArea" parent="FieldBehaviour" node_paths=PackedStringArray("_spritesToOutline") instance=ExtResource("7_2eegd")] [node name="InteractionArea" parent="FieldBehaviour" node_paths=PackedStringArray("_spritesToOutline") instance=ExtResource("7_2eegd")]
process_mode = 4
position = Vector2(-28.88889, -57) position = Vector2(-28.88889, -57)
scale = Vector2(1.1111112, 1) scale = Vector2(1.1111112, 1)
_active = false _active = false
_spritesToOutline = [NodePath("../../OutlineSprite")] _spritesToOutline = [NodePath("../../OutlineSprite")]
_showLabel = false
[node name="PlantCreationEventRaiser" type="Node" parent="."] [node name="PlantCreationEventRaiser" type="Node" parent="."]
script = ExtResource("9_teirr") script = ExtResource("9_teirr")
@@ -115,10 +115,11 @@ scale_amount_max = 0.8
color = Color(0.400601, 0.62444, 0.791217, 1) color = Color(0.400601, 0.62444, 0.791217, 1)
hue_variation_max = 0.4 hue_variation_max = 0.4
[node name="FieldActivator" type="Node2D" parent="." node_paths=PackedStringArray("_field", "_activatorArea")] [node name="FieldActivator" type="Node2D" parent="." node_paths=PackedStringArray("_field", "_activatorArea", "_saveIdHolder")]
script = ExtResource("22_57jmp") script = ExtResource("22_57jmp")
_field = NodePath("../FieldBehaviour") _field = NodePath("../FieldBehaviour")
_activatorArea = NodePath("InteractionArea") _activatorArea = NodePath("InteractionArea")
_saveIdHolder = NodePath("..")
[node name="InteractionArea" parent="FieldActivator" node_paths=PackedStringArray("_spritesToOutline") instance=ExtResource("7_2eegd")] [node name="InteractionArea" parent="FieldActivator" node_paths=PackedStringArray("_spritesToOutline") instance=ExtResource("7_2eegd")]
_spritesToOutline = [NodePath("../../OutlineSprite")] _spritesToOutline = [NodePath("../../OutlineSprite")]
@@ -129,6 +130,8 @@ shape = SubResource("CircleShape2D_57jmp")
[node name="Marker2D" type="Marker2D" parent="."] [node name="Marker2D" type="Marker2D" parent="."]
gizmo_extents = 157.0 gizmo_extents = 157.0
[node name="SaveSystem" parent="." instance=ExtResource("24_avqr3")]
[connection signal="Planted" from="FieldBehaviour" to="PlantCreationEventRaiser" method="RaiseEvents"] [connection signal="Planted" from="FieldBehaviour" to="PlantCreationEventRaiser" method="RaiseEvents"]
[connection signal="Interacted" from="FieldBehaviour/InteractionArea" to="FieldBehaviour" method="Farm"] [connection signal="Interacted" from="FieldBehaviour/InteractionArea" to="FieldBehaviour" method="Farm"]
[connection signal="ItemInstanceActivated" from="InventoryListener Seeds" to="FieldBehaviour" method="ActivatedSeedInInventory"] [connection signal="ItemInstanceActivated" from="InventoryListener Seeds" to="FieldBehaviour" method="ActivatedSeedInInventory"]
@@ -138,3 +141,4 @@ gizmo_extents = 157.0
[connection signal="Interacted" from="FieldActivator/InteractionArea" to="FieldActivator/InteractionArea" method="ToggleActive"] [connection signal="Interacted" from="FieldActivator/InteractionArea" to="FieldActivator/InteractionArea" method="ToggleActive"]
[editable path="FieldActivator/InteractionArea"] [editable path="FieldActivator/InteractionArea"]
[editable path="SaveSystem"]
+1
View File
@@ -136,6 +136,7 @@ _useOutline = false
shape = SubResource("CircleShape2D_vjw4j") shape = SubResource("CircleShape2D_vjw4j")
[node name="ReadyPlantInventoryItem" parent="." instance=ExtResource("6_gdrin")] [node name="ReadyPlantInventoryItem" parent="." instance=ExtResource("6_gdrin")]
process_mode = 4
position = Vector2(0, 2.3) position = Vector2(0, 2.3)
IsActive = false IsActive = false
_saveToDisk = false _saveToDisk = false
+22 -2
View File
@@ -1,10 +1,30 @@
[gd_scene load_steps=2 format=3 uid="uid://l1hdihubffeg"] [gd_scene load_steps=3 format=3 uid="uid://l1hdihubffeg"]
[ext_resource type="Script" uid="uid://b5i41b6502xam" path="res://scripts/CSharp/Common/Fight/FighterDamageIndicatorFlyingNumber.cs" id="1_m0ub6"] [ext_resource type="Script" uid="uid://b5i41b6502xam" path="res://scripts/CSharp/Common/Fight/FighterDamageIndicatorFlyingNumber.cs" id="1_m0ub6"]
[ext_resource type="Texture2D" uid="uid://do0y56t1moi2" path="res://art/mockups/erdbeeren.png" id="2_ctnqp"]
[node name="DamageFlyingNuber" type="Node2D" node_paths=PackedStringArray("_label")] [node name="DamageFlyingNuber" type="Node2D" node_paths=PackedStringArray("_label", "_sprite")]
script = ExtResource("1_m0ub6") script = ExtResource("1_m0ub6")
_label = NodePath("Label") _label = NodePath("Label")
_sprite = NodePath("TextureRect")
[node name="TextureRect" type="TextureRect" parent="."]
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -61.0
offset_top = -61.0
offset_right = 61.0
offset_bottom = 61.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 4
size_flags_vertical = 4
texture = ExtResource("2_ctnqp")
expand_mode = 1
stretch_mode = 5
[node name="Label" type="Label" parent="."] [node name="Label" type="Label" parent="."]
custom_minimum_size = Vector2(200, 100) custom_minimum_size = Vector2(200, 100)
+3 -3
View File
@@ -4,6 +4,6 @@
[node name="FightSceneSwitcher" type="Node"] [node name="FightSceneSwitcher" type="Node"]
script = ExtResource("1_5dt1r") script = ExtResource("1_5dt1r")
_fightRoomScenePath = "res://scenes/Babushka_scene_fight_world_room.tscn" _fightRoomScenePath = "res://scenes/scene_fight_world_room.tscn"
_fightHappeningScene = "res://scenes/Babushka_scene_fight_happening.tscn" _fightHappeningScene = "res://scenes/scene_fight_happening.tscn"
_nightEndScene = "res://scenes/Babushka_scene_indoor_vesnas_room.tscn" _nightEndScene = "res://scenes/scene_credits.tscn"
+5 -1
View File
@@ -1,6 +1,10 @@
[gd_scene load_steps=2 format=3 uid="uid://n5cj71bxxjkk"] [gd_scene load_steps=4 format=3 uid="uid://n5cj71bxxjkk"]
[ext_resource type="Script" uid="uid://dqe1i2qmpttwf" path="res://scripts/CSharp/Common/Fight/FightWorld.cs" id="1_tnyce"] [ext_resource type="Script" uid="uid://dqe1i2qmpttwf" path="res://scripts/CSharp/Common/Fight/FightWorld.cs" id="1_tnyce"]
[ext_resource type="Resource" uid="uid://duq7tshxv6uhp" path="res://resources/items/beet_seed.tres" id="2_lxs0o"]
[ext_resource type="Resource" uid="uid://0mnsr4anoaiq" path="res://resources/items/beet.tres" id="3_008v8"]
[node name="FightWorldAutoload" type="Node2D"] [node name="FightWorldAutoload" type="Node2D"]
script = ExtResource("1_tnyce") script = ExtResource("1_tnyce")
_itemToDropByEnemyGroup = ExtResource("2_lxs0o")
itemBeetrootToEatForHealth = ExtResource("3_008v8")
@@ -14,5 +14,9 @@ position = Vector2(23, -96)
scale = Vector2(0.547474, 0.547474) scale = Vector2(0.547474, 0.547474)
texture = SubResource("AtlasTexture_ane0o") texture = SubResource("AtlasTexture_ane0o")
[node name="CollisionShape2D" parent="TargetSelection/Click" index="0"]
position = Vector2(25.215, -195)
scale = Vector2(0.72370636, 1)
[node name="Sprite2D" parent="TargetSelection/HoverIndicator" index="0"] [node name="Sprite2D" parent="TargetSelection/HoverIndicator" index="0"]
position = Vector2(1, -126) position = Vector2(0.84, -126)
+16 -7
View File
@@ -1,12 +1,21 @@
[gd_scene load_steps=3 format=3 uid="uid://pflu0uaig7vv"] [gd_scene load_steps=4 format=3 uid="uid://pflu0uaig7vv"]
[ext_resource type="Script" uid="uid://ccc6m6c5khd2x" path="res://scripts/CSharp/Common/CharacterControls/DetectionCross.cs" id="1_va8tx"] [ext_resource type="Script" uid="uid://ccc6m6c5khd2x" path="res://scripts/CSharp/Common/CharacterControls/DetectionCross.cs" id="1_va8tx"]
[ext_resource type="PackedScene" uid="uid://dugr6ff1g7hi0" path="res://prefabs/interactions/detector.tscn" id="2_8hh05"] [ext_resource type="PackedScene" uid="uid://dugr6ff1g7hi0" path="res://prefabs/interactions/detector.tscn" id="2_8hh05"]
[node name="DetectionCross" type="Node2D" node_paths=PackedStringArray("_detector")] [sub_resource type="RectangleShape2D" id="RectangleShape2D_va8tx"]
script = ExtResource("1_va8tx")
_detector = NodePath("detector")
_xOffset = 400.0
_yOffset = 300.0
[node name="detector" parent="." instance=ExtResource("2_8hh05")] [node name="DetectionCross" type="Node2D" node_paths=PackedStringArray("_collider", "_shapeCast2D")]
script = ExtResource("1_va8tx")
_collider = NodePath("detector")
_shapeCast2D = NodePath("ShapeCast2D")
_xOffset = 200.0
_yOffset = 200.0
[node name="detector" parent="." node_paths=PackedStringArray("_shapeCast2D") instance=ExtResource("2_8hh05")]
_shapeCast2D = NodePath("../ShapeCast2D")
[node name="ShapeCast2D" type="ShapeCast2D" parent="."]
shape = SubResource("RectangleShape2D_va8tx")
target_position = Vector2(200, 0)
collide_with_areas = true
+6 -4
View File
@@ -1,14 +1,16 @@
[gd_scene load_steps=3 format=3 uid="uid://dugr6ff1g7hi0"] [gd_scene load_steps=4 format=3 uid="uid://dugr6ff1g7hi0"]
[ext_resource type="Script" uid="uid://c3pd60biootsx" path="res://scripts/CSharp/Common/CharacterControls/Detector.cs" id="1_6pib0"] [ext_resource type="Script" uid="uid://c3pd60biootsx" path="res://scripts/CSharp/Common/CharacterControls/Detector.cs" id="1_6pib0"]
[ext_resource type="Resource" uid="uid://clwqh3w5aqi5e" path="res://resources/low code/interactables/var_interactableToTrigger.tres" id="2_3fanv"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_qwv4c"] [sub_resource type="CircleShape2D" id="CircleShape2D_6pib0"]
size = Vector2(100, 400) radius = 300.0
[node name="detector" type="Area2D"] [node name="detector" type="Area2D"]
collision_layer = 4 collision_layer = 4
script = ExtResource("1_6pib0") script = ExtResource("1_6pib0")
_itemToTriggerResource = ExtResource("2_3fanv")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("RectangleShape2D_qwv4c") shape = SubResource("CircleShape2D_6pib0")
debug_color = Color(0.9459047, 7.2196126e-06, 0.5925879, 0.41960785) debug_color = Color(0.9459047, 7.2196126e-06, 0.5925879, 0.41960785)
+12 -5
View File
@@ -1,8 +1,10 @@
[gd_scene load_steps=6 format=3 uid="uid://cqc72e4hq6bcd"] [gd_scene load_steps=8 format=3 uid="uid://cqc72e4hq6bcd"]
[ext_resource type="Script" uid="uid://ckp413wrub5fm" path="res://scripts/CSharp/Common/CharacterControls/InteractionArea2D.cs" id="1_5ajrf"] [ext_resource type="Script" uid="uid://ckp413wrub5fm" path="res://scripts/CSharp/Common/CharacterControls/InteractionArea2D.cs" id="1_5ajrf"]
[ext_resource type="Resource" uid="uid://clwqh3w5aqi5e" path="res://resources/low code/interactables/var_interactableToTrigger.tres" id="2_o1drf"]
[ext_resource type="Material" uid="uid://blch5kdhkbj75" path="res://art/materials/simple_interactable_outline.tres" id="2_qoey7"] [ext_resource type="Material" uid="uid://blch5kdhkbj75" path="res://art/materials/simple_interactable_outline.tres" id="2_qoey7"]
[ext_resource type="Script" uid="uid://cp2q4k62sjo6h" path="res://scripts/CSharp/Common/CharacterControls/DetectableInteractionArea.cs" id="3_2wrrq"] [ext_resource type="Script" uid="uid://cp2q4k62sjo6h" path="res://scripts/CSharp/Common/CharacterControls/DetectableInteractionArea.cs" id="3_2wrrq"]
[ext_resource type="Script" uid="uid://pqemey80frcq" path="res://scripts/CSharp/Low Code/Variables/VariableListener.cs" id="4_gj2nu"]
[sub_resource type="CircleShape2D" id="CircleShape2D_npluf"] [sub_resource type="CircleShape2D" id="CircleShape2D_npluf"]
resource_local_to_scene = true resource_local_to_scene = true
@@ -11,15 +13,17 @@ radius = 150.0
[sub_resource type="Theme" id="Theme_5ajrf"] [sub_resource type="Theme" id="Theme_5ajrf"]
default_font_size = 30 default_font_size = 30
[node name="InteractionArea" type="Node2D" node_paths=PackedStringArray("_area", "_label")] [node name="InteractionArea" type="Node2D" node_paths=PackedStringArray("_selectionChangeListener", "_area", "_label")]
script = ExtResource("1_5ajrf") script = ExtResource("1_5ajrf")
_selectionChangeListener = NodePath("SelectionListener")
_area = NodePath("Area2D") _area = NodePath("Area2D")
_label = NodePath("Area2D/CanvasLayer/MarginContainer/Label") _label = NodePath("Area2D/CanvasLayer/MarginContainer/Label")
_outlineMaterial = ExtResource("2_qoey7") _outlineMaterial = ExtResource("2_qoey7")
[node name="Area2D" type="Area2D" parent="."] [node name="Area2D" type="Area2D" parent="." node_paths=PackedStringArray("interactionArea2D")]
collision_mask = 4 collision_mask = 4
script = ExtResource("3_2wrrq") script = ExtResource("3_2wrrq")
interactionArea2D = NodePath("..")
[node name="CollisionShape3D" type="CollisionShape2D" parent="Area2D"] [node name="CollisionShape3D" type="CollisionShape2D" parent="Area2D"]
shape = SubResource("CircleShape2D_npluf") shape = SubResource("CircleShape2D_npluf")
@@ -51,5 +55,8 @@ text = "[E]"
horizontal_alignment = 2 horizontal_alignment = 2
vertical_alignment = 2 vertical_alignment = 2
[connection signal="area_entered" from="Area2D" to="." method="OnPlayerEntered"] [node name="SelectionListener" type="Node" parent="."]
[connection signal="area_exited" from="Area2D" to="." method="OnPlayerExited"] script = ExtResource("4_gj2nu")
_variableResources = Array[Object]([ExtResource("2_o1drf")])
[connection signal="NewEventPayload" from="SelectionListener" to="Area2D" method="InteractionAreaSelectionChanged"]
+22 -4
View File
@@ -11,7 +11,7 @@ config_version=5
[application] [application]
config/name="Babushka" config/name="Babushka"
run/main_scene="uid://bopv10dqm1knc" run/main_scene="uid://66pmq4efjip8"
config/features=PackedStringArray("4.5", "C#", "Forward Plus") config/features=PackedStringArray("4.5", "C#", "Forward Plus")
run/max_fps=120 run/max_fps=120
boot_splash/fullsize=false boot_splash/fullsize=false
@@ -25,7 +25,7 @@ buses/default_bus_layout="uid://b6dwkmkyb0axk"
[autoload] [autoload]
SceneTransition="*res://scenes/SceneTransition.tscn" SceneTransition="*res://prefabs/UI/SceneTransition.tscn"
Dialogic="*res://addons/dialogic/Core/DialogicGameHandler.gd" Dialogic="*res://addons/dialogic/Core/DialogicGameHandler.gd"
InventoryManager="*res://scripts/CSharp/Common/Inventory/InventoryManager.cs" InventoryManager="*res://scripts/CSharp/Common/Inventory/InventoryManager.cs"
InputService="*res://scripts/CSharp/Common/Services/InputService.cs" InputService="*res://scripts/CSharp/Common/Services/InputService.cs"
@@ -35,6 +35,7 @@ FightWorldAutoload="*res://prefabs/fight/fight_world_autoload.tscn"
SaveGameManager="*res://scripts/CSharp/Common/Savegame/SaveGameManager.cs" SaveGameManager="*res://scripts/CSharp/Common/Savegame/SaveGameManager.cs"
SettingsSaveController="*res://scripts/CSharp/Common/Savegame/SettingsSaveController.cs" SettingsSaveController="*res://scripts/CSharp/Common/Savegame/SettingsSaveController.cs"
DayAndNight="*res://prefabs/day_and_night/day_and_night.tscn" DayAndNight="*res://prefabs/day_and_night/day_and_night.tscn"
EntityManager="*res://prefabs/entity_system/entity_manager.tscn"
[dialogic] [dialogic]
@@ -48,7 +49,9 @@ directories/dch_directory={
"vesna": "res://dialog/Characters/vesna.dch" "vesna": "res://dialog/Characters/vesna.dch"
} }
directories/dtl_directory={ directories/dtl_directory={
"cat": "res://dialog/cat.dtl",
"disclaimer": "res://dialog/disclaimer.dtl", "disclaimer": "res://dialog/disclaimer.dtl",
"domovoi_tut": "res://dialog/testing/domovoi_tut.dtl",
"quest1_ducks_end": "res://dialog/quests/ducks/quest1_ducks_end.dtl", "quest1_ducks_end": "res://dialog/quests/ducks/quest1_ducks_end.dtl",
"quest1_ducks_start": "res://dialog/quests/ducks/quest1_ducks_start.dtl", "quest1_ducks_start": "res://dialog/quests/ducks/quest1_ducks_start.dtl",
"quest2_tomatoes_end": "res://dialog/quests/tomatoes/quest2_tomatoes_end.dtl", "quest2_tomatoes_end": "res://dialog/quests/tomatoes/quest2_tomatoes_end.dtl",
@@ -176,6 +179,7 @@ directories/tres_directory={
"unselected_stylebox": "res://addons/dialogic/Editor/Events/styles/unselected_stylebox.tres", "unselected_stylebox": "res://addons/dialogic/Editor/Events/styles/unselected_stylebox.tres",
"var_ColorTestValue": "res://resources/low code/test/var_ColorTestValue.tres", "var_ColorTestValue": "res://resources/low code/test/var_ColorTestValue.tres",
"var_Counter": "res://resources/low code/test/var_Counter.tres", "var_Counter": "res://resources/low code/test/var_Counter.tres",
"var_interactableToTrigger": "res://resources/low code/interactables/var_interactableToTrigger.tres",
"var_sceneNameProvider": "res://resources/low code/farming/var_sceneNameProvider.tres", "var_sceneNameProvider": "res://resources/low code/farming/var_sceneNameProvider.tres",
"var_wateredFieldPosition": "res://resources/low code/farming/var_wateredFieldPosition.tres", "var_wateredFieldPosition": "res://resources/low code/farming/var_wateredFieldPosition.tres",
"vesna_style": "res://addons/dialogic/vesna_style.tres", "vesna_style": "res://addons/dialogic/vesna_style.tres",
@@ -186,8 +190,8 @@ directories/tres_directory={
[display] [display]
window/size/viewport_width=1980 window/size/viewport_width=1920
window/size/viewport_height=1020 window/size/viewport_height=1080
window/stretch/mode="viewport" window/stretch/mode="viewport"
window/stretch/aspect="keep_height" window/stretch/aspect="keep_height"
@@ -221,6 +225,10 @@ folder_colors={
"res://shader/": "pink" "res://shader/": "pink"
} }
[filesystem]
import/blender/enabled=false
[global_group] [global_group]
Saveable="" Saveable=""
@@ -307,6 +315,16 @@ NextDayCheat={
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
] ]
} }
DebugEntities={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":66,"key_label":0,"unicode":98,"location":0,"echo":false,"script":null)
]
}
SaveGame={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194336,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
[internationalization] [internationalization]
@@ -0,0 +1,8 @@
[gd_resource type="Resource" script_class="VariableResource" load_steps=2 format=3 uid="uid://clwqh3w5aqi5e"]
[ext_resource type="Script" uid="uid://dtvx2cakx0bey" path="res://scripts/CSharp/Low Code/Variables/VariableResource.cs" id="1_casar"]
[resource]
script = ExtResource("1_casar")
Payload = null
metadata/_custom_type_script = "uid://dtvx2cakx0bey"
-23
View File
@@ -1,23 +0,0 @@
[gd_scene load_steps=5 format=3 uid="uid://bopv10dqm1knc"]
[ext_resource type="PackedScene" uid="uid://c6wnoif01ltld" path="res://scenes/Babushka_scene_startMenu.tscn" id="1_15ton"]
[ext_resource type="Script" uid="uid://bbp0dyddwdbl8" path="res://scripts/CSharp/Common/Savegame/WindowSettingsSync.cs" id="2_d3jfo"]
[ext_resource type="Script" uid="uid://iquhbkr7pqeg" path="res://scripts/CSharp/Common/Savegame/SaveCheats.cs" id="4_ocsjo"]
[ext_resource type="Script" uid="uid://ca4s0algeij1h" path="res://scripts/CSharp/Common/Savegame/SaveIDProviderTool.cs" id="5_iyo8m"]
[node name="BabushkaSceneBootstrap" type="Node2D"]
[node name="BabushkaSceneStartMenu" parent="." instance=ExtResource("1_15ton")]
[node name="SceneParent" type="Node" parent="."]
[node name="WindowSettings" type="Node" parent="."]
script = ExtResource("2_d3jfo")
[node name="SaveSystem" type="Node" parent="."]
[node name="SaveGameCheat" type="Node" parent="SaveSystem"]
script = ExtResource("4_ocsjo")
[node name="SaveIDProvider" type="Node" parent="SaveSystem"]
script = ExtResource("5_iyo8m")
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+16
View File
@@ -0,0 +1,16 @@
[gd_scene load_steps=4 format=3 uid="uid://bopv10dqm1knc"]
[ext_resource type="PackedScene" uid="uid://c6wnoif01ltld" path="res://scenes/scene_startMenu.tscn" id="1_15ton"]
[ext_resource type="Script" uid="uid://bbp0dyddwdbl8" path="res://scripts/CSharp/Common/Savegame/WindowSettingsSync.cs" id="2_d3jfo"]
[ext_resource type="PackedScene" uid="uid://7pvvop5hfl01" path="res://prefabs/SaveSystem/save_system.tscn" id="3_s8cy4"]
[node name="BabushkaSceneBootstrap" type="Node2D"]
[node name="BabushkaSceneStartMenu" parent="." instance=ExtResource("1_15ton")]
[node name="SceneParent" type="Node" parent="."]
[node name="WindowSettings" type="Node" parent="."]
script = ExtResource("2_d3jfo")
[node name="SaveSystem" parent="." instance=ExtResource("3_s8cy4")]
@@ -11,7 +11,7 @@
[node name="BabushkaSceneCredits" type="Node2D"] [node name="BabushkaSceneCredits" type="Node2D"]
script = ExtResource("1_f5860") script = ExtResource("1_f5860")
_sceneNamesToLoad = PackedStringArray("res://scenes/Babushka_scene_startMenu.tscn") _sceneNamesToLoad = PackedStringArray("res://scenes/scene_bootstrap.tscn")
[node name="Sprite2D" type="Sprite2D" parent="."] [node name="Sprite2D" type="Sprite2D" parent="."]
position = Vector2(1030, 483) position = Vector2(1030, 483)
@@ -8,7 +8,7 @@
[node name="BabushkaSceneDisclaimer" type="Node2D"] [node name="BabushkaSceneDisclaimer" type="Node2D"]
script = ExtResource("1_5otdq") script = ExtResource("1_5otdq")
_sceneNamesToLoad = PackedStringArray("res://scenes/Babushka_scene_farm_outside_2d.tscn") _sceneNamesToLoad = PackedStringArray("res://scenes/scene_farm_outside_2d.tscn")
[node name="CanvasLayer" type="CanvasLayer" parent="."] [node name="CanvasLayer" type="CanvasLayer" parent="."]
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1,4 +1,4 @@
[gd_scene load_steps=14 format=3 uid="uid://cjshlwk8ajpnp"] [gd_scene load_steps=21 format=3 uid="uid://cjshlwk8ajpnp"]
[ext_resource type="Script" uid="uid://cnhpnn8o0gybd" path="res://scripts/CSharp/Common/Fight/FightHappeningSceneSetup.cs" id="1_fiutj"] [ext_resource type="Script" uid="uid://cnhpnn8o0gybd" path="res://scripts/CSharp/Common/Fight/FightHappeningSceneSetup.cs" id="1_fiutj"]
[ext_resource type="Script" uid="uid://c76mhhqyk4lgh" path="res://scripts/CSharp/Common/Fight/FightHappening.cs" id="1_gsk03"] [ext_resource type="Script" uid="uid://c76mhhqyk4lgh" path="res://scripts/CSharp/Common/Fight/FightHappening.cs" id="1_gsk03"]
@@ -6,28 +6,41 @@
[ext_resource type="Script" uid="uid://dwsqst8fhhqlc" path="res://scripts/CSharp/Common/Fight/AllFightersVisual.cs" id="2_lu4y4"] [ext_resource type="Script" uid="uid://dwsqst8fhhqlc" path="res://scripts/CSharp/Common/Fight/AllFightersVisual.cs" id="2_lu4y4"]
[ext_resource type="PackedScene" uid="uid://bcld43daavmrn" path="res://prefabs/fight/fight_scene_switcher.tscn" id="2_phrlx"] [ext_resource type="PackedScene" uid="uid://bcld43daavmrn" path="res://prefabs/fight/fight_scene_switcher.tscn" id="2_phrlx"]
[ext_resource type="PackedScene" uid="uid://7jsxokx67gpq" path="res://prefabs/fight/fighterVisuals/vesna_fighter_visual.tscn" id="4_qo0gi"] [ext_resource type="PackedScene" uid="uid://7jsxokx67gpq" path="res://prefabs/fight/fighterVisuals/vesna_fighter_visual.tscn" id="4_qo0gi"]
[ext_resource type="Script" uid="uid://cdrjvgm82pxoj" path="res://scripts/CSharp/Common/Fight/FightHappeningAnimationContext.cs" id="4_v5rv6"]
[ext_resource type="PackedScene" uid="uid://0vm3jb1hnkkb" path="res://prefabs/fight/fighterVisuals/blob_fighter_visual.tscn" id="4_vp8s0"] [ext_resource type="PackedScene" uid="uid://0vm3jb1hnkkb" path="res://prefabs/fight/fighterVisuals/blob_fighter_visual.tscn" id="4_vp8s0"]
[ext_resource type="Script" uid="uid://buiwuf7pjfq8" path="res://scripts/CSharp/Common/Fight/FightHappeningStateReaction.cs" id="4_ydj1i"] [ext_resource type="Script" uid="uid://buiwuf7pjfq8" path="res://scripts/CSharp/Common/Fight/FightHappeningStateReaction.cs" id="4_ydj1i"]
[ext_resource type="PackedScene" uid="uid://bydwj3pbvqrhb" path="res://prefabs/minigame/minigame.tscn" id="8_2b3cf"] [ext_resource type="PackedScene" uid="uid://bydwj3pbvqrhb" path="res://prefabs/minigame/minigame.tscn" id="8_2b3cf"]
[ext_resource type="Script" uid="uid://byf2ywov34g0x" path="res://scripts/CSharp/Common/Fight/UI/ActionSelectUiSetup.cs" id="8_bkwsr"] [ext_resource type="Script" uid="uid://byf2ywov34g0x" path="res://scripts/CSharp/Common/Fight/UI/ActionSelectUiSetup.cs" id="8_bkwsr"]
[ext_resource type="Script" uid="uid://bwm0nhvt1083k" path="res://scripts/CSharp/Common/Fight/FightMinigameHandler.cs" id="8_falfe"] [ext_resource type="Script" uid="uid://bwm0nhvt1083k" path="res://scripts/CSharp/Common/Fight/FightMinigameHandler.cs" id="8_falfe"]
[ext_resource type="Script" uid="uid://d2ugtb3dalrg3" path="res://scripts/CSharp/Common/Fight/FightHappeningStateDebugger.cs" id="8_tv7cl"] [ext_resource type="Script" uid="uid://d2ugtb3dalrg3" path="res://scripts/CSharp/Common/Fight/FightHappeningStateDebugger.cs" id="8_tv7cl"]
[ext_resource type="Texture2D" uid="uid://ciaabo8kcx2hw" path="res://art/fightworld_background.png" id="9_f4y3h"]
[ext_resource type="Script" uid="uid://2f7rqk50gtdg" path="res://scripts/CSharp/Common/Fight/SwitchSceneOnFightEnd.cs" id="10_qqd8u"] [ext_resource type="Script" uid="uid://2f7rqk50gtdg" path="res://scripts/CSharp/Common/Fight/SwitchSceneOnFightEnd.cs" id="10_qqd8u"]
[ext_resource type="Script" uid="uid://6nniwfxye8ss" path="res://scripts/CSharp/Common/Fight/UsedItemIndicatorVisual.cs" id="14_b4ll5"]
[ext_resource type="Script" uid="uid://71mdwp2m4rta" path="res://scripts/CSharp/Common/Fight/UI/HealButtonVisual.cs" id="14_oy2wu"]
[ext_resource type="Resource" uid="uid://0mnsr4anoaiq" path="res://resources/items/beet.tres" id="15_k4fcr"]
[ext_resource type="PackedScene" uid="uid://l1hdihubffeg" path="res://prefabs/fight/damage_flying_nuber.tscn" id="15_oy2wu"]
[ext_resource type="Texture2D" uid="uid://djewfwrdt4iv3" path="res://art/ui/UI/icons/icon-fruit-beetroot.png" id="16_k4fcr"]
[node name="BabushkaSceneFightHappening" type="Node2D"] [node name="BabushkaSceneFightHappening" type="Node2D"]
[node name="FightHappening" type="Node" parent="."] [node name="FightHappening" type="Node" parent="."]
script = ExtResource("1_gsk03") script = ExtResource("1_gsk03")
[node name="ActionAnimationController" type="Node" parent="." node_paths=PackedStringArray("_allFightersVisual")] [node name="ActionAnimationController" type="Node" parent="." node_paths=PackedStringArray("_allFightersVisual", "_animationContext")]
script = ExtResource("2_7kjgs") script = ExtResource("2_7kjgs")
_allFightersVisual = NodePath("../FightVisuals") _allFightersVisual = NodePath("../FightVisuals")
_animationContext = NodePath("AnimationContext")
[node name="StateReactionActionAnimation" type="Node" parent="ActionAnimationController"] [node name="StateReactionActionAnimation" type="Node" parent="ActionAnimationController"]
script = ExtResource("4_ydj1i") script = ExtResource("4_ydj1i")
_fightState = 10 _fightState = 10
[node name="AnimationContext" type="Node" parent="ActionAnimationController" node_paths=PackedStringArray("useHealItemIndicator")]
script = ExtResource("4_v5rv6")
useHealItemIndicator = NodePath("../../UseItemIndicator")
[node name="Camera2D" type="Camera2D" parent="."] [node name="Camera2D" type="Camera2D" parent="."]
scale = Vector2(0.71911293, 0.6664279)
[node name="FightSetup" type="Node2D" parent="."] [node name="FightSetup" type="Node2D" parent="."]
script = ExtResource("1_fiutj") script = ExtResource("1_fiutj")
@@ -47,6 +60,11 @@ _positionDistanceFromCenter = PackedFloat32Array(300, 550, 800)
[node name="EnvironmentVisuals" type="Node2D" parent="."] [node name="EnvironmentVisuals" type="Node2D" parent="."]
[node name="background" type="Sprite2D" parent="EnvironmentVisuals"]
z_index = -100
scale = Vector2(3, 3)
texture = ExtResource("9_f4y3h")
[node name="MinigameHandler" type="Node2D" parent="." node_paths=PackedStringArray("_minigameController")] [node name="MinigameHandler" type="Node2D" parent="." node_paths=PackedStringArray("_minigameController")]
script = ExtResource("8_falfe") script = ExtResource("8_falfe")
_minigameController = NodePath("Minigame") _minigameController = NodePath("Minigame")
@@ -146,7 +164,12 @@ theme_override_constants/margin_bottom = 10
[node name="Talk Button" type="Button" parent="ActionSelect/BottomPanel/VBoxContainer/MarginContainer/HBoxContainer/MarginContainer3"] [node name="Talk Button" type="Button" parent="ActionSelect/BottomPanel/VBoxContainer/MarginContainer/HBoxContainer/MarginContainer3"]
layout_mode = 2 layout_mode = 2
theme_override_font_sizes/font_size = 41 theme_override_font_sizes/font_size = 41
text = "Talk" text = "x19 - Heal"
icon = ExtResource("16_k4fcr")
alignment = 0
expand_icon = true
script = ExtResource("14_oy2wu")
_healItemBlueprint = ExtResource("15_k4fcr")
[node name="MarginContainer4" type="MarginContainer" parent="ActionSelect/BottomPanel/VBoxContainer/MarginContainer/HBoxContainer"] [node name="MarginContainer4" type="MarginContainer" parent="ActionSelect/BottomPanel/VBoxContainer/MarginContainer/HBoxContainer"]
layout_mode = 2 layout_mode = 2
@@ -207,6 +230,12 @@ offset_right = 794.0
offset_bottom = -472.0 offset_bottom = -472.0
text = "Hello world" text = "Hello world"
[node name="UseItemIndicator" type="Node2D" parent="."]
position = Vector2(214, 319)
script = ExtResource("14_b4ll5")
_flyingIndicatorPrefab = ExtResource("15_oy2wu")
_itemTexture = ExtResource("16_k4fcr")
[connection signal="SignalTransitionState" from="FightHappening" to="ActionAnimationController/StateReactionActionAnimation" method="FightHappeningStateTransitioned"] [connection signal="SignalTransitionState" from="FightHappening" to="ActionAnimationController/StateReactionActionAnimation" method="FightHappeningStateTransitioned"]
[connection signal="SignalTransitionState" from="FightHappening" to="FightVisuals" method="FightHappeningStateChange"] [connection signal="SignalTransitionState" from="FightHappening" to="FightVisuals" method="FightHappeningStateChange"]
[connection signal="SignalTransitionState" from="FightHappening" to="ActionSelect/StateReactionInputActionSelect" method="FightHappeningStateTransitioned"] [connection signal="SignalTransitionState" from="FightHappening" to="ActionSelect/StateReactionInputActionSelect" method="FightHappeningStateTransitioned"]
@@ -221,4 +250,5 @@ text = "Hello world"
[connection signal="pressed" from="ActionSelect/BottomPanel/VBoxContainer/MarginContainer/HBoxContainer/MarginContainer4/Flee Button" to="ActionSelect" method="SelectAction" binds= [4]] [connection signal="pressed" from="ActionSelect/BottomPanel/VBoxContainer/MarginContainer/HBoxContainer/MarginContainer4/Flee Button" to="ActionSelect" method="SelectAction" binds= [4]]
[connection signal="OnStateEntered" from="ActionSelect/StateReactionInputActionSelect" to="ActionSelect" method="show"] [connection signal="OnStateEntered" from="ActionSelect/StateReactionInputActionSelect" to="ActionSelect" method="show"]
[connection signal="OnStateEntered" from="ActionSelect/StateReactionInputActionSelect" to="ActionSelect" method="StateEntered"] [connection signal="OnStateEntered" from="ActionSelect/StateReactionInputActionSelect" to="ActionSelect" method="StateEntered"]
[connection signal="OnStateEntered" from="ActionSelect/StateReactionInputActionSelect" to="ActionSelect/BottomPanel/VBoxContainer/MarginContainer/HBoxContainer/MarginContainer3/Talk Button" method="UpdateText"]
[connection signal="OnStateExited" from="ActionSelect/StateReactionInputActionSelect" to="ActionSelect" method="hide"] [connection signal="OnStateExited" from="ActionSelect/StateReactionInputActionSelect" to="ActionSelect" method="hide"]
@@ -1,4 +1,4 @@
[gd_scene load_steps=52 format=3 uid="uid://cacnapfv7w567"] [gd_scene load_steps=53 format=3 uid="uid://cacnapfv7w567"]
[ext_resource type="Script" uid="uid://bqomwxclsbhd3" path="res://scripts/CSharp/Common/Camera/CameraController.cs" id="1_pi6ua"] [ext_resource type="Script" uid="uid://bqomwxclsbhd3" path="res://scripts/CSharp/Common/Camera/CameraController.cs" id="1_pi6ua"]
[ext_resource type="Texture2D" uid="uid://8sr11ex30n0m" path="res://art/mockups/Kenney_Backgrounds/Samples/uncolored_hills.png" id="2_hqa4k"] [ext_resource type="Texture2D" uid="uid://8sr11ex30n0m" path="res://art/mockups/Kenney_Backgrounds/Samples/uncolored_hills.png" id="2_hqa4k"]
@@ -40,6 +40,7 @@
[ext_resource type="Script" uid="uid://dbu8afaiohpdh" path="res://scripts/CSharp/Common/Fight/FightRoomSceneSetup.cs" id="40_cvg1r"] [ext_resource type="Script" uid="uid://dbu8afaiohpdh" path="res://scripts/CSharp/Common/Fight/FightRoomSceneSetup.cs" id="40_cvg1r"]
[ext_resource type="PackedScene" uid="uid://bcld43daavmrn" path="res://prefabs/fight/fight_scene_switcher.tscn" id="40_elhbh"] [ext_resource type="PackedScene" uid="uid://bcld43daavmrn" path="res://prefabs/fight/fight_scene_switcher.tscn" id="40_elhbh"]
[ext_resource type="PackedScene" uid="uid://qfdiudt3vpai" path="res://prefabs/fight/roaming_enemy_group.tscn" id="41_cvg1r"] [ext_resource type="PackedScene" uid="uid://qfdiudt3vpai" path="res://prefabs/fight/roaming_enemy_group.tscn" id="41_cvg1r"]
[ext_resource type="PackedScene" uid="uid://dpbbroif2tnil" path="res://prefabs/interactions/generic_item_on_ground_2d.tscn" id="41_x3yi1"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ruj2u"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_ruj2u"]
shader = ExtResource("16_0fard") shader = ExtResource("16_0fard")
@@ -2175,6 +2176,7 @@ _sceneRoot = NodePath("..")
script = ExtResource("40_cvg1r") script = ExtResource("40_cvg1r")
_enemyGroupSpawns = [NodePath("../YSorted/EnemyGroupSpawns/Spawn1"), NodePath("../YSorted/EnemyGroupSpawns/Spawn2"), NodePath("../YSorted/EnemyGroupSpawns/Spawn3"), NodePath("../YSorted/EnemyGroupSpawns/Spawn4")] _enemyGroupSpawns = [NodePath("../YSorted/EnemyGroupSpawns/Spawn1"), NodePath("../YSorted/EnemyGroupSpawns/Spawn2"), NodePath("../YSorted/EnemyGroupSpawns/Spawn3"), NodePath("../YSorted/EnemyGroupSpawns/Spawn4")]
_roamingEnemyGroupPrefab = ExtResource("41_cvg1r") _roamingEnemyGroupPrefab = ExtResource("41_cvg1r")
_itemOnGroundPrefab = ExtResource("41_x3yi1")
_fightSceneSwitcher = NodePath("../FightSceneSwitcher") _fightSceneSwitcher = NodePath("../FightSceneSwitcher")
[editable path="YSorted/Vesna"] [editable path="YSorted/Vesna"]
@@ -1,37 +1,39 @@
[gd_scene load_steps=41 format=3 uid="uid://bm21nqepnwaik"] [gd_scene load_steps=43 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="Script" uid="uid://cssdu8viimwm6" path="res://scripts/CSharp/Common/SceneTransition.cs" id="1_3al6t"]
[ext_resource type="Texture2D" uid="uid://cnhsxxps2cw5" path="res://art/indoor/room export/Room_01_table.png" id="2_ubg3a"] [ext_resource type="Texture2D" uid="uid://cnhsxxps2cw5" path="res://art/indoor/room export/Room_01_table.png" id="2_ufnxe"]
[ext_resource type="Texture2D" uid="uid://blg50is4kuh2f" path="res://art/indoor/room export/Room_01_chair.png" id="3_gpagp"] [ext_resource type="Texture2D" uid="uid://blg50is4kuh2f" path="res://art/indoor/room export/Room_01_chair.png" id="3_pejp6"]
[ext_resource type="Texture2D" uid="uid://x7trh4dgsvoe" path="res://art/indoor/room export/Room_01_assets.png" id="4_27bwy"] [ext_resource type="Texture2D" uid="uid://x7trh4dgsvoe" path="res://art/indoor/room export/Room_01_assets.png" id="4_nc3ef"]
[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://waqmjrxduxfq" path="res://art/indoor/room export/Room_01_walls.png" id="5_cpb5b"]
[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://b2rj7wkyu6ehy" path="res://art/indoor/room export/Room_01_pechka.png" id="6_ecq66"]
[ext_resource type="Texture2D" uid="uid://vyk63d0pgqm5" path="res://art/indoor/room export/Room_01_dioor L.png" id="7_yd2gv"] [ext_resource type="Texture2D" uid="uid://dhvi5404cqioa" path="res://art/indoor/room export/Room_01_window.png" id="7_8mqg7"]
[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://bpi35nxbhput8" path="res://art/indoor/room export/Room_01_pechkaDoor.png" id="8_bv3pn"]
[ext_resource type="Texture2D" uid="uid://dhvi5404cqioa" path="res://art/indoor/room export/Room_01_window.png" id="9_aoesu"] [ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="9_qaiit"]
[ext_resource type="Texture2D" uid="uid://bpi35nxbhput8" path="res://art/indoor/room export/Room_01_pechkaDoor.png" id="10_xcryd"] [ext_resource type="Texture2D" uid="uid://tyypifpte0pb" path="res://art/indoor/room export/Room_01_chugun.png" id="10_rj4v5"]
[ext_resource type="Texture2D" uid="uid://tyypifpte0pb" path="res://art/indoor/room export/Room_01_chugun.png" id="11_as3nm"] [ext_resource type="Texture2D" uid="uid://404glx32r1w8" path="res://art/indoor/room export/Room_01_bench.png" id="11_7ohth"]
[ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="11_gpagp"] [ext_resource type="Texture2D" uid="uid://c4q12jiligcl7" path="res://art/animals/katze.png" id="12_dckqa"]
[ext_resource type="Texture2D" uid="uid://cop1vjvhwlsec" path="res://art/indoor/room export/Room_01_shelf.png" id="12_bu2a1"] [ext_resource type="AudioStream" uid="uid://cohyenfo1rtxh" path="res://audio/sfx/Animals/SFX_Cat_Meow_01.wav" id="13_65rkx"]
[ext_resource type="Texture2D" uid="uid://404glx32r1w8" path="res://art/indoor/room export/Room_01_bench.png" id="13_rongr"] [ext_resource type="AudioStream" uid="uid://b2cmf5ie7cwka" path="res://audio/sfx/Animals/SFX_Cat_Meow_02.wav" id="14_mse84"]
[ext_resource type="Texture2D" uid="uid://ckvytnpi8gcxq" path="res://art/eyes_atlas.png" id="14_d7yky"] [ext_resource type="AudioStream" uid="uid://cttisejnt2l8f" path="res://audio/sfx/Animals/SFX_Cat_Meow_03.wav" id="15_26mhc"]
[ext_resource type="PackedScene" uid="uid://c25udixd5m6l0" path="res://prefabs/characters/Vesna.tscn" id="15_7a68a"] [ext_resource type="AudioStream" uid="uid://cbmagiou0n0t3" path="res://audio/sfx/Animals/SFX_Cat_Meow_04.wav" id="16_vt5fp"]
[ext_resource type="Script" uid="uid://31p67cdowuw4" path="res://scripts/CSharp/Common/Animation/AnimationStarter.cs" id="15_27bwy"] [ext_resource type="AudioStream" uid="uid://bk1bj01fokjp7" path="res://audio/sfx/Animals/SFX_Cat_Meow_05.wav" id="17_n8vep"]
[ext_resource type="Texture2D" uid="uid://c4q12jiligcl7" path="res://art/animals/katze.png" id="15_sndxu"] [ext_resource type="AudioStream" uid="uid://r2f6xmjvyyjv" path="res://audio/sfx/Animals/SFX_Cat_Purr_01.wav" id="18_3oexm"]
[ext_resource type="AudioStream" uid="uid://cohyenfo1rtxh" path="res://audio/sfx/Animals/SFX_Cat_Meow_01.wav" id="16_d7yky"] [ext_resource type="Script" uid="uid://cfnrd5k1k0gxw" path="res://scripts/CSharp/Common/AudioPlayer2D.cs" id="19_a2xrf"]
[ext_resource type="PackedScene" uid="uid://dfvgp1my5rydh" path="res://prefabs/characters/Yeli.tscn" id="16_dhsxs"] [ext_resource type="Script" uid="uid://31p67cdowuw4" path="res://scripts/CSharp/Common/Animation/AnimationStarter.cs" id="20_lkkn4"]
[ext_resource type="AudioStream" uid="uid://b2cmf5ie7cwka" path="res://audio/sfx/Animals/SFX_Cat_Meow_02.wav" id="17_7a68a"] [ext_resource type="Script" uid="uid://dnipeibppjirs" path="res://scripts/CSharp/Common/NPC/DialogicOverlayStarter.cs" id="20_pejp6"]
[ext_resource type="Script" uid="uid://cvkw4qd2hxksi" path="res://scripts/GdScript/dialogic_toggle.gd" id="17_k0k8c"] [ext_resource type="Texture2D" uid="uid://ckvytnpi8gcxq" path="res://art/eyes_atlas.png" id="21_m0gmu"]
[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://d2486x6upmwqq" path="res://scripts/GdScript/dialogic_starter.gd" id="21_nc3ef"]
[ext_resource type="Script" uid="uid://bqomwxclsbhd3" path="res://scripts/CSharp/Common/Camera/CameraController.cs" id="18_dw4nn"] [ext_resource type="Texture2D" uid="uid://bqwhptcgg5ons" path="res://art/indoor/room export/Room_01_dorr_R.png" id="22_ahl31"]
[ext_resource type="AudioStream" uid="uid://cbmagiou0n0t3" path="res://audio/sfx/Animals/SFX_Cat_Meow_04.wav" id="19_k0k8c"] [ext_resource type="Texture2D" uid="uid://da67c7avarwq2" path="res://art/indoor/kitchen_bgAssets.png" id="23_hgs5o"]
[ext_resource type="AudioStream" uid="uid://bk1bj01fokjp7" path="res://audio/sfx/Animals/SFX_Cat_Meow_05.wav" id="20_dw4nn"] [ext_resource type="Texture2D" uid="uid://vyk63d0pgqm5" path="res://art/indoor/room export/Room_01_dioor L.png" id="24_t86aa"]
[ext_resource type="Script" uid="uid://cldtt4atgymm5" path="res://scripts/CSharp/Common/Quest/QuestTrigger.cs" id="21_blyw3"] [ext_resource type="Texture2D" uid="uid://cop1vjvhwlsec" path="res://art/indoor/room export/Room_01_shelf.png" id="25_0pvxk"]
[ext_resource type="AudioStream" uid="uid://r2f6xmjvyyjv" path="res://audio/sfx/Animals/SFX_Cat_Purr_01.wav" id="21_ytap8"] [ext_resource type="PackedScene" uid="uid://c25udixd5m6l0" path="res://prefabs/characters/Vesna.tscn" id="26_yq173"]
[ext_resource type="Script" uid="uid://cfnrd5k1k0gxw" path="res://scripts/CSharp/Common/AudioPlayer2D.cs" id="22_tggq2"] [ext_resource type="PackedScene" uid="uid://dfvgp1my5rydh" path="res://prefabs/characters/Yeli.tscn" id="27_pfr1s"]
[ext_resource type="Resource" uid="uid://cbpurnewhyefa" path="res://resources/quests/beetRoot.tres" id="22_yd2gv"] [ext_resource type="Script" uid="uid://cvkw4qd2hxksi" path="res://scripts/GdScript/dialogic_toggle.gd" id="28_l3q6o"]
[ext_resource type="Texture2D" uid="uid://da67c7avarwq2" path="res://art/indoor/kitchen_bgAssets.png" id="23_d7yky"] [ext_resource type="Script" uid="uid://cldtt4atgymm5" path="res://scripts/CSharp/Common/Quest/QuestTrigger.cs" id="29_6elg7"]
[ext_resource type="PackedScene" uid="uid://cgjc4wurbgimy" path="res://prefabs/UI/Inventory/Inventory.tscn" id="24_yd2gv"] [ext_resource type="Resource" uid="uid://cbpurnewhyefa" path="res://resources/quests/beetRoot.tres" id="30_pd0e4"]
[ext_resource type="Script" uid="uid://bqomwxclsbhd3" path="res://scripts/CSharp/Common/Camera/CameraController.cs" id="31_x6an5"]
[ext_resource type="PackedScene" uid="uid://cgjc4wurbgimy" path="res://prefabs/UI/Inventory/Inventory.tscn" id="32_i4hb6"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_a2ood"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_a2ood"]
resource_local_to_scene = true resource_local_to_scene = true
@@ -43,12 +45,12 @@ radius = 300.0
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_b6vf7"] [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_b6vf7"]
streams_count = 6 streams_count = 6
stream_0/stream = ExtResource("16_d7yky") stream_0/stream = ExtResource("13_65rkx")
stream_1/stream = ExtResource("17_7a68a") stream_1/stream = ExtResource("14_mse84")
stream_2/stream = ExtResource("18_dhsxs") stream_2/stream = ExtResource("15_26mhc")
stream_3/stream = ExtResource("19_k0k8c") stream_3/stream = ExtResource("16_vt5fp")
stream_4/stream = ExtResource("20_dw4nn") stream_4/stream = ExtResource("17_n8vep")
stream_5/stream = ExtResource("21_ytap8") stream_5/stream = ExtResource("18_3oexm")
[sub_resource type="Animation" id="Animation_j5d18"] [sub_resource type="Animation" id="Animation_j5d18"]
length = 0.001 length = 0.001
@@ -218,8 +220,8 @@ radius = 400.0
[node name="Common Room" type="Node2D"] [node name="Common Room" type="Node2D"]
z_index = 1 z_index = 1
y_sort_enabled = true y_sort_enabled = true
script = ExtResource("1_3vr4f") script = ExtResource("1_3al6t")
_sceneNamesToLoad = PackedStringArray("res://scenes/Babushka_scene_indoor_vesnas_room.tscn", "res://scenes/Babushka_scene_indoor_kitchen.tscn", "res://scenes/Babushka_scene_farm_outside_2d.tscn") _sceneNamesToLoad = PackedStringArray("res://scenes/scene_indoor_vesnas_room.tscn", "res://scenes/scene_indoor_kitchen.tscn", "res://scenes/scene_farm_outside_2d.tscn")
[node name="Foreground" type="Node" parent="."] [node name="Foreground" type="Node" parent="."]
@@ -227,7 +229,7 @@ _sceneNamesToLoad = PackedStringArray("res://scenes/Babushka_scene_indoor_vesnas
z_index = 2 z_index = 2
y_sort_enabled = true y_sort_enabled = true
position = Vector2(-1888, 1112) position = Vector2(-1888, 1112)
texture = ExtResource("2_ubg3a") texture = ExtResource("2_ufnxe")
offset = Vector2(0, -200) offset = Vector2(0, -200)
region_enabled = true region_enabled = true
region_rect = Rect2(1012, 1743, 1470, 417) region_rect = Rect2(1012, 1743, 1470, 417)
@@ -236,7 +238,7 @@ region_rect = Rect2(1012, 1743, 1470, 417)
z_index = 3 z_index = 3
y_sort_enabled = true y_sort_enabled = true
position = Vector2(-3032, 2096) position = Vector2(-3032, 2096)
texture = ExtResource("3_gpagp") texture = ExtResource("3_pejp6")
offset = Vector2(216, -1064) offset = Vector2(216, -1064)
region_enabled = true region_enabled = true
region_rect = Rect2(1534, 1976, 379, 184) region_rect = Rect2(1534, 1976, 379, 184)
@@ -244,7 +246,7 @@ region_rect = Rect2(1534, 1976, 379, 184)
[node name="Chair2" type="Sprite2D" parent="Foreground"] [node name="Chair2" type="Sprite2D" parent="Foreground"]
y_sort_enabled = true y_sort_enabled = true
position = Vector2(-1064, 2064) position = Vector2(-1064, 2064)
texture = ExtResource("3_gpagp") texture = ExtResource("3_pejp6")
offset = Vector2(184, -1056) offset = Vector2(184, -1056)
region_enabled = true region_enabled = true
region_rect = Rect2(1534, 1976, 379, 184) region_rect = Rect2(1534, 1976, 379, 184)
@@ -253,7 +255,7 @@ region_rect = Rect2(1534, 1976, 379, 184)
z_index = 1 z_index = 1
y_sort_enabled = true y_sort_enabled = true
position = Vector2(-1904, 1192) position = Vector2(-1904, 1192)
texture = ExtResource("4_27bwy") texture = ExtResource("4_nc3ef")
offset = Vector2(0, -800) offset = Vector2(0, -800)
region_enabled = true region_enabled = true
region_rect = Rect2(2093, 49, 421, 630) region_rect = Rect2(2093, 49, 421, 630)
@@ -288,14 +290,14 @@ shape = SubResource("RectangleShape2D_a2ood")
z_index = -100 z_index = -100
position = Vector2(4992, -487) position = Vector2(4992, -487)
scale = Vector2(2, 2) scale = Vector2(2, 2)
texture = ExtResource("5_sndxu") texture = ExtResource("5_cpb5b")
offset = Vector2(-2768, 264) offset = Vector2(-2768, 264)
[node name="wall 1" type="Sprite2D" parent="BackWall"] [node name="wall 1" type="Sprite2D" parent="BackWall"]
z_index = -100 z_index = -100
position = Vector2(-4368, 40) position = Vector2(-4368, 40)
scale = Vector2(2, 2) scale = Vector2(2, 2)
texture = ExtResource("5_sndxu") texture = ExtResource("5_cpb5b")
flip_h = true flip_h = true
region_rect = Rect2(111, 292, 3323, 2160) region_rect = Rect2(111, 292, 3323, 2160)
@@ -308,32 +310,32 @@ shape = SubResource("RectangleShape2D_a2ood")
[node name="Room01Pechka" type="Sprite2D" parent="BackWall"] [node name="Room01Pechka" type="Sprite2D" parent="BackWall"]
z_index = -80 z_index = -80
position = Vector2(-224, -392) position = Vector2(-224, -392)
texture = ExtResource("8_ofqcg") texture = ExtResource("6_ecq66")
region_enabled = true region_enabled = true
region_rect = Rect2(2236, 0, 724, 1392) region_rect = Rect2(2236, 0, 724, 1392)
[node name="Room01Window2" type="Sprite2D" parent="BackWall"] [node name="Room01Window2" type="Sprite2D" parent="BackWall"]
z_index = -50 z_index = -50
position = Vector2(-5870, -408) position = Vector2(-5870, -408)
texture = ExtResource("9_aoesu") texture = ExtResource("7_8mqg7")
region_enabled = true region_enabled = true
region_rect = Rect2(1020, 338, 607, 757) region_rect = Rect2(1020, 338, 607, 757)
[node name="Room01Window3" type="Sprite2D" parent="BackWall"] [node name="Room01Window3" type="Sprite2D" parent="BackWall"]
z_index = -50 z_index = -50
position = Vector2(-3931, -397) position = Vector2(-3931, -397)
texture = ExtResource("9_aoesu") texture = ExtResource("7_8mqg7")
region_enabled = true region_enabled = true
region_rect = Rect2(1020, 338, 607, 757) region_rect = Rect2(1020, 338, 607, 757)
[node name="Room01PechkaDoor" type="Sprite2D" parent="BackWall"] [node name="Room01PechkaDoor" type="Sprite2D" parent="BackWall"]
z_index = -50 z_index = -50
position = Vector2(-240, -100) position = Vector2(-240, -100)
texture = ExtResource("10_xcryd") texture = ExtResource("8_bv3pn")
region_enabled = true region_enabled = true
region_rect = Rect2(2360, 864, 356, 251) region_rect = Rect2(2360, 864, 356, 251)
[node name="InteractionArea" parent="BackWall/Room01PechkaDoor" node_paths=PackedStringArray("_spritesToOutline") instance=ExtResource("11_gpagp")] [node name="InteractionArea" parent="BackWall/Room01PechkaDoor" node_paths=PackedStringArray("_spritesToOutline") instance=ExtResource("9_qaiit")]
position = Vector2(0, -3) position = Vector2(0, -3)
_spritesToOutline = [NodePath("..")] _spritesToOutline = [NodePath("..")]
@@ -343,7 +345,7 @@ shape = SubResource("CircleShape2D_gpagp")
[node name="Room01Chugun" type="Sprite2D" parent="BackWall"] [node name="Room01Chugun" type="Sprite2D" parent="BackWall"]
z_index = -40 z_index = -40
position = Vector2(16, -560) position = Vector2(16, -560)
texture = ExtResource("11_as3nm") texture = ExtResource("10_rj4v5")
region_enabled = true region_enabled = true
region_rect = Rect2(2469, 459, 247, 131) region_rect = Rect2(2469, 459, 247, 131)
@@ -351,32 +353,40 @@ region_rect = Rect2(2469, 459, 247, 131)
z_index = -10 z_index = -10
y_sort_enabled = true y_sort_enabled = true
position = Vector2(-5070, 1051) position = Vector2(-5070, 1051)
texture = ExtResource("13_rongr") texture = ExtResource("11_7ohth")
flip_h = true flip_h = true
region_enabled = true region_enabled = true
region_rect = Rect2(1156, 1185, 940, 189) region_rect = Rect2(1156, 1185, 940, 189)
[node name="Katze" type="Sprite2D" parent="BackWall/Bench"] [node name="Katze" type="Sprite2D" parent="BackWall/Bench"]
z_index = -10 z_index = 15
position = Vector2(61, -87) position = Vector2(61, -87)
scale = Vector2(2, 2) scale = Vector2(2, 2)
texture = ExtResource("15_sndxu") texture = ExtResource("12_dckqa")
offset = Vector2(-8, -126) offset = Vector2(-8, -126)
[node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="BackWall/Bench/Katze"] [node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="BackWall/Bench/Katze"]
stream = SubResource("AudioStreamRandomizer_b6vf7") stream = SubResource("AudioStreamRandomizer_b6vf7")
bus = &"SFX" bus = &"SFX"
script = ExtResource("22_tggq2") script = ExtResource("19_a2xrf")
[node name="InteractionArea" parent="BackWall/Bench/Katze" node_paths=PackedStringArray("_spritesToOutline") instance=ExtResource("11_gpagp")] [node name="InteractionArea" parent="BackWall/Bench/Katze" node_paths=PackedStringArray("_spritesToOutline") instance=ExtResource("9_qaiit")]
position = Vector2(-6.5, -44) position = Vector2(-6.5, -44)
scale = Vector2(0.5, 0.5) scale = Vector2(0.5, 0.5)
_spritesToOutline = [NodePath("..")] _spritesToOutline = [NodePath("..")]
[node name="dialogic overlay starter" type="Node2D" parent="BackWall/Bench/Katze"]
script = ExtResource("20_pejp6")
_timelinesToPlay = PackedStringArray("cat")
_startOnReady = false
[node name="dialogic starter" type="Node" parent="BackWall/Bench/Katze/dialogic overlay starter"]
script = ExtResource("21_nc3ef")
[node name="Bench2" type="Sprite2D" parent="BackWall"] [node name="Bench2" type="Sprite2D" parent="BackWall"]
z_index = -10 z_index = -10
position = Vector2(-2906, 243) position = Vector2(-2906, 243)
texture = ExtResource("13_rongr") texture = ExtResource("11_7ohth")
region_enabled = true region_enabled = true
region_rect = Rect2(1156, 1185, 940, 189) region_rect = Rect2(1156, 1185, 940, 189)
@@ -386,7 +396,7 @@ region_rect = Rect2(1156, 1185, 940, 189)
z_index = -10 z_index = -10
y_sort_enabled = true y_sort_enabled = true
position = Vector2(-177, 554.5) position = Vector2(-177, 554.5)
texture = ExtResource("4_27bwy") texture = ExtResource("4_nc3ef")
offset = Vector2(0, -296) offset = Vector2(0, -296)
region_enabled = true region_enabled = true
region_rect = Rect2(2244, 763, 274, 91) region_rect = Rect2(2244, 763, 274, 91)
@@ -395,7 +405,7 @@ region_rect = Rect2(2244, 763, 274, 91)
z_index = -10 z_index = -10
y_sort_enabled = true y_sort_enabled = true
position = Vector2(336.487, 275.616) position = Vector2(336.487, 275.616)
texture = ExtResource("4_27bwy") texture = ExtResource("4_nc3ef")
offset = Vector2(-14.6475, -97.651) offset = Vector2(-14.6475, -97.651)
region_enabled = true region_enabled = true
region_rect = Rect2(3157, 688, 118.519, 221) region_rect = Rect2(3157, 688, 118.519, 221)
@@ -405,7 +415,7 @@ z_index = -10
y_sort_enabled = true y_sort_enabled = true
position = Vector2(-852, -187) position = Vector2(-852, -187)
rotation = -0.0663225 rotation = -0.0663225
texture = ExtResource("4_27bwy") texture = ExtResource("4_nc3ef")
offset = Vector2(0, -296) offset = Vector2(0, -296)
region_enabled = true region_enabled = true
region_rect = Rect2(2624, 435, 49, 76) region_rect = Rect2(2624, 435, 49, 76)
@@ -416,11 +426,11 @@ y_sort_enabled = true
position = Vector2(-101, -6) position = Vector2(-101, -6)
rotation = -0.0663225 rotation = -0.0663225
scale = Vector2(1e-05, 1e-05) scale = Vector2(1e-05, 1e-05)
texture = ExtResource("4_27bwy") texture = ExtResource("4_nc3ef")
offset = Vector2(43.3898, 128.128) offset = Vector2(43.3898, 128.128)
region_enabled = true region_enabled = true
region_rect = Rect2(3362, 139, 101, 269) region_rect = Rect2(3362, 139, 101, 269)
script = ExtResource("15_27bwy") script = ExtResource("20_lkkn4")
_animationPlayer = NodePath("SpiritAnimation") _animationPlayer = NodePath("SpiritAnimation")
_animationName = "hand_stretch" _animationName = "hand_stretch"
_repeatable = false _repeatable = false
@@ -436,7 +446,7 @@ playback_auto_capture = false
z_index = -10 z_index = -10
y_sort_enabled = true y_sort_enabled = true
position = Vector2(287, -157.5) position = Vector2(287, -157.5)
texture = ExtResource("4_27bwy") texture = ExtResource("4_nc3ef")
offset = Vector2(0, -296) offset = Vector2(0, -296)
region_enabled = true region_enabled = true
region_rect = Rect2(2964, 137, 321, 213) region_rect = Rect2(2964, 137, 321, 213)
@@ -444,7 +454,7 @@ region_rect = Rect2(2964, 137, 321, 213)
[node name="herb 1" type="Sprite2D" parent="BackWall/Room assets/herbsline"] [node name="herb 1" type="Sprite2D" parent="BackWall/Room assets/herbsline"]
y_sort_enabled = true y_sort_enabled = true
position = Vector2(-72, 136) position = Vector2(-72, 136)
texture = ExtResource("4_27bwy") texture = ExtResource("4_nc3ef")
offset = Vector2(0, -296) offset = Vector2(0, -296)
region_enabled = true region_enabled = true
region_rect = Rect2(2600, 165, 127, 199) region_rect = Rect2(2600, 165, 127, 199)
@@ -452,7 +462,7 @@ region_rect = Rect2(2600, 165, 127, 199)
[node name="herb 2" type="Sprite2D" parent="BackWall/Room assets/herbsline"] [node name="herb 2" type="Sprite2D" parent="BackWall/Room assets/herbsline"]
y_sort_enabled = true y_sort_enabled = true
position = Vector2(64, 80) position = Vector2(64, 80)
texture = ExtResource("4_27bwy") texture = ExtResource("4_nc3ef")
offset = Vector2(0, -296) offset = Vector2(0, -296)
region_enabled = true region_enabled = true
region_rect = Rect2(2761, 161, 135, 199) region_rect = Rect2(2761, 161, 135, 199)
@@ -462,7 +472,7 @@ visible = false
z_index = -10 z_index = -10
position = Vector2(-169, -80) position = Vector2(-169, -80)
scale = Vector2(0.4, 0.4) scale = Vector2(0.4, 0.4)
texture = ExtResource("14_d7yky") texture = ExtResource("21_m0gmu")
region_enabled = true region_enabled = true
region_rect = Rect2(2647, 15, 286, 183) region_rect = Rect2(2647, 15, 286, 183)
@@ -472,21 +482,21 @@ position = Vector2(-205, -8)
[node name="apple" type="Sprite2D" parent="BackWall/Room assets/offerings"] [node name="apple" type="Sprite2D" parent="BackWall/Room assets/offerings"]
z_index = -1 z_index = -1
position = Vector2(229.5, 331.5) position = Vector2(229.5, 331.5)
texture = ExtResource("4_27bwy") texture = ExtResource("4_nc3ef")
region_enabled = true region_enabled = true
region_rect = Rect2(2822, 764, 93, 87) region_rect = Rect2(2822, 764, 93, 87)
[node name="bread" type="Sprite2D" parent="BackWall/Room assets/offerings"] [node name="bread" type="Sprite2D" parent="BackWall/Room assets/offerings"]
z_index = -2 z_index = -2
position = Vector2(157.5, 339.5) position = Vector2(157.5, 339.5)
texture = ExtResource("4_27bwy") texture = ExtResource("4_nc3ef")
region_enabled = true region_enabled = true
region_rect = Rect2(2951, 783, 155, 78) region_rect = Rect2(2951, 783, 155, 78)
[node name="plate" type="Sprite2D" parent="BackWall/Room assets/offerings"] [node name="plate" type="Sprite2D" parent="BackWall/Room assets/offerings"]
z_index = -20 z_index = -20
position = Vector2(189.5, 659.5) position = Vector2(189.5, 659.5)
texture = ExtResource("4_27bwy") texture = ExtResource("4_nc3ef")
offset = Vector2(0, -296) offset = Vector2(0, -296)
region_enabled = true region_enabled = true
region_rect = Rect2(2576, 802, 219, 64) region_rect = Rect2(2576, 802, 219, 64)
@@ -496,11 +506,11 @@ region_rect = Rect2(2576, 802, 219, 64)
[node name="Door_Kitchen" type="Sprite2D" parent="BackWall/Doors"] [node name="Door_Kitchen" type="Sprite2D" parent="BackWall/Doors"]
z_index = -50 z_index = -50
position = Vector2(923, -221) position = Vector2(923, -221)
texture = ExtResource("6_blyw3") texture = ExtResource("22_ahl31")
region_enabled = true region_enabled = true
region_rect = Rect2(3161, 313, 679, 1050) region_rect = Rect2(3161, 313, 679, 1050)
[node name="KitchendoorInteraction" parent="BackWall/Doors/Door_Kitchen" node_paths=PackedStringArray("_spritesToOutline") instance=ExtResource("11_gpagp")] [node name="KitchendoorInteraction" parent="BackWall/Doors/Door_Kitchen" node_paths=PackedStringArray("_spritesToOutline") instance=ExtResource("9_qaiit")]
position = Vector2(-7, 248) position = Vector2(-7, 248)
scale = Vector2(1.5, 1.5) scale = Vector2(1.5, 1.5)
_spritesToOutline = [NodePath("..")] _spritesToOutline = [NodePath("..")]
@@ -509,11 +519,11 @@ _id = 1
[node name="Door_Outside" type="Sprite2D" parent="BackWall/Doors"] [node name="Door_Outside" type="Sprite2D" parent="BackWall/Doors"]
z_index = -50 z_index = -50
position = Vector2(-4917, -226) position = Vector2(-4917, -226)
texture = ExtResource("23_d7yky") texture = ExtResource("23_hgs5o")
region_enabled = true region_enabled = true
region_rect = Rect2(3009, 666, 679, 1050) region_rect = Rect2(3009, 666, 679, 1050)
[node name="OutsideDoor" parent="BackWall/Doors/Door_Outside" node_paths=PackedStringArray("_spritesToOutline") instance=ExtResource("11_gpagp")] [node name="OutsideDoor" parent="BackWall/Doors/Door_Outside" node_paths=PackedStringArray("_spritesToOutline") instance=ExtResource("9_qaiit")]
position = Vector2(-7, 248) position = Vector2(-7, 248)
scale = Vector2(1.5, 1.5) scale = Vector2(1.5, 1.5)
_spritesToOutline = [NodePath("..")] _spritesToOutline = [NodePath("..")]
@@ -522,11 +532,11 @@ _id = 2
[node name="Door_Bedroom" type="Sprite2D" parent="BackWall/Doors"] [node name="Door_Bedroom" type="Sprite2D" parent="BackWall/Doors"]
z_index = -50 z_index = -50
position = Vector2(-1620, -259) position = Vector2(-1620, -259)
texture = ExtResource("7_yd2gv") texture = ExtResource("24_t86aa")
region_enabled = true region_enabled = true
region_rect = Rect2(0, 165, 763, 1224) region_rect = Rect2(0, 165, 763, 1224)
[node name="VesnasRoomDoor" parent="BackWall/Doors/Door_Bedroom" node_paths=PackedStringArray("_spritesToOutline") instance=ExtResource("11_gpagp")] [node name="VesnasRoomDoor" parent="BackWall/Doors/Door_Bedroom" node_paths=PackedStringArray("_spritesToOutline") instance=ExtResource("9_qaiit")]
position = Vector2(2, 233) position = Vector2(2, 233)
_spritesToOutline = [NodePath("..")] _spritesToOutline = [NodePath("..")]
_id = 0 _id = 0
@@ -537,7 +547,7 @@ shape = SubResource("CircleShape2D_yd2gv")
[node name="Shelf" type="Sprite2D" parent="BackWall"] [node name="Shelf" type="Sprite2D" parent="BackWall"]
z_index = -50 z_index = -50
position = Vector2(-880, -416) position = Vector2(-880, -416)
texture = ExtResource("12_bu2a1") texture = ExtResource("25_0pvxk")
region_enabled = true region_enabled = true
region_rect = Rect2(1846, 471, 348, 490) region_rect = Rect2(1846, 471, 348, 490)
@@ -546,16 +556,16 @@ visible = false
z_index = -10 z_index = -10
y_sort_enabled = true y_sort_enabled = true
position = Vector2(23, 378.5) position = Vector2(23, 378.5)
texture = ExtResource("4_27bwy") texture = ExtResource("4_nc3ef")
offset = Vector2(0, -296) offset = Vector2(0, -296)
region_enabled = true region_enabled = true
region_rect = Rect2(2748, 432, 174, 191) region_rect = Rect2(2748, 432, 174, 191)
[node name="Vesna" parent="." instance=ExtResource("15_7a68a")] [node name="Vesna" parent="." instance=ExtResource("26_yq173")]
y_sort_enabled = false y_sort_enabled = false
position = Vector2(-920, 319) position = Vector2(-4473, 319)
[node name="Yeli" parent="." instance=ExtResource("16_dhsxs")] [node name="Yeli" parent="." instance=ExtResource("27_pfr1s")]
z_index = 0 z_index = 0
y_sort_enabled = false y_sort_enabled = false
position = Vector2(-2841, 198) position = Vector2(-2841, 198)
@@ -575,11 +585,11 @@ position = Vector2(-224, 373)
position = Vector2(-565, 464) position = Vector2(-565, 464)
[node name="dialogic_toggle" type="Node2D" parent="Yeli"] [node name="dialogic_toggle" type="Node2D" parent="Yeli"]
script = ExtResource("17_k0k8c") script = ExtResource("28_l3q6o")
[node name="Beetroot Quest trigger" type="Node2D" parent="Yeli"] [node name="Beetroot Quest trigger" type="Node2D" parent="Yeli"]
script = ExtResource("21_blyw3") script = ExtResource("29_6elg7")
questResource = ExtResource("22_yd2gv") questResource = ExtResource("30_pd0e4")
toStatus = 1 toStatus = 1
makeActive = true makeActive = true
@@ -592,14 +602,18 @@ limit_top = -1050
limit_right = 1400 limit_right = 1400
limit_bottom = 1150 limit_bottom = 1150
editor_draw_limits = true editor_draw_limits = true
script = ExtResource("18_dw4nn") script = ExtResource("31_x6an5")
_followNode = NodePath("../Vesna/CharacterBody2D") _followNode = NodePath("../Vesna/CharacterBody2D")
[node name="CanvasLayer" parent="." instance=ExtResource("24_yd2gv")] [node name="CanvasLayer" parent="." instance=ExtResource("32_i4hb6")]
[connection signal="Interacted" from="BackWall/Room01PechkaDoor/InteractionArea" to="BackWall/Room01PechkaDoor/InteractionArea" method="ToggleActive"] [connection signal="Interacted" from="BackWall/Room01PechkaDoor/InteractionArea" to="BackWall/Room01PechkaDoor/InteractionArea" method="ToggleActive"]
[connection signal="Interacted" from="BackWall/Room01PechkaDoor/InteractionArea" to="BackWall/Room assets/hand" method="PlayAnimation"] [connection signal="Interacted" from="BackWall/Room01PechkaDoor/InteractionArea" to="BackWall/Room assets/hand" method="PlayAnimation"]
[connection signal="Interacted" from="BackWall/Bench/Katze/InteractionArea" to="BackWall/Bench/Katze/AudioStreamPlayer2D" method="PlayOneShot"] [connection signal="Interacted" from="BackWall/Bench/Katze/InteractionArea" to="BackWall/Bench/Katze/AudioStreamPlayer2D" method="PlayOneShot"]
[connection signal="Interacted" from="BackWall/Bench/Katze/InteractionArea" to="BackWall/Bench/Katze/dialogic overlay starter" method="ToggleDialogue"]
[connection signal="Dialogue" from="BackWall/Bench/Katze/dialogic overlay starter" to="BackWall/Bench/Katze/dialogic overlay starter/dialogic starter" method="open"]
[connection signal="timelineEnded" from="BackWall/Bench/Katze/dialogic overlay starter/dialogic starter" to="BackWall/Bench/Katze/InteractionArea" method="SetActiveTrue"]
[connection signal="timelineStarted" from="BackWall/Bench/Katze/dialogic overlay starter/dialogic starter" to="BackWall/Bench/Katze/InteractionArea" method="SetActiveFalse"]
[connection signal="InteractedTool" from="BackWall/Doors/Door_Kitchen/KitchendoorInteraction" to="." method="LoadSceneAtIndex"] [connection signal="InteractedTool" from="BackWall/Doors/Door_Kitchen/KitchendoorInteraction" to="." method="LoadSceneAtIndex"]
[connection signal="InteractedTool" from="BackWall/Doors/Door_Outside/OutsideDoor" to="." method="LoadSceneAtIndex"] [connection signal="InteractedTool" from="BackWall/Doors/Door_Outside/OutsideDoor" to="." method="LoadSceneAtIndex"]
[connection signal="InteractedTool" from="BackWall/Doors/Door_Bedroom/VesnasRoomDoor" to="." method="LoadSceneAtIndex"] [connection signal="InteractedTool" from="BackWall/Doors/Door_Bedroom/VesnasRoomDoor" to="." method="LoadSceneAtIndex"]
@@ -20,7 +20,7 @@ radius = 300.0
z_index = 1 z_index = 1
y_sort_enabled = true y_sort_enabled = true
script = ExtResource("1_ftmt4") script = ExtResource("1_ftmt4")
_sceneNamesToLoad = PackedStringArray("res://scenes/Babushka_scene_indoor_common_room.tscn") _sceneNamesToLoad = PackedStringArray("res://scenes/scene_indoor_common_room.tscn")
[node name="Foreground" type="Node" parent="."] [node name="Foreground" type="Node" parent="."]
@@ -53,7 +53,7 @@ z_index = -100
[node name="Ceiling" type="Sprite2D" parent="Background"] [node name="Ceiling" type="Sprite2D" parent="Background"]
z_index = -100 z_index = -100
position = Vector2(-2453, -1419) position = Vector2(-2453, -1303)
scale = Vector2(2, 2) scale = Vector2(2, 2)
texture = ExtResource("2_qsw8g") texture = ExtResource("2_qsw8g")
region_enabled = true region_enabled = true
@@ -61,7 +61,7 @@ region_rect = Rect2(0, 1749.6222, 3840, 358.11316)
[node name="WallUpper" type="Sprite2D" parent="Background"] [node name="WallUpper" type="Sprite2D" parent="Background"]
z_index = -100 z_index = -100
position = Vector2(-2469, -969) position = Vector2(-2469, -975)
scale = Vector2(26, 2) scale = Vector2(26, 2)
texture = ExtResource("2_qsw8g") texture = ExtResource("2_qsw8g")
region_enabled = true region_enabled = true
@@ -1,11 +1,13 @@
[gd_scene load_steps=16 format=3 uid="uid://ceaa2qj2bmw43"] [gd_scene load_steps=18 format=3 uid="uid://ceaa2qj2bmw43"]
[ext_resource type="Script" uid="uid://cssdu8viimwm6" path="res://scripts/CSharp/Common/SceneTransition.cs" id="1_c6eln"] [ext_resource type="Script" uid="uid://cssdu8viimwm6" path="res://scripts/CSharp/Common/SceneTransition.cs" id="1_c6eln"]
[ext_resource type="Texture2D" uid="uid://cugtxcfuds31r" path="res://art/indoor/Babushka_bg_01.png" id="2_j25a2"] [ext_resource type="Texture2D" uid="uid://cugtxcfuds31r" path="res://art/indoor/Babushka_bg_01.png" id="2_j25a2"]
[ext_resource type="Script" uid="uid://cldtt4atgymm5" path="res://scripts/CSharp/Common/Quest/QuestTrigger.cs" id="8_j25a2"] [ext_resource type="Script" uid="uid://cldtt4atgymm5" path="res://scripts/CSharp/Common/Quest/QuestTrigger.cs" id="8_j25a2"]
[ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="8_phqdf"] [ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="8_phqdf"]
[ext_resource type="Resource" uid="uid://csj15gnlx1jmx" path="res://resources/quests/demo/8_goto_bed.tres" id="9_heyef"] [ext_resource type="Resource" uid="uid://csj15gnlx1jmx" path="res://resources/quests/demo/8_goto_bed.tres" id="9_heyef"]
[ext_resource type="Texture2D" uid="uid://s1yoemhrupwe" path="res://art/indoor/vesna_indoor_bed.png" id="10_hryl5"]
[ext_resource type="Script" uid="uid://puw74w6lmcvl" path="res://scripts/CSharp/Common/Fight/NightStarter.cs" id="10_j25a2"] [ext_resource type="Script" uid="uid://puw74w6lmcvl" path="res://scripts/CSharp/Common/Fight/NightStarter.cs" id="10_j25a2"]
[ext_resource type="Texture2D" uid="uid://dnlhlf1mx01h5" path="res://art/indoor/vesna_indoor_door.png" id="11_axs81"]
[ext_resource type="Script" uid="uid://jg4jryfus3bw" path="res://scripts/CSharp/Common/DayAndNight/DayAndNightHelper.cs" id="11_heyef"] [ext_resource type="Script" uid="uid://jg4jryfus3bw" path="res://scripts/CSharp/Common/DayAndNight/DayAndNightHelper.cs" id="11_heyef"]
[ext_resource type="Texture2D" uid="uid://cop1vjvhwlsec" path="res://art/indoor/room export/Room_01_shelf.png" id="13_11fdt"] [ext_resource type="Texture2D" uid="uid://cop1vjvhwlsec" path="res://art/indoor/room export/Room_01_shelf.png" id="13_11fdt"]
[ext_resource type="PackedScene" uid="uid://c25udixd5m6l0" path="res://prefabs/characters/Vesna.tscn" id="18_3gevq"] [ext_resource type="PackedScene" uid="uid://c25udixd5m6l0" path="res://prefabs/characters/Vesna.tscn" id="18_3gevq"]
@@ -30,7 +32,7 @@ radius = 509.071
[node name="VesnasRoom" type="Node2D"] [node name="VesnasRoom" type="Node2D"]
y_sort_enabled = true y_sort_enabled = true
script = ExtResource("1_c6eln") script = ExtResource("1_c6eln")
_sceneNamesToLoad = PackedStringArray("res://scenes/Babushka_scene_indoor_common_room.tscn", "res://scenes/Babushka_scene_fight_world_room.tscn") _sceneNamesToLoad = PackedStringArray("res://scenes/scene_indoor_common_room.tscn", "res://scenes/scene_fight_world_room.tscn")
[node name="Colliders" type="Node2D" parent="."] [node name="Colliders" type="Node2D" parent="."]
position = Vector2(1297, 5292) position = Vector2(1297, 5292)
@@ -102,8 +104,9 @@ _followNode = NodePath("../Vesna/CharacterBody2D")
[node name="CanvasLayer" parent="." instance=ExtResource("24_xwo8y")] [node name="CanvasLayer" parent="." instance=ExtResource("24_xwo8y")]
[node name="BedInteraction" parent="." instance=ExtResource("8_phqdf")] [node name="BedInteraction" parent="." node_paths=PackedStringArray("_spritesToOutline") instance=ExtResource("8_phqdf")]
position = Vector2(-1415, 489) position = Vector2(-1415, 489)
_spritesToOutline = [NodePath("Bedsprite")]
_id = 1 _id = 1
[node name="CollisionShape3D" parent="BedInteraction/Area2D" index="0"] [node name="CollisionShape3D" parent="BedInteraction/Area2D" index="0"]
@@ -115,13 +118,30 @@ script = ExtResource("8_j25a2")
questResource = ExtResource("9_heyef") questResource = ExtResource("9_heyef")
toStatus = 2 toStatus = 2
[node name="DoorInteraction" parent="." instance=ExtResource("8_phqdf")] [node name="Bedsprite" type="Sprite2D" parent="BedInteraction"]
z_index = -99
position = Vector2(4925, -967)
scale = Vector2(2, 2)
texture = ExtResource("10_hryl5")
offset = Vector2(-2768, 264)
region_rect = Rect2(36.702454, 566.3165, 492.73346, 422.25665)
[node name="DoorInteraction" parent="." node_paths=PackedStringArray("_spritesToOutline") instance=ExtResource("8_phqdf")]
position = Vector2(777, 201) position = Vector2(777, 201)
_spritesToOutline = [NodePath("Doorsprite")]
_id = 0 _id = 0
[node name="CollisionShape3D" parent="DoorInteraction/Area2D" index="0"] [node name="CollisionShape3D" parent="DoorInteraction/Area2D" index="0"]
shape = SubResource("CircleShape2D_2spkc") shape = SubResource("CircleShape2D_2spkc")
[node name="Doorsprite" type="Sprite2D" parent="DoorInteraction"]
z_index = -99
position = Vector2(5559, -961)
scale = Vector2(2, 2)
texture = ExtResource("11_axs81")
offset = Vector2(-2768, 264)
region_rect = Rect2(1517.5891, 258.72107, 356.62732, 741.81134)
[node name="NightStarter" type="Node" parent="."] [node name="NightStarter" type="Node" parent="."]
script = ExtResource("10_j25a2") script = ExtResource("10_j25a2")
_sceneIndexToLoad = 1 _sceneIndexToLoad = 1
@@ -1,4 +1,4 @@
[gd_scene load_steps=99 format=3 uid="uid://b3ibx4resa1f3"] [gd_scene load_steps=100 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://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"] [ext_resource type="Script" uid="uid://bqomwxclsbhd3" path="res://scripts/CSharp/Common/Camera/CameraController.cs" id="2_4ktoi"]
@@ -42,7 +42,9 @@
[ext_resource type="PackedScene" uid="uid://dpbbroif2tnil" path="res://prefabs/interactions/generic_item_on_ground_2d.tscn" id="43_dr6bm"] [ext_resource type="PackedScene" uid="uid://dpbbroif2tnil" path="res://prefabs/interactions/generic_item_on_ground_2d.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://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="Texture2D" uid="uid://d3dwl6ph0pu1d" path="res://art/nature/grass/grass-6.png" id="44_jgrpl"]
[ext_resource type="Script" uid="uid://dnipeibppjirs" path="res://scripts/CSharp/Common/NPC/DialogicOverlayStarter.cs" id="44_m6p1o"]
[ext_resource type="Texture2D" uid="uid://dmo21h14toxfu" path="res://art/indoor/indoor outdoor/domovoi.png" id="44_njxly"] [ext_resource type="Texture2D" uid="uid://dmo21h14toxfu" path="res://art/indoor/indoor outdoor/domovoi.png" id="44_njxly"]
[ext_resource type="Script" uid="uid://d2486x6upmwqq" path="res://scripts/GdScript/dialogic_starter.gd" id="45_1ly1s"]
[ext_resource type="Texture2D" uid="uid://blb3agipyxnal" path="res://art/farm/farming/farmobjekte/zaun/fence_door.png" id="47_xfjh2"] [ext_resource type="Texture2D" uid="uid://blb3agipyxnal" path="res://art/farm/farming/farmobjekte/zaun/fence_door.png" id="47_xfjh2"]
[ext_resource type="PackedScene" uid="uid://cgjc4wurbgimy" path="res://prefabs/UI/Inventory/Inventory.tscn" id="52_gwhnv"] [ext_resource type="PackedScene" uid="uid://cgjc4wurbgimy" path="res://prefabs/UI/Inventory/Inventory.tscn" id="52_gwhnv"]
[ext_resource type="AudioStream" uid="uid://dku1rq5cocisg" path="res://audio/Music/Farming_90BPM_69Bars.wav" id="53_2tfpr"] [ext_resource type="AudioStream" uid="uid://dku1rq5cocisg" path="res://audio/Music/Farming_90BPM_69Bars.wav" id="53_2tfpr"]
@@ -201,10 +203,6 @@ radius = 325.2599
resource_local_to_scene = true resource_local_to_scene = true
radius = 325.2599 radius = 325.2599
[sub_resource type="CircleShape2D" id="CircleShape2D_4pibb"]
resource_local_to_scene = true
radius = 325.2599
[sub_resource type="CircleShape2D" id="CircleShape2D_dr6bm"] [sub_resource type="CircleShape2D" id="CircleShape2D_dr6bm"]
resource_local_to_scene = true resource_local_to_scene = true
radius = 335.72162 radius = 335.72162
@@ -251,7 +249,7 @@ stream_2/stream = ExtResource("63_td2xu")
[node name="BabushkaSceneBeets" type="Node2D"] [node name="BabushkaSceneBeets" type="Node2D"]
script = ExtResource("1_6krrk") script = ExtResource("1_6krrk")
_sceneNamesToLoad = PackedStringArray("res://scenes/Babushka_scene_farm_outside_2d.tscn") _sceneNamesToLoad = PackedStringArray("res://scenes/scene_farm_outside_2d.tscn")
[node name="Camera2D" type="Camera2D" parent="." node_paths=PackedStringArray("_followNode")] [node name="Camera2D" type="Camera2D" parent="." node_paths=PackedStringArray("_followNode")]
position = Vector2(3180, 1961) position = Vector2(3180, 1961)
@@ -1241,7 +1239,6 @@ region_enabled = true
region_rect = Rect2(0, 604, 248, 228) region_rect = Rect2(0, 604, 248, 228)
[node name="bush23" type="Sprite2D" parent="YSorted/Farm visuals/Static/greenery/left side"] [node name="bush23" type="Sprite2D" parent="YSorted/Farm visuals/Static/greenery/left side"]
z_index = 1
y_sort_enabled = true y_sort_enabled = true
material = SubResource("ShaderMaterial_bcdgk") material = SubResource("ShaderMaterial_bcdgk")
position = Vector2(15022, 3301) position = Vector2(15022, 3301)
@@ -1253,7 +1250,7 @@ region_rect = Rect2(1837, 651, 139, 180)
[node name="bush24" type="Sprite2D" parent="YSorted/Farm visuals/Static/greenery/left side"] [node name="bush24" type="Sprite2D" parent="YSorted/Farm visuals/Static/greenery/left side"]
modulate = Color(0.8428, 0.8771, 0.98, 1) modulate = Color(0.8428, 0.8771, 0.98, 1)
z_index = 2 z_index = -1
y_sort_enabled = true y_sort_enabled = true
material = SubResource("ShaderMaterial_bcdgk") material = SubResource("ShaderMaterial_bcdgk")
position = Vector2(15973, 3380) position = Vector2(15973, 3380)
@@ -1374,6 +1371,7 @@ region_enabled = true
region_rect = Rect2(130, 0, 201, 278) region_rect = Rect2(130, 0, 201, 278)
[node name="bush17" type="Sprite2D" parent="YSorted/Farm visuals/Static/greenery/right side"] [node name="bush17" type="Sprite2D" parent="YSorted/Farm visuals/Static/greenery/right side"]
z_index = 3
material = SubResource("ShaderMaterial_bcdgk") material = SubResource("ShaderMaterial_bcdgk")
position = Vector2(5599, 3799) position = Vector2(5599, 3799)
scale = Vector2(-2.40318, 3.59175) scale = Vector2(-2.40318, 3.59175)
@@ -1402,13 +1400,13 @@ region_enabled = true
region_rect = Rect2(1837, 651, 139, 180) region_rect = Rect2(1837, 651, 139, 180)
[node name="Sonnenblume8" type="Sprite2D" parent="YSorted/Farm visuals/Static/greenery/right side"] [node name="Sonnenblume8" type="Sprite2D" parent="YSorted/Farm visuals/Static/greenery/right side"]
z_index = 1 z_index = -5
y_sort_enabled = true y_sort_enabled = true
material = SubResource("ShaderMaterial_618my") material = SubResource("ShaderMaterial_618my")
position = Vector2(5146, 1935) position = Vector2(5187.001, 1864.0001)
scale = Vector2(0.373695, 0.388829) scale = Vector2(0.373695, 0.388829)
texture = ExtResource("38_0bsmo") texture = ExtResource("38_0bsmo")
offset = Vector2(0, -800) offset = Vector2(-109.7168, -617.4004)
region_enabled = true region_enabled = true
region_rect = Rect2(0, 0, 1440, 1576) region_rect = Rect2(0, 0, 1440, 1576)
@@ -1765,6 +1763,7 @@ metadata/SaveID = "b3b47e69-6115-4405-8da6-508b783823d2"
[node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField" index="1"] [node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField" index="1"]
visible = true visible = true
FieldState = 1
metadata/SaveID = "7a8210bf-479d-4b4c-9758-98d23e59d5d7" metadata/SaveID = "7a8210bf-479d-4b4c-9758-98d23e59d5d7"
[node name="PlantPlaceholder" parent="YSorted/Farm visuals/FieldParent/BaseField/FieldBehaviour" index="1"] [node name="PlantPlaceholder" parent="YSorted/Farm visuals/FieldParent/BaseField/FieldBehaviour" index="1"]
@@ -1777,6 +1776,7 @@ _field = NodePath("../..")
_daysWatered = 6 _daysWatered = 6
[node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField" index="7"] [node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField" index="7"]
process_mode = 4
visible = false visible = false
[node name="CollisionShape3D" parent="YSorted/Farm visuals/FieldParent/BaseField/FieldActivator/InteractionArea/Area2D" index="0"] [node name="CollisionShape3D" parent="YSorted/Farm visuals/FieldParent/BaseField/FieldActivator/InteractionArea/Area2D" index="0"]
@@ -1792,6 +1792,7 @@ metadata/SaveID = "f536efd3-3da8-4ef5-a520-570220e6c19f"
[node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField2" index="1"] [node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField2" index="1"]
visible = true visible = true
FieldState = 1
metadata/SaveID = "a1d8a0a2-c51c-4410-83c3-0edb31cbf2de" metadata/SaveID = "a1d8a0a2-c51c-4410-83c3-0edb31cbf2de"
[node name="PlantPlaceholder" parent="YSorted/Farm visuals/FieldParent/BaseField2/FieldBehaviour" index="1"] [node name="PlantPlaceholder" parent="YSorted/Farm visuals/FieldParent/BaseField2/FieldBehaviour" index="1"]
@@ -1804,6 +1805,7 @@ _field = NodePath("../..")
_daysWatered = 6 _daysWatered = 6
[node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField2" index="7"] [node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField2" index="7"]
process_mode = 4
visible = false visible = false
[node name="CollisionShape3D" parent="YSorted/Farm visuals/FieldParent/BaseField2/FieldActivator/InteractionArea/Area2D" index="0"] [node name="CollisionShape3D" parent="YSorted/Farm visuals/FieldParent/BaseField2/FieldActivator/InteractionArea/Area2D" index="0"]
@@ -1819,6 +1821,7 @@ metadata/SaveID = "14ce64d5-8a4d-43b9-a8ff-3a57725c4dc8"
[node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField3" index="1"] [node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField3" index="1"]
visible = true visible = true
FieldState = 1
metadata/SaveID = "79a65532-cb2b-4268-8eb0-8c41a3935cbb" metadata/SaveID = "79a65532-cb2b-4268-8eb0-8c41a3935cbb"
[node name="PlantPlaceholder" parent="YSorted/Farm visuals/FieldParent/BaseField3/FieldBehaviour" index="1"] [node name="PlantPlaceholder" parent="YSorted/Farm visuals/FieldParent/BaseField3/FieldBehaviour" index="1"]
@@ -1826,11 +1829,15 @@ z_index = 1
[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField3/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")] [node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField3/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
z_index = 0 z_index = 0
_state = 2 _state = 3
_field = NodePath("../..") _field = NodePath("../..")
_daysWatered = 5 _daysWatered = 5
[node name="InteractionArea" parent="YSorted/Farm visuals/FieldParent/BaseField3/FieldBehaviour" index="2"]
_active = true
[node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField3" index="7"] [node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField3" index="7"]
process_mode = 4
visible = false visible = false
[node name="CollisionShape3D" parent="YSorted/Farm visuals/FieldParent/BaseField3/FieldActivator/InteractionArea/Area2D" index="0"] [node name="CollisionShape3D" parent="YSorted/Farm visuals/FieldParent/BaseField3/FieldActivator/InteractionArea/Area2D" index="0"]
@@ -1846,7 +1853,7 @@ metadata/SaveID = "6872ce5d-6f42-47d7-97e2-a7214ff3b08c"
[node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField4" index="1"] [node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField4" index="1"]
visible = true visible = true
FieldState = 3 FieldState = 1
metadata/SaveID = "13fa64a3-01dc-4fd8-822e-0839c0da3163" metadata/SaveID = "13fa64a3-01dc-4fd8-822e-0839c0da3163"
[node name="PlantPlaceholder" parent="YSorted/Farm visuals/FieldParent/BaseField4/FieldBehaviour" index="1"] [node name="PlantPlaceholder" parent="YSorted/Farm visuals/FieldParent/BaseField4/FieldBehaviour" index="1"]
@@ -1854,11 +1861,12 @@ z_index = 1
[node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField4/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")] [node name="Beet2" parent="YSorted/Farm visuals/FieldParent/BaseField4/FieldBehaviour/PlantPlaceholder" index="0" node_paths=PackedStringArray("_field") instance=ExtResource("41_vyqmy")]
z_index = 0 z_index = 0
_state = 2 _state = 3
_field = NodePath("../..") _field = NodePath("../..")
_daysWatered = 7 _daysWatered = 7
[node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField4" index="7"] [node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField4" index="7"]
process_mode = 4
visible = false visible = false
[node name="CollisionShape3D" parent="YSorted/Farm visuals/FieldParent/BaseField4/FieldActivator/InteractionArea/Area2D" index="0"] [node name="CollisionShape3D" parent="YSorted/Farm visuals/FieldParent/BaseField4/FieldActivator/InteractionArea/Area2D" index="0"]
@@ -1874,7 +1882,7 @@ metadata/SaveID = "f163c38d-9ee0-4844-9def-479833febb4e"
[node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField5" index="1"] [node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField5" index="1"]
visible = true visible = true
FieldState = 3 FieldState = 1
metadata/SaveID = "414ecdb9-f3c4-4fb9-81bd-6ca575784f78" metadata/SaveID = "414ecdb9-f3c4-4fb9-81bd-6ca575784f78"
[node name="PlantPlaceholder" parent="YSorted/Farm visuals/FieldParent/BaseField5/FieldBehaviour" index="1"] [node name="PlantPlaceholder" parent="YSorted/Farm visuals/FieldParent/BaseField5/FieldBehaviour" index="1"]
@@ -1887,6 +1895,7 @@ _field = NodePath("../..")
_daysWatered = 6 _daysWatered = 6
[node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField5" index="7"] [node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField5" index="7"]
process_mode = 4
visible = false visible = false
[node name="CollisionShape3D" parent="YSorted/Farm visuals/FieldParent/BaseField5/FieldActivator/InteractionArea/Area2D" index="0"] [node name="CollisionShape3D" parent="YSorted/Farm visuals/FieldParent/BaseField5/FieldActivator/InteractionArea/Area2D" index="0"]
@@ -1902,7 +1911,7 @@ metadata/SaveID = "da691381-ee82-4f86-abf3-dda2c9f19337"
[node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField6" index="1"] [node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField6" index="1"]
visible = true visible = true
FieldState = 3 FieldState = 1
metadata/SaveID = "b235febb-b231-4f8c-94e9-1f9d9f115b08" metadata/SaveID = "b235febb-b231-4f8c-94e9-1f9d9f115b08"
[node name="PlantPlaceholder" parent="YSorted/Farm visuals/FieldParent/BaseField6/FieldBehaviour" index="1"] [node name="PlantPlaceholder" parent="YSorted/Farm visuals/FieldParent/BaseField6/FieldBehaviour" index="1"]
@@ -1915,6 +1924,7 @@ _field = NodePath("../..")
_daysWatered = 5 _daysWatered = 5
[node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField6" index="7"] [node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField6" index="7"]
process_mode = 4
visible = false visible = false
[node name="CollisionShape3D" parent="YSorted/Farm visuals/FieldParent/BaseField6/FieldActivator/InteractionArea/Area2D" index="0"] [node name="CollisionShape3D" parent="YSorted/Farm visuals/FieldParent/BaseField6/FieldActivator/InteractionArea/Area2D" index="0"]
@@ -1930,7 +1940,7 @@ metadata/SaveID = "8116fa8b-b164-4d39-a1ed-6cd476d18f94"
[node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField7" index="1"] [node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField7" index="1"]
visible = true visible = true
FieldState = 3 FieldState = 1
metadata/SaveID = "9ccdba91-812a-4c13-9ee0-12472e174fc9" metadata/SaveID = "9ccdba91-812a-4c13-9ee0-12472e174fc9"
[node name="PlantPlaceholder" parent="YSorted/Farm visuals/FieldParent/BaseField7/FieldBehaviour" index="1"] [node name="PlantPlaceholder" parent="YSorted/Farm visuals/FieldParent/BaseField7/FieldBehaviour" index="1"]
@@ -1943,6 +1953,7 @@ _field = NodePath("../..")
_daysWatered = 6 _daysWatered = 6
[node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField7" index="7"] [node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField7" index="7"]
process_mode = 4
visible = false visible = false
[node name="CollisionShape3D" parent="YSorted/Farm visuals/FieldParent/BaseField7/FieldActivator/InteractionArea/Area2D" index="0"] [node name="CollisionShape3D" parent="YSorted/Farm visuals/FieldParent/BaseField7/FieldActivator/InteractionArea/Area2D" index="0"]
@@ -1958,7 +1969,7 @@ metadata/SaveID = "5298f423-4c3b-45b5-94fb-d4aef36bac21"
[node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField8" index="1"] [node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField8" index="1"]
visible = true visible = true
FieldState = 3 FieldState = 1
metadata/SaveID = "da44e54a-0b76-4888-ad8b-782a9d146fa3" metadata/SaveID = "da44e54a-0b76-4888-ad8b-782a9d146fa3"
[node name="PlantPlaceholder" parent="YSorted/Farm visuals/FieldParent/BaseField8/FieldBehaviour" index="1"] [node name="PlantPlaceholder" parent="YSorted/Farm visuals/FieldParent/BaseField8/FieldBehaviour" index="1"]
@@ -1971,6 +1982,7 @@ _field = NodePath("../..")
_daysWatered = 6 _daysWatered = 6
[node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField8" index="7"] [node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField8" index="7"]
process_mode = 4
visible = false visible = false
[node name="CollisionShape3D" parent="YSorted/Farm visuals/FieldParent/BaseField8/FieldActivator/InteractionArea/Area2D" index="0"] [node name="CollisionShape3D" parent="YSorted/Farm visuals/FieldParent/BaseField8/FieldActivator/InteractionArea/Area2D" index="0"]
@@ -1979,23 +1991,28 @@ shape = SubResource("CircleShape2D_v10dc")
[node name="BaseField9" parent="YSorted/Farm visuals/FieldParent" instance=ExtResource("40_efblm")] [node name="BaseField9" parent="YSorted/Farm visuals/FieldParent" instance=ExtResource("40_efblm")]
z_index = -1 z_index = -1
y_sort_enabled = true y_sort_enabled = true
position = Vector2(5317, 3208.83) position = Vector2(5368, 3226.9458)
scale = Vector2(1, 1.00622) scale = Vector2(1, 1.00622)
Payload = 8 Payload = 7
metadata/SaveID = "0de8dc13-5851-4471-be35-309cd6687ebc" metadata/SaveID = ""
[node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField9" index="1"] [node name="FieldBehaviour" parent="YSorted/Farm visuals/FieldParent/BaseField9" index="1"]
visible = true visible = true
metadata/SaveID = "9919b294-04a1-4a16-9783-38c8aa0e291c" FieldState = 1
metadata/SaveID = "da44e54a-0b76-4888-ad8b-782a9d146fa3"
[node name="PlantPlaceholder" parent="YSorted/Farm visuals/FieldParent/BaseField9/FieldBehaviour" index="1"] [node name="PlantPlaceholder" parent="YSorted/Farm visuals/FieldParent/BaseField9/FieldBehaviour" index="1"]
z_index = 1 z_index = 1
[node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField9" index="7"] [node name="FieldActivator" parent="YSorted/Farm visuals/FieldParent/BaseField9" index="7"]
process_mode = 4
visible = false visible = false
[node name="InteractionArea" parent="YSorted/Farm visuals/FieldParent/BaseField9/FieldActivator" index="0" node_paths=PackedStringArray("_spritesToOutline")]
_spritesToOutline = [NodePath("../../../BaseField8/OutlineSprite")]
[node name="CollisionShape3D" parent="YSorted/Farm visuals/FieldParent/BaseField9/FieldActivator/InteractionArea/Area2D" index="0"] [node name="CollisionShape3D" parent="YSorted/Farm visuals/FieldParent/BaseField9/FieldActivator/InteractionArea/Area2D" index="0"]
shape = SubResource("CircleShape2D_4pibb") shape = SubResource("CircleShape2D_v10dc")
[node name="Blocker" type="Node2D" parent="YSorted"] [node name="Blocker" type="Node2D" parent="YSorted"]
@@ -2005,7 +2022,7 @@ _spritesToOutline = [NodePath("Fence Door2")]
_id = 0 _id = 0
[node name="CollisionShape3D" parent="YSorted/Blocker/BackToFarm/Area2D" index="0"] [node name="CollisionShape3D" parent="YSorted/Blocker/BackToFarm/Area2D" index="0"]
position = Vector2(-37, -208) position = Vector2(-37, -303)
shape = SubResource("CircleShape2D_dr6bm") shape = SubResource("CircleShape2D_dr6bm")
[node name="Fence Door2" type="Sprite2D" parent="YSorted/Blocker/BackToFarm"] [node name="Fence Door2" type="Sprite2D" parent="YSorted/Blocker/BackToFarm"]
@@ -2061,6 +2078,17 @@ texture = ExtResource("44_njxly")
region_enabled = true region_enabled = true
region_rect = Rect2(65, 149, 223, 375) region_rect = Rect2(65, 149, 223, 375)
[node name="InteractionArea" parent="YSorted/domovoi" node_paths=PackedStringArray("_spritesToOutline") instance=ExtResource("31_xcb8u")]
_spritesToOutline = [NodePath("..")]
[node name="dialogic overlay starter" type="Node2D" parent="YSorted/domovoi"]
script = ExtResource("44_m6p1o")
_timelinesToPlay = PackedStringArray("domovoi_tut")
_startOnReady = false
[node name="dialogic starter" type="Node" parent="YSorted/domovoi/dialogic overlay starter"]
script = ExtResource("45_1ly1s")
[node name="WateringCan" parent="YSorted" instance=ExtResource("43_dr6bm")] [node name="WateringCan" parent="YSorted" instance=ExtResource("43_dr6bm")]
position = Vector2(5220, 2108) position = Vector2(5220, 2108)
@@ -2148,6 +2176,10 @@ script = ExtResource("59_njxly")
[connection signal="FilledWateringCan" from="YSorted/Vesna" to="Audio/SFX/FillWater SFX2" method="PlayOneShot"] [connection signal="FilledWateringCan" from="YSorted/Vesna" to="Audio/SFX/FillWater SFX2" method="PlayOneShot"]
[connection signal="InteractedTool" from="YSorted/Brünnen/InteractionArea" to="YSorted/Vesna" method="TryFillWateringCan"] [connection signal="InteractedTool" from="YSorted/Brünnen/InteractionArea" to="YSorted/Vesna" method="TryFillWateringCan"]
[connection signal="InteractedTool" from="YSorted/Blocker/BackToFarm" to="." method="LoadSceneAtIndex"] [connection signal="InteractedTool" from="YSorted/Blocker/BackToFarm" to="." method="LoadSceneAtIndex"]
[connection signal="Interacted" from="YSorted/domovoi/InteractionArea" to="YSorted/domovoi/dialogic overlay starter" method="ToggleDialogue"]
[connection signal="Dialogue" from="YSorted/domovoi/dialogic overlay starter" to="YSorted/domovoi/dialogic overlay starter/dialogic starter" method="open"]
[connection signal="timelineEnded" from="YSorted/domovoi/dialogic overlay starter/dialogic starter" to="YSorted/domovoi/InteractionArea" method="SetActiveTrue"]
[connection signal="timelineStarted" from="YSorted/domovoi/dialogic overlay starter/dialogic starter" to="YSorted/domovoi/InteractionArea" method="SetActiveFalse"]
[connection signal="finished" from="Audio/Background Music Ramp up" to="Audio/Background Music loop" method="PlayFromOffset"] [connection signal="finished" from="Audio/Background Music Ramp up" to="Audio/Background Music loop" method="PlayFromOffset"]
[connection signal="tree_entered" from="SceneNameSetter" to="SceneNameSetter" method="Set"] [connection signal="tree_entered" from="SceneNameSetter" to="SceneNameSetter" method="Set"]
@@ -2155,22 +2187,31 @@ script = ExtResource("59_njxly")
[editable path="YSorted/Brünnen/InteractionArea"] [editable path="YSorted/Brünnen/InteractionArea"]
[editable path="YSorted/Farm visuals/FieldParent/BaseField"] [editable path="YSorted/Farm visuals/FieldParent/BaseField"]
[editable path="YSorted/Farm visuals/FieldParent/BaseField/FieldActivator/InteractionArea"] [editable path="YSorted/Farm visuals/FieldParent/BaseField/FieldActivator/InteractionArea"]
[editable path="YSorted/Farm visuals/FieldParent/BaseField/SaveSystem"]
[editable path="YSorted/Farm visuals/FieldParent/BaseField2"] [editable path="YSorted/Farm visuals/FieldParent/BaseField2"]
[editable path="YSorted/Farm visuals/FieldParent/BaseField2/FieldActivator/InteractionArea"] [editable path="YSorted/Farm visuals/FieldParent/BaseField2/FieldActivator/InteractionArea"]
[editable path="YSorted/Farm visuals/FieldParent/BaseField2/SaveSystem"]
[editable path="YSorted/Farm visuals/FieldParent/BaseField3"] [editable path="YSorted/Farm visuals/FieldParent/BaseField3"]
[editable path="YSorted/Farm visuals/FieldParent/BaseField3/FieldActivator/InteractionArea"] [editable path="YSorted/Farm visuals/FieldParent/BaseField3/FieldActivator/InteractionArea"]
[editable path="YSorted/Farm visuals/FieldParent/BaseField3/SaveSystem"]
[editable path="YSorted/Farm visuals/FieldParent/BaseField4"] [editable path="YSorted/Farm visuals/FieldParent/BaseField4"]
[editable path="YSorted/Farm visuals/FieldParent/BaseField4/FieldActivator/InteractionArea"] [editable path="YSorted/Farm visuals/FieldParent/BaseField4/FieldActivator/InteractionArea"]
[editable path="YSorted/Farm visuals/FieldParent/BaseField4/SaveSystem"]
[editable path="YSorted/Farm visuals/FieldParent/BaseField5"] [editable path="YSorted/Farm visuals/FieldParent/BaseField5"]
[editable path="YSorted/Farm visuals/FieldParent/BaseField5/FieldActivator/InteractionArea"] [editable path="YSorted/Farm visuals/FieldParent/BaseField5/FieldActivator/InteractionArea"]
[editable path="YSorted/Farm visuals/FieldParent/BaseField5/SaveSystem"]
[editable path="YSorted/Farm visuals/FieldParent/BaseField6"] [editable path="YSorted/Farm visuals/FieldParent/BaseField6"]
[editable path="YSorted/Farm visuals/FieldParent/BaseField6/FieldActivator/InteractionArea"] [editable path="YSorted/Farm visuals/FieldParent/BaseField6/FieldActivator/InteractionArea"]
[editable path="YSorted/Farm visuals/FieldParent/BaseField6/SaveSystem"]
[editable path="YSorted/Farm visuals/FieldParent/BaseField7"] [editable path="YSorted/Farm visuals/FieldParent/BaseField7"]
[editable path="YSorted/Farm visuals/FieldParent/BaseField7/FieldActivator/InteractionArea"] [editable path="YSorted/Farm visuals/FieldParent/BaseField7/FieldActivator/InteractionArea"]
[editable path="YSorted/Farm visuals/FieldParent/BaseField7/SaveSystem"]
[editable path="YSorted/Farm visuals/FieldParent/BaseField8"] [editable path="YSorted/Farm visuals/FieldParent/BaseField8"]
[editable path="YSorted/Farm visuals/FieldParent/BaseField8/FieldActivator/InteractionArea"] [editable path="YSorted/Farm visuals/FieldParent/BaseField8/FieldActivator/InteractionArea"]
[editable path="YSorted/Farm visuals/FieldParent/BaseField8/SaveSystem"]
[editable path="YSorted/Farm visuals/FieldParent/BaseField9"] [editable path="YSorted/Farm visuals/FieldParent/BaseField9"]
[editable path="YSorted/Farm visuals/FieldParent/BaseField9/FieldActivator/InteractionArea"] [editable path="YSorted/Farm visuals/FieldParent/BaseField9/FieldActivator/InteractionArea"]
[editable path="YSorted/Farm visuals/FieldParent/BaseField9/SaveSystem"]
[editable path="YSorted/Blocker/BackToFarm"] [editable path="YSorted/Blocker/BackToFarm"]
[editable path="YSorted/RakeGenericPickup"] [editable path="YSorted/RakeGenericPickup"]
[editable path="YSorted/RakeGenericPickup/PickupInteractionArea"] [editable path="YSorted/RakeGenericPickup/PickupInteractionArea"]
@@ -7,7 +7,7 @@
[node name="BabushkaSceneStartMenu" type="Node2D"] [node name="BabushkaSceneStartMenu" type="Node2D"]
script = ExtResource("1_fj2fh") script = ExtResource("1_fj2fh")
_sceneNamesToLoad = PackedStringArray("res://scenes/Babushka_scene_farm_outside_2d.tscn") _sceneNamesToLoad = PackedStringArray("res://scenes/scene_disclaimer.tscn")
[node name="CanvasLayer" type="CanvasLayer" parent="."] [node name="CanvasLayer" type="CanvasLayer" parent="."]
@@ -1,6 +1,8 @@
using System.Threading.Tasks; using System.Threading.Tasks;
using Babushka.scripts.CSharp.Common.Inventory; using Babushka.scripts.CSharp.Common.Inventory;
using Babushka.scripts.CSharp.Common.Services; using Babushka.scripts.CSharp.Common.Services;
using Babushka.scripts.CSharp.GameEntity.Entities;
using Babushka.scripts.CSharp.GameEntity.Management;
using Godot; using Godot;
namespace Babushka.scripts.CSharp.Common.Animation; namespace Babushka.scripts.CSharp.Common.Animation;
@@ -27,12 +29,12 @@ public partial class VesnaAnimations : Node
private void SetupSubscriptions() private void SetupSubscriptions()
{ {
InventoryManager.Instance.playerInventory.InventoryContentsChanged += HandleNewItemInInventory; EntityManager.Instance.GetUniqueEntity<VesnaEntity>().inventory.InventoryContentsChanged += HandleNewItemInInventory;
} }
public override void _ExitTree() public override void _ExitTree()
{ {
InventoryManager.Instance.playerInventory.InventoryContentsChanged -= HandleNewItemInInventory; EntityManager.Instance.GetUniqueEntity<VesnaEntity>().inventory.InventoryContentsChanged -= HandleNewItemInInventory;
} }
private void HandleNewItemInInventory() private void HandleNewItemInInventory()
@@ -5,26 +5,8 @@ namespace Babushka.scripts.CSharp.Common.Camera;
public partial class CameraController : Camera2D public partial class CameraController : Camera2D
{ {
#region Singleton ( Contains _EnterTree() ) // TODO: use autoload or other solution
public static CameraController Instance { get; private set; } = null!;
public override void _EnterTree()
{
Instance = this;
}
#endregion
[Export] private Node2D _followNode;
public FightHappening? fightToShow;
public override void _Process(double delta) public override void _Process(double delta)
{ {
this.GlobalPosition = /*fightToShow?.camPositionNode.GlobalPosition ??*/ _followNode.GlobalPosition; GlobalPosition = CameraTarget.GetActiveTarget().GlobalPosition;
} }
} }
@@ -0,0 +1,29 @@
using System.Collections.Generic;
using System.Linq;
using Godot;
namespace Babushka.scripts.CSharp.Common.Camera;
public partial class CameraTarget : Node2D
{
private static readonly List<CameraTarget> AllTargets = new();
public static CameraTarget GetActiveTarget() // Called every frame. Maybe needs performance optimization in the future
{
return AllTargets
.OrderByDescending(t => t.Priority)
.First();
}
[Export] public float Priority { get; set; }
public override void _EnterTree()
{
AllTargets.Add(this);
}
public override void _ExitTree()
{
AllTargets.Remove(this);
}
}
@@ -0,0 +1 @@
uid://ccdhx1lt4n271
@@ -7,4 +7,17 @@ namespace Babushka.scripts.CSharp.Common.CharacterControls;
/// </summary> /// </summary>
public partial class DetectableInteractionArea : Area2D public partial class DetectableInteractionArea : Area2D
{ {
[Export] public InteractionArea2D interactionArea2D;
public void InteractionAreaSelectionChanged(Variant instanceID)
{
if (instanceID.AsString() == GetInstanceId().ToString())
{
interactionArea2D.HighlightInteractable();
}
else
{
interactionArea2D.ResetHighlight();
}
}
} }
@@ -7,7 +7,8 @@ namespace Babushka.scripts.CSharp.Common.CharacterControls;
/// </summary> /// </summary>
public partial class DetectionCross : Node2D public partial class DetectionCross : Node2D
{ {
[Export] private Detector _detector; [Export] private Detector _collider;
[Export] private ShapeCast2D _shapeCast2D;
[Export] private float _xOffset; [Export] private float _xOffset;
[Export] private float _yOffset; [Export] private float _yOffset;
@@ -17,6 +18,8 @@ public partial class DetectionCross : Node2D
/// <param name="direction"></param> /// <param name="direction"></param>
public void SetDirection(Vector2 direction) public void SetDirection(Vector2 direction)
{ {
_detector.Position = new Vector2(direction.X * _xOffset, direction.Y * _yOffset); Vector2 newPos = new Vector2(direction.X * _xOffset, direction.Y * _yOffset);
_collider.Position = newPos;
_shapeCast2D.TargetPosition = newPos;
} }
} }
@@ -1,4 +1,6 @@
using System.Collections.Generic;
using Babushka.scripts.CSharp.Common.Services; using Babushka.scripts.CSharp.Common.Services;
using Babushka.scripts.CSharp.Low_Code.Variables;
using Godot; using Godot;
namespace Babushka.scripts.CSharp.Common.CharacterControls; namespace Babushka.scripts.CSharp.Common.CharacterControls;
@@ -8,18 +10,11 @@ namespace Babushka.scripts.CSharp.Common.CharacterControls;
/// </summary> /// </summary>
public partial class Detector : Area2D public partial class Detector : Area2D
{ {
[Export] private bool _active = true; [Export] private bool _active = true;
[Export] private ShapeCast2D _shapeCast2D;
[Export] private VariableResource _itemToTriggerResource;
/// <summary> private List<ulong> _areasInDetector = new();
/// Called when entering an interactionArea node.
/// </summary>
[Signal] public delegate void InteractableEnteredEventHandler();
/// <summary>
/// Called when exiting an interactionArea node.
/// </summary>
[Signal] public delegate void InteractableExitedEventHandler();
public bool IsActive public bool IsActive
{ {
@@ -41,29 +36,62 @@ public partial class Detector : Area2D
/// Called every time this node enters an Area2D. /// Called every time this node enters an Area2D.
/// </summary> /// </summary>
/// <param name="area"></param> /// <param name="area"></param>
public void OnEnteredInteractable(Node area) public void OnEnteredInteractable(Area2D area)
{ {
if (!_active || !InputService.Instance.InputEnabled) if (!_active || !InputService.Instance.InputEnabled)
return; return;
if (area is DetectableInteractionArea interactionArea2D) PopulateList();
{ CalculateClosestInteractable();
EmitSignal(SignalName.InteractableEntered);
}
} }
/// <summary> /// <summary>
/// Called whenever this node exits an Area2D. /// Called whenever this node exits an Area2D.
/// </summary> /// </summary>
/// <param name="area"></param> /// <param name="area"></param>
public void OnExitedInteractable(Node area) public void OnExitedInteractable(Area2D area)
{ {
if (!_active || !InputService.Instance.InputEnabled) if (!_active || !InputService.Instance.InputEnabled)
return; return;
if (area is DetectableInteractionArea interactionArea2D) PopulateList();
CalculateClosestInteractable();
}
private void PopulateList()
{ {
EmitSignal(SignalName.InteractableExited); // repopulate the list of areas in the detector to account for enabled / disabled areas
var currentOverlap = GetOverlappingAreas();
_areasInDetector = new List<ulong>();
foreach (var area2D in currentOverlap)
{
if (area2D is DetectableInteractionArea detectable)
{
ulong id = detectable.GetInstanceId();
_areasInDetector.Add(id);
} }
} }
}
private void CalculateClosestInteractable()
{
float smallestDistance = float.MaxValue;
string closestInteractable = null;
foreach (var area in _areasInDetector)
{
Area2D? area2D = InstanceFromId(area) as Area2D;
if(area2D == null)
continue;
float distance = area2D.GlobalPosition.DistanceSquaredTo(ToGlobal(_shapeCast2D.TargetPosition));
if (distance < smallestDistance)
{
closestInteractable = area.ToString();
smallestDistance = distance;
}
}
_itemToTriggerResource.Payload = closestInteractable;
}
} }
@@ -1,5 +1,6 @@
using System.Linq; using System.Linq;
using Babushka.scripts.CSharp.Common.Services; using Babushka.scripts.CSharp.Common.Services;
using Babushka.scripts.CSharp.Low_Code.Variables;
using Godot; using Godot;
namespace Babushka.scripts.CSharp.Common.CharacterControls; namespace Babushka.scripts.CSharp.Common.CharacterControls;
@@ -7,6 +8,7 @@ namespace Babushka.scripts.CSharp.Common.CharacterControls;
public partial class InteractionArea2D : Node2D public partial class InteractionArea2D : Node2D
{ {
[ExportGroup("Settings")] [ExportGroup("Settings")]
[Export] private VariableListener _selectionChangeListener;
[Export] private Area2D _area; [Export] private Area2D _area;
[Export] private Label _label; [Export] private Label _label;
[Export] private bool _active = true; [Export] private bool _active = true;
@@ -17,6 +19,7 @@ public partial class InteractionArea2D : Node2D
[Export] private int _id = -1; // TODO: remove [Export] private int _id = -1; // TODO: remove
private Material[] _backupMaterials; private Material[] _backupMaterials;
private bool _initializationComplete;
[Signal] public delegate void InteractedToolEventHandler(int id); // TODO: remove [Signal] public delegate void InteractedToolEventHandler(int id); // TODO: remove
@@ -25,8 +28,18 @@ public partial class InteractionArea2D : Node2D
public bool IsActive public bool IsActive
{ {
get => _active; get => _active;
set => _active = value; set
{
ProcessMode = value ? ProcessModeEnum.Inherit : ProcessModeEnum.Disabled;
Visible = value;
_selectionChangeListener.ProcessMode = value ? ProcessModeEnum.Inherit : ProcessModeEnum.Disabled;
_active = value;
if(!_active && _initializationComplete)
ResetHighlight();
} }
}
public bool IsSelectedByDetector { get; set; } = false;
public void SetActiveInverse(bool active) public void SetActiveInverse(bool active)
{ {
@@ -38,11 +51,14 @@ public partial class InteractionArea2D : Node2D
if (_useOutline) if (_useOutline)
{ {
_backupMaterials = _spritesToOutline.Select(s => s.Material).ToArray(); _backupMaterials = _spritesToOutline.Select(s => s.Material).ToArray();
_initializationComplete = true;
} }
} }
public void OnPlayerEntered(Node2D player) public void HighlightInteractable()
{ {
IsSelectedByDetector = true;
if (!_active || !InputService.Instance.InputEnabled) if (!_active || !InputService.Instance.InputEnabled)
return; return;
@@ -58,8 +74,9 @@ public partial class InteractionArea2D : Node2D
} }
} }
public void OnPlayerExited(Node2D player) public void ResetHighlight()
{ {
IsSelectedByDetector = false;
_label.Hide(); _label.Hide();
if (!_useOutline) if (!_useOutline)
@@ -77,6 +94,9 @@ public partial class InteractionArea2D : Node2D
if (!_active || !InputService.Instance.InputEnabled) if (!_active || !InputService.Instance.InputEnabled)
return; return;
if(!IsSelectedByDetector)
return;
if (@event.IsAction("interact") && @event.IsPressed()) if (@event.IsAction("interact") && @event.IsPressed())
{ {
TryInteract(); TryInteract();
@@ -92,16 +112,7 @@ public partial class InteractionArea2D : Node2D
{ {
if (_area.HasOverlappingAreas()) if (_area.HasOverlappingAreas())
{ {
_label.Hide(); ResetHighlight();
if (_useOutline)
{
for (var i = 0; i < _spritesToOutline.Length; i++)
{
var sprite = _spritesToOutline[i];
sprite.Material = _backupMaterials[i];
}
}
Interact(); Interact();
} }
} }
@@ -120,8 +131,20 @@ public partial class InteractionArea2D : Node2D
public void ToggleActive() public void ToggleActive()
{ {
GD.Print($"Toggle active {GetParent().Name}: {!_active}");
_active = !_active; _active = !_active;
_label.Hide(); _label.Hide();
} }
public void SetActiveTrue()
{
IsActive = true;
}
public void SetActiveFalse()
{
IsActive = false;
}
} }
@@ -1,4 +1,5 @@
using Babushka.scripts.CSharp.Common.Services; using Babushka.scripts.CSharp.Common.Services;
using Babushka.scripts.CSharp.GameEntity.Entities;
using Godot; using Godot;
namespace Babushka.scripts.CSharp.Common.CharacterControls; namespace Babushka.scripts.CSharp.Common.CharacterControls;
@@ -8,6 +9,14 @@ public partial class PlayerMovement : CharacterBody2D
[Export] private float _speed = 1000f; [Export] private float _speed = 1000f;
[Export] private Timer _stepTimer; [Export] private Timer _stepTimer;
private PositionalEntity _entity;
public void Initialize(PositionalEntity entity)
{
_entity = entity;
GlobalPosition = entity.position;
}
public override void _Process(double delta) public override void _Process(double delta)
{ {
bool anyActionPressed = false; bool anyActionPressed = false;
@@ -76,6 +85,7 @@ public partial class PlayerMovement : CharacterBody2D
Velocity = currentVelocity; Velocity = currentVelocity;
MoveAndSlide(); MoveAndSlide();
_entity.position = GlobalPosition;
} }
else else
{ {
@@ -8,11 +8,11 @@ public partial class FarmingControls2D : Node2D
{ {
[Export] private VariableResource _sceneKeyProvider; [Export] private VariableResource _sceneKeyProvider;
[Export] private Node2D _movingPlayer; [Export] private Node2D _movingPlayer;
[Export] private Camera2D _camera; //[Export] private Camera2D _camera; // can be replaced with GetViewport().GetCamera2D()
[Export] private float _wateringCanParticlesVerticalOffset = 50f; [Export] private float _wateringCanParticlesVerticalOffset = 50f;
[Export] private Vector2I _fieldOffsetVector = new Vector2I(735, 651); [Export] private Vector2I _fieldOffsetVector = new Vector2I(735, 651);
[Export] private Node2D _fieldParent; //[Export] private Node2D _fieldParent; // never used
private int _toolId = -1; private int _toolId = -1;
private bool _wateringCanFilled = false; private bool _wateringCanFilled = false;
@@ -51,7 +51,8 @@ public partial class FarmingControls2D : Node2D
private Vector2I GetAdjustedMousePosition() private Vector2I GetAdjustedMousePosition()
{ {
Vector2 mousePosition = _camera.GetGlobalMousePosition(); var camera = GetViewport().GetCamera2D();
Vector2 mousePosition = camera.GetGlobalMousePosition();
Vector2I mousePositionInteger = (Vector2I) mousePosition; Vector2I mousePositionInteger = (Vector2I) mousePosition;
Vector2I adjustedPosition = AdjustValue(mousePositionInteger, _fieldOffsetVector); Vector2I adjustedPosition = AdjustValue(mousePositionInteger, _fieldOffsetVector);
return adjustedPosition; return adjustedPosition;
@@ -1,15 +1,18 @@
using Babushka.scripts.CSharp.Common.CharacterControls; using Babushka.scripts.CSharp.Common.CharacterControls;
using Babushka.scripts.CSharp.Common.Savegame;
using Godot; using Godot;
using Godot.Collections;
namespace Babushka.scripts.CSharp.Common.Farming; namespace Babushka.scripts.CSharp.Common.Farming;
/// <summary> /// <summary>
/// Enables a preset field in the scene sothat it can be used for farming. /// Enables a preset field in the scene sothat it can be used for farming.
/// </summary> /// </summary>
public partial class FieldActivator : Node public partial class FieldActivator : Node, ISaveable
{ {
[Export] private FieldBehaviour2D _field; [Export] private FieldBehaviour2D _field;
[Export] private InteractionArea2D _activatorArea; [Export] private InteractionArea2D _activatorArea;
[Export] private Node _saveIdHolder;
private bool _used = false; private bool _used = false;
private bool _rakeInHand; private bool _rakeInHand;
@@ -18,6 +21,7 @@ public partial class FieldActivator : Node
public override void _Ready() public override void _Ready()
{ {
LoadFromSaveData();
ToggleInteractionArea(); ToggleInteractionArea();
} }
@@ -32,6 +36,8 @@ public partial class FieldActivator : Node
_field.UpdateFieldState(FieldState.Tilled); _field.UpdateFieldState(FieldState.Tilled);
EmitSignal(SignalName.FieldCreated, _field); EmitSignal(SignalName.FieldCreated, _field);
_used = true; _used = true;
ToggleInteractionArea();
UpdateSaveData();
} }
} }
@@ -42,6 +48,8 @@ public partial class FieldActivator : Node
/// <param name="activated"></param> /// <param name="activated"></param>
public void RakeActivated(bool activated) public void RakeActivated(bool activated)
{ {
if (_used || ProcessMode == ProcessModeEnum.Disabled)
return;
_rakeInHand = activated; _rakeInHand = activated;
ToggleInteractionArea(); ToggleInteractionArea();
} }
@@ -51,4 +59,35 @@ public partial class FieldActivator : Node
_activatorArea.IsActive = !_used && _rakeInHand; _activatorArea.IsActive = !_used && _rakeInHand;
} }
public void UpdateSaveData()
{
var payloadData = new Dictionary<string, Variant>
{
{ "field_activator_used", _used }
};
// Building a unique id from the top node's save id and a qualifier to make it new.
string parent_id = _saveIdHolder.GetMeta("SaveID").AsString();
string id = $"{parent_id}_field_activator";
SavegameService.AppendDataToSave( id, payloadData);
}
public void LoadFromSaveData()
{
string parent_id = _saveIdHolder.GetMeta("SaveID").AsString();
string id = $"{parent_id}_field_activator";
Dictionary<string, Variant> save = SavegameService.GetSaveData(id);
if (save.Count > 0)
{
if (save.TryGetValue("field_activator_used", out Variant usedVar))
{
_used = usedVar.AsBool();
}
else
{
_used = false;
}
}
}
} }
@@ -3,6 +3,8 @@ using Babushka.scripts.CSharp.Common.CharacterControls;
using Babushka.scripts.CSharp.Common.DayAndNight; using Babushka.scripts.CSharp.Common.DayAndNight;
using Babushka.scripts.CSharp.Common.Inventory; using Babushka.scripts.CSharp.Common.Inventory;
using Babushka.scripts.CSharp.Common.Savegame; using Babushka.scripts.CSharp.Common.Savegame;
using Babushka.scripts.CSharp.GameEntity.Entities;
using Babushka.scripts.CSharp.GameEntity.Management;
using Babushka.scripts.CSharp.Low_Code.Events; using Babushka.scripts.CSharp.Low_Code.Events;
using Babushka.scripts.CSharp.Low_Code.Variables; using Babushka.scripts.CSharp.Low_Code.Variables;
using Godot; using Godot;
@@ -33,7 +35,6 @@ public partial class FieldBehaviour2D : Sprite2D, ISaveable
[ExportGroup("Field Interactions")] [ExportGroup("Field Interactions")]
[Export] public InteractionArea2D PlantingInteraction; [Export] public InteractionArea2D PlantingInteraction;
[Export] public InteractionArea2D FieldInteractionArea;
[ExportGroup("Configuration")] [ExportGroup("Configuration")]
[Export] public Node2D PlantingPlaceholder; [Export] public Node2D PlantingPlaceholder;
@@ -48,6 +49,8 @@ public partial class FieldBehaviour2D : Sprite2D, ISaveable
private bool _canWater; private bool _canWater;
private int _currentDay; private int _currentDay;
public bool IsPlanted;
private PlantBehaviour2D? _currentPlant; private PlantBehaviour2D? _currentPlant;
private const string DAY_COUNTER_SAVE_ID = "12c6da2e-fc71-4281-a04a-dfd3c7943975"; private const string DAY_COUNTER_SAVE_ID = "12c6da2e-fc71-4281-a04a-dfd3c7943975";
@@ -57,11 +60,11 @@ public partial class FieldBehaviour2D : Sprite2D, ISaveable
private void UpdateInteractionArea() private void UpdateInteractionArea()
{ {
// fieldstate == tilled / watered && samen im Inventar // fieldstate == tilled / watered && samen im Inventar
_canPlant = (FieldState == FieldState.Tilled || FieldState == FieldState.Watered) && _seedsActive; _canPlant = (FieldState == FieldState.Tilled || FieldState == FieldState.Watered) && _seedsActive && !IsPlanted;
// fieldstate == tilled && watering can ausgewählt // fieldstate == tilled && watering can ausgewählt
_canWater = (FieldState == FieldState.Tilled || FieldState == FieldState.Planted) && _wateringCanActive; _canWater = (FieldState == FieldState.Tilled || IsPlanted) && _wateringCanActive && WateringCanState.GetFillState() > 0;
FieldInteractionArea.IsActive = _canPlant || _canWater; PlantingInteraction.IsActive = _canPlant || _canWater;
} }
public void ActivatedSeedInInventory(bool activated) public void ActivatedSeedInInventory(bool activated)
@@ -78,9 +81,17 @@ public partial class FieldBehaviour2D : Sprite2D, ISaveable
public override void _EnterTree() public override void _EnterTree()
{ {
WateringCanState.OnFill += UpdateInteractionArea;
WateringCanState.OnEmpty += UpdateInteractionArea;
LoadFromSaveData(); LoadFromSaveData();
} }
public override void _ExitTree()
{
WateringCanState.OnFill -= UpdateInteractionArea;
WateringCanState.OnEmpty -= UpdateInteractionArea;
}
public override void _Ready() public override void _Ready()
{ {
if(PlantingPlaceholder.GetChildCount() > 0) if(PlantingPlaceholder.GetChildCount() > 0)
@@ -104,18 +115,15 @@ public partial class FieldBehaviour2D : Sprite2D, ISaveable
case FieldState.Tilled: case FieldState.Tilled:
FieldState = FieldState.Tilled; FieldState = FieldState.Tilled;
_fieldSprite.Texture = Tilled; _fieldSprite.Texture = Tilled;
if(!IsPlanted)
PlantingInteraction.IsActive = true; PlantingInteraction.IsActive = true;
break; break;
case FieldState.Watered: case FieldState.Watered:
FieldState = FieldState.Watered; FieldState = FieldState.Watered;
_fieldSprite.Texture = Watered; _fieldSprite.Texture = Watered;
if(!IsPlanted)
PlantingInteraction.IsActive = true; PlantingInteraction.IsActive = true;
break; break;
case FieldState.Planted:
FieldState = FieldState.Planted;
_fieldSprite.Texture = Tilled;
PlantingInteraction.IsActive = false;
break;
default: default:
FieldState = FieldState.NotFound; FieldState = FieldState.NotFound;
break; break;
@@ -125,7 +133,6 @@ public partial class FieldBehaviour2D : Sprite2D, ISaveable
UpdateSaveData(); UpdateSaveData();
} }
public void Water() public void Water()
{ {
if (WateringCanState.GetFillState() > 0 && FieldState != FieldState.Watered) if (WateringCanState.GetFillState() > 0 && FieldState != FieldState.Watered)
@@ -151,7 +158,7 @@ public partial class FieldBehaviour2D : Sprite2D, ISaveable
if (_canPlant && TryPlant()) if (_canPlant && TryPlant())
{ {
EmitSignal(SignalName.Planted); EmitSignal(SignalName.Planted);
UpdateFieldState(FieldState.Planted); UpdateSaveData();
} }
if (_canWater) if (_canWater)
@@ -160,11 +167,21 @@ public partial class FieldBehaviour2D : Sprite2D, ISaveable
} }
} }
public void ChangePlantedState()
{
IsPlanted = true;
if(FieldState == FieldState.Tilled)
_fieldSprite.Texture = Tilled;
if(FieldState == FieldState.Watered)
_fieldSprite.Texture = Watered;
PlantingInteraction.IsActive = false;
}
private bool TryPlant() private bool TryPlant()
{ {
bool success = false; bool success = false;
int currentSlotIndex = InventoryManager.Instance.CurrentSelectedSlotIndex; int currentSlotIndex = EntityManager.Instance.GetUniqueEntity<VesnaEntity>().CurrentSelectedSlotIndex;
ItemInstance? item = InventoryManager.Instance.playerInventory.Slots[currentSlotIndex].itemInstance; ItemInstance? item = EntityManager.Instance.GetUniqueEntity<VesnaEntity>().inventory.Slots[currentSlotIndex].itemInstance;
if (item == null || PlantingPlaceholder.GetChildCount() > 0 || item.amount == 0) if (item == null || PlantingPlaceholder.GetChildCount() > 0 || item.amount == 0)
return success; return success;
@@ -174,7 +191,7 @@ public partial class FieldBehaviour2D : Sprite2D, ISaveable
if (!string.IsNullOrEmpty(plantPrefabPath)) if (!string.IsNullOrEmpty(plantPrefabPath))
{ {
PlantPrefab(plantPrefabPath); PlantPrefab(plantPrefabPath);
InventoryManager.Instance.playerInventory.RemoveItem(currentSlotIndex); EntityManager.Instance.GetUniqueEntity<VesnaEntity>().inventory.RemoveItem(currentSlotIndex);
success = true; success = true;
} }
@@ -187,6 +204,7 @@ public partial class FieldBehaviour2D : Sprite2D, ISaveable
if (_currentPlant != null) if (_currentPlant != null)
{ {
ChangePlantedState();
_currentPlant.DayPlanted = _currentDay; _currentPlant.DayPlanted = _currentDay;
} }
} }
@@ -209,6 +227,7 @@ public partial class FieldBehaviour2D : Sprite2D, ISaveable
{ {
_currentPlant = null; _currentPlant = null;
UpdateFieldState(FieldState.Empty, true); UpdateFieldState(FieldState.Empty, true);
IsPlanted = false;
} }
#region SAVE AND LOAD #region SAVE AND LOAD
@@ -221,10 +240,10 @@ public partial class FieldBehaviour2D : Sprite2D, ISaveable
var payloadData = new Dictionary<string, Variant> var payloadData = new Dictionary<string, Variant>
{ {
{ "field_state", (int)FieldState }, { "field_state", (int)FieldState },
{ "day_count_on_last_exit", _currentDay} { "day_count_on_last_exit", _currentDay},
}; };
if (_currentPlant != null) if (IsPlanted)
{ {
payloadData.Add( payloadData.Add(
"plant_data", new Dictionary<string, Variant>() "plant_data", new Dictionary<string, Variant>()
@@ -258,6 +277,7 @@ public partial class FieldBehaviour2D : Sprite2D, ISaveable
// get plant first because it's also relevant for the field state // get plant first because it's also relevant for the field state
if (save.TryGetValue("plant_data", out Variant plantDataVar)) if (save.TryGetValue("plant_data", out Variant plantDataVar))
{ {
IsPlanted = true;
Dictionary<string, Variant> plantDataDict = plantDataVar.AsGodotDictionary<string, Variant>(); Dictionary<string, Variant> plantDataDict = plantDataVar.AsGodotDictionary<string, Variant>();
if (plantDataDict.TryGetValue("prefab_path", out Variant prefabPathVar)) if (plantDataDict.TryGetValue("prefab_path", out Variant prefabPathVar))
@@ -314,20 +334,13 @@ public partial class FieldBehaviour2D : Sprite2D, ISaveable
// if day is today, then just use the provided field state as is. // if day is today, then just use the provided field state as is.
if (CalendarController.Instance != null && _currentDay != lastDayCount) if (CalendarController.Instance != null && _currentDay != lastDayCount)
{ {
// if the field was watered the day before, set it to tilled or planted. // if the field was watered the day before, set it to tilled
if (fieldStateInt == 3) if (fieldStateInt == 3)
{
if (_currentPlant != null)
{
fieldStateInt = 2;
}
else
{ {
fieldStateInt = 1; fieldStateInt = 1;
} }
} }
} }
}
FieldState = (FieldState) fieldStateInt; FieldState = (FieldState) fieldStateInt;
UpdateFieldState(FieldState, false); UpdateFieldState(FieldState, false);
@@ -7,7 +7,6 @@ public enum FieldState
{ {
Empty = 0, Empty = 0,
Tilled = 1, Tilled = 1,
Planted = 2,
Watered = 3, Watered = 3,
NotFound = 99 NotFound = 99
} }
@@ -3,7 +3,6 @@ using System.Diagnostics;
using Babushka.scripts.CSharp.Common.Inventory; using Babushka.scripts.CSharp.Common.Inventory;
using Babushka.scripts.CSharp.Low_Code.Variables; using Babushka.scripts.CSharp.Low_Code.Variables;
using Godot; using Godot;
using Godot.Collections;
namespace Babushka.scripts.CSharp.Common.Farming; namespace Babushka.scripts.CSharp.Common.Farming;
@@ -187,6 +186,7 @@ public partial class PlantBehaviour2D : Node2D
private void SetActiveHarvestablePlant(bool active) private void SetActiveHarvestablePlant(bool active)
{ {
_harvestablePlant.IsActive = active; _harvestablePlant.IsActive = active;
_harvestablePlant.ProcessMode = active ? ProcessModeEnum.Inherit : ProcessModeEnum.Disabled;
_harvestablePlant.UpdateVisuals(); _harvestablePlant.UpdateVisuals();
} }
@@ -2,15 +2,17 @@ using Babushka.scripts.CSharp.Common.Animation;
using Babushka.scripts.CSharp.Common.CharacterControls; using Babushka.scripts.CSharp.Common.CharacterControls;
using Babushka.scripts.CSharp.Common.Inventory; using Babushka.scripts.CSharp.Common.Inventory;
using Babushka.scripts.CSharp.Common.Services; using Babushka.scripts.CSharp.Common.Services;
using Babushka.scripts.CSharp.GameEntity.Entities;
using Babushka.scripts.CSharp.GameEntity.Management;
using Godot; using Godot;
namespace Babushka.scripts.CSharp.Common.Farming; namespace Babushka.scripts.CSharp.Common.Farming;
public partial class VesnaBehaviour2D : Node public partial class VesnaBehaviour2D : Node2D // EntityNode
{ {
[ExportGroup("Farming")] [ExportGroup("Farming")]
[Export] private FarmingControls2D _farmingControls; [Export] private FarmingControls2D _farmingControls;
[Export] private PlayerMovement _player2d; [Export] public PlayerMovement player2d;
[Export] private VesnaAnimations _vesnaAnimations; [Export] private VesnaAnimations _vesnaAnimations;
[Export] private ItemResource _hoe; [Export] private ItemResource _hoe;
[Export] private ItemResource _wateringCan; [Export] private ItemResource _wateringCan;
@@ -20,34 +22,32 @@ public partial class VesnaBehaviour2D : Node
[Signal] public delegate void InventorySelectionChangedEventHandler(int toolId); [Signal] public delegate void InventorySelectionChangedEventHandler(int toolId);
private InventoryManager _inventoryManager; //private InventoryManager _inventoryManager;
private InventoryInstance _inventoryInstance; private VesnaEntity _vesnaEntity;
private InventoryInstance _playerInventory;
public override void _Ready() public override void _Ready()
{ {
_inventoryManager = InventoryManager.Instance; _vesnaEntity = EntityManager.Instance.GetUniqueEntity<VesnaEntity>();
_inventoryInstance = _inventoryManager.playerInventory; _playerInventory = _vesnaEntity.inventory;
_inventoryManager.SlotIndexChanged += HandleInventorySelectedSlotIndexChanged; _vesnaEntity.SlotIndexChanged += HandleInventorySelectedSlotIndexChanged;
_playerInventory.InventoryContentsChanged += UpdateToolInHand;
} }
public override void _ExitTree() public override void _ExitTree()
{ {
_inventoryManager.SlotIndexChanged -= HandleInventorySelectedSlotIndexChanged; _vesnaEntity.SlotIndexChanged -= HandleInventorySelectedSlotIndexChanged;
_playerInventory.InventoryContentsChanged -= UpdateToolInHand;
} }
/// <summary> private void HandleInventorySelectedSlotIndexChanged(int _ = 0)
/// Called when picking up an item.
/// Makes sure that item animations are also updated when they are occupying a currently empty spot.
/// </summary>
public void HandlePickUp()
{ {
//Calls the same event handler as the inventory to ensure the currently selected item is updated in the animation. UpdateToolInHand();
HandleInventorySelectedSlotIndexChanged(0);
} }
private void HandleInventorySelectedSlotIndexChanged(int newIndex = 0) private void UpdateToolInHand()
{ {
InventorySlot currentSlot = InventoryManager.Instance.GetCurrentSelectedSlot(); InventorySlot currentSlot = _playerInventory.Slots[_vesnaEntity.CurrentSelectedSlotIndex];
ItemInstance? currentItem = currentSlot.itemInstance; ItemInstance? currentItem = currentSlot.itemInstance;
int toolId = -1; int toolId = -1;
@@ -30,6 +30,7 @@ public static class WateringCanState
public static event WateringCanDelegate WateringCanActiveStateChanged; public static event WateringCanDelegate WateringCanActiveStateChanged;
public static event Action? OnWater; public static event Action? OnWater;
public static event Action? OnFill; public static event Action? OnFill;
public static event Action? OnEmpty;
@@ -52,6 +53,11 @@ public static class WateringCanState
_fillstate--; _fillstate--;
OnWater?.Invoke(); OnWater?.Invoke();
} }
if (_fillstate == 0)
{
OnEmpty?.Invoke();
}
} }
/// <summary> /// <summary>
@@ -7,11 +7,16 @@ public partial class WellBehaviour : Node2D
{ {
[Export] private InteractionArea2D _interactionArea; [Export] private InteractionArea2D _interactionArea;
public override void _Ready() public override void _EnterTree()
{ {
WateringCanState.WateringCanActiveStateChanged += OnWateringCanStateChanged; WateringCanState.WateringCanActiveStateChanged += OnWateringCanStateChanged;
} }
public override void _ExitTree()
{
WateringCanState.WateringCanActiveStateChanged -= OnWateringCanStateChanged;
}
private void OnWateringCanStateChanged(bool state) private void OnWateringCanStateChanged(bool state)
{ {
_interactionArea.IsActive = state; _interactionArea.IsActive = state;
@@ -11,11 +11,11 @@ public partial class ActionAnimationController : Node
#endregion #endregion
[Export] private AllFightersVisual _allFightersVisual = null!; [Export] private AllFightersVisual _allFightersVisual = null!;
[Export] private FightHappeningAnimationContext _animationContext = null!;
public void StateEnter() public void StateEnter()
{ {
_ = HappeningData.actionStaging!.AnimateAction(_allFightersVisual); _ = HappeningData.actionStaging!.AnimateAction(_allFightersVisual,_animationContext);
} }
public void StateExit() public void StateExit()
@@ -48,10 +48,11 @@ public class AllyAttackAction : FighterAction
public override void ExecuteAction() public override void ExecuteAction()
{ {
var totalDamage = minigameDetail.damageHits!.Sum(dh => dh); var totalDamage = minigameDetail.damageHits!.Sum(dh => dh);
targetSelect.GetTarget().AddHealth(-totalDamage); targetSelect.GetTarget().ChangeHealth(-totalDamage);
} }
public override async Task AnimateAction(AllFightersVisual allFightersVisual) public override async Task AnimateAction(AllFightersVisual allFightersVisual,
FightHappeningAnimationContext animationContext)
{ {
var currentFighter = HappeningData.fighterTurn.Current; var currentFighter = HappeningData.fighterTurn.Current;
var targetFighter = targetSelect.GetTarget(); var targetFighter = targetSelect.GetTarget();
@@ -64,7 +65,7 @@ public class AllyAttackAction : FighterAction
foreach (var hit in minigameDetail.damageHits!) foreach (var hit in minigameDetail.damageHits!)
{ {
targetFighterVisual.SpawnDamageIndicatorNumber(hit); targetFighterVisual.SpawnDamageIndicatorNumber($"-{hit}");
} }
await currentFighterVisual.AnimatePosToBase(); await currentFighterVisual.AnimatePosToBase();
@@ -18,10 +18,11 @@ public class BlobAttackAction(int damage = 3) : FighterAction
public override void ExecuteAction() public override void ExecuteAction()
{ {
FightWorld.Instance.allyFighters.vesnaFighter.AddHealth(-damage); FightWorld.Instance.allyFighters.vesnaFighter.ChangeHealth(-damage);
} }
public override async Task AnimateAction(AllFightersVisual allFightersVisual) public override async Task AnimateAction(AllFightersVisual allFightersVisual,
FightHappeningAnimationContext animationContext)
{ {
var currentFighter = HappeningData.fighterTurn.Current; var currentFighter = HappeningData.fighterTurn.Current;
var targetFighter = FightWorld.Instance.allyFighters.vesnaFighter; var targetFighter = FightWorld.Instance.allyFighters.vesnaFighter;
@@ -31,7 +32,7 @@ public class BlobAttackAction(int damage = 3) : FighterAction
await currentFighterVisual.AnimatePosToTarget(targetFighterVisual); await currentFighterVisual.AnimatePosToTarget(targetFighterVisual);
_ = targetFighterVisual.AnimateHit(); _ = targetFighterVisual.AnimateHit();
targetFighterVisual.SpawnDamageIndicatorNumber(damage); targetFighterVisual.SpawnDamageIndicatorNumber($"-{damage}");
await currentFighterVisual.AnimatePosToBase(); await currentFighterVisual.AnimatePosToBase();
} }
} }
@@ -0,0 +1,50 @@
using System;
using System.Diagnostics;
using System.Threading.Tasks;
using Babushka.scripts.CSharp.Common.Inventory;
using Babushka.scripts.CSharp.Common.Util;
using Babushka.scripts.CSharp.GameEntity.Entities;
using Babushka.scripts.CSharp.GameEntity.Management;
namespace Babushka.scripts.CSharp.Common.Fight.Actions;
public class EatBeetrootAction : FighterAction
{
public override Variant<float, Func<bool>> GetAnimationEnd() => 1;
public override bool NextDetail() => false;
private const int HealAmount = 20;
public override bool ShouldAbort()
{
Debug.Assert(FightWorld.Instance.itemBeetrootToEatForHealth != null,
"Item to eat for health has not been set in the FightWorld autoload");
return !EntityManager.Instance.GetUniqueEntity<VesnaEntity>().inventory.HasItems(new ItemInstance
{ blueprint = FightWorld.Instance.itemBeetrootToEatForHealth });
}
public override async Task AnimateAction(AllFightersVisual allFightersVisual,
FightHappeningAnimationContext animationContext)
{
var fighter = HappeningData.fighterTurn.Current;
var fighterVisual = allFightersVisual.GetVisualForFighter(fighter);
fighterVisual.SpawnDamageIndicatorNumber($"+{HealAmount}");
animationContext.useHealItemIndicator.SpawnIndicator();
await fighterVisual.AnimateHeal();
}
public override void ExecuteAction()
{
var fighter = HappeningData.fighterTurn.Current;
var result = EntityManager.Instance.GetUniqueEntity<VesnaEntity>().inventory.TryRemoveAllItems(
new ItemInstance { blueprint = FightWorld.Instance.itemBeetrootToEatForHealth! });
if (result != InventoryActionResult.Success)
throw new Exception("No Beetroot in inventory. This case should have been handled earlier");
fighter.ChangeHealth(HealAmount);
}
public override AllyActionButton BindToActionButton() => AllyActionButton.Talk; // Temporarily bound to talk button
}
@@ -0,0 +1 @@
uid://b2463q1waqvdu
+2 -1
View File
@@ -10,7 +10,8 @@ public class AllyFighters
maxHealth = 60, maxHealth = 60,
availableActions = availableActions =
[ [
new AllyAttackAction() new AllyAttackAction(),
new EatBeetrootAction()
] ]
}; };
public FightWorld.Fighter chuhaFighter = new() public FightWorld.Fighter chuhaFighter = new()
+11 -6
View File
@@ -222,9 +222,9 @@ public partial class FightHappening : Node
case FightState.ActionCheckDetails: case FightState.ActionCheckDetails:
RequireNotNull(HappeningData.actionStaging); RequireNotNull(HappeningData.actionStaging);
if (ActionAbort()) if (ShouldActionAbort())
ChangeState(FightState.InputActionSelect); ChangeState(FightState.InputActionSelect);
else if (ActionNeededDetail()) else if (DoesActionNeededDetail())
ChangeState(FightState.InputActionDetail); ChangeState(FightState.InputActionDetail);
else else
ChangeState(FightState.ActionExecute); ChangeState(FightState.ActionExecute);
@@ -307,6 +307,11 @@ public partial class FightHappening : Node
HappeningData.enemyFighterFormation.SetFighterAtPosition(emptySlotIndex, fighter); HappeningData.enemyFighterFormation.SetFighterAtPosition(emptySlotIndex, fighter);
HappeningData.fighterTurn.AddAsLast(fighter); HappeningData.fighterTurn.AddAsLast(fighter);
} }
if (GD.RandRange(0, 2) != 0) // 2/3 chance for vesna to start
{
HappeningData.fighterTurn.SpinBack();
}
} }
private void ExecuteNextFighter() private void ExecuteNextFighter()
@@ -328,13 +333,13 @@ public partial class FightHappening : Node
return HappeningData.actionStaging.GetAnimationEnd(); return HappeningData.actionStaging.GetAnimationEnd();
} }
private bool ActionAbort() private bool ShouldActionAbort()
{ {
Debug.Assert(HappeningData.actionStaging != null); Debug.Assert(HappeningData.actionStaging != null);
return HappeningData.actionStaging.MarkedForAbort(); return HappeningData.actionStaging.ShouldAbort();
} }
private bool ActionNeededDetail() private bool DoesActionNeededDetail()
{ {
Debug.Assert(HappeningData.actionStaging != null); Debug.Assert(HappeningData.actionStaging != null);
return HappeningData.actionStaging.NextDetail(); return HappeningData.actionStaging.NextDetail();
@@ -344,7 +349,7 @@ public partial class FightHappening : Node
private void ReviveVesna() private void ReviveVesna()
{ {
var vesnaFighter = FightWorld.Instance.allyFighters.vesnaFighter; var vesnaFighter = FightWorld.Instance.allyFighters.vesnaFighter;
vesnaFighter.health = vesnaFighter.maxHealth; vesnaFighter.Health = vesnaFighter.maxHealth;
GD.Print("Vesna has been revived. This is for the current prototype only"); GD.Print("Vesna has been revived. This is for the current prototype only");
} }
@@ -0,0 +1,8 @@
using Godot;
namespace Babushka.scripts.CSharp.Common.Fight;
public partial class FightHappeningAnimationContext : Node
{
[Export] public UsedItemIndicatorVisual useHealItemIndicator = null!;
}
@@ -0,0 +1 @@
uid://cdrjvgm82pxoj
@@ -1,15 +1,16 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Babushka.scripts.CSharp.Common.Util; using Babushka.scripts.CSharp.Common.Inventory;
using Godot; using Godot;
namespace Babushka.scripts.CSharp.Common.Fight; namespace Babushka.scripts.CSharp.Common.Fight;
public partial class FightRoomSceneSetup : Node public partial class FightRoomSceneSetup : Node
{ {
[Export(PropertyHint.ArrayType)] private Node2D[] _enemyGroupSpawns; [Export(PropertyHint.ArrayType)] private Node2D[] _enemyGroupSpawns = null!;
[Export] private PackedScene _roamingEnemyGroupPrefab; [Export] private PackedScene _roamingEnemyGroupPrefab = null!;
[Export] private FightSceneSwitcher _fightSceneSwitcher; [Export] private PackedScene _itemOnGroundPrefab = null!;
[Export] private FightSceneSwitcher _fightSceneSwitcher = null!;
public override void _Ready() public override void _Ready()
@@ -19,11 +20,30 @@ public partial class FightRoomSceneSetup : Node
foreach (var (parent, group) in _enemyGroupSpawns.Zip(room.enemyGroups)) foreach (var (parent, group) in _enemyGroupSpawns.Zip(room.enemyGroups))
{ {
if (group.AreAllDead()) if (group.AreAllDead())
continue; {
SpawnLoot(group, parent);
}
else
{
SpawnEnemies(group, parent);
}
}
}
private void SpawnEnemies(FightWorld.FighterGroup group, Node2D parent)
{
var roamingEnemyGroup = _roamingEnemyGroupPrefab.Instantiate<RoamingEnemyGroup>(); var roamingEnemyGroup = _roamingEnemyGroupPrefab.Instantiate<RoamingEnemyGroup>();
roamingEnemyGroup.Initialize(group, _fightSceneSwitcher); roamingEnemyGroup.Initialize(group, _fightSceneSwitcher);
parent.AddChild(roamingEnemyGroup); parent.AddChild(roamingEnemyGroup);
} }
private void SpawnLoot(FightWorld.FighterGroup group, Node2D parent)
{
if (group.lootToDrop == null)
return;
var onGroundInstance = _itemOnGroundPrefab.Instantiate<ItemOnGround2D>();
onGroundInstance.itemInstance = group.lootToDrop;
parent.AddChild(onGroundInstance);
} }
} }
+10 -9
View File
@@ -11,14 +11,15 @@ public static class FightUtils
return self.Where(e => e.IsAlive()); return self.Where(e => e.IsAlive());
} }
public static IEnumerable<FightWorld.Fighter> WhereIsNotInFormation(this IEnumerable<FightWorld.Fighter> self, FighterFormation formation) public static IEnumerable<FightWorld.Fighter> WhereIsNotInFormation(this IEnumerable<FightWorld.Fighter> self,
FighterFormation formation)
{ {
return self.Where(e => !e.IsInFormation(formation)); return self.Where(e => !e.IsInFormation(formation));
} }
public static bool IsAlive(this FightWorld.Fighter self) public static bool IsAlive(this FightWorld.Fighter self)
{ {
return self.GetHealth() > 0; return self.Health > 0;
} }
public static bool IsDead(this FightWorld.Fighter self) public static bool IsDead(this FightWorld.Fighter self)
@@ -26,14 +27,14 @@ public static class FightUtils
return !self.IsAlive(); return !self.IsAlive();
} }
public static int GetHealth(this FightWorld.Fighter self) /// <summary>
/// Changes the health of a fighter
/// </summary>
/// <param name="self">The fighter itself</param>
/// <param name="amount">The amount of health to add. Make negative to remove health</param>
public static void ChangeHealth(this FightWorld.Fighter self, int amount)
{ {
return Math.Max(self.health ?? self.maxHealth, 0); self.Health += amount;
}
public static void AddHealth(this FightWorld.Fighter self, int addHealth)
{
self.health = self.GetHealth() + addHealth;
} }
public static bool IsInFormation(this FightWorld.Fighter self, FighterFormation formation) public static bool IsInFormation(this FightWorld.Fighter self, FighterFormation formation)

Some files were not shown because too many files have changed in this diff Show More