Merge commit 'dad9d42e7307900ea7ca7ba86ccf17cd7df020be' into development

This commit is contained in:
betalars 2025-05-12 19:17:12 +02:00
commit c1eecd8980
42 changed files with 1446 additions and 388 deletions

BIN
src/base-environments/youth_room/audio/Childhood.wav (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://dfblaqsfgm8le"
path="res://.godot/imported/Childhood.wav-0fd19e37dfab0b3d1b88108f35d35f38.sample"
[deps]
source_file="res://base-environments/youth_room/audio/Childhood.wav"
dest_files=["res://.godot/imported/Childhood.wav-0fd19e37dfab0b3d1b88108f35d35f38.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://d15ltkofdggly"
path="res://.godot/imported/Voice-Training-Workshop.wav-72e07a6c960178b3ac5d10c4613e335d.sample"
[deps]
source_file="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav"
dest_files=["res://.godot/imported/Voice-Training-Workshop.wav-72e07a6c960178b3ac5d10c4613e335d.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

BIN
src/base-environments/youth_room/audio/jiu-jutsu.wav (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://dpyf2oc5vn30e"
path="res://.godot/imported/jiu-jutsu.wav-b3e1301abd6e63f04295124e46a93ec7.sample"
[deps]
source_file="res://base-environments/youth_room/audio/jiu-jutsu.wav"
dest_files=["res://.godot/imported/jiu-jutsu.wav-b3e1301abd6e63f04295124e46a93ec7.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

BIN
src/base-environments/youth_room/audio/why-does-it-mean.wav (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://bakwypwhs7a5n"
path="res://.godot/imported/why-does-it-mean.wav-3ccf270748b0feeab26f5943513b8d4f.sample"
[deps]
source_file="res://base-environments/youth_room/audio/why-does-it-mean.wav"
dest_files=["res://.godot/imported/why-does-it-mean.wav-3ccf270748b0feeab26f5943513b8d4f.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@ -46,16 +46,3 @@ func pull_save_state(save: SaveGame) -> void:
func _on_scene_finished(id: int, _repeat:bool): func _on_scene_finished(id: int, _repeat:bool):
await get_tree().create_timer(3).timeout await get_tree().create_timer(3).timeout
save_room() save_room()
#FIXME forgot to comment what this means, just marking it for removal
var fixed := false
func hotfix(_discard):
print("meep")
if not fixed:
await get_tree().create_timer(0.1).timeout
State.take_stage($logic/PlayerController, true)
fixed = true
dnd = false
var dnd: bool

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=19 format=3 uid="uid://c3l8tm8ku50vt"] [gd_scene load_steps=20 format=3 uid="uid://c3l8tm8ku50vt"]
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_40hhx"] [ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_40hhx"]
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="1_bkq30"] [ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="1_bkq30"]
@ -6,7 +6,8 @@
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_o63m7"] [ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_o63m7"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="4_q0fee"] [ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="4_q0fee"]
[ext_resource type="AudioStream" uid="uid://b3cw0e41rjggo" path="res://base-environments/youth_room/audio/childhood_de.wav" id="6_wyhdp"] [ext_resource type="AudioStream" uid="uid://b3cw0e41rjggo" path="res://base-environments/youth_room/audio/childhood_de.wav" id="6_wyhdp"]
[ext_resource type="AudioStream" uid="uid://bwh60165c3saj" path="res://base-environments/youth_room/audio/lisa_youth_voice.ogg" id="7_w01wh"] [ext_resource type="AudioStream" uid="uid://dfblaqsfgm8le" path="res://base-environments/youth_room/audio/Childhood.wav" id="7_51c6s"]
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="8_51c6s"]
[sub_resource type="ViewportTexture" id="ViewportTexture_1k8vs"] [sub_resource type="ViewportTexture" id="ViewportTexture_1k8vs"]
viewport_path = NodePath("PanelContainer/StartFrame/TextureRect/SubViewport") viewport_path = NodePath("PanelContainer/StartFrame/TextureRect/SubViewport")
@ -257,7 +258,7 @@ tracks/7/keys = {
[sub_resource type="Animation" id="Animation_7qabw"] [sub_resource type="Animation" id="Animation_7qabw"]
resource_name = "en" resource_name = "en"
length = 89.0 length = 92.0
tracks/0/type = "audio" tracks/0/type = "audio"
tracks/0/imported = false tracks/0/imported = false
tracks/0/enabled = true tracks/0/enabled = true
@ -266,11 +267,11 @@ tracks/0/interp = 1
tracks/0/loop_wrap = true tracks/0/loop_wrap = true
tracks/0/keys = { tracks/0/keys = {
"clips": [{ "clips": [{
"end_offset": 200.63, "end_offset": 0.0,
"start_offset": 96.4197, "start_offset": 0.0,
"stream": ExtResource("7_w01wh") "stream": ExtResource("7_51c6s")
}], }],
"times": PackedFloat32Array(1.4) "times": PackedFloat32Array(2.4)
} }
tracks/0/use_blend = true tracks/0/use_blend = true
tracks/1/type = "value" tracks/1/type = "value"
@ -280,7 +281,7 @@ tracks/1/path = NodePath("../../..:progress")
tracks/1/interp = 1 tracks/1/interp = 1
tracks/1/loop_wrap = true tracks/1/loop_wrap = true
tracks/1/keys = { tracks/1/keys = {
"times": PackedFloat32Array(0, 1.66667, 6.26666, 7.56667, 17.4, 18.4667, 21.8667, 22.8, 28.6, 29.9333, 32.3, 32.8, 36.2667, 38.2333, 40.1608, 40.6, 50.9667, 51.6333, 55.0333, 56.4, 58.8333, 59.7, 61.5667, 62.9333, 67.4028, 68.7667, 71.8333, 72.8333, 75.293, 77, 80.7663, 82.0333, 88), "times": PackedFloat32Array(0, 1.66667, 6.26666, 7.56667, 17.4, 18.4667, 21.8667, 22.8, 28.6, 29.9333, 32.3, 32.8, 36.2667, 38.2333, 40.1608, 40.6, 50.9667, 51.6333, 55.0333, 56.4, 58.8333, 59.7, 61.5667, 62.9333, 67.4028, 68.7667, 71.8333, 72.8333, 75.293, 78.0667, 81.9663, 84.7667, 90.7333),
"transitions": PackedFloat32Array(1, 0.482968, 1, 0.482968, 1, 0.482968, 1, 0.482968, 1, 1.23114, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.287175, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968), "transitions": PackedFloat32Array(1, 0.482968, 1, 0.482968, 1, 0.482968, 1, 0.482968, 1, 1.23114, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.287175, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968),
"update": 0, "update": 0,
"values": [0.0, 0.0, 1.0, 1.0, 2.0, 2.0, 3.0, 3.0, 4.0, 4.0, 5.0, 5.0, 6.0, 6.0, 7.0, 7.0, 9.0, 9.0, 10.0, 10.0, 11.0, 11.0, 12.0, 12.0, 13.0, 13.0, 14.0, 14.0, 15.0, 15.0, 16.0, 16.0, 17.0] "values": [0.0, 0.0, 1.0, 1.0, 2.0, 2.0, 3.0, 3.0, 4.0, 4.0, 5.0, 5.0, 6.0, 6.0, 7.0, 7.0, 9.0, 9.0, 10.0, 10.0, 11.0, 11.0, 12.0, 12.0, 13.0, 13.0, 14.0, 14.0, 15.0, 15.0, 16.0, 16.0, 17.0]
@ -292,7 +293,7 @@ tracks/2/path = NodePath("../../..")
tracks/2/interp = 1 tracks/2/interp = 1
tracks/2/loop_wrap = true tracks/2/loop_wrap = true
tracks/2/keys = { tracks/2/keys = {
"times": PackedFloat32Array(17.6, 37.5667, 55.2667, 68.0667, 75.9667, 87.7), "times": PackedFloat32Array(17.6, 37.5667, 55.2667, 68.0667, 75.9667, 91.1667),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
"values": [{ "values": [{
"args": [], "args": [],
@ -431,7 +432,8 @@ offset_right = -424.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
script = ExtResource("1_40hhx") script = ExtResource("1_40hhx")
story_array = Array[String](["[p]Oh, my old mask. I have so many good memories about theatre club. ", "I would stand on my bed for entire afternoons, weeks on end, practicing my lines. Pretending to be on the big stage ... ", "my mom would get mad at me, when she had to call me three or four times for dinner. ", "I just … didn't like the interruptions. We both were often mad at each other.", "Dinner was difficult. ", "I just couldnt bring myself to eat, because I couldnt deal with the bread and my mom.", "She was always so worried.", " Lisa, you forgot your homework, Lisa why wont you play with the other girls,\"", "\"Lisa why didn't Steffi invite you to her birthday, Lisa this, Lisa that.", "But I was fine! She just wouldnt listen.", "Yes, I didn't do homework, but my teachers didn't mind it as much with me ", "- which the other kids wouldnt shut up about. But like … ", "they also made fun of me reading school books and talking to my teachers during breaks.", "But at least I could fucking talk to teachers and they had stuff to say. ", "Mr Thomas probably even understood me better than my own mom.", "He said I was gifted. He said I just didn't need homework for good grades.", "And he also made sure to always include extra credits. So my silly slip-ups wouldnt get me a B."]) story_array = PackedStringArray("Oh, my old mask. I have so many good memories about theatre club. ", "I would stand on my bed for entire afternoons, weeks on end, practicing my lines. Pretending to be on the big stage ... ", "my mom would get mad at me, when she had to call me three or four times for dinner. ", "I just … didn\'t like the interruptions. We both were often mad at each other.", "Dinner was difficult.", "I just couldn\'t bring myself to eat, because I couldn\'t deal with the bread and my mom.", "She was always so worried.", " Lisa, you forgot your homework, Lisa why won\'t you play with the other girls,\"", "\"Lisa why didn\'t Steffi invite you to her birthday, Lisa this, Lisa that.", "But I was fine! She just wouldn\'t listen.", "Yes, I didn\'t do homework, but my teachers didn\'t mind it as much with me ", "- which the other kids wouldn\'t shut up about. But like …", "they also made fun of me reading school books and talking to my teachers during breaks.", "But at least I could fucking talk to teachers and they had stuff to say.", "Mr Thomas probably even understood me better than my own mom.", "He said I was gifted. He said I just didn\'t need homework for good grades.", "But at least I could fucking talk to teachers and they had stuff to say.")
paragraph_lengths = PackedInt32Array(3, 4, 6, 9, 12, 13, 14, 16)
progress = 17.0 progress = 17.0
[node name="PanelContainer" type="PanelContainer" parent="."] [node name="PanelContainer" type="PanelContainer" parent="."]
@ -539,7 +541,7 @@ layout_mode = 2
[node name="Label" type="Label" parent="PanelContainer/VBoxContainer"] [node name="Label" type="Label" parent="PanelContainer/VBoxContainer"]
layout_mode = 2 layout_mode = 2
theme_type_variation = &"HeaderLarge" theme_type_variation = &"HeaderLarge"
text = " crafted Mask" text = "crafted Mask"
[node name="StoryScroll" type="ScrollContainer" parent="PanelContainer/VBoxContainer"] [node name="StoryScroll" type="ScrollContainer" parent="PanelContainer/VBoxContainer"]
unique_name_in_owner = true unique_name_in_owner = true
@ -557,7 +559,7 @@ custom_minimum_size = Vector2(800, 10)
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
bbcode_enabled = true bbcode_enabled = true
text = "[p]Oh, my old mask. I have so many good memories about theatre club. I would stand on my bed for entire afternoons, weeks on end, practicing my lines. Pretending to be on the big stage ... my mom would get mad at me, when she had to call me three or four times for dinner. I just … didn't like the interruptions. We both were often mad at each other.Dinner was difficult. I just couldnt bring myself to eat, because I couldnt deal with the bread and my mom.She was always so worried. Lisa, you forgot your homework, Lisa why wont you play with the other girls,\"\"Lisa why didn't Steffi invite you to her birthday, Lisa this, Lisa that.But I was fine! She just wouldnt listen.Yes, I didn't do homework, but my teachers didn't mind it as much with me - which the other kids wouldnt shut up about. But like … they also made fun of me reading school books and talking to my teachers during breaks.But at least I could fucking talk to teachers and they had stuff to say. Mr Thomas probably even understood me better than my own mom.He said I was gifted. He said I just didn't need homework for good grades.And he also made sure to always include extra credits. So my silly slip-ups wouldnt get me a B." text = "[p]Oh, my old mask. I have so many good memories about theatre club. I would stand on my bed for entire afternoons, weeks on end, practicing my lines. Pretending to be on the big stage ... my mom would get mad at me, when she had to call me three or four times for dinner. I just … didn't like the interruptions. We both were often mad at each other. [/p][p][font_size=8] [/font_size][/p][p]Dinner was difficult. [/p][p][font_size=8] [/font_size][/p][p]I just couldn't bring myself to eat, because I couldn't deal with the bread and my mom. She was always so worried. [/p][p][font_size=8] [/font_size][/p][p]Lisa, you forgot your homework, Lisa why won't you play with the other girls,\" \"Lisa why didn't Steffi invite you to her birthday, Lisa this, Lisa that. But I was fine! She just wouldn't listen. [/p][p][font_size=8] [/font_size][/p][p]Yes, I didn't do homework, but my teachers didn't mind it as much with me - which the other kids wouldn't shut up about. But like … they also made fun of me reading school books and talking to my teachers during breaks. [/p][p][font_size=8] [/font_size][/p][p]But at least I could fucking talk to teachers and they had stuff to say. [/p][p][font_size=8] [/font_size][/p][p]Mr Thomas probably even understood me better than my own mom. [/p][p][font_size=8] [/font_size][/p][p]He said I was gifted. He said I just didn't need homework for good grades. But at least I could fucking talk to teachers and they had stuff to say. [/p][p][font_size=8] [/font_size][/p][p][/p]"
fit_content = true fit_content = true
scroll_active = false scroll_active = false
visible_characters_behavior = 1 visible_characters_behavior = 1
@ -584,3 +586,4 @@ libraries = {
[node name="Text" type="AudioStreamPlayer" parent="AnimationPlayer"] [node name="Text" type="AudioStreamPlayer" parent="AnimationPlayer"]
mix_target = 2 mix_target = 2
bus = &"text" bus = &"text"
script = ExtResource("8_51c6s")

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=13 format=3 uid="uid://cgwuoc1jfi7w6"] [gd_scene load_steps=14 format=3 uid="uid://cgwuoc1jfi7w6"]
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_o2rjr"] [ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_o2rjr"]
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_xwj2j"] [ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_xwj2j"]
@ -82,6 +82,18 @@ tracks/5/keys = {
"update": 0, "update": 0,
"values": [Color(1, 1, 1, 1)] "values": [Color(1, 1, 1, 1)]
} }
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("%AnimationPlayer/Music:stream")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("6_7f2et")]
}
[sub_resource type="Animation" id="Animation_bgeog"] [sub_resource type="Animation" id="Animation_bgeog"]
resource_name = "de" resource_name = "de"
@ -101,40 +113,25 @@ tracks/0/keys = {
"times": PackedFloat32Array(1.9) "times": PackedFloat32Array(1.9)
} }
tracks/0/use_blend = true tracks/0/use_blend = true
tracks/1/type = "audio" tracks/1/type = "value"
tracks/1/imported = false tracks/1/imported = false
tracks/1/enabled = true tracks/1/enabled = true
tracks/1/path = NodePath("%AnimationPlayer/Music") tracks/1/path = NodePath("../../..:progress")
tracks/1/interp = 1 tracks/1/interp = 1
tracks/1/loop_wrap = true tracks/1/loop_wrap = true
tracks/1/keys = { tracks/1/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 1.13,
"stream": ExtResource("6_7f2et")
}],
"times": PackedFloat32Array(0.133333)
}
tracks/1/use_blend = true
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("../../..:progress")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 1.66667, 6.13333, 7.76667, 16.3, 19.0333, 26.7, 28.2, 34.9333, 36.7, 40.5, 41.9667, 44.6, 45.2, 49.2667, 50.4059, 55.2667, 56.0667, 58.8333, 60.8, 63.6667, 64.4667, 70.3058, 72.8, 82.2667, 83.8333, 90.0028, 91.0667, 97.6333, 99.7667, 106.526, 108.233, 117.933, 119.2, 121.633, 123.2, 132.1), "times": PackedFloat32Array(0, 1.66667, 6.13333, 7.76667, 16.3, 19.0333, 26.7, 28.2, 34.9333, 36.7, 40.5, 41.9667, 44.6, 45.2, 49.2667, 50.4059, 55.2667, 56.0667, 58.8333, 60.8, 63.6667, 64.4667, 70.3058, 72.8, 82.2667, 83.8333, 90.0028, 91.0667, 97.6333, 99.7667, 106.526, 108.233, 117.933, 119.2, 121.633, 123.2, 132.1),
"transitions": PackedFloat32Array(1, 0.482968, 1, 0.482968, 1, 0.482968, 1, 0.482968, 1, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968), "transitions": PackedFloat32Array(1, 0.482968, 1, 0.482968, 1, 0.482968, 1, 0.482968, 1, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968),
"update": 0, "update": 0,
"values": [0.0, 0.0, 1.0, 1.0, 2.0, 2.0, 3.0, 3.0, 4.0, 4.0, 5.0, 5.0, 6.0, 6.0, 7.0, 7.0, 8.0, 8.0, 9.0, 9.0, 10.0, 10.0, 11.0, 11.0, 12.0, 12.0, 13.0, 13.0, 14.0, 14.0, 15.0, 15.0, 16.0, 16.0, 17.0, 17.0, 18.0] "values": [0.0, 0.0, 1.0, 1.0, 2.0, 2.0, 3.0, 3.0, 4.0, 4.0, 5.0, 5.0, 6.0, 6.0, 7.0, 7.0, 8.0, 8.0, 9.0, 9.0, 10.0, 10.0, 11.0, 11.0, 12.0, 12.0, 13.0, 13.0, 14.0, 14.0, 15.0, 15.0, 16.0, 16.0, 17.0, 17.0, 18.0]
} }
tracks/3/type = "method" tracks/2/type = "method"
tracks/3/imported = false tracks/2/imported = false
tracks/3/enabled = true tracks/2/enabled = true
tracks/3/path = NodePath("../../..") tracks/2/path = NodePath("../../..")
tracks/3/interp = 1 tracks/2/interp = 1
tracks/3/loop_wrap = true tracks/2/loop_wrap = true
tracks/3/keys = { tracks/2/keys = {
"times": PackedFloat32Array(27.2333, 37.5, 59.2667, 72, 82.2667, 89.7667, 106.167, 116.333, 133.8, 144.3), "times": PackedFloat32Array(27.2333, 37.5, 59.2667, 72, 82.2667, 89.7667, 106.167, 116.333, 133.8, 144.3),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
"values": [{ "values": [{
@ -169,49 +166,79 @@ tracks/3/keys = {
"method": &"trigger_intro" "method": &"trigger_intro"
}] }]
} }
tracks/4/type = "value" tracks/3/type = "value"
tracks/4/imported = false tracks/3/imported = false
tracks/4/enabled = true tracks/3/enabled = true
tracks/4/path = NodePath("..:custom_minimum_size") tracks/3/path = NodePath("..:custom_minimum_size")
tracks/4/interp = 2 tracks/3/interp = 2
tracks/4/loop_wrap = true tracks/3/loop_wrap = true
tracks/4/keys = { tracks/3/keys = {
"times": PackedFloat32Array(0, 0.7), "times": PackedFloat32Array(0, 0.7),
"transitions": PackedFloat32Array(1, 1), "transitions": PackedFloat32Array(1, 1),
"update": 0, "update": 0,
"values": [Vector2(900, 800), Vector2(900, 900)] "values": [Vector2(900, 800), Vector2(900, 900)]
} }
tracks/5/type = "value" tracks/4/type = "value"
tracks/5/imported = false tracks/4/imported = false
tracks/5/enabled = true tracks/4/enabled = true
tracks/5/path = NodePath(".:rotation") tracks/4/path = NodePath(".:rotation")
tracks/5/interp = 2 tracks/4/interp = 2
tracks/5/loop_wrap = true tracks/4/loop_wrap = true
tracks/5/keys = { tracks/4/keys = {
"times": PackedFloat32Array(0, 1.8), "times": PackedFloat32Array(0, 1.8),
"transitions": PackedFloat32Array(1, 1), "transitions": PackedFloat32Array(1, 1),
"update": 0, "update": 0,
"values": [0.174533, 0.349066] "values": [0.174533, 0.349066]
} }
tracks/6/type = "value" tracks/5/type = "value"
tracks/6/imported = false tracks/5/imported = false
tracks/6/enabled = true tracks/5/enabled = true
tracks/6/path = NodePath("../..:modulate") tracks/5/path = NodePath("../..:modulate")
tracks/6/interp = 1 tracks/5/interp = 1
tracks/6/loop_wrap = true tracks/5/loop_wrap = true
tracks/6/keys = { tracks/5/keys = {
"times": PackedFloat32Array(0, 0.733333), "times": PackedFloat32Array(0, 0.733333),
"transitions": PackedFloat32Array(1, 1), "transitions": PackedFloat32Array(1, 1),
"update": 0, "update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] "values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
} }
tracks/7/type = "value" tracks/6/type = "value"
tracks/7/imported = false tracks/6/imported = false
tracks/7/enabled = true tracks/6/enabled = true
tracks/7/path = NodePath("../../..:visible") tracks/6/path = NodePath("../../..:visible")
tracks/7/interp = 1 tracks/6/interp = 1
tracks/7/loop_wrap = true tracks/6/loop_wrap = true
tracks/7/keys = { tracks/6/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
[sub_resource type="Animation" id="Animation_egql5"]
resource_name = "debug"
length = 30.0
tracks/0/type = "method"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("../../..")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(8.93333),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"_on_text_finished"
}]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("%AnimationPlayer/Music:playing")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0), "times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"update": 1, "update": 1,
@ -220,7 +247,7 @@ tracks/7/keys = {
[sub_resource type="Animation" id="Animation_gpkkx"] [sub_resource type="Animation" id="Animation_gpkkx"]
resource_name = "en" resource_name = "en"
length = 125.0 length = 150.0
tracks/0/type = "audio" tracks/0/type = "audio"
tracks/0/imported = false tracks/0/imported = false
tracks/0/enabled = true tracks/0/enabled = true
@ -236,42 +263,27 @@ tracks/0/keys = {
"times": PackedFloat32Array(2.13355) "times": PackedFloat32Array(2.13355)
} }
tracks/0/use_blend = true tracks/0/use_blend = true
tracks/1/type = "audio" tracks/1/type = "value"
tracks/1/imported = false tracks/1/imported = false
tracks/1/enabled = true tracks/1/enabled = true
tracks/1/path = NodePath("%AnimationPlayer/Music") tracks/1/path = NodePath("../../..:progress")
tracks/1/interp = 1 tracks/1/interp = 1
tracks/1/loop_wrap = true tracks/1/loop_wrap = true
tracks/1/keys = { tracks/1/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 1.13,
"stream": ExtResource("6_7f2et")
}],
"times": PackedFloat32Array(0.133333)
}
tracks/1/use_blend = true
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("../../..:progress")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 1.66667, 6.03333, 7.66667, 11.2333, 13.9666, 19.5, 21, 28.6, 30.3667, 35.5, 36.9667, 39.2333, 39.8333, 43.0275, 44.1667, 48.5333, 49.3333, 51.5666, 53.5333, 57.3, 58.1, 63.1667, 65.4609, 72.4667, 74.0333, 80.8361, 81.9, 88.2666, 90.4, 97.493, 99.2, 106.5, 107.767, 111.4, 112.967, 119.5), "times": PackedFloat32Array(0, 1.66667, 6.03333, 7.66667, 11.2333, 13.9666, 19.5, 21, 28.6, 30.3667, 35.5, 36.9667, 39.2333, 39.8333, 43.0275, 44.1667, 48.5333, 49.3333, 51.5666, 53.5333, 57.3, 58.1, 63.1667, 65.4609, 72.4667, 74.0333, 80.8361, 81.9, 88.2666, 90.4, 97.493, 99.2, 106.5, 107.767, 111.4, 112.967, 119.5),
"transitions": PackedFloat32Array(1, 0.482968, 1, 0.482968, 1, 0.482968, 1, 0.482968, 1, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968), "transitions": PackedFloat32Array(1, 0.482968, 1, 0.482968, 1, 0.482968, 1, 0.482968, 1, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968),
"update": 0, "update": 0,
"values": [0.0, 0.0, 1.0, 1.0, 2.0, 2.0, 3.0, 3.0, 4.0, 4.0, 5.0, 5.0, 6.0, 6.0, 7.0, 7.0, 8.0, 8.0, 9.0, 9.0, 10.0, 10.0, 11.0, 11.0, 12.0, 12.0, 13.0, 13.0, 14.0, 14.0, 15.0, 15.0, 16.0, 16.0, 17.0, 17.0, 18.0] "values": [0.0, 0.0, 1.0, 1.0, 2.0, 2.0, 3.0, 3.0, 4.0, 4.0, 5.0, 5.0, 6.0, 6.0, 7.0, 7.0, 8.0, 8.0, 9.0, 9.0, 10.0, 10.0, 11.0, 11.0, 12.0, 12.0, 13.0, 13.0, 14.0, 14.0, 15.0, 15.0, 16.0, 16.0, 17.0, 17.0, 18.0]
} }
tracks/3/type = "method" tracks/2/type = "method"
tracks/3/imported = false tracks/2/imported = false
tracks/3/enabled = true tracks/2/enabled = true
tracks/3/path = NodePath("../../..") tracks/2/path = NodePath("../../..")
tracks/3/interp = 1 tracks/2/interp = 1
tracks/3/loop_wrap = true tracks/2/loop_wrap = true
tracks/3/keys = { tracks/2/keys = {
"times": PackedFloat32Array(16.5333, 40.5333, 60.6, 82.2333, 97.7333, 120.3, 150.267), "times": PackedFloat32Array(16.5333, 40.5333, 60.6, 82.2333, 97.7333, 122.3),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
"values": [{ "values": [{
"args": [], "args": [],
"method": &"try_scroll" "method": &"try_scroll"
@ -290,51 +302,60 @@ tracks/3/keys = {
}, { }, {
"args": [], "args": [],
"method": &"_on_text_finished" "method": &"_on_text_finished"
}, {
"args": [],
"method": &"trigger_intro"
}] }]
} }
tracks/4/type = "value" tracks/3/type = "value"
tracks/4/imported = false tracks/3/imported = false
tracks/4/enabled = true tracks/3/enabled = true
tracks/4/path = NodePath("..:custom_minimum_size") tracks/3/path = NodePath("..:custom_minimum_size")
tracks/4/interp = 2 tracks/3/interp = 2
tracks/4/loop_wrap = true tracks/3/loop_wrap = true
tracks/4/keys = { tracks/3/keys = {
"times": PackedFloat32Array(0, 0.7), "times": PackedFloat32Array(0, 0.7),
"transitions": PackedFloat32Array(1, 1), "transitions": PackedFloat32Array(1, 1),
"update": 0, "update": 0,
"values": [Vector2(900, 800), Vector2(900, 900)] "values": [Vector2(900, 800), Vector2(900, 900)]
} }
tracks/5/type = "value" tracks/4/type = "value"
tracks/5/imported = false tracks/4/imported = false
tracks/5/enabled = true tracks/4/enabled = true
tracks/5/path = NodePath(".:rotation") tracks/4/path = NodePath(".:rotation")
tracks/5/interp = 2 tracks/4/interp = 2
tracks/5/loop_wrap = true tracks/4/loop_wrap = true
tracks/5/keys = { tracks/4/keys = {
"times": PackedFloat32Array(0, 1.8), "times": PackedFloat32Array(0, 1.8),
"transitions": PackedFloat32Array(1, 1), "transitions": PackedFloat32Array(1, 1),
"update": 0, "update": 0,
"values": [0.174533, 0.349066] "values": [0.174533, 0.349066]
} }
tracks/6/type = "value" tracks/5/type = "value"
tracks/6/imported = false tracks/5/imported = false
tracks/6/enabled = true tracks/5/enabled = true
tracks/6/path = NodePath("../..:modulate") tracks/5/path = NodePath("../..:modulate")
tracks/6/interp = 1 tracks/5/interp = 1
tracks/6/loop_wrap = true tracks/5/loop_wrap = true
tracks/6/keys = { tracks/5/keys = {
"times": PackedFloat32Array(0, 0.733333), "times": PackedFloat32Array(0, 0.733333),
"transitions": PackedFloat32Array(1, 1), "transitions": PackedFloat32Array(1, 1),
"update": 0, "update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] "values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
} }
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("../../..:visible")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/7/type = "value" tracks/7/type = "value"
tracks/7/imported = false tracks/7/imported = false
tracks/7/enabled = true tracks/7/enabled = true
tracks/7/path = NodePath("../../..:visible") tracks/7/path = NodePath("%AnimationPlayer/Music:playing")
tracks/7/interp = 1 tracks/7/interp = 1
tracks/7/loop_wrap = true tracks/7/loop_wrap = true
tracks/7/keys = { tracks/7/keys = {
@ -388,6 +409,7 @@ tracks/2/keys = {
_data = { _data = {
&"RESET": SubResource("Animation_ytihj"), &"RESET": SubResource("Animation_ytihj"),
&"de": SubResource("Animation_bgeog"), &"de": SubResource("Animation_bgeog"),
&"debug": SubResource("Animation_egql5"),
&"en": SubResource("Animation_gpkkx"), &"en": SubResource("Animation_gpkkx"),
&"vanish": SubResource("Animation_d2p1i") &"vanish": SubResource("Animation_d2p1i")
} }
@ -402,7 +424,8 @@ offset_right = -875.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
script = ExtResource("1_o2rjr") script = ExtResource("1_o2rjr")
story_array = Array[String](["Moonlight trickled down trough clouds and twigs as Dräven tapped trough the night.", "He had been searching for a while and he knew a special someone must be hiding in the thicket.", "When a familiar smell first led him to a few bronce hairs as fluffy as his tail, he didn't think much of it.", "But then he saw paw-prints, that matched his own where he had not been. Would he finally find someone of his kind?", "He was sure of it, as the familiar scent has never been stronger than tonight.", "When suddently: Was that chatter?", "His wings rustled with joy over the familiar voice and Dräven decided to get a better look.", "A few flaps and leaps brought him up a tree, to get a glimpse of his soon to be friend.", "But all he saw was a fox.", "He didn't even want to bother it anymore.", "It would just scream and laugh at his wings of leafs, just like the trees crackled at his paws, that were no roots.", "With a small whimper, Dräven spread his wings, and slid away to at least find comfort by seeing his reflection in the nearby lake.", "It took him a while to notice, how there was a sudden silence when the clouds broke: ", "Northern lights danced trough the sky to form wings, that met at a sleak body made of stars and clouds.", "The whole forest held its breath as it stared into eyes of moonlight gazing down.", "Dräven was moved to tears when he gazed back at it. He was sad for the dragon that was of the moon and the stars and the skies. ", "It must feel so lost in the universe. ", "But his tears were of joy: It was the first time Dräven saw another creature of many kinds."]) story_array = PackedStringArray("Moonlight trickled down through clouds and twigs as Dräven tapped through the night.", "He had been searching for a while and he knew a special someone must be hiding in the thicket.", "When a familiar smell first led him to a few bronce hairs as fluffy as his tail, he didn\'t think much of it.", "But then he saw paw-prints, that matched his own where he had not been. Would he finally find someone of his kind?", "He was sure of it, as the familiar scent has never been stronger than tonight.", "When suddenly: Was that chatter?", "His wings rustled with joy over the familiar voice and Dräven decided to get a better look.", "A few flaps and leaps brought him up a tree, to get a glimpse of his soon to be friend.", "But all he saw was a fox.", "He didn\'t even want to bother it anymore.", "It would just scream and laugh at his wings of leafs, just like the trees crackled at his paws, that were no roots.", "With a small whimper, Dräven spread his wings, and slid away to at least find comfort by seeing his reflection in the nearby lake.", "It took him a while to notice, how there was a sudden silence when the clouds broke: ", "Northern lights danced through the sky to form wings, that met at a sleek body made of stars and clouds.", "The whole forest held its breath as it stared into eyes of moonlight gazing down.", "Dräven was moved to tears when he gazed back at it. He was sad for the dragon that was of the moon and the stars and the skies.", "It must feel so lost in the universe.", "But his tears were of joy: It was the first time Dräven saw another creature of many kinds.")
paragraph_lengths = PackedInt32Array(2, 4, 5, 6, 8, 9, 12, 14, 17)
[node name="PanelContainer" type="PanelContainer" parent="."] [node name="PanelContainer" type="PanelContainer" parent="."]
layout_mode = 2 layout_mode = 2
@ -458,7 +481,7 @@ custom_minimum_size = Vector2(800, 10)
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
bbcode_enabled = true bbcode_enabled = true
text = "Moonlight trickled down trough clouds and twigs as Dräven tapped trough the night.He had been searching for a while and he knew a special someone must be hiding in the thicket.When a familiar smell first led him to a few bronce hairs as fluffy as his tail, he didn't think much of it.But then he saw paw-prints, that matched his own where he had not been. Would he finally find someone of his kind?He was sure of it, as the familiar scent has never been stronger than tonight.When suddently: Was that chatter?His wings rustled with joy over the familiar voice and Dräven decided to get a better look.A few flaps and leaps brought him up a tree, to get a glimpse of his soon to be friend.But all he saw was a fox.He didn't even want to bother it anymore.It would just scream and laugh at his wings of leafs, just like the trees crackled at his paws, that were no roots.With a small whimper, Dräven spread his wings, and slid away to at least find comfort by seeing his reflection in the nearby lake.It took him a while to notice, how there was a sudden silence when the clouds broke: Northern lights danced trough the sky to form wings, that met at a sleak body made of stars and clouds.The whole forest held its breath as it stared into eyes of moonlight gazing down.Dräven was moved to tears when he gazed back at it. He was sad for the dragon that was of the moon and the stars and the skies. It must feel so lost in the universe. But his tears were of joy: It was the first time Dräven saw another creature of many kinds." text = "[p]Moonlight trickled down through clouds and twigs as Dräven tapped through the night. He had been searching for a while and he knew a special someone must be hiding in the thicket. When a familiar smell first led him to a few bronce hairs as fluffy as his tail, he didn't think much of it. [/p][p][font_size=8] [/font_size][/p][p]But then he saw paw-prints, that matched his own where he had not been. Would he finally find someone of his kind? He was sure of it, as the familiar scent has never been stronger than tonight. [/p][p][font_size=8] [/font_size][/p][p]When suddenly: Was that chatter? [/p][p][font_size=8] [/font_size][/p][p]His wings rustled with joy over the familiar voice and Dräven decided to get a better look. [/p][p][font_size=8] [/font_size][/p][p]A few flaps and leaps brought him up a tree, to get a glimpse of his soon to be friend. But all he saw was a fox. [/p][p][font_size=8] [/font_size][/p][p]He didn't even want to bother it anymore. [/p][p][font_size=8] [/font_size][/p][p]It would just scream and laugh at his wings of leafs, just like the trees crackled at his paws, that were no roots. With a small whimper, Dräven spread his wings, and slid away to at least find comfort by seeing his reflection in the nearby lake. It took him a while to notice, how there was a sudden silence when the clouds broke: [/p][p][font_size=8] [/font_size][/p][p]Northern lights danced through the sky to form wings, that met at a sleek body made of stars and clouds. The whole forest held its breath as it stared into eyes of moonlight gazing down. [/p][p][font_size=8] [/font_size][/p][p]Dräven was moved to tears when he gazed back at it. He was sad for the dragon that was of the moon and the stars and the skies. It must feel so lost in the universe. But his tears were of joy: It was the first time Dräven saw another creature of many kinds. [/p][p][font_size=8] [/font_size][/p][p][/p]"
fit_content = true fit_content = true
scroll_active = false scroll_active = false
visible_characters_behavior = 1 visible_characters_behavior = 1
@ -487,7 +510,9 @@ mix_target = 2
bus = &"text" bus = &"text"
[node name="Music" type="AudioStreamPlayer" parent="AnimationPlayer"] [node name="Music" type="AudioStreamPlayer" parent="AnimationPlayer"]
stream = ExtResource("6_7f2et")
volume_db = -10.0 volume_db = -10.0
bus = &"music" bus = &"music"
[connection signal="scroll_started" from="PanelContainer/VBoxContainer/StoryScroll" to="PanelContainer/SkipControl" method="abort_auto_proceed"] [connection signal="scroll_started" from="PanelContainer/VBoxContainer/StoryScroll" to="PanelContainer/SkipControl" method="abort_auto_proceed"]
[connection signal="finished" from="AnimationPlayer/Music" to="." method="trigger_intro"]

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=30 format=3 uid="uid://23bshas7sk6h"] [gd_scene load_steps=32 format=3 uid="uid://23bshas7sk6h"]
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_aby4n"] [ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_aby4n"]
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_k4i8e"] [ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_k4i8e"]
@ -9,7 +9,9 @@
[ext_resource type="AudioStream" uid="uid://b3cw0e41rjggo" path="res://base-environments/youth_room/audio/childhood_de.wav" id="6_uqngm"] [ext_resource type="AudioStream" uid="uid://b3cw0e41rjggo" path="res://base-environments/youth_room/audio/childhood_de.wav" id="6_uqngm"]
[ext_resource type="AudioStream" uid="uid://bwh60165c3saj" path="res://base-environments/youth_room/audio/lisa_youth_voice.ogg" id="7_bvh45"] [ext_resource type="AudioStream" uid="uid://bwh60165c3saj" path="res://base-environments/youth_room/audio/lisa_youth_voice.ogg" id="7_bvh45"]
[ext_resource type="Texture2D" uid="uid://bqilajx05t0eb" path="res://logic-scenes/board/particle_textures/void_nomotion.png" id="7_uqngm"] [ext_resource type="Texture2D" uid="uid://bqilajx05t0eb" path="res://logic-scenes/board/particle_textures/void_nomotion.png" id="7_uqngm"]
[ext_resource type="AudioStream" uid="uid://dpyf2oc5vn30e" path="res://base-environments/youth_room/audio/jiu-jutsu.wav" id="9_uqngm"]
[ext_resource type="AudioStream" uid="uid://1tvopjmo6dp2" path="res://base-environments/youth_room/audio/Azure Studios - mgd-723687677.mp3" id="10_bvh45"] [ext_resource type="AudioStream" uid="uid://1tvopjmo6dp2" path="res://base-environments/youth_room/audio/Azure Studios - mgd-723687677.mp3" id="10_bvh45"]
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="11_0qiyf"]
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_vxads"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_vxads"]
radius = 110.0 radius = 110.0
@ -330,7 +332,7 @@ tracks/7/keys = {
[sub_resource type="Animation" id="Animation_nmo1t"] [sub_resource type="Animation" id="Animation_nmo1t"]
resource_name = "en" resource_name = "en"
length = 210.0 length = 235.0
tracks/0/type = "audio" tracks/0/type = "audio"
tracks/0/imported = false tracks/0/imported = false
tracks/0/enabled = true tracks/0/enabled = true
@ -339,15 +341,11 @@ tracks/0/interp = 1
tracks/0/loop_wrap = true tracks/0/loop_wrap = true
tracks/0/keys = { tracks/0/keys = {
"clips": [{ "clips": [{
"end_offset": 62.4779,
"start_offset": 183.499,
"stream": ExtResource("7_bvh45")
}, {
"end_offset": 0.0, "end_offset": 0.0,
"start_offset": 322.397, "start_offset": 4.62339,
"stream": ExtResource("7_bvh45") "stream": ExtResource("9_uqngm")
}], }],
"times": PackedFloat32Array(1.1, 139.2) "times": PackedFloat32Array(1.96667)
} }
tracks/0/use_blend = true tracks/0/use_blend = true
tracks/1/type = "value" tracks/1/type = "value"
@ -492,8 +490,8 @@ tracks/12/path = NodePath("../../..")
tracks/12/interp = 1 tracks/12/interp = 1
tracks/12/loop_wrap = true tracks/12/loop_wrap = true
tracks/12/keys = { tracks/12/keys = {
"times": PackedFloat32Array(41.8, 92.4031, 129.133, 162.511, 204.5), "times": PackedFloat32Array(43.5333, 72.4667, 133.733, 155.167, 179.133, 181.935, 209.834, 233.467),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1),
"values": [{ "values": [{
"args": [], "args": [],
"method": &"try_scroll" "method": &"try_scroll"
@ -508,6 +506,15 @@ tracks/12/keys = {
"method": &"try_scroll" "method": &"try_scroll"
}, { }, {
"args": [], "args": [],
"method": &"_emit_thunder"
}, {
"args": [],
"method": &"try_scroll"
}, {
"args": [],
"method": &"try_scroll"
}, {
"args": [],
"method": &"_on_text_finished" "method": &"_on_text_finished"
}] }]
} }
@ -518,10 +525,10 @@ tracks/13/path = NodePath("../../..:progress")
tracks/13/interp = 1 tracks/13/interp = 1
tracks/13/loop_wrap = true tracks/13/loop_wrap = true
tracks/13/keys = { tracks/13/keys = {
"times": PackedFloat32Array(0.733333, 6.53333, 9.26667, 14.9, 16.6403, 24.3333, 25.7989, 38.4, 42.9, 90.1333, 92.2, 96.6667, 98.4294, 102.033, 103.89, 106.233, 108.3, 109.067, 116.612, 117.349, 119.467, 120.6, 122.167, 123.54, 127.633, 129.431, 134.867, 136.3, 141.567, 143.546, 148.35, 149.124, 154.275, 154.929, 159.067, 159.867, 161.852, 163.013, 166.051, 166.567, 169.419, 170.279, 178.341, 179.1, 187.391, 188.467, 191.333, 192.733, 199.776), "times": PackedFloat32Array(0.733333, 6.53333, 12.5667, 18.293, 20.0333, 28.2677, 32.2667, 42.7333, 47.2333, 54.541, 56.1949, 60.5552, 62.1466, 70.7667, 74.3667, 80.1013, 82.0206, 90.1333, 92.2, 96.6667, 98.4294, 105.243, 107.1, 113.01, 114.067, 119.745, 121.4, 125.1, 127.2, 132.467, 134.767, 138.149, 139.4, 140.821, 141.333, 145.355, 146.859, 154.259, 156.6, 162.233, 164.867, 171.3, 173.133, 177.797, 181.8, 186.267, 188.686, 191, 192.263, 194.637, 195.9, 199.014, 200.132, 203.15, 204.268, 208.833, 211.867, 218.067, 221.647, 224.367, 225.347, 228.012, 228.992, 233.473),
"transitions": PackedFloat32Array(0.450625, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), "transitions": PackedFloat32Array(0.450625, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 0, "update": 0,
"values": [0.0, 1.0, 1.0, 2.0, 2.0, 3.0, 3.0, 4.0, 4.0, 14.0, 14.0, 15.0, 15.0, 16.0, 16.0, 17.0, 18.0, 18.0, 19.0, 19.0, 20.0, 20.0, 21.0, 21.0, 22.0, 22.0, 23.0, 23.0, 24.0, 24.0, 25.0, 25.0, 26.0, 26.0, 27.0, 27.0, 28.0, 28.0, 29.0, 29.0, 30.0, 30.0, 31.0, 31.0, 32.0, 32.0, 33.0, 33.0, 34.0] "values": [0.0, 1.0, 1.0, 2.0, 2.0, 3.0, 3.0, 4.0, 4.0, 5.0, 5.0, 6.0, 6.0, 7.0, 7.0, 8.0, 8.0, 9.0, 9.0, 10.0, 10.0, 11.0, 11.0, 12.0, 12.0, 13.0, 13.0, 14.0, 14.0, 15.0, 15.0, 16.0, 16.0, 17.0, 17.0, 18.0, 18.0, 19.0, 19.0, 20.0, 20.0, 21.0, 21.0, 22.0, 22.0, 23.0, 23.0, 24.0, 24.0, 25.0, 25.0, 26.0, 26.0, 27.0, 27.0, 28.0, 28.0, 29.0, 29.0, 30.0, 30.0, 31.0, 31.0, 32.0]
} }
tracks/14/type = "value" tracks/14/type = "value"
tracks/14/imported = false tracks/14/imported = false
@ -712,7 +719,8 @@ offset_right = -424.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
script = ExtResource("1_aby4n") script = ExtResource("1_aby4n")
story_array = Array[String](["Why do i still have this junk lying around? Its not like I want to do ju jutsu ever again. I just fucked it.", "I mean I did enjoy it while it lasted. Being able to properly hit people was great. ", "It gave me the confidence to intimidate students, that were begging to get folded and - as I only once actually got to do that - it also was a great vent for anger. ", "I mean my tits just about killed me during warmup and the changing room really didn't need mirrors - thank you I know my hips are fat and disgusting - but at least there was Lukas.", "He was such a huge nerd. He studied math in his third semester and could talk for hours about his passion.", "He was such a huge nerd. He studied math in his third semester and could talk for hours about his passion.", "She was always so worried.", "Also: my math grades pretty much leaped for my final year in high shool thanks to him.", "He also helped me so much with jui jitsu, as he properly floored me when I slipped up. ", "Also - unlike everyone else - he understood that I didn't want people to mind my chest. ", "So Fighting for wins with him was actually rewarding even tho more often than not I ended up having to tap out.", "We also had my first proper kiss. I thought I loved him. But now?", "He was weird that evening. Even more huggy and hyperactive than usual. ", "We were under my bed, reading my secret comic stash when I got tired of the floor and told him we should go upstairs.", "We had a play fight on my mattress. Ive never seen him fight like this. ", "His fingers Curled across my Skin without grabbing me, like he would normally do. And he let me win", "… with this smirk on his face.", "I rolled over exhausted when suddently he sat on top of me, a pearl of sweat dropped from his nose on my throat.", "He started undoing his shirt.", "Do you have condoms?", "Yes, of course everybody has Why did he ask that?", "I saw my body lying on the bed, getting undressed. I was drifting away, towards the stars.", "My body didn't move. It didn't say a word when the butterflies tried to escape from it's stomach as he kissed it.", "I … observed him from afar. He … didn't seem to notice, that I had left.", "That I didn't return to kiss him good bye. That I didn't hug him when he went home.", "My hands knocked on my brothers door. He let me lie on his carpet.", "I slowly returned.", "\"How did it go?, Fabian asked.", "\"It was moist”, I said.", "“That usually helps.”", "He laughed awkwardly. I just wanted to also laugh, but curled into a ball and cried.", "It took him a while to say something. “I … you … it's fine Lisa. I know it hurts the first time.” ", "He gently stroked the back I was curling towards him.", "That was good. He was a sweet angel. Why must he be so bad at comforting?"]) story_array = PackedStringArray("Why do i still have this junk lying around? its not like I want to do ju jutsu ever again. I just fucked it.", "I mean I did enjoy it while it lasted. Being able to properly hit people was great.", "It gave me the confidence to intimidate students, that were begging to get folded and - as I only once actually got to do that - it also was a great vent for anger. ", "I mean my tits just about killed me during warmup and the changing room really didn\'t need mirrors - thank you I know my hips are fat and disgusting - but at least there was Lukas.", "He was such a huge nerd. He studied math in his third semester and could talk for hours about his passion.", "Also: my math grades pretty much leaped for my final year in high school thanks to him.", "He also helped me so much with jiu jitsu, as he properly floored me when I slipped up. ", "So Fighting for wins with him was actually rewarding even tho more often than not I ended up having to tap out.", "We also had my first proper kiss. I thought I loved him. But now?", "He was weird that evening. Even more huggy and hyperactive than usual.", "We were under my bed, reading my secret comic stash when I got tired of the floor and told him we should go upstairs.", "We had a play fight on my mattress. I\'ve never seen him fight like this.", "His fingers Curled across my Skin without grabbing me, like he would normally do. And he let me win", "… with this smirk on his face.", "I rolled over exhausted when suddenly he sat on top of me, a pearl of sweat dropped from his nose on my throat.", "He started undoing his shirt.", "Do you have condoms?", "Yes, of course everybody has Why did he ask that?", "I saw my body lying on the bed, getting undressed. I was drifting away, towards the stars.", "My body didn\'t move. It didn\'t say a word when the butterflies tried to escape from its stomach as he kissed it.", "I … observed him from afar. He … didn\'t seem to notice, that I had left.", "That I didn\'t return to kiss him goodbye. That I didn\'t hug him when he went home.", "My hands knocked on my brothers door. He let me lie on his carpet.", "I slowly returned.", "\"How did it go?, Fabian asked.", "\"It was moist”, I said.", "“That usually helps.”", "He laughed awkwardly. I just wanted to also laugh, but curled into a ball and cried.", "It took him a while to say something. “I … you … it\'s fine Lisa. I know it hurts the first time.”", "He gently stroked the back I was curling towards him.", "That was good. He was a sweet angel. Why must he be so bad at comforting?")
paragraph_lengths = PackedInt32Array(3, 6, 8, 9, 10, 12, 15, 16, 17, 18, 20, 22, 24, 25, 26, 27, 28, 29, 31, 32, 33, 32, 31, 30)
progress = 17.0 progress = 17.0
[node name="PanelContainer" type="PanelContainer" parent="."] [node name="PanelContainer" type="PanelContainer" parent="."]
@ -751,7 +759,7 @@ layout_mode = 2
[node name="Label" type="Label" parent="PanelContainer/VBoxContainer"] [node name="Label" type="Label" parent="PanelContainer/VBoxContainer"]
layout_mode = 2 layout_mode = 2
theme_type_variation = &"HeaderLarge" theme_type_variation = &"HeaderLarge"
text = " Jui Jutsu" text = "Jui Jutsu"
[node name="StoryScroll" type="ScrollContainer" parent="PanelContainer/VBoxContainer"] [node name="StoryScroll" type="ScrollContainer" parent="PanelContainer/VBoxContainer"]
unique_name_in_owner = true unique_name_in_owner = true
@ -760,6 +768,7 @@ layout_mode = 2
size_flags_horizontal = 4 size_flags_horizontal = 4
size_flags_vertical = 2 size_flags_vertical = 2
mouse_filter = 2 mouse_filter = 2
scroll_vertical = 100
horizontal_scroll_mode = 0 horizontal_scroll_mode = 0
vertical_scroll_mode = 3 vertical_scroll_mode = 3
@ -769,12 +778,11 @@ custom_minimum_size = Vector2(800, 10)
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
bbcode_enabled = true bbcode_enabled = true
text = "Why do i still have this junk lying around? Its not like I want to do ju jutsu ever again. I just fucked it.I mean I did enjoy it while it lasted. Being able to properly hit people was great. It gave me the confidence to intimidate students, that were begging to get folded and - as I only once actually got to do that - it also was a great vent for anger. I mean my tits just about killed me during warmup and the changing room really didn't need mirrors - thank you I know my hips are fat and disgusting - but at least there was Lukas.He was such a huge nerd. He studied math in his third semester and could talk for hours about his passion.He was such a huge nerd. He studied math in his third semester and could talk for hours about his passion.She was always so worried.Also: my math grades pretty much leaped for my final year in high shool thanks to him.He also helped me so much with jui jitsu, as he properly floored me when I slipped up. Also - unlike everyone else - he understood that I didn't want people to mind my chest. So Fighting for wins with him was actually rewarding even tho more often than not I ended up having to tap out.We also had my first proper kiss. I thought I loved him. But now?He was weird that evening. Even more huggy and hyperactive than usual. We were under my bed, reading my secret comic stash when I got tired of the floor and told him we should go upstairs.We had a play fight on my mattress. Ive never seen him fight like this. His fingers Curled across my Skin without grabbing me, like he would normally do. And he let me win… with this smirk on his face.I rolled over exhausted when suddently he sat on top of me, a pearl of sweat dropped from his nose on my throat.He started undoing his shirt.Do you have condoms?Yes, of course everybody has Why did he ask that?I saw my body lying on the bed, getting undressed. I was drifting away, towards the stars.My body didn't move. It didn't say a word when the butterflies tried to escape from it's stomach as he kissed it.I … observed him from afar. He … didn't seem to notice, that I had left.That I didn't return to kiss him good bye. That I didn't hug him when he went home.My hands knocked on my brothers door. He let me lie on his carpet.I slowly returned.\"How did it go?, Fabian asked.\"It was moist”, I said.“That usually helps.”He laughed awkwardly. I just wanted to also laugh, but curled into a ball and cried.It took him a while to say something. “I … you … it's fine Lisa. I know it hurts the first time.” He gently stroked the back I was curling towards him.That was good. He was a sweet angel. Why must he be so bad at comforting?" text = "[p]Why do i still have this junk lying around? its not like I want to do ju jutsu ever again. I just fucked it. I mean I did enjoy it while it lasted. Being able to properly hit people was great. It gave me the confidence to intimidate students, that were begging to get folded and - as I only once actually got to do that - it also was a great vent for anger. I mean my tits just about killed me during warmup and the changing room really didn't need mirrors - thank you I know my hips are fat and disgusting - but at least there was Lukas. [/p][p][font_size=8] [/font_size][/p][p]He was such a huge nerd. He studied math in his third semester and could talk for hours about his passion. Also: my math grades pretty much leaped for my final year in high school thanks to him. He also helped me so much with jiu jitsu, as he properly floored me when I slipped up. [/p][p][font_size=8] [/font_size][/p][p]So Fighting for wins with him was actually rewarding even tho more often than not I ended up having to tap out. We also had my first proper kiss. I thought I loved him. But now? [/p][p][font_size=8] [/font_size][/p][p]He was weird that evening. Even more huggy and hyperactive than usual. [/p][p][font_size=8] [/font_size][/p][p]We were under my bed, reading my secret comic stash when I got tired of the floor and told him we should go upstairs. [/p][p][font_size=8] [/font_size][/p][p]We had a play fight on my mattress. I've never seen him fight like this. His fingers Curled across my Skin without grabbing me, like he would normally do. And he let me win [/p][p][font_size=8] [/font_size][/p][p]… with this smirk on his face. I rolled over exhausted when suddenly he sat on top of me, a pearl of sweat dropped from his nose on my throat. He started undoing his shirt. [/p][p][font_size=8] [/font_size][/p][p]Do you have condoms? [/p][p][font_size=8] [/font_size][/p][p]Yes, of course everybody has Why did he ask that? [/p][p][font_size=8] [/font_size][/p][p]I saw my body lying on the bed, getting undressed. I was drifting away, towards the stars. [/p][p][font_size=8] [/font_size][/p][p]My body didn't move. It didn't say a word when the butterflies tried to escape from its stomach as he kissed it. I … observed him from afar. He … didn't seem to notice, that I had left. [/p][p][font_size=8] [/font_size][/p][p]That I didn't return to kiss him goodbye. That I didn't hug him when he went home. My hands knocked on my brothers door. He let me lie on his carpet. [/p][p][font_size=8] [/font_size][/p][p]I slowly returned. \"How did it go?, Fabian asked. [/p][p][font_size=8] [/font_size][/p][p]\"It was moist”, I said. [/p][p][font_size=8] [/font_size][/p][p]“That usually helps.” [/p][p][font_size=8] [/font_size][/p][p]He laughed awkwardly. I just wanted to also laugh, but curled into a ball and cried. [/p][p][font_size=8] [/font_size][/p][p]It took him a while to say something. “I … you … it's fine Lisa. I know it hurts the first time.” [/p][p][font_size=8] [/font_size][/p][p]He gently stroked the back I was curling towards him. [/p][p][font_size=8] [/font_size][/p][p]That was good. He was a sweet angel. Why must he be so bad at comforting? [/p]"
fit_content = true fit_content = true
scroll_active = false visible_characters = 1563
visible_characters = 1603
visible_characters_behavior = 1 visible_characters_behavior = 1
visible_ratio = 0.607657 visible_ratio = 0.635883
[node name="StartBottom" type="TextureRect" parent="PanelContainer/VBoxContainer"] [node name="StartBottom" type="TextureRect" parent="PanelContainer/VBoxContainer"]
custom_minimum_size = Vector2(0, 64) custom_minimum_size = Vector2(0, 64)
@ -803,16 +811,13 @@ clip_children = 2
scale = Vector2(0.6, 0.6) scale = Vector2(0.6, 0.6)
sprite_frames = SubResource("SpriteFrames_liwtr") sprite_frames = SubResource("SpriteFrames_liwtr")
script = SubResource("GDScript_80sa6") script = SubResource("GDScript_80sa6")
noise_speed = 0.0 noise_power = 1.5
noise_power = 5.0
[node name="GPUParticles2D" type="GPUParticles2D" parent="PanelContainer/card/BackgroundSprite"] [node name="GPUParticles2D" type="GPUParticles2D" parent="PanelContainer/card/BackgroundSprite"]
emitting = false amount = 500
amount = 1
texture = ExtResource("6_0qiyf") texture = ExtResource("6_0qiyf")
lifetime = 5.0 lifetime = 2.0
one_shot = true explosiveness = 0.2
explosiveness = 0.29
randomness = 0.14 randomness = 0.14
local_coords = true local_coords = true
process_material = SubResource("ParticleProcessMaterial_jikd6") process_material = SubResource("ParticleProcessMaterial_jikd6")
@ -832,8 +837,10 @@ libraries = {
[node name="Text" type="AudioStreamPlayer" parent="AnimationPlayer"] [node name="Text" type="AudioStreamPlayer" parent="AnimationPlayer"]
mix_target = 2 mix_target = 2
bus = &"text" bus = &"text"
script = ExtResource("11_0qiyf")
[node name="Music" type="AudioStreamPlayer" parent="AnimationPlayer"] [node name="Music" type="AudioStreamPlayer" parent="AnimationPlayer"]
volume_db = -10.0
bus = &"music" bus = &"music"
[connection signal="input_event" from="PanelContainer/card" to="PanelContainer/card" method="_on_input_event"] [connection signal="input_event" from="PanelContainer/card" to="PanelContainer/card" method="_on_input_event"]

View File

@ -4,27 +4,39 @@ extends CenterContainer
signal text_finished signal text_finished
signal finished signal finished
signal intro signal intro
signal emit_thunder
#TODO properly implement animation taking stage, as it should do, disabling processing when it does not have stage. #TODO properly implement animation taking stage, as it should do, disabling processing when it does not have stage.
var max_lines: float = 0 var max_lines: float = 0
@export var story_array: Array[String] = []: @export var story_array: PackedStringArray = []:
set(array): set(str_array):
story_array = array story_array = str_array
if is_node_ready(): if is_node_ready():
label.text = ""
substring_sizes = [] substring_sizes = []
if Engine.is_editor_hint(): if Engine.is_editor_hint():
TranslationServer.set_locale("en") TranslationServer.set_locale("en")
for string in array: var p: int = 0
label.text += TranslationServer.translate(string).replace("[/p]", "[/p][p][font_size=8] [/font_size][/p]") label.text = "[p]"
substring_sizes.append(TranslationServer.translate(string).replace("[/p]", ".").replace("[p]", "").length()) for i in range(str_array.size()):
label.text += TranslationServer.translate(str_array[i]).strip_edges() + " "
substring_sizes.append(TranslationServer.translate(str_array[i]).strip_edges().length() + 1)
if not paragraph_lengths[-1] == story_array.size()-1:
paragraph_lengths.append(story_array.size()-1)
push_warning("Paragraph lenghts of scene %s are misconfigured!" % name)
if paragraph_lengths[p] == i:
p += 1
label.text += "[/p][p][font_size=8] [/font_size][/p][p]"
substring_sizes[-1] = substring_sizes[-1] + 1
label.text += "[/p]"
max_lines = float(label.get_line_count()) max_lines = float(label.get_line_count())
@export var paragraph_lengths: PackedInt32Array = [1]
@export var progress: float = 0: @export var progress: float = 0:
set(value): set(value):
progress = value progress = value
if is_node_ready(): if is_node_ready() and not all_text_revealed:
var start_index = 0 var start_index = 0
if progress >= substring_sizes.size() or progress < 0: if progress >= substring_sizes.size() or progress < 0:
label.visible_ratio = 1 label.visible_ratio = 1
@ -36,6 +48,19 @@ var max_lines: float = 0
else: else:
label.visible_ratio = 0 label.visible_ratio = 0
var all_text_revealed: bool = false:
set(revealed):
var reset_progress := false
if revealed and not all_text_revealed:
var tween: Tween = get_tree().create_tween()
tween.set_ease(Tween.EASE_OUT)
tween.tween_property(label, "visible_ratio", 1, 1.5)
elif not revealed and all_text_revealed:
reset_progress = true
all_text_revealed = revealed
if all_text_revealed: progress = -1
if reset_progress: progress = 0
@export var test_scroll: bool: @export var test_scroll: bool:
set(scroll): set(scroll):
try_scroll() try_scroll()
@ -64,12 +89,13 @@ func _ready() -> void:
skip_control.skip.connect(skip_text) skip_control.skip.connect(skip_text)
if get_tree().root.get_child(-1) == self: if get_tree().root.get_child(-1) == self:
TranslationServer.set_locale("de")
play_scene() play_scene()
story_array = story_array story_array = story_array
progress = progress progress = progress
func try_scroll(): func try_scroll():
var scroll_target: int var forward_target: int
#print( "max lines: " + str(max_lines)) #print( "max lines: " + str(max_lines))
#print( "current lines: " + str(label.get_character_line(label.visible_characters))) #print( "current lines: " + str(label.get_character_line(label.visible_characters)))
@ -80,20 +106,20 @@ func try_scroll():
if label.size.y * visible_ratio + scroll_container.scroll_vertical > scroll_container.size.y * 0.9: if label.size.y * visible_ratio + scroll_container.scroll_vertical > scroll_container.size.y * 0.9:
if scroll_container.scroll_vertical + scroll_container.size.y * 0.9 < label.size.y: if scroll_container.scroll_vertical + scroll_container.size.y * 0.9 < label.size.y:
scroll_target = scroll_container.scroll_vertical + scroll_container.size.y * 0.8 forward_target = scroll_container.scroll_vertical + scroll_container.size.y * 0.8
else: else:
scroll_target = label.size.y - scroll_container.size.y forward_target = label.size.y - scroll_container.size.y
if scroll_target != null: if scroll_target != null:
var tween: Tween = get_tree().create_tween() var tween: Tween = get_tree().create_tween()
##tween.set_trans() ##tween.set_trans()
tween.tween_property(scroll_container, "scroll_vertical", scroll_target, 0.5) scroll_target = forward_target
func play_scene(): func play_scene():
animation_complete = false animation_complete = false
##FIXME match State.text_language: ##FIXME match State.text_language:
match TranslationServer.get_locale(): match TranslationServer.get_locale():
"de": "de":
animation_player.queue("de") animation_player.queue("en")
"en": "en":
animation_player.queue("en") animation_player.queue("en")
@ -103,6 +129,7 @@ func play_scene():
trigger_intro() trigger_intro()
animation_complete = true animation_complete = true
all_text_revealed = true
skip_control.start_proceed_countdown() skip_control.start_proceed_countdown()
@ -114,6 +141,29 @@ func play_scene():
finished.emit() finished.emit()
func _unhandled_input(event: InputEvent) -> void:
var just_revealed_text = false
if event is InputEventMouseButton:
if event.button_index == MOUSE_BUTTON_WHEEL_DOWN:
scroll_target += 40
if not all_text_revealed: just_revealed_text
all_text_revealed = true
if event.button_index == MOUSE_BUTTON_WHEEL_UP:
scroll_target -= 40
if not all_text_revealed: just_revealed_text
all_text_revealed = true
if just_revealed_text:
if animation_complete: all_text_revealed = true
var scroll_target: float = 0:
set(value):
scroll_target = clampf(value, 0, label.size.y - scroll_container.size.y)
func _process(delta: float) -> void:
# FIXME: maybe change this to has stage?
if visible and not Engine.is_editor_hint():
if scroll_container.scroll_vertical != scroll_target:
scroll_container.scroll_vertical += (scroll_target-scroll_container.scroll_vertical)*delta*6
var intro_triggered:= false var intro_triggered:= false
func trigger_intro(): func trigger_intro():
if not intro_triggered: if not intro_triggered:
@ -126,7 +176,14 @@ func skip_text():
animation_player.stop(true) animation_player.stop(true)
was_skipped = true was_skipped = true
text_finished.emit() text_finished.emit()
if name == "draven":
$AnimationPlayer/Music.stop()
elif name == "JuiJutsu":
_emit_thunder()
func _on_text_finished(): func _on_text_finished():
if not animation_complete: if not animation_complete:
text_finished.emit() text_finished.emit()
func _emit_thunder():
emit_thunder.emit()

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=17 format=3 uid="uid://cj1ccdk0686ke"] [gd_scene load_steps=18 format=3 uid="uid://cj1ccdk0686ke"]
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_543ki"] [ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_543ki"]
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_ho85h"] [ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_ho85h"]
@ -7,7 +7,8 @@
[ext_resource type="ArrayMesh" uid="uid://byjfgvx7jeal" path="res://base-environments/youth_room/import/youth_special_meshes_comic_book_2.res" id="4_kn83e"] [ext_resource type="ArrayMesh" uid="uid://byjfgvx7jeal" path="res://base-environments/youth_room/import/youth_special_meshes_comic_book_2.res" id="4_kn83e"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="5_b3y80"] [ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="5_b3y80"]
[ext_resource type="AudioStream" uid="uid://b3cw0e41rjggo" path="res://base-environments/youth_room/audio/childhood_de.wav" id="6_ya787"] [ext_resource type="AudioStream" uid="uid://b3cw0e41rjggo" path="res://base-environments/youth_room/audio/childhood_de.wav" id="6_ya787"]
[ext_resource type="AudioStream" uid="uid://bwh60165c3saj" path="res://base-environments/youth_room/audio/lisa_youth_voice.ogg" id="7_ryb3e"] [ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="8_ho85h"]
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="9_kn83e"]
[sub_resource type="ViewportTexture" id="ViewportTexture_ho85h"] [sub_resource type="ViewportTexture" id="ViewportTexture_ho85h"]
viewport_path = NodePath("PanelContainer/StartFrame/TextureRect/SubViewport") viewport_path = NodePath("PanelContainer/StartFrame/TextureRect/SubViewport")
@ -268,7 +269,7 @@ tracks/7/keys = {
[sub_resource type="Animation" id="Animation_7qabw"] [sub_resource type="Animation" id="Animation_7qabw"]
resource_name = "en" resource_name = "en"
length = 95.0 length = 108.0
tracks/0/type = "audio" tracks/0/type = "audio"
tracks/0/imported = false tracks/0/imported = false
tracks/0/enabled = true tracks/0/enabled = true
@ -277,11 +278,11 @@ tracks/0/interp = 1
tracks/0/loop_wrap = true tracks/0/loop_wrap = true
tracks/0/keys = { tracks/0/keys = {
"clips": [{ "clips": [{
"end_offset": 288.917, "end_offset": 0.0,
"start_offset": 0.0, "start_offset": 4.92,
"stream": ExtResource("7_ryb3e") "stream": ExtResource("8_ho85h")
}], }],
"times": PackedFloat32Array(0.400002) "times": PackedFloat32Array(0.6)
} }
tracks/0/use_blend = true tracks/0/use_blend = true
tracks/1/type = "value" tracks/1/type = "value"
@ -291,10 +292,10 @@ tracks/1/path = NodePath("../../..:progress")
tracks/1/interp = 1 tracks/1/interp = 1
tracks/1/loop_wrap = true tracks/1/loop_wrap = true
tracks/1/keys = { tracks/1/keys = {
"times": PackedFloat32Array(0, 1.66667, 4.73332, 6.03333, 13.1, 14.1333, 17.1, 18.0333, 20.8334, 21.5, 26.1333, 26.6333, 30.6, 32.5, 38.475, 39.375, 41.9667, 42.6333, 46.1, 47.4667, 50.4333, 52.2333, 54.8667, 56.1333, 59.9028, 61.2667, 64.9334, 65.8667, 70.5597, 72.2667, 78.233, 79.5, 84.9333, 86.0077, 91.8667), "times": PackedFloat32Array(0, 1.66667, 4.73332, 6.03333, 14.9, 16.2667, 19.4, 20.3333, 22.5667, 23.6667, 29.2667, 29.7667, 34.5667, 36.4667, 41.6333, 44.9, 47.1, 48.1667, 51.6667, 53.0333, 55.9, 58.6667, 61.1, 62.9, 68.1001, 69.3667, 74.1028, 75.4667, 80.7334, 81.6667, 88.8597, 90.5667, 96.2333, 97.9, 104.733),
"transitions": PackedFloat32Array(1, 0.482968, 1, 0.482968, 1, 0.482968, 1, 0.482968, 1, 1.23114, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.287175, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968), "transitions": PackedFloat32Array(1, 0.482968, 1, 0.482968, 1, 0.482968, 1, 0.482968, 1, 1.23114, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.287175, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968),
"update": 0, "update": 0,
"values": [0.0, 0.0, 1.0, 1.0, 2.0, 2.0, 3.0, 3.0, 4.0, 4.0, 5.0, 5.0, 6.0, 6.0, 7.0, 7.0, 9.0, 9.0, 10.0, 10.0, 11.0, 11.0, 12.0, 12.0, 13.0, 13.0, 14.0, 14.0, 15.0, 15.0, 16.0, 16.0, 17.0, 17.0, 18.0] "values": [0.0, 0.0, 1.0, 1.0, 2.0, 2.0, 3.0, 3.0, 4.0, 4.0, 5.0, 5.0, 6.0, 6.0, 7.0, 7.0, 8.0, 8.0, 9.0, 9.0, 10.0, 10.0, 11.0, 11.0, 12.0, 12.0, 13.0, 13.0, 14.0, 14.0, 15.0, 15.0, 16.0, 16.0, 17.0]
} }
tracks/2/type = "method" tracks/2/type = "method"
tracks/2/imported = false tracks/2/imported = false
@ -303,7 +304,7 @@ tracks/2/path = NodePath("../../..")
tracks/2/interp = 1 tracks/2/interp = 1
tracks/2/loop_wrap = true tracks/2/loop_wrap = true
tracks/2/keys = { tracks/2/keys = {
"times": PackedFloat32Array(17.6, 31.8, 51.1667, 71.1333, 75.9667, 94.3333), "times": PackedFloat32Array(15.2333, 35.2, 56, 74.5667, 96.9007, 107.867),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
"values": [{ "values": [{
"args": [], "args": [],
@ -329,7 +330,7 @@ tracks/3/type = "value"
tracks/3/imported = false tracks/3/imported = false
tracks/3/enabled = true tracks/3/enabled = true
tracks/3/path = NodePath("..:custom_minimum_size") tracks/3/path = NodePath("..:custom_minimum_size")
tracks/3/interp = 2 tracks/3/interp = 1
tracks/3/loop_wrap = true tracks/3/loop_wrap = true
tracks/3/keys = { tracks/3/keys = {
"times": PackedFloat32Array(0, 0.7), "times": PackedFloat32Array(0, 0.7),
@ -341,7 +342,7 @@ tracks/4/type = "value"
tracks/4/imported = false tracks/4/imported = false
tracks/4/enabled = true tracks/4/enabled = true
tracks/4/path = NodePath(".:rotation") tracks/4/path = NodePath(".:rotation")
tracks/4/interp = 2 tracks/4/interp = 1
tracks/4/loop_wrap = true tracks/4/loop_wrap = true
tracks/4/keys = { tracks/4/keys = {
"times": PackedFloat32Array(0, 1.8), "times": PackedFloat32Array(0, 1.8),
@ -389,7 +390,7 @@ tracks/8/type = "value"
tracks/8/imported = false tracks/8/imported = false
tracks/8/enabled = true tracks/8/enabled = true
tracks/8/path = NodePath("../TextureRect/SubViewport/Node3D/YouthSpecialMeshesComicBook1:position") tracks/8/path = NodePath("../TextureRect/SubViewport/Node3D/YouthSpecialMeshesComicBook1:position")
tracks/8/interp = 2 tracks/8/interp = 1
tracks/8/loop_wrap = true tracks/8/loop_wrap = true
tracks/8/keys = { tracks/8/keys = {
"times": PackedFloat32Array(0.0497012, 1.46667), "times": PackedFloat32Array(0.0497012, 1.46667),
@ -401,7 +402,7 @@ tracks/9/type = "value"
tracks/9/imported = false tracks/9/imported = false
tracks/9/enabled = true tracks/9/enabled = true
tracks/9/path = NodePath("../TextureRect/SubViewport/Node3D/YouthSpecialMeshesComicBook1:rotation") tracks/9/path = NodePath("../TextureRect/SubViewport/Node3D/YouthSpecialMeshesComicBook1:rotation")
tracks/9/interp = 2 tracks/9/interp = 1
tracks/9/loop_wrap = true tracks/9/loop_wrap = true
tracks/9/keys = { tracks/9/keys = {
"times": PackedFloat32Array(0, 1.46667), "times": PackedFloat32Array(0, 1.46667),
@ -490,7 +491,8 @@ offset_right = -424.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
script = ExtResource("1_543ki") script = ExtResource("1_543ki")
story_array = Array[String](["My secret comic stash. I remember playing Que-Men with the boys.", "I had a voice for every character in that comic. But more often than not I played him: Agent Q.", "Going under the radar, putting in precise work to save the world.", "Not having to deal with being a girl.", "Boys were so much easier. They like cars, bikes, guns and agents.", "They dont talk behind your back. They dont think everything is about relationships.", "Girls dont get that. I knew they talked behind my back about me only “pretending” to like boy stuff, so Id get laid ", "… I mean, maybe they were right?", "Like I wont deny I was probably the first girl in my class to see a dick.", "But like - thats what the boys do, right?", "At least it has gotten better after me and Jojo became friends.", "I still remember how that happened. I did a voice acting workshop in art class. ", "Being allowed to share my technique in front of everyone was just :D", "I mean next to nobody put in any effort. But Jojo did.", "When our Mr Funny then decided to ape her attempts instead of just minding his own, I pretty much exploded.", "After this, we suddenly were besties. And my class finally started to just leave me be. ", "Maybe because I for once was friends with another girl. Maybe because I scared them. Maybe both."]) story_array = PackedStringArray("My secret comic stash. I remember playing Clue-Men with the boys.", "I had a voice for every character in that comic. But more often than not I played him: Agent Q.", "Going under the radar, putting in precise work to save the world.", "Not having to deal with being a girl.", "Boys were so much easier. They like cars, bikes, guns and agents.", "They don\'t talk behind your back. They don\'t think everything is about relationships.", "Girls don\'t get that. I knew they talked behind my back about me only “pretending” to like boy stuff, so Id get laid ", "… I mean, maybe they were right?", "Like I won\'t deny I was probably the first girl in my class to see a dick.", "But like - thats what the boys do, right?", "At least it has gotten better after me and Jojo became friends.", "I still remember how that happend. I did a voice acting workshop in art class.", "Being allowed to share my technique in front of everyone was just :D", "I mean next to nobody put in any effort. But Jojo did.", "When our Mr Funny then decided to ape her attempts instead of just minding his own, I pretty much exploded.", "After this, we suddenly were besties. And my class finally started to just leave me be. ", "Maybe because I for once was friends with another girl. Maybe because I scared them. Maybe both.")
paragraph_lengths = PackedInt32Array(1, 2, 5, 7, 9, 10, 13, 14, 16)
progress = 17.0 progress = 17.0
[node name="PanelContainer" type="PanelContainer" parent="."] [node name="PanelContainer" type="PanelContainer" parent="."]
@ -596,7 +598,7 @@ layout_mode = 2
[node name="Label" type="Label" parent="PanelContainer/VBoxContainer"] [node name="Label" type="Label" parent="PanelContainer/VBoxContainer"]
layout_mode = 2 layout_mode = 2
theme_type_variation = &"HeaderLarge" theme_type_variation = &"HeaderLarge"
text = " secret Comic Stash" text = "secret Comic Stash"
[node name="StoryScroll" type="ScrollContainer" parent="PanelContainer/VBoxContainer"] [node name="StoryScroll" type="ScrollContainer" parent="PanelContainer/VBoxContainer"]
unique_name_in_owner = true unique_name_in_owner = true
@ -614,7 +616,7 @@ custom_minimum_size = Vector2(800, 10)
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
bbcode_enabled = true bbcode_enabled = true
text = "My secret comic stash. I remember playing Que-Men with the boys.I had a voice for every character in that comic. But more often than not I played him: Agent Q.Going under the radar, putting in precise work to save the world.Not having to deal with being a girl.Boys were so much easier. They like cars, bikes, guns and agents.They dont talk behind your back. They dont think everything is about relationships.Girls dont get that. I knew they talked behind my back about me only “pretending” to like boy stuff, so Id get laid … I mean, maybe they were right?Like I wont deny I was probably the first girl in my class to see a dick.But like - thats what the boys do, right?At least it has gotten better after me and Jojo became friends.I still remember how that happened. I did a voice acting workshop in art class. Being allowed to share my technique in front of everyone was just :DI mean next to nobody put in any effort. But Jojo did.When our Mr Funny then decided to ape her attempts instead of just minding his own, I pretty much exploded.After this, we suddenly were besties. And my class finally started to just leave me be. Maybe because I for once was friends with another girl. Maybe because I scared them. Maybe both." text = "[p]My secret comic stash. I remember playing Clue-Men with the boys. I had a voice for every character in that comic. But more often than not I played him: Agent Q. [/p][p][font_size=8] [/font_size][/p][p]Going under the radar, putting in precise work to save the world. [/p][p][font_size=8] [/font_size][/p][p]Not having to deal with being a girl. Boys were so much easier. They like cars, bikes, guns and agents. They don't talk behind your back. They don't think everything is about relationships. [/p][p][font_size=8] [/font_size][/p][p]Girls don't get that. I knew they talked behind my back about me only “pretending” to like boy stuff, so Id get laid … I mean, maybe they were right? [/p][p][font_size=8] [/font_size][/p][p]Like I won't deny I was probably the first girl in my class to see a dick. But like - thats what the boys do, right? [/p][p][font_size=8] [/font_size][/p][p]At least it has gotten better after me and Jojo became friends. [/p][p][font_size=8] [/font_size][/p][p]I still remember how that happend. I did a voice acting workshop in art class. Being allowed to share my technique in front of everyone was just :D I mean next to nobody put in any effort. But Jojo did. [/p][p][font_size=8] [/font_size][/p][p]When our Mr Funny then decided to ape her attempts instead of just minding his own, I pretty much exploded. [/p][p][font_size=8] [/font_size][/p][p]After this, we suddenly were besties. And my class finally started to just leave me be. Maybe because I for once was friends with another girl. Maybe because I scared them. Maybe both. [/p][p][font_size=8] [/font_size][/p][p][/p]"
fit_content = true fit_content = true
scroll_active = false scroll_active = false
visible_characters_behavior = 1 visible_characters_behavior = 1
@ -641,3 +643,4 @@ libraries = {
[node name="Text" type="AudioStreamPlayer" parent="AnimationPlayer"] [node name="Text" type="AudioStreamPlayer" parent="AnimationPlayer"]
mix_target = 2 mix_target = 2
bus = &"text" bus = &"text"
script = ExtResource("9_kn83e")

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=113 format=4 uid="uid://b3b0gyvklqn50"] [gd_scene load_steps=112 format=4 uid="uid://b3b0gyvklqn50"]
[ext_resource type="Script" uid="uid://belkrno67sft0" path="res://base-environments/youth_room/room_handle.gd" id="1_aitp0"] [ext_resource type="Script" uid="uid://belkrno67sft0" path="res://base-environments/youth_room/room_handle.gd" id="1_aitp0"]
[ext_resource type="PackedScene" uid="uid://c0i4ydmxtxfho" path="res://base-environments/youth_room/import/youth_room.glb" id="1_jf3oi"] [ext_resource type="PackedScene" uid="uid://c0i4ydmxtxfho" path="res://base-environments/youth_room/import/youth_room.glb" id="1_jf3oi"]
@ -356,10 +356,22 @@ tracks/16/keys = {
"update": 1, "update": 1,
"values": [false] "values": [false]
} }
tracks/17/type = "value"
tracks/17/imported = false
tracks/17/enabled = true
tracks/17/path = NodePath("%ScenePlayer/Moving:volume_db")
tracks/17/interp = 1
tracks/17/loop_wrap = true
tracks/17/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
[sub_resource type="Animation" id="Animation_ea6x8"] [sub_resource type="Animation" id="Animation_ea6x8"]
resource_name = "childhood_music" resource_name = "childhood_music"
length = 90.0 length = 5.0
tracks/0/type = "value" tracks/0/type = "value"
tracks/0/imported = false tracks/0/imported = false
tracks/0/enabled = true tracks/0/enabled = true
@ -367,10 +379,10 @@ tracks/0/path = NodePath("%ScenePlayer/Moving:volume_db")
tracks/0/interp = 1 tracks/0/interp = 1
tracks/0/loop_wrap = true tracks/0/loop_wrap = true
tracks/0/keys = { tracks/0/keys = {
"times": PackedFloat32Array(-0.0416667, 4.95833, 85, 90), "times": PackedFloat32Array(-0.0416667, 5),
"transitions": PackedFloat32Array(1, 1, 1, 1), "transitions": PackedFloat32Array(3.36358, 1),
"update": 0, "update": 0,
"values": [0.0, -80.0, -80.0, 0.0] "values": [0.0, -80.0]
} }
tracks/1/type = "value" tracks/1/type = "value"
tracks/1/imported = false tracks/1/imported = false
@ -379,15 +391,15 @@ tracks/1/path = NodePath("%ScenePlayer/Childhood:volume_db")
tracks/1/interp = 1 tracks/1/interp = 1
tracks/1/loop_wrap = true tracks/1/loop_wrap = true
tracks/1/keys = { tracks/1/keys = {
"times": PackedFloat32Array(0, 5, 85, 90), "times": PackedFloat32Array(0, 5),
"transitions": PackedFloat32Array(1, 1, 1, 1), "transitions": PackedFloat32Array(0.196146, 1),
"update": 0, "update": 0,
"values": [-80.0, 0.0, 0.0, -80.0] "values": [-80.0, 0.0]
} }
[sub_resource type="Animation" id="Animation_1kp3w"] [sub_resource type="Animation" id="Animation_1kp3w"]
resource_name = "draeven" resource_name = "draeven"
length = 155.0 length = 160.0
tracks/0/type = "value" tracks/0/type = "value"
tracks/0/imported = false tracks/0/imported = false
tracks/0/enabled = true tracks/0/enabled = true
@ -503,11 +515,25 @@ tracks/9/path = NodePath("ScenePlayer/Moving:volume_db")
tracks/9/interp = 1 tracks/9/interp = 1
tracks/9/loop_wrap = true tracks/9/loop_wrap = true
tracks/9/keys = { tracks/9/keys = {
"times": PackedFloat32Array(0.1, 7.6, 150.5, 158.3), "times": PackedFloat32Array(0.1, 7.6, 143.233, 151.033),
"transitions": PackedFloat32Array(1, 1, 1, 1), "transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0, "update": 0,
"values": [0.0, -80.0, -80.0, 0.0] "values": [0.0, -80.0, -80.0, 0.0]
} }
tracks/10/type = "method"
tracks/10/imported = false
tracks/10/enabled = true
tracks/10/path = NodePath("%ScenePlayer")
tracks/10/interp = 1
tracks/10/loop_wrap = true
tracks/10/keys = {
"times": PackedFloat32Array(142.333),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"start_soundtrack"
}]
}
[sub_resource type="Animation" id="Animation_1pmhi"] [sub_resource type="Animation" id="Animation_1pmhi"]
resource_name = "intro" resource_name = "intro"
@ -531,7 +557,7 @@ tracks/1/path = NodePath("ScenePlayer")
tracks/1/interp = 1 tracks/1/interp = 1
tracks/1/loop_wrap = true tracks/1/loop_wrap = true
tracks/1/keys = { tracks/1/keys = {
"times": PackedFloat32Array(0.8), "times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"values": [{ "values": [{
"args": [], "args": [],
@ -637,7 +663,7 @@ tracks/0/path = NodePath("ScenePlayer/Moving:volume_db")
tracks/0/interp = 1 tracks/0/interp = 1
tracks/0/loop_wrap = true tracks/0/loop_wrap = true
tracks/0/keys = { tracks/0/keys = {
"times": PackedFloat32Array(0, 9, 171.8, 207.7), "times": PackedFloat32Array(0, 9, 177, 191),
"transitions": PackedFloat32Array(1.93187, 1, 0.189465, 1.93187), "transitions": PackedFloat32Array(1.93187, 1, 0.189465, 1.93187),
"update": 0, "update": 0,
"values": [0.0, -80.0, -80.0, 0.0] "values": [0.0, -80.0, -80.0, 0.0]
@ -702,7 +728,7 @@ tracks/3/keys = {
[sub_resource type="Animation" id="Animation_8gaqi"] [sub_resource type="Animation" id="Animation_8gaqi"]
resource_name = "voice_intro" resource_name = "voice_intro"
length = 10.0 length = 5.0
tracks/0/type = "value" tracks/0/type = "value"
tracks/0/imported = false tracks/0/imported = false
tracks/0/enabled = true tracks/0/enabled = true
@ -710,7 +736,7 @@ tracks/0/path = NodePath("ScenePlayer/Moving:volume_db")
tracks/0/interp = 1 tracks/0/interp = 1
tracks/0/loop_wrap = true tracks/0/loop_wrap = true
tracks/0/keys = { tracks/0/keys = {
"times": PackedFloat32Array(0, 9), "times": PackedFloat32Array(0, 5),
"transitions": PackedFloat32Array(1.93187, 1), "transitions": PackedFloat32Array(1.93187, 1),
"update": 0, "update": 0,
"values": [0.0, -80.0] "values": [0.0, -80.0]
@ -722,7 +748,7 @@ tracks/1/path = NodePath("ScenePlayer/VoiceTraining:volume_db")
tracks/1/interp = 1 tracks/1/interp = 1
tracks/1/loop_wrap = true tracks/1/loop_wrap = true
tracks/1/keys = { tracks/1/keys = {
"times": PackedFloat32Array(0, 9.1), "times": PackedFloat32Array(0, 5),
"transitions": PackedFloat32Array(0.241484, 1), "transitions": PackedFloat32Array(0.241484, 1),
"update": 0, "update": 0,
"values": [-80.0, 0.0] "values": [-80.0, 0.0]
@ -730,7 +756,7 @@ tracks/1/keys = {
[sub_resource type="Animation" id="Animation_ghmim"] [sub_resource type="Animation" id="Animation_ghmim"]
resource_name = "voice_music" resource_name = "voice_music"
length = 105.0 length = 7.0
tracks/0/type = "value" tracks/0/type = "value"
tracks/0/imported = false tracks/0/imported = false
tracks/0/enabled = true tracks/0/enabled = true
@ -738,10 +764,10 @@ tracks/0/path = NodePath("ScenePlayer/Moving:volume_db")
tracks/0/interp = 1 tracks/0/interp = 1
tracks/0/loop_wrap = true tracks/0/loop_wrap = true
tracks/0/keys = { tracks/0/keys = {
"times": PackedFloat32Array(0, 5.6, 94.8, 102.9), "times": PackedFloat32Array(0, 7),
"transitions": PackedFloat32Array(1.93187, 1, 0.189465, 1.93187), "transitions": PackedFloat32Array(4.14105, 1),
"update": 0, "update": 0,
"values": [0.0, -80.0, -80.0, 0.0] "values": [0.0, -80.0]
} }
tracks/1/type = "value" tracks/1/type = "value"
tracks/1/imported = false tracks/1/imported = false
@ -750,10 +776,10 @@ tracks/1/path = NodePath("ScenePlayer/VoiceTraining:volume_db")
tracks/1/interp = 1 tracks/1/interp = 1
tracks/1/loop_wrap = true tracks/1/loop_wrap = true
tracks/1/keys = { tracks/1/keys = {
"times": PackedFloat32Array(0.1, 5.7, 94.8, 103.1), "times": PackedFloat32Array(0.1, 7),
"transitions": PackedFloat32Array(0.176777, 1, 1.93187, 0.176777), "transitions": PackedFloat32Array(0.176777, 1),
"update": 0, "update": 0,
"values": [-80.0, 0.0, 0.0, -80.0] "values": [-80.0, 0.0]
} }
[sub_resource type="AnimationLibrary" id="AnimationLibrary_ilekd"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_ilekd"]
@ -810,7 +836,6 @@ func play_scene(id: int, repeat = false):
Scenes.id.YOUTH_DRAEVEN: Scenes.id.YOUTH_DRAEVEN:
play(\"draeven\") play(\"draeven\")
$draven.play_scene() $draven.play_scene()
get_parent().get_parent().dnd = true
func _on_ini_room(): func _on_ini_room():
pass pass
@ -826,16 +851,24 @@ func on_voice_training_done():
func on_jui_jutsu_done(): func on_jui_jutsu_done():
Scenes.continue_sequence(self) Scenes.continue_sequence(self)
$JuiJutsu.hide() $JuiJutsu.hide()
if $JuiJutsu.was_skipped:
play(\"intro\")
func on_draeven_done(): func on_draeven_done():
Scenes.continue_sequence(self) Scenes.continue_sequence(self)
await $draven.finished
$draven.hide() $draven.hide()
func try_intro(): func try_intro():
if $draven.was_skipped: if $draven.was_skipped:
play(\"intro\") play(\"intro\")
func scene_finished(_id: int, _repeat: bool): func scene_finished(id: Scenes.id, _repeat: bool):
match id:
Scenes.id.YOUTH_CHILDHOOD:
play_backwards(\"childhood_music\")
Scenes.id.YOUTH_VOICE_TRAINING:
play_backwards(\"voice_music\")
queue(\"RESET\") queue(\"RESET\")
func play(anin_name: StringName = \"\", a: float = -1, b: float = 1, c: bool = false) -> void: func play(anin_name: StringName = \"\", a: float = -1, b: float = 1, c: bool = false) -> void:
@ -1064,15 +1097,6 @@ _data = {
&"lighting_and_thunder": SubResource("Animation_3ms6b") &"lighting_and_thunder": SubResource("Animation_3ms6b")
} }
[sub_resource type="GDScript" id="GDScript_j63gy"]
script/source = "extends AnimationPlayer
func _process(delta: float) -> void:
if Input.is_action_just_pressed(\"ui_focus_next\"):
stop()
play(\"lighting_and_thunder\")
"
[sub_resource type="GDScript" id="GDScript_35dmj"] [sub_resource type="GDScript" id="GDScript_35dmj"]
script/source = "extends SpotLight3D script/source = "extends SpotLight3D
@ -1956,7 +1980,6 @@ shape = SubResource("CapsuleShape3D_72g2i")
libraries = { libraries = {
&"": SubResource("AnimationLibrary_vwrt1") &"": SubResource("AnimationLibrary_vwrt1")
} }
script = SubResource("GDScript_j63gy")
[node name="sfx" type="Node3D" parent="."] [node name="sfx" type="Node3D" parent="."]
@ -1974,6 +1997,7 @@ emission_angle_filter_attenuation_db = -19.6
[node name="thunder" type="AudioStreamPlayer3D" parent="sfx"] [node name="thunder" type="AudioStreamPlayer3D" parent="sfx"]
transform = Transform3D(-0.410985, -0.460061, 0.787042, -0.904759, 0.311726, -0.290238, -0.111814, -0.831367, -0.544359, -0.248397, 4.34956, 8.85405) transform = Transform3D(-0.410985, -0.460061, 0.787042, -0.904759, 0.311726, -0.290238, -0.111814, -0.831367, -0.544359, -0.248397, 4.34956, 8.85405)
unit_size = 100.0
panning_strength = 0.3 panning_strength = 0.3
bus = &"sfx" bus = &"sfx"
@ -2270,6 +2294,7 @@ light_array = Array[Vector3]([Vector3(-0.545, 0.915, 1.035), Vector3(-0.47, 0.85
[connection signal="pressed" from="logic/UI/ending_button" to="logic/UI/ending_button" method="hide"] [connection signal="pressed" from="logic/UI/ending_button" to="logic/UI/ending_button" method="hide"]
[connection signal="pressed" from="logic/UI/ending_button" to="logic/UI/ending" method="show"] [connection signal="pressed" from="logic/UI/ending_button" to="logic/UI/ending" method="show"]
[connection signal="board_completed" from="logic/UI/Board" to="logic/UI/ending_button" method="show"] [connection signal="board_completed" from="logic/UI/Board" to="logic/UI/ending_button" method="show"]
[connection signal="emit_thunder" from="logic/ScenePlayer/JuiJutsu" to="AnimationPlayer" method="play" binds= ["lighting_and_thunder"]]
[connection signal="finished" from="logic/ScenePlayer/draven" to="logic/ScenePlayer" method="on_draeven_done"] [connection signal="finished" from="logic/ScenePlayer/draven" to="logic/ScenePlayer" method="on_draeven_done"]
[connection signal="input_event" from="logic/MaskMemento/UiWrapper" to="logic/MaskMemento/UiWrapper" method="_on_input_event"] [connection signal="input_event" from="logic/MaskMemento/UiWrapper" to="logic/MaskMemento/UiWrapper" method="_on_input_event"]
[connection signal="scene_skipped" from="logic/MaskMemento/UiWrapper/UiSprite/SubViewport/CollectableUi" to="logic/UI/Board" method="on_scene_skipped"] [connection signal="scene_skipped" from="logic/MaskMemento/UiWrapper/UiSprite/SubViewport/CollectableUi" to="logic/UI/Board" method="on_scene_skipped"]

View File

@ -1,9 +1,35 @@
[gd_resource type="AudioBusLayout" load_steps=3 format=3 uid="uid://djkwd76o033io"] [gd_resource type="AudioBusLayout" load_steps=7 format=3 uid="uid://djkwd76o033io"]
[sub_resource type="AudioEffectLowPassFilter" id="AudioEffectLowPassFilter_ijm2o"] [sub_resource type="AudioEffectLowPassFilter" id="AudioEffectLowPassFilter_ijm2o"]
resource_name = "LowPassFilter" resource_name = "LowPassFilter"
cutoff_hz = 6000.0 cutoff_hz = 6000.0
[sub_resource type="AudioEffectHighPassFilter" id="AudioEffectHighPassFilter_j3pel"]
resource_name = "HighPassFilter"
cutoff_hz = 40.0
resonance = 0.7
db = 1
[sub_resource type="AudioEffectLowPassFilter" id="AudioEffectLowPassFilter_j3pel"]
resource_name = "LowPassFilter"
cutoff_hz = 13084.0
resonance = 0.7
[sub_resource type="AudioEffectEQ" id="AudioEffectEQ_j3pel"]
resource_name = "EQ"
band_db/100_hz = 2.0
band_db/320_hz = 4.0
band_db/3200_hz = -1.0
band_db/10000_hz = -6.0
[sub_resource type="AudioEffectReverb" id="AudioEffectReverb_j3pel"]
resource_name = "Reverb"
predelay_feedback = 0.1
room_size = 0.3
damping = 1.0
hipass = 0.4
wet = 0.03
[sub_resource type="AudioEffectLowPassFilter" id="AudioEffectLowPassFilter_5p17k"] [sub_resource type="AudioEffectLowPassFilter" id="AudioEffectLowPassFilter_5p17k"]
resource_name = "LowPassFilter" resource_name = "LowPassFilter"
resonance = 0.52 resonance = 0.52
@ -17,6 +43,14 @@ bus/1/mute = false
bus/1/bypass_fx = false bus/1/bypass_fx = false
bus/1/volume_db = 0.0 bus/1/volume_db = 0.0
bus/1/send = &"test 2" bus/1/send = &"test 2"
bus/1/effect/0/effect = SubResource("AudioEffectHighPassFilter_j3pel")
bus/1/effect/0/enabled = true
bus/1/effect/1/effect = SubResource("AudioEffectLowPassFilter_j3pel")
bus/1/effect/1/enabled = true
bus/1/effect/2/effect = SubResource("AudioEffectEQ_j3pel")
bus/1/effect/2/enabled = true
bus/1/effect/3/effect = SubResource("AudioEffectReverb_j3pel")
bus/1/effect/3/enabled = true
bus/2/name = &"sfx" bus/2/name = &"sfx"
bus/2/solo = false bus/2/solo = false
bus/2/mute = false bus/2/mute = false

View File

@ -3,3 +3,5 @@ extends Node
func _ready() -> void: func _ready() -> void:
var initialize_response: Dictionary = Steam.steamInitEx() var initialize_response: Dictionary = Steam.steamInitEx()
print("Did Steam initialize?: %s " % initialize_response) print("Did Steam initialize?: %s " % initialize_response)
if State.disconnect_steam:
Steam.steamShutdown()

View File

@ -0,0 +1,11 @@
class_name StereoSwitch extends AudioStreamPlayer
func _ready() -> void:
State.settings_changed.connect(update_mix_target)
update_mix_target()
func update_mix_target():
if State.force_stereo:
mix_target = AudioStreamPlayer.MIX_TARGET_STEREO
else:
mix_target = AudioStreamPlayer.MIX_TARGET_CENTER

View File

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

View File

@ -113,7 +113,7 @@ mesh = SubResource("PlaneMesh_4cqhd")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."] [node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = { libraries = {
"": SubResource("AnimationLibrary_l6qbr") &"": SubResource("AnimationLibrary_l6qbr")
} }
autoplay = "test" autoplay = "test"

View File

@ -52,6 +52,7 @@ offset_bottom = 174.0
text = "Hello" text = "Hello"
item_count = 2 item_count = 2
popup/item_0/text = "asdf" popup/item_0/text = "asdf"
popup/item_0/id = 0
popup/item_1/text = "werty" popup/item_1/text = "werty"
popup/item_1/id = 1 popup/item_1/id = 1
script = SubResource("GDScript_rovd7") script = SubResource("GDScript_rovd7")
@ -62,12 +63,16 @@ offset_right = 21.0
offset_bottom = 39.0 offset_bottom = 39.0
text = "Accessibility, Disclaimers and Content Notes" text = "Accessibility, Disclaimers and Content Notes"
[node name="RichTextLabel" type="RichTextLabel" parent="."] [node name="ScrollContainer" type="ScrollContainer" parent="."]
layout_mode = 0 layout_mode = 0
offset_left = 1498.0 offset_left = 1087.0
offset_top = 243.0 offset_top = 153.0
offset_right = 2329.0 offset_right = 1738.0
offset_bottom = 597.0 offset_bottom = 602.0
[node name="RichTextLabel" type="RichTextLabel" parent="ScrollContainer"]
layout_mode = 2
size_flags_horizontal = 3
text = "Oh, my old mask. I have so many good memories about theatre club. I would stand on my bed for entire afternoons, weeks on end, practicing my lines. Pretending to be on the big stage ... my mom would get mad at me, when she had to call me three or four times for dinner. I just … didn't like the interruptions. We both were often mad at each other. text = "Oh, my old mask. I have so many good memories about theatre club. I would stand on my bed for entire afternoons, weeks on end, practicing my lines. Pretending to be on the big stage ... my mom would get mad at me, when she had to call me three or four times for dinner. I just … didn't like the interruptions. We both were often mad at each other.
Dinner was difficult. I just couldnt bring myself to eat, because I couldnt deal with the bread and my mom. She was always so worried. Lisa, you forgot your homework, Lisa why wont you play with the other girls, Lisa why didn't Steffi invite you to her birthday, Lisa this, Lisa that. Dinner was difficult. I just couldnt bring myself to eat, because I couldnt deal with the bread and my mom. She was always so worried. Lisa, you forgot your homework, Lisa why wont you play with the other girls, Lisa why didn't Steffi invite you to her birthday, Lisa this, Lisa that.

View File

@ -1,33 +1,42 @@
keys,en,de,es,ja,notes keys,en,de,es,ja,notes
"Accessibility, Disclaimers and Content Notes","Accessibility, Disclaimers and Content Notes",Barrierefreiheit und Erwartungsmanagement,,, "Accessibility, Disclaimers and Content Notes","Accessibility, Disclaimers and Content Notes",Barrierefreiheit und Erwartungsmanagement,,,
Accessibility,Accessibility,Barrierefreiheit,,, Accessibility,Accessibility,Barrierefreiheit,,,
reduce motion,reduce motion,Reduzierte Animationen,,, reduce motion,Reduce Motion,Reduzierte Animationen,,,
use Screenreader,use Screenreader,Screen-Reader aktivieren,,, use Screenreader,Use Screenreader,Screen-Reader aktivieren,,,
disable video,disable video,Video deaktivieren,,, disable video,Disable Video,Video deaktivieren,,,
(save compute when playing blind,(save compute when playing blind,Spart Rechenleistung beim blind spielen,,, (save compute when playing blind,Save Compute When Playing Blind,Spart Rechenleistung beim blind spielen,,,
simplified Controls,simplified Controls,vereinfachte Steuerung,,, simplified Controls,simplified Controls,Vereinfachte Steuerung,,,
Show Navigation,Show Navigation,Navigation Anzeigen,,, Show Navigation,Show Navigation,Navigation anzeigen,,,
Font-Style,Font-Style,Schriftart,,, Font-Style,Font-Style,Schriftart,,,
messy handwriting,messy handwriting,unleserliche Handschrift,,, messy handwriting,Messy Handwriting,Unleserliche Handschrift,,,
easy handwriting,easy handwriting,einfache Handschrift,,, easy handwriting,Easy Handwriting,Einfache Handschrift,,,
serif,serif,Serifenschrift,,, serif,Serif Font,Serifenschrift,,,
hyperlegible sans,Hyperlegible Sans,Extrem lesbar Serifenfrei,,, hyperlegible sans,Hyper Legible Font,Extrem lesbar Serifenfrei,,,
system font,system font,System-Schriftart,,, system font,System Font,System-Schriftart,,,
subtitles,subtitles,Untertitelung,,, subtitles,Subtitles,Untertitel,,,
spoken text,spoken text,gesprochener Text,,, spoken text,Spoken Text,Gesprochener Text,,,
closed captions,closed captions,Volluntertitlung,,, closed captions,Closed Captions,Untertitel für Hörgeschädigte,,,
UI Scale,UI Scale,UI Skalierung,,, UI Scale,UI Scale,UI Skalierung,,,
okay,okay,O.K.,,, okay,Okay,O.K.,,,
go back,go back,zurück,,, go back,Go Back,Zurück,,,
skip all,skip all,alle Überspringen,,, skip all,Skip All,Alles Überspringen,,,
Audio Settings,Audio Settings,Audio Einstellungen,,, Audio and Language,Audio and Language,Sprache und Sound,,,
mute Soundtrack,mute Soundtrack,Musik aus,,, mute Soundtrack,Mute Soundtrack,Musik aus,,,
mute Sound-Effects,mute Sound-Effects,Effekte aus,,, mute Sound-Effects,Mute Sound-Effects,Effekte aus,,,
Volume Sliders,Volume Sliders,Lautstärkeregler,,, Volume Sliders,Volume Sliders,Lautstärkeregler,,,
Music,Music,Musik,,, Music,Music,Musik,,,
Sounds,Sounds,Geräusche,,, Sounds,Sounds,Geräusche,,,
Speech,Speech,Sprache,,, Speech,Speech,Sprache,,,
Sum,Sum,Summe,,, Sum,Sum,Summe,,,
Headphone-Mode (may fix missing speech),Headphone-Mode (may fix missing speech),Kopfhörer-Modus (könnte fehlende Sprachausgabe beheben),,,
This setting disables the surround center channel. May resolve you not hearing speech when your Operating Sustem has a misconfigured surround setup.,This setting disables the surround center channel. May resolve you not hearing speech when your Operating Sustem has a misconfigured surround setup.,"Diese Einstellung deaktiviert den Center-Kanal. Solltest du wegen einer fehlerhaften Surround-Konfiguration keine Sprachausgabe hören, könnte diese Option das beheben.",,,
Language Settings,Language Settings,Spracheinstellungen,,,
Interface,Interface,Oberfläche,,,
Voice Lines,Voice Lines,Sprachausgabe,,,
Find Subtitle Settings in Acessability Settings.,Find Subtitle Settings in Acessability Settings.,Untertiteloptionen sind unter Optionen für Barrierefreiheit.,,,
use OS Language,use OS Language,Betriebssystemsprache nutzen,,,
English,English,Englisch,,,
German,German,Deutsch,,,
This Game deals with Heavy Topics.,This Game deals with Heavy Topics.,In diesem Spiel geht es um schwere Themen.,,, This Game deals with Heavy Topics.,This Game deals with Heavy Topics.,In diesem Spiel geht es um schwere Themen.,,,
I would like to know more.,I would like to know more.,Ich würde gern mehr wissen.,,, I would like to know more.,I would like to know more.,Ich würde gern mehr wissen.,,,
Is this game for or about me?,Is this game for or about me?,Ist dieses Spiel für oder über mich?,,, Is this game for or about me?,Is this game for or about me?,Ist dieses Spiel für oder über mich?,,,
@ -68,8 +77,8 @@ Mental Health Accessibility Options,Mental Health Accessibility Options,Barriere
You can always Pause using Escape or Spacebar You can always Pause using Escape or Spacebar
You can always choose to just get a neutral summary of scenes or skip them entirely You can always choose to just get a neutral summary of scenes or skip them entirely
[/ul]","[ul] [/ul]","[ul]
You can always Pause using Escape or Spacebar You can always pause using escape or spacebar.
You can always choose to just get a neutral summary of scenes or skip them entirely You can always choose to just get a neutral summary of scenes or skip them entirely.
[/ul]","[ul] [/ul]","[ul]
Du kannst immer mit Pause oder Escape pausieren. Du kannst immer mit Pause oder Escape pausieren.
Du kannst dir wünschen, dass du bei schwierige Szenen überspringen kannst und eine neutrale Zusammenfassung davon bekommst.",,, Du kannst dir wünschen, dass du bei schwierige Szenen überspringen kannst und eine neutrale Zusammenfassung davon bekommst.",,,
@ -85,51 +94,53 @@ continue,continue,weiter spielen,,,
load,load,Spiel laden,,, load,load,Spiel laden,,,
settings,settings,Einstellungen,,, settings,settings,Einstellungen,,,
Video,Video,Grafik,,,In the context of a settings menu selection Video,Video,Grafik,,,In the context of a settings menu selection
Gameplay,Gameplay,Spiel,,,In the context of a settings menu selection Gameplay,Gameplay,Spieloptionen,,,In the context of a settings menu selection
Content Notes,Content Notes,sensible Inhalte,,,In the context of a settings menu selection Content Notes,Content Notes,Sensible Inhalte,,,In the context of a settings menu selection
Video Settings,Video Settings,Grafikeinstellungen,,,In the context of a settings menu selection Video Settings,Video Settings,Grafikeinstellungen,,,In the context of a settings menu selection
General,General,Allgemeines,,,In the context of a video settings menu General,General,Allgemeines,,,In the context of a video settings menu
apply preset,apply preset,Voreinstellungen,,, apply preset,Apply Preset,Voreinstellungen,,,
Performance,Performance,Leistungsschonend,,, Performance,Low,Niedrig,,,
Balanced,Balanced,Ausgeglichen,,, Balanced,Middle,Mittel,,,
Quality,Quality,Qualität,,, Quality,High,Hoch ,,,
Fulscreen Mode,Fulscreen Mode,Fenster-Modus,,, Fulscreen Mode,Fullscreen Mode,Fenster-Modus,,,
Windowed,Windowed,im Fenster,,, Windowed,Windowed,Im Fenster,,,
Fullscreen,Fullscreen,Vollbild,,, Fullscreen,Fullscreen,Vollbild,,,
exclusive Fullscreen,exclusive Fullscreen,exklusives Vollbild,,, exclusive Fullscreen,exclusive Fullscreen,exklusives Vollbild,,,
Rendering Scale,Rendering Scale,Skalierung,,, Rendering Scale,Rendering Scale,Skalierung,,,
reset,reset,zurücksetzen,,, reset,reset,zurücksetzen,,,
Super Resolution,Super Resolution,Super Resolution,,, Super Resolution,Super Resolution,Super Resolution,,,
disabled,disabled,aus,,, disabled,Disable,Deaktiviert,,,
limit FPS,limit FPS,FPS begrenzen,,, limit FPS,Limit FPS,FPS begrenzen,,,
Graphic Fidelity,Graphic Fidelity,graphische Qualität,,, Graphic Fidelity,Graphic Fidelity,Graphische Qualität,,,
Global Illumination,Global Illumination,Globale Illumination,,, Global Illumination,Global Illumination,Globale Illumination,,,
minimum,minimum,minimum,,, minimum,Minimum,Minimum,,,
low (SDF Global Illumination),low (SDF Global Illumination),Niedrig (SDF Illumination),,, low (SDF Global Illumination),Low (SDF Global Illumination),Niedrig (SDF Illumination),,,
medium (SDF and Screen Space Global Illumination),medium (SDF and Screen Space Global Illumination),mittel (SDF-Beleuchtung und SSGI),,, medium (SDF and Screen Space Global Illumination),Medium (SDF and Screen Space Global Illumination),Mittel (SDF-Beleuchtung und SSGI),,,
high (SDF and Screen Space Global Illumination),high (SDF and Screen Space Global Illumination),hoch (SDF-Beleuchtung und SSGI),,, high (SDF and Screen Space Global Illumination),High (SDF and Screen Space Global Illumination),Hoch (SDF-Beleuchtung und SSGI),,,
Shadow Quality,Shadow Quality,Shattenqualität,,, Shadow Quality,Shadow Quality,Schatten Qualität,,,
performance,performance,leistungsschonend,,, performance,Performance,Leistung,,,
balanced,balanced,ausgeglichen,,, balanced,Balanced,Ausgeglichen,,,
quality,quality,höchste Qualität,,, quality,Quality,Höchste Qualität,,,
Texture Filtering,Texture Filtering,Texturfilterung,,, Texture Filtering,Texture Filtering,Texturfilterung,,,
1x (very fast),1x (very fast),1x (sehr schnell),,, 1x (very fast),1x (very fast),1x (sehr schnell),,,
2x (fast),2x (fast),2x (schnell),,, 2x (fast),2x (fast),2x (schnell),,,
4x (average),4x (average),4x (medium),,, 4x (average),4x (average),4x (medium),,,
8x (slow),8x (slow),8x (langsam),,, 8x (slow),8x (slow),8x (langsam),,,
16x (slowest),16x (slowest),16x (am langsamsten),,,
Anti Aliasing,Anti Aliasing,Kantenglättung,,, Anti Aliasing,Anti Aliasing,Kantenglättung,,,
enabled,enabled,aktiviert,,, enabled,Enable,Aktiviert,,,
adaptive,adaptive,adaptiv,,, adaptive,Adaptive,Adaptiv,,,
Letterbox,Letterbox,Letterbox,,, Letterbox,Letterbox,Letterbox,,,
close,close,zurück,,, close,Close,Zurück,,,
save and apply,save and apply,speichern und anwenden,,, discard,Discard,Verwerfen,,,
save and apply,Save and Apply,Speichern und Anwenden,,,
"Settings have been modified. "Settings have been modified.
Do you really want to leave without saving?","Settings have been modified. Do you really want to leave without saving?","Settings have been modified.
Do you really want to leave without saving?","Es gibt nicht gespeicherte Änderungen. Do you really want to leave without saving?","Es gibt nicht gespeicherte Änderungen.
Möchtest du wirklich zurück ohne zu speichern?",,, Möchtest du wirklich zurück ohne zu speichern?",,,
leave,leave,wirklich verlassen,,, leave,Leave,Wirklich verlassen,,,
save,save,speichern,,, save,Save,Speichern,,,
abort,abort,abbrechen,,, abort,Abort,Abbrechen,,,
Gameplay Settings,Gameplay Settings,Spieleinstellungen,,, Gameplay Settings,Gameplay Settings,Spieleinstellungen,,,
invert Y (gamepad),invert Y (gamepad),Y-Achse invertieren,,, invert Y (gamepad),invert Y (gamepad),Y-Achse invertieren,,,
Input Sensitivity,Input Sensitivity,Eingabesensibilität,,, Input Sensitivity,Input Sensitivity,Eingabesensibilität,,,
@ -149,34 +160,34 @@ Inside youth room.,Inside youth room.,Im Jugendzimmer.,,,
Transitioning to voluntary year.,Transitioning to voluntary year.,Übergang zum FSJ.,,, Transitioning to voluntary year.,Transitioning to voluntary year.,Übergang zum FSJ.,,,
Exploring social service year.,Exploring social service year.,Während des FSJ.,,, Exploring social service year.,Exploring social service year.,Während des FSJ.,,,
Transitioning to university.,Transitioning to university.,Übergang zur Universität.,,, Transitioning to university.,Transitioning to university.,Übergang zur Universität.,,,
Exploring dorm room.,Exploring dorm room.,Während des Studiums,,, Exploring dorm room.,Exploring dorm room.,Während des Studiums.,,,
Ending,Ending,Ende,,, Ending,Ending,Ende,,,
homework,I never put in much effort for homework ,Ich habe mir nie Mühe bei Hausaufgaben gegeben,,, homework,"I never put in much effort for homework, ","Ich habe mir nie Mühe bei Hausaufgaben gegeben, ",,,
good_grades,but at least I get good grades.,aber zumindest waren meine Noten gut.,,, good_grades,but at least I get good grades.,aber zumindest waren meine Noten gut.,,,
upset_peers,my peers were upset about that.,meine Klasse war deswegen sauer.,,, upset_peers,my peers were upset about that.,meine Klasse war deswegen sauer.,,,
teachers,I like my teachers more than my classmates ,"Ich komm mit meinen Lehrern besser klar, als mit meiner Klasse.",,, teachers,"I like my teachers more than my classmates, ","Ich komm mit meinen Lehrern besser klar, als mit meiner Klasse, ",,,
volunteering,doing voluntary social service at my school would be great.,vielleicht sollte ich ein FSJ vor dem Stidum machen,,, volunteering,doing voluntary social service at my school would be great.,vielleicht sollte ich ein FSJ vor dem Studium machen.,,,
becoming_teacher,maybe I want to become a teacher.,vielleicht sollte ich Lehrerin werden.,,, becoming_teacher,Maybe I want to become a teacher.,vielleicht sollte ich Lehrerin werden.,,,
joy,I can put ages into things I enjoy ,"Ich versinke in Dingen, die mir Freude machen",,, joy,"I can put ages into things I enjoy, ","Ich versinke in Dingen, die mir Freude machen,",,,
worried_mother,my mother would be worried about that,meiner Mutter macht das Sorgen.,,, worried_mother,my mother would be worried about that.,meiner Mutter macht das Sorgen.,,,
thomas_gifted,Mr Thomas thinks that makes me gifted.,Herr Thomas denkt das macht mich begabt.,,, thomas_gifted,Mr. Thomas thinks that makes me gifted.,Herr Thomas denkt das macht mich begabt.,,,
comic_heroes,Comic heroes are my role models ,Comic Helden sind meine Vorbilder,,, comic_heroes,"Comic heroes are my role models, ","Comic Helden sind meine Vorbilder,",,,
effort,"when I put in the effort, I can make the world a better place","wenn ich mich nur anstrenge, kann ich die Welt verbessern!",,, effort,"when I put in the effort, I can make the world a better place!","wenn ich mich nur anstrenge, kann ich die Welt verbessern!",,,
agent_q,and I want to be like agent q!,"Ich will so sein, wie Agend Clue!",,, agent_q,and I want to be like Agent Q!,"Ich will so sein, wie Agent Q!",,,
boy_stuff,I like boy stuff ,Ich mag Jugns Kram,,, boy_stuff,"I like boy stuff, ","Ich mag Jungs Kram,",,,
pretending,yet they think I'm just pretending,aber die denken ich tu einfach nur so.,,, pretending,yet they think I'm just pretending.,aber die denken ich tu einfach nur so.,,,
girls,and girls don't get that.,und Mädchen verstehen das einfach nicht!,,, girls,and girls don't get that.,und Mädchen verstehen das einfach nicht!,,,
teasing,"When Jojo got teased for trying, I pretty much exploded","Ich bin ausgerastet, weil Jojo für ihre Mühe gemobbt wurde",,, teasing,"When Jojo got bullied for trying, I pretty much exploded","Ich bin ausgerastet, weil Jojo für ihre Mühe gemobbt wurde,",,,
stubborn,"I wouldn't have it any other way, even if it was for my own good","das würde ich nicht aufgeben, selbst wenn es mir helfen würde.",,, stubborn,"I wouldn't have it any other way, even if it was for my own good.","das würde ich nicht aufgeben, selbst wenn es mir helfen würde.",,,
good_intended,I will always stand up for the good intended,"ich werde immer für Menschen einstehen, die das Richtige wollen!",,, good_intended,I will always stand up for the good intended!,"ich werde immer für Menschen einstehen, die das Richtige wollen!",,,
jui_jutsu,I stopped doing Jui Jitsu.,Ich habe mit Jui Jutsu aufgehört,,, jui_jutsu,"I stopped doing jiu-jitsu, ","Ich habe mit Jiu Jitsu aufgehört,",,,
body,My body just didn't feel right,mein Körper hat sich falsch anfefühlt,,, body,my body just didn't feel right.,mein Körper hat sich falsch anfefühlt.,,,
girly,I just hate being treated like a girl,Ich hasse es wie ein Mädchen behandelt zu werden,,, girly,I just hate being treated like a girl.,ich hasse es wie ein Mädchen behandelt zu werden.,,,
hit,I know how to properly hit people ,"Ich weiß, wie man ordentlich zuschlägt",,, hit,"I know how to properly hit people, ","Ich weiß, wie man ordentlich zuschlägt, ",,,
confidence,that gives me a lot of confidence.,das gibt mir viel Selbstvertrauen.,,, confidence,that gives me a lot of confidence.,das gibt mir viel Selbstvertrauen.,,,
vent,and thats a great vent.,ich kann da gut Frust ablassen.,,, vent,and that's a great vent.,ich kann da gut Frust ablassen.,,,
"Lukas did not ask for consent, he didn't explain a thing, I didnt even move! Yet he dared to assume, that ","Lukas did not ask for consent, he didn't explain a thing, I didnt even move! Yet he dared to assume, that ","Lukas hat mich nicht gefragt, er hat nichts erklärt und trotzdem wagte er es zu glauben:",,,It is very crucial that this sentence and the next line form a complete sentence "Lukas did not ask for consent, he didn't explain a thing, I didnt even move! Yet he dared to assume, that ","Lukas did not ask for consent, he didn't explain a thing, I didnt even move! Yet he dared to assume, that ","Lukas hat mich nicht gefragt, er hat nichts erklärt und trotzdem wagte er es zu glauben:",,,It is very crucial that this sentence and the next line form a complete sentence
wet,"I was wet, so I must have been into it","Ich war feucht, also hab ichs wohl gewollt?",,,This line on itself should seem like a intrusive thought on its own without the contect above. wet,"I was wet, so I must have been into it?","Ich war feucht, also hab ich es wohl gewollt?",,,This line on itself should seem like a intrusive thought on its own without the contect above.
"Lukas jumped me, he didn't even explain a thing or ask consent. I was confused and paralised, so ","Lukas jumped me, he didn't even explain a thing or ask consent. I was confused and paralised, so ","Lukas hat mich überrumpelt, er hat nichts erklärt oder überhaupt gefragt, was ich wollte. Ich war im Moment nicht mehr ich selbst und",,,It is very crucial that this sentence and the next line form a complete sentence "Lukas jumped me, he didn't even explain a thing or ask consent. I was confused and paralised, so ","Lukas jumped me, he didn't even explain a thing or ask consent. I was confused and paralised, so ","Lukas hat mich überrumpelt, er hat nichts erklärt oder überhaupt gefragt, was ich wollte. Ich war im Moment nicht mehr ich selbst und",,,It is very crucial that this sentence and the next line form a complete sentence
stop,I didnt say stop.,Ich habe nicht Stopp gesagt.,,,This line on itself should seem like a intrusive thought on its own without the contect above. stop,I didnt say stop.,Ich habe nicht Stopp gesagt.,,,This line on itself should seem like a intrusive thought on its own without the contect above.
out_of_world,I feel like I am not from of this world,Ich fühl mich wie von einer anderen Welt,,, out_of_world,I feel like I am not from of this world,Ich fühl mich wie von einer anderen Welt,,,
@ -280,10 +291,10 @@ Maybe because I for once was friends with another girl. Maybe because I scared t
skip reading (hold),skip reading (hold),zum Ende springen (gedrückt halten),,, skip reading (hold),skip reading (hold),zum Ende springen (gedrückt halten),,,
,,,,, ,,,,,
"*USK-Kennzeichnung bezieht sich auf den Games for Family-Stand der Spielraum-Messe Dresden. "*USK-Kennzeichnung bezieht sich auf den Games for Family-Stand der Spielraum-Messe Dresden.
Die Kennzeichnung trifft nicht zwangsläufig auf das finale Spiel zu.","*USK-rating is of the Games for Family-booth on Spielraum-Messe Dresden. Die Kennzeichnung trifft nicht zwangsläufig auf das finale Spiel zu.","*USK-rating is related to the Games for Family-booth at Spielraum-Messe Dresden.
Rating does not transfer to the final game.","*USK-Kennzeichnung bezieht sich auf den Games for Family-Stand der Spielraum-Messe Dresden. Rating does not transfer to the final game.","*USK-Kennzeichnung bezieht sich auf den Games for Family-Stand der Spielraum-Messe Dresden.
Die Kennzeichnung überträgt sich nicht auf das finale Spiel.",,, Die Kennzeichnung überträgt sich nicht auf das finale Spiel.",,,
Starte die Demo!,Start the Demo!,Starte die Demo!,,, Starte die Demo!,Start the demo!,Starte die Demo!,,,
Demo-intro-text,"#Frame of Mind Demo-intro-text,"#Frame of Mind
## A game of thoughts. ## A game of thoughts.
@ -302,9 +313,19 @@ mit denen manche Jugendliche beim Aufwachsen konfrontiert werden.
In dieser Demo werden Probleme mit Essen, Mobbing und Geschlechter-Rollen sowie Nacktheit unter Jugendlichen und fiktionale Gewalt in Comics angesprochen. Dabei werden ein paar Schimpfworte verwendet. In dieser Demo werden Probleme mit Essen, Mobbing und Geschlechter-Rollen sowie Nacktheit unter Jugendlichen und fiktionale Gewalt in Comics angesprochen. Dabei werden ein paar Schimpfworte verwendet.
Eine Szene erzählt von Trauma und Dissoziation als Folge von sexuellen Übergriffen.",,, Eine Szene erzählt von Trauma und Dissoziation als Folge von sexuellen Übergriffen.",,,
Childhood,Childhood,Kindheit,,, Childhood,Childhood,Kindheit,,,
voice Training,Stimmtechnik,Stimmtechnik,,, voice Training,Voice Training,Stimmtechnik,,,
Collect Memento,Collect Memento,Erinnerung einsammeln,,, Collect Memento,Collect Memento,Erinnerung einsammeln,,,
Order Thoughts,Order Thoughts,Gedanken sortieren,,, Mind Board,Mind Board,Korkwand,,,
listen again,listen again,erneut anhören,,, listen again,Listen Again,Erneut anhören,,,
Why does that story mean so much to me?,Why does that story mean so much to me?,Warum geht mir diese Geschichte so nah?,,, Why does that story mean so much to me?,Why does that story mean so much to me?,Warum geht mir diese Geschichte so nah?,,,
lang-disclaimer,"""Frame of Mind"" is as of now not yet fully localised for German.","""Frame of Mind"" ist noch nicht voll nach Deutsch übersetzt.",,, lang-disclaimer,"""Frame of Mind"" is as of now not yet fully localised for German.","""Frame of Mind"" ist noch nicht voll ins Deutsche übersetzt.",,,
Dräven,Dräven,Dräven,,,
Jui Jutsu,Jiu-Jitsu,Jiu Jitsu,,,
Sports Clothes,Sports Clothes,Sportklamotten,,,
crafted Mask,Crafted Mask,Gebastelte Maske,,,
secret Comic Stash,Secret Comic Stash,Comic Geheimversteck,,,
find connections,Find Connections,Zusammenhänge finden,,,
Find all three Momentos to collect all thoughts.,Find all three Momentos to gather all thoughts.,Finde die drei Erinnerungen um alle Gedanken zu sammeln. ,,,
Find two more Momentos to collect all cards.,Find two more Momentos to collect all cards.,Finde zwei weitere Erinnerungen um alle Karten zu sammeln.,,,
Find the last remaining Momento.,Find the last remaining Momento.,Finde die letzte Erinnerung. ,,,
Attribution,Attribution,Mitwirkende und Danksagung,,,

1 keys en de es ja notes
2 Accessibility, Disclaimers and Content Notes Accessibility, Disclaimers and Content Notes Barrierefreiheit und Erwartungsmanagement
3 Accessibility Accessibility Barrierefreiheit
4 reduce motion reduce motion Reduce Motion Reduzierte Animationen
5 use Screenreader use Screenreader Use Screenreader Screen-Reader aktivieren
6 disable video disable video Disable Video Video deaktivieren
7 (save compute when playing blind (save compute when playing blind Save Compute When Playing Blind Spart Rechenleistung beim blind spielen
8 simplified Controls simplified Controls vereinfachte Steuerung Vereinfachte Steuerung
9 Show Navigation Show Navigation Navigation Anzeigen Navigation anzeigen
10 Font-Style Font-Style Schriftart
11 messy handwriting messy handwriting Messy Handwriting unleserliche Handschrift Unleserliche Handschrift
12 easy handwriting easy handwriting Easy Handwriting einfache Handschrift Einfache Handschrift
13 serif serif Serif Font Serifenschrift
14 hyperlegible sans Hyperlegible Sans Hyper Legible Font Extrem lesbar Serifenfrei
15 system font system font System Font System-Schriftart
16 subtitles subtitles Subtitles Untertitelung Untertitel
17 spoken text spoken text Spoken Text gesprochener Text Gesprochener Text
18 closed captions closed captions Closed Captions Volluntertitlung Untertitel für Hörgeschädigte
19 UI Scale UI Scale UI Skalierung
20 okay okay Okay O.K.
21 go back go back Go Back zurück Zurück
22 skip all skip all Skip All alle Überspringen Alles Überspringen
23 Audio Settings Audio and Language Audio Settings Audio and Language Audio Einstellungen Sprache und Sound
24 mute Soundtrack mute Soundtrack Mute Soundtrack Musik aus
25 mute Sound-Effects mute Sound-Effects Mute Sound-Effects Effekte aus
26 Volume Sliders Volume Sliders Lautstärkeregler
27 Music Music Musik
28 Sounds Sounds Geräusche
29 Speech Speech Sprache
30 Sum Sum Summe
31 Headphone-Mode (may fix missing speech) Headphone-Mode (may fix missing speech) Kopfhörer-Modus (könnte fehlende Sprachausgabe beheben)
32 This setting disables the surround center channel. May resolve you not hearing speech when your Operating Sustem has a misconfigured surround setup. This setting disables the surround center channel. May resolve you not hearing speech when your Operating Sustem has a misconfigured surround setup. Diese Einstellung deaktiviert den Center-Kanal. Solltest du wegen einer fehlerhaften Surround-Konfiguration keine Sprachausgabe hören, könnte diese Option das beheben.
33 Language Settings Language Settings Spracheinstellungen
34 Interface Interface Oberfläche
35 Voice Lines Voice Lines Sprachausgabe
36 Find Subtitle Settings in Acessability Settings. Find Subtitle Settings in Acessability Settings. Untertiteloptionen sind unter Optionen für Barrierefreiheit.
37 use OS Language use OS Language Betriebssystemsprache nutzen
38 English English Englisch
39 German German Deutsch
40 This Game deals with Heavy Topics. This Game deals with Heavy Topics. In diesem Spiel geht es um schwere Themen.
41 I would like to know more. I would like to know more. Ich würde gern mehr wissen.
42 Is this game for or about me? Is this game for or about me? Ist dieses Spiel für oder über mich?
77 minimum minimum Minimum minimum Minimum
78 low (SDF Global Illumination) low (SDF Global Illumination) Low (SDF Global Illumination) Niedrig (SDF Illumination)
79 medium (SDF and Screen Space Global Illumination) medium (SDF and Screen Space Global Illumination) Medium (SDF and Screen Space Global Illumination) mittel (SDF-Beleuchtung und SSGI) Mittel (SDF-Beleuchtung und SSGI)
80 high (SDF and Screen Space Global Illumination) high (SDF and Screen Space Global Illumination) High (SDF and Screen Space Global Illumination) hoch (SDF-Beleuchtung und SSGI) Hoch (SDF-Beleuchtung und SSGI)
81 Shadow Quality Shadow Quality Shattenqualität Schatten Qualität
82 performance performance Performance leistungsschonend Leistung
83 balanced balanced Balanced ausgeglichen Ausgeglichen
84 quality quality Quality höchste Qualität Höchste Qualität
94 close Letterbox close Letterbox zurück Letterbox
95 save and apply close save and apply Close speichern und anwenden Zurück
96 Settings have been modified. Do you really want to leave without saving? discard Settings have been modified. Do you really want to leave without saving? Discard Es gibt nicht gespeicherte Änderungen. Möchtest du wirklich zurück ohne zu speichern? Verwerfen
97 leave save and apply leave Save and Apply wirklich verlassen Speichern und Anwenden
98 save Settings have been modified. Do you really want to leave without saving? save Settings have been modified. Do you really want to leave without saving? speichern Es gibt nicht gespeicherte Änderungen. Möchtest du wirklich zurück ohne zu speichern?
99 abort leave abort Leave abbrechen Wirklich verlassen
100 Gameplay Settings save Gameplay Settings Save Spieleinstellungen Speichern
101 invert Y (gamepad) abort invert Y (gamepad) Abort Y-Achse invertieren Abbrechen
102 Input Sensitivity Gameplay Settings Input Sensitivity Gameplay Settings Eingabesensibilität Spieleinstellungen
103 Stream Overlay invert Y (gamepad) Stream Overlay invert Y (gamepad) Stream-Einblendungen Y-Achse invertieren
104 Displays content note and currently playing music at a corner of the screen. Input Sensitivity Displays content note and currently playing music at s corner of the screen. Input Sensitivity Zeigt Hinweise zu sensiblen Themen und aktuell laufender Musik an einer Ecke des Bildschirms an. Eingabesensibilität
105 none Stream Overlay none Stream Overlay keine Stream-Einblendungen
106 top left Displays content note and currently playing music at a corner of the screen. top left Displays content note and currently playing music at s corner of the screen. oben links Zeigt Hinweise zu sensiblen Themen und aktuell laufender Musik an einer Ecke des Bildschirms an.
107 top right none top right none oben rechts keine
108 bottom left top left bottom left top left unten links oben links
109 bottom right top right bottom right top right unten rechts oben rechts
110 save and exit bottom left save and exit bottom left speichern und zurück unten links
111 Content Settings bottom right Content Settings bottom right sensible Inhalte unten rechts
112 Start new game. save and exit Start new game. save and exit Neuen Spielstand anlegen. speichern und zurück
113 Empty Slot Content Settings Empty Slot Content Settings leerer Spielstand sensible Inhalte
114 Intro Sequence Start new game. Intro Sequence Start new game. Einleitung Neuen Spielstand anlegen.
115 Inside youth room. Empty Slot Inside youth room. Empty Slot Im Jugendzimmer. leerer Spielstand
116 Transitioning to voluntary year. Intro Sequence Transitioning to voluntary year. Intro Sequence Übergang zum FSJ. Einleitung
117 Exploring social service year. Inside youth room. Exploring social service year. Inside youth room. Während des FSJ. Im Jugendzimmer.
118 Transitioning to university. Transitioning to voluntary year. Transitioning to university. Transitioning to voluntary year. Übergang zur Universität. Übergang zum FSJ.
119 Exploring dorm room. Exploring social service year. Exploring dorm room. Exploring social service year. Während des Studiums Während des FSJ.
120 Ending Transitioning to university. Ending Transitioning to university. Ende Übergang zur Universität.
121 homework Exploring dorm room. I never put in much effort for homework Exploring dorm room. Ich habe mir nie Mühe bei Hausaufgaben gegeben Während des Studiums.
122 good_grades Ending but at least I get good grades. Ending aber zumindest waren meine Noten gut. Ende
123 upset_peers homework my peers were upset about that. I never put in much effort for homework, meine Klasse war deswegen sauer. Ich habe mir nie Mühe bei Hausaufgaben gegeben,
124 teachers good_grades I like my teachers more than my classmates but at least I get good grades. Ich komm mit meinen Lehrern besser klar, als mit meiner Klasse. aber zumindest waren meine Noten gut.
125 volunteering upset_peers doing voluntary social service at my school would be great. my peers were upset about that. vielleicht sollte ich ein FSJ vor dem Stidum machen meine Klasse war deswegen sauer.
126 becoming_teacher teachers maybe I want to become a teacher. I like my teachers more than my classmates, vielleicht sollte ich Lehrerin werden. Ich komm mit meinen Lehrern besser klar, als mit meiner Klasse,
127 joy volunteering I can put ages into things I enjoy doing voluntary social service at my school would be great. Ich versinke in Dingen, die mir Freude machen vielleicht sollte ich ein FSJ vor dem Studium machen.
128 worried_mother becoming_teacher my mother would be worried about that Maybe I want to become a teacher. meiner Mutter macht das Sorgen. vielleicht sollte ich Lehrerin werden.
129 joy I can put ages into things I enjoy, Ich versinke in Dingen, die mir Freude machen,
130 thomas_gifted worried_mother Mr Thomas thinks that makes me gifted. my mother would be worried about that. Herr Thomas denkt das macht mich begabt. meiner Mutter macht das Sorgen.
131 comic_heroes thomas_gifted Comic heroes are my role models Mr. Thomas thinks that makes me gifted. Comic Helden sind meine Vorbilder Herr Thomas denkt das macht mich begabt.
132 effort comic_heroes when I put in the effort, I can make the world a better place Comic heroes are my role models, wenn ich mich nur anstrenge, kann ich die Welt verbessern! Comic Helden sind meine Vorbilder,
133 agent_q effort and I want to be like agent q! when I put in the effort, I can make the world a better place! Ich will so sein, wie Agend Clue! wenn ich mich nur anstrenge, kann ich die Welt verbessern!
134 boy_stuff agent_q I like boy stuff and I want to be like Agent Q! Ich mag Jugns Kram Ich will so sein, wie Agent Q!
135 pretending boy_stuff yet they think I'm just pretending I like boy stuff, aber die denken ich tu einfach nur so. Ich mag Jungs Kram,
136 pretending yet they think I'm just pretending. aber die denken ich tu einfach nur so.
137 girls and girls don't get that. und Mädchen verstehen das einfach nicht!
138 teasing When Jojo got teased for trying, I pretty much exploded When Jojo got bullied for trying, I pretty much exploded Ich bin ausgerastet, weil Jojo für ihre Mühe gemobbt wurde Ich bin ausgerastet, weil Jojo für ihre Mühe gemobbt wurde,
139 stubborn I wouldn't have it any other way, even if it was for my own good I wouldn't have it any other way, even if it was for my own good. das würde ich nicht aufgeben, selbst wenn es mir helfen würde.
140 good_intended I will always stand up for the good intended I will always stand up for the good intended! ich werde immer für Menschen einstehen, die das Richtige wollen!
141 jui_jutsu I stopped doing Jui Jitsu. I stopped doing jiu-jitsu, Ich habe mit Jui Jutsu aufgehört Ich habe mit Jiu Jitsu aufgehört,
142 body My body just didn't feel right my body just didn't feel right. mein Körper hat sich falsch anfefühlt mein Körper hat sich falsch anfefühlt.
143 girly I just hate being treated like a girl I just hate being treated like a girl. Ich hasse es wie ein Mädchen behandelt zu werden ich hasse es wie ein Mädchen behandelt zu werden.
144 hit I know how to properly hit people I know how to properly hit people, Ich weiß, wie man ordentlich zuschlägt Ich weiß, wie man ordentlich zuschlägt,
145 confidence that gives me a lot of confidence. das gibt mir viel Selbstvertrauen.
146 vent and that’s a great vent. and that's a great vent. ich kann da gut Frust ablassen.
160 [p]Oh, my old mask. I have so many good memories about theatre club. [p]Oh, my old mask. I have so many good memories about theatre club. [p]Nahw, meine gute alte Maske. Ich habe so schöne Erinnerungen an die Theater-AG.
161 I would stand on my bed for entire afternoons, weeks on end, practicing my lines. Pretending to be on the big stage ... I would stand on my bed for entire afternoons, weeks on end, practicing my lines. Pretending to be on the big stage ... Ich hab den ganzen Nachmittag geübt, wochenlang. Mein Bett eine große Bühne.
162 my mom would get mad at me, when she had to call me three or four times for dinner. my mom would get mad at me, when she had to call me three or four times for dinner. [/p] Es gab so oft Zoff, weil mich meine Mutter immer wieder zum Essen rufen musste.[/p]
163 I just … didn't like the interruptions. We both were often mad at each other. [p]I just … didn't like the interruptions. We both were often mad at each other.[/p] [p]Ich konnte die Unterbrechungen einfach nicht ab. Wir haben uns so oft deswegen gestritten.[/p]
164 Dinner was difficult. [p]Dinner was difficult. [p]Abendbrot war die Hölle.
165 I just couldn't bring myself to eat, because I couldn't deal with the bread and my mom. I just couldn't bring myself to eat, because I couldn't deal with the bread and my mom.[/p] Ich weiß nicht, was mich mehr gestört hat: das Brot oder Mom.[/p]
166 She was always so worried. [p]She was always so worried: [p]Sie war immer besorgt.
167 ‘Lisa, you forgot your homework, Lisa why won't you play with the other girls," ‘Lisa, you forgot your homework, Lisa why won't you play with the other girls, “Lisa, deine Hausaufgaben!, Lisa, warum warst du heute nicht bei den Mädels draußen?,
168 "Lisa why didn't Steffi invite you to her birthday, Lisa this, Lisa that.’ Lisa why didn't Steffi invite you to her birthday, Lisa this, Lisa that.’[/p] Lisa, warum hat dich Steffi nicht eingeladen?, Lisa dies, Lisa das.”[/p]
169 But I was fine! She just wouldn't listen. [p]But I was fine! She just wouldn't listen.[/p] [p]Mir ging gut, okay? Als ob sie das je interessiert hätte.[/p]
170 Yes, I didn't do homework, but my teachers didn't mind it as much with me [p]Yes, I didn't do homework, but my teachers didn't mind it as much with me [p]Natürlich habe ich keine Hausaufgaben gemacht, aber das hat in der Schule bei mir auch niemand' interessiert,
171 - which the other kids wouldn't shut up about. But like … , which the other kids wouldn't shut up about. But like … außer meine Klasse vielleicht, aber wer interessiert sich schon für die?
172 they also made fun of me reading school books and talking to my teachers during breaks. they also made fun of me reading school books and talking to my teachers during breaks. Vielleicht hätten die auch mal ein Buch in die Hand nehmen sollen statt sich darüber zu zerreißen, dass ich in der Pause lieber mit den Erwachsenen geredet habe.
173 But at least I could fucking talk to teachers and they had stuff to say. But at least I could fucking talk to teachers and they had stuff to say.[/p] Immerhin konnte man mit denen reden und die haben auch was erzählt.[/p]
174 Mr Thomas probably even understood me better than my own mom. [p]Mr Thomas probably even understood me better than my own mom.[/p] [p]Herr Thomas hat mich vermutlich besser verstanden, als meine eigene Mutter.[/p]
175 He said I was gifted. He said I just didn't need homework for good grades. [p]He said I was gifted. He said I just didn't need homework for good grades.[/p] [p]Er hat immer gesagt ich bin begabt, weil ich gute Noten auch ohne Hausaufgaben geschafft habe.[/p]
176 And he also made sure to always include extra credits. So my silly slip-ups wouldn't get me a B. [p]And he also made sure to always include extra credits. So my silly slip-ups wouldn't get me a B.[/p] [p]Und er hat immer Fleißaufgaben gehabt, damit ich auch mit Schusselfehlern eine Eins bekomme.[/p]
177 Moonlight trickled down through clouds and twigs as Dräven tapped through the night. [p]Moonlight trickled down through clouds and twigs as Dräven tapped through the night. [p]Das Mondlicht spielte mit Wolken und Geäst, da lief Dräven durch die Nacht.
178 He had been searching for a while and he knew a special someone must be hiding in the thicket. He had been searching for a while and he knew a special someone must be hiding in the thicket.[/p] Lang schon suchte er vergeblich, doch war er sich heute gewiss: jemand ganz besonderes hält sich zwischen Farnen und Gestrüpp versteckt.[/p]
179 When a familiar smell first led him to a few bronce hairs as fluffy as his tail, he didn't think much of it. [p]When a familiar smell first led him to a few bronce hairs as fluffy as his tail, he didn't think much of it. [p]Er dachte sich nichts dabei, als ihn neulich ein vertrauter Geruch zu einem Büschel Haare führte: Bronzen und so weich, wie sein eig'ner Schweif.
180 But then he saw paw-prints, that matched his own where he had not been. Would he finally find someone of his kind? But then he saw paw-prints, that matched his own where he had not been. Would he finally find someone of his kind?[/p] Doch dann Spuren, die den seinen glichen, wo er noch nicht gewesen war. Würde er endlich seinesgleichen finden?[/p]
181 He was sure of it, as the familiar scent has never been stronger than tonight. [p]He was sure of it, as the familiar scent has never been stronger than tonight.[/p] [p]Bestimmt, denn der vertraute Duft war heute Nacht so stark, wie nie..[/p]
182 When suddenly: Was that chatter? [p]When suddenly: Was that chatter?[/p] [p]Plötzlich: war das Keckern?[/p]
183 His wings rustled with joy over the familiar voice and Dräven decided to get a better look. [p]His wings rustled with joy over the familiar voice and Dräven decided to get a better look. [p]Seine Flügel raschelten vor Freude über die vertraute Stimme und Drävens Neugier war geweckt.
184 A few flaps and leaps brought him up a tree, to get a glimpse of his soon to be friend. A few flaps and leaps brought him up a tree, to get a glimpse of his soon to be friend.[/p] Flatternd sprang er in Wipfel, um einen Blick auf seinen baldigen Freund zu erhaschen.[/p]
185 But all he saw was a fox. [p]But all he saw was a fox.[/p] [p]Doch er sah nichts als einen Fuchs.[/p]
186 He didn't even want to bother it anymore. [p]He didn't even want to bother it anymore. [p]Er wollte sich dem Tier nicht einmal mehr nähern.
187 It would just scream and laugh at his wings of leafs, just like the trees crackled at his paws, that were no roots. It would just scream and laugh at his wings of leafs, just like the trees crackled at his paws, that were no roots. Es würde eh nur Kreischen vor Lachen über seine Flügel aus Blättern. Genau wie die Bäume sich geschüttelt haben über seine Pfoten, die keine Wurzeln sind.
188 With a small whimper, Dräven spread his wings, and slid away to at least find comfort by seeing his reflection in the nearby lake. With a small whimper, Dräven spread his wings, and slid away to at least find comfort by seeing his reflection in the nearby lake.[/p] Wimmernd schlug Dräven seine Flügel auf und glitt davon zu seinem Lieblingsplatz am See. Vielleicht vermochte ihn sein Spiegelbild zu trösten.[/p]
189 It took him a while to notice, how there was a sudden silence when the clouds broke: [p]It took him a while to notice, how there was a sudden silence when the clouds broke: [p]Dräven hätte fast nicht gemerkt, wie der Wald den Atem anhielt, als sich die Wolken teilten.
190 Northern lights danced through the sky to form wings, that met at a sleek body made of stars and clouds. Northern lights danced through the sky to form wings, that met at a sleek body made of stars and clouds.[/p] Nordlicht tanzte durch den Himmel und wurde zu Flügeln an einem schlanken Körper aus Sternenlicht und Wolken.[/p]
191 The whole forest held its breath as it stared into eyes of moonlight gazing down. [p]The whole forest held its breath as it stared into eyes of moonlight gazing down. [p]Der ganze Wald sah ehrfürchtig zu Augen aus Mondlicht hinauf, die verträumt den Blick erwiderten.
192 Dräven was moved to tears when he gazed back at it. He was sad for the dragon that was of the moon and the stars and the skies. [p]Dräven was moved to tears when he gazed back at it. He was sad for the dragon that was of the moon and the stars and the skies. [p]Dräven war zu Tränen gerührt, als er in hinauf sah. Voller Trauer um dem Drachen, der von Wolken, Sternen und Mondlicht war.
193 It must feel so lost in the universe. It must feel so lost in the universe.[/p] Er muss sich so verloren fühlen am Himmel.[/p]
291
292
293
294
295
296
297
298
299
300
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331

View File

@ -226,6 +226,7 @@ func handle_mouse_button(input: InputEventMouseButton, to_handle = currently_act
return return
else: else:
area.attach_sticky_note(to_handle) area.attach_sticky_note(to_handle)
to_handle.z_index = 0
if sticky_note_container.get_child_count() > 0: if sticky_note_container.get_child_count() > 0:
sticky_note_container.get_child(current_sticky_note_id).clear_if_empty() sticky_note_container.get_child(current_sticky_note_id).clear_if_empty()
current_context = NAVIGATE current_context = NAVIGATE
@ -367,33 +368,39 @@ func _input(event):
current_context = NAVIGATE current_context = NAVIGATE
elif event.is_action_pressed("ui_accept"): # select the selected note it elif event.is_action_pressed("ui_accept"): # select the selected note it
var card:Card
if dropzone.get_child(current_dropzone_id) is Card: if dropzone.get_child(current_dropzone_id) is Card:
card = dropzone.get_child(current_dropzone_id) var card:Card = dropzone.get_child(current_dropzone_id)
if current_context == ASSIGN: # to assign it to a card if current_context == ASSIGN: # to assign it to a card
if card.has_sticky_note_attached(): if card.has_sticky_note_attached():
currently_active_node = card.exchange_sticky_note_with(currently_active_node) currently_active_node = card.exchange_sticky_note_with(currently_active_node)
current_dropzone_id = find_first_free_card() current_dropzone_id = find_first_free_card()
else:
card.attach_sticky_note(sticky_note_container.get_child(current_sticky_note_id).attached_sticky_note)
current_context = NAVIGATE
current_sticky_note_id += 1
current_dropzone_id = find_first_free_card()
if is_board_complete(): emit_signal("board_completed")
else: else:
card.attach_sticky_note(sticky_note_container.get_child(current_sticky_note_id).attached_sticky_note) if !focus_stickies and card.has_sticky_note_attached():
current_context = NAVIGATE currently_active_node = card.remove_sticky_note()
current_sticky_note_id += 1 add_sticky_note(currently_active_node)
current_dropzone_id = find_first_free_card() current_dropzone_id = -1
if is_board_complete(): emit_signal("board_completed") else: current_dropzone_id = find_first_free_card()
else:
if !focus_stickies and card.has_sticky_note_attached(): current_context = ASSIGN
currently_active_node = card.remove_sticky_note() focus_stickies = !focus_stickies
add_sticky_note(currently_active_node) if focus_stickies:
current_dropzone_id = -1 current_sticky_note_id = current_sticky_note_id
else: current_dropzone_id = find_first_free_card() else:
current_dropzone_id = current_dropzone_id
current_context = ASSIGN elif dropzone.get_child(current_dropzone_id) is StickyNote:
focus_stickies = !focus_stickies if currently_active_node is StickyNote:
if focus_stickies: currently_active_node = dropzone.get_child(current_dropzone_id)
current_sticky_note_id = current_sticky_note_id focus_stickies = false
else: current_context = ASSIGN
current_dropzone_id = current_dropzone_id current_dropzone_id += 1
currently_active_node.is_dragable = false
currently_active_node.z_index = 1
# move the note it so it floats next to the card where it should be attached # move the note it so it floats next to the card where it should be attached
func _select_card_for_assigning(sticky_note: Area2D, card: Area2D): func _select_card_for_assigning(sticky_note: Area2D, card: Area2D):

View File

@ -0,0 +1,71 @@
[gd_scene load_steps=8 format=3 uid="uid://dhohgea31bn40"]
[ext_resource type="Texture2D" uid="uid://sv0nhkkur1tt" path="res://logic-scenes/board/card-textures/cardsheet.png" id="2_jx3wu"]
[sub_resource type="AtlasTexture" id="AtlasTexture_aqrbw"]
atlas = ExtResource("2_jx3wu")
region = Rect2(0, 880, 600, 440)
[sub_resource type="AtlasTexture" id="AtlasTexture_e20ok"]
atlas = ExtResource("2_jx3wu")
region = Rect2(0, 440, 600, 440)
[sub_resource type="AtlasTexture" id="AtlasTexture_onstk"]
atlas = ExtResource("2_jx3wu")
region = Rect2(600, 440, 600, 440)
[sub_resource type="AtlasTexture" id="AtlasTexture_mtvrf"]
atlas = ExtResource("2_jx3wu")
region = Rect2(600, 0, 600, 440)
[sub_resource type="AtlasTexture" id="AtlasTexture_inyug"]
atlas = ExtResource("2_jx3wu")
region = Rect2(0, 0, 600, 440)
[sub_resource type="SpriteFrames" id="SpriteFrames_cu2at"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_aqrbw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_e20ok")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_onstk")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_mtvrf")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_inyug")
}],
"loop": true,
"name": &"default",
"speed": 5.0
}]
[node name="Visual" type="Node2D"]
[node name="BackgroundSprite" type="AnimatedSprite2D" parent="."]
unique_name_in_owner = true
clip_children = 2
scale = Vector2(0.6, 0.6)
sprite_frames = SubResource("SpriteFrames_cu2at")
frame = 1
[node name="Label" type="Label" parent="."]
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -136.0
offset_top = -95.0
offset_right = 165.0
offset_bottom = 131.0
grow_horizontal = 2
grow_vertical = 2
theme_type_variation = &"card_text"
text = "Lukas did not ask for consent, he didn't explain a thing, I didn't even move! Yet he dared to assume, that "
autowrap_mode = 3

View File

@ -49,8 +49,6 @@ var curr_selection_id: int = -1:
options[curr_selection_id].highlighted = true options[curr_selection_id].highlighted = true
else: else:
curr_selection_id = new_id curr_selection_id = new_id
print(curr_selection_id)
var output:Array = [] var output:Array = []
var options:Array = [] var options:Array = []
@ -62,6 +60,10 @@ func _ready():
for id in range(Scenes.id.YOUTH_DRAEVEN, Scenes.id.YOUTH_JUI_JUTSU + 1): for id in range(Scenes.id.YOUTH_DRAEVEN, Scenes.id.YOUTH_JUI_JUTSU + 1):
Scenes.sign_up_for_sequence(pick_cards, id, 1) Scenes.sign_up_for_sequence(pick_cards, id, 1)
if get_tree().root == self.get_parent():
pick_cards(3, false)
State.take_stage(self)
reset() reset()
func reset(): func reset():
@ -106,7 +108,11 @@ func fill_post_slots():
options.append(sticky_notes[i]) options.append(sticky_notes[i])
$sticky_notes.get_child(i).add_child(options[i], false) $sticky_notes.get_child(i).add_child(options[i], false)
options[i].owner = self options[i].owner = self
var picked_player: AnimationPlayer
var random_player: AnimationPlayer
func _input(event): func _input(event):
#if event.is_action_pressed("ui_end"): #if event.is_action_pressed("ui_end"):
# fill_card_slots(3) # fill_card_slots(3)
@ -121,18 +127,26 @@ func _input(event):
if event.is_action_pressed("ui_accept"): if event.is_action_pressed("ui_accept"):
pick(curr_selection_id) pick(curr_selection_id)
elif event.is_action_pressed("skip"): elif event.is_action_pressed("skip"):
##fixme: using skip causes a lot of invalid state $Meaning.stop()
if selection_state == CARDS_SELECTED: if selection_state == CARDS_SELECTED:
picked_player.play("skip_pick", .1)
random_player.play("skip_shuffle", .1)
for player in anim_players:
player.advance(10.0)
transition() transition()
show_posts() show_posts()
elif selection_state == POSTS_SELECTED: elif selection_state == POSTS_SELECTED:
for player:AnimationPlayer in anim_players + [picked_player, random_player]:
player.play("ini")
# I do not know, why process_frame won't work here, but this is workaround seems to prevent the notes from flashing the next selection.
await(get_tree().create_timer(0.1).timeout)
transition() transition()
elif selection_state == TRANSITION: elif selection_state == TRANSITION:
show_posts() show_posts()
func pick(id: int): func pick(id: int):
print("PICK") print("%s picked card %s at id %d" % [name, options[id].text, id])
if id == -1: if id == -1:
curr_selection_id = 0 curr_selection_id = 0
return return
@ -143,34 +157,37 @@ func pick(id: int):
selection_state = POSTS_SELECTED selection_state = POSTS_SELECTED
anim_players[id].play("pick") anim_players[id].play("pick")
picked_player = anim_players[id]
var yield_to = anim_players[id].animation_finished var yield_to = anim_players[id].animation_finished
output.append(options[id]) output.append(options[id])
options.remove_at(id) options.remove_at(id)
anim_players.remove_at(id) anim_players.remove_at(id)
var sibling_id = -1 var parent_id:StringName
if selection_state == POSTS_SELECTED: if selection_state == POSTS_SELECTED:
sibling_id = options.find(output.back().sibling) parent_id = output[-1].parent_id
options.remove_at(sibling_id) var i:int = 0
anim_players[sibling_id].play("unshuffle") for option:StickyNote in options:
anim_players.remove_at(sibling_id) if option.parent_id == parent_id:
print("yeet sibling ", sibling_id) options.erase(options)
anim_players[i].play("unshuffle")
anim_players.remove_at(i)
print("Removed StickyNote %s from options pool" % option.sticky_id)
i += 1
var winning_id var winning_id
print(options[1].text) print("Randomly selected card %s" % options[1].text)
if !(options[1].text == "void" and not id == 1): if not current_scene_id == Scenes.id.YOUTH_JUI_JUTSU:
randomize() randomize()
winning_id = randi() % options.size() winning_id = randi() % options.size()
print("Winning ID ", id)
else: else:
winning_id = 2 if id == 0 else 0 winning_id = 1 if id == 0 else 0
Steam.setAchievement("FIGHT_BACK") Steam.setAchievement("FIGHT_BACK")
Steam.storeStats() Steam.storeStats()
output.append(options.pop_at(winning_id)) output.append(options.pop_at(winning_id))
random_player = anim_players[winning_id]
anim_players.pop_at(winning_id).play("shuffle") anim_players.pop_at(winning_id).play("shuffle")
for anim in anim_players: for anim in anim_players:
@ -200,7 +217,6 @@ func transition():
for card in output: for card in output:
out_str.append(card.text if card.text != "" else "void") out_str.append(card.text if card.text != "" else "void")
cards_picked.emit(out_str) cards_picked.emit(out_str)
get_parent().get_parent().get_parent().dnd = false
selection_state = DONE selection_state = DONE
Scenes.end_current_sequence() Scenes.end_current_sequence()
@ -219,17 +235,20 @@ func handle_mouse_button(button_event: InputEventMouseButton, new_selection: Nod
if button_event.button_index == MOUSE_BUTTON_LEFT and button_event.pressed: if button_event.button_index == MOUSE_BUTTON_LEFT and button_event.pressed:
pick(options.find(new_selection)) pick(options.find(new_selection))
var current_scene_id
func pick_cards(id: int, repeat: bool): func pick_cards(id: int, repeat: bool):
print(name, id, repeat) current_scene_id = id
print("Reached actor %s in sequence %s. Is%s repeating." % [name, Scenes.id.keys()[id], " not" if repeat else ""])
if not repeat: if not repeat:
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
fill_card_slots(id) fill_card_slots(id)
#State.transition_stage_to(self, true) #State.transition_stage_to(self, true)
selection_state = CARDS selection_state = CARDS
if id == Scenes.id.YOUTH_DRAEVEN and not repeat:
$Meaning.play()
else: else:
Scenes.end_current_sequence() Scenes.end_current_sequence()
#FIXME this workaround should be included in the Scene Manager.
get_parent().get_parent().get_parent().dnd = false
func play_scene(_id, _repeat): func play_scene(_id, _repeat):
pass pass

View File

@ -1,8 +1,10 @@
[gd_scene load_steps=64 format=3 uid="uid://brk4hjdf2x81a"] [gd_scene load_steps=72 format=3 uid="uid://brk4hjdf2x81a"]
[ext_resource type="Script" uid="uid://bdb6n10apk1en" path="res://logic-scenes/card_picker/card_picker.gd" id="1_pjntm"] [ext_resource type="Script" uid="uid://bdb6n10apk1en" path="res://logic-scenes/card_picker/card_picker.gd" id="1_pjntm"]
[ext_resource type="Script" uid="uid://2loic2eeec5b" path="res://logic-scenes/board/card.gd" id="2_f4sp4"] [ext_resource type="Script" uid="uid://2loic2eeec5b" path="res://logic-scenes/board/card.gd" id="2_f4sp4"]
[ext_resource type="Script" uid="uid://r12efqgk6t4n" path="res://logic-scenes/board/sticky-note.gd" id="3_f4sp4"] [ext_resource type="Script" uid="uid://r12efqgk6t4n" path="res://logic-scenes/board/sticky-note.gd" id="3_f4sp4"]
[ext_resource type="AudioStream" uid="uid://bakwypwhs7a5n" path="res://base-environments/youth_room/audio/why-does-it-mean.wav" id="4_ujc5a"]
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="5_et74x"]
[sub_resource type="Animation" id="Animation_dinvx"] [sub_resource type="Animation" id="Animation_dinvx"]
length = 0.001 length = 0.001
@ -219,6 +221,86 @@ tracks/2/keys = {
"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1.2, 1.2)] "values": [Vector2(1, 1), Vector2(1, 1), Vector2(1.2, 1.2)]
} }
[sub_resource type="Animation" id="Animation_t7byf"]
resource_name = "skip_pick"
length = 2.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0.6, 1.26667, 1.96667),
"transitions": PackedFloat32Array(1.7411, 1.7411, 0.450625),
"update": 0,
"values": [Vector2(-110, 350), Vector2(-110, 400), Vector2(-110, 900)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.6, 1.83333),
"transitions": PackedFloat32Array(2.14355, 1.03526),
"update": 0,
"values": [0.0523599, 0.0]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath(".:scale")
tracks/2/interp = 2
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0.9),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(1.2, 1.2)]
}
[sub_resource type="Animation" id="Animation_et74x"]
resource_name = "skip_shuffle"
length = 1.7
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0.566667, 1, 1.7),
"transitions": PackedFloat32Array(1.7411, 2.37841, 0.450625),
"update": 0,
"values": [Vector2(200, 390), Vector2(200, 400), Vector2(200, 900)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.566667, 1.43333),
"transitions": PackedFloat32Array(2.14355, 1.03526),
"update": 0,
"values": [0.111701, 0.0]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath(".:scale")
tracks/2/interp = 2
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0.866667),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(1.2, 1.2)]
}
[sub_resource type="Animation" id="Animation_d68d2"] [sub_resource type="Animation" id="Animation_d68d2"]
resource_name = "unshuffle" resource_name = "unshuffle"
length = 3.0 length = 3.0
@ -255,6 +337,8 @@ _data = {
&"reveal": SubResource("Animation_3304u"), &"reveal": SubResource("Animation_3304u"),
&"select": SubResource("Animation_ldr2c"), &"select": SubResource("Animation_ldr2c"),
&"shuffle": SubResource("Animation_abihp"), &"shuffle": SubResource("Animation_abihp"),
&"skip_pick": SubResource("Animation_t7byf"),
&"skip_shuffle": SubResource("Animation_et74x"),
&"unshuffle": SubResource("Animation_d68d2") &"unshuffle": SubResource("Animation_d68d2")
} }
@ -449,6 +533,86 @@ tracks/2/keys = {
"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1.2, 1.2)] "values": [Vector2(1, 1), Vector2(1, 1), Vector2(1.2, 1.2)]
} }
[sub_resource type="Animation" id="Animation_f4sp4"]
resource_name = "skip_pick"
length = 2.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0.6, 1.26667, 1.96667),
"transitions": PackedFloat32Array(1.7411, 1.7411, 0.450625),
"update": 0,
"values": [Vector2(-110, 350), Vector2(-110, 400), Vector2(-110, 900)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.6, 1.83333),
"transitions": PackedFloat32Array(2.14355, 1.03526),
"update": 0,
"values": [0.0523599, 0.0]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath(".:scale")
tracks/2/interp = 2
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0.9),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(1.2, 1.2)]
}
[sub_resource type="Animation" id="Animation_211mu"]
resource_name = "skip_shuffle"
length = 1.7
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0.533333, 0.966667, 1.66667),
"transitions": PackedFloat32Array(1.7411, 2.37841, 0.450625),
"update": 0,
"values": [Vector2(200, 390), Vector2(200, 400), Vector2(200, 900)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.533333, 1.4),
"transitions": PackedFloat32Array(2.14355, 1.03526),
"update": 0,
"values": [0.111701, 0.0]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath(".:scale")
tracks/2/interp = 2
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0.833333),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(1.2, 1.2)]
}
[sub_resource type="Animation" id="Animation_sa974"] [sub_resource type="Animation" id="Animation_sa974"]
resource_name = "unshuffle" resource_name = "unshuffle"
length = 3.0 length = 3.0
@ -485,6 +649,8 @@ _data = {
&"reveal": SubResource("Animation_orrwn"), &"reveal": SubResource("Animation_orrwn"),
&"select": SubResource("Animation_2c94q"), &"select": SubResource("Animation_2c94q"),
&"shuffle": SubResource("Animation_pdic8"), &"shuffle": SubResource("Animation_pdic8"),
&"skip_pick": SubResource("Animation_f4sp4"),
&"skip_shuffle": SubResource("Animation_211mu"),
&"unshuffle": SubResource("Animation_sa974") &"unshuffle": SubResource("Animation_sa974")
} }
@ -703,6 +869,86 @@ tracks/2/keys = {
"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1.2, 1.2)] "values": [Vector2(1, 1), Vector2(1, 1), Vector2(1.2, 1.2)]
} }
[sub_resource type="Animation" id="Animation_8qj35"]
resource_name = "skip_pick"
length = 2.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0.6, 1.26667, 1.96667),
"transitions": PackedFloat32Array(1.7411, 1.7411, 0.450625),
"update": 0,
"values": [Vector2(-110, 350), Vector2(-110, 400), Vector2(-110, 900)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.6, 1.83333),
"transitions": PackedFloat32Array(2.14355, 1.03526),
"update": 0,
"values": [0.0523599, 0.0]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath(".:scale")
tracks/2/interp = 2
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0.9),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(1.2, 1.2)]
}
[sub_resource type="Animation" id="Animation_ujc5a"]
resource_name = "skip_shuffle"
length = 1.7
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0.566667, 1, 1.7),
"transitions": PackedFloat32Array(1.7411, 2.37841, 0.450625),
"update": 0,
"values": [Vector2(200, 390), Vector2(200, 400), Vector2(200, 900)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.566667, 1.43333),
"transitions": PackedFloat32Array(2.14355, 1.03526),
"update": 0,
"values": [0.111701, 0.0]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath(".:scale")
tracks/2/interp = 2
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0.866667),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(1.2, 1.2)]
}
[sub_resource type="Animation" id="Animation_mj8e0"] [sub_resource type="Animation" id="Animation_mj8e0"]
resource_name = "unshuffle" resource_name = "unshuffle"
length = 3.0 length = 3.0
@ -739,6 +985,8 @@ _data = {
&"reveal": SubResource("Animation_ep22n"), &"reveal": SubResource("Animation_ep22n"),
&"select": SubResource("Animation_pcu23"), &"select": SubResource("Animation_pcu23"),
&"shuffle": SubResource("Animation_vu874"), &"shuffle": SubResource("Animation_vu874"),
&"skip_pick": SubResource("Animation_8qj35"),
&"skip_shuffle": SubResource("Animation_ujc5a"),
&"unshuffle": SubResource("Animation_mj8e0") &"unshuffle": SubResource("Animation_mj8e0")
} }
@ -1642,9 +1890,24 @@ metadata/_custom_type_script = "uid://r12efqgk6t4n"
layout_mode = 2 layout_mode = 2
[node name="Label" type="Label" parent="thought_prompt"] [node name="Label" type="Label" parent="thought_prompt"]
layout_mode = 2 layout_mode = 1
offset_left = -225.0 anchors_preset = 8
offset_top = -196.0 anchor_left = 0.5
offset_right = 225.0 anchor_top = 0.5
offset_bottom = -158.0 anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -282.5
offset_top = -288.0
offset_right = 282.5
offset_bottom = -239.0
grow_horizontal = 2
grow_vertical = 2
theme_type_variation = &"HeaderMedium"
text = "Why does that story mean so much to me?" text = "Why does that story mean so much to me?"
horizontal_alignment = 1
[node name="Meaning" type="AudioStreamPlayer" parent="."]
stream = ExtResource("4_ujc5a")
mix_target = 2
bus = &"text"
script = ExtResource("5_et74x")

View File

@ -67,10 +67,13 @@ class_name CollectableUi extends CenterContainer
is_collected = value is_collected = value
if is_inside_tree(): if is_inside_tree():
collected_box.button_pressed = value collected_box.button_pressed = value
if is_collected: if is_collected and not is_board:
%CollectLabel.text = "listen again" %CollectLabel.text = "listen again"
else: else:
%CollectLabel.text = "collect" if not is_board:
%CollectLabel.text = "collect"
else:
%CollectLabel.text = "find connections"
@onready var collected_box: CheckBox = %CheckBox @onready var collected_box: CheckBox = %CheckBox
@export var title_override: String = "": @export var title_override: String = "":
set(value): set(value):
@ -105,7 +108,7 @@ class_name CollectableUi extends CenterContainer
is_board = board is_board = board
if is_inside_tree(): if is_inside_tree():
if board: if board:
if title_override == "": title_label.text = "Order Thoughts" if title_override == "": title_label.text = "Mind Board"
collected_box.hide() collected_box.hide()
# Not room agnostic yet! # Not room agnostic yet!
if not Engine.is_editor_hint(): if not Engine.is_editor_hint():

View File

@ -55,6 +55,7 @@ text = "simplified Controls"
[node name="HyperacusticsFilter" type="CheckBox" parent="Container2"] [node name="HyperacusticsFilter" type="CheckBox" parent="Container2"]
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
tooltip_text = "Applies an audio filter that removes high pitched noises."
text = "Hyperacoustics Filter" text = "Hyperacoustics Filter"
[node name="margin" type="MarginContainer" parent="Container2"] [node name="margin" type="MarginContainer" parent="Container2"]

View File

@ -22,6 +22,7 @@ var current_music_decay:float = 0
@onready var sum_slider: Range = %SumSlider @onready var sum_slider: Range = %SumSlider
@onready var text_lang_selector: OptionButton = %InterfaceSelector @onready var text_lang_selector: OptionButton = %InterfaceSelector
@onready var speech_lang_selector: OptionButton = %SpeechSelector @onready var speech_lang_selector: OptionButton = %SpeechSelector
@onready var force_stereo_switch: CheckBox = %ForceStereoCheck
func _process(delta: float) -> void: func _process(delta: float) -> void:
if current_music_decay > 0: if current_music_decay > 0:
@ -57,6 +58,8 @@ func _ready() -> void:
%ResetButton.pressed.connect(_on_reset_button_pressed) %ResetButton.pressed.connect(_on_reset_button_pressed)
%SaveButton.pressed.connect(_on_exit_button_pressed) %SaveButton.pressed.connect(_on_exit_button_pressed)
force_stereo_switch.pressed.connect(func(value): State.force_stereo = value)
func _on_reset_button_pressed(): func _on_reset_button_pressed():
@ -76,6 +79,7 @@ func update_ui_from_state():
sum_slider.value = State.main_volume sum_slider.value = State.main_volume
text_lang_selector.select(State.text_language) text_lang_selector.select(State.text_language)
speech_lang_selector.select(State.speech_language) speech_lang_selector.select(State.speech_language)
force_stereo_switch.button_pressed = State.force_stereo
func _on_exit_button_pressed() -> void: func _on_exit_button_pressed() -> void:
leave_stage.emit() leave_stage.emit()

View File

@ -161,6 +161,12 @@ max_value = 1.0
step = 0.05 step = 0.05
value = 0.5 value = 0.5
[node name="ForceStereoCheck" type="CheckBox" parent="."]
unique_name_in_owner = true
layout_mode = 2
tooltip_text = "This setting disables the surround center channel. May resolve you not hearing speech when your Operating Sustem has a misconfigured surround setup."
text = "Headphone-Mode (may fix missing speech)"
[node name="I18nLabel" type="Label" parent="."] [node name="I18nLabel" type="Label" parent="."]
layout_mode = 2 layout_mode = 2
theme_type_variation = &"HeaderMedium" theme_type_variation = &"HeaderMedium"
@ -179,7 +185,7 @@ unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
selected = 0 selected = 0
item_count = 3 item_count = 3
popup/item_0/text = "use system language" popup/item_0/text = "use OS Language"
popup/item_0/id = 0 popup/item_0/id = 0
popup/item_1/text = "English" popup/item_1/text = "English"
popup/item_1/id = 1 popup/item_1/id = 1
@ -195,7 +201,7 @@ unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
selected = 0 selected = 0
item_count = 3 item_count = 3
popup/item_0/text = "use system language" popup/item_0/text = "use OS Language"
popup/item_0/id = 0 popup/item_0/id = 0
popup/item_1/text = "English" popup/item_1/text = "English"
popup/item_1/id = 1 popup/item_1/id = 1

View File

@ -115,7 +115,7 @@ vertical_scroll_mode = 2
[node name="Reveal" type="AnimationPlayer" parent="ScrollContainer"] [node name="Reveal" type="AnimationPlayer" parent="ScrollContainer"]
unique_name_in_owner = true unique_name_in_owner = true
libraries = { libraries = {
"": SubResource("AnimationLibrary_x5rp4") &"": SubResource("AnimationLibrary_x5rp4")
} }
[node name="Content Notes" type="VBoxContainer" parent="ScrollContainer"] [node name="Content Notes" type="VBoxContainer" parent="ScrollContainer"]

View File

@ -19,6 +19,7 @@ theme_type_variation = &"HeaderLarge"
text = "Gameplay Settings" text = "Gameplay Settings"
[node name="Label2" type="Label" parent="."] [node name="Label2" type="Label" parent="."]
visible = false
layout_mode = 2 layout_mode = 2
theme_type_variation = &"HeaderMedium" theme_type_variation = &"HeaderMedium"
text = "Gameplay Settings" text = "Gameplay Settings"
@ -61,6 +62,7 @@ tooltip_text = "Displays content note and currently playing music at s corner of
selected = 0 selected = 0
item_count = 5 item_count = 5
popup/item_0/text = "none" popup/item_0/text = "none"
popup/item_0/id = 0
popup/item_1/text = "Top Left" popup/item_1/text = "Top Left"
popup/item_1/id = 2 popup/item_1/id = 2
popup/item_2/text = "Top Right" popup/item_2/text = "Top Right"

View File

@ -0,0 +1,115 @@
[gd_scene load_steps=3 format=3 uid="uid://u0bwjr5l6nkh"]
[sub_resource type="InputEventAction" id="InputEventAction_gy6yb"]
action = &"ui_cancel"
pressed = true
[sub_resource type="Shortcut" id="Shortcut_0peu0"]
events = [SubResource("InputEventAction_gy6yb")]
[node name="Audio and Language" type="VBoxContainer"]
offset_right = 1086.0
offset_bottom = 860.0
metadata/_tab_index = 1
[node name="Label" type="Label" parent="."]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "Privacy and Data Protection"
[node name="Label2" type="Label" parent="."]
layout_mode = 2
text = "\"Frame of Mind - a game of thoughts.\" is a game discussing mental health. We expect some users may want more privacy while playing the game.
This guide that will help you understand what data is generated and procecced and what to do about it.
We protect your data by storing as little of it as strictly nessecary, by not collecting any data on our own and by helping you opt out of Steam collecting usage data.
If you think an important secirity feature is missing, we ask you to submit a bug report or better even, contribute it yourself."
autowrap_mode = 2
[node name="Label3" type="Label" parent="."]
layout_mode = 2
theme_type_variation = &"HeaderMedium"
text = "Saves"
autowrap_mode = 2
[node name="Label4" type="Label" parent="."]
layout_mode = 2
text = "This game uses plain-text files to store your progress. To make sure Steam has no access to that data, you can disable Cloud Saves in the properties of this game in your library. We encourage you to sync and back up saves on your own."
autowrap_mode = 2
[node name="Label5" type="Label" parent="."]
layout_mode = 2
theme_type_variation = &"HeaderMedium"
text = "Playtime and Accievements"
autowrap_mode = 2
[node name="Label6" type="Label" parent="."]
layout_mode = 2
text = "To track your playtime and award Steam Acceivements, this game sends data to your Steam Clinet while you are playing. You may opt out.
You can also hide this game in your library or mark it as private so your friends won't see you playing it. These privacy options are also provided in the game properties."
autowrap_mode = 2
[node name="Button3" type="Button" parent="."]
layout_mode = 2
text = "reset acheivements"
[node name="MuteSoundtrack2" type="CheckBox" parent="."]
unique_name_in_owner = true
layout_mode = 2
tooltip_text = "All Game Music is safe to stream."
text = "disable sharing play data with Steam"
[node name="Label7" type="Label" parent="."]
layout_mode = 2
theme_type_variation = &"HeaderMedium"
text = "Diagnostic Data"
autowrap_mode = 2
[node name="Label8" type="Label" parent="."]
layout_mode = 2
text = "Log Files store usage patterns and diagnostic data locally in plain text on your device. To protect your privacy, some information in these logs is obscurified. When reporting a bug, you can choose to include a log to help us figure out what went wrong. Opting out of obscurification can make some specific bugs easier to diagnose."
autowrap_mode = 2
[node name="MuteSFX2" type="CheckBox" parent="."]
unique_name_in_owner = true
layout_mode = 2
button_pressed = true
text = "obscurify log files"
[node name="confirm_buttons" type="HSplitContainer" parent="."]
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 10
[node name="ResetButton" type="Button" parent="confirm_buttons"]
unique_name_in_owner = true
layout_mode = 2
text = "reset"
[node name="SaveButton" type="Button" parent="confirm_buttons"]
unique_name_in_owner = true
layout_mode = 2
shortcut = SubResource("Shortcut_0peu0")
text = "save and exit"
[node name="Popup" type="Popup" parent="."]
size = Vector2i(710, 139)
[node name="VSplitContainer" type="VSplitContainer" parent="Popup"]
offset_right = 40.0
offset_bottom = 40.0
[node name="Label" type="Label" parent="Popup/VSplitContainer"]
layout_mode = 2
text = "Do you really want to erase all play data?
This action cannot be undone!"
[node name="HSplitContainer" type="HSplitContainer" parent="Popup/VSplitContainer"]
layout_mode = 2
[node name="Button" type="Button" parent="Popup/VSplitContainer/HSplitContainer"]
layout_mode = 2
text = "Yes, delete everything!"
[node name="Button2" type="Button" parent="Popup/VSplitContainer/HSplitContainer"]
layout_mode = 2
text = "No"

View File

@ -177,7 +177,7 @@ selected = 0
item_count = 3 item_count = 3
popup/item_0/text = "disabled" popup/item_0/text = "disabled"
popup/item_0/id = 0 popup/item_0/id = 0
popup/item_1/text = " FSR 1.0" popup/item_1/text = "FSR 1.0"
popup/item_1/id = 1 popup/item_1/id = 1
popup/item_2/text = "FSR 2.2" popup/item_2/text = "FSR 2.2"
popup/item_2/id = 2 popup/item_2/id = 2

View File

@ -31,6 +31,17 @@ var proceeding: bool = false:
# while this is true, a counter counts up to automatically proceed. # while this is true, a counter counts up to automatically proceed.
var is_auto_proceeding: bool = true: var is_auto_proceeding: bool = true:
set(value): set(value):
if is_auto_proceeding and not value:
var tween = get_tree().create_tween()
tween.set_ease(Tween.EASE_IN)
tween.set_trans(Tween.TRANS_QUAD)
tween.tween_property(progress, "value", 0.0, 0.3)
time_pressed = 0
$AnimationPlayer.play("replace_text")
# use this to disable the updates during progress.
is_auto_proceeding = false
await _transition_text
button.text = "continue (press)"
is_auto_proceeding = value is_auto_proceeding = value
#resets progress bar on button #resets progress bar on button
@ -55,7 +66,7 @@ func _process(delta):
reset() reset()
func _unhandled_input(event: InputEvent) -> void: func _input(event: InputEvent) -> void:
if is_visible_in_tree(): if is_visible_in_tree():
if not event is InputEventMouseMotion and unrevealed: if not event is InputEventMouseMotion and unrevealed:
$AnimationPlayer.play("reveal_skip") $AnimationPlayer.play("reveal_skip")
@ -98,6 +109,7 @@ func transition_text():
func reset(): func reset():
$AnimationPlayer.play("RESET") $AnimationPlayer.play("RESET")
await(get_tree().create_timer(1).timeout)
unrevealed = true unrevealed = true
pressed = false pressed = false
proceeding = false proceeding = false

View File

@ -17,12 +17,12 @@ corner_radius_bottom_left = 5
expand_margin_top = 5.0 expand_margin_top = 5.0
expand_margin_bottom = 5.0 expand_margin_bottom = 5.0
[sub_resource type="InputEventKey" id="InputEventKey_baw6x"] [sub_resource type="InputEventKey" id="InputEventKey_7em4l"]
device = -1 device = -1
physical_keycode = 88 physical_keycode = 88
unicode = 120 unicode = 120
[sub_resource type="InputEventJoypadButton" id="InputEventJoypadButton_eoqfh"] [sub_resource type="InputEventJoypadButton" id="InputEventJoypadButton_hb4jw"]
device = -1 device = -1
button_index = 2 button_index = 2
pressed = true pressed = true
@ -266,11 +266,11 @@ stretch_mode = 5
script = ExtResource("2_ev8gx") script = ExtResource("2_ev8gx")
action = "skip" action = "skip"
icon = 0 icon = 0
events = Array[InputEvent]([null, SubResource("InputEventKey_baw6x"), SubResource("InputEventJoypadButton_eoqfh")]) events = Array[InputEvent]([null, SubResource("InputEventKey_7em4l"), SubResource("InputEventJoypadButton_hb4jw")])
[node name="AnimationPlayer" type="AnimationPlayer" parent="."] [node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = { libraries = {
"": SubResource("AnimationLibrary_f8gbl") &"": SubResource("AnimationLibrary_f8gbl")
} }
[connection signal="toggled" from="SkipButton" to="." method="_on_skip_button_toggled"] [connection signal="toggled" from="SkipButton" to="." method="_on_skip_button_toggled"]

View File

@ -165,7 +165,7 @@ func _handle_mouse_input(event:InputEventMouseMotion):
current_mouse_rotation = event.relative current_mouse_rotation = event.relative
func _input(event:InputEvent): func _input(event:InputEvent):
if get_parent().get_parent().dnd: return if Scenes.current_sequence != -1: return
if has_stage and Scenes.current_sequence == -1: if has_stage and Scenes.current_sequence == -1:
if event is InputEventMouseMotion and Input.mouse_mode == Input.MOUSE_MODE_CAPTURED: if event is InputEventMouseMotion and Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
_handle_mouse_input(event) _handle_mouse_input(event)

View File

@ -222,13 +222,12 @@ layout_mode = 2
[node name="TabContainer" type="TabContainer" parent="CenterContainer/PanelContainer/VBoxContainer"] [node name="TabContainer" type="TabContainer" parent="CenterContainer/PanelContainer/VBoxContainer"]
layout_mode = 2 layout_mode = 2
current_tab = 2 current_tab = 0
tabs_visible = false tabs_visible = false
use_hidden_tabs_for_min_size = true use_hidden_tabs_for_min_size = true
script = SubResource("GDScript_ia432") script = SubResource("GDScript_ia432")
[node name="physical Accessibility" type="VBoxContainer" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer"] [node name="physical Accessibility" type="VBoxContainer" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer"]
visible = false
layout_mode = 2 layout_mode = 2
metadata/_tab_index = 0 metadata/_tab_index = 0
@ -362,6 +361,7 @@ visible = false
layout_mode = 2 layout_mode = 2
[node name="Managing Expectations" type="VBoxContainer" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer"] [node name="Managing Expectations" type="VBoxContainer" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer"]
visible = false
layout_mode = 2 layout_mode = 2
metadata/_tab_index = 2 metadata/_tab_index = 2
@ -434,7 +434,11 @@ grow_vertical = 2
text = "I stream this game, please show content notes." text = "I stream this game, please show content notes."
[node name="card" parent="." instance=ExtResource("5_7c77g")] [node name="card" parent="." instance=ExtResource("5_7c77g")]
process_mode = 4
position = Vector2(1491, 598) position = Vector2(1491, 598)
collision_layer = 0
collision_mask = 0
input_pickable = false
text = "I never put in much effort for Homework" text = "I never put in much effort for Homework"
[connection signal="toggled" from="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2/reduce motion" to="." method="_on_reduce_motion_toggled"] [connection signal="toggled" from="CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2/reduce motion" to="." method="_on_reduce_motion_toggled"]

View File

@ -1473,4 +1473,260 @@ h5 = SubResource("Resource_qsp4k")
h6 = SubResource("Resource_kq58d") h6 = SubResource("Resource_kq58d")
metadata/_custom_type_script = "uid://dr7xhgd53cvmf" metadata/_custom_type_script = "uid://dr7xhgd53cvmf"
[node name="CreditsRoll2" type="RichTextLabel" parent="."]
visible = false
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -645.0
offset_top = -110.0
offset_right = 645.0
offset_bottom = 16.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 4
size_flags_vertical = 4
bbcode_enabled = true
text = "[center]
[font_size=36]Thanks for Playing[/font_size]
... the public demo version.
We are sorry you were not yet able to resolve Lisas thoughts.
But we would like to hear yours.
Is there something that you think needs to be changed?
You can provide feedback by [url=https://discord.gg/WjduEh4htP]joining our Discord[/url].
This game was made by betalars, but it is yours to adapt and change.
\"Frame of Mind - a game of thoughts.\"
uses a Creative Commons, Attribution, Share Alike, Non-Commercial license.
[img]res://import/interface-elements/cc-by-sa-nc.png[/img]
"
fit_content = true
script = ExtResource("10_viehl")
markdown_text = "[center]
# Thanks for Playing
... the public demo version.
We are sorry you were not yet able to resolve Lisas thoughts.
But we would like to hear yours.
Is there something that you think needs to be changed?
You can provide feedback by [joining our Discord](https://discord.gg/WjduEh4htP).
This game was made by betalars, but it is yours to adapt and change.
\"Frame of Mind - a game of thoughts.\"
uses a Creative Commons, Attribution, Share Alike, Non-Commercial license.
![](res://import/interface-elements/cc-by-sa-nc.png)
"
h1 = SubResource("Resource_qi5jr")
h2 = SubResource("Resource_xrkju")
h3 = SubResource("Resource_70jti")
h4 = SubResource("Resource_rxa4w")
h5 = SubResource("Resource_nv3rj")
h6 = SubResource("Resource_11oh2")
[node name="DemoMenue" type="Panel" parent="."]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = SubResource("GDScript_t6jj1")
[node name="HSplitContainer" type="HSplitContainer" parent="DemoMenue"]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -629.0
offset_top = -312.0
offset_right = 677.0
offset_bottom = 126.0
grow_horizontal = 2
grow_vertical = 2
split_offset = 100
[node name="TextureRect" type="TextureRect" parent="DemoMenue/HSplitContainer"]
layout_mode = 2
size_flags_horizontal = 0
texture = ExtResource("19_madrp")
expand_mode = 3
[node name="DisclaimerLabel" type="RichTextLabel" parent="DemoMenue/HSplitContainer"]
unique_name_in_owner = true
layout_mode = 2
bbcode_enabled = true
text = "Demo-intro-text"
script = ExtResource("10_viehl")
markdown_text = "Demo-intro-text"
h1 = SubResource("Resource_308k2")
h2 = SubResource("Resource_g0gc1")
h3 = SubResource("Resource_13vyj")
h4 = SubResource("Resource_n30at")
h5 = SubResource("Resource_sikh0")
h6 = SubResource("Resource_4no5n")
[node name="TextureRect2" type="TextureRect" parent="DemoMenue"]
visible = false
layout_mode = 1
anchors_preset = 3
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -295.0
offset_top = -286.0
offset_right = 117.0
offset_bottom = 126.0
grow_horizontal = 0
grow_vertical = 0
scale = Vector2(0.54, 0.54)
size_flags_horizontal = 0
texture = ExtResource("20_ku514")
expand_mode = 3
[node name="DemoStartButton" type="Button" parent="DemoMenue"]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -223.5
offset_top = -362.0
offset_right = 223.5
offset_bottom = -279.0
grow_horizontal = 2
grow_vertical = 0
theme_override_font_sizes/font_size = 50
disabled = true
text = "Loading ..."
[node name="Label" type="Label" parent="DemoMenue"]
visible = false
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -808.0
offset_top = 23.0
offset_right = 808.0
offset_bottom = 201.0
grow_horizontal = 2
theme_type_variation = &"HeaderMedium"
text = "Hinweis für die USK-Prüfung:
Es ist geplant, dass zum Zeitpunkt der Messe
auch die volle Vertonung auf deutsch lokalisiert wurde.
Str+Shift+R setzt die Demo zurück."
horizontal_alignment = 1
[node name="Lang" type="VSplitContainer" parent="DemoMenue"]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -349.0
offset_top = -168.0
offset_right = 350.0
offset_bottom = -92.0
grow_horizontal = 2
grow_vertical = 0
[node name="LocaleButton" type="Button" parent="DemoMenue/Lang"]
layout_mode = 2
size_flags_horizontal = 4
text = "🇩🇪 Text auf deutsch umstellen"
[node name="Label" type="Label" parent="DemoMenue/Lang"]
layout_mode = 2
text = "Dieses Spiel hat aktuell keine deutsche Sprachausgabe."
horizontal_alignment = 1
[node name="CenterContainer" type="CenterContainer" parent="."]
visible = false
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="TextureRect" type="TextureRect" parent="CenterContainer"]
material = SubResource("ShaderMaterial_knlqd")
layout_mode = 2
texture = SubResource("GradientTexture2D_swtmc")
[node name="PauseMenu" type="PanelContainer" parent="CenterContainer"]
unique_name_in_owner = true
layout_mode = 2
script = ExtResource("9_ihfph")
[node name="VBoxContainer" type="VBoxContainer" parent="CenterContainer/PauseMenu"]
modulate = Color(1, 1, 1, 0)
layout_mode = 2
[node name="Label" type="Label" parent="CenterContainer/PauseMenu/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "Game Paused"
[node name="ResumeButton" type="Button" parent="CenterContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "Resume"
[node name="BugButton" type="Button" parent="CenterContainer/PauseMenu/VBoxContainer"]
layout_mode = 2
script = ExtResource("22_ryguw")
metadata/_custom_type_script = "uid://sa15wakvpj2e"
[node name="ToMenuButton" type="Button" parent="CenterContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
visible = false
layout_mode = 2
text = "Return to Menu"
[node name="ToSettingsButton" type="Button" parent="CenterContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
visible = false
layout_mode = 2
text = "Open Settings"
[node name="ToDesktopButton" type="Button" parent="CenterContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "Quit to Desktop"
[node name="HSeparator" type="HSeparator" parent="CenterContainer/PauseMenu/VBoxContainer"]
custom_minimum_size = Vector2(0, 20)
layout_mode = 2
[node name="FindHelplineButton" type="Button" parent="CenterContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "Find Help-Lines"
[node name="Label2" type="Label" parent="CenterContainer/PauseMenu/VBoxContainer"]
layout_mode = 2
text = "opens findahelpline.com"
horizontal_alignment = 1
[node name="SkipStoryButton" type="Button" parent="CenterContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
visible = false
layout_mode = 2
text = "Skip this Story"
[connection signal="room_loaded" from="." to="DemoMenue" method="_on_main_room_loaded"]
[connection signal="on_read" from="Disclaimer" to="Startup Menu" method="starting"] [connection signal="on_read" from="Disclaimer" to="Startup Menu" method="starting"]
[connection signal="pressed" from="DemoMenue/DemoStartButton" to="." method="start_demo"]
[connection signal="pressed" from="DemoMenue/Lang/LocaleButton" to="DemoMenue" method="_on_locale_button_pressed"]

View File

@ -99,6 +99,15 @@ var current_main_theme:Theme = preload("res://logic-scenes/themes/handwriting.th
set(volume): set(volume):
speech_volume = volume speech_volume = volume
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("text"), linear_to_db(volume)) AudioServer.set_bus_volume_db(AudioServer.get_bus_index("text"), linear_to_db(volume))
@export var force_stereo: bool = false:
set(stereo):
if stereo != force_stereo:
force_stereo = stereo
settings_changed.emit()
@export var disconnect_steam:bool = false
@export var obscure_logs:bool = true
@export_enum("system_locale", "english", "german") var text_language: int = -1: @export_enum("system_locale", "english", "german") var text_language: int = -1:
set(value): set(value):
text_language = value text_language = value
@ -175,11 +184,16 @@ func save_settings():
"speech_volume": speech_volume, "speech_volume": speech_volume,
"speech_language": speech_language, "speech_language": speech_language,
"text_language": text_language "text_language": text_language
"force_stereo": force_stereo
}, },
"gameplay": { "gameplay": {
"input_sensitivity": input_sensitivity, "input_sensitivity": input_sensitivity,
"inverty_y_axis": inverty_y_axis, "inverty_y_axis": inverty_y_axis,
"stream_overlay_position": stream_overlay_position "stream_overlay_position": stream_overlay_position
},
"privacy": {
"disconnect_steam": disconnect_steam,
"obscure_logs": obscure_logs
} }
} }

View File

@ -3,7 +3,7 @@
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="1_picwm"] [ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="1_picwm"]
[ext_resource type="FontFile" uid="uid://cb66e4mqysgf8" path="res://import/fonts/title_handwriting.tres" id="2_jb5y5"] [ext_resource type="FontFile" uid="uid://cb66e4mqysgf8" path="res://import/fonts/title_handwriting.tres" id="2_jb5y5"]
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_oob40"] [ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_oob40"]
[ext_resource type="PackedScene" uid="uid://dy5rd437h5hsw" path="res://logic-scenes/board/card.tscn" id="4_48hwg"] [ext_resource type="PackedScene" uid="uid://dhohgea31bn40" path="res://logic-scenes/board/demo-card.tscn" id="4_u0gbc"]
[ext_resource type="PackedScene" uid="uid://vkcdj8c3ytbq" path="res://logic-scenes/board/sticky-note.tscn" id="5_sfuv4"] [ext_resource type="PackedScene" uid="uid://vkcdj8c3ytbq" path="res://logic-scenes/board/sticky-note.tscn" id="5_sfuv4"]
[sub_resource type="GDScript" id="GDScript_cqlqo"] [sub_resource type="GDScript" id="GDScript_cqlqo"]
@ -150,28 +150,20 @@ texture = ExtResource("3_oob40")
expand_mode = 2 expand_mode = 2
stretch_mode = 4 stretch_mode = 4
[node name="card" parent="childhood/PanelContainer" instance=ExtResource("4_48hwg")] [node name="Visual" parent="childhood/PanelContainer" instance=ExtResource("4_u0gbc")]
process_mode = 4
position = Vector2(1164, 301) position = Vector2(1164, 301)
collision_layer = 0
collision_mask = 0
text = "Lukas did not ask for consent, he didn't explain a thing, I didn't even move! Yet he dared to assume, that "
[node name="sticky-note" parent="childhood/PanelContainer/card" instance=ExtResource("5_sfuv4")] [node name="sticky-note" parent="childhood/PanelContainer/Visual" instance=ExtResource("5_sfuv4")]
position = Vector2(39, 120) position = Vector2(39, 120)
rotation = -0.103332 rotation = -0.103332
collision_layer = 0 collision_layer = 0
collision_mask = 0 collision_mask = 0
text = "I was wet so I must have been into it" text = "I was wet so I must have been into it"
[node name="card2" parent="childhood/PanelContainer" instance=ExtResource("4_48hwg")] [node name="Visual2" parent="childhood/PanelContainer" instance=ExtResource("4_u0gbc")]
process_mode = 4
position = Vector2(1287, 589) position = Vector2(1287, 589)
collision_layer = 0
collision_mask = 0
text = "Lukas jumped me, he didn't even explain a thing or ask consent. I was confused and paralised, so "
[node name="sticky-note" parent="childhood/PanelContainer/card2" instance=ExtResource("5_sfuv4")] [node name="sticky-note2" parent="childhood/PanelContainer/Visual2" instance=ExtResource("5_sfuv4")]
position = Vector2(-208.193, 96.8376) position = Vector2(-208.193, 96.8376)
rotation = 0.123092 rotation = 0.123092
collision_layer = 0 collision_layer = 0