Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2940475062 |
|
Before Width: | Height: | Size: 138 KiB |
@@ -1,34 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://hvchk6t0xe7j"
|
||||
path="res://.godot/imported/Ente.png-21ead71377d82aa0401b2345b9713a4b.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/animals/Ente.png"
|
||||
dest_files=["res://.godot/imported/Ente.png-21ead71377d82aa0401b2345b9713a4b.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
|
Before Width: | Height: | Size: 5.6 KiB |
@@ -1,34 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cgmu3qlovdr22"
|
||||
path="res://.godot/imported/field_outline_1.png-6d3fddc82592de77807ed60581b515c5.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/masks/field_outline_1.png"
|
||||
dest_files=["res://.godot/imported/field_outline_1.png-6d3fddc82592de77807ed60581b515c5.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
|
Before Width: | Height: | Size: 6.8 KiB |
@@ -1,34 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://eg5ej0mtuac"
|
||||
path="res://.godot/imported/field_outline_2.png-e3ddb80217ba93d880ff746f003587ee.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/masks/field_outline_2.png"
|
||||
dest_files=["res://.godot/imported/field_outline_2.png-e3ddb80217ba93d880ff746f003587ee.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
|
Before Width: | Height: | Size: 7.0 KiB |
@@ -1,34 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://djpigvoyadvjs"
|
||||
path="res://.godot/imported/field_outline_3.png-1ae7ea2c620df01f38d55e21a86cbf92.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/masks/field_outline_3.png"
|
||||
dest_files=["res://.godot/imported/field_outline_3.png-1ae7ea2c620df01f38d55e21a86cbf92.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
|
Before Width: | Height: | Size: 5.8 MiB After Width: | Height: | Size: 6.2 MiB |
|
Before Width: | Height: | Size: 150 KiB |
@@ -1,34 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dgavbfci8x178"
|
||||
path="res://.godot/imported/grass-1.png-ca7b452843206b712388940e3c3d5532.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/nature/grass/grass-1.png"
|
||||
dest_files=["res://.godot/imported/grass-1.png-ca7b452843206b712388940e3c3d5532.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
|
Before Width: | Height: | Size: 168 KiB |
@@ -1,34 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://h2b5aufaaw7w"
|
||||
path="res://.godot/imported/grass-2.png-6f43a52066099666b3212aa92bb38a9f.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/nature/grass/grass-2.png"
|
||||
dest_files=["res://.godot/imported/grass-2.png-6f43a52066099666b3212aa92bb38a9f.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
|
Before Width: | Height: | Size: 145 KiB |
@@ -1,34 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://ct7ea8ikor5rf"
|
||||
path="res://.godot/imported/grass-3.png-694a7f12b6e32536c4f27363ec79c45a.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/nature/grass/grass-3.png"
|
||||
dest_files=["res://.godot/imported/grass-3.png-694a7f12b6e32536c4f27363ec79c45a.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
|
Before Width: | Height: | Size: 147 KiB |
@@ -1,34 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://badnnid7dgnpk"
|
||||
path="res://.godot/imported/grass-4.png-e2855f1a80a4bb56abcc9b4ab623b57b.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/nature/grass/grass-4.png"
|
||||
dest_files=["res://.godot/imported/grass-4.png-e2855f1a80a4bb56abcc9b4ab623b57b.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
|
Before Width: | Height: | Size: 181 KiB |
|
Before Width: | Height: | Size: 107 KiB |
@@ -1,34 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b644ofy7fml5w"
|
||||
path="res://.godot/imported/grass-5.png-415eca44a6277d6c20c8cb81e371080f.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/nature/grass/grass-5.png"
|
||||
dest_files=["res://.godot/imported/grass-5.png-415eca44a6277d6c20c8cb81e371080f.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
|
Before Width: | Height: | Size: 106 KiB |
@@ -1,34 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://d3dwl6ph0pu1d"
|
||||
path="res://.godot/imported/grass-6.png-78792f43caad598457a381c5989c9eb5.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/nature/grass/grass-6.png"
|
||||
dest_files=["res://.godot/imported/grass-6.png-78792f43caad598457a381c5989c9eb5.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
|
Before Width: | Height: | Size: 11 KiB |
@@ -1,34 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bn56p0ytuo060"
|
||||
path="res://.godot/imported/AttackButton.png-ab1949863046f66b014201d64778c962.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/ui/UI/AttackButton.png"
|
||||
dest_files=["res://.godot/imported/AttackButton.png-ab1949863046f66b014201d64778c962.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
|
Before Width: | Height: | Size: 13 KiB |
@@ -1,34 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bcs0e1bpu8wm1"
|
||||
path="res://.godot/imported/MagicButton.png-f688abbb37e617bc75b48afd1bffb745.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/ui/UI/MagicButton.png"
|
||||
dest_files=["res://.godot/imported/MagicButton.png-f688abbb37e617bc75b48afd1bffb745.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
|
Before Width: | Height: | Size: 8.7 KiB |
@@ -1,34 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://qlfwuakhe57t"
|
||||
path="res://.godot/imported/attack_select_wheel.png-437439dea02962dbfc00f0c03b7b3deb.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://art/ui/UI/attack_select_wheel.png"
|
||||
dest_files=["res://.godot/imported/attack_select_wheel.png-437439dea02962dbfc00f0c03b7b3deb.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"@path": "res://addons/dialogic/Resources/character.gd",
|
||||
"@subpath": NodePath(""),
|
||||
&"_translation_id": "",
|
||||
&"color": Color(1, 1, 1, 1),
|
||||
&"custom_info": {
|
||||
"sound_mood_default": "",
|
||||
"sound_moods": {},
|
||||
"style": ""
|
||||
},
|
||||
&"default_portrait": "",
|
||||
&"description": "helpful spirit forest",
|
||||
&"display_name": "Chuga",
|
||||
&"mirror": false,
|
||||
&"nicknames": [""],
|
||||
&"offset": Vector2(0, 0),
|
||||
&"portraits": {},
|
||||
&"scale": 1.0
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
uid://dkbi4kpwu5o07
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"@path": "res://addons/dialogic/Resources/character.gd",
|
||||
"@subpath": NodePath(""),
|
||||
&"_translation_id": "",
|
||||
&"color": Color(1, 1, 1, 1),
|
||||
&"custom_info": {
|
||||
"sound_mood_default": "",
|
||||
"sound_moods": {},
|
||||
"style": ""
|
||||
},
|
||||
&"default_portrait": "",
|
||||
&"description": "Yeli's Domovoi",
|
||||
&"display_name": "Domovoi",
|
||||
&"mirror": false,
|
||||
&"nicknames": [""],
|
||||
&"offset": Vector2(0, 0),
|
||||
&"portraits": {},
|
||||
&"scale": 1.0
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
uid://75u6ft7n7w0l
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"@path": "res://addons/dialogic/Resources/character.gd",
|
||||
"@subpath": NodePath(""),
|
||||
&"_translation_id": "",
|
||||
&"color": Color(1, 1, 1, 1),
|
||||
&"custom_info": {
|
||||
"sound_mood_default": "",
|
||||
"sound_moods": {},
|
||||
"style": ""
|
||||
},
|
||||
&"default_portrait": "",
|
||||
&"description": "",
|
||||
&"display_name": "Everyone",
|
||||
&"mirror": false,
|
||||
&"nicknames": [""],
|
||||
&"offset": Vector2(0, 0),
|
||||
&"portraits": {},
|
||||
&"scale": 1.0
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
uid://6o18wptg611k
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"@path": "res://addons/dialogic/Resources/character.gd",
|
||||
"@subpath": NodePath(""),
|
||||
&"_translation_id": "",
|
||||
&"color": Color(1, 1, 1, 1),
|
||||
&"custom_info": {
|
||||
"sound_mood_default": "",
|
||||
"sound_moods": {},
|
||||
"style": "NPC_narrative"
|
||||
},
|
||||
&"default_portrait": "",
|
||||
&"description": "Main character",
|
||||
&"display_name": "Vesna2",
|
||||
&"mirror": false,
|
||||
&"nicknames": [""],
|
||||
&"offset": Vector2(0, 0),
|
||||
&"portraits": {},
|
||||
&"scale": 1.0
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
uid://c0vfdx7xal0py
|
||||
@@ -0,0 +1,3 @@
|
||||
join Vesna2 center
|
||||
That’s the last one. I should get back to Yeli.
|
||||
[end_timeline]
|
||||
@@ -0,0 +1 @@
|
||||
uid://m4koh11hl7dr
|
||||
@@ -0,0 +1,8 @@
|
||||
join Yeli center
|
||||
join Vesna2 center
|
||||
Yeli (_part_side): Come here, you little quacking beast!
|
||||
- What a mess!
|
||||
- You haven’t called me that way yet.
|
||||
Yeli (_part_side): Vesna, oh, thank goodness!
|
||||
Yeli (_part_side): Please could you get the runner ducks back into their coop?
|
||||
[end_timeline]
|
||||
@@ -0,0 +1 @@
|
||||
uid://8hbdcasjfqe2
|
||||
@@ -0,0 +1,4 @@
|
||||
join Vesna2 center
|
||||
Vesna2: I just wish I liked tomatoes more.
|
||||
Vesna2: Well…Yeli probably started with the cooking. I should go inside.
|
||||
[end_timeline]
|
||||
@@ -0,0 +1 @@
|
||||
uid://caar10vf25avk
|
||||
@@ -0,0 +1,10 @@
|
||||
join Yeli center
|
||||
join Vesna2 center
|
||||
Yeli (_part_side): Great! Now I need you to plant some tomatoes!
|
||||
label plant tomatoes
|
||||
Yeli (_part_side): Use the hoe to break up the soil. Then plant the seeds and water the fields.
|
||||
Yeli (_part_side): Got it?
|
||||
- Of course!
|
||||
- Wait … How do I plant the tomatoes again?
|
||||
jump plant tomatoes
|
||||
[end_timeline]
|
||||
@@ -0,0 +1 @@
|
||||
uid://hiddni4o2feu
|
||||
@@ -0,0 +1,10 @@
|
||||
join Yeli center
|
||||
join Vesna2 center
|
||||
Yeli (_part_side): Thank you, my child! Your Yeli is not so agile anymore.
|
||||
Vesna2: But you’re diligent! You’ve started with the preparation for dinner.
|
||||
Yeli (_part_side): Indeed, I have.
|
||||
Yeli (_part_side): But, oh my, those ducks messed up the tomatos.
|
||||
Yeli (_part_side): Oh, would you like to assist me?
|
||||
Vesna2: What do I have to do?
|
||||
Yeli (_part_side): First, take the hoe and watering can over there! Then come back to me!
|
||||
[end_timeline]
|
||||
@@ -0,0 +1 @@
|
||||
uid://jiu6pdap5wuj
|
||||
@@ -0,0 +1,9 @@
|
||||
join Yeli center
|
||||
join Vesna2 center
|
||||
Yeli (_part_side): Wow! So many?
|
||||
Yeli (_part_side): Good job! Put it in the kettle!
|
||||
[wait_input]
|
||||
Yeli (_part_side): Mmmh! This will be something.
|
||||
Yeli (_part_side): Thank you! I can take everything else from here.
|
||||
Yeli (_part_side): See you for dinner!
|
||||
[end_timeline]
|
||||
@@ -0,0 +1 @@
|
||||
uid://bh4ept5nbdxes
|
||||
@@ -0,0 +1,15 @@
|
||||
join Vesna2 center
|
||||
join Domovoi center
|
||||
Vesna2: Oh no, most of the beets aren’t ripe yet.
|
||||
Domovoi: Pssss!
|
||||
Domovoi: Yeah, you!
|
||||
Domovoi: The code word is “Rosty Rosty”
|
||||
Vesna2: What?
|
||||
Domovoi: Just say it!
|
||||
Vesna2: Rosty…rosty?
|
||||
# Hier wächst die rote Beete magisch. Mit einem Signal/Ereignis?
|
||||
[signal]
|
||||
Vesna2: It worked! How did it work?
|
||||
Vesna2: Thank y…and he’s gone.
|
||||
What a truly quirky individual.
|
||||
[end_timeline]
|
||||
@@ -0,0 +1 @@
|
||||
uid://hlvjcir0ined
|
||||
@@ -0,0 +1,21 @@
|
||||
join Yeli center
|
||||
join Vesna2 center
|
||||
Yeli (_part_side): You see, you don’t need a man to keep your garden in shape.
|
||||
- Just a little help from Vesna.
|
||||
- Frankly, I kept Vasily away from our garden after he destroyed our sunflowers.
|
||||
Yeli (_part_side): Haha! True words.
|
||||
Yeli (_part_side): It’s your very first time in this house in a long time, isn’t it?
|
||||
Vesna2: Yes. And you have two cats now?
|
||||
Yeli (_part_side): No, no, the second bowl is for the Domovoi, as a gift.
|
||||
Yeli (_part_side): Your Yeli still practices the old traditions.
|
||||
Vesna2: And have you spotted any Domovois since?
|
||||
Yeli (_part_side): No, but would you believe it, the cat grew double the size. Haha!
|
||||
Vesna2: Your cat really gets the best of the best. Your soup already smells great!
|
||||
Yeli (_part_side): But it’s missing…something.
|
||||
Yeli (_part_side): Ah!
|
||||
label bring_beets
|
||||
Yeli (_part_side): Would you bring me some beets from the garden while I take care of the soup? Here’s the key!
|
||||
- Sure!
|
||||
- What do you need again?
|
||||
jump bring_beets
|
||||
[end_timeline]
|
||||
@@ -0,0 +1 @@
|
||||
uid://dsc2d4fpu8ip2
|
||||
@@ -0,0 +1,18 @@
|
||||
join Yeli center
|
||||
join Vesna2 center
|
||||
Everyone: Smachnoho!
|
||||
Vesna2: Lovely soup, Yeli!
|
||||
Yeli (_part_side): God bless you, my child! That’s also thanks to you.
|
||||
Vesna2: So, how do you like it in Lasnoye so far?
|
||||
- It feels different from when Vasily and I used to live here.
|
||||
- It’s just as I remembered it.
|
||||
Yeli (_part_side): Indeed, it is.
|
||||
Yeli (_part_side): Since the evacuation, Lasnoye and its people had to adapt to…new circumstances.
|
||||
Yeli (_part_side): But at its core, it’s still our motherland from back then.
|
||||
Vesna2: …And the forest? Has anyone tried to go back and--
|
||||
Yeli (_part_side): The forest is strictly off-limits!
|
||||
Yeli (_part_side): Dragana forbids it.
|
||||
Yeli (_part_side): The grime turned the forest into a dangerous place.
|
||||
Yeli (_part_side): But here you’re safe. After all, you can always count on your Yeli!
|
||||
Vesna2: In that case, pass me some more soup!
|
||||
[end_timeline]
|
||||
@@ -0,0 +1 @@
|
||||
uid://b176n5u7bplyh
|
||||
@@ -0,0 +1,5 @@
|
||||
join Chuga center
|
||||
Chuga: I believe you’ve seen enough for today.
|
||||
Chuga: And yes, you too.
|
||||
Thank you for playing!
|
||||
[end_timeline]
|
||||
@@ -0,0 +1 @@
|
||||
uid://ck5nt0bykudeb
|
||||
@@ -0,0 +1,22 @@
|
||||
join Vesna2 center
|
||||
join Chuga center
|
||||
Chuga: Look who it is!
|
||||
Vesna2: Your name was Chuga, right? I want to go to the forest!
|
||||
Chuga: To the forest? After everything the others told you?
|
||||
Vesna2: Will you let me through?
|
||||
Chuga: Will I?
|
||||
Chuga: Let us have a riddle!
|
||||
Chuga: If you answer correctly, I let you through.
|
||||
Chuga: If not, I let you through anyway.
|
||||
Vesna2: So, what’s the point of answering?
|
||||
Chuga: You give me an answer, and I give you something to see in the dark.
|
||||
Chuga: Or are you planning to return with bumps and bruises?
|
||||
Chuga: So, listen\: “I wear a crown, but I’m no king.” Vesna, what am I?
|
||||
- Queen
|
||||
Chuga: What a boring answer.
|
||||
- Tree
|
||||
That’s it!
|
||||
- Soup
|
||||
Chuga: Hate the player, not the game.
|
||||
Chuga: Here you go!
|
||||
[end_timeline]
|
||||
@@ -0,0 +1 @@
|
||||
uid://57esymqfp3v3
|
||||
@@ -9,7 +9,7 @@ custom_features=""
|
||||
export_filter="all_resources"
|
||||
include_filter=""
|
||||
exclude_filter=""
|
||||
export_path="_builds/Babushka_win_0_3/Babushka.exe"
|
||||
export_path="_builds/Babushka_win_0_2/Babushka.exe"
|
||||
patches=PackedStringArray()
|
||||
encryption_include_filters=""
|
||||
encryption_exclude_filters=""
|
||||
|
||||
@@ -16,7 +16,7 @@ layer = 90
|
||||
[node name="DialogicToggle" type="Node2D" parent="."]
|
||||
scale = Vector2(0.7, 0.7)
|
||||
|
||||
[node name="Inventory" type="Control" parent="." node_paths=PackedStringArray("_slotsParent", "_slotsMover", "_headerSlots", "_slotSelect")]
|
||||
[node name="Inventory" type="Control" parent="." node_paths=PackedStringArray("_headerSlots")]
|
||||
layout_mode = 3
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
@@ -25,12 +25,10 @@ anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
scale = Vector2(0.7, 0.7)
|
||||
size_flags_vertical = 8
|
||||
script = ExtResource("1_6wusm")
|
||||
_slotsParent = NodePath("SlotsContainer/SlotsMover/Slots")
|
||||
_slotsMover = NodePath("SlotsContainer/SlotsMover")
|
||||
_headerSlots = [NodePath("SlotsContainer/SlotsMover/Slots/Slot"), NodePath("SlotsContainer/SlotsMover/Slots/Slot2"), NodePath("SlotsContainer/SlotsMover/Slots/Slot3"), NodePath("SlotsContainer/SlotsMover/Slots/Slot4"), NodePath("SlotsContainer/SlotsMover/Slots/Slot5"), NodePath("SlotsContainer/SlotsMover/Slots/Slot6"), NodePath("SlotsContainer/SlotsMover/Slots/Slot7"), NodePath("SlotsContainer/SlotsMover/Slots/Slot8")]
|
||||
_slotSelect = NodePath("SlotsContainer/SlotsMover/SlotSelectContainer/Selector")
|
||||
_headerSlots = []
|
||||
|
||||
[node name="SlotsContainer" type="Control" parent="Inventory"]
|
||||
layout_mode = 1
|
||||
|
||||
@@ -2122,6 +2122,10 @@ texture = ExtResource("816_1a3c1")
|
||||
region_enabled = true
|
||||
region_rect = Rect2(-1, 1128, 417, 299)
|
||||
|
||||
[node name="Camera2D" type="Camera2D" parent="CharacterBody2D"]
|
||||
position = Vector2(26, -469)
|
||||
zoom = Vector2(0.3, 0.3)
|
||||
|
||||
[node name="WateringCanUI" type="Node2D" parent="CharacterBody2D" node_paths=PackedStringArray("_stages")]
|
||||
position = Vector2(0, -929)
|
||||
scale = Vector2(2, 2)
|
||||
@@ -2163,10 +2167,11 @@ visible = false
|
||||
position = Vector2(3, 12)
|
||||
texture = ExtResource("473_g32y8")
|
||||
|
||||
[node name="FarmingControls" type="Node2D" parent="." node_paths=PackedStringArray("_movingPlayer", "_wateringParticles")]
|
||||
[node name="FarmingControls" type="Node2D" parent="." node_paths=PackedStringArray("_movingPlayer", "_camera", "_wateringParticles")]
|
||||
script = ExtResource("817_6nrw3")
|
||||
_fieldPrefab = ExtResource("818_16w6h")
|
||||
_movingPlayer = NodePath("../CharacterBody2D")
|
||||
_camera = NodePath("../CharacterBody2D/Camera2D")
|
||||
_wateringParticles = NodePath("../pouring water vfx")
|
||||
_wateringCanParticlesVerticalOffset = -100.0
|
||||
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
[gd_scene load_steps=11 format=3 uid="uid://b1d2e7ely6hyw"]
|
||||
[gd_scene load_steps=8 format=3 uid="uid://b1d2e7ely6hyw"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://cqc72e4hq6bcd" path="res://prefabs/interactions/interaction_area_2d.tscn" id="1_femni"]
|
||||
[ext_resource type="Script" uid="uid://bdffon388rkty" path="res://scripts/CSharp/Common/Farming/FieldBehaviour2D.cs" id="2_femni"]
|
||||
[ext_resource type="Texture2D" uid="uid://cgmu3qlovdr22" path="res://art/masks/field_outline_1.png" id="3_cus02"]
|
||||
[ext_resource type="Texture2D" uid="uid://eg5ej0mtuac" path="res://art/masks/field_outline_2.png" id="4_msuq8"]
|
||||
[ext_resource type="Texture2D" uid="uid://djpigvoyadvjs" path="res://art/masks/field_outline_3.png" id="5_21et0"]
|
||||
[ext_resource type="Texture2D" uid="uid://cpxjptdjw7bi6" path="res://art/farm/tilable grounds/böden/trockene farming erde rund.png" id="2_yi42k"]
|
||||
[ext_resource type="Texture2D" uid="uid://d3dq15edmgbwf" path="res://art/farm/tilable grounds/böden/nasse farming erde rund.png" id="4_lsfck"]
|
||||
[ext_resource type="PackedScene" uid="uid://c3hwbwo423nbm" path="res://prefabs/farm/base_plant_2d.tscn" id="5_femni"]
|
||||
[ext_resource type="Texture2D" uid="uid://c2pirgay3jfnn" path="res://art/farm/tilable grounds/böden/trockene farming erde.png" id="6_4k6eh"]
|
||||
[ext_resource type="Texture2D" uid="uid://ctvdxwgmfaj5c" path="res://art/farm/tilable grounds/böden/nasse farming erde.png" id="7_rrmd3"]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_yi42k"]
|
||||
resource_local_to_scene = true
|
||||
@@ -24,15 +21,13 @@ visible = false
|
||||
z_index = 1
|
||||
scale = Vector2(2.225, 2.225)
|
||||
|
||||
[node name="FieldBehaviour" type="Sprite2D" parent="." node_paths=PackedStringArray("_fieldSprite", "_maskSprite", "_growingCollider")]
|
||||
[node name="FieldBehaviour" type="Sprite2D" parent="." node_paths=PackedStringArray("_growingCollider")]
|
||||
z_index = -1
|
||||
scale = Vector2(0.9, 1)
|
||||
texture = ExtResource("2_yi42k")
|
||||
script = ExtResource("2_femni")
|
||||
_fieldSprite = NodePath("MaskedField/FieldTexture")
|
||||
_maskSprite = NodePath("MaskedField")
|
||||
_maskTexture = Array[Texture2D]([ExtResource("3_cus02"), ExtResource("4_msuq8"), ExtResource("5_21et0")])
|
||||
Tilled = ExtResource("6_4k6eh")
|
||||
Watered = ExtResource("7_rrmd3")
|
||||
Tilled = ExtResource("2_yi42k")
|
||||
Watered = ExtResource("4_lsfck")
|
||||
_growingCollider = NodePath("BasePlant/InteractionArea")
|
||||
|
||||
[node name="BasePlant" parent="FieldBehaviour" node_paths=PackedStringArray("_field") instance=ExtResource("5_femni")]
|
||||
@@ -50,17 +45,12 @@ shape = SubResource("CircleShape2D_yi42k")
|
||||
[node name="CollisionShape3D" parent="FieldBehaviour/BasePlant/ReadyPlantInventoryItem/InteractionArea2/Area2D" index="0"]
|
||||
shape = SubResource("CircleShape2D_femni")
|
||||
|
||||
[node name="Label" parent="FieldBehaviour/BasePlant/ReadyPlantInventoryItem/InteractionArea2" index="1"]
|
||||
visible = false
|
||||
|
||||
[node name="ReadyPlant" parent="FieldBehaviour/BasePlant/ReadyPlantInventoryItem" index="5"]
|
||||
position = Vector2(0, -291.3)
|
||||
|
||||
[node name="MaskedField" type="Sprite2D" parent="FieldBehaviour"]
|
||||
clip_children = 1
|
||||
scale = Vector2(1.5, 1.5)
|
||||
texture = ExtResource("4_msuq8")
|
||||
|
||||
[node name="FieldTexture" type="Sprite2D" parent="FieldBehaviour/MaskedField"]
|
||||
texture = ExtResource("6_4k6eh")
|
||||
|
||||
[connection signal="Interacted" from="InteractionArea2" to="FieldBehaviour/BasePlant" method="Grow"]
|
||||
|
||||
[editable path="FieldBehaviour/BasePlant"]
|
||||
|
||||
@@ -1,219 +0,0 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://muuxxgvx33fp"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://hvchk6t0xe7j" path="res://art/animals/Ente.png" id="1_cgxhx"]
|
||||
|
||||
[node name="Duck" type="Node2D"]
|
||||
|
||||
[node name="body" type="Node2D" parent="."]
|
||||
|
||||
[node name="torso" type="Sprite2D" parent="body"]
|
||||
position = Vector2(11, 308)
|
||||
scale = Vector2(1.07526, 1.01724)
|
||||
texture = ExtResource("1_cgxhx")
|
||||
offset = Vector2(0, -100)
|
||||
region_enabled = true
|
||||
region_rect = Rect2(30, 168, 125, 326)
|
||||
|
||||
[node name="head" type="Sprite2D" parent="body"]
|
||||
position = Vector2(39, 56)
|
||||
rotation = 0.0272577
|
||||
scale = Vector2(1.07521, 1.01729)
|
||||
skew = 0.00319612
|
||||
texture = ExtResource("1_cgxhx")
|
||||
offset = Vector2(40, -10)
|
||||
region_enabled = true
|
||||
region_rect = Rect2(45, 24, 87, 82)
|
||||
|
||||
[node name="wing" type="Sprite2D" parent="body"]
|
||||
position = Vector2(-34, 263)
|
||||
rotation = -0.384652
|
||||
scale = Vector2(0.94817, 1.01462)
|
||||
skew = -0.0401236
|
||||
texture = ExtResource("1_cgxhx")
|
||||
offset = Vector2(-50, 50)
|
||||
region_enabled = true
|
||||
region_rect = Rect2(196, 231, 180, 164)
|
||||
|
||||
[node name="underbelly" type="Sprite2D" parent="body"]
|
||||
position = Vector2(-11, 340)
|
||||
rotation = -2.94251
|
||||
scale = Vector2(0.762641, 1.06974)
|
||||
skew = 0.0226374
|
||||
texture = ExtResource("1_cgxhx")
|
||||
region_enabled = true
|
||||
region_rect = Rect2(196, 231, 180, 164)
|
||||
|
||||
[node name="leg left" type="Sprite2D" parent="body"]
|
||||
position = Vector2(45, 323)
|
||||
rotation = 2.61158
|
||||
scale = Vector2(0.719395, 0.70185)
|
||||
skew = -0.0496454
|
||||
texture = ExtResource("1_cgxhx")
|
||||
region_enabled = true
|
||||
region_rect = Rect2(196, 231, 177, 161)
|
||||
|
||||
[node name="leg right" type="Sprite2D" parent="body"]
|
||||
position = Vector2(-24, 364)
|
||||
scale = Vector2(1.07526, 1.01724)
|
||||
texture = ExtResource("1_cgxhx")
|
||||
region_enabled = true
|
||||
region_rect = Rect2(196, 231, 177, 161)
|
||||
|
||||
[node name="left thigh" type="Sprite2D" parent="body"]
|
||||
position = Vector2(20.6384, 395.665)
|
||||
rotation = -3.13988
|
||||
scale = Vector2(0.647275, 0.575169)
|
||||
skew = 0.000200629
|
||||
texture = ExtResource("1_cgxhx")
|
||||
region_enabled = true
|
||||
region_rect = Rect2(368, 263, 81, 89)
|
||||
|
||||
[node name="beak upper" type="Sprite2D" parent="body"]
|
||||
z_index = 1
|
||||
y_sort_enabled = true
|
||||
position = Vector2(112.206, 69.1074)
|
||||
rotation = 0.0776945
|
||||
scale = Vector2(0.628805, 0.508821)
|
||||
skew = 0.0090723
|
||||
texture = ExtResource("1_cgxhx")
|
||||
offset = Vector2(50, 0)
|
||||
region_enabled = true
|
||||
region_rect = Rect2(292, 37, 152, 98)
|
||||
|
||||
[node name="beak lower" type="Sprite2D" parent="body"]
|
||||
y_sort_enabled = true
|
||||
position = Vector2(108, 84)
|
||||
rotation = 0.118232
|
||||
scale = Vector2(0.628514, 0.509083)
|
||||
skew = 0.0137196
|
||||
texture = ExtResource("1_cgxhx")
|
||||
offset = Vector2(50, 0)
|
||||
region_enabled = true
|
||||
region_rect = Rect2(295, 170, 145, 39)
|
||||
|
||||
[node name="right thigh" type="Sprite2D" parent="body"]
|
||||
position = Vector2(61.9819, 296.858)
|
||||
rotation = 1.00015
|
||||
scale = Vector2(0.915981, 0.882641)
|
||||
skew = 0.0492033
|
||||
texture = ExtResource("1_cgxhx")
|
||||
region_enabled = true
|
||||
region_rect = Rect2(368, 263, 81, 89)
|
||||
|
||||
[node name="left shin" type="Sprite2D" parent="body"]
|
||||
position = Vector2(12, 417)
|
||||
rotation = 2.67668
|
||||
scale = Vector2(0.695871, 0.569878)
|
||||
skew = -0.045905
|
||||
texture = ExtResource("1_cgxhx")
|
||||
offset = Vector2(10, -50)
|
||||
region_enabled = true
|
||||
region_rect = Rect2(360, 361, 68, 126)
|
||||
|
||||
[node name="right foot" type="Sprite2D" parent="body"]
|
||||
position = Vector2(-54, 466)
|
||||
rotation = 0.872523
|
||||
scale = Vector2(1.04006, 1.0532)
|
||||
skew = 0.0540016
|
||||
texture = ExtResource("1_cgxhx")
|
||||
offset = Vector2(40, 40)
|
||||
region_enabled = true
|
||||
region_rect = Rect2(246, 393, 111, 111)
|
||||
|
||||
[node name="right shin" type="Sprite2D" parent="body"]
|
||||
position = Vector2(-24, 364)
|
||||
scale = Vector2(1.07526, 1.01724)
|
||||
texture = ExtResource("1_cgxhx")
|
||||
region_enabled = true
|
||||
region_rect = Rect2(360, 361, 68, 126)
|
||||
|
||||
[node name="left foot" type="Sprite2D" parent="body"]
|
||||
position = Vector2(32, 466)
|
||||
rotation = 0.0756956
|
||||
scale = Vector2(0.703793, 0.562891)
|
||||
skew = 0.00884056
|
||||
texture = ExtResource("1_cgxhx")
|
||||
offset = Vector2(40, 40)
|
||||
region_enabled = true
|
||||
region_rect = Rect2(246, 393, 111, 111)
|
||||
|
||||
[node name="bones" type="Node2D" parent="."]
|
||||
position = Vector2(76.3651, 53.1382)
|
||||
scale = Vector2(1.07526, 1.01724)
|
||||
|
||||
[node name="Skeleton2D" type="Skeleton2D" parent="bones"]
|
||||
|
||||
[node name="hip" type="Bone2D" parent="bones/Skeleton2D"]
|
||||
position = Vector2(-71.9501, 273.153)
|
||||
rest = Transform2D(1, 0, 0, 1, -71.9501, 273.153)
|
||||
|
||||
[node name="LegR" type="Bone2D" parent="bones/Skeleton2D/hip"]
|
||||
position = Vector2(-21.3902, 32.4407)
|
||||
rest = Transform2D(1, 0, 0, 1, -21.3902, 32.4407)
|
||||
|
||||
[node name="ShinR" type="Bone2D" parent="bones/Skeleton2D/hip/LegR"]
|
||||
position = Vector2(-33.4803, 51.1187)
|
||||
rest = Transform2D(1, 0, 0, 1, -33.4803, 51.1187)
|
||||
|
||||
[node name="FootR" type="Bone2D" parent="bones/Skeleton2D/hip/LegR/ShinR"]
|
||||
position = Vector2(5.58005, 49.1526)
|
||||
rotation = 0.899694
|
||||
rest = Transform2D(1.96831, 2.30362, -2.30362, 1.96831, 5.58005, 49.1526)
|
||||
|
||||
[node name="RemoteTransform2D" type="RemoteTransform2D" parent="bones/Skeleton2D/hip/LegR/ShinR/FootR"]
|
||||
remote_path = NodePath("../../../../../../../body/right foot")
|
||||
|
||||
[node name="RemoteTransform2D" type="RemoteTransform2D" parent="bones/Skeleton2D/hip/LegR/ShinR"]
|
||||
position = Vector2(33.4803, -51.1187)
|
||||
remote_path = NodePath("../../../../../../body/right shin")
|
||||
|
||||
[node name="RemoteTransform2D" type="RemoteTransform2D" parent="bones/Skeleton2D/hip/LegR"]
|
||||
remote_path = NodePath("../../../../../body/leg right")
|
||||
|
||||
[node name="LegL" type="Bone2D" parent="bones/Skeleton2D/hip"]
|
||||
position = Vector2(34.4103, 14.7458)
|
||||
rotation = -1.17489
|
||||
scale = Vector2(1, 1)
|
||||
rest = Transform2D(0.385641, -0.922649, 0.922649, 0.385641, 34.4103, 14.7458)
|
||||
|
||||
[node name="ShinR" type="Bone2D" parent="bones/Skeleton2D/hip/LegL"]
|
||||
position = Vector2(-71.1914, 5.56455)
|
||||
rest = Transform2D(1, 0, 0, 1, -71.1914, 5.56455)
|
||||
|
||||
[node name="FootR" type="Bone2D" parent="bones/Skeleton2D/hip/LegL/ShinR"]
|
||||
position = Vector2(-36.1531, 28.2146)
|
||||
rotation = 0.126687
|
||||
scale = Vector2(3.03, 3.03)
|
||||
rest = Transform2D(3.00572, 0.382835, -0.382835, 3.00572, -36.1531, 28.2146)
|
||||
|
||||
[node name="WingR" type="Bone2D" parent="bones/Skeleton2D/hip"]
|
||||
position = Vector2(-25.1102, -67.8306)
|
||||
rotation = 1.93641
|
||||
scale = Vector2(8.485, 8.485)
|
||||
rest = Transform2D(-3.03359, 7.92417, -7.92417, -3.03359, -25.1102, -67.8306)
|
||||
|
||||
[node name="WingL" type="Bone2D" parent="bones/Skeleton2D/hip"]
|
||||
position = Vector2(51.1504, -71.7628)
|
||||
rotation = 0.172541
|
||||
scale = Vector2(8.485, 8.485)
|
||||
rest = Transform2D(8.35901, 1.45676, -1.45676, 8.35901, 51.1504, -71.7628)
|
||||
|
||||
[node name="Neck" type="Bone2D" parent="bones/Skeleton2D/hip"]
|
||||
position = Vector2(29.7603, -88.4747)
|
||||
rest = Transform2D(1, 0, 0, 1, 29.7603, -88.4747)
|
||||
|
||||
[node name="Head" type="Bone2D" parent="bones/Skeleton2D/hip/Neck"]
|
||||
position = Vector2(18.6001, -166.136)
|
||||
rest = Transform2D(1, 0, 0, 1, 18.6001, -166.136)
|
||||
|
||||
[node name="BeakUpper" type="Bone2D" parent="bones/Skeleton2D/hip/Neck/Head"]
|
||||
position = Vector2(49.2904, -6.88138)
|
||||
rotation = 0.445425
|
||||
scale = Vector2(3.39, 3.39)
|
||||
rest = Transform2D(3.05923, 1.46055, -1.46055, 3.05923, 49.2904, -6.88138)
|
||||
|
||||
[node name="BeakLower" type="Bone2D" parent="bones/Skeleton2D/hip/Neck/Head"]
|
||||
position = Vector2(45.5704, 16.7119)
|
||||
rotation = 0.170714
|
||||
scale = Vector2(3.085, 3.085)
|
||||
rest = Transform2D(3.04016, 0.5241, -0.5241, 3.04016, 45.5704, 16.7119)
|
||||
@@ -1,49 +0,0 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://hk8ahyp6dgl6"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://c76mhhqyk4lgh" path="res://scripts/CSharp/Common/Fight/FightInstance.cs" id="1_ygesl"]
|
||||
[ext_resource type="Script" uid="uid://oe1uypehqvr7" path="res://scripts/CSharp/Common/Fight/FightStateManager.cs" id="2_b0ivm"]
|
||||
|
||||
[node name="FightBaseScene" type="Node2D" node_paths=PackedStringArray("_friendlyFightSpots", "_enemyFightSpots", "camPositionNode", "_fightStateManager", "_fightEndText")]
|
||||
script = ExtResource("1_ygesl")
|
||||
_friendlyFightSpots = [NodePath("FriendlyPositions/FriendPos1"), NodePath("FriendlyPositions/FriendPos2"), NodePath("FriendlyPositions/FriendPos3")]
|
||||
_enemyFightSpots = [NodePath("EnemyPositions/EnemyPos1"), NodePath("EnemyPositions/EnemyPos2"), NodePath("EnemyPositions/EnemyPos3")]
|
||||
camPositionNode = NodePath("CamPositionMarker")
|
||||
_fightStateManager = NodePath("FightStateManager")
|
||||
_fightEndText = NodePath("ResultText")
|
||||
|
||||
[node name="FriendlyPositions" type="Node2D" parent="."]
|
||||
position = Vector2(-625, -6)
|
||||
|
||||
[node name="FriendPos1" type="Node2D" parent="FriendlyPositions"]
|
||||
position = Vector2(0, -395)
|
||||
|
||||
[node name="FriendPos2" type="Node2D" parent="FriendlyPositions"]
|
||||
|
||||
[node name="FriendPos3" type="Node2D" parent="FriendlyPositions"]
|
||||
position = Vector2(0, 424)
|
||||
|
||||
[node name="EnemyPositions" type="Node2D" parent="."]
|
||||
position = Vector2(611, -12)
|
||||
|
||||
[node name="EnemyPos1" type="Node2D" parent="EnemyPositions"]
|
||||
position = Vector2(0, -395)
|
||||
|
||||
[node name="EnemyPos2" type="Node2D" parent="EnemyPositions"]
|
||||
|
||||
[node name="EnemyPos3" type="Node2D" parent="EnemyPositions"]
|
||||
position = Vector2(0, 424)
|
||||
|
||||
[node name="FightStateManager" type="Node" parent="."]
|
||||
script = ExtResource("2_b0ivm")
|
||||
|
||||
[node name="CamPositionMarker" type="Node2D" parent="."]
|
||||
|
||||
[node name="ResultText" type="Label" parent="."]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_font_sizes/font_size = 141
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
@@ -1,8 +0,0 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://cnjsepvaqdbyq"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://j5ge24rk25wm" path="res://scripts/CSharp/Common/Fight/FightManager.cs" id="1_8p7ev"]
|
||||
[ext_resource type="PackedScene" uid="uid://cpanatqdjjpa3" path="res://prefabs/fight/fighters/vesna_fighter.tscn" id="2_ak1vo"]
|
||||
|
||||
[node name="FightManagerAutoload" type="Node"]
|
||||
script = ExtResource("1_8p7ev")
|
||||
fightingVesnaScene = ExtResource("2_ak1vo")
|
||||
@@ -1,89 +0,0 @@
|
||||
[gd_scene load_steps=7 format=3 uid="uid://bp64p6y72j71w"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://ccrnmx6bd842k" path="res://art/characters/farm fäulnis blobs.png" id="1_vem8k"]
|
||||
[ext_resource type="Script" uid="uid://by88f32fou7lh" path="res://scripts/CSharp/Common/Fight/Fighter.cs" id="2_4w1ab"]
|
||||
[ext_resource type="Texture2D" uid="uid://qlfwuakhe57t" path="res://art/ui/UI/attack_select_wheel.png" id="3_v4f83"]
|
||||
[ext_resource type="Texture2D" uid="uid://bn56p0ytuo060" path="res://art/ui/UI/AttackButton.png" id="5_vbkts"]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_284vk"]
|
||||
radius = 291.58
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_s74nc"]
|
||||
radius = 173.44
|
||||
|
||||
[node name="EnemyBlobFighter" type="Node2D" node_paths=PackedStringArray("_attackButtons", "_targetButtons", "_targetMarker", "_healthText", "_visualSprite")]
|
||||
script = ExtResource("2_4w1ab")
|
||||
name = "Blob"
|
||||
maxHealth = 50
|
||||
attackStrength = 5
|
||||
_attackButtons = NodePath("FightButtons")
|
||||
_targetButtons = NodePath("TargetButtons")
|
||||
_targetMarker = NodePath("TargetButtons/TargetMarker")
|
||||
_healthText = NodePath("HealthShow")
|
||||
_visualSprite = NodePath("Sprite2D")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
texture = ExtResource("1_vem8k")
|
||||
offset = Vector2(-8, -130)
|
||||
region_enabled = true
|
||||
region_rect = Rect2(1735.63, 108.423, 320.374, 333.577)
|
||||
|
||||
[node name="TargetButtons" type="Node2D" parent="."]
|
||||
visible = false
|
||||
|
||||
[node name="TargetMarker" type="Sprite2D" parent="TargetButtons"]
|
||||
visible = false
|
||||
z_index = 200
|
||||
position = Vector2(8, -122)
|
||||
scale = Vector2(4.245, 4.245)
|
||||
texture = ExtResource("3_v4f83")
|
||||
|
||||
[node name="Area2D" type="Area2D" parent="TargetButtons"]
|
||||
position = Vector2(3, -76)
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="TargetButtons/Area2D"]
|
||||
shape = SubResource("CircleShape2D_284vk")
|
||||
|
||||
[node name="FightButtons" type="Node2D" parent="."]
|
||||
visible = false
|
||||
position = Vector2(3, -588)
|
||||
|
||||
[node name="CircleBackground" type="Sprite2D" parent="FightButtons"]
|
||||
z_index = 200
|
||||
scale = Vector2(4.245, 4.245)
|
||||
texture = ExtResource("3_v4f83")
|
||||
|
||||
[node name="AttackButton" type="Node2D" parent="FightButtons"]
|
||||
position = Vector2(0, -536)
|
||||
|
||||
[node name="ButtonBackground" type="Sprite2D" parent="FightButtons/AttackButton"]
|
||||
z_index = 200
|
||||
scale = Vector2(2.48, 2.48)
|
||||
texture = ExtResource("5_vbkts")
|
||||
|
||||
[node name="Area2D" type="Area2D" parent="FightButtons/AttackButton"]
|
||||
collision_layer = 16
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="FightButtons/AttackButton/Area2D"]
|
||||
shape = SubResource("CircleShape2D_s74nc")
|
||||
|
||||
[node name="HealthShow" type="Label" parent="."]
|
||||
z_index = 200
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_left = -197.0
|
||||
offset_top = -451.0
|
||||
offset_right = 207.0
|
||||
offset_bottom = -305.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_font_sizes/font_size = 106
|
||||
text = "100/100"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[connection signal="input_event" from="TargetButtons/Area2D" to="." method="TargetMouseEvent"]
|
||||
[connection signal="mouse_entered" from="TargetButtons/Area2D" to="." method="StartHoverTarget"]
|
||||
[connection signal="mouse_exited" from="TargetButtons/Area2D" to="." method="EndHoverTarget"]
|
||||
[connection signal="input_event" from="FightButtons/AttackButton/Area2D" to="." method="AttackMouseEvent"]
|
||||
@@ -1,84 +0,0 @@
|
||||
[gd_scene load_steps=7 format=3 uid="uid://cpanatqdjjpa3"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://by88f32fou7lh" path="res://scripts/CSharp/Common/Fight/Fighter.cs" id="1_f3j2x"]
|
||||
[ext_resource type="Texture2D" uid="uid://om2axn1vfa5o" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0001.png" id="2_2ud32"]
|
||||
[ext_resource type="Texture2D" uid="uid://qlfwuakhe57t" path="res://art/ui/UI/attack_select_wheel.png" id="3_80knd"]
|
||||
[ext_resource type="Texture2D" uid="uid://bn56p0ytuo060" path="res://art/ui/UI/AttackButton.png" id="4_0tqnl"]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_0tqnl"]
|
||||
radius = 291.58
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_4r2vf"]
|
||||
radius = 173.44
|
||||
|
||||
[node name="VesnaFighter" type="Node2D" node_paths=PackedStringArray("_attackButtons", "_targetButtons", "_targetMarker", "_healthText", "_visualSprite")]
|
||||
script = ExtResource("1_f3j2x")
|
||||
name = "Vesna"
|
||||
maxHealth = 100
|
||||
attackStrength = 10
|
||||
_attackButtons = NodePath("FightButtons")
|
||||
_targetButtons = NodePath("TargetButtons")
|
||||
_targetMarker = NodePath("TargetButtons/TargetMarker")
|
||||
_healthText = NodePath("HealthShow")
|
||||
_visualSprite = NodePath("Sprite2D")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
texture = ExtResource("2_2ud32")
|
||||
offset = Vector2(43, -379)
|
||||
|
||||
[node name="TargetButtons" type="Node2D" parent="."]
|
||||
visible = false
|
||||
|
||||
[node name="TargetMarker" type="Sprite2D" parent="TargetButtons"]
|
||||
visible = false
|
||||
z_index = 200
|
||||
position = Vector2(8, -122)
|
||||
scale = Vector2(4.245, 4.245)
|
||||
texture = ExtResource("3_80knd")
|
||||
|
||||
[node name="Area2D" type="Area2D" parent="TargetButtons"]
|
||||
position = Vector2(3, -76)
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="TargetButtons/Area2D"]
|
||||
shape = SubResource("CircleShape2D_0tqnl")
|
||||
|
||||
[node name="FightButtons" type="Node2D" parent="."]
|
||||
visible = false
|
||||
position = Vector2(3, -714)
|
||||
|
||||
[node name="CircleBackground" type="Sprite2D" parent="FightButtons"]
|
||||
z_index = 200
|
||||
scale = Vector2(4.245, 4.245)
|
||||
texture = ExtResource("3_80knd")
|
||||
|
||||
[node name="AttackButton" type="Node2D" parent="FightButtons"]
|
||||
position = Vector2(0, -536)
|
||||
|
||||
[node name="ButtonBackground" type="Sprite2D" parent="FightButtons/AttackButton"]
|
||||
z_index = 200
|
||||
scale = Vector2(2.48, 2.48)
|
||||
texture = ExtResource("4_0tqnl")
|
||||
|
||||
[node name="Area2D" type="Area2D" parent="FightButtons/AttackButton"]
|
||||
collision_layer = 16
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="FightButtons/AttackButton/Area2D"]
|
||||
shape = SubResource("CircleShape2D_4r2vf")
|
||||
|
||||
[node name="HealthShow" type="Label" parent="."]
|
||||
z_index = 200
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_left = -197.0
|
||||
offset_top = -947.0
|
||||
offset_right = 207.0
|
||||
offset_bottom = -801.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_font_sizes/font_size = 106
|
||||
text = "100/100"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[connection signal="input_event" from="FightButtons/AttackButton/Area2D" to="." method="AttackMouseEvent"]
|
||||
@@ -27,17 +27,31 @@ buses/default_bus_layout="uid://b6dwkmkyb0axk"
|
||||
Dialogic="*res://addons/dialogic/Core/DialogicGameHandler.gd"
|
||||
InventoryManager="*res://scripts/CSharp/Common/Inventory/InventoryManager.cs"
|
||||
QuestManager="*res://scripts/CSharp/Common/Quest/QuestManager.cs"
|
||||
FightManagerAutoload="*res://prefabs/fight/fight_manager_autoload.tscn"
|
||||
Signal_Debugger="*res://addons/SignalVisualizer/Debugger/SignalDebugger.gd"
|
||||
|
||||
[dialogic]
|
||||
|
||||
directories/dch_directory={
|
||||
"Chuga": "res://dialog/Chuga.dch",
|
||||
"Domovoi": "res://dialog/Domovoi.dch",
|
||||
"Everyone": "res://dialog/Everyone.dch",
|
||||
"Vesna2": "res://dialog/Vesna2.dch",
|
||||
"Yeli": "res://dialog/Yeli.dch",
|
||||
"defaulty_the_default_character": "res://dialog/defaulty_the_default_character.dch",
|
||||
"semi_cat": "res://dialog/semi_cat.dch"
|
||||
}
|
||||
directories/dtl_directory={
|
||||
"quest1_ducks_end": "res://dialog/quest1_ducks_end.dtl",
|
||||
"quest1_ducks_start": "res://dialog/quest1_ducks_start.dtl",
|
||||
"quest2_tomatoes_end": "res://dialog/quest2_tomatoes_end.dtl",
|
||||
"quest2_tomatoes_interim": "res://dialog/quest2_tomatoes_interim.dtl",
|
||||
"quest2_tomatoes_start": "res://dialog/quest2_tomatoes_start.dtl",
|
||||
"quest3_beets_end": "res://dialog/quest3_beets_end.dtl",
|
||||
"quest3_beets_interim": "res://dialog/quest3_beets_interim.dtl",
|
||||
"quest3_beets_start": "res://dialog/quest3_beets_start.dtl",
|
||||
"quest4_dinner": "res://dialog/quest4_dinner.dtl",
|
||||
"quest5_forest_end": "res://dialog/quest5_forest_end.dtl",
|
||||
"quest5_forest_start": "res://dialog/quest5_forest_start.dtl",
|
||||
"semi_cat": "res://dialog/semi_cat.dtl",
|
||||
"test_time_line": "res://dialog/test_time_line.dtl",
|
||||
"yeli_intro_01": "res://dialog/yeli_intro_01.dtl",
|
||||
@@ -88,10 +102,7 @@ glossary/glossary_files=["res://dialog/farming_equipment_glossary.tres"]
|
||||
|
||||
[display]
|
||||
|
||||
window/size/viewport_width=2000
|
||||
window/size/viewport_height=1000
|
||||
window/size/always_on_top=true
|
||||
window/stretch/mode="viewport"
|
||||
window/stretch/aspect="keep_height"
|
||||
|
||||
[dotnet]
|
||||
@@ -168,6 +179,11 @@ interact={
|
||||
"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":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
ui_inventory_journal_open_close={
|
||||
"deadzone": 0.5,
|
||||
"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":74,"key_label":0,"unicode":106,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
ui_inventory_open_close={
|
||||
"deadzone": 0.5,
|
||||
"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":73,"key_label":0,"unicode":105,"location":0,"echo":false,"script":null)
|
||||
@@ -198,11 +214,6 @@ ui_inventory_close={
|
||||
"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":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
ui_inventory_journal_open_close={
|
||||
"deadzone": 0.5,
|
||||
"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":74,"key_label":0,"unicode":106,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
|
||||
[internationalization]
|
||||
|
||||
@@ -214,7 +225,6 @@ locale/translations=PackedStringArray("res://dialog/translations/dialogic_charac
|
||||
3d_physics/layer_1="General"
|
||||
2d_physics/layer_2="Background elements"
|
||||
2d_physics/layer_3="player"
|
||||
2d_physics/layer_5="fight ui"
|
||||
3d_physics/layer_5="Player"
|
||||
|
||||
[rendering]
|
||||
|
||||
@@ -1,23 +1,22 @@
|
||||
[gd_scene load_steps=24 format=3 uid="uid://bm21nqepnwaik"]
|
||||
[gd_scene load_steps=23 format=3 uid="uid://bm21nqepnwaik"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cssdu8viimwm6" path="res://scripts/CSharp/Common/SceneTransition.cs" id="1_3vr4f"]
|
||||
[ext_resource type="Texture2D" uid="uid://cnhsxxps2cw5" path="res://art/indoor/room export/Room_01_table.png" id="2_ubg3a"]
|
||||
[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://x7trh4dgsvoe" path="res://art/indoor/room export/Room_01_assets.png" id="4_27bwy"]
|
||||
[ext_resource type="Texture2D" uid="uid://waqmjrxduxfq" path="res://art/indoor/room export/Room_01_walls.png" id="5_sndxu"]
|
||||
[ext_resource type="Texture2D" uid="uid://bqwhptcgg5ons" path="res://art/indoor/room export/Room_01_dorr_R.png" id="6_blyw3"]
|
||||
[ext_resource type="Texture2D" uid="uid://vyk63d0pgqm5" path="res://art/indoor/room export/Room_01_dioor L.png" id="7_yd2gv"]
|
||||
[ext_resource type="Texture2D" uid="uid://b2rj7wkyu6ehy" path="res://art/indoor/room export/Room_01_pechka.png" id="8_ofqcg"]
|
||||
[ext_resource type="Texture2D" uid="uid://dhvi5404cqioa" path="res://art/indoor/room export/Room_01_window.png" id="9_aoesu"]
|
||||
[ext_resource type="Texture2D" uid="uid://bpi35nxbhput8" path="res://art/indoor/room export/Room_01_pechkaDoor.png" id="10_xcryd"]
|
||||
[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://cop1vjvhwlsec" path="res://art/indoor/room export/Room_01_shelf.png" id="12_bu2a1"]
|
||||
[ext_resource type="Texture2D" uid="uid://404glx32r1w8" path="res://art/indoor/room export/Room_01_bench.png" id="13_rongr"]
|
||||
[ext_resource type="Texture2D" uid="uid://ckvytnpi8gcxq" path="res://art/eyes_atlas.png" id="14_d7yky"]
|
||||
[ext_resource type="PackedScene" uid="uid://c25udixd5m6l0" path="res://prefabs/characters/Player2D.tscn" id="15_7a68a"]
|
||||
[ext_resource type="PackedScene" uid="uid://dfvgp1my5rydh" path="res://prefabs/characters/Yeli.tscn" id="16_dhsxs"]
|
||||
[ext_resource type="Script" uid="uid://cvkw4qd2hxksi" path="res://scripts/GdScript/dialogic_toggle.gd" id="17_k0k8c"]
|
||||
[ext_resource type="Script" uid="uid://bqomwxclsbhd3" path="res://scripts/CSharp/Common/Camera/CameraController.cs" id="18_dw4nn"]
|
||||
[ext_resource type="Script" uid="uid://cssdu8viimwm6" path="res://scripts/CSharp/Common/SceneTransition.cs" id="1_aivb2"]
|
||||
[ext_resource type="PackedScene" uid="uid://c25udixd5m6l0" path="res://prefabs/characters/Player2D.tscn" id="2_a2ood"]
|
||||
[ext_resource type="Texture2D" uid="uid://waqmjrxduxfq" path="res://art/indoor/room export/Room_01_walls.png" id="3_a2ood"]
|
||||
[ext_resource type="Texture2D" uid="uid://cnhsxxps2cw5" path="res://art/indoor/room export/Room_01_table.png" id="3_je1cl"]
|
||||
[ext_resource type="Texture2D" uid="uid://blg50is4kuh2f" path="res://art/indoor/room export/Room_01_chair.png" id="4_hjjhl"]
|
||||
[ext_resource type="Texture2D" uid="uid://bqwhptcgg5ons" path="res://art/indoor/room export/Room_01_dorr_R.png" id="5_8o6or"]
|
||||
[ext_resource type="Texture2D" uid="uid://dhvi5404cqioa" path="res://art/indoor/room export/Room_01_window.png" id="6_j5d18"]
|
||||
[ext_resource type="Texture2D" uid="uid://404glx32r1w8" path="res://art/indoor/room export/Room_01_bench.png" id="7_ciwvv"]
|
||||
[ext_resource type="Texture2D" uid="uid://cop1vjvhwlsec" path="res://art/indoor/room export/Room_01_shelf.png" id="8_8o6or"]
|
||||
[ext_resource type="Texture2D" uid="uid://vyk63d0pgqm5" path="res://art/indoor/room export/Room_01_dioor L.png" id="8_wuntg"]
|
||||
[ext_resource type="Texture2D" uid="uid://b2rj7wkyu6ehy" path="res://art/indoor/room export/Room_01_pechka.png" id="9_aivb2"]
|
||||
[ext_resource type="Texture2D" uid="uid://bpi35nxbhput8" path="res://art/indoor/room export/Room_01_pechkaDoor.png" id="10_835kg"]
|
||||
[ext_resource type="Texture2D" uid="uid://tyypifpte0pb" path="res://art/indoor/room export/Room_01_chugun.png" id="11_atjbs"]
|
||||
[ext_resource type="Texture2D" uid="uid://x7trh4dgsvoe" path="res://art/indoor/room export/Room_01_assets.png" id="13_j5d18"]
|
||||
[ext_resource type="Texture2D" uid="uid://ckvytnpi8gcxq" path="res://art/eyes_atlas.png" id="14_j5d18"]
|
||||
[ext_resource type="PackedScene" uid="uid://dfvgp1my5rydh" path="res://prefabs/characters/Yeli.tscn" id="15_ciwvv"]
|
||||
[ext_resource type="Script" uid="uid://cvkw4qd2hxksi" path="res://scripts/GdScript/dialogic_toggle.gd" id="17_835kg"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_a2ood"]
|
||||
resource_local_to_scene = true
|
||||
@@ -114,14 +113,14 @@ radius = 300.0
|
||||
|
||||
[node name="IndoorTest" type="Node2D"]
|
||||
y_sort_enabled = true
|
||||
script = ExtResource("1_3vr4f")
|
||||
script = ExtResource("1_aivb2")
|
||||
|
||||
[node name="Foreground" type="Node" parent="."]
|
||||
|
||||
[node name="Table" type="Sprite2D" parent="Foreground"]
|
||||
y_sort_enabled = true
|
||||
position = Vector2(-1888, 1112)
|
||||
texture = ExtResource("2_ubg3a")
|
||||
texture = ExtResource("3_je1cl")
|
||||
offset = Vector2(0, -200)
|
||||
region_enabled = true
|
||||
region_rect = Rect2(1012, 1743, 1470, 417)
|
||||
@@ -129,7 +128,7 @@ region_rect = Rect2(1012, 1743, 1470, 417)
|
||||
[node name="Chair" type="Sprite2D" parent="Foreground"]
|
||||
y_sort_enabled = true
|
||||
position = Vector2(-3032, 2096)
|
||||
texture = ExtResource("3_gpagp")
|
||||
texture = ExtResource("4_hjjhl")
|
||||
offset = Vector2(216, -1064)
|
||||
region_enabled = true
|
||||
region_rect = Rect2(1534, 1976, 379, 184)
|
||||
@@ -137,7 +136,7 @@ region_rect = Rect2(1534, 1976, 379, 184)
|
||||
[node name="Chair2" type="Sprite2D" parent="Foreground"]
|
||||
y_sort_enabled = true
|
||||
position = Vector2(-1064, 2064)
|
||||
texture = ExtResource("3_gpagp")
|
||||
texture = ExtResource("4_hjjhl")
|
||||
offset = Vector2(184, -1056)
|
||||
region_enabled = true
|
||||
region_rect = Rect2(1534, 1976, 379, 184)
|
||||
@@ -146,7 +145,7 @@ region_rect = Rect2(1534, 1976, 379, 184)
|
||||
z_index = 1
|
||||
y_sort_enabled = true
|
||||
position = Vector2(-1904, 1192)
|
||||
texture = ExtResource("4_27bwy")
|
||||
texture = ExtResource("13_j5d18")
|
||||
offset = Vector2(0, -800)
|
||||
region_enabled = true
|
||||
region_rect = Rect2(2093, 49, 421, 630)
|
||||
@@ -181,14 +180,14 @@ shape = SubResource("RectangleShape2D_a2ood")
|
||||
z_index = -100
|
||||
position = Vector2(4992, -487)
|
||||
scale = Vector2(2, 2)
|
||||
texture = ExtResource("5_sndxu")
|
||||
texture = ExtResource("3_a2ood")
|
||||
offset = Vector2(-2768, 264)
|
||||
|
||||
[node name="wall 1" type="Sprite2D" parent="BackWall"]
|
||||
z_index = -100
|
||||
position = Vector2(-4368, 40)
|
||||
scale = Vector2(2, 2)
|
||||
texture = ExtResource("5_sndxu")
|
||||
texture = ExtResource("3_a2ood")
|
||||
flip_h = true
|
||||
region_rect = Rect2(111, 292, 3323, 2160)
|
||||
|
||||
@@ -201,56 +200,56 @@ shape = SubResource("RectangleShape2D_a2ood")
|
||||
[node name="Room01DorrR" type="Sprite2D" parent="BackWall"]
|
||||
z_index = -50
|
||||
position = Vector2(936, -216)
|
||||
texture = ExtResource("6_blyw3")
|
||||
texture = ExtResource("5_8o6or")
|
||||
region_enabled = true
|
||||
region_rect = Rect2(3161, 313, 679, 1050)
|
||||
|
||||
[node name="Room01DioorL" type="Sprite2D" parent="BackWall"]
|
||||
z_index = -50
|
||||
position = Vector2(-3296, 48)
|
||||
texture = ExtResource("7_yd2gv")
|
||||
texture = ExtResource("8_wuntg")
|
||||
region_enabled = true
|
||||
region_rect = Rect2(0, 0, 3840, 2160)
|
||||
|
||||
[node name="Room01Pechka" type="Sprite2D" parent="BackWall"]
|
||||
z_index = -80
|
||||
position = Vector2(-224, -392)
|
||||
texture = ExtResource("8_ofqcg")
|
||||
texture = ExtResource("9_aivb2")
|
||||
region_enabled = true
|
||||
region_rect = Rect2(2236, 0, 724, 1392)
|
||||
|
||||
[node name="Room01Window2" type="Sprite2D" parent="BackWall"]
|
||||
z_index = -50
|
||||
position = Vector2(-3192, -344)
|
||||
texture = ExtResource("9_aoesu")
|
||||
texture = ExtResource("6_j5d18")
|
||||
region_enabled = true
|
||||
region_rect = Rect2(1020, 338, 607, 757)
|
||||
|
||||
[node name="Room01Window3" type="Sprite2D" parent="BackWall"]
|
||||
z_index = -50
|
||||
position = Vector2(-1792, -336)
|
||||
texture = ExtResource("9_aoesu")
|
||||
texture = ExtResource("6_j5d18")
|
||||
region_enabled = true
|
||||
region_rect = Rect2(1020, 338, 607, 757)
|
||||
|
||||
[node name="Room01PechkaDoor" type="Sprite2D" parent="BackWall"]
|
||||
z_index = -50
|
||||
position = Vector2(-248, -96)
|
||||
texture = ExtResource("10_xcryd")
|
||||
texture = ExtResource("10_835kg")
|
||||
region_enabled = true
|
||||
region_rect = Rect2(2360, 864, 356, 251)
|
||||
|
||||
[node name="Room01Chugun" type="Sprite2D" parent="BackWall"]
|
||||
z_index = -40
|
||||
position = Vector2(16, -560)
|
||||
texture = ExtResource("11_as3nm")
|
||||
texture = ExtResource("11_atjbs")
|
||||
region_enabled = true
|
||||
region_rect = Rect2(2469, 459, 247, 131)
|
||||
|
||||
[node name="Room01Shelf" type="Sprite2D" parent="BackWall"]
|
||||
z_index = -50
|
||||
position = Vector2(-880, -416)
|
||||
texture = ExtResource("12_bu2a1")
|
||||
texture = ExtResource("8_8o6or")
|
||||
region_enabled = true
|
||||
region_rect = Rect2(1846, 471, 348, 490)
|
||||
|
||||
@@ -258,7 +257,7 @@ region_rect = Rect2(1846, 471, 348, 490)
|
||||
z_index = -10
|
||||
y_sort_enabled = true
|
||||
position = Vector2(-3240, 224)
|
||||
texture = ExtResource("13_rongr")
|
||||
texture = ExtResource("7_ciwvv")
|
||||
flip_h = true
|
||||
region_enabled = true
|
||||
region_rect = Rect2(1156, 1185, 940, 189)
|
||||
@@ -266,7 +265,7 @@ region_rect = Rect2(1156, 1185, 940, 189)
|
||||
[node name="Bench2" type="Sprite2D" parent="BackWall"]
|
||||
z_index = -10
|
||||
position = Vector2(-1824, 224)
|
||||
texture = ExtResource("13_rongr")
|
||||
texture = ExtResource("7_ciwvv")
|
||||
region_enabled = true
|
||||
region_rect = Rect2(1156, 1185, 940, 189)
|
||||
|
||||
@@ -276,7 +275,7 @@ region_rect = Rect2(1156, 1185, 940, 189)
|
||||
z_index = -10
|
||||
y_sort_enabled = true
|
||||
position = Vector2(-177, 554.5)
|
||||
texture = ExtResource("4_27bwy")
|
||||
texture = ExtResource("13_j5d18")
|
||||
offset = Vector2(0, -296)
|
||||
region_enabled = true
|
||||
region_rect = Rect2(2244, 763, 274, 91)
|
||||
@@ -285,7 +284,7 @@ region_rect = Rect2(2244, 763, 274, 91)
|
||||
z_index = -10
|
||||
y_sort_enabled = true
|
||||
position = Vector2(335, 474.5)
|
||||
texture = ExtResource("4_27bwy")
|
||||
texture = ExtResource("13_j5d18")
|
||||
offset = Vector2(0, -296)
|
||||
region_enabled = true
|
||||
region_rect = Rect2(3157, 688, 118.519, 221)
|
||||
@@ -294,7 +293,7 @@ region_rect = Rect2(3157, 688, 118.519, 221)
|
||||
z_index = -10
|
||||
y_sort_enabled = true
|
||||
position = Vector2(-857, -37.5)
|
||||
texture = ExtResource("4_27bwy")
|
||||
texture = ExtResource("13_j5d18")
|
||||
offset = Vector2(0, -296)
|
||||
region_enabled = true
|
||||
region_rect = Rect2(2748, 432, 174, 191)
|
||||
@@ -304,7 +303,7 @@ z_index = -10
|
||||
y_sort_enabled = true
|
||||
position = Vector2(-425, -77.5)
|
||||
rotation = -0.0663225
|
||||
texture = ExtResource("4_27bwy")
|
||||
texture = ExtResource("13_j5d18")
|
||||
offset = Vector2(0, -296)
|
||||
region_enabled = true
|
||||
region_rect = Rect2(2624, 435, 49, 76)
|
||||
@@ -315,7 +314,7 @@ y_sort_enabled = true
|
||||
position = Vector2(47.5969, 6.18)
|
||||
rotation = -0.0663225
|
||||
scale = Vector2(1e-05, 1e-05)
|
||||
texture = ExtResource("4_27bwy")
|
||||
texture = ExtResource("13_j5d18")
|
||||
offset = Vector2(43.3898, 128.128)
|
||||
region_enabled = true
|
||||
region_rect = Rect2(3362, 139, 101, 269)
|
||||
@@ -332,7 +331,7 @@ playback_auto_capture = false
|
||||
z_index = -10
|
||||
y_sort_enabled = true
|
||||
position = Vector2(287, -157.5)
|
||||
texture = ExtResource("4_27bwy")
|
||||
texture = ExtResource("13_j5d18")
|
||||
offset = Vector2(0, -296)
|
||||
region_enabled = true
|
||||
region_rect = Rect2(2964, 137, 321, 213)
|
||||
@@ -340,7 +339,7 @@ region_rect = Rect2(2964, 137, 321, 213)
|
||||
[node name="herb 1" type="Sprite2D" parent="BackWall/Room assets/herbsline"]
|
||||
y_sort_enabled = true
|
||||
position = Vector2(-72, 136)
|
||||
texture = ExtResource("4_27bwy")
|
||||
texture = ExtResource("13_j5d18")
|
||||
offset = Vector2(0, -296)
|
||||
region_enabled = true
|
||||
region_rect = Rect2(2600, 165, 127, 199)
|
||||
@@ -348,7 +347,7 @@ region_rect = Rect2(2600, 165, 127, 199)
|
||||
[node name="herb 2" type="Sprite2D" parent="BackWall/Room assets/herbsline"]
|
||||
y_sort_enabled = true
|
||||
position = Vector2(64, 80)
|
||||
texture = ExtResource("4_27bwy")
|
||||
texture = ExtResource("13_j5d18")
|
||||
offset = Vector2(0, -296)
|
||||
region_enabled = true
|
||||
region_rect = Rect2(2761, 161, 135, 199)
|
||||
@@ -358,38 +357,37 @@ visible = false
|
||||
z_index = -10
|
||||
position = Vector2(32, -72)
|
||||
scale = Vector2(0.4, 0.4)
|
||||
texture = ExtResource("14_d7yky")
|
||||
texture = ExtResource("14_j5d18")
|
||||
region_enabled = true
|
||||
region_rect = Rect2(2647, 15, 286, 183)
|
||||
|
||||
[node name="offerings" type="Node2D" parent="BackWall/Room assets"]
|
||||
|
||||
[node name="apple" type="Sprite2D" parent="BackWall/Room assets/offerings"]
|
||||
z_index = -1
|
||||
position = Vector2(229.5, 331.5)
|
||||
texture = ExtResource("4_27bwy")
|
||||
texture = ExtResource("13_j5d18")
|
||||
region_enabled = true
|
||||
region_rect = Rect2(2822, 764, 93, 87)
|
||||
|
||||
[node name="bread" type="Sprite2D" parent="BackWall/Room assets/offerings"]
|
||||
z_index = -2
|
||||
z_index = -1
|
||||
position = Vector2(157.5, 339.5)
|
||||
texture = ExtResource("4_27bwy")
|
||||
texture = ExtResource("13_j5d18")
|
||||
region_enabled = true
|
||||
region_rect = Rect2(2951, 783, 155, 78)
|
||||
|
||||
[node name="plate" type="Sprite2D" parent="BackWall/Room assets/offerings"]
|
||||
z_index = -20
|
||||
position = Vector2(189.5, 659.5)
|
||||
texture = ExtResource("4_27bwy")
|
||||
texture = ExtResource("13_j5d18")
|
||||
offset = Vector2(0, -296)
|
||||
region_enabled = true
|
||||
region_rect = Rect2(2576, 802, 219, 64)
|
||||
|
||||
[node name="Vesna" parent="." instance=ExtResource("15_7a68a")]
|
||||
[node name="Vesna" parent="." instance=ExtResource("2_a2ood")]
|
||||
position = Vector2(-1464, 136)
|
||||
|
||||
[node name="Yeli" parent="." instance=ExtResource("16_dhsxs")]
|
||||
[node name="Yeli" parent="." instance=ExtResource("15_ciwvv")]
|
||||
position = Vector2(-2912, 432)
|
||||
|
||||
[node name="CollisionShape3D" parent="Yeli/InteractionArea/Area2D" index="0"]
|
||||
@@ -403,21 +401,9 @@ _timelinesToPlay = PackedStringArray("yeli_intro_05")
|
||||
position = Vector2(-576, 368)
|
||||
|
||||
[node name="dialogic_toggle" type="Node2D" parent="Yeli"]
|
||||
script = ExtResource("17_k0k8c")
|
||||
script = ExtResource("17_835kg")
|
||||
metadata/_custom_type_script = "uid://cvkw4qd2hxksi"
|
||||
|
||||
[node name="Camera2D" type="Camera2D" parent="." node_paths=PackedStringArray("_followNode")]
|
||||
position = Vector2(-1534, -26)
|
||||
offset = Vector2(0, -200)
|
||||
zoom = Vector2(0.5, 0.5)
|
||||
limit_left = -6300
|
||||
limit_top = -1050
|
||||
limit_right = 1400
|
||||
limit_bottom = 1150
|
||||
editor_draw_limits = true
|
||||
script = ExtResource("18_dw4nn")
|
||||
_followNode = NodePath("../Vesna/CharacterBody2D")
|
||||
|
||||
[connection signal="timelineEnded" from="Yeli/dialogic_toggle" to="." method="Quit"]
|
||||
|
||||
[editable path="Vesna"]
|
||||
@@ -1,27 +1,16 @@
|
||||
using Babushka.scripts.CSharp.Common.Fight;
|
||||
using Godot;
|
||||
|
||||
namespace Babushka.scripts.CSharp.Common.Camera;
|
||||
|
||||
public partial class CameraController : Camera2D
|
||||
{
|
||||
#region Singleton ( Contains _EnterTree() ) // TODO: use autoload or other solution
|
||||
[Export] private float _multiplier = 1.0f;
|
||||
[Export] private Node2D _followNode;
|
||||
|
||||
public static CameraController Instance { get; private set; } = null!;
|
||||
|
||||
public override void _EnterTree()
|
||||
{
|
||||
Instance = this;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
[Export] private Node2D _followNode;
|
||||
|
||||
public FightInstance? fightToShow;
|
||||
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
this.GlobalPosition = fightToShow?.camPositionNode.GlobalPosition ?? _followNode.GlobalPosition;
|
||||
}
|
||||
}
|
||||
// Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
this.Position = _followNode.Transform.Origin * _multiplier;
|
||||
}
|
||||
}
|
||||
@@ -79,6 +79,7 @@ public partial class FarmingControls2D : Node2D
|
||||
{
|
||||
if (!inputEvent.IsPressed())
|
||||
{
|
||||
GD.Print("Input Event is not pressed." );
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -87,18 +88,23 @@ public partial class FarmingControls2D : Node2D
|
||||
|
||||
if (inputEvent is InputEventMouseButton inputEventMouseButton)
|
||||
{
|
||||
GD.Print("Input Event is InputEventMouseButton." );
|
||||
if (!inputEventMouseButton.Pressed)
|
||||
{
|
||||
GD.Print("Input Event Mouse Button is not pressed." );
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
GD.Print("Other Input Event registered." );
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
GD.Print("Current tool id: " + _toolId );
|
||||
if (_toolId == 0)
|
||||
{
|
||||
GD.Print("Trying to create field." );
|
||||
Vector2I adjustedPosition = GetAdjustedMousePosition();
|
||||
MakeField(adjustedPosition);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
using System;
|
||||
using Babushka.scripts.CSharp.Common.CharacterControls;
|
||||
using Godot;
|
||||
|
||||
@@ -16,9 +15,6 @@ public enum FieldState
|
||||
[GlobalClass]
|
||||
public partial class FieldBehaviour2D : Sprite2D
|
||||
{
|
||||
[Export] private Sprite2D _fieldSprite;
|
||||
[Export] private Sprite2D _maskSprite;
|
||||
[Export] private Texture2D[] _maskTexture;
|
||||
[Export] private Texture2D Tilled;
|
||||
[Export] private Texture2D Watered;
|
||||
[Export] public FieldState FieldState = FieldState.Tilled;
|
||||
@@ -29,8 +25,6 @@ public partial class FieldBehaviour2D : Sprite2D
|
||||
public override void _Ready()
|
||||
{
|
||||
UpdateFieldState(FieldState);
|
||||
int randomIndex = new Random().Next(0, _maskTexture.Length);
|
||||
_maskSprite.Texture = _maskTexture[randomIndex];
|
||||
base._Ready();
|
||||
}
|
||||
|
||||
@@ -43,12 +37,12 @@ public partial class FieldBehaviour2D : Sprite2D
|
||||
break;
|
||||
case FieldState.Tilled:
|
||||
FieldState = FieldState.Tilled;
|
||||
_fieldSprite.Texture = Tilled;
|
||||
Texture = Tilled;
|
||||
_growingCollider.Visible = false;
|
||||
break;
|
||||
case FieldState.Watered:
|
||||
FieldState = FieldState.Watered;
|
||||
_fieldSprite.Texture = Watered;
|
||||
Texture = Watered;
|
||||
_growingCollider.Visible = true;
|
||||
break;
|
||||
case FieldState.Planted:
|
||||
@@ -64,7 +58,7 @@ public partial class FieldBehaviour2D : Sprite2D
|
||||
public void Water()
|
||||
{
|
||||
FieldState = FieldState.Watered;
|
||||
_fieldSprite.Texture = Watered;
|
||||
Texture = Watered;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -75,7 +69,7 @@ public partial class FieldBehaviour2D : Sprite2D
|
||||
switch (FieldState)
|
||||
{
|
||||
case FieldState.Empty:
|
||||
_fieldSprite.Texture = Tilled;
|
||||
Texture = Tilled;
|
||||
FieldState = FieldState.Tilled;
|
||||
break;
|
||||
case FieldState.Watered:
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
uid://cew02ovj51m5d
|
||||
@@ -1,280 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Babushka.scripts.CSharp.Common.Camera;
|
||||
using Babushka.scripts.CSharp.Common.Util;
|
||||
using Godot;
|
||||
namespace Babushka.scripts.CSharp.Common.Fight;
|
||||
|
||||
public partial class FightInstance : Node2D //TODO: remake
|
||||
{
|
||||
[Export(PropertyHint.ArrayType)] private Node2D[] _friendlyFightSpots;
|
||||
[Export(PropertyHint.ArrayType)] private Node2D[] _enemyFightSpots;
|
||||
[Export] public Node2D camPositionNode;
|
||||
[Export] private FightStateManager _fightStateManager;
|
||||
[Export] private Label _fightEndText;
|
||||
|
||||
|
||||
[Signal]
|
||||
public delegate void FightStartedEventHandler();
|
||||
|
||||
[Signal]
|
||||
public delegate void FightEndedEventHandler();
|
||||
|
||||
private List<Fighter> _friendlyFighters = new();
|
||||
private List<Fighter> _enemyFighters = new();
|
||||
|
||||
private FightAttack? _stagedAttack = null;
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
//_fightStateManager.CurrentFightState = FightStateManager.FightState.FightStartAnim;
|
||||
_fightStateManager.ExitingTransition += from =>
|
||||
{
|
||||
switch (from)
|
||||
{
|
||||
case FightStateManager.FightState.None:
|
||||
CaptureCamera();
|
||||
Show();
|
||||
EmitSignalFightStarted();
|
||||
break;
|
||||
case FightStateManager.FightState.Input:
|
||||
HideAttackButtons();
|
||||
break;
|
||||
case FightStateManager.FightState.InputTargetSelect:
|
||||
HideTargetButtons();
|
||||
break;
|
||||
case FightStateManager.FightState.FriendAttackAnim:
|
||||
_stagedAttack = null;
|
||||
break;
|
||||
case FightStateManager.FightState.PlayerWinAnim:
|
||||
case FightStateManager.FightState.EnemyWinAnim:
|
||||
_fightEndText.Text = "";
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
_fightStateManager.EnteringTransition += to =>
|
||||
{
|
||||
switch (to)
|
||||
{
|
||||
case FightStateManager.FightState.None:
|
||||
EmitSignalFightEnded();
|
||||
CleanUp();
|
||||
Hide();
|
||||
ReleaseCamera();
|
||||
break;
|
||||
case FightStateManager.FightState.Input:
|
||||
if (CheckWin())
|
||||
{
|
||||
break;
|
||||
}
|
||||
ShowAttackButtons();
|
||||
break;
|
||||
case FightStateManager.FightState.InputTargetSelect:
|
||||
ShowTargetButtons();
|
||||
break;
|
||||
case FightStateManager.FightState.FriendAttackAnim:
|
||||
ExecuteAttack();
|
||||
GetTree().CreateTimer(1).Timeout += () => _fightStateManager.CurrentFightState = FightStateManager.FightState.Enemy;
|
||||
break;
|
||||
case FightStateManager.FightState.Enemy:
|
||||
if (CheckWin())
|
||||
{
|
||||
break;
|
||||
}
|
||||
DecideEnemyAttack();
|
||||
_fightStateManager.CurrentFightState = FightStateManager.FightState.EnemyAttackAnim;
|
||||
break;
|
||||
case FightStateManager.FightState.EnemyAttackAnim:
|
||||
ExecuteAttack();
|
||||
GetTree().CreateTimer(1).Timeout += () => _fightStateManager.CurrentFightState = FightStateManager.FightState.Input;
|
||||
break;
|
||||
case FightStateManager.FightState.PlayerWinAnim:
|
||||
_fightEndText.Text = "You Win!";
|
||||
GetTree().CreateTimer(3).Timeout += () => _fightStateManager.CurrentFightState = FightStateManager.FightState.None;
|
||||
break;
|
||||
case FightStateManager.FightState.EnemyWinAnim:
|
||||
_fightEndText.Text = "You Died :(";
|
||||
GetTree().CreateTimer(3).Timeout += () => _fightStateManager.CurrentFightState = FightStateManager.FightState.None;
|
||||
break;
|
||||
}
|
||||
};
|
||||
}
|
||||
private void CleanUp()
|
||||
{
|
||||
_enemyFighters.ForEach(f => f.QueueFree());
|
||||
_friendlyFighters.ForEach(f => f.QueueFree());
|
||||
_enemyFighters = new();
|
||||
_friendlyFighters = new();
|
||||
}
|
||||
private void DecideEnemyAttack()
|
||||
{
|
||||
var aliveEnemyFighters = _enemyFighters.Where(f => !f.IsDead()).ToList();
|
||||
var aliveFriendlyFighters = _friendlyFighters.Where(f => !f.IsDead()).ToList();
|
||||
|
||||
if (aliveEnemyFighters.Count <= 0)
|
||||
throw new InvalidOperationException("No enemy fighters available for attack.");
|
||||
|
||||
if (aliveFriendlyFighters.Count <= 0)
|
||||
throw new InvalidOperationException("No friendly fighters available to target.");
|
||||
|
||||
var fighter = aliveEnemyFighters.Random();
|
||||
var target = aliveFriendlyFighters.Random();
|
||||
|
||||
_stagedAttack = new FightAttack
|
||||
{
|
||||
attacker = fighter!,
|
||||
needsSelectedTarget = true,
|
||||
damage = fighter!.attackStrength,
|
||||
target = target!
|
||||
};
|
||||
}
|
||||
|
||||
private void ExecuteAttack()
|
||||
{
|
||||
if (_stagedAttack == null)
|
||||
throw new InvalidOperationException("No staged attack to execute.");
|
||||
|
||||
if (!_stagedAttack.needsSelectedTarget)
|
||||
throw new NotImplementedException("Non-targeted attacks are not implemented yet.");
|
||||
|
||||
if (_stagedAttack.needsSelectedTarget && _stagedAttack.target == null)
|
||||
throw new InvalidOperationException("No target selected for the staged attack.");
|
||||
|
||||
_stagedAttack.target!.Health -= _stagedAttack.damage;
|
||||
|
||||
_stagedAttack.attacker.AttackAnimation(_stagedAttack);
|
||||
|
||||
UpdateHealthVisual();
|
||||
}
|
||||
|
||||
private void UpdateHealthVisual()
|
||||
{
|
||||
_friendlyFighters
|
||||
.Concat(_enemyFighters)
|
||||
.ForEach(f => f.UpdateHealthVisual());
|
||||
}
|
||||
|
||||
private void ReleaseCamera()
|
||||
{
|
||||
CameraController.Instance.fightToShow = null;
|
||||
}
|
||||
|
||||
private void CaptureCamera()
|
||||
{
|
||||
CameraController.Instance.fightToShow = this;
|
||||
}
|
||||
|
||||
public void Start(FightParty fightParty, PackedScene?[] enemies)
|
||||
{
|
||||
if (_fightStateManager.IsRunning())
|
||||
{
|
||||
GD.PushWarning("Can not start a running fight");
|
||||
return;
|
||||
}
|
||||
|
||||
if (fightParty.vesna)
|
||||
{
|
||||
InstantiateFighter(_friendlyFightSpots[1], FightManager.Instance.fightingVesnaScene);
|
||||
}
|
||||
|
||||
for (var i = 0; i < Math.Min(_enemyFightSpots.Length, enemies.Length); i++)
|
||||
{
|
||||
var enemy = enemies[i];
|
||||
if (enemy == null)
|
||||
continue;
|
||||
|
||||
InstantiateFighter(_enemyFightSpots[i], enemy, true);
|
||||
}
|
||||
|
||||
_fightStateManager.ToStartAnim();
|
||||
}
|
||||
|
||||
private void InstantiateFighter(Node2D parent, PackedScene fighterScene, bool isEnemy = false)
|
||||
{
|
||||
var fighter = fighterScene.Instantiate<Fighter>();
|
||||
fighter.fightInstance = this;
|
||||
parent.AddChild(fighter);
|
||||
|
||||
if (isEnemy)
|
||||
{
|
||||
_enemyFighters.Add(fighter);
|
||||
}
|
||||
else
|
||||
{
|
||||
_friendlyFighters.Add(fighter);
|
||||
}
|
||||
}
|
||||
|
||||
public void SelectAttack(Fighter fighter)
|
||||
{
|
||||
_stagedAttack = new FightAttack
|
||||
{
|
||||
attacker = fighter,
|
||||
damage = fighter.attackStrength,
|
||||
needsSelectedTarget = true
|
||||
};
|
||||
|
||||
if (_stagedAttack.needsSelectedTarget)
|
||||
{
|
||||
_fightStateManager.CurrentFightState = FightStateManager.FightState.InputTargetSelect;
|
||||
}
|
||||
else
|
||||
{
|
||||
_fightStateManager.CurrentFightState = FightStateManager.FightState.FriendAttackAnim;
|
||||
}
|
||||
}
|
||||
|
||||
private void HideAttackButtons()
|
||||
{
|
||||
_friendlyFighters.ForEach(f => f.HideAttackButton());
|
||||
}
|
||||
|
||||
private void ShowAttackButtons()
|
||||
{
|
||||
_friendlyFighters.ForEach(f => f.ShowAttackButton());
|
||||
}
|
||||
|
||||
private void HideTargetButtons()
|
||||
{
|
||||
_enemyFighters.ForEach(f => f.HideTargetButtons());
|
||||
}
|
||||
|
||||
private void ShowTargetButtons()
|
||||
{
|
||||
_enemyFighters.ForEach(f => f.ShowTargetButtons());
|
||||
}
|
||||
|
||||
public void SelectTargetAndAttack(Fighter fighter)
|
||||
{
|
||||
if (_stagedAttack == null)
|
||||
throw new InvalidOperationException("No staged attack to select target for.");
|
||||
|
||||
_stagedAttack.target = fighter;
|
||||
|
||||
_fightStateManager.CurrentFightState = FightStateManager.FightState.FriendAttackAnim;
|
||||
}
|
||||
|
||||
public bool CheckWin()
|
||||
{
|
||||
if (_enemyFighters.All(f => f.IsDead()))
|
||||
{
|
||||
_fightStateManager.CurrentFightState = FightStateManager.FightState.PlayerWinAnim;
|
||||
return true;
|
||||
}
|
||||
if (_friendlyFighters.All(f => f.IsDead()))
|
||||
{
|
||||
_fightStateManager.CurrentFightState = FightStateManager.FightState.EnemyWinAnim;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public class FightAttack
|
||||
{
|
||||
public int damage;
|
||||
public bool needsSelectedTarget;
|
||||
public Fighter? target;
|
||||
public Fighter attacker;
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
uid://c76mhhqyk4lgh
|
||||
@@ -1,28 +0,0 @@
|
||||
using Godot;
|
||||
namespace Babushka.scripts.CSharp.Common.Fight;
|
||||
|
||||
public partial class FightManager : Node
|
||||
{
|
||||
#region AutoLoad ( Contains _EnterTree() )
|
||||
|
||||
public static FightManager Instance { get; private set; } = null!;
|
||||
|
||||
public override void _EnterTree()
|
||||
{
|
||||
Instance = this;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
[Export]
|
||||
public PackedScene fightingVesnaScene;
|
||||
|
||||
public FightParty fightParty = new();
|
||||
|
||||
public void StartFight(PackedScene[] enemies, FightInstance instance)
|
||||
{
|
||||
GD.Print("Starting Fight");
|
||||
instance.Start(fightParty, enemies);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
uid://j5ge24rk25wm
|
||||
@@ -1,6 +0,0 @@
|
||||
namespace Babushka.scripts.CSharp.Common.Fight;
|
||||
|
||||
public class FightParty
|
||||
{
|
||||
public bool vesna = true;
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
uid://cvhgnboybc4cm
|
||||
@@ -1,19 +0,0 @@
|
||||
using Godot;
|
||||
namespace Babushka.scripts.CSharp.Common.Fight;
|
||||
|
||||
public partial class FightStarter : Node
|
||||
{
|
||||
[Export(PropertyHint.ArrayType)] private PackedScene[] enemies;
|
||||
[Export] private FightInstance _fightInstance;
|
||||
[Export] private bool _once = true;
|
||||
private bool hasBeenStarted = false;
|
||||
|
||||
public void Start(Node2D _)
|
||||
{
|
||||
if (_once && hasBeenStarted)
|
||||
return;
|
||||
|
||||
hasBeenStarted = true;
|
||||
FightManager.Instance.StartFight(enemies, _fightInstance);
|
||||
}
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
uid://di0xxwfw43m0i
|
||||
@@ -1,73 +0,0 @@
|
||||
using Godot;
|
||||
namespace Babushka.scripts.CSharp.Common.Fight;
|
||||
|
||||
public partial class FightStateManager : Node
|
||||
{
|
||||
[Signal]
|
||||
public delegate void ExitingTransitionEventHandler(FightState exitingState);
|
||||
|
||||
[Signal]
|
||||
public delegate void EnteringTransitionEventHandler(FightState enteringState);
|
||||
|
||||
public enum FightState
|
||||
{
|
||||
None,
|
||||
FightStartAnim,
|
||||
Input,
|
||||
InputTargetSelect,
|
||||
FriendAttackAnim,
|
||||
Enemy,
|
||||
EnemyAttackAnim,
|
||||
PlayerWinAnim,
|
||||
EnemyWinAnim
|
||||
}
|
||||
|
||||
private FightState _fightStateBacking = FightState.None;
|
||||
|
||||
public FightState CurrentFightState
|
||||
{
|
||||
set => Transition(_fightStateBacking, value);
|
||||
get => _fightStateBacking;
|
||||
}
|
||||
|
||||
private void Transition(FightState from, FightState to)
|
||||
{
|
||||
if(from == to)
|
||||
return;
|
||||
|
||||
GD.Print($"Transitioning from {from} to {to}");
|
||||
ExitTransition(from);
|
||||
_fightStateBacking = to;
|
||||
EnterTransition(to);
|
||||
}
|
||||
|
||||
private void ExitTransition(FightState from)
|
||||
{
|
||||
EmitSignalExitingTransition(from);
|
||||
}
|
||||
|
||||
private void EnterTransition(FightState to)
|
||||
{
|
||||
EmitSignalEnteringTransition(to);
|
||||
switch (to)
|
||||
{
|
||||
case FightState.FightStartAnim:
|
||||
EnterFightStartAnim();
|
||||
break;
|
||||
}
|
||||
}
|
||||
private void EnterFightStartAnim()
|
||||
{
|
||||
GetTree().CreateTimer(1).Timeout += () => CurrentFightState = FightState.Input;
|
||||
}
|
||||
|
||||
public void ToStartAnim()
|
||||
{
|
||||
CurrentFightState = FightState.FightStartAnim;
|
||||
}
|
||||
|
||||
public bool IsRunning()
|
||||
{
|
||||
return CurrentFightState != FightState.None;
|
||||
}
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
uid://oe1uypehqvr7
|
||||
@@ -1,131 +0,0 @@
|
||||
using Godot;
|
||||
namespace Babushka.scripts.CSharp.Common.Fight;
|
||||
|
||||
public partial class Fighter : Node2D
|
||||
{
|
||||
[Export] public string name;
|
||||
[Export] public int maxHealth;
|
||||
[Export] public int attackStrength;
|
||||
|
||||
[ExportCategory("References")]
|
||||
[Export] private Node2D _attackButtons;
|
||||
[Export] private Node2D _targetButtons;
|
||||
[Export] private Node2D _targetMarker;
|
||||
[Export] private Label _healthText;
|
||||
[Export] private Node2D _visualSprite;
|
||||
|
||||
|
||||
private int _health;
|
||||
|
||||
|
||||
public FightInstance fightInstance;
|
||||
public int Health
|
||||
{
|
||||
get => _health;
|
||||
set
|
||||
{
|
||||
_health = value;
|
||||
if (_health <= 0)
|
||||
{
|
||||
_health = 0;
|
||||
Die();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Die()
|
||||
{
|
||||
_visualSprite.Scale = new Vector2(1, 0.3f);
|
||||
}
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
Health = maxHealth;
|
||||
UpdateHealthVisual();
|
||||
}
|
||||
|
||||
public void Attack()
|
||||
{
|
||||
fightInstance.SelectAttack(this);
|
||||
}
|
||||
|
||||
public void HideAttackButton()
|
||||
{
|
||||
_attackButtons.Hide();
|
||||
}
|
||||
|
||||
public void ShowAttackButton()
|
||||
{
|
||||
_attackButtons.Show();
|
||||
}
|
||||
|
||||
public void HideTargetButtons()
|
||||
{
|
||||
_targetButtons.Hide();
|
||||
}
|
||||
|
||||
public void ShowTargetButtons()
|
||||
{
|
||||
_targetButtons.Show();
|
||||
}
|
||||
|
||||
public void TargetMouseEvent(Node viewport, InputEvent inputEvent, int shapeIdx)
|
||||
{
|
||||
if (inputEvent.IsPressed())
|
||||
ClickedTarget();
|
||||
}
|
||||
|
||||
public void AttackMouseEvent(Node viewport, InputEvent inputEvent, int shapeIdx)
|
||||
{
|
||||
if (inputEvent.IsPressed())
|
||||
ClickedAttack();
|
||||
}
|
||||
|
||||
private void ClickedAttack()
|
||||
{
|
||||
fightInstance.SelectAttack(this);
|
||||
}
|
||||
|
||||
private void ClickedTarget()
|
||||
{
|
||||
fightInstance.SelectTargetAndAttack(this);
|
||||
}
|
||||
|
||||
public void StartHoverTarget()
|
||||
{
|
||||
_targetMarker.Visible = true;
|
||||
}
|
||||
|
||||
public void EndHoverTarget()
|
||||
{
|
||||
_targetMarker.Visible = false;
|
||||
}
|
||||
|
||||
public void UpdateHealthVisual()
|
||||
{
|
||||
_healthText.Text = $"{Health}/{maxHealth}";
|
||||
}
|
||||
|
||||
public void AttackAnimation(FightAttack attack)
|
||||
{
|
||||
var tween = GetTree().CreateTween();
|
||||
tween.TweenProperty(this, "global_position", attack.target.GlobalPosition, 0.15);
|
||||
tween.TweenCallback(Callable.From(() => attack.target?.HitAnimation(attack)));
|
||||
tween.TweenProperty(this, "position", new Vector2(0, 0), 0.7)
|
||||
.SetTrans(Tween.TransitionType.Cubic).SetEase(Tween.EaseType.Out);
|
||||
|
||||
}
|
||||
|
||||
private void HitAnimation(FightAttack attack)
|
||||
{
|
||||
var tween = GetTree().CreateTween();
|
||||
tween.TweenProperty(this, "scale", new Vector2(1.4f, 0.6f), 0.15);
|
||||
tween.TweenProperty(this, "scale", new Vector2(1,1), 0.4)
|
||||
.SetTrans(Tween.TransitionType.Cubic).SetEase(Tween.EaseType.Out);
|
||||
}
|
||||
|
||||
public bool IsDead()
|
||||
{
|
||||
return Health <= 0;
|
||||
}
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
uid://by88f32fou7lh
|
||||
@@ -1,27 +0,0 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.SqlTypes;
|
||||
using System.Linq;
|
||||
using System.Xml.Schema;
|
||||
namespace Babushka.scripts.CSharp.Common.Util;
|
||||
|
||||
public static class LinqExtras
|
||||
{
|
||||
public static void ForEach<T>(this IEnumerable<T> self, Action<T> action)
|
||||
{
|
||||
foreach (var t in self)
|
||||
{
|
||||
action.Invoke(t);
|
||||
}
|
||||
}
|
||||
|
||||
public static T? Random<T>(this IEnumerable<T> self)
|
||||
{
|
||||
var selfList = self.ToList();
|
||||
if (selfList.Count == 0) return default;
|
||||
if (selfList.Count == 1) return selfList[0];
|
||||
var randomIndex = new Random().Next(0, selfList.Count);
|
||||
return selfList[randomIndex];
|
||||
}
|
||||
}
|
||||