From 78f2216357b686928cdda123e433fd2d4dcb4f93 Mon Sep 17 00:00:00 2001 From: betalars Date: Fri, 28 Mar 2025 13:40:45 +0100 Subject: [PATCH 01/10] Fix wing texture import --- .../luna/textures/luna-wing-color.exr.import | 10 ++++------ .../luna/textures/luna-wing-noise.exr.import | 10 ++++------ 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/logic-scenes/luna/textures/luna-wing-color.exr.import b/src/logic-scenes/luna/textures/luna-wing-color.exr.import index 0d4f655..48e316f 100644 --- a/src/logic-scenes/luna/textures/luna-wing-color.exr.import +++ b/src/logic-scenes/luna/textures/luna-wing-color.exr.import @@ -3,21 +3,19 @@ importer="texture" type="CompressedTexture2D" uid="uid://drt35fcxc77ec" -path.bptc="res://.godot/imported/luna-wing-color.exr-78894bc6a534749bb01a7c2e23deacc5.bptc.ctex" -path.astc="res://.godot/imported/luna-wing-color.exr-78894bc6a534749bb01a7c2e23deacc5.astc.ctex" +path="res://.godot/imported/luna-wing-color.exr-78894bc6a534749bb01a7c2e23deacc5.ctex" metadata={ -"imported_formats": ["s3tc_bptc", "etc2_astc"], -"vram_texture": true +"vram_texture": false } [deps] source_file="res://logic-scenes/luna/textures/luna-wing-color.exr" -dest_files=["res://.godot/imported/luna-wing-color.exr-78894bc6a534749bb01a7c2e23deacc5.bptc.ctex", "res://.godot/imported/luna-wing-color.exr-78894bc6a534749bb01a7c2e23deacc5.astc.ctex"] +dest_files=["res://.godot/imported/luna-wing-color.exr-78894bc6a534749bb01a7c2e23deacc5.ctex"] [params] -compress/mode=2 +compress/mode=3 compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 diff --git a/src/logic-scenes/luna/textures/luna-wing-noise.exr.import b/src/logic-scenes/luna/textures/luna-wing-noise.exr.import index a09c2a6..c88b9a4 100644 --- a/src/logic-scenes/luna/textures/luna-wing-noise.exr.import +++ b/src/logic-scenes/luna/textures/luna-wing-noise.exr.import @@ -3,21 +3,19 @@ importer="texture" type="CompressedTexture2D" uid="uid://5j0s45a8i0t5" -path.bptc="res://.godot/imported/luna-wing-noise.exr-968477f9e2d3150411952f44466b98ba.bptc.ctex" -path.astc="res://.godot/imported/luna-wing-noise.exr-968477f9e2d3150411952f44466b98ba.astc.ctex" +path="res://.godot/imported/luna-wing-noise.exr-968477f9e2d3150411952f44466b98ba.ctex" metadata={ -"imported_formats": ["s3tc_bptc", "etc2_astc"], -"vram_texture": true +"vram_texture": false } [deps] source_file="res://logic-scenes/luna/textures/luna-wing-noise.exr" -dest_files=["res://.godot/imported/luna-wing-noise.exr-968477f9e2d3150411952f44466b98ba.bptc.ctex", "res://.godot/imported/luna-wing-noise.exr-968477f9e2d3150411952f44466b98ba.astc.ctex"] +dest_files=["res://.godot/imported/luna-wing-noise.exr-968477f9e2d3150411952f44466b98ba.ctex"] [params] -compress/mode=2 +compress/mode=3 compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 From a38b4d1956fd7e50d4485df352bb575ecb987374 Mon Sep 17 00:00:00 2001 From: betalars Date: Fri, 28 Mar 2025 18:19:21 +0100 Subject: [PATCH 02/10] godot weirdness --- src/base-environments/youth_room/scnees/draven.tscn | 2 ++ src/logic-scenes/main menu/audio_settings.tscn | 4 +++- src/main_menu.tscn | 3 ++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/base-environments/youth_room/scnees/draven.tscn b/src/base-environments/youth_room/scnees/draven.tscn index f4b6389..cd79c31 100644 --- a/src/base-environments/youth_room/scnees/draven.tscn +++ b/src/base-environments/youth_room/scnees/draven.tscn @@ -461,7 +461,9 @@ 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." fit_content = true scroll_active = false +visible_characters = 0 visible_characters_behavior = 1 +visible_ratio = 0.0 [node name="StartBottom" type="TextureRect" parent="PanelContainer/VBoxContainer"] custom_minimum_size = Vector2(0, 64) diff --git a/src/logic-scenes/main menu/audio_settings.tscn b/src/logic-scenes/main menu/audio_settings.tscn index 2058daa..160cc53 100644 --- a/src/logic-scenes/main menu/audio_settings.tscn +++ b/src/logic-scenes/main menu/audio_settings.tscn @@ -119,7 +119,7 @@ bus = &"music" unique_name_in_owner = true root_node = NodePath("../../SumSlider") libraries = { -"": SubResource("AnimationLibrary_sfx55") +&"": SubResource("AnimationLibrary_sfx55") } [node name="Label3" type="Label" parent="VBoxContainer/GridContainer"] @@ -180,6 +180,7 @@ layout_mode = 2 selected = 0 item_count = 3 popup/item_0/text = "use system language" +popup/item_0/id = 0 popup/item_1/text = "English" popup/item_1/id = 1 popup/item_2/text = "German" @@ -195,6 +196,7 @@ layout_mode = 2 selected = 0 item_count = 3 popup/item_0/text = "use system language" +popup/item_0/id = 0 popup/item_1/text = "English" popup/item_1/id = 1 popup/item_2/text = "German" diff --git a/src/main_menu.tscn b/src/main_menu.tscn index e8f9246..d153130 100644 --- a/src/main_menu.tscn +++ b/src/main_menu.tscn @@ -301,6 +301,7 @@ text = "settings" flat = false item_count = 5 popup/item_0/text = "Accessibility" +popup/item_0/id = 0 popup/item_1/text = "Video" popup/item_1/id = 1 popup/item_2/text = "Audio" @@ -341,7 +342,7 @@ script = ExtResource("4_k8jo0") [node name="AnimationPlayer" type="AnimationPlayer" parent="SettingsPopup"] root_node = NodePath("../TabContainer/Video Settings") libraries = { -"": SubResource("AnimationLibrary_lmxul") +&"": SubResource("AnimationLibrary_lmxul") } autoplay = "RESET" From ad64a118cc1bddad0b6ab7b01bca4bd59ee90608 Mon Sep 17 00:00:00 2001 From: betalars Date: Fri, 28 Mar 2025 18:20:21 +0100 Subject: [PATCH 03/10] prevent intro from being played while draeven text is finished and not skipped to avoid illegal animation state --- .../youth_room/scnees/scene_player.gd | 2 ++ src/base-environments/youth_room/youth_room.tscn | 10 +++++++++- src/logic-scenes/board/empty_sticky_note_panel.gd | 11 ++++++++--- src/logic-scenes/board/sticky-note.gd | 8 ++++++-- 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/base-environments/youth_room/scnees/scene_player.gd b/src/base-environments/youth_room/scnees/scene_player.gd index dbcdaf2..35b6d05 100644 --- a/src/base-environments/youth_room/scnees/scene_player.gd +++ b/src/base-environments/youth_room/scnees/scene_player.gd @@ -120,9 +120,11 @@ func trigger_intro(): intro.emit() intro_triggered = true +var was_skipped = false func skip_text(): if not animation_complete: animation_player.stop(true) + was_skipped = true text_finished.emit() func _on_text_finished(): diff --git a/src/base-environments/youth_room/youth_room.tscn b/src/base-environments/youth_room/youth_room.tscn index a6f192a..989dd6e 100644 --- a/src/base-environments/youth_room/youth_room.tscn +++ b/src/base-environments/youth_room/youth_room.tscn @@ -783,7 +783,7 @@ func _ready() -> void: $childhood.finished.connect(on_childhood_done) $JuiJutsu.finished.connect(on_jui_jutsu_done) $voice_training.finished.connect(on_voice_training_done) - $draven.intro.connect(func(): play(\"intro\")) + $draven.intro.connect(try_intro) for id in range(Scenes.id.YOUTH_DRAEVEN, Scenes.id.YOUTH_JUI_JUTSU+1): Scenes.sign_up_for_sequence(play_scene, id, 0) @@ -831,8 +831,16 @@ func on_draeven_done(): Scenes.continue_sequence(self) $draven.hide() +func try_intro(): + if $draven.was_skipped: + play(\"intro\") + func scene_finished(_id: int, _repeat: bool): queue(\"RESET\") + +func play(anin_name: StringName = \"\", a: float = -1, b: float = 1, c: bool = false) -> void: + print(\"anim player accessed!\") + super.play(anin_name, a, b, c) " [sub_resource type="BoxShape3D" id="BoxShape3D_cb3g8"] diff --git a/src/logic-scenes/board/empty_sticky_note_panel.gd b/src/logic-scenes/board/empty_sticky_note_panel.gd index 123e8e0..b8da04a 100644 --- a/src/logic-scenes/board/empty_sticky_note_panel.gd +++ b/src/logic-scenes/board/empty_sticky_note_panel.gd @@ -23,20 +23,25 @@ func attatch_sticky_note(attatchment: StickyNote, custom_owner: Node, tween:bool is_attatching = true attatchment.on_board = false attached_sticky_note = attatchment - attatchment.attached_to = self + attatchment.attached_to = null if tween: await get_tree().process_frame var height_tween: Tween = create_tween() height_tween.tween_property(self, "custom_minimum_size", minimum_size, 0.1) attatchment.tween_transform_to(Transform2D(0, get_screen_position() + ancor_position - Vector2(0, minimum_size.y))) await attatchment.transform_tween_finished + await get_tree().process_frame + attatchment.reparent(self) + attatchment.position = ancor_position else: custom_minimum_size = minimum_size - attatchment.reparent(self) + attatchment.reparent(self) + attatchment.position = ancor_position is_attatching = false attatchment.owner = custom_owner - attatchment.position = ancor_position + attatchment.attached_to = self attatchment.current_handle = custom_owner + var is_gapped: bool = false func create_gap(): diff --git a/src/logic-scenes/board/sticky-note.gd b/src/logic-scenes/board/sticky-note.gd index c37b801..ee07bad 100644 --- a/src/logic-scenes/board/sticky-note.gd +++ b/src/logic-scenes/board/sticky-note.gd @@ -14,6 +14,8 @@ var attached_to: Node = null: # cannot be explicitly typed, as this can be bnoth handled by picker and physics-board var current_handle: Node +var position_locked: bool = false + signal transform_tween_finished @export var text: String = "" : @@ -67,7 +69,6 @@ var mouse_diff: Vector2 @export_range(1.0, 10.0) var bounce_speed: float = 8 var on_board: bool = false - func _ready() -> void: input_event.connect(_on_input_event) @@ -172,8 +173,11 @@ func tween_transform_to(target: Transform2D): var transform_tween: Tween = create_tween() transform_tween.tween_property(self, "transform", target, 0.25) await transform_tween.finished - emit_signal("transform_tween_finished") + transform_tween_finished.emit() func reset_drag(): if attached_to != null: attached_to.reclaim_sticky_note() + +func free() -> void: + assert(false) From 2182df52106d26bcc9d1b9a3900483680630c77a Mon Sep 17 00:00:00 2001 From: betalars Date: Mon, 31 Mar 2025 12:59:35 +0200 Subject: [PATCH 04/10] fix spelling mistakes in i18n --- .../youth_room/scnees/childhood.tscn | 4 +- .../youth_room/scnees/draven.tscn | 4 +- .../youth_room/scnees/jui_jutsu.tscn | 4 +- .../youth_room/scnees/voice_training.tscn | 4 +- .../youth_room/show_room.tscn | 14 +- src/dev-util/board of devs.tscn | 16 +- src/dev-util/ui-testing.tscn | 10 +- src/internationalisation.csv | 172 +++++++++--------- src/internationalisation.de.translation | Bin 17645 -> 17473 bytes src/internationalisation.en.translation | Bin 15910 -> 15762 bytes src/internationalisation.es.translation | Bin 7461 -> 7405 bytes src/internationalisation.ja.translation | Bin 7461 -> 7405 bytes src/internationalisation.notes.translation | Bin 7992 -> 7920 bytes .../main menu/content_settings.tscn | 8 +- src/logic-scenes/startup/startup.tscn | 2 +- src/thank-you.tscn | 2 +- 16 files changed, 120 insertions(+), 120 deletions(-) diff --git a/src/base-environments/youth_room/scnees/childhood.tscn b/src/base-environments/youth_room/scnees/childhood.tscn index a84a8bf..6e4e1f1 100644 --- a/src/base-environments/youth_room/scnees/childhood.tscn +++ b/src/base-environments/youth_room/scnees/childhood.tscn @@ -431,7 +431,7 @@ offset_right = -424.0 grow_horizontal = 2 grow_vertical = 2 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 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.", "And he also made sure to always include extra credits. So my silly slip-ups wouldn’t get me a B."]) +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 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.", "And he also made sure to always include extra credits. So my silly slip-ups wouldn’t get me a B."]) progress = 17.0 [node name="PanelContainer" type="PanelContainer" parent="."] @@ -557,7 +557,7 @@ custom_minimum_size = Vector2(800, 10) layout_mode = 2 size_flags_horizontal = 3 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 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.And he also made sure to always include extra credits. So my silly slip-ups wouldn’t 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.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.And he also made sure to always include extra credits. So my silly slip-ups wouldn’t get me a B." fit_content = true scroll_active = false visible_characters_behavior = 1 diff --git a/src/base-environments/youth_room/scnees/draven.tscn b/src/base-environments/youth_room/scnees/draven.tscn index cd79c31..b3f5718 100644 --- a/src/base-environments/youth_room/scnees/draven.tscn +++ b/src/base-environments/youth_room/scnees/draven.tscn @@ -402,7 +402,7 @@ offset_right = -875.0 grow_horizontal = 2 grow_vertical = 2 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 = 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."]) [node name="PanelContainer" type="PanelContainer" parent="."] layout_mode = 2 @@ -458,7 +458,7 @@ custom_minimum_size = Vector2(800, 10) layout_mode = 2 size_flags_horizontal = 3 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 = "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." fit_content = true scroll_active = false visible_characters = 0 diff --git a/src/base-environments/youth_room/scnees/jui_jutsu.tscn b/src/base-environments/youth_room/scnees/jui_jutsu.tscn index 82a26ea..319d509 100644 --- a/src/base-environments/youth_room/scnees/jui_jutsu.tscn +++ b/src/base-environments/youth_room/scnees/jui_jutsu.tscn @@ -712,7 +712,7 @@ offset_right = -424.0 grow_horizontal = 2 grow_vertical = 2 script = ExtResource("1_aby4n") -story_array = Array[String](["Why do i still have this junk lying around? It’s 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. 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 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 brother’s 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 = Array[String](["Why do i still have this junk lying around? it's 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. 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 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 brother’s 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?"]) progress = 17.0 [node name="PanelContainer" type="PanelContainer" parent="."] @@ -769,7 +769,7 @@ custom_minimum_size = Vector2(800, 10) layout_mode = 2 size_flags_horizontal = 3 bbcode_enabled = true -text = "Why do i still have this junk lying around? It’s 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. 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 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 brother’s 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 = "Why do i still have this junk lying around? it's 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. 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 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 brother’s 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?" fit_content = true scroll_active = false visible_characters_behavior = 1 diff --git a/src/base-environments/youth_room/scnees/voice_training.tscn b/src/base-environments/youth_room/scnees/voice_training.tscn index d1e742b..1a82365 100644 --- a/src/base-environments/youth_room/scnees/voice_training.tscn +++ b/src/base-environments/youth_room/scnees/voice_training.tscn @@ -490,7 +490,7 @@ offset_right = -424.0 grow_horizontal = 2 grow_vertical = 2 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 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 I’d 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 - that’s 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."]) +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 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 I’d 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 - that’s 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."]) progress = 17.0 [node name="PanelContainer" type="PanelContainer" parent="."] @@ -614,7 +614,7 @@ custom_minimum_size = Vector2(800, 10) layout_mode = 2 size_flags_horizontal = 3 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 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 I’d 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 - that’s 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 :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 = "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 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 I’d 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 - that’s 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." fit_content = true scroll_active = false visible_characters_behavior = 1 diff --git a/src/base-environments/youth_room/show_room.tscn b/src/base-environments/youth_room/show_room.tscn index 60a70f4..9308a21 100644 --- a/src/base-environments/youth_room/show_room.tscn +++ b/src/base-environments/youth_room/show_room.tscn @@ -2576,7 +2576,7 @@ But like - that’s 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 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. @@ -2655,11 +2655,11 @@ vertical_scroll_mode = 3 [node name="Label" type="Label" parent="logic/ScenePlayer/jui_jutsu/PanelContainer/VBoxContainer/ScrollContainer"] layout_mode = 2 size_flags_horizontal = 3 -text = "Why do i still have this junk lying around? It’s 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. +text = "Why do i still have this junk lying around? it's 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 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. +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? @@ -2670,9 +2670,9 @@ 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 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. +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 brother’s door. He let me lie on his carpet. I slowly returned. @@ -2681,7 +2681,7 @@ I slowly returned. \"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. +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? " diff --git a/src/dev-util/board of devs.tscn b/src/dev-util/board of devs.tscn index 8d120b2..94b5d5e 100644 --- a/src/dev-util/board of devs.tscn +++ b/src/dev-util/board of devs.tscn @@ -50,7 +50,7 @@ text = "I am just too many things at once" [node name="p_inner_conflict" parent="draeven/c_confusion" groups=["c_boy_stuff", "c_confusion", "c_fighting", "c_homework", "c_rejection", "c_teasing"] instance=ExtResource("2_ucudl")] position = Vector2(-32, 50) -text = "it is just so overwhealming for me" +text = "it is just so overwhelming for me" [node name="p_outer_conflict" parent="draeven/c_confusion" groups=["c_boy_stuff", "c_confusion", "c_fighting", "c_hit", "c_homework", "c_joy", "c_out-of-world", "c_rejection", "c_teachers"] instance=ExtResource("2_ucudl")] position = Vector2(-32, 140) @@ -64,7 +64,7 @@ offset_right = 594.0 offset_bottom = 181.0 [node name="c_homework" parent="childhood" instance=ExtResource("1_xrckx")] -text = "I never put in much effort for homework " +text = "I never put in much effort for homework" [node name="p_good_grades" parent="childhood/c_homework" groups=["c_body", "c_boy_stuff", "c_homework", "c_out-of-world", "c_rejection", "c_teachers"] instance=ExtResource("2_ucudl")] position = Vector2(-32, 50) @@ -76,7 +76,7 @@ text = "my peers were upset about that." [node name="c_teachers" parent="childhood" instance=ExtResource("1_xrckx")] position = Vector2(0, 300) -text = "I like my teachers more than my classmates " +text = "I like my teachers more than my classmates" [node name="p_volunteering" parent="childhood/c_teachers" groups=["c_boy_stuff", "c_comic_heroes", "c_joy", "c_teachers"] instance=ExtResource("2_ucudl")] position = Vector2(-32, 50) @@ -88,7 +88,7 @@ text = "maybe I want to become a teacher." [node name="c_joy" parent="childhood" instance=ExtResource("1_xrckx")] position = Vector2(0, 600) -text = "I can put ages into things I enjoy " +text = "I can put ages into things I enjoy" [node name="p_worried_mother" parent="childhood/c_joy" groups=["c_body", "c_boy_stuff", "c_comic_heroes", "c_fighting", "c_homework", "c_joy", "c_teachers", "c_teasing"] instance=ExtResource("2_ucudl")] position = Vector2(-32, 50) @@ -118,7 +118,7 @@ text = "and I want to be like agent q!" [node name="c_boy_stuff" parent="voice_training" instance=ExtResource("1_xrckx")] position = Vector2(0, 300) -text = "I like boy stuff " +text = "I like boy stuff" [node name="p_pretending" parent="voice_training/c_boy_stuff" groups=["c_body", "c_boy_stuff", "c_hit", "c_homework", "c_joy", "c_teachers", "c_teasing"] instance=ExtResource("2_ucudl")] position = Vector2(-32, 50) @@ -149,7 +149,7 @@ offset_right = 1254.0 offset_bottom = 141.0 [node name="c_fighting" parent="juijutsu" instance=ExtResource("1_xrckx")] -text = "I stopped doing Jui Jitsu." +text = "I stopped doing Jiu Jitsu." [node name="p_body" parent="juijutsu/c_fighting" groups=["c_boy_stuff", "c_confusion", "c_fighting", "c_out-of-world"] instance=ExtResource("2_ucudl")] position = Vector2(-32, 50) @@ -168,12 +168,12 @@ text = "I was wet, so I must have been into it." [node name="p_stop" parent="juijutsu/c_void" groups=["c_void"] instance=ExtResource("2_ucudl")] position = Vector2(-32, 140) -text = "I didn’t say stop." +text = "I didn't say stop." [node name="c_hit" parent="juijutsu" node_paths=PackedStringArray("evil_sticky_notes") instance=ExtResource("1_xrckx")] position = Vector2(0, 300) evil_sticky_notes = [NodePath("../../childhood/c_teachers/p_becoming_teacher")] -text = "I know how to properly hit people " +text = "I know how to properly hit people" [node name="p_confidence" parent="juijutsu/c_hit" groups=["c_boy_stuff", "c_comic_heroes", "c_hit", "c_homework", "c_joy", "c_teasing"] instance=ExtResource("2_ucudl")] position = Vector2(-32, 50) diff --git a/src/dev-util/ui-testing.tscn b/src/dev-util/ui-testing.tscn index 8781556..da86442 100644 --- a/src/dev-util/ui-testing.tscn +++ b/src/dev-util/ui-testing.tscn @@ -60,7 +60,7 @@ script = SubResource("GDScript_rovd7") layout_mode = 0 offset_right = 21.0 offset_bottom = 39.0 -text = "Acessibility, Disclaimers and Content Notes" +text = "Accessibility, Disclaimers and Content Notes" [node name="RichTextLabel" type="RichTextLabel" parent="."] layout_mode = 0 @@ -68,15 +68,15 @@ offset_left = 1498.0 offset_top = 243.0 offset_right = 2329.0 offset_bottom = 597.0 -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 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.’ +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. +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. And he also made sure to always include extra credits. So my silly slip-ups wouldn’t get me a B." +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 wouldn’t get me a B." fit_content = true scroll_active = false diff --git a/src/internationalisation.csv b/src/internationalisation.csv index f5a464a..9747c20 100644 --- a/src/internationalisation.csv +++ b/src/internationalisation.csv @@ -1,5 +1,5 @@ keys,en,de,es,ja,notes -"Acessibility, Disclaimers and Content Notes","Acessibility, Disclaimers and Content Notes",Barrierefreiheit und Erwartungsmanagement,,, +"Accessibility, Disclaimers and Content Notes","Accessibility, Disclaimers and Content Notes",Barrierefreiheit und Erwartungsmanagement,,, Accessibility,Accessibility,Barrierefreiheit,,, reduce motion,reduce motion,Reduzierte Animationen,,, use Screenreader,use Screenreader,Screen-Reader aktivieren,,, @@ -33,37 +33,37 @@ I would like to know more.,I would like to know more.,Ich würde gern mehr wisse Is this game for or about me?,Is this game for or about me?,Ist dieses Spiel für oder über mich?,,, "[ul] This game tells one story about one fictional character. -This character was desiged to tell an honest and acsssible story about identity and trauma. +This character was designed to tell an honest and accessible story about identity and trauma. This is not the game for you if you are looking for escapism. This is not therapy. -You might feel understood if exeriences you've had are close to the characters. +You might feel understood if experiences you've had are close to the characters. It might help you understand a friend. It will tell you things a group of peers, that reflected about their similar, but specific experiences, want more people to know about. -This is made by betalars, who has many overlapping experiences with this character. They made sure to consult people, who can speak from their own exerpiences about subjects, where betalars could not. +This is made by betalars, who has many overlapping experiences with this character. They made sure to consult people, who can speak from their own experiences about subjects, where betalars could not. [/ul]","[ul] This game tells one story about one fictional character. -This character was desiged to tell an honest and acsssible story about identity and trauma. +This character was designed to tell an honest and accessible story about identity and trauma. This is not the game for you if you are looking for escapism. This is not therapy. -You might feel understood if exeriences you've had are close to the characters. +You might feel understood if experiences you've had are close to the characters. It might help you understand a friend. It will tell you things a group of peers, that reflected about their similar, but specific experiences, want more people to know about. -This is made by betalars, who has many overlapping experiences with this character. They made sure to consult people, who can speak from their own exerpiences about subjects, where betalars could not. +This is made by betalars, who has many overlapping experiences with this character. They made sure to consult people, who can speak from their own experiences about subjects, where betalars could not. [/ul]","[ul] -In diesem Spiel wird eine Geschichte eines fitkionalen Charakters erzählt. +In diesem Spiel wird eine Geschichte eines fiktionalen Charakters erzählt. Der Charakter wurde geschrieben, um eine zugängliche und ehrliche Geschichte über Trauma zu erzählen. -Dieses Spiel bietet keinen Eskarpismus. +Dieses Spiel bietet keinen Eskapismus. Dieses Spiel ist keine Therapie. Vielleicht fühlst du dich verstanden, wenn deine Erfahrungen dem Charakter ähneln. -Vielleicht hillft es dir, jemand befreundetes zu verstehen. +Vielleicht hilft es dir, jemand befreundetes zu verstehen. Dieses Spiel wurde von einer Gruppe an Leuten geschaffen, die sehr spezifische Erfahrungen, die sie gemeinsam gemacht haben, teilen wollten. Dieses Spiel ist von betalars. An vielen Stellen wurde hier aus eigener Erfahrung geschrieben und da, wo keine eigenen Erfahrungen da waren, wurden Betroffene einbezogen. [/ul]",,,leave the [ul] and [/ul] please avoid using gendered words for betalars if possible (they are non-binary) What may be difficult about the premise?,What may be difficult about the premise?,Warum könnte die Prämisse schwierig sein?,,, -"In this game, you will encounter situations that are problematic and will have a negative impact on the Mental Health of the character you are playing as. This game will establish hurtful assumptions this character develops about themselves and you may not resolve all of them right away. You will have some agency, but it is limited by the games narrative and also chance. You are encouraged and will be able to resolve hurtful assumptions later in the game.","In this game, you will encounter situations that are problematic and will have a negative impact on the Mental Health of the character you are playing as. This game will establish hurtful assumptions this character develops about themselves and you may not resolve all of them right away. You will have some agency, but it is limited by the games narrative and also chance. You are encouraged and will be able to resolve hurtful assumptions later in the game.","Dieses Spiel wird Erfahrungen thematisieren, die sich negativ auf den gespielten Charakter auswirken. Das Spiel wird schädliche Annahmen etablieren, die der Charakter über sich hat und nicht immer sofort auflösen. Du kannst darauf Einfluss nehmen, aber diene Möglichkeiten sind durch Spielmechanik und Narrative beschränkt. Du sollst und kannst vieles später aufarbeiten.",,, +"In this game, you will encounter situations that are problematic and will have a negative impact on the Mental Health of the character you are playing as. This game will establish hurtful assumptions this character develops about themselves and you may not resolve all of them right away. You will have some agency, but it is limited by the games narrative and also chance. You are encouraged and will be able to resolve hurtful assumptions later in the game.","In this game, you will encounter situations that are problematic and will have a negative impact on the Mental Health of the character you are playing as. This game will establish hurtful assumptions this character develops about themselves and you may not resolve all of them right away. You will have some agency, but it is limited by the games narrative and also chance. You are encouraged and will be able to resolve hurtful assumptions later in the game.","Dieses Spiel wird Erfahrungen thematisieren, die sich negativ auf den gespielten Charakter auswirken. Das Spiel wird schädliche Annahmen etablieren, die der Charakter über sich hat und nicht immer sofort auflösen. Du kannst darauf Einfluss nehmen, aber deine Möglichkeiten sind durch Spielmechanik und Narrative beschränkt. Du sollst und kannst vieles später aufarbeiten.",,, What are the game's topics? (Content Notes),What are the game's topics? (Content Notes),Worum geht es im Spiel (Content Warnungen),,, "This game discusses Mental Health and Sex-Positivity. It also includes a character, who is trans but you will get to know them while they are unaware about their trans identity going by their birthname. Besides social Transistioning, this game also deals with topics including Mysoginy, Sanism, Body Issues, Eating Disorders, Bullying, Martial Arts, Relationships and Rape, but not trough physical violence. Comic violence is mentioned while talking about a fictional franchise in universe.","This game discusses Mental Health and Sex-Positivity. It also includes a character, who is trans but you will get to know them while they are unaware about their trans identity going by their birthname. Besides social Transistioning, this game also deals with topics including Mysoginy, Sanism, Body Issues, Eating Disorders, Bullying, Martial Arts, Relationships and Rape, but not trough physical violence. Comic violence is mentioned while talking about a fictional franchise in universe.","In diesem Spiel geht es um mentale Gesundheit und Sex-Positivität. Es enthält einen trans Charakter, der sich darüber nicht im klaren ist und daher auch zunächst noch keinen eigenen Namen hat. Neben Sozialer Transition thematisiert das Spiel Mysoginie, Diskriminierung wegen mentalen Behinderungen, Probleme mit dem Körperbild, Essstörungen, Mobbing, Kampfkunst, Beziehungen und Vergewaltigungen, jedoch nicht durch körperliche Gewalt. Comic Gewalt wird erwähnt in einer im Spiel fiktionalen Geschichte.",,,"The Rape being discussed in this game is non-consensual sex, but also non-voilent." -Mental Health Acessibility Options,Mental Health Accessability Options,Barrierefreiheit für psychische Störungen,,, +Mental Health Accessibility Options,Mental Health Accessibility Options,Barrierefreiheit für psychische Störungen,,, "[ul] You can always Pause using Escape or Spacebar You can always choose to just get a neutral summary of scenes or skip them entirely @@ -72,14 +72,14 @@ You can always Pause using Escape or Spacebar You can always choose to just get a neutral summary of scenes or skip them entirely [/ul]","[ul] Du kannst immer mit Pause oder Escape pausieren. -Du kanns 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.",,, show content notes during the game,show content notes during the game,Inhaltswarnungen im Spiel anzeigen,,, allow me to skip scenes,allow me to skip scenes,Überspringen von Szenen ermöglichen,,, "[center][i]I assure you I did my best, But I am only human and this is just one game.[/i][/center]","[center][i]I assure you I did my best, But I am only human and this is just one game.[/i][/center]","[center][i]Ich verspreche ich habe mein Bestes getan, Aber ich bin nur ein Mensch und kein Spiel wird je -ein Leben vollumfänglich zeigen können.[/i][/center]",,,"This is intentionally pheased as “only one game” instead of “only a game”, hinting at it being maningful, but limited in what it can convey on it’s own." +ein Leben vollumfänglich zeigen können.[/i][/center]",,,"This is intentionally phrased as “only one game” instead of “only a game”, hinting at it being meaningful, but limited in what it can convey on its own." new Game,new Game,neues Spiel,,, continue,continue,weiter spielen,,, load,load,Spiel laden,,, @@ -96,9 +96,9 @@ Quality,Quality,höchste Qualität,,, Fulscreen Mode,Fulscreen Mode,Fenster-Modus,,, Windowed,Windowed,im Fenster,,, Fullscreen,Fullscreen,Vollbild,,, -exclusive Fullscreen,exclusive Fullscreen,exklusived Vollbild,,, +exclusive Fullscreen,exclusive Fullscreen,exklusives Vollbild,,, Rendering Scale,Rendering Scale,Skalierung,,, -reset,reset,zurück setzen,,, +reset,reset,zurücksetzen,,, Super Resolution,Super Resolution,Super Resolution,,, disabled,disabled,aus,,, limit FPS,limit FPS,FPS begrenzen,,, @@ -108,7 +108,7 @@ minimum,minimum,minimum,,, low (SDF Global Illumination),low (SDF Global Illumination),niedrig (SDF globale Illumination),,, medium (SDF and Screen Space Global Illumination),medium (SDF and Screen Space Global Illumination),medium (SDF und Screen Space globale Illumination),,, high (SDF and Screen Space Global Illumination),high (SDF and Screen Space Global Illumination),hoch (SDF und Screen Space globale Illumination),,, -Shadow Quality,Shadow Quality,Shattenqualität,,, +Shadow Quality,Shadow Quality,Schattenqualität,,, performance,performance,leistungsschonend,,, balanced,balanced,ausgeglichen,,, quality,quality,höchste Qualität,,, @@ -125,15 +125,15 @@ close,close,zurück,,, save and apply,save and apply,speichern und anwenden,,, "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 Veränderungen. +Do you really want to leave without saving?","Es gibt nicht gespeicherte Änderungen. Möchtest du wirklich zurück ohne zu speichern?",,, leave,leave,wirklich verlassen,,, save,save,speichern,,, abort,abort,abbrechen,,, Gameplay Settings,Gameplay Settings,Spieleinstellungen,,, -invert Y (gamepad),invert Y (gamepad),Y-Axhse invertieren,,, +invert Y (gamepad),invert Y (gamepad),Y-Achse invertieren,,, Input Sensitivity,Input Sensitivity,Eingabesensibilität,,, -Stream Overlay,Stream Overlay,Stream-Einlbendungen,,, +Stream Overlay,Stream Overlay,Stream-Einblendungen,,, Displays content note and currently playing music at a corner of the screen.,Displays content note and currently playing music at s corner of the screen.,Zeigt Hinweise zu sensiblen Themen und aktuell laufender Musik an einer Ecke des Bildschirms an.,,, none,none,keine,,, top left,top left,oben links,,, @@ -151,34 +151,34 @@ Exploring social service year.,Exploring social service year.,Während des FSJ., Transitioning to university.,Transitioning to university.,Übergang zur Universität.,,, Exploring dorm room.,Exploring dorm room.,Während des Studiums,,, Ending,Ending,Ende,,, -I never put in much effort for homework ,I never put in much effort for homework ,Ich habe mir nie Mühe bei Hausaufgaben gegeben,,, +I never put in much effort for homework,I never put in much effort for homework,Ich habe mir nie Mühe bei Hausaufgaben gegeben,,, but at least I get good grades.,but at least I get good grades.,aber zumindest waren meine Noten gut.,,, my peers were upset about that.,my peers were upset about that.,meine Klasse war deswegen sauer.,,, -I like my teachers more than my classmates ,I like my teachers more than my classmates ,"Ich komm mit meinen Lehrern besser klar, als mit meiner Klasse.",,, -doing voluntary social service at my school would be great.,doing voluntary social service at my school would be great.,vielleicht sollte ich ein FSJ vor dem Stidum machen,,, +I like my teachers more than my classmates,I like my teachers more than my classmates,"Ich komm mit meinen Lehrern besser klar, als mit meiner Klasse.",,, +doing voluntary social service at my school would be great.,doing voluntary social service at my school would be great.,vielleicht sollte ich ein FSJ vor dem Studium machen,,, maybe I want to become a teacher.,maybe I want to become a teacher.,vielleicht sollte ich Lehrerin werden.,,, -I can put ages into things I enjoy ,I can put ages into things I enjoy ,"Ich versinke in Dingen, die mir Freude machen",,, +I can put ages into things I enjoy,I can put ages into things I enjoy,"Ich versinke in Dingen, die mir Freude machen",,, my mother would be worried about that,my mother would be worried about that,meiner Mutter macht das Sorgen.,,, Mr Thomas thinks that makes me gifted.,Mr Thomas thinks that makes me gifted.,Herr Thomas denkt das macht mich begabt.,,, -Comic heroes are my role models ,Comic heroes are my role models ,Comic Helden sind meine Vorbilder,,, +Comic heroes are my role models,Comic heroes are my role models,Comic Helden sind meine Vorbilder,,, "when I put in the effort, I can make the world a better place","when I put in the effort, I can make the world a better place","wenn ich mich nur anstrenge, kann ich die Welt verbessern!",,, -and I want to be like agent q!,and I want to be like agent q!,"Ich will so sein, wie Agend Clue!",,, -I like boy stuff ,I like boy stuff ,Ich mag Jugns Kram,,, +and I want to be like agent q!,and I want to be like agent q!,"Ich will so sein, wie Agent Clue!",,, +I like boy stuff,I like boy stuff,Ich mag Jungs Kram,,, yet they think I'm just pretending,yet they think I'm just pretending,aber die denken ich tu einfach nur so.,,, and girls don't get that.,and girls don't get that.,und Mädchen verstehen das einfach nicht!,,, "When Jojo got teased for trying, I pretty much exploded","When Jojo got teased for trying, I pretty much exploded","Ich bin ausgerastet, weil Jojo für ihre Mühe gemobbt wurde",,, "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 das mir helfen würde.",,, 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!",,, -I stopped doing Jui Jitsu.,I stopped doing Jui Jitsu.,Ich habe mit Jui Jutsu aufgehört,,, -My body just didn't feel right,My body just didn't feel right,mein Körper hat sich falsch anfefühlt,,, +I stopped doing Jiu Jitsu.,I stopped doing Jiu Jitsu.,Ich habe mit Jiu Jutsu aufgehört,,, +My body just didn't feel right,My body just didn't feel right,mein Körper hat sich falsch angefühlt,,, 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,,, -I know how to properly hit people ,I know how to properly hit people ,"Ich weiß, wie man ordentlich zuschlägt",,, +I know how to properly hit people,I know how to properly hit people,"Ich weiß, wie man ordentlich zuschlägt",,, that gives me a lot of confidence.,that gives me a lot of confidence.,das gibt mir viel Selbstvertrauen.,,, and that’s a great 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 didn’t even move! Yet he dared to assume, that ","Lukas did not ask for consent, he didn't explain a thing, I didn’t 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 -"I was wet, so I must have been into it.","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 it’s 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 -I didn’t say stop.,I didn’t say stop.,Ich habe nicht Stopp gesagt.,,,This line on itself should seem like a intrusive thought on it’s own without the contect above. +"Lukas did not ask for consent, he didn't explain a thing, I didn't even move! Yet he dared to assume, that ","Lukas did not ask for consent, he didn't explain a thing, I didn't 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 +"I was wet, so I must have been into it.","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 content above. +"Lukas jumped me, he didn't even explain a thing or ask consent. I was confused and paralyzed, so ","Lukas jumped me, he didn't even explain a thing or ask consent. I was confused and paralyzed, 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 +I didn't say stop.,I didn't say stop.,Ich habe nicht Stopp gesagt.,,,This line on itself should seem like a intrusive thought on its own without the contect above. I feel like I am not from of this world,I feel like I am not from of this world,Ich fühl mich wie von einer anderen Welt,,, I like being unique like that,I like being unique like that,ich mag es so besonders zu sein.,,, I am thankful for the few friends that get me,I am thankful for the few friends that get me,"gut, dass ich ein paar Freunde habe, die das verstehen.",,, @@ -186,90 +186,90 @@ I fear being rejected,I fear being rejected,"Ich habe Angst, ausgeschlossen zu w that makes it hard to find friends,that makes it hard to find friends,darum fällt mir Freunde finden schwer.,,, I'm afraid I will just get laughed at,I'm afraid I will just get laughed at,"was, wenn ich deswegen ausgelacht werde?",,, I am just too many things at once,I am just too many things at once,Ich bin zu viel gleichzeitig.,,, -it is just so overwhealming for me,it is just so overwhealming for me,das ist einfach überfordernd für mich.,,, -this is just too much for others,this is just too much for others,das ist einfach überfordernd für andere.,,, -"[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. ",,, +it is just so overwhelming for me,it is just so overwhelming for me,das ist einfach zu viel für mich.,,, +this is just too much for others,this is just too much for others,das ist einfach zu viel für andere.,,, +"[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.",das ist einfach zu viel für mich.,,, "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. ",,, "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]",,, -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 Unterbrechnungen einfach nicht ab. Wir haben uns so oft deswegen gestritten.[/p],,, -Dinner was difficult. ,[p]Dinner was difficult. ,[p]Abendbrot war die Hölle. ,,, -"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]",,, -She was always so worried.,[p]She was always so worried: ,[p]Sie war immer besorgt. ,,, -" ‘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?, ",,, -"""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]",,, -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]",,, -"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, ",,, -- 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? ",,, -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. ",,, -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],,, +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],,, +Dinner was difficult.,[p]Dinner was difficult.,[p]Abendbrot war die Hölle.,,, +"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]",,, +She was always so worried.,[p]She was always so worried:,[p]Sie war immer besorgt.,,, +" ‘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?, ",,, +"""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]",,, +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]",,, +"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, ",,, +- 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? ",,, +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. ",,, +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],,, 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]",,, -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]",,, -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]",,, -Moonlight trickled down trough clouds and twigs as Dräven tapped trough the night.,[p]Moonlight trickled down trough clouds and twigs as Dräven tapped trough the night. ,"[p]Das Mondlicht spielte mit Wolken und Geäst, da lief Dräven durch die Nacht. ",,, +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]",,, +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]",,, +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. ",,, 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]",,, -"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 eigner Schweif. ",,, +"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. ",,, "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]",,, "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]",,, -When suddently: Was that chatter?,[p]When suddently: Was that chatter?[/p],[p]Plötzlich: war das Keckern?[/p],,, -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. ,,, +When suddenly: Was that chatter?,[p]When suddenly: Was that chatter?[/p],[p]Plötzlich: war das Keckern?[/p],,, +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.,,, "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]",,, 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],,, -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. ,,, +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.,,, "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. ",,, "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],,, "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. ",,, -"Northern lights danced trough the sky to form wings, that met at a sleak body made of stars and clouds.","Northern lights danced trough the sky to form wings, that met at a sleak 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],,, -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 erwiederten. ",,, -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. ",,, -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],,, +"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],,, +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. ",,, +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. ",,, +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],,, But his tears were of joy: It was the first time Dräven saw another creature of many kinds.,[p]But his tears were of joy: It was the first time Dräven saw another creature of many kinds.[/p],"[p]Doch es waren Tränen der Freude. Denn es war das erste mal, dass Dräven ein anderes Viel-Wesen sah.[/p]",,, -Why do i still have this junk lying around? It’s not like I want to do ju jutsu ever again. I just fucked it.,[p]Why do i still have this junk lying around? It’s not like I want to do ju jutsu ever again. I just fucked it. ,"Boar, warum hängt hier noch dieser Müll? Ich hab Jui Jutsu einfach verkackt.",,, -I mean I did enjoy it while it lasted. Being able to properly hit people was great. ,I mean I did enjoy it while it lasted. Being able to properly hit people was great. ,Ich meine … ich hatte Spaß damals. Leute gut Schlagen können ist großartig.,,, +Why do i still have this junk lying around? its not like I want to do ju jutsu ever again. I just fucked it.,[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.,"Boar, warum hängt hier noch dieser Müll? Ich hab Jiu Jutsu einfach verkackt.",,, +I mean I did enjoy it while it lasted. Being able to properly hit people was great.,I mean I did enjoy it while it lasted. Being able to properly hit people was great.,Ich meine … ich hatte Spaß damals. Leute gut Schlagen können ist großartig.,,, "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. ","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.[/p]","Es gab mir Selbstvertrauen. Ich konnte Leute einschüchtern, wenn sie darum gebettelt haben aufs Maul zu bekommen und weil ich das nur einmal tatsächlich getan habe, war es auch ein super Ventil.",,, -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]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],"Ich meine … meine Titten waren die Hölle beim aufwärmen und die Umkleide hat wirklich keinen Spiegel gebraucht. Vielen Dank, ich brauche keine Erinnerung an meinen fetten Arsch. Aber wenigstens hatte ich Lukas.",,, -He was such a huge nerd. He studied math in his third semester and could talk for hours about his passion.,[p]He was such a huge nerd. He studied math in his third semester and could talk for hours about his passion. ,Er war so ein Nerd. Er konnte so gut reden. Über Mathe. Er war in seinem dritten Semester und konnte stundenlang erzählen.,,, -Also: my math grades pretty much leaped for my final year in high shool thanks to him.,Also: my math grades pretty much leaped for my final year in high shool thanks to him. ,Und ich glaube mein Mathe-Abi war bestimmt drei Punkte besser durch ihn.,,, -"He also helped me so much with jui jitsu, as he properly floored me when I slipped up. ","He also helped me so much with jui jitsu, as he properly floored me when I slipped up.[/p]","Und ach bei Jui Jutsu … es hat mir so sehr geholfen, dass er mich einfach anständig hingelegt hat, wenn ich gefailed habe.",,, -Also - unlike everyone else - he understood that I didn’t want people to mind my chest. ,[p]Also - unlike everyone else - he understood that I didn’t want people to mind my chest. ,"Und er war der einzige, der wirklich verstanden hat, dass mir egal war, ob Leute mir an die Brüste kommen.",,, -So Fighting for wins with him was actually rewarding even tho more often than not I ended up having to tap out.,So Fighting for wins with him was actually rewarding even tho more often than not I ended up having to tap out. ,"Mit ihm war Kämpfen so gut – auch wenn ich üblicherweise diejenige war, die abschlagen musste und nicht er.",,, +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]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],"Ich meine … meine Titten waren die Hölle beim aufwärmen und die Umkleide hat wirklich keinen Spiegel gebraucht. Vielen Dank, ich brauche keine Erinnerung an meinen fetten Arsch. Aber wenigstens hatte ich Lukas.",,, +He was such a huge nerd. He studied math in his third semester and could talk for hours about his passion.,[p]He was such a huge nerd. He studied math in his third semester and could talk for hours about his passion.,Er war so ein Nerd. Er konnte so gut reden. Über Mathe. Er war in seinem dritten Semester und konnte stundenlang erzählen.,,, +Also: my math grades pretty much leaped for my final year in high school thanks to him.,Also: my math grades pretty much leaped for my final year in high school thanks to him.,Und ich glaube mein Mathe-Abi war bestimmt drei Punkte besser durch ihn.,,, +"He also helped me so much with jiu jitsu, as he properly floored me when I slipped up. ","He also helped me so much with jiu jitsu, as he properly floored me when I slipped up.[/p]","Und ach bei Jui Jutsu … es hat mir so sehr geholfen, dass er mich einfach anständig hingelegt hat, wenn ich gefailed habe.",,, +Also - unlike everyone else - he understood that I didn't want people to mind my chest.,[p]Also - unlike everyone else - he understood that I didn't want people to mind my chest.,"Und er war der einzige, der wirklich verstanden hat, dass mir egal war, ob Leute mir an die Brüste kommen.",,, +So Fighting for wins with him was actually rewarding even tho more often than not I ended up having to tap out.,So Fighting for wins with him was actually rewarding even tho more often than not I ended up having to tap out.,"Mit ihm war Kämpfen so gut – auch wenn ich üblicherweise diejenige war, die abschlagen musste und nicht er.",,, We also had my first proper kiss. I thought I loved him. But now?,We also had my first proper kiss. I thought I loved him. But now?[/p],"Wir hatten auch meinen ersten richtigen Kuss. Ich war so verliebt, und jetzt?",,, -He was weird that evening. Even more huggy and hyperactive than usual. ,[p]He was weird that evening. Even more huggy and hyperactive than usual.[/p],Es war so merkwürdig. Irgendwie noch hibbeliger und näher als so schon.,,, +He was weird that evening. Even more huggy and hyperactive than usual.,[p]He was weird that evening. Even more huggy and hyperactive than usual.[/p],Es war so merkwürdig. Irgendwie noch hibbeliger und näher als so schon.,,, "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]We were under my bed, reading my secret comic stash when I got tired of the floor and told him we should go upstairs. ","Wir waren unterm Bett, haben meine geheime Comic-Kiste gelesen als ich keine Lust mehr auf Boden hatte und gesagt hab lass hoch gehen.",,, -We had a play fight on my mattress. I’ve never seen him fight like this. ,We had a play fight on my mattress. I’ve never seen him fight like this. ,Wir haben auf meiner Matraze gekabbelt. Es war so … anders.,,, +We had a play fight on my mattress. I've never seen him fight like this.,We had a play fight on my mattress. I've never seen him fight like this.,Wir haben auf meiner Matraze gekabbelt. Es war so … anders.,,, "His fingers Curled across my Skin without grabbing me, like he would normally do. And he let me win","His fingers Curled across my Skin without grabbing me, like he would normally do. And he let me win ",Seine Finger sind über meinen Körper geglitten ohne mich zu greifen - und er hat mich gewinnen lassen.,,, … with this smirk on his face.,… with this smirk on his face.[/p],mig dieses Grinsen.,,, -"I rolled over exhausted when suddently he sat on top of me, a pearl of sweat dropped from his nose on my throat.","[p]I rolled over exhausted when suddently he sat on top of me, a pearl of sweat dropped from his nose on my throat. ","Ich habe mich erschöpft zur Seite gerollt, als er plötzlich auf mir saß. Eine Perle Schweiß fiel von seiner Nase auf meinen Hals",,, +"I rolled over exhausted when suddenly he sat on top of me, a pearl of sweat dropped from his nose on my throat.","[p]I rolled over exhausted when suddenly he sat on top of me, a pearl of sweat dropped from his nose on my throat. ","Ich habe mich erschöpft zur Seite gerollt, als er plötzlich auf mir saß. Eine Perle Schweiß fiel von seiner Nase auf meinen Hals",,, He started undoing his shirt.,He started undoing his shirt.[/p],Er hat sein Hemd auf gemacht.,,, Do you have condoms?,[p]”Do you have condoms?”[/p],Hast du Kondome?,,, "Yes, of course everybody has Why did he ask that?","[p]”Yes, of course everybody has Why did he ask that?”.[/p]","Natürlich, jeder hat Kondome, warum hat er das gefragt?",,, "I saw my body lying on the bed, getting undressed. I was drifting away, towards the stars.","[p]I saw my body lying on the bed, getting undressed. I was drifting away, towards the stars.","Ich habe gesehen, wie mein Körper entkleidet wurde. Ich war schwerelos zwischen den Sternen.",,, -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.,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.,"Mein Körper hat sich nicht bewegt. Mein Mund hat nichts gesagt, als die Schmetterlinge aus meinem Bauch ausbrechen wollten, weil der geküsst wurde.",,, -"I … observed him from afar. He … didn’t seem to notice, that I had left.","I … observed him from afar. He … didn’t seem to notice, that I had left. ","Ich habe Lukas von Weitem beobachtet. Ihm ist nicht aufgefallen, dass ich nicht mehr da war.",,, -That I didn’t return to kiss him good bye. That I didn’t hug him when he went home.,That I didn’t return to kiss him good bye. That I didn’t hug him when he went home.[/p],Dass ich ihm keinen Abschiedskuss gegeben habe. Dass ich ihn an der Tür nicht umarmt habe.,,, -My hands knocked on my brother’s door. He let me lie on his carpet.,[p]My hands knocked on my brother’s door. He let me lie on his carpet.[/p],Meine Hände Klopften an Fabis tür. Ich durfte auf seinem Teppich liegen.,,, +My body didn't move. It didn't say a word when the butterflies tried to escape from its stomach as he kissed it.,My body didn't move. It didn't say a word when the butterflies tried to escape from its stomach as he kissed it.,"Mein Körper hat sich nicht bewegt. Mein Mund hat nichts gesagt, als die Schmetterlinge aus meinem Bauch ausbrechen wollten, weil der geküsst wurde.",,, +"I … observed him from afar. He … didn't seem to notice, that I had left.","I … observed him from afar. He … didn't seem to notice, that I had left. ","Ich habe Lukas von Weitem beobachtet. Ihm ist nicht aufgefallen, dass ich nicht mehr da war.",,, +That I didn't return to kiss him goodbye. That I didn't hug him when he went home.,That I didn't return to kiss him goodbye. That I didn't hug him when he went home.[/p],Dass ich ihm keinen Abschiedskuss gegeben habe. Dass ich ihn an der Tür nicht umarmt habe.,,, +My hands knocked on my brother’s door. He let me lie on his carpet.,[p]My hands knocked on my brother’s door. He let me lie on his carpet.[/p],Meine Hände klopften an Fabis tür. Ich durfte auf seinem Teppich liegen.,,, I slowly returned.,[p]I slowly returned.[/p],Langsam bin ich zurück gekehrt.,,, """How did it go?, Fabian asked.","[p]""How did it go?, Fabian asked.[/p]","“Wie wars?”, fragte mein Bruder.",,, -"""It was moist”, I said.","[p]""It was moist”, I said.[/p]","“Feucht?”, frgte ich.",,, +"""It was moist”, I said.","[p]""It was moist”, I said.[/p]","“Feucht?”, fragte ich.",,, “That usually helps.”,[p]“That usually helps.”[/p],"“Das hilft.""",,, "He laughed awkwardly. I just wanted to also laugh, but curled into a ball and cried.","[p]He laughed awkwardly. I just wanted to also laugh, but curled into a ball and cried.[/p]","Er lachte peinlich berührt. Ich wollte auch lachen, aber ich habe mich zusammen gerollt und geweint.",,, -It took him a while to say something. “I … you … it’s fine Lisa. I know it hurts the first time.” ,[p]It took him a while to say something. “I … you … it’s fine Lisa. I know it hurts the first time.” ,"Er hat eine Weile gebraucht um etwas zu sagen. “Ich … du … Lisa, es ist okay. Ich weiß das erste mal tut weh.""",,, +It took him a while to say something. “I … you … it's fine Lisa. I know it hurts the first time.”,[p]It took him a while to say something. “I … you … it's fine Lisa. I know it hurts the first time.”,"Er hat eine Weile gebraucht um etwas zu sagen. “Ich … du … Lisa, es ist okay. Ich weiß das erste mal tut weh.""",,, He gently stroked the back I was curling towards him.,[p]He gently stroked the back I was curling towards him.,"Sanft streichelte er den Rücken, den ich ihm hin hielt.",,, That was good. He was a sweet angel. Why must he be so bad at comforting?,That was good. He was a sweet angel. Why must he be so bad at comforting?[/p],Das war gut. Fabi ist so gut zu mir. Warum muss er so schlecht im Trösten sein?,,, -My secret comic stash. I remember playing Que-Men with the boys.,[p]My secret comic stash. I remember playing Que-Men with the boys.,Meine geheime Comic-Kiste. Wir hatten damals mit den Jungs so viel Que-Men gespielt.,,, -I had a voice for every character in that comic. But more often than not I played him: Agent Q.,I had a voice for every character in that comic. But more often than not I played him: Agent Q. ,Ich hatte eine Stimme für jeden Charakter in diesem Comic. Am liebsten aber war ich er: Agend Clue.,,, +My secret comic stash. I remember playing Clue-Men with the boys.,[p]My secret comic stash. I remember playing Clue-Men with the boys.,Meine geheime Comic-Kiste. Wir hatten damals mit den Jungs so viel Clue-Men gespielt.,,, +I had a voice for every character in that comic. But more often than not I played him: Agent Q.,I had a voice for every character in that comic. But more often than not I played him: Agent Q.,Ich hatte eine Stimme für jeden Charakter in diesem Comic. Am liebsten aber war ich er: Agent Clue.,,, "Going under the radar, putting in precise work to save the world.","Going under the radar, putting in precise work to save the world. ","Mit chirurgischer Präzision im Verborgenen arbeiten, um die Welt zu retten.",,, Not having to deal with being a girl.,Not having to deal with being a girl.[/p],Kein Mädchen sein müssen.,,, "Boys were so much easier. They like cars, bikes, guns and agents.","[p]Boys were so much easier. They like cars, bikes, guns and agents.","Jungs sind so viel einfacher. Sie mögen Autos, Motorräder, Waffen und Agenten.",,, -They don’t talk behind your back. They don’t think everything is about relationships.,They don’t talk behind your back. They don’t think everything is about relationships.,Jungs reden nicht hinter deinem Rücken. Jungs denken nicht alles dreht sich um Beziehungen.,,, -"Girls don’t get that. I knew they talked behind my back about me only “pretending” to like boy stuff, so I’d get laid ","[p]Girls don’t get that. I knew they talked behind my back about me only “pretending” to like boy stuff, so I’d get laid ","Mädchen verstehen das nicht. Ich weiß sie haben über mich gelästert. Dass ich Jungs Kram nur gemocht hätte, um jemanden ins Bett zu kriegen.",,, +They don't talk behind your back. They don't think everything is about relationships.,They don't talk behind your back. They don't think everything is about relationships.,Jungs reden nicht hinter deinem Rücken. Jungs denken nicht alles dreht sich um Beziehungen.,,, +"Girls don't get that. I knew they talked behind my back about me only “pretending” to like boy stuff, so I’d get laid ","[p]Girls don't get that. I knew they talked behind my back about me only “pretending” to like boy stuff, so I’d get laid ","Mädchen verstehen das nicht. Ich weiß sie haben über mich gelästert. Dass ich Jungs Kram nur gemocht hätte, um jemanden ins Bett zu kriegen.",,, "… I mean, maybe they were right?","… I mean, maybe they were right?","… ich meine, vielleicht war was dran?",,, -Like I won’t deny I was probably the first girl in my class to see a dick.,Like I won’t deny I was probably the first girl in my class to see a dick.[/p],Ich hab vermutlich als erstes Mädchen meiner Stufe einen Schwanz gesehen.,,, -"But like - that’s what the boys do, right?","[p]But like - that’s what the boys do, right?[/p]","Aber das machen Jungs halt miteinander, nich?",,, +Like I won't deny I was probably the first girl in my class to see a dick.,Like I won't deny I was probably the first girl in my class to see a dick.[/p],Ich hab vermutlich als erstes Mädchen meiner Stufe einen Schwanz gesehen.,,, +"But like - that’s what the boys do, right?","[p]But like - that’s what the boys do, right?[/p]","Aber das machen Jungs halt miteinander, oder?",,, At least it has gotten better after me and Jojo became friends.,[p]At least it has gotten better after me and Jojo became friends.,"Zumindest hat es sich gebessert, nachdem Jojo und ich Freundinnen wurden.",,, -I still remember how that happend. I did a voice acting workshop in art class. ,I still remember how that happend. I did a voice acting workshop in art class. ,Die Geschichte ist großartig. Ich durfte in Kunst einen Vortag über Voice Acting halten.,,, +I still remember how that happened. I did a voice acting workshop in art class.,I still remember how that happened. I did a voice acting workshop in art class.,Die Geschichte ist großartig. Ich durfte in Kunst einen Vortrag über Voice Acting halten.,,, Being allowed to share my technique in front of everyone was just :D,Being allowed to share my technique in front of everyone was just :D,Meine Technik mit allen teilen können war einfach nur :D,,, -I mean next to nobody put in any effort. But Jojo did.,I mean next to nobody put in any effort. But Jojo did.[/p],"Ich meine … nieman hat sich wirklich angesträngt, außer Jojo halt.",,, -"When our Mr Funny then decided to ape her attempts instead of just minding his own, I pretty much exploded.","[p]When our Mr Funny then decided to ape her attempts instead of just minding his own, I pretty much exploded.[/p]","Als unser Klassencloun sie dann nachäffen musste anstatt sich um seinen Scheiß zu kümmern, bin ich einfach eplodiert.",,, +I mean next to nobody put in any effort. But Jojo did.,I mean next to nobody put in any effort. But Jojo did.[/p],"Ich meine … niemand hat sich wirklich angestrengt, außer Jojo halt.",,, +"When our Mr Funny then decided to ape her attempts instead of just minding his own, I pretty much exploded.","[p]When our Mr Funny then decided to ape her attempts instead of just minding his own, I pretty much exploded.[/p]",Langsam kam ich zurück.,,, "After this, we suddenly were besties. And my class finally started to just leave me be. ","[p]After this, we suddenly were besties. And my class finally started to just leave me be. ",Danach hatte ich plötzlich eine beste Freundin und endlich meine Ruhe.,,, Maybe because I for once was friends with another girl. Maybe because I scared them. Maybe both.,Maybe because I for once was friends with another girl. Maybe because I scared them. Maybe both.[/p],"Vielleicht, weil ich nun auch mit einem Mädchen befreundet war. Vielleicht weil die Mobber plötzlich Angst vor mir hatten. Vermutlich beides.",,, skip reading (hold),skip reading (hold),zum Ende springen (gedrückt halten),,, @@ -302,4 +302,4 @@ Collect Memento,Collect Memento,Erinnerung einsammeln,,, Order Thoughts,Order Thoughts,Gedanken sortieren,,, 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?,,, -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 nach Deutsch übersetzt.",,, \ No newline at end of file diff --git a/src/internationalisation.de.translation b/src/internationalisation.de.translation index c21720ad3216dcca12d3e2fac5be9823e2653a0c..e15bc05aa6fe93cea44517c57dcae84be89cb56e 100644 GIT binary patch delta 5698 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 delta 5889 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 LdL}JBt=InmjUU|_ diff --git a/src/internationalisation.en.translation b/src/internationalisation.en.translation index 9e99bba684aa1f077c42fe18ee9be7fce48d1f8b..0552d0273469c2f76ee1e948feee5883941cbe6c 100644 GIT binary patch delta 6668 zcmZu#30PIt7C!fa%!q<;7-SN-$YoSyyo8`4AfSXwm^>hIAV5GwF%*wlk|sH{HPlqf ze3rd52Og#(miZh}OwGshnSK#znyHyXnqA(%4rklZ@7>Sez1G@muX*oNZkhY;oE`Ht zmac*zbmQmCLbX2Zj@ClbE0Qp*kqRBBtizNw9c#8i7bxo#tW`h_FdwJ`>H)I;9@g~= zy+v7@ly#r7eu?#nAPkcaoKb`quwGJVGDN>lh5tzX zOtrrYbc>3ItD)V8AZSyBXO*=>SuZOq1=R)m7VtY@ROF^6)M}}>$zM~@PoX_jGGEXk zK%62Qi8UR_0&;*nfLy45lN4Fyb9=MF&r`|XG!fV!tv4>2jr6u6UxD>Kl@8fm4}Oy( z`$SoHVQo?9Ls*Xirxm^f>t%)RQdS<{4HbV+p&y$FlAMHK+LMf#veKbGpq*4a$-Kbp zRI(t@u|SGSMtY;ck5goMSc`x%g{OV~t1`vgvGBQ##o(7IvNc#YJ-7b}`0c=#zzN_C zzztqdXy#$=ocaWew%1>qq-60NPcnN&hDGoKoI&8~$Y|UZ5nRtCb5Tk|(H=tDhAn;L znV4W}L2v`_17NgdZDZwy)D5nN3t2qygKk3i zoj!PbKoh?L+_7#K}(60hKnZWAV7ys#u8vxm4z#-kFBNfi*9D(Z< zn7g)ynF~U1$Y4eoo;}p+G7Lw9&H;GLb4IlG)j^KWf+VzH0|k{gkDgk%FTkd!YE(^& zmtA){!b2qJETH?|pB{@m1R)f3Ccq88(6z^L5{f{MQM{+}?!`;nW+44U$X-&(3x^q- z7l5}G*bqzmfOIrqAXv(e=knR~dv=%m34%Lh^!W?(wmp~0@-0Ov#X=AeqwI`pf4KI8 zih2ZqV#+NKyqYtq7z~}(0X#vE>*qr2kWdI@gMhEr^gS}dQ4n4PT>(grzWFwuJ;}`g z&lBujT5-M3Ob}39y#PN?H>!8^S@%uI{VKl%? zzpuixhR&mka!#%1T_!ZZ@fx5NN?5XFr@E*+8jFo;|BIGT3z!AYRh}t|HQ1Q zho}|>K)r(j8DFIRxo#YKk9rCgY^t?qOsIEH$5GLz9ez@6va>gikc>w0{*jYptb1oo#F%Se(FQ_pNz6Zb{o5ukkZ{!kMk85lLZdU(?*mQq3T1hn*i|m zoPYYw+X`+_Yq}@bZ<3X2*=e_!9&e}ha4CO;3m1}#!Js1ShG%#Gxe~M#^ z7kFNuQ?H$reriH110hTTxTB5JtuL-a>xV&B0B{4#AD^w?i-747$^+&^y>jzB#sgz3 zznT2Jd13XMJCMghJ_g{I=7jMyI6?3Nf`ORp4&G1b0j5X^`mC3mAF@ze(d9nMJ_3^0 z0dBVZ(Z~P5&9xN+Vj)5+WUSb{J}wjyM1ZGp;@a`$mscNWjj$DuT2dVde7AdpNn;JW zVk=5N!7hVC0mi`mmp-zv!7jP$USIh4x8%^9m;LD&Dzsx}=27^`??$-^6AFRgw zQb)%D+?zpn+4o~i>{Q5>0lc6=hV4@EZ3t+n2+JN`mhuq^4GcZJ+`y!Ut3xUgC?-t? zmm7}FSgA*;=#GW}-0-GvrfoQb1n?Bd2_#swm&bbjHHbXXh&sb5eU*~w04Se+)o)cy zZ@iMACjb{SOpi1nn&+##xTc}kURG`=N};et0}uf4u+rTAJMSI_Wh7+NRq~(~G5!G3 zqZ*P29>!svOZRK=8V?yg@6l7v+=#`sjR8FxC>eEb=MCjGoe7?&*>UVFKX)nUCQ63vOvGP;m59 zpsSrWf0Hc(K@Fb_@F3!2dtbYR+d|V$-duL&MfOJWLqS&oyeQtWBSR9v(4Z0c`Iig^ zX=V@v6cPn7wbTCSHB1`~08Jn_V0bt?>ko7^6|zYxdC218{A>&XHQNW^h6_6V|Ez^k z8YV)*8&wCd!5}@n)LU+M{TtFFW&%<8zDn0DVuE`)8>8!nkoVN!s*J= zv_<$-(5z6_+(1p&OF|-Mo<2F*01xbF$I&5$;3*KQ#@^OHwwK`$Ij6hJ&o{S!w5kC- zT_*~Tjk33Ksl*VGfJ(&`e;l2fWXa0y#n+BwLMSBE`Kh~GYoGk^7;*}iFm2BsV?TsN z^`a@^VKwN__A5gjsOvPTlg<@QdJD$rYfKH}-u?)0%+Rwd_M+5*Im1ZFNpLGkKWK|) z!UTPL3H_G^c*J@C^?~A6ehf;ueNKsro_c=XQ=im45$-7piuStUWc5}k(50iI@$=XH zu4jOS(;$#QLpK4;t|wQ1Wh$hef7l+ zE5VSP3V?_6p99*B-UyTGPlZ?*al&5ON%36IJrx zKP*}phTM^6to+622ioSBn?Hh-nxzMLgS5Kr&e2dpCNk>VSB-gvU2zmA)FKX=Ai~k= zIh%)LREL13tH`Z}-2622WyBT$S+q*73tP1$7Cj#hnfeim{aZ0hU}K!b#3^v7gPETJ z%M**O%@Nx`Xve6m^gXpD%Na%CPaF5zYf<{>-`GJXQOdw$Mq@Pq;2DkCnegvqsL~A} zSOp*M3Psx9pb6Z{EywsK0}hXZtVSiD_P+h~8}LeRfclll9lCtyX!L;Yd?^5bgJokY z_M0UU!Fz4G_0&Umj51BkG=Mu4V;5yavgM)}@CHQma?u5^OgVP<1H7?xbIMfOEn=VQ zO{`rMW2PhcMC{}Od~EG{ADH_F3hxgY?d@GU!DAQn=<1Nq8E3DK_hWX>VvGlBK&jAc z**bKYXM;Q%Jr`=&fM3&dl-o|N;*tK=nzT5TL$U27T!zyO_0m7eXE!oH2r<9EaS+TAQC7#a-!&-{P0@1Z@9KE^?M z`{mwRQ9)l!v~D zG=w>}x#>CHJ%PymVG~`g1KePWJmSd`wEeEWavZheJb5Afv)C&83%1-)g8>vO_bs>1UMj}B zV_N(xt{dKR!B2Inc0@>95R~}s;rix3{`^%0^r%e~KbI%lP0sg5?Wt1_IoGX~>N{C*+3PBEJWe7Cro1yzy_1iT!sw_dllTV^~^O zkhCUh{Pv6}kK2p4Sg>2}x!N<8EZyS_mffD7E3_Jm-8;OenwoTLN|>8&xW#{Us z*)IHRv=w`(OVI?e1piO87CLsrKa0IEaE#XI&sGkcYB%=3!+duOM!}f+_g^d_vkcg$ z*~R`9aGn%4>J5F%XiqQ}Z}yp~b8;q?U-T}tX&o2{f3Yk!(8ts0?=yB{?ULkd+fAA@ zgN2RLBAiP1`{+>e0{O_oz%dcfX~+mKGfwFohm6BHm(W57xYw2kT*%DIyHfKYYHYAxTgFy~eg_L>VWLLM>cYsw*|1Ug z+kMay%>(xNpdiqf28HAAK7&`0(XE5$ff*PcXuH0oF9dRKD27=AXUpJ=u$QAIhGEM#{QSWi6U6XhCi=c*iUt1(hi0p5Arf5d+1GXq~ zFvZmp>EVrY-X`xYFEEz)iBp0FgPEDLqbN6DZX{m@^r(NpItPL)j UvfX}$`&wK1p{1G58k;rze`IGvxBvhE delta 6804 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 diff --git a/src/internationalisation.es.translation b/src/internationalisation.es.translation index cd6b9f26183c50957190afbc6612f933db77a5d3..e51d05eb30b6e614b3149696651ca781668f0dc7 100644 GIT binary patch literal 7405 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 diff --git a/src/internationalisation.ja.translation b/src/internationalisation.ja.translation index 361d09a3032fee7dd0eaea22ce0ff6a215bd95e7..f30c956e924e2c42148550d5565d57ce6003b21d 100644 GIT binary patch literal 7405 zcmd^^d05Ts7RQqYB9*B@l4&D}bCFahp%M+8jl}JghOI&EvUiFMB_t#>2}S0qqmZFw zyhR!)l8)QCDpArQV@`6{uk$W-%}v@V>u2mw2XlvJ$&gzze1Z z)(dQUSa@JaV3fpfmdsl!5B3fZ43z@@^XdrhQJ<)ms=gv3)Jx(MvNS?zn2-zC zU)~T^SQKss`XKN2n`jJZE!2KfxB&kb6K=RRm;qZG#K}=;^Ie*-+)?1oS!~VxB<7vL zyRmpa^9#TWHzNux1}qLN0ZeGT3;aG7A7%bL^H-R^4nB{?_n9vT|CGhJ!D^;o65hn( z_u#(}jx~Z89wQAfZ7>5cV=!Ddf!G4fhA>{8NQ>A%|You->SU(+v7EW6H{K z55ana8G_MTj0Z426udc$ZJBofKZC`X@5c0e1&-^258|waF&4#Hivbn~wuPS9z4B)9DEh5YmVoNYb!h}3m(6box z1RnqD3qLF7Cy|$fBIMyHBb092$@Zojtew&HL z^BdKdjTF8MV80tlI(b<{NB0`!RZBGHbqfxwAI{;CXSI_nIQ()}-nQ+8<380iN}i7= ze3JCAcpK3;ujjSajB_0R`k9mCY7Q^nwD8+*4wq!@3}49ME~_2(KBja)SD&FsO1V}178ol(MfK+H2Nh!_`3 zH1bPMUz2ALj`c>Tp>za))tybn9` z-S;>W?x9)UcRtaWH)KIC;cMLY{S^h?ds$61uB9yMQhAbatl#{lG~q7c%f@*({*!2| zSNDlbsv;a8hk`cY+4Z0K$kgZ%mNO#x+C8z{Eosr z?3?x=WPc>#ww+2s>xss5j*TlakrQ6*J9x)VqAOig^7a#rbK;|RtIp-{t?3JM`g6Eb zpI=uNaJXrXu8lq6xUbtH{r2C5IL~6i{f2uaZ{f7EjF&{?xhskfYEC6Q+axi?k7(@Y zvM7D?bHcIygvF*L9m0E09HzB}Xsmx!S9qc{Y~aUYsIa zKhx9vA4KDv{+14A283h%94o8E7z?@n)!p;glRT`q`m{uRfy2$>gS-+6$6oWRhkW%X z+;(;NwX;NH-+il_`$#!_Zo0Fr6#=Z{C>y}$`_=+a;s_uki z-$J91<=qG`mIXWABpUlh)y`4+m2j-jugD*xM)>92Khlke#`>(1LpwA$Tr*9(?<@{~ z?mE@Jgu^Y24Sh!wj{9iZ(^_Lec*w#goZ#uJV8^@Hoqdl8QH zu5wwu1L1|MI+@fEjqeLnd~?^#CR}wwqW zD>z&*7r~)~gqHaOy|6%<)e16{4{|M^`(t3x~_qSBI4nj;{}`ZdaGDB>eKmxkhC~ z%S-EKzakpz0?+QLw<0`uLSnziL{A#<*7;vVE(B?~X>xe6+OgOO!trsCmh@Ragzz5XimaJL4_@=g{TR_W$FZ|0GMK}EFt|`) z!{O`Ss07{S@D+Aug?b#W{`}Pq+#}8u{1h#TmnX@``x8BGf8qRa)M~=p<>qH ad75xFh=tdGGuZ#*r4EM{?u{7!(fMzXIAGrZ literal 7461 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 Date: Mon, 31 Mar 2025 13:01:07 +0200 Subject: [PATCH 05/10] implement provisional bug button --- src/dev-util/bug_button.gd | 29 +++++++++++++++++++++++++++++ src/dev-util/bug_button.gd.uid | 1 + src/dev-util/bug_button.tscn | 11 +++++++++++ src/main.tscn | 8 +++++++- src/main_menu.tscn | 8 +++++++- src/project.godot | 2 ++ 6 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 src/dev-util/bug_button.gd create mode 100644 src/dev-util/bug_button.gd.uid create mode 100644 src/dev-util/bug_button.tscn diff --git a/src/dev-util/bug_button.gd b/src/dev-util/bug_button.gd new file mode 100644 index 0000000..80748c1 --- /dev/null +++ b/src/dev-util/bug_button.gd @@ -0,0 +1,29 @@ +class_name BugButton extends Button + +func _ready() -> void: + pressed.connect(create_bug_report) + text = "copy Debug Info & open Log" + tooltip_text = "Get what is nessecary to create a Bug Report in the Steam Community Forums" + +func create_bug_report(): + OS.shell_show_in_file_manager(ProjectSettings.globalize_path(ProjectSettings.get_setting("debug/file_logging/log_path"))) + var debug_text:String = """Help us identify the bug by + 1. Telling us what you did before it happened + 2. Describing what you expected to happen and what ended up happening + 3. Attaching a screenshot if possible + 4. Attaching the Log file that should have popped up on your screen. + 5. Leaving in this information: + + OS: %s + GPU: %s + Current Focus: %s + Current Scene: %s + Mementos: %s + """ % [OS.get_name(), OS.get_video_adapter_driver_info(), State.stage_list, State.current_room, Scenes.completed_sequences] + + + #debug_text = debug_text.replace(" ", "%20").replace("\n", "%0A").replace("\t", "") + DisplayServer.clipboard_set(debug_text) + + + #print("mailto:support@polynormal.games?subject=Frame%20of%20Mind%20Demo%20-%20Bug%20Report&body=" + debug_text) diff --git a/src/dev-util/bug_button.gd.uid b/src/dev-util/bug_button.gd.uid new file mode 100644 index 0000000..1d8f1e8 --- /dev/null +++ b/src/dev-util/bug_button.gd.uid @@ -0,0 +1 @@ +uid://sa15wakvpj2e diff --git a/src/dev-util/bug_button.tscn b/src/dev-util/bug_button.tscn new file mode 100644 index 0000000..343f81e --- /dev/null +++ b/src/dev-util/bug_button.tscn @@ -0,0 +1,11 @@ +[gd_scene load_steps=2 format=3 uid="uid://bcce5c1o6g13w"] + +[ext_resource type="Script" uid="uid://sa15wakvpj2e" path="res://dev-util/bug_button.gd" id="1_jjjqg"] + +[node name="BugButton" type="Button"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_jjjqg") diff --git a/src/main.tscn b/src/main.tscn index 429a83a..8709041 100644 --- a/src/main.tscn +++ b/src/main.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=76 format=3 uid="uid://befxf8uruwnrl"] +[gd_scene load_steps=77 format=3 uid="uid://befxf8uruwnrl"] [ext_resource type="Script" uid="uid://k8yppfbkq0xv" path="res://main.gd" id="1_rqkns"] [ext_resource type="PackedScene" uid="uid://gldtxysavetf" path="res://logic-scenes/startup/startup.tscn" id="1_v5rpm"] @@ -21,6 +21,7 @@ [ext_resource type="Script" uid="uid://ladew4bsypon" path="res://addons/markdownlabel/header_formats/h6_format.gd" id="16_isrq1"] [ext_resource type="Texture2D" uid="uid://d3ewjumh0b0g6" path="res://logic-scenes/main menu/logo.png" id="19_madrp"] [ext_resource type="Texture2D" uid="uid://sfo05h6uah7b" path="res://import/interface-elements/USK_12.svg" id="20_ku514"] +[ext_resource type="Script" uid="uid://sa15wakvpj2e" path="res://dev-util/bug_button.gd" id="22_ryguw"] [sub_resource type="GDScript" id="GDScript_8sq0u"] script/source = "extends Label @@ -1732,6 +1733,11 @@ 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 diff --git a/src/main_menu.tscn b/src/main_menu.tscn index d153130..ed1ea4f 100644 --- a/src/main_menu.tscn +++ b/src/main_menu.tscn @@ -1,9 +1,10 @@ -[gd_scene load_steps=17 format=3 uid="uid://b51wdql4mby47"] +[gd_scene load_steps=18 format=3 uid="uid://b51wdql4mby47"] [ext_resource type="Theme" uid="uid://b056fn288p8ha" path="res://logic-scenes/themes/handwriting.theme" id="1_2dg4n"] [ext_resource type="Script" uid="uid://c3o65t2rwpbtn" path="res://logic-scenes/main menu/main_menu.gd" id="2_rm576"] [ext_resource type="PackedScene" uid="uid://gmxenhavh1lp" path="res://logic-scenes/main menu/video_settings.tscn" id="3_f0dcd"] [ext_resource type="Texture2D" uid="uid://d3ewjumh0b0g6" path="res://logic-scenes/main menu/logo.png" id="3_xb2np"] +[ext_resource type="Script" uid="uid://sa15wakvpj2e" path="res://dev-util/bug_button.gd" id="4_j5v2v"] [ext_resource type="Script" uid="uid://byiih47fi6740" path="res://dev-util/settings_popup.gd" id="4_k8jo0"] [ext_resource type="PackedScene" uid="uid://dfhkfocy8axb8" path="res://logic-scenes/main menu/audio_settings.tscn" id="4_o07mg"] [ext_resource type="Script" uid="uid://0tb763w0vfv7" path="res://tab_container.gd" id="5_lhfti"] @@ -316,6 +317,11 @@ layout_mode = 2 tooltip_text = "Plays the Game Credits" text = "Attribution" +[node name="BugButton" type="Button" parent="PanelContainer"] +layout_mode = 2 +script = ExtResource("4_j5v2v") +metadata/_custom_type_script = "uid://sa15wakvpj2e" + [node name="QuitButton" type="Button" parent="PanelContainer"] layout_mode = 2 text = "quit" diff --git a/src/project.godot b/src/project.godot index fff0427..e102269 100644 --- a/src/project.godot +++ b/src/project.godot @@ -31,6 +31,8 @@ PromptManager="*res://addons/input_prompts/input_prompt_manager.gd" [debug] +file_logging/enable_file_logging=true +file_logging/log_path="user://logs/frame-of-mind.log" gdscript/warnings/native_method_override=0 [display] From ff8145a097e710653856aef7230862540b6f7233 Mon Sep 17 00:00:00 2001 From: betalars Date: Mon, 31 Mar 2025 21:31:09 +0200 Subject: [PATCH 06/10] WIP: adding recovery to cardboard --- src/dev-util/devs_board.gd | 2 + src/logic-scenes/board/card-board.gd | 113 +++++++++++++++++++--- src/logic-scenes/board/card.gd | 2 +- src/logic-scenes/board/physics-board.tscn | 2 + 4 files changed, 105 insertions(+), 14 deletions(-) diff --git a/src/dev-util/devs_board.gd b/src/dev-util/devs_board.gd index 35aa091..dc14a30 100644 --- a/src/dev-util/devs_board.gd +++ b/src/dev-util/devs_board.gd @@ -1,5 +1,6 @@ extends Control +# used to display cards during picking func get_cards_by_scene_id(id: int) -> Array: var output:Array @@ -18,6 +19,7 @@ func get_cards_by_scene_id(id: int) -> Array: return output +# used to put cards on the dev board func get_cards_by_name_array(names: Array) -> Dictionary: var output:Dictionary = { "cards": [], diff --git a/src/logic-scenes/board/card-board.gd b/src/logic-scenes/board/card-board.gd index 1a07d71..450d279 100644 --- a/src/logic-scenes/board/card-board.gd +++ b/src/logic-scenes/board/card-board.gd @@ -1,12 +1,12 @@ class_name CardBoard extends PanelContainer -#var area_dict = { -# "dropzone_content": [], -# "cards": [], -# "sticky_notes_in_list": [], -# "sticky_note_panels": [] -#} enum {NAVIGATE, ASSIGN, DRAG} +enum Error { + OK, + OUT_OF_BOUNDS, + ILLEGAL_STATE, + MISSING +} var focus_stickies:bool = true: set(stickies): @@ -57,6 +57,7 @@ var dropzone_size: Vector2 # pass current_context = context @onready var instructions = $instructions_panel/HBoxContainer/cards_remaining +@onready var timer: Timer = $Timer var mementos_collected: int = 0: set(mementos): @@ -110,7 +111,8 @@ var mementos_collected: int = 0: if sticky_note_container.get_child(i).get_child_count() == 1: currently_active_node = sticky_note_container.get_child(i).get_child(0) -var cache: Array = [] +var last_save_dict: Dictionary +var text_recovery: Dictionary signal board_completed @@ -128,6 +130,12 @@ func _ready(): has_stage = has_stage get_viewport().gui_focus_changed.connect(reclaim_lost_focus) + + timer.timeout.connect(validate_board) + timer.start() + + await get_tree().process_frame + last_save_dict = get_save_dict() func reclaim_lost_focus(): @@ -212,9 +220,10 @@ func handle_mouse_button(input: InputEventMouseButton, to_handle = currently_act return else: area.attach_sticky_note(to_handle) - sticky_note_container.get_child(current_sticky_note_id).clear_if_empty() + if sticky_note_container.get_child_count() > 0: + sticky_note_container.get_child(current_sticky_note_id).clear_if_empty() current_context = NAVIGATE - if is_board_complete(): emit_signal("board_completed") + if is_board_complete(): board_completed.emit() return else: var i: int = 0 @@ -234,7 +243,10 @@ func handle_mouse_button(input: InputEventMouseButton, to_handle = currently_act ## Dropping Cards and Sticky Notes not causing a return condition above. if not (to_handle is StickyNote and to_handle.is_sticky_note_attached()): - insert_area(dropzone, to_handle) + if to_handle.get_parent() is Card: + insert_area(to_handle.get_parent().remove_sticky_note(), to_handle) + else: + insert_area(dropzone, to_handle) current_context = NAVIGATE focus_stickies = false current_dropzone_id = dropzone.get_children().find(to_handle) @@ -294,6 +306,9 @@ func insert_area(parent: Control, node: Area2D): while children[i].global_position.y < node.global_position.y and i+1 < children.size(): i+=1 parent.move_child(node, i) + + if node is StickyNote: + node.attached_to = self # Takes the inputs for control inputs func _input(event): @@ -389,7 +404,6 @@ func on_sticky_panel_cleared(): if current_sticky_note_id == sticky_note_container.get_child_count() - 1: current_sticky_note_id -= 1 - func get_save_dict() -> Dictionary: var cards: Dictionary = {} var stickies: Dictionary = {} @@ -410,10 +424,15 @@ func get_save_dict() -> Dictionary: "stickies": stickies } if cards != {} and stickies != {} else {} + func initialise_from_save(savegame: SaveGame): + last_save_dict = savegame.board_state.duplicate() if savegame.board_state == {}: return - var cards: Dictionary = savegame.board_state["cards"] - var stickies: Dictionary = savegame.board_state["stickies"] + rebuild_from_savedict(savegame.board_state) + +func rebuild_from_savedict(board_state:Dictionary): + var cards: Dictionary = board_state["cards"] + var stickies: Dictionary = board_state["stickies"] var card_pile = board_of_devs.get_cards_by_name_array(cards.keys() + (stickies.keys())) @@ -421,7 +440,9 @@ func initialise_from_save(savegame: SaveGame): add_card(card) card.transform.origin = cards[card.name] cards[card.name] = card + text_recovery[card.name] = card.text for sticky:StickyNote in card_pile["sticky_notes"]: + text_recovery[sticky.name] = sticky.text if stickies[sticky.name] == -1: add_sticky_note(sticky) if stickies[sticky.name] is String: @@ -429,3 +450,69 @@ func initialise_from_save(savegame: SaveGame): else: insert_area(dropzone, sticky) sticky.transform.origin = stickies[sticky.name] + +func validate_board(): + if current_context == NAVIGATE: + + var needs_rebuild = false + for node in dropzone.get_children(): + if node is Card: + match validate_card(node): + Error.OUT_OF_BOUNDS: + node.position = last_save_dict[node.name] + Error.ILLEGAL_STATE: + needs_rebuild = true + if node is StickyNote: + match validate_sticky(node): + Error.OUT_OF_BOUNDS: + node.position = last_save_dict[node.name] + Error.ILLEGAL_STATE: + needs_rebuild = true + for panel:StickyNotePanel in sticky_note_container.get_children(): + if panel.attached_sticky_note != null: + match validate_sticky(panel.attached_sticky_note): + Error.OUT_OF_BOUNDS: + panel.attached_sticky_note.position = panel.ancor_position + Error.ILLEGAL_STATE: + needs_rebuild = true + + # FIXME: currently, illegal temporary state exists a lot and needs to be rectified before this can be trusted. + if needs_rebuild and false: + remove_child(board_of_devs) + + for child in dropzone.get_children(): child.free() + for child in sticky_note_container.get_children(): child.free() + + board_of_devs = preload("res://dev-util/board of devs.tscn").instantiate() + add_child(board_of_devs) + rebuild_from_savedict(last_save_dict) + + current_dropzone_id = 0 + current_sticky_note_id = 0 + focus_stickies = false + current_context = NAVIGATE + else: + last_save_dict = get_save_dict() + +func validate_sticky(note: StickyNote) -> CardBoard.Error: + if not get_viewport_rect().has_point(note.get_global_transform().origin): + return Error.OUT_OF_BOUNDS + if note.attached_to is StickyNotePanel: + if note.position != note.attached_to.ancor_position: + return Error.OUT_OF_BOUNDS + if (note.on_board and not is_in_dropzone(note)): + return Error.ILLEGAL_STATE + if not ((note.attached_to == self and dropzone.get_children().has(note)) or note.attached_to == note.get_parent()) or note.shift_tween != null: + return Error.ILLEGAL_STATE + + return Error.OK + +func validate_card(card: Card) -> CardBoard.Error: + if not is_in_dropzone(card): + return Error.OUT_OF_BOUNDS + if card.get_attached_sticky_note() != card.current_sticky_note: + #push_error("Card %s claims to have %s as current sticky note but has %s attached." % [card.name, card.current_sticky_note, card.get_attached_sticky_note()]) + return Error.ILLEGAL_STATE + if not card.owner == self: + return Error.ILLEGAL_STATE + return CardBoard.Error.OK diff --git a/src/logic-scenes/board/card.gd b/src/logic-scenes/board/card.gd index e0201ee..163c908 100644 --- a/src/logic-scenes/board/card.gd +++ b/src/logic-scenes/board/card.gd @@ -212,7 +212,7 @@ func remove_sticky_note() -> StickyNote: former_child.reparent(get_parent()) former_child.owner = self.owner former_child.on_board = true - former_child.attached_to = null + former_child.attached_to = owner return former_child func exchange_sticky_note_with(new_note: StickyNote) -> StickyNote: diff --git a/src/logic-scenes/board/physics-board.tscn b/src/logic-scenes/board/physics-board.tscn index 2032b98..6083d18 100644 --- a/src/logic-scenes/board/physics-board.tscn +++ b/src/logic-scenes/board/physics-board.tscn @@ -132,3 +132,5 @@ vertical_alignment = 1 [node name="VSeparator" type="VSeparator" parent="instructions_panel/HBoxContainer"] custom_minimum_size = Vector2(15, 0) layout_mode = 2 + +[node name="Timer" type="Timer" parent="."] From 00d783a2ba4a810a96f827f1e57476c8356417fb Mon Sep 17 00:00:00 2001 From: betalars Date: Fri, 4 Apr 2025 19:27:57 +0200 Subject: [PATCH 07/10] debug-me comitting broken state for debug purposes --- src/dev-util/board of devs.tscn | 43 ++++++++++-------- src/dev-util/steamworks.gd | 5 ++- src/logic-scenes/board/card.gd | 10 ++--- src/logic-scenes/board/card.gd.uid | 2 +- src/logic-scenes/board/card.tscn | 32 ++++++-------- src/logic-scenes/board/void_card.tres | 3 +- src/logic-scenes/board/void_card.tscn | 64 +++++++++++++-------------- src/project.godot | 2 +- 8 files changed, 80 insertions(+), 81 deletions(-) diff --git a/src/dev-util/board of devs.tscn b/src/dev-util/board of devs.tscn index 94b5d5e..d3218ce 100644 --- a/src/dev-util/board of devs.tscn +++ b/src/dev-util/board of devs.tscn @@ -3,7 +3,7 @@ [ext_resource type="Script" uid="uid://b6xp63orcmjq8" path="res://dev-util/devs_board.gd" id="1_ols6o"] [ext_resource type="PackedScene" uid="uid://dy5rd437h5hsw" path="res://logic-scenes/board/card.tscn" id="1_xrckx"] [ext_resource type="PackedScene" uid="uid://vkcdj8c3ytbq" path="res://logic-scenes/board/sticky-note.tscn" id="2_ucudl"] -[ext_resource type="PackedScene" uid="uid://dp4eps03igd3w" path="res://logic-scenes/board/void_card.tscn" id="4_b7cny"] +[ext_resource type="PackedScene" uid="uid://vqwep0whfb0o" path="res://logic-scenes/board/void_card.tscn" id="4_b7cny"] [node name="board of devs" type="Control"] layout_mode = 3 @@ -22,6 +22,7 @@ offset_right = 230.0 offset_bottom = 181.0 [node name="c_out-of-world" parent="draeven" instance=ExtResource("1_xrckx")] +position = Vector2(2, -6) text = "I feel like I am not from of this world" [node name="p_unique" parent="draeven/c_out-of-world" groups=["c_comic_heroes", "c_confusion", "c_hit", "c_homework", "c_joy", "c_out-of-world", "c_teachers"] instance=ExtResource("2_ucudl")] @@ -33,7 +34,7 @@ position = Vector2(-32, 140) text = "I am thankful for the few friends that get me" [node name="c_rejection" parent="draeven" instance=ExtResource("1_xrckx")] -position = Vector2(0, 300) +position = Vector2(9, 294) text = "I fear being rejected" [node name="p_friends" parent="draeven/c_rejection" groups=["c_boy_stuff", "c_comic_heroes", "c_fighting", "c_homework", "c_joy", "c_out-of-world", "c_rejection", "c_teachers"] instance=ExtResource("2_ucudl")] @@ -45,7 +46,7 @@ position = Vector2(-32, 140) text = "I'm afraid I will just get laughed at" [node name="c_confusion" parent="draeven" instance=ExtResource("1_xrckx")] -position = Vector2(0, 600) +position = Vector2(11, 593) text = "I am just too many things at once" [node name="p_inner_conflict" parent="draeven/c_confusion" groups=["c_boy_stuff", "c_confusion", "c_fighting", "c_homework", "c_rejection", "c_teasing"] instance=ExtResource("2_ucudl")] @@ -64,6 +65,7 @@ offset_right = 594.0 offset_bottom = 181.0 [node name="c_homework" parent="childhood" instance=ExtResource("1_xrckx")] +position = Vector2(4, -6) text = "I never put in much effort for homework" [node name="p_good_grades" parent="childhood/c_homework" groups=["c_body", "c_boy_stuff", "c_homework", "c_out-of-world", "c_rejection", "c_teachers"] instance=ExtResource("2_ucudl")] @@ -75,7 +77,7 @@ position = Vector2(-32, 140) text = "my peers were upset about that." [node name="c_teachers" parent="childhood" instance=ExtResource("1_xrckx")] -position = Vector2(0, 300) +position = Vector2(9, 291) text = "I like my teachers more than my classmates" [node name="p_volunteering" parent="childhood/c_teachers" groups=["c_boy_stuff", "c_comic_heroes", "c_joy", "c_teachers"] instance=ExtResource("2_ucudl")] @@ -87,7 +89,7 @@ position = Vector2(-32, 140) text = "maybe I want to become a teacher." [node name="c_joy" parent="childhood" instance=ExtResource("1_xrckx")] -position = Vector2(0, 600) +position = Vector2(11, 595) text = "I can put ages into things I enjoy" [node name="p_worried_mother" parent="childhood/c_joy" groups=["c_body", "c_boy_stuff", "c_comic_heroes", "c_fighting", "c_homework", "c_joy", "c_teachers", "c_teasing"] instance=ExtResource("2_ucudl")] @@ -106,6 +108,7 @@ offset_right = 904.0 offset_bottom = 141.0 [node name="c_comic_heroes" parent="voice_training" instance=ExtResource("1_xrckx")] +position = Vector2(9, -7) text = "Comic heroes are my role models " [node name="p_effort" parent="voice_training/c_comic_heroes" groups=["c_comic_heroes", "c_hit", "c_homework", "c_joy", "c_teachers", "c_teasing"] instance=ExtResource("2_ucudl")] @@ -117,7 +120,7 @@ position = Vector2(-32, 140) text = "and I want to be like agent q!" [node name="c_boy_stuff" parent="voice_training" instance=ExtResource("1_xrckx")] -position = Vector2(0, 300) +position = Vector2(8, 301) text = "I like boy stuff" [node name="p_pretending" parent="voice_training/c_boy_stuff" groups=["c_body", "c_boy_stuff", "c_hit", "c_homework", "c_joy", "c_teachers", "c_teasing"] instance=ExtResource("2_ucudl")] @@ -129,7 +132,7 @@ position = Vector2(-32, 140) text = "and girls don't get that." [node name="c_teasing" parent="voice_training" node_paths=PackedStringArray("evil_sticky_notes") instance=ExtResource("1_xrckx")] -position = Vector2(0, 600) +position = Vector2(6, 598) evil_sticky_notes = [NodePath("../../childhood/c_joy/p_thomas")] text = "When Jojo got teased for trying, I pretty much exploded" @@ -149,6 +152,7 @@ offset_right = 1254.0 offset_bottom = 141.0 [node name="c_fighting" parent="juijutsu" instance=ExtResource("1_xrckx")] +position = Vector2(-2, -13) text = "I stopped doing Jiu Jitsu." [node name="p_body" parent="juijutsu/c_fighting" groups=["c_boy_stuff", "c_confusion", "c_fighting", "c_out-of-world"] instance=ExtResource("2_ucudl")] @@ -160,18 +164,10 @@ position = Vector2(-32, 140) text = "I just hate being treated like a girl" [node name="c_void" parent="juijutsu" instance=ExtResource("4_b7cny")] -position = Vector2(0, 600) - -[node name="p_wet" parent="juijutsu/c_void" groups=["c_void"] instance=ExtResource("2_ucudl")] -position = Vector2(-32, 50) -text = "I was wet, so I must have been into it." - -[node name="p_stop" parent="juijutsu/c_void" groups=["c_void"] instance=ExtResource("2_ucudl")] -position = Vector2(-32, 140) -text = "I didn't say stop." +position = Vector2(16, 598) [node name="c_hit" parent="juijutsu" node_paths=PackedStringArray("evil_sticky_notes") instance=ExtResource("1_xrckx")] -position = Vector2(0, 300) +position = Vector2(15, 297) evil_sticky_notes = [NodePath("../../childhood/c_teachers/p_becoming_teacher")] text = "I know how to properly hit people" @@ -183,6 +179,14 @@ text = "that gives me a lot of confidence." position = Vector2(-32, 140) text = "and that’s a great vent." +[node name="p_wet" parent="juijutsu/c_hit" groups=["c_void"] instance=ExtResource("2_ucudl")] +position = Vector2(-31, 351) +text = "I was wet, so I must have been into it." + +[node name="p_stop" parent="juijutsu/c_hit" groups=["c_void"] instance=ExtResource("2_ucudl")] +position = Vector2(-31, 441) +text = "I didn't say stop." + [node name="test2" type="Control" parent="."] anchors_preset = 0 offset_left = 1610.0 @@ -191,6 +195,7 @@ offset_right = 1650.0 offset_bottom = 181.0 [node name="c_random1" parent="test2" instance=ExtResource("1_xrckx")] +position = Vector2(12, 1) [node name="p_random11" parent="test2/c_random1" groups=["c_boy_stuff"] instance=ExtResource("2_ucudl")] position = Vector2(-32, 50) @@ -201,7 +206,7 @@ position = Vector2(-32, 140) text = "random 1" [node name="c_pick" parent="test2" instance=ExtResource("1_xrckx")] -position = Vector2(0, 300) +position = Vector2(14, 301) [node name="p_pick" parent="test2/c_pick" groups=["c_boy_stuff", "c_comic_heroes", "c_homework", "c_joy"] instance=ExtResource("2_ucudl")] position = Vector2(-32, 50) @@ -212,7 +217,7 @@ position = Vector2(-32, 140) text = "you done goofed" [node name="c_random2" parent="test2" instance=ExtResource("1_xrckx")] -position = Vector2(0, 600) +position = Vector2(17, 600) [node name="p_random21" parent="test2/c_random2" groups=["c_void"] instance=ExtResource("2_ucudl")] position = Vector2(-32, 50) diff --git a/src/dev-util/steamworks.gd b/src/dev-util/steamworks.gd index 39b863e..5922ba6 100644 --- a/src/dev-util/steamworks.gd +++ b/src/dev-util/steamworks.gd @@ -1,5 +1,6 @@ extends Node func _ready() -> void: - var initialize_response: Dictionary = Steam.steamInitEx() - print("Did Steam initialize?: %s " % initialize_response) + pass + #var initialize_response: Dictionary = Steam.steamInitEx() + #print("Did Steam initialize?: %s " % initialize_response) diff --git a/src/logic-scenes/board/card.gd b/src/logic-scenes/board/card.gd index 163c908..206771f 100644 --- a/src/logic-scenes/board/card.gd +++ b/src/logic-scenes/board/card.gd @@ -1,5 +1,4 @@ @tool - extends Area2D class_name Card var compatible_sticky_notes: Array[StickyNote] = [] @@ -98,8 +97,8 @@ func _ready(): %BackgroundSprite.frame = text.hash() % %BackgroundSprite.sprite_frames.get_frame_count(%BackgroundSprite.animation) $Label.text = self.text - $Label.theme = State.current_main_theme - State.theme_changed.connect(func change_theme(new_theme): $Label.theme = new_theme) + #$Label.theme = State.current_main_theme + #State.theme_changed.connect(func change_theme(new_theme): $Label.theme = new_theme) wiggle_pos = float(text.hash() % 100) if not Engine.is_editor_hint(): @@ -200,8 +199,9 @@ func attach_sticky_note(sticky_note: StickyNote) -> bool: sticky_note.attached_to = self if name == "c_hit" and sticky_note.name == "p_effort": - Steam.setAchievement("FIGHT_FOR_GOOD") - Steam.storeStats() + #Steam.setAchievement("FIGHT_FOR_GOOD") + #Steam.storeStats() + pass return true diff --git a/src/logic-scenes/board/card.gd.uid b/src/logic-scenes/board/card.gd.uid index ab33aaa..ffd9391 100644 --- a/src/logic-scenes/board/card.gd.uid +++ b/src/logic-scenes/board/card.gd.uid @@ -1 +1 @@ -uid://wv72dum1fe72 +uid://2loic2eeec5b diff --git a/src/logic-scenes/board/card.tscn b/src/logic-scenes/board/card.tscn index 414bfa2..965f760 100644 --- a/src/logic-scenes/board/card.tscn +++ b/src/logic-scenes/board/card.tscn @@ -1,50 +1,49 @@ -[gd_scene load_steps=11 format=3 uid="uid://dy5rd437h5hsw"] +[gd_scene load_steps=10 format=3 uid="uid://dy5rd437h5hsw"] -[ext_resource type="Script" uid="uid://wv72dum1fe72" path="res://logic-scenes/board/card.gd" id="1_emip0"] +[ext_resource type="Script" uid="uid://2loic2eeec5b" path="res://logic-scenes/board/card.gd" id="1_emip0"] [ext_resource type="Texture2D" uid="uid://sv0nhkkur1tt" path="res://logic-scenes/board/card-textures/cardsheet.png" id="2_ioijn"] -[ext_resource type="Theme" uid="uid://b056fn288p8ha" path="res://logic-scenes/themes/handwriting.theme" id="3_1x4uh"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_foovg"] radius = 110.0 height = 336.0 -[sub_resource type="AtlasTexture" id="AtlasTexture_ykk13"] +[sub_resource type="AtlasTexture" id="AtlasTexture_mdi7r"] atlas = ExtResource("2_ioijn") region = Rect2(0, 0, 600, 440) -[sub_resource type="AtlasTexture" id="AtlasTexture_l43eo"] +[sub_resource type="AtlasTexture" id="AtlasTexture_e1q5p"] atlas = ExtResource("2_ioijn") region = Rect2(600, 0, 600, 440) -[sub_resource type="AtlasTexture" id="AtlasTexture_x2vcn"] +[sub_resource type="AtlasTexture" id="AtlasTexture_nu76f"] atlas = ExtResource("2_ioijn") region = Rect2(0, 440, 600, 440) -[sub_resource type="AtlasTexture" id="AtlasTexture_e7401"] +[sub_resource type="AtlasTexture" id="AtlasTexture_es87b"] atlas = ExtResource("2_ioijn") region = Rect2(600, 440, 600, 440) -[sub_resource type="AtlasTexture" id="AtlasTexture_j7wh6"] +[sub_resource type="AtlasTexture" id="AtlasTexture_7bi75"] atlas = ExtResource("2_ioijn") region = Rect2(0, 880, 600, 440) -[sub_resource type="SpriteFrames" id="SpriteFrames_ckivt"] +[sub_resource type="SpriteFrames" id="SpriteFrames_hkrkt"] animations = [{ "frames": [{ "duration": 1.0, -"texture": SubResource("AtlasTexture_ykk13") +"texture": SubResource("AtlasTexture_mdi7r") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_l43eo") +"texture": SubResource("AtlasTexture_e1q5p") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_x2vcn") +"texture": SubResource("AtlasTexture_nu76f") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_e7401") +"texture": SubResource("AtlasTexture_es87b") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_j7wh6") +"texture": SubResource("AtlasTexture_7bi75") }], "loop": true, "name": &"default", @@ -56,7 +55,6 @@ script = ExtResource("1_emip0") metadata/type = "card" [node name="CollisionShape2D" type="CollisionShape2D" parent="."] -position = Vector2(-0.0713516, 0.997451) rotation = 1.5708 shape = SubResource("CapsuleShape2D_foovg") @@ -64,7 +62,7 @@ shape = SubResource("CapsuleShape2D_foovg") unique_name_in_owner = true clip_children = 2 scale = Vector2(0.6, 0.6) -sprite_frames = SubResource("SpriteFrames_ckivt") +sprite_frames = SubResource("SpriteFrames_hkrkt") frame = 1 [node name="Label" type="Label" parent="."] @@ -80,8 +78,6 @@ offset_bottom = 88.0 grow_horizontal = 2 grow_vertical = 2 rotation = 0.00872665 -theme = ExtResource("3_1x4uh") -theme_type_variation = &"card_text" autowrap_mode = 3 [node name="StickyNoteAncor" type="Node2D" parent="."] diff --git a/src/logic-scenes/board/void_card.tres b/src/logic-scenes/board/void_card.tres index adee4cf..cf7168d 100644 --- a/src/logic-scenes/board/void_card.tres +++ b/src/logic-scenes/board/void_card.tres @@ -6,6 +6,8 @@ input_name = "color" [resource] code = "shader_type canvas_item; +render_mode blend_mix; + @@ -20,7 +22,6 @@ void fragment() { } " -graph_offset = Vector2(-496.091, 53.946) mode = 1 flags/light_only = false nodes/fragment/2/node = SubResource("VisualShaderNodeInput_i5j4e") diff --git a/src/logic-scenes/board/void_card.tscn b/src/logic-scenes/board/void_card.tscn index 944d0ce..b027802 100644 --- a/src/logic-scenes/board/void_card.tscn +++ b/src/logic-scenes/board/void_card.tscn @@ -1,12 +1,11 @@ -[gd_scene load_steps=21 format=3 uid="uid://dp4eps03igd3w"] +[gd_scene load_steps=20 format=3 uid="uid://vqwep0whfb0o"] -[ext_resource type="Script" uid="uid://wv72dum1fe72" path="res://logic-scenes/board/card.gd" id="1_6ceun"] +[ext_resource type="Script" uid="uid://2loic2eeec5b" path="res://logic-scenes/board/card.gd" id="1_6ceun"] [ext_resource type="Texture2D" uid="uid://sv0nhkkur1tt" path="res://logic-scenes/board/card-textures/cardsheet.png" id="2_buevv"] [ext_resource type="Texture2D" uid="uid://kpmk21d8rlso" path="res://logic-scenes/board/particle_textures/star.png" id="3_8wu8j"] -[ext_resource type="Theme" uid="uid://b056fn288p8ha" path="res://logic-scenes/themes/handwriting.theme" id="3_mi4ah"] [ext_resource type="Texture2D" uid="uid://bqilajx05t0eb" path="res://logic-scenes/board/particle_textures/void_nomotion.png" id="4_jam8u"] -[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_foovg"] +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_aqrbw"] radius = 110.0 height = 336.0 @@ -37,43 +36,43 @@ func _process(delta): else: position = initial_position " -[sub_resource type="AtlasTexture" id="AtlasTexture_ykk13"] -atlas = ExtResource("2_buevv") -region = Rect2(0, 0, 600, 440) - -[sub_resource type="AtlasTexture" id="AtlasTexture_l43eo"] -atlas = ExtResource("2_buevv") -region = Rect2(600, 0, 600, 440) - -[sub_resource type="AtlasTexture" id="AtlasTexture_x2vcn"] -atlas = ExtResource("2_buevv") -region = Rect2(0, 440, 600, 440) - -[sub_resource type="AtlasTexture" id="AtlasTexture_e7401"] -atlas = ExtResource("2_buevv") -region = Rect2(600, 440, 600, 440) - -[sub_resource type="AtlasTexture" id="AtlasTexture_j7wh6"] +[sub_resource type="AtlasTexture" id="AtlasTexture_aqrbw"] atlas = ExtResource("2_buevv") region = Rect2(0, 880, 600, 440) -[sub_resource type="SpriteFrames" id="SpriteFrames_ckivt"] +[sub_resource type="AtlasTexture" id="AtlasTexture_e20ok"] +atlas = ExtResource("2_buevv") +region = Rect2(0, 440, 600, 440) + +[sub_resource type="AtlasTexture" id="AtlasTexture_onstk"] +atlas = ExtResource("2_buevv") +region = Rect2(600, 440, 600, 440) + +[sub_resource type="AtlasTexture" id="AtlasTexture_mtvrf"] +atlas = ExtResource("2_buevv") +region = Rect2(600, 0, 600, 440) + +[sub_resource type="AtlasTexture" id="AtlasTexture_inyug"] +atlas = ExtResource("2_buevv") +region = Rect2(0, 0, 600, 440) + +[sub_resource type="SpriteFrames" id="SpriteFrames_cu2at"] animations = [{ "frames": [{ "duration": 1.0, -"texture": SubResource("AtlasTexture_ykk13") +"texture": SubResource("AtlasTexture_aqrbw") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_l43eo") +"texture": SubResource("AtlasTexture_e20ok") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_x2vcn") +"texture": SubResource("AtlasTexture_onstk") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_e7401") +"texture": SubResource("AtlasTexture_mtvrf") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_j7wh6") +"texture": SubResource("AtlasTexture_inyug") }], "loop": true, "name": &"default", @@ -134,14 +133,14 @@ func _process(_delta): self.visible = State.reduce_motion " -[node name="card" type="Area2D"] +[node name="c_void" type="Area2D"] script = ExtResource("1_6ceun") metadata/type = "card" [node name="CollisionShape2D" type="CollisionShape2D" parent="."] position = Vector2(-0.0713516, 0.997451) rotation = 1.5708 -shape = SubResource("CapsuleShape2D_foovg") +shape = SubResource("CapsuleShape2D_aqrbw") [node name="Visual" type="Node2D" parent="."] scale = Vector2(0.6, 0.6) @@ -150,18 +149,17 @@ script = SubResource("GDScript_8bs16") [node name="BackgroundSprite" type="AnimatedSprite2D" parent="Visual"] unique_name_in_owner = true clip_children = 2 -sprite_frames = SubResource("SpriteFrames_ckivt") -frame = 1 +sprite_frames = SubResource("SpriteFrames_cu2at") [node name="GPUParticles2D" type="GPUParticles2D" parent="Visual/BackgroundSprite"] amount = 500 -process_material = SubResource("ParticleProcessMaterial_by44l") texture = ExtResource("3_8wu8j") lifetime = 2.5 speed_scale = 1.3 explosiveness = 0.2 randomness = 0.14 local_coords = true +process_material = SubResource("ParticleProcessMaterial_by44l") script = SubResource("GDScript_vjwk7") [node name="Sprite2D" type="Sprite2D" parent="Visual/BackgroundSprite"] @@ -187,6 +185,4 @@ offset_right = 127.0 offset_bottom = 82.5 grow_horizontal = 2 grow_vertical = 2 -theme = ExtResource("3_mi4ah") -theme_type_variation = &"card_text" autowrap_mode = 3 diff --git a/src/project.godot b/src/project.godot index e102269..20142f9 100644 --- a/src/project.godot +++ b/src/project.godot @@ -26,7 +26,7 @@ config/icon="res://icon.png" State="*res://singletons/global_state.gd" Scenes="*res://singletons/scene_reference.gd" -Steamworks="*res://dev-util/steamworks.gd" +Steamworks="res://dev-util/steamworks.gd" PromptManager="*res://addons/input_prompts/input_prompt_manager.gd" [debug] From 8998c93480c00f31d5ce8155f8c125ef9f538fb3 Mon Sep 17 00:00:00 2001 From: betalars Date: Fri, 4 Apr 2025 23:17:31 +0200 Subject: [PATCH 08/10] WIP implement temporary workaround --- .../youth_room/youth_room.tscn | 1 - src/dev-util/board of devs.tscn | 17 ++-- src/logic-scenes/board/card.gd | 6 ++ src/logic-scenes/board/sticky-note.tscn | 77 +++++++++---------- src/logic-scenes/board/void_card.tscn | 77 +------------------ src/logic-scenes/board/void_stuff.tscn | 77 +++++++++++++++++++ src/project.godot | 2 +- 7 files changed, 134 insertions(+), 123 deletions(-) create mode 100644 src/logic-scenes/board/void_stuff.tscn diff --git a/src/base-environments/youth_room/youth_room.tscn b/src/base-environments/youth_room/youth_room.tscn index 989dd6e..f6132d2 100644 --- a/src/base-environments/youth_room/youth_room.tscn +++ b/src/base-environments/youth_room/youth_room.tscn @@ -2266,7 +2266,6 @@ light_array = Array[Vector3]([Vector3(-0.545, 0.915, 1.035), Vector3(-0.47, 0.85 [connection signal="body_exited" from="logic/Bed and Ladders/reset_failover" to="logic/PlayerController" method="_on_bed_exit"] [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="cards_picked" from="logic/UI/Picker" to="logic/UI/Board" method="populate_board"] [connection signal="board_completed" from="logic/UI/Board" to="logic/UI/ending_button" method="show"] [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"] diff --git a/src/dev-util/board of devs.tscn b/src/dev-util/board of devs.tscn index d3218ce..bb31c74 100644 --- a/src/dev-util/board of devs.tscn +++ b/src/dev-util/board of devs.tscn @@ -1,9 +1,8 @@ -[gd_scene load_steps=5 format=3 uid="uid://bvowj4l8dtceu"] +[gd_scene load_steps=4 format=3 uid="uid://bvowj4l8dtceu"] [ext_resource type="Script" uid="uid://b6xp63orcmjq8" path="res://dev-util/devs_board.gd" id="1_ols6o"] [ext_resource type="PackedScene" uid="uid://dy5rd437h5hsw" path="res://logic-scenes/board/card.tscn" id="1_xrckx"] [ext_resource type="PackedScene" uid="uid://vkcdj8c3ytbq" path="res://logic-scenes/board/sticky-note.tscn" id="2_ucudl"] -[ext_resource type="PackedScene" uid="uid://vqwep0whfb0o" path="res://logic-scenes/board/void_card.tscn" id="4_b7cny"] [node name="board of devs" type="Control"] layout_mode = 3 @@ -163,9 +162,6 @@ text = "My body just didn't feel right" position = Vector2(-32, 140) text = "I just hate being treated like a girl" -[node name="c_void" parent="juijutsu" instance=ExtResource("4_b7cny")] -position = Vector2(16, 598) - [node name="c_hit" parent="juijutsu" node_paths=PackedStringArray("evil_sticky_notes") instance=ExtResource("1_xrckx")] position = Vector2(15, 297) evil_sticky_notes = [NodePath("../../childhood/c_teachers/p_becoming_teacher")] @@ -179,12 +175,15 @@ text = "that gives me a lot of confidence." position = Vector2(-32, 140) text = "and that’s a great vent." -[node name="p_wet" parent="juijutsu/c_hit" groups=["c_void"] instance=ExtResource("2_ucudl")] -position = Vector2(-31, 351) +[node name="c_void" parent="juijutsu" instance=ExtResource("1_xrckx")] +position = Vector2(16, 598) + +[node name="p_wet" parent="juijutsu/c_void" groups=["c_void"] instance=ExtResource("2_ucudl")] +position = Vector2(-32, 50) text = "I was wet, so I must have been into it." -[node name="p_stop" parent="juijutsu/c_hit" groups=["c_void"] instance=ExtResource("2_ucudl")] -position = Vector2(-31, 441) +[node name="p_stop" parent="juijutsu/c_void" groups=["c_void"] instance=ExtResource("2_ucudl")] +position = Vector2(-32, 140) text = "I didn't say stop." [node name="test2" type="Control" parent="."] diff --git a/src/logic-scenes/board/card.gd b/src/logic-scenes/board/card.gd index 206771f..ee0ac13 100644 --- a/src/logic-scenes/board/card.gd +++ b/src/logic-scenes/board/card.gd @@ -103,6 +103,12 @@ func _ready(): wiggle_pos = float(text.hash() % 100) if not Engine.is_editor_hint(): _handle_wiggle(0) + + if text == "": + become_void() + +func become_void(): + %BackgroundSprite.add_child(load("res://logic-scenes/board/void_stuff.tscn").instantiate()) func _process(delta: float) -> void: if highlighted: diff --git a/src/logic-scenes/board/sticky-note.tscn b/src/logic-scenes/board/sticky-note.tscn index a729e46..926f835 100644 --- a/src/logic-scenes/board/sticky-note.tscn +++ b/src/logic-scenes/board/sticky-note.tscn @@ -8,92 +8,92 @@ radius = 48.0 height = 312.0 -[sub_resource type="AtlasTexture" id="AtlasTexture_nj16s"] +[sub_resource type="AtlasTexture" id="AtlasTexture_260t4"] atlas = ExtResource("2_j17jn") region = Rect2(0, 0, 500, 220) -[sub_resource type="AtlasTexture" id="AtlasTexture_23tiq"] +[sub_resource type="AtlasTexture" id="AtlasTexture_1dusx"] atlas = ExtResource("2_j17jn") region = Rect2(500, 0, 500, 220) -[sub_resource type="AtlasTexture" id="AtlasTexture_aomh0"] -atlas = ExtResource("2_j17jn") -region = Rect2(1000, 0, 500, 220) - -[sub_resource type="AtlasTexture" id="AtlasTexture_n3svg"] -atlas = ExtResource("2_j17jn") -region = Rect2(1500, 0, 500, 220) - -[sub_resource type="AtlasTexture" id="AtlasTexture_tfg7a"] +[sub_resource type="AtlasTexture" id="AtlasTexture_3dfo6"] atlas = ExtResource("2_j17jn") region = Rect2(0, 220, 500, 220) -[sub_resource type="AtlasTexture" id="AtlasTexture_dtics"] +[sub_resource type="AtlasTexture" id="AtlasTexture_ltrdw"] atlas = ExtResource("2_j17jn") region = Rect2(500, 220, 500, 220) -[sub_resource type="AtlasTexture" id="AtlasTexture_e0ocs"] -atlas = ExtResource("2_j17jn") -region = Rect2(1000, 220, 500, 220) - -[sub_resource type="AtlasTexture" id="AtlasTexture_bpwg2"] -atlas = ExtResource("2_j17jn") -region = Rect2(1500, 220, 500, 220) - -[sub_resource type="AtlasTexture" id="AtlasTexture_xaxol"] +[sub_resource type="AtlasTexture" id="AtlasTexture_spwka"] atlas = ExtResource("2_j17jn") region = Rect2(0, 440, 500, 220) -[sub_resource type="AtlasTexture" id="AtlasTexture_ifitb"] +[sub_resource type="AtlasTexture" id="AtlasTexture_62rvp"] atlas = ExtResource("2_j17jn") region = Rect2(500, 440, 500, 220) -[sub_resource type="AtlasTexture" id="AtlasTexture_6slhe"] +[sub_resource type="AtlasTexture" id="AtlasTexture_v1axh"] atlas = ExtResource("2_j17jn") region = Rect2(1000, 440, 500, 220) -[sub_resource type="AtlasTexture" id="AtlasTexture_4tk5m"] +[sub_resource type="AtlasTexture" id="AtlasTexture_5ria3"] +atlas = ExtResource("2_j17jn") +region = Rect2(1000, 220, 500, 220) + +[sub_resource type="AtlasTexture" id="AtlasTexture_7ii0f"] +atlas = ExtResource("2_j17jn") +region = Rect2(1000, 0, 500, 220) + +[sub_resource type="AtlasTexture" id="AtlasTexture_7upwc"] +atlas = ExtResource("2_j17jn") +region = Rect2(1500, 0, 500, 220) + +[sub_resource type="AtlasTexture" id="AtlasTexture_drssb"] +atlas = ExtResource("2_j17jn") +region = Rect2(1500, 220, 500, 220) + +[sub_resource type="AtlasTexture" id="AtlasTexture_anws8"] atlas = ExtResource("2_j17jn") region = Rect2(1500, 440, 500, 220) -[sub_resource type="SpriteFrames" id="SpriteFrames_2amsi"] +[sub_resource type="SpriteFrames" id="SpriteFrames_5scpe"] animations = [{ "frames": [{ "duration": 1.0, -"texture": SubResource("AtlasTexture_nj16s") +"texture": SubResource("AtlasTexture_260t4") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_23tiq") +"texture": SubResource("AtlasTexture_1dusx") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_aomh0") +"texture": SubResource("AtlasTexture_3dfo6") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_n3svg") +"texture": SubResource("AtlasTexture_ltrdw") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_tfg7a") +"texture": SubResource("AtlasTexture_spwka") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_dtics") +"texture": SubResource("AtlasTexture_62rvp") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_e0ocs") +"texture": SubResource("AtlasTexture_v1axh") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_bpwg2") +"texture": SubResource("AtlasTexture_5ria3") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_xaxol") +"texture": SubResource("AtlasTexture_7ii0f") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_ifitb") +"texture": SubResource("AtlasTexture_7upwc") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_6slhe") +"texture": SubResource("AtlasTexture_drssb") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_4tk5m") +"texture": SubResource("AtlasTexture_anws8") }], "loop": true, "name": &"default", @@ -115,8 +115,7 @@ shape = SubResource("CapsuleShape2D_ml4q7") [node name="BackgroundSprite" type="AnimatedSprite2D" parent="Content"] position = Vector2(99.5, 0) scale = Vector2(0.65, 0.65) -sprite_frames = SubResource("SpriteFrames_2amsi") -frame = 5 +sprite_frames = SubResource("SpriteFrames_5scpe") [node name="Label" type="Label" parent="Content"] anchors_preset = 8 diff --git a/src/logic-scenes/board/void_card.tscn b/src/logic-scenes/board/void_card.tscn index b027802..71f89e7 100644 --- a/src/logic-scenes/board/void_card.tscn +++ b/src/logic-scenes/board/void_card.tscn @@ -1,9 +1,8 @@ -[gd_scene load_steps=20 format=3 uid="uid://vqwep0whfb0o"] +[gd_scene load_steps=12 format=3 uid="uid://vqwep0whfb0o"] [ext_resource type="Script" uid="uid://2loic2eeec5b" path="res://logic-scenes/board/card.gd" id="1_6ceun"] [ext_resource type="Texture2D" uid="uid://sv0nhkkur1tt" path="res://logic-scenes/board/card-textures/cardsheet.png" id="2_buevv"] -[ext_resource type="Texture2D" uid="uid://kpmk21d8rlso" path="res://logic-scenes/board/particle_textures/star.png" id="3_8wu8j"] -[ext_resource type="Texture2D" uid="uid://bqilajx05t0eb" path="res://logic-scenes/board/particle_textures/void_nomotion.png" id="4_jam8u"] +[ext_resource type="PackedScene" uid="uid://b2st6v25p0ley" path="res://logic-scenes/board/void_stuff.tscn" id="3_ipd1f"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_aqrbw"] radius = 110.0 @@ -79,60 +78,6 @@ animations = [{ "speed": 5.0 }] -[sub_resource type="Gradient" id="Gradient_v70nd"] -interpolation_mode = 2 -offsets = PackedFloat32Array(0, 0.0529197, 0.191606, 1) -colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0.491329, 1, 1, 1, 0) - -[sub_resource type="GradientTexture1D" id="GradientTexture1D_xxq8p"] -gradient = SubResource("Gradient_v70nd") - -[sub_resource type="Curve" id="Curve_q6cmf"] -_data = [Vector2(0, 0), 0.0, 3.16529, 0, 0, Vector2(0.241056, 0.191336), 0.132446, 0.132446, 0, 0, Vector2(1, 1), 3.94797, 0.0, 0, 0] -point_count = 3 - -[sub_resource type="CurveTexture" id="CurveTexture_cg0w1"] -curve = SubResource("Curve_q6cmf") - -[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_by44l"] -particle_flag_disable_z = true -emission_shape = 6 -emission_ring_axis = Vector3(0, 0, 1) -emission_ring_height = 0.0 -emission_ring_radius = 180.0 -emission_ring_inner_radius = 185.0 -emission_ring_cone_angle = 90.0 -spread = 180.0 -initial_velocity_min = -10.0 -initial_velocity_max = 10.0 -angular_velocity_min = -150.0 -angular_velocity_max = -150.0 -gravity = Vector3(0, 0, 0) -radial_accel_min = -20.0 -radial_accel_max = -5.0 -tangential_accel_min = 20.0 -tangential_accel_max = 30.0 -attractor_interaction_enabled = false -scale_min = 3.0 -scale_max = 5.0 -scale_curve = SubResource("CurveTexture_cg0w1") -color_ramp = SubResource("GradientTexture1D_xxq8p") -turbulence_noise_strength = 0.1 - -[sub_resource type="GDScript" id="GDScript_vjwk7"] -script/source = "extends GPUParticles2D - -func _process(_delta): - self.visible = !State.reduce_motion -" - -[sub_resource type="GDScript" id="GDScript_tgc0b"] -script/source = "extends Sprite2D - -func _process(_delta): - self.visible = State.reduce_motion -" - [node name="c_void" type="Area2D"] script = ExtResource("1_6ceun") metadata/type = "card" @@ -150,23 +95,9 @@ script = SubResource("GDScript_8bs16") unique_name_in_owner = true clip_children = 2 sprite_frames = SubResource("SpriteFrames_cu2at") +frame = 1 -[node name="GPUParticles2D" type="GPUParticles2D" parent="Visual/BackgroundSprite"] -amount = 500 -texture = ExtResource("3_8wu8j") -lifetime = 2.5 -speed_scale = 1.3 -explosiveness = 0.2 -randomness = 0.14 -local_coords = true -process_material = SubResource("ParticleProcessMaterial_by44l") -script = SubResource("GDScript_vjwk7") - -[node name="Sprite2D" type="Sprite2D" parent="Visual/BackgroundSprite"] -visible = false -scale = Vector2(0.4, 0.4) -texture = ExtResource("4_jam8u") -script = SubResource("GDScript_tgc0b") +[node name="void_stuff" parent="Visual/BackgroundSprite" instance=ExtResource("3_ipd1f")] [node name="StickyNoteAncor" type="Node2D" parent="Visual/BackgroundSprite"] unique_name_in_owner = true diff --git a/src/logic-scenes/board/void_stuff.tscn b/src/logic-scenes/board/void_stuff.tscn new file mode 100644 index 0000000..9adebae --- /dev/null +++ b/src/logic-scenes/board/void_stuff.tscn @@ -0,0 +1,77 @@ +[gd_scene load_steps=10 format=3 uid="uid://b2st6v25p0ley"] + +[ext_resource type="Texture2D" uid="uid://kpmk21d8rlso" path="res://logic-scenes/board/particle_textures/star.png" id="1_kbpjt"] +[ext_resource type="Texture2D" uid="uid://bqilajx05t0eb" path="res://logic-scenes/board/particle_textures/void_nomotion.png" id="2_5si5k"] + +[sub_resource type="Gradient" id="Gradient_v70nd"] +interpolation_mode = 2 +offsets = PackedFloat32Array(0, 0.0529197, 0.191606, 1) +colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0.491329, 1, 1, 1, 0) + +[sub_resource type="GradientTexture1D" id="GradientTexture1D_xxq8p"] +gradient = SubResource("Gradient_v70nd") + +[sub_resource type="Curve" id="Curve_q6cmf"] +_data = [Vector2(0, 0), 0.0, 3.16529, 0, 0, Vector2(0.241056, 0.191336), 0.132446, 0.132446, 0, 0, Vector2(1, 1), 3.94797, 0.0, 0, 0] +point_count = 3 + +[sub_resource type="CurveTexture" id="CurveTexture_cg0w1"] +curve = SubResource("Curve_q6cmf") + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_by44l"] +particle_flag_disable_z = true +emission_shape = 6 +emission_ring_axis = Vector3(0, 0, 1) +emission_ring_height = 0.0 +emission_ring_radius = 180.0 +emission_ring_inner_radius = 185.0 +emission_ring_cone_angle = 90.0 +spread = 180.0 +initial_velocity_min = -10.0 +initial_velocity_max = 10.0 +angular_velocity_min = -150.0 +angular_velocity_max = -150.0 +gravity = Vector3(0, 0, 0) +radial_accel_min = -20.0 +radial_accel_max = -5.0 +tangential_accel_min = 20.0 +tangential_accel_max = 30.0 +attractor_interaction_enabled = false +scale_min = 3.0 +scale_max = 5.0 +scale_curve = SubResource("CurveTexture_cg0w1") +color_ramp = SubResource("GradientTexture1D_xxq8p") +turbulence_noise_strength = 0.1 + +[sub_resource type="GDScript" id="GDScript_vjwk7"] +script/source = "extends GPUParticles2D + +func _process(_delta): + self.visible = !State.reduce_motion +" + +[sub_resource type="GDScript" id="GDScript_tgc0b"] +script/source = "extends Sprite2D + +func _process(_delta): + self.visible = State.reduce_motion +" + +[node name="void_stuff" type="Node2D"] + +[node name="GPUParticles2D" type="GPUParticles2D" parent="."] +amount = 500 +texture = ExtResource("1_kbpjt") +lifetime = 2.5 +speed_scale = 1.3 +explosiveness = 0.2 +randomness = 0.14 +local_coords = true +process_material = SubResource("ParticleProcessMaterial_by44l") +script = SubResource("GDScript_vjwk7") + +[node name="Sprite2D" type="Sprite2D" parent="."] +visible = false +scale = Vector2(0.4, 0.4) +texture = ExtResource("2_5si5k") +script = SubResource("GDScript_tgc0b") diff --git a/src/project.godot b/src/project.godot index 20142f9..e102269 100644 --- a/src/project.godot +++ b/src/project.godot @@ -26,7 +26,7 @@ config/icon="res://icon.png" State="*res://singletons/global_state.gd" Scenes="*res://singletons/scene_reference.gd" -Steamworks="res://dev-util/steamworks.gd" +Steamworks="*res://dev-util/steamworks.gd" PromptManager="*res://addons/input_prompts/input_prompt_manager.gd" [debug] From 8067575f2a6cc8481485e9184caa07cea9158bff Mon Sep 17 00:00:00 2001 From: betalars Date: Mon, 7 Apr 2025 17:26:06 +0200 Subject: [PATCH 09/10] WIP: converting card loading to hard-coded solution due to load errors --- src/dev-util/hardcoded_cards.gd | 34 +++++++ src/dev-util/hardcoded_cards.gd.uid | 1 + .../board/card-textures/card-sprites.tres | 46 ++++++++++ src/logic-scenes/board/card.gd | 21 +++-- src/logic-scenes/board/card.tscn | 55 ++---------- src/logic-scenes/board/sticky-note.gd | 9 ++ src/logic-scenes/board/sticky-note.tscn | 89 ++++++++++--------- 7 files changed, 158 insertions(+), 97 deletions(-) create mode 100644 src/dev-util/hardcoded_cards.gd create mode 100644 src/dev-util/hardcoded_cards.gd.uid create mode 100644 src/logic-scenes/board/card-textures/card-sprites.tres diff --git a/src/dev-util/hardcoded_cards.gd b/src/dev-util/hardcoded_cards.gd new file mode 100644 index 0000000..80612cf --- /dev/null +++ b/src/dev-util/hardcoded_cards.gd @@ -0,0 +1,34 @@ +class_name HardCards extends Node + +static var all_cards: Array[Dictionary] = [ + { + "out-of-world": ["unique", "few_friends", []], + "rejection": ["finding_friends", "laughed", []], + "confusion": ["inner_conflict", "outer_conflict", []] + }, + { + "homework": ["good_grades", "upset_teachers", []], + "teachers": ["volunteering", "becoming_teacher", []], + "joy": ["worried_mother", "thomas_gifted", []] + }, + { + "comic_heroes": ["effort", "thomas_gifted", []], + "boy_stuff": ["pretending", "girls", []], + "teasing": ["stubborn", "good_intended", []] + }, + { + "jui_jutsu": ["body", "girly", []], + "void": ["wet", "stop", []], + "hit": ["confidence", "vent", []] + }, +] + + +static func get_cards_by_scene_id(id: int) -> Array: + var output:Array + + for card_name in all_cards[id].keys(): + var card_id:StringName = "%d.%s" % [id, card_name] + output.append(Card.new(card_name, card_id)) + + return output diff --git a/src/dev-util/hardcoded_cards.gd.uid b/src/dev-util/hardcoded_cards.gd.uid new file mode 100644 index 0000000..2b4cc33 --- /dev/null +++ b/src/dev-util/hardcoded_cards.gd.uid @@ -0,0 +1 @@ +uid://dysgoaaesqjbg diff --git a/src/logic-scenes/board/card-textures/card-sprites.tres b/src/logic-scenes/board/card-textures/card-sprites.tres new file mode 100644 index 0000000..cf77ff4 --- /dev/null +++ b/src/logic-scenes/board/card-textures/card-sprites.tres @@ -0,0 +1,46 @@ +[gd_resource type="SpriteFrames" load_steps=7 format=3 uid="uid://db35k2lntld0o"] + +[ext_resource type="Texture2D" uid="uid://sv0nhkkur1tt" path="res://logic-scenes/board/card-textures/cardsheet.png" id="1_l4v2i"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_ykk13"] +atlas = ExtResource("1_l4v2i") +region = Rect2(0, 0, 600, 440) + +[sub_resource type="AtlasTexture" id="AtlasTexture_l43eo"] +atlas = ExtResource("1_l4v2i") +region = Rect2(600, 0, 600, 440) + +[sub_resource type="AtlasTexture" id="AtlasTexture_x2vcn"] +atlas = ExtResource("1_l4v2i") +region = Rect2(0, 440, 600, 440) + +[sub_resource type="AtlasTexture" id="AtlasTexture_e7401"] +atlas = ExtResource("1_l4v2i") +region = Rect2(600, 440, 600, 440) + +[sub_resource type="AtlasTexture" id="AtlasTexture_j7wh6"] +atlas = ExtResource("1_l4v2i") +region = Rect2(0, 880, 600, 440) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_ykk13") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_l43eo") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_x2vcn") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_e7401") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_j7wh6") +}], +"loop": true, +"name": &"default", +"speed": 5.0 +}] diff --git a/src/logic-scenes/board/card.gd b/src/logic-scenes/board/card.gd index ee0ac13..cc46608 100644 --- a/src/logic-scenes/board/card.gd +++ b/src/logic-scenes/board/card.gd @@ -1,6 +1,10 @@ @tool extends Area2D class_name Card + +var card_id + +#FIXME remove this legacy stuff without loosing the evil notes ... var compatible_sticky_notes: Array[StickyNote] = [] @export var evil_sticky_notes: Array[StickyNote] = [] var own_sticky_notes: Array[StickyNote] = [] @@ -74,6 +78,12 @@ var is_dragged: bool = false: var is_mouse_entered: bool = false var mouse_offset: Vector2 +func _init(card_name: String = "card", own_id:StringName = "-1") -> void: + text = card_name + card_id = own_id + name = "c_%s" % card_name + + func _ready(): input_event.connect(_on_input_event) @@ -97,13 +107,13 @@ func _ready(): %BackgroundSprite.frame = text.hash() % %BackgroundSprite.sprite_frames.get_frame_count(%BackgroundSprite.animation) $Label.text = self.text - #$Label.theme = State.current_main_theme - #State.theme_changed.connect(func change_theme(new_theme): $Label.theme = new_theme) + $Label.theme = State.current_main_theme + State.theme_changed.connect(func change_theme(new_theme): $Label.theme = new_theme) wiggle_pos = float(text.hash() % 100) if not Engine.is_editor_hint(): _handle_wiggle(0) - + if text == "": become_void() @@ -205,9 +215,8 @@ func attach_sticky_note(sticky_note: StickyNote) -> bool: sticky_note.attached_to = self if name == "c_hit" and sticky_note.name == "p_effort": - #Steam.setAchievement("FIGHT_FOR_GOOD") - #Steam.storeStats() - pass + Steam.setAchievement("FIGHT_FOR_GOOD") + Steam.storeStats() return true diff --git a/src/logic-scenes/board/card.tscn b/src/logic-scenes/board/card.tscn index 965f760..52d1cf1 100644 --- a/src/logic-scenes/board/card.tscn +++ b/src/logic-scenes/board/card.tscn @@ -1,60 +1,19 @@ -[gd_scene load_steps=10 format=3 uid="uid://dy5rd437h5hsw"] +[gd_scene load_steps=5 format=3 uid="uid://dy5rd437h5hsw"] -[ext_resource type="Script" uid="uid://2loic2eeec5b" path="res://logic-scenes/board/card.gd" id="1_emip0"] -[ext_resource type="Texture2D" uid="uid://sv0nhkkur1tt" path="res://logic-scenes/board/card-textures/cardsheet.png" id="2_ioijn"] +[ext_resource type="Script" uid="uid://wv72dum1fe72" path="res://logic-scenes/board/card.gd" id="1_emip0"] +[ext_resource type="SpriteFrames" uid="uid://db35k2lntld0o" path="res://logic-scenes/board/card-textures/card-sprites.tres" id="2_mdi7r"] +[ext_resource type="Theme" uid="uid://b056fn288p8ha" path="res://logic-scenes/themes/handwriting.theme" id="3_1x4uh"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_foovg"] radius = 110.0 height = 336.0 -[sub_resource type="AtlasTexture" id="AtlasTexture_mdi7r"] -atlas = ExtResource("2_ioijn") -region = Rect2(0, 0, 600, 440) - -[sub_resource type="AtlasTexture" id="AtlasTexture_e1q5p"] -atlas = ExtResource("2_ioijn") -region = Rect2(600, 0, 600, 440) - -[sub_resource type="AtlasTexture" id="AtlasTexture_nu76f"] -atlas = ExtResource("2_ioijn") -region = Rect2(0, 440, 600, 440) - -[sub_resource type="AtlasTexture" id="AtlasTexture_es87b"] -atlas = ExtResource("2_ioijn") -region = Rect2(600, 440, 600, 440) - -[sub_resource type="AtlasTexture" id="AtlasTexture_7bi75"] -atlas = ExtResource("2_ioijn") -region = Rect2(0, 880, 600, 440) - -[sub_resource type="SpriteFrames" id="SpriteFrames_hkrkt"] -animations = [{ -"frames": [{ -"duration": 1.0, -"texture": SubResource("AtlasTexture_mdi7r") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_e1q5p") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_nu76f") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_es87b") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_7bi75") -}], -"loop": true, -"name": &"default", -"speed": 5.0 -}] - [node name="card" type="Area2D"] script = ExtResource("1_emip0") metadata/type = "card" [node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2(-0.0713516, 0.997451) rotation = 1.5708 shape = SubResource("CapsuleShape2D_foovg") @@ -62,7 +21,7 @@ shape = SubResource("CapsuleShape2D_foovg") unique_name_in_owner = true clip_children = 2 scale = Vector2(0.6, 0.6) -sprite_frames = SubResource("SpriteFrames_hkrkt") +sprite_frames = ExtResource("2_mdi7r") frame = 1 [node name="Label" type="Label" parent="."] @@ -78,6 +37,8 @@ offset_bottom = 88.0 grow_horizontal = 2 grow_vertical = 2 rotation = 0.00872665 +theme = ExtResource("3_1x4uh") +theme_type_variation = &"card_text" autowrap_mode = 3 [node name="StickyNoteAncor" type="Node2D" parent="."] diff --git a/src/logic-scenes/board/sticky-note.gd b/src/logic-scenes/board/sticky-note.gd index ee07bad..e5fb0c0 100644 --- a/src/logic-scenes/board/sticky-note.gd +++ b/src/logic-scenes/board/sticky-note.gd @@ -2,6 +2,10 @@ extends Area2D class_name StickyNote + +var sticky_id +var parent_id + var sibling: StickyNote var shift_tween: Tween var modulate_tween: Tween @@ -69,6 +73,11 @@ var mouse_diff: Vector2 @export_range(1.0, 10.0) var bounce_speed: float = 8 var on_board: bool = false +func _init(sticky_name: String = "card", card_id: StringName = "-1", own_id:StringName = "-1") -> void: + text = sticky_name + parent_id = card_id + sticky_id = own_id + func _ready() -> void: input_event.connect(_on_input_event) diff --git a/src/logic-scenes/board/sticky-note.tscn b/src/logic-scenes/board/sticky-note.tscn index 926f835..a729e46 100644 --- a/src/logic-scenes/board/sticky-note.tscn +++ b/src/logic-scenes/board/sticky-note.tscn @@ -8,92 +8,92 @@ radius = 48.0 height = 312.0 -[sub_resource type="AtlasTexture" id="AtlasTexture_260t4"] +[sub_resource type="AtlasTexture" id="AtlasTexture_nj16s"] atlas = ExtResource("2_j17jn") region = Rect2(0, 0, 500, 220) -[sub_resource type="AtlasTexture" id="AtlasTexture_1dusx"] +[sub_resource type="AtlasTexture" id="AtlasTexture_23tiq"] atlas = ExtResource("2_j17jn") region = Rect2(500, 0, 500, 220) -[sub_resource type="AtlasTexture" id="AtlasTexture_3dfo6"] -atlas = ExtResource("2_j17jn") -region = Rect2(0, 220, 500, 220) - -[sub_resource type="AtlasTexture" id="AtlasTexture_ltrdw"] -atlas = ExtResource("2_j17jn") -region = Rect2(500, 220, 500, 220) - -[sub_resource type="AtlasTexture" id="AtlasTexture_spwka"] -atlas = ExtResource("2_j17jn") -region = Rect2(0, 440, 500, 220) - -[sub_resource type="AtlasTexture" id="AtlasTexture_62rvp"] -atlas = ExtResource("2_j17jn") -region = Rect2(500, 440, 500, 220) - -[sub_resource type="AtlasTexture" id="AtlasTexture_v1axh"] -atlas = ExtResource("2_j17jn") -region = Rect2(1000, 440, 500, 220) - -[sub_resource type="AtlasTexture" id="AtlasTexture_5ria3"] -atlas = ExtResource("2_j17jn") -region = Rect2(1000, 220, 500, 220) - -[sub_resource type="AtlasTexture" id="AtlasTexture_7ii0f"] +[sub_resource type="AtlasTexture" id="AtlasTexture_aomh0"] atlas = ExtResource("2_j17jn") region = Rect2(1000, 0, 500, 220) -[sub_resource type="AtlasTexture" id="AtlasTexture_7upwc"] +[sub_resource type="AtlasTexture" id="AtlasTexture_n3svg"] atlas = ExtResource("2_j17jn") region = Rect2(1500, 0, 500, 220) -[sub_resource type="AtlasTexture" id="AtlasTexture_drssb"] +[sub_resource type="AtlasTexture" id="AtlasTexture_tfg7a"] +atlas = ExtResource("2_j17jn") +region = Rect2(0, 220, 500, 220) + +[sub_resource type="AtlasTexture" id="AtlasTexture_dtics"] +atlas = ExtResource("2_j17jn") +region = Rect2(500, 220, 500, 220) + +[sub_resource type="AtlasTexture" id="AtlasTexture_e0ocs"] +atlas = ExtResource("2_j17jn") +region = Rect2(1000, 220, 500, 220) + +[sub_resource type="AtlasTexture" id="AtlasTexture_bpwg2"] atlas = ExtResource("2_j17jn") region = Rect2(1500, 220, 500, 220) -[sub_resource type="AtlasTexture" id="AtlasTexture_anws8"] +[sub_resource type="AtlasTexture" id="AtlasTexture_xaxol"] +atlas = ExtResource("2_j17jn") +region = Rect2(0, 440, 500, 220) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ifitb"] +atlas = ExtResource("2_j17jn") +region = Rect2(500, 440, 500, 220) + +[sub_resource type="AtlasTexture" id="AtlasTexture_6slhe"] +atlas = ExtResource("2_j17jn") +region = Rect2(1000, 440, 500, 220) + +[sub_resource type="AtlasTexture" id="AtlasTexture_4tk5m"] atlas = ExtResource("2_j17jn") region = Rect2(1500, 440, 500, 220) -[sub_resource type="SpriteFrames" id="SpriteFrames_5scpe"] +[sub_resource type="SpriteFrames" id="SpriteFrames_2amsi"] animations = [{ "frames": [{ "duration": 1.0, -"texture": SubResource("AtlasTexture_260t4") +"texture": SubResource("AtlasTexture_nj16s") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_1dusx") +"texture": SubResource("AtlasTexture_23tiq") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_3dfo6") +"texture": SubResource("AtlasTexture_aomh0") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_ltrdw") +"texture": SubResource("AtlasTexture_n3svg") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_spwka") +"texture": SubResource("AtlasTexture_tfg7a") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_62rvp") +"texture": SubResource("AtlasTexture_dtics") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_v1axh") +"texture": SubResource("AtlasTexture_e0ocs") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_5ria3") +"texture": SubResource("AtlasTexture_bpwg2") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_7ii0f") +"texture": SubResource("AtlasTexture_xaxol") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_7upwc") +"texture": SubResource("AtlasTexture_ifitb") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_drssb") +"texture": SubResource("AtlasTexture_6slhe") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_anws8") +"texture": SubResource("AtlasTexture_4tk5m") }], "loop": true, "name": &"default", @@ -115,7 +115,8 @@ shape = SubResource("CapsuleShape2D_ml4q7") [node name="BackgroundSprite" type="AnimatedSprite2D" parent="Content"] position = Vector2(99.5, 0) scale = Vector2(0.65, 0.65) -sprite_frames = SubResource("SpriteFrames_5scpe") +sprite_frames = SubResource("SpriteFrames_2amsi") +frame = 5 [node name="Label" type="Label" parent="Content"] anchors_preset = 8 From cdcb3c618e8169a74a4e9f60e6fa0869b91ec05f Mon Sep 17 00:00:00 2001 From: betalars Date: Sun, 13 Apr 2025 19:07:31 +0200 Subject: [PATCH 10/10] re-implement card-loading to avoid loading issue --- src/dev-util/board of devs.tscn | 6 +- src/dev-util/hardcoded_cards.gd | 161 ++++++++++++- src/dev-util/hardcoded_cards.tscn | 6 + src/dev-util/static_board_of_devs.tscn | 6 + src/export_presets.cfg | 8 +- src/internationalisation.csv | 226 +++++++++--------- src/internationalisation.de.translation | Bin 17473 -> 17597 bytes src/internationalisation.en.translation | Bin 15762 -> 15902 bytes src/internationalisation.es.translation | Bin 7405 -> 7477 bytes src/internationalisation.ja.translation | Bin 7405 -> 7477 bytes src/internationalisation.notes.translation | Bin 7920 -> 8008 bytes src/logic-scenes/board/card-board.gd | 34 +-- .../board/card-textures/card-sprites.tres | 2 +- .../card-textures/sticky-note_sprites.tres | 95 ++++++++ src/logic-scenes/board/card.gd | 116 ++++----- src/logic-scenes/board/card.tscn | 44 +--- .../board/empty_sticky_note_panel.gd | 7 +- src/logic-scenes/board/physics-board.tscn | 8 +- src/logic-scenes/board/sticky-note.gd | 64 +++-- src/logic-scenes/board/sticky-note.tscn | 102 +------- src/logic-scenes/board/void_card.tscn | 3 +- src/logic-scenes/board/void_stuff.tscn | 57 +++-- src/logic-scenes/card_picker/card_picker.gd | 20 +- src/logic-scenes/card_picker/card_picker.tscn | 47 ++-- 24 files changed, 600 insertions(+), 412 deletions(-) create mode 100644 src/dev-util/hardcoded_cards.tscn create mode 100644 src/dev-util/static_board_of_devs.tscn create mode 100644 src/logic-scenes/board/card-textures/sticky-note_sprites.tres diff --git a/src/dev-util/board of devs.tscn b/src/dev-util/board of devs.tscn index bb31c74..24f8d2a 100644 --- a/src/dev-util/board of devs.tscn +++ b/src/dev-util/board of devs.tscn @@ -130,9 +130,8 @@ text = "yet they think I'm just pretending" position = Vector2(-32, 140) text = "and girls don't get that." -[node name="c_teasing" parent="voice_training" node_paths=PackedStringArray("evil_sticky_notes") instance=ExtResource("1_xrckx")] +[node name="c_teasing" parent="voice_training" instance=ExtResource("1_xrckx")] position = Vector2(6, 598) -evil_sticky_notes = [NodePath("../../childhood/c_joy/p_thomas")] text = "When Jojo got teased for trying, I pretty much exploded" [node name="p_stubborn" parent="voice_training/c_teasing" groups=["c_boy_stuff", "c_comic_heroes", "c_confusion", "c_fighting", "c_hit", "c_homework", "c_joy", "c_out-of-world", "c_teasing"] instance=ExtResource("2_ucudl")] @@ -162,9 +161,8 @@ text = "My body just didn't feel right" position = Vector2(-32, 140) text = "I just hate being treated like a girl" -[node name="c_hit" parent="juijutsu" node_paths=PackedStringArray("evil_sticky_notes") instance=ExtResource("1_xrckx")] +[node name="c_hit" parent="juijutsu" instance=ExtResource("1_xrckx")] position = Vector2(15, 297) -evil_sticky_notes = [NodePath("../../childhood/c_teachers/p_becoming_teacher")] text = "I know how to properly hit people" [node name="p_confidence" parent="juijutsu/c_hit" groups=["c_boy_stuff", "c_comic_heroes", "c_hit", "c_homework", "c_joy", "c_teasing"] instance=ExtResource("2_ucudl")] diff --git a/src/dev-util/hardcoded_cards.gd b/src/dev-util/hardcoded_cards.gd index 80612cf..3c9bb68 100644 --- a/src/dev-util/hardcoded_cards.gd +++ b/src/dev-util/hardcoded_cards.gd @@ -1,34 +1,177 @@ -class_name HardCards extends Node +class_name HardCards extends Node2D -static var all_cards: Array[Dictionary] = [ +static var source_dicts: Array[Dictionary] = [ { "out-of-world": ["unique", "few_friends", []], - "rejection": ["finding_friends", "laughed", []], + "rejection": ["finding_friends", "laughed_at", []], "confusion": ["inner_conflict", "outer_conflict", []] }, { - "homework": ["good_grades", "upset_teachers", []], + "homework": ["good_grades", "upset_peers", []], "teachers": ["volunteering", "becoming_teacher", []], "joy": ["worried_mother", "thomas_gifted", []] }, { "comic_heroes": ["effort", "thomas_gifted", []], "boy_stuff": ["pretending", "girls", []], - "teasing": ["stubborn", "good_intended", []] + "teasing": ["stubborn", "good_intended", ["thomas_gifted"]] }, { "jui_jutsu": ["body", "girly", []], "void": ["wet", "stop", []], - "hit": ["confidence", "vent", []] + "hit": ["confidence", "vent", ["becoming_teacher"]] }, ] +static var id_reference: Dictionary[StringName, StringName] = generate_id_reference(true, true) + +static var card_id_reference: Dictionary[StringName, StringName] = generate_id_reference(true, false) +static var sticky_id_reference: Dictionary[StringName, StringName] = generate_id_reference(false, true) + +static func generate_id_reference(include_cards: bool, include_sticky: bool) -> Dictionary[StringName, StringName]: + var out:Dictionary[StringName, StringName] = {} + + for id in range(source_dicts.size()): + for card_name:String in source_dicts[id].keys(): + if include_cards: + out[card_name] = "%d.%s" % [id, card_name] + if include_sticky: + for sticky_name in source_dicts[id][card_name]: + if sticky_name is String: + out[sticky_name] = "%d.%s.%s" % [id, card_name, sticky_name] + + return out + + +static func get_child_names_of(parent_id: StringName) -> Array[StringName]: + var out: Array[StringName] + for child_name: StringName in id_reference.keys(): + if id_reference[child_name].contains(parent_id): + if child_name != parent_id: + out.append(child_name) + return out + +#FIXME: enhance typing! +static func get_children_of(parent_id: StringName) -> Array: + return get_cards_by_name_array(get_child_names_of(parent_id))["sticky_notes"] + +func arrange(cards: Array[Card], rect: Rect2, obstacles: Array[Area2D]) -> Array[Card]: + var total_cards = cards.size() + + var x:int = 0 + var y:int = 0 + var i:int = 0 + var max:int = cards.size() + var grid: int = ceil(sqrt(max)) + var diameter:float = cards[0].diameter + + var r_cards: Array[Card] = cards.duplicate() + r_cards.shuffle() + + while i < max: + while x < grid and i < max: + while y < ceil(sqrt(max)) and i < max: + r_cards[i].position = rect.size / Vector2(y, x) * (1.0 / (rect.size.x * diameter) ) + rect.position + Vector2(randf_range(diameter/2+5, diameter-5), randf_range(diameter/2+5, diameter-5)) + i += 1 + y += 1 + x += 1 + + for card: Card in r_cards: + + for _i in range(20): + + if is_out_of_bounds(card, rect): + card.position = rect.get_center() - card.position * 0.8 + continue + var colliders: Array[Card] = [] + for collision:Card in r_cards: + if card != collision: + if card.collider.collide(card.transform.rotated(PI/2), collision.collider, collision.transform.rotated(PI/2)): + colliders.append(collision) + if colliders != []: + var nearest: Card = colliders[0] + for colliding in colliders: + if (colliding.position - card.position).length() > (nearest.position - card.position).length(): + nearest = colliding + + card.position += min(nearest.position - card.position.normalized() * card.diameter + 1, nearest.position - card.position) + continue + break + + return r_cards + + +func is_out_of_bounds(card: Card, rect: Rect2): + var world_boundaries: Array[Transform2D] = [ + Transform2D(PI, rect.position), + Transform2D(PI/2, rect.position), + Transform2D(-PI/2, rect.position+rect.size), + Transform2D(0, rect.position+rect.size) + ] + var shape: = WorldBoundaryShape2D.new() + + for boundary:Transform2D in world_boundaries: + if card.collider.collide(card.transform, shape, boundary): + return true + return false static func get_cards_by_scene_id(id: int) -> Array: var output:Array - for card_name in all_cards[id].keys(): - var card_id:StringName = "%d.%s" % [id, card_name] - output.append(Card.new(card_name, card_id)) + for card_name in source_dicts[id].keys(): + output.append(Card.new(card_name, id_reference[card_name])) return output + +# used to put cards on the dev board +static func get_cards_by_name_array(names: Array[StringName]) -> Dictionary: + var output:Dictionary = { + "cards": [], + "sticky_notes": [] + } + + for card_name:StringName in names: + if card_id_reference.has(card_name): + output["cards"].append(create_from_id(id_reference[card_name])) + else: + output["sticky_notes"].append(create_from_id(id_reference[card_name])) + + return output + +static func create_from_id(id:StringName) -> Area2D: + var parsed: PackedStringArray = id.rsplit(".") + + var helper = card_id_reference + var keys = card_id_reference.keys() + + if card_id_reference.values().has(id): + return Card.new(parsed[1], id) + elif sticky_id_reference.values().has(id): + return StickyNote.new(parsed[2], id) + else: + push_error("Attempted to create Card or Sticky from non-existent ID!") + return null + +static func create_dev_board(parent: Node2D, rect: Rect2) -> void: + for x in range(source_dicts.size()): + var sub_parent = Node2D.new() + sub_parent.position = Vector2( rect.size.x/(source_dicts.size()+1) * (x+1) , 0) + parent.add_child(sub_parent, false, Node.INTERNAL_MODE_BACK) + var y = 1 + for card_name in source_dicts[x].keys(): + var card:Card = create_from_id(card_id_reference[card_name]) + sub_parent.add_child(card, false, Node.INTERNAL_MODE_BACK) + card.position = Vector2(0, card.diameter * y - card.diameter/2) + + var z = 0 + for sticky_name in get_child_names_of(card_name): + var sticky: StickyNote = create_from_id(sticky_id_reference[sticky_name]) + card.add_child(sticky, false, Node.INTERNAL_MODE_BACK) + sticky.position = card.sticky_note_position + Vector2(0, 80) * z + z += 1 + + y += 1 + +func _ready() -> void: + create_dev_board(self, get_viewport().get_visible_rect()) + diff --git a/src/dev-util/hardcoded_cards.tscn b/src/dev-util/hardcoded_cards.tscn new file mode 100644 index 0000000..a37b54e --- /dev/null +++ b/src/dev-util/hardcoded_cards.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://dckj4hhl42v8u"] + +[ext_resource type="Script" uid="uid://dysgoaaesqjbg" path="res://dev-util/hardcoded_cards.gd" id="1_5kg6w"] + +[node name="Node2D" type="Node2D"] +script = ExtResource("1_5kg6w") diff --git a/src/dev-util/static_board_of_devs.tscn b/src/dev-util/static_board_of_devs.tscn new file mode 100644 index 0000000..3d999b2 --- /dev/null +++ b/src/dev-util/static_board_of_devs.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://cnaffkv2n4gy5"] + +[ext_resource type="Script" uid="uid://dysgoaaesqjbg" path="res://dev-util/hardcoded_cards.gd" id="1_ba1m7"] + +[node name="Node2D" type="Node2D"] +script = ExtResource("1_ba1m7") diff --git a/src/export_presets.cfg b/src/export_presets.cfg index 475eeb5..3730724 100644 --- a/src/export_presets.cfg +++ b/src/export_presets.cfg @@ -20,8 +20,8 @@ script_export_mode=2 [preset.0.options] -custom_template/debug="/home/betalars/Development/godot/godot-steam/godotsteam.44.debug.template.linux.x86_64" -custom_template/release="/home/betalars/Development/godot/godot-steam/godotsteam.44.template.linux.x86_64" +custom_template/debug="/home/betalars/Development/godot/godot-steam/godotsteam.441.debug.template.linux.x86_64" +custom_template/release="/home/betalars/Development/godot/godot-steam/godotsteam.441.template.linux.x86_64" debug/export_console_wrapper=1 binary_format/embed_pck=false texture_format/s3tc_bptc=true @@ -66,8 +66,8 @@ script_export_mode=2 [preset.1.options] -custom_template/debug="/home/betalars/Development/godot/godot-steam/godotsteam.44.debug.template.windows.64.exe" -custom_template/release="/home/betalars/Development/godot/godot-steam/godotsteam.44.template.windows.64.exe" +custom_template/debug="/home/betalars/Development/godot/godot-steam/godotsteam.441.debug.template.windows.64.exe" +custom_template/release="/home/betalars/Development/godot/godot-steam/godotsteam.441.template.windows.64.exe" debug/export_console_wrapper=1 binary_format/embed_pck=false texture_format/s3tc_bptc=true diff --git a/src/internationalisation.csv b/src/internationalisation.csv index 9747c20..2a27143 100644 --- a/src/internationalisation.csv +++ b/src/internationalisation.csv @@ -1,5 +1,5 @@ keys,en,de,es,ja,notes -"Accessibility, Disclaimers and Content Notes","Accessibility, Disclaimers and Content Notes",Barrierefreiheit und Erwartungsmanagement,,, +"Acessibility, Disclaimers and Content Notes","Acessibility, Disclaimers and Content Notes",Barrierefreiheit und Erwartungsmanagement,,, Accessibility,Accessibility,Barrierefreiheit,,, reduce motion,reduce motion,Reduzierte Animationen,,, use Screenreader,use Screenreader,Screen-Reader aktivieren,,, @@ -33,37 +33,37 @@ I would like to know more.,I would like to know more.,Ich würde gern mehr wisse Is this game for or about me?,Is this game for or about me?,Ist dieses Spiel für oder über mich?,,, "[ul] This game tells one story about one fictional character. -This character was designed to tell an honest and accessible story about identity and trauma. +This character was desiged to tell an honest and acsssible story about identity and trauma. This is not the game for you if you are looking for escapism. This is not therapy. -You might feel understood if experiences you've had are close to the characters. +You might feel understood if exeriences you've had are close to the characters. It might help you understand a friend. It will tell you things a group of peers, that reflected about their similar, but specific experiences, want more people to know about. -This is made by betalars, who has many overlapping experiences with this character. They made sure to consult people, who can speak from their own experiences about subjects, where betalars could not. +This is made by betalars, who has many overlapping experiences with this character. They made sure to consult people, who can speak from their own exerpiences about subjects, where betalars could not. [/ul]","[ul] This game tells one story about one fictional character. -This character was designed to tell an honest and accessible story about identity and trauma. +This character was desiged to tell an honest and acsssible story about identity and trauma. This is not the game for you if you are looking for escapism. This is not therapy. -You might feel understood if experiences you've had are close to the characters. +You might feel understood if exeriences you've had are close to the characters. It might help you understand a friend. It will tell you things a group of peers, that reflected about their similar, but specific experiences, want more people to know about. -This is made by betalars, who has many overlapping experiences with this character. They made sure to consult people, who can speak from their own experiences about subjects, where betalars could not. +This is made by betalars, who has many overlapping experiences with this character. They made sure to consult people, who can speak from their own exerpiences about subjects, where betalars could not. [/ul]","[ul] -In diesem Spiel wird eine Geschichte eines fiktionalen Charakters erzählt. +In diesem Spiel wird eine Geschichte eines fitkionalen Charakters erzählt. Der Charakter wurde geschrieben, um eine zugängliche und ehrliche Geschichte über Trauma zu erzählen. -Dieses Spiel bietet keinen Eskapismus. +Dieses Spiel bietet keinen Eskarpismus. Dieses Spiel ist keine Therapie. Vielleicht fühlst du dich verstanden, wenn deine Erfahrungen dem Charakter ähneln. -Vielleicht hilft es dir, jemand befreundetes zu verstehen. +Vielleicht hillft es dir, jemand befreundetes zu verstehen. Dieses Spiel wurde von einer Gruppe an Leuten geschaffen, die sehr spezifische Erfahrungen, die sie gemeinsam gemacht haben, teilen wollten. Dieses Spiel ist von betalars. An vielen Stellen wurde hier aus eigener Erfahrung geschrieben und da, wo keine eigenen Erfahrungen da waren, wurden Betroffene einbezogen. [/ul]",,,leave the [ul] and [/ul] please avoid using gendered words for betalars if possible (they are non-binary) What may be difficult about the premise?,What may be difficult about the premise?,Warum könnte die Prämisse schwierig sein?,,, -"In this game, you will encounter situations that are problematic and will have a negative impact on the Mental Health of the character you are playing as. This game will establish hurtful assumptions this character develops about themselves and you may not resolve all of them right away. You will have some agency, but it is limited by the games narrative and also chance. You are encouraged and will be able to resolve hurtful assumptions later in the game.","In this game, you will encounter situations that are problematic and will have a negative impact on the Mental Health of the character you are playing as. This game will establish hurtful assumptions this character develops about themselves and you may not resolve all of them right away. You will have some agency, but it is limited by the games narrative and also chance. You are encouraged and will be able to resolve hurtful assumptions later in the game.","Dieses Spiel wird Erfahrungen thematisieren, die sich negativ auf den gespielten Charakter auswirken. Das Spiel wird schädliche Annahmen etablieren, die der Charakter über sich hat und nicht immer sofort auflösen. Du kannst darauf Einfluss nehmen, aber deine Möglichkeiten sind durch Spielmechanik und Narrative beschränkt. Du sollst und kannst vieles später aufarbeiten.",,, +"In this game, you will encounter situations that are problematic and will have a negative impact on the Mental Health of the character you are playing as. This game will establish hurtful assumptions this character develops about themselves and you may not resolve all of them right away. You will have some agency, but it is limited by the games narrative and also chance. You are encouraged and will be able to resolve hurtful assumptions later in the game.","In this game, you will encounter situations that are problematic and will have a negative impact on the Mental Health of the character you are playing as. This game will establish hurtful assumptions this character develops about themselves and you may not resolve all of them right away. You will have some agency, but it is limited by the games narrative and also chance. You are encouraged and will be able to resolve hurtful assumptions later in the game.","Dieses Spiel wird Erfahrungen thematisieren, die sich negativ auf den gespielten Charakter auswirken. Das Spiel wird schädliche Annahmen etablieren, die der Charakter über sich hat und nicht immer sofort auflösen. Du kannst darauf Einfluss nehmen, aber diene Möglichkeiten sind durch Spielmechanik und Narrative beschränkt. Du sollst und kannst vieles später aufarbeiten.",,, What are the game's topics? (Content Notes),What are the game's topics? (Content Notes),Worum geht es im Spiel (Content Warnungen),,, "This game discusses Mental Health and Sex-Positivity. It also includes a character, who is trans but you will get to know them while they are unaware about their trans identity going by their birthname. Besides social Transistioning, this game also deals with topics including Mysoginy, Sanism, Body Issues, Eating Disorders, Bullying, Martial Arts, Relationships and Rape, but not trough physical violence. Comic violence is mentioned while talking about a fictional franchise in universe.","This game discusses Mental Health and Sex-Positivity. It also includes a character, who is trans but you will get to know them while they are unaware about their trans identity going by their birthname. Besides social Transistioning, this game also deals with topics including Mysoginy, Sanism, Body Issues, Eating Disorders, Bullying, Martial Arts, Relationships and Rape, but not trough physical violence. Comic violence is mentioned while talking about a fictional franchise in universe.","In diesem Spiel geht es um mentale Gesundheit und Sex-Positivität. Es enthält einen trans Charakter, der sich darüber nicht im klaren ist und daher auch zunächst noch keinen eigenen Namen hat. Neben Sozialer Transition thematisiert das Spiel Mysoginie, Diskriminierung wegen mentalen Behinderungen, Probleme mit dem Körperbild, Essstörungen, Mobbing, Kampfkunst, Beziehungen und Vergewaltigungen, jedoch nicht durch körperliche Gewalt. Comic Gewalt wird erwähnt in einer im Spiel fiktionalen Geschichte.",,,"The Rape being discussed in this game is non-consensual sex, but also non-voilent." -Mental Health Accessibility Options,Mental Health Accessibility Options,Barrierefreiheit für psychische Störungen,,, +Mental Health Acessibility Options,Mental Health Accessability Options,Barrierefreiheit für psychische Störungen,,, "[ul] You can always Pause using Escape or Spacebar You can always choose to just get a neutral summary of scenes or skip them entirely @@ -72,14 +72,14 @@ You can always Pause using Escape or Spacebar You can always choose to just get a neutral summary of scenes or skip them entirely [/ul]","[ul] 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 kanns dir wünschen, dass du bei schwierige Szenen überspringen kannst und eine neutrale Zusammenfassung davon bekommst.",,, show content notes during the game,show content notes during the game,Inhaltswarnungen im Spiel anzeigen,,, allow me to skip scenes,allow me to skip scenes,Überspringen von Szenen ermöglichen,,, "[center][i]I assure you I did my best, But I am only human and this is just one game.[/i][/center]","[center][i]I assure you I did my best, But I am only human and this is just one game.[/i][/center]","[center][i]Ich verspreche ich habe mein Bestes getan, Aber ich bin nur ein Mensch und kein Spiel wird je -ein Leben vollumfänglich zeigen können.[/i][/center]",,,"This is intentionally phrased as “only one game” instead of “only a game”, hinting at it being meaningful, but limited in what it can convey on its own." +ein Leben vollumfänglich zeigen können.[/i][/center]",,,"This is intentionally pheased as “only one game” instead of “only a game”, hinting at it being maningful, but limited in what it can convey on it’s own." new Game,new Game,neues Spiel,,, continue,continue,weiter spielen,,, load,load,Spiel laden,,, @@ -92,23 +92,23 @@ General,General,Allgemeines,,,In the context of a video settings menu apply preset,apply preset,Voreinstellungen,,, Performance,Performance,Leistungsschonend,,, Balanced,Balanced,Ausgeglichen,,, -Quality,Quality,höchste Qualität,,, +Quality,Quality,Qualität,,, Fulscreen Mode,Fulscreen Mode,Fenster-Modus,,, Windowed,Windowed,im Fenster,,, Fullscreen,Fullscreen,Vollbild,,, -exclusive Fullscreen,exclusive Fullscreen,exklusives Vollbild,,, +exclusive Fullscreen,exclusive Fullscreen,exklusived Vollbild,,, Rendering Scale,Rendering Scale,Skalierung,,, -reset,reset,zurücksetzen,,, +reset,reset,zurück setzen,,, Super Resolution,Super Resolution,Super Resolution,,, disabled,disabled,aus,,, limit FPS,limit FPS,FPS begrenzen,,, Graphic Fidelity,Graphic Fidelity,graphische Qualität,,, -Lighting Quality,Lighting Quality,Lichtqualität,,, +Global Illumination,Global Illumination,Globale Illumination,,, minimum,minimum,minimum,,, -low (SDF Global Illumination),low (SDF Global Illumination),niedrig (SDF globale Illumination),,, -medium (SDF and Screen Space Global Illumination),medium (SDF and Screen Space Global Illumination),medium (SDF und Screen Space globale Illumination),,, -high (SDF and Screen Space Global Illumination),high (SDF and Screen Space Global Illumination),hoch (SDF und Screen Space globale Illumination),,, -Shadow Quality,Shadow Quality,Schattenqualität,,, +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),,, +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,,, performance,performance,leistungsschonend,,, balanced,balanced,ausgeglichen,,, quality,quality,höchste Qualität,,, @@ -125,15 +125,15 @@ close,close,zurück,,, save and apply,save and apply,speichern und anwenden,,, "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 Veränderungen. Möchtest du wirklich zurück ohne zu speichern?",,, leave,leave,wirklich verlassen,,, save,save,speichern,,, abort,abort,abbrechen,,, Gameplay Settings,Gameplay Settings,Spieleinstellungen,,, -invert Y (gamepad),invert Y (gamepad),Y-Achse invertieren,,, +invert Y (gamepad),invert Y (gamepad),Y-Axhse invertieren,,, Input Sensitivity,Input Sensitivity,Eingabesensibilität,,, -Stream Overlay,Stream Overlay,Stream-Einblendungen,,, +Stream Overlay,Stream Overlay,Stream-Einlbendungen,,, Displays content note and currently playing music at a corner of the screen.,Displays content note and currently playing music at s corner of the screen.,Zeigt Hinweise zu sensiblen Themen und aktuell laufender Musik an einer Ecke des Bildschirms an.,,, none,none,keine,,, top left,top left,oben links,,, @@ -151,125 +151,125 @@ Exploring social service year.,Exploring social service year.,Während des FSJ., Transitioning to university.,Transitioning to university.,Übergang zur Universität.,,, Exploring dorm room.,Exploring dorm room.,Während des Studiums,,, Ending,Ending,Ende,,, -I never put in much effort for homework,I never put in much effort for homework,Ich habe mir nie Mühe bei Hausaufgaben gegeben,,, -but at least I get good grades.,but at least I get good grades.,aber zumindest waren meine Noten gut.,,, -my peers were upset about that.,my peers were upset about that.,meine Klasse war deswegen sauer.,,, -I like my teachers more than my classmates,I like my teachers more than my classmates,"Ich komm mit meinen Lehrern besser klar, als mit meiner Klasse.",,, -doing voluntary social service at my school would be great.,doing voluntary social service at my school would be great.,vielleicht sollte ich ein FSJ vor dem Studium machen,,, -maybe I want to become a teacher.,maybe I want to become a teacher.,vielleicht sollte ich Lehrerin werden.,,, -I can put ages into things I enjoy,I can put ages into things I enjoy,"Ich versinke in Dingen, die mir Freude machen",,, -my mother would be worried about that,my mother would be worried about that,meiner Mutter macht das Sorgen.,,, -Mr Thomas thinks that makes me gifted.,Mr Thomas thinks that makes me gifted.,Herr Thomas denkt das macht mich begabt.,,, -Comic heroes are my role models,Comic heroes are my role models,Comic Helden sind meine Vorbilder,,, -"when I put in the effort, I can make the world a better place","when I put in the effort, I can make the world a better place","wenn ich mich nur anstrenge, kann ich die Welt verbessern!",,, -and I want to be like agent q!,and I want to be like agent q!,"Ich will so sein, wie Agent Clue!",,, -I like boy stuff,I like boy stuff,Ich mag Jungs Kram,,, -yet they think I'm just pretending,yet they think I'm just pretending,aber die denken ich tu einfach nur so.,,, -and girls don't get that.,and girls don't get that.,und Mädchen verstehen das einfach nicht!,,, -"When Jojo got teased for trying, I pretty much exploded","When Jojo got teased for trying, I pretty much exploded","Ich bin ausgerastet, weil Jojo für ihre Mühe gemobbt wurde",,, -"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 das mir helfen würde.",,, -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!",,, -I stopped doing Jiu Jitsu.,I stopped doing Jiu Jitsu.,Ich habe mit Jiu Jutsu aufgehört,,, -My body just didn't feel right,My body just didn't feel right,mein Körper hat sich falsch angefühlt,,, -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,,, -I know how to properly hit people,I know how to properly hit people,"Ich weiß, wie man ordentlich zuschlägt",,, -that gives me a lot of confidence.,that gives me a lot of confidence.,das gibt mir viel Selbstvertrauen.,,, -and that’s a great 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 didn't even move! Yet he dared to assume, that ","Lukas did not ask for consent, he didn't explain a thing, I didn't 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 -"I was wet, so I must have been into it.","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 content above. -"Lukas jumped me, he didn't even explain a thing or ask consent. I was confused and paralyzed, so ","Lukas jumped me, he didn't even explain a thing or ask consent. I was confused and paralyzed, 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 -I didn't say stop.,I didn't say stop.,Ich habe nicht Stopp gesagt.,,,This line on itself should seem like a intrusive thought on its own without the contect above. -I feel like I am not from of this world,I feel like I am not from of this world,Ich fühl mich wie von einer anderen Welt,,, -I like being unique like that,I like being unique like that,ich mag es so besonders zu sein.,,, -I am thankful for the few friends that get me,I am thankful for the few friends that get me,"gut, dass ich ein paar Freunde habe, die das verstehen.",,, -I fear being rejected,I fear being rejected,"Ich habe Angst, ausgeschlossen zu werden",,, -that makes it hard to find friends,that makes it hard to find friends,darum fällt mir Freunde finden schwer.,,, -I'm afraid I will just get laughed at,I'm afraid I will just get laughed at,"was, wenn ich deswegen ausgelacht werde?",,, -I am just too many things at once,I am just too many things at once,Ich bin zu viel gleichzeitig.,,, -it is just so overwhelming for me,it is just so overwhelming for me,das ist einfach zu viel für mich.,,, -this is just too much for others,this is just too much for others,das ist einfach zu viel für andere.,,, -"[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.",das ist einfach zu viel für mich.,,, +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.,,, +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.",,, +volunteering,doing voluntary social service at my school would be great.,vielleicht sollte ich ein FSJ vor dem Stidum machen,,, +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",,, +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.,,, +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!",,, +thomas_gifted,and I want to be like agent q!,"Ich will so sein, wie Agend Clue!",,, +boy_stuff,I like boy stuff ,Ich mag Jugns Kram,,, +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!,,, +teasing,"When Jojo got teased 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.",,, +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,,, +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,,, +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.,,, +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 didn’t even move! Yet he dared to assume, that ","Lukas did not ask for consent, he didn't explain a thing, I didn’t 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 it’s 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 +stop,I didn’t say stop.,Ich habe nicht Stopp gesagt.,,,This line on itself should seem like a intrusive thought on it’s 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,,, +unique,I like being unique like that,ich mag es so besonders zu sein.,,, +few_friends,I am thankful for the few friends that get me,"gut, dass ich ein paar Freunde habe, die das verstehen.",,, +rejection,I fear being rejected,"Ich habe Angst, ausgeschlossen zu werden",,, +finding_friends,that makes it hard to find friends,darum fällt mir Freunde finden schwer.,,, +laughed_at,I'm afraid I will just get laughed at,"was, wenn ich deswegen ausgelacht werde?",,, +confusion,I am just too many things at once,Ich bin zu viel gleichzeitig.,,, +inner_conflict,it is just so overwhealming for me,das ist einfach überfordernd für mich.,,, +outer_conflict,this is just too much for others,das ist einfach überfordernd für andere.,,, +"[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. ",,, "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. ",,, "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]",,, -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],,, -Dinner was difficult.,[p]Dinner was difficult.,[p]Abendbrot war die Hölle.,,, -"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]",,, -She was always so worried.,[p]She was always so worried:,[p]Sie war immer besorgt.,,, -" ‘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?, ",,, -"""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]",,, -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]",,, -"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, ",,, -- 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? ",,, -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. ",,, -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],,, +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 Unterbrechnungen einfach nicht ab. Wir haben uns so oft deswegen gestritten.[/p],,, +Dinner was difficult. ,[p]Dinner was difficult. ,[p]Abendbrot war die Hölle. ,,, +"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]",,, +She was always so worried.,[p]She was always so worried: ,[p]Sie war immer besorgt. ,,, +" ‘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?, ",,, +"""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]",,, +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]",,, +"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, ",,, +- 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? ",,, +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. ",,, +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],,, 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]",,, -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]",,, -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]",,, -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. ",,, +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]",,, +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]",,, +Moonlight trickled down trough clouds and twigs as Dräven tapped trough the night.,[p]Moonlight trickled down trough clouds and twigs as Dräven tapped trough the night. ,"[p]Das Mondlicht spielte mit Wolken und Geäst, da lief Dräven durch die Nacht. ",,, 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]",,, -"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. ",,, +"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 eigner Schweif. ",,, "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]",,, "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]",,, -When suddenly: Was that chatter?,[p]When suddenly: Was that chatter?[/p],[p]Plötzlich: war das Keckern?[/p],,, -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.,,, +When suddently: Was that chatter?,[p]When suddently: Was that chatter?[/p],[p]Plötzlich: war das Keckern?[/p],,, +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. ,,, "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]",,, 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],,, -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.,,, +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. ,,, "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. ",,, "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],,, "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. ",,, -"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],,, -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. ",,, -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. ",,, -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],,, +"Northern lights danced trough the sky to form wings, that met at a sleak body made of stars and clouds.","Northern lights danced trough the sky to form wings, that met at a sleak 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],,, +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 erwiederten. ",,, +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. ",,, +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],,, But his tears were of joy: It was the first time Dräven saw another creature of many kinds.,[p]But his tears were of joy: It was the first time Dräven saw another creature of many kinds.[/p],"[p]Doch es waren Tränen der Freude. Denn es war das erste mal, dass Dräven ein anderes Viel-Wesen sah.[/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.,[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.,"Boar, warum hängt hier noch dieser Müll? Ich hab Jiu Jutsu einfach verkackt.",,, -I mean I did enjoy it while it lasted. Being able to properly hit people was great.,I mean I did enjoy it while it lasted. Being able to properly hit people was great.,Ich meine … ich hatte Spaß damals. Leute gut Schlagen können ist großartig.,,, +Why do i still have this junk lying around? It’s not like I want to do ju jutsu ever again. I just fucked it.,[p]Why do i still have this junk lying around? It’s not like I want to do ju jutsu ever again. I just fucked it. ,"Boar, warum hängt hier noch dieser Müll? Ich hab Jui Jutsu einfach verkackt.",,, +I mean I did enjoy it while it lasted. Being able to properly hit people was great. ,I mean I did enjoy it while it lasted. Being able to properly hit people was great. ,Ich meine … ich hatte Spaß damals. Leute gut Schlagen können ist großartig.,,, "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. ","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.[/p]","Es gab mir Selbstvertrauen. Ich konnte Leute einschüchtern, wenn sie darum gebettelt haben aufs Maul zu bekommen und weil ich das nur einmal tatsächlich getan habe, war es auch ein super Ventil.",,, -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]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],"Ich meine … meine Titten waren die Hölle beim aufwärmen und die Umkleide hat wirklich keinen Spiegel gebraucht. Vielen Dank, ich brauche keine Erinnerung an meinen fetten Arsch. Aber wenigstens hatte ich Lukas.",,, -He was such a huge nerd. He studied math in his third semester and could talk for hours about his passion.,[p]He was such a huge nerd. He studied math in his third semester and could talk for hours about his passion.,Er war so ein Nerd. Er konnte so gut reden. Über Mathe. Er war in seinem dritten Semester und konnte stundenlang erzählen.,,, -Also: my math grades pretty much leaped for my final year in high school thanks to him.,Also: my math grades pretty much leaped for my final year in high school thanks to him.,Und ich glaube mein Mathe-Abi war bestimmt drei Punkte besser durch ihn.,,, -"He also helped me so much with jiu jitsu, as he properly floored me when I slipped up. ","He also helped me so much with jiu jitsu, as he properly floored me when I slipped up.[/p]","Und ach bei Jui Jutsu … es hat mir so sehr geholfen, dass er mich einfach anständig hingelegt hat, wenn ich gefailed habe.",,, -Also - unlike everyone else - he understood that I didn't want people to mind my chest.,[p]Also - unlike everyone else - he understood that I didn't want people to mind my chest.,"Und er war der einzige, der wirklich verstanden hat, dass mir egal war, ob Leute mir an die Brüste kommen.",,, -So Fighting for wins with him was actually rewarding even tho more often than not I ended up having to tap out.,So Fighting for wins with him was actually rewarding even tho more often than not I ended up having to tap out.,"Mit ihm war Kämpfen so gut – auch wenn ich üblicherweise diejenige war, die abschlagen musste und nicht er.",,, +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]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],"Ich meine … meine Titten waren die Hölle beim aufwärmen und die Umkleide hat wirklich keinen Spiegel gebraucht. Vielen Dank, ich brauche keine Erinnerung an meinen fetten Arsch. Aber wenigstens hatte ich Lukas.",,, +He was such a huge nerd. He studied math in his third semester and could talk for hours about his passion.,[p]He was such a huge nerd. He studied math in his third semester and could talk for hours about his passion. ,Er war so ein Nerd. Er konnte so gut reden. Über Mathe. Er war in seinem dritten Semester und konnte stundenlang erzählen.,,, +Also: my math grades pretty much leaped for my final year in high shool thanks to him.,Also: my math grades pretty much leaped for my final year in high shool thanks to him. ,Und ich glaube mein Mathe-Abi war bestimmt drei Punkte besser durch ihn.,,, +"He also helped me so much with jui jitsu, as he properly floored me when I slipped up. ","He also helped me so much with jui jitsu, as he properly floored me when I slipped up.[/p]","Und ach bei Jui Jutsu … es hat mir so sehr geholfen, dass er mich einfach anständig hingelegt hat, wenn ich gefailed habe.",,, +Also - unlike everyone else - he understood that I didn’t want people to mind my chest. ,[p]Also - unlike everyone else - he understood that I didn’t want people to mind my chest. ,"Und er war der einzige, der wirklich verstanden hat, dass mir egal war, ob Leute mir an die Brüste kommen.",,, +So Fighting for wins with him was actually rewarding even tho more often than not I ended up having to tap out.,So Fighting for wins with him was actually rewarding even tho more often than not I ended up having to tap out. ,"Mit ihm war Kämpfen so gut – auch wenn ich üblicherweise diejenige war, die abschlagen musste und nicht er.",,, We also had my first proper kiss. I thought I loved him. But now?,We also had my first proper kiss. I thought I loved him. But now?[/p],"Wir hatten auch meinen ersten richtigen Kuss. Ich war so verliebt, und jetzt?",,, -He was weird that evening. Even more huggy and hyperactive than usual.,[p]He was weird that evening. Even more huggy and hyperactive than usual.[/p],Es war so merkwürdig. Irgendwie noch hibbeliger und näher als so schon.,,, +He was weird that evening. Even more huggy and hyperactive than usual. ,[p]He was weird that evening. Even more huggy and hyperactive than usual.[/p],Es war so merkwürdig. Irgendwie noch hibbeliger und näher als so schon.,,, "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]We were under my bed, reading my secret comic stash when I got tired of the floor and told him we should go upstairs. ","Wir waren unterm Bett, haben meine geheime Comic-Kiste gelesen als ich keine Lust mehr auf Boden hatte und gesagt hab lass hoch gehen.",,, -We had a play fight on my mattress. I've never seen him fight like this.,We had a play fight on my mattress. I've never seen him fight like this.,Wir haben auf meiner Matraze gekabbelt. Es war so … anders.,,, +We had a play fight on my mattress. I’ve never seen him fight like this. ,We had a play fight on my mattress. I’ve never seen him fight like this. ,Wir haben auf meiner Matraze gekabbelt. Es war so … anders.,,, "His fingers Curled across my Skin without grabbing me, like he would normally do. And he let me win","His fingers Curled across my Skin without grabbing me, like he would normally do. And he let me win ",Seine Finger sind über meinen Körper geglitten ohne mich zu greifen - und er hat mich gewinnen lassen.,,, … with this smirk on his face.,… with this smirk on his face.[/p],mig dieses Grinsen.,,, -"I rolled over exhausted when suddenly he sat on top of me, a pearl of sweat dropped from his nose on my throat.","[p]I rolled over exhausted when suddenly he sat on top of me, a pearl of sweat dropped from his nose on my throat. ","Ich habe mich erschöpft zur Seite gerollt, als er plötzlich auf mir saß. Eine Perle Schweiß fiel von seiner Nase auf meinen Hals",,, +"I rolled over exhausted when suddently he sat on top of me, a pearl of sweat dropped from his nose on my throat.","[p]I rolled over exhausted when suddently he sat on top of me, a pearl of sweat dropped from his nose on my throat. ","Ich habe mich erschöpft zur Seite gerollt, als er plötzlich auf mir saß. Eine Perle Schweiß fiel von seiner Nase auf meinen Hals",,, He started undoing his shirt.,He started undoing his shirt.[/p],Er hat sein Hemd auf gemacht.,,, Do you have condoms?,[p]”Do you have condoms?”[/p],Hast du Kondome?,,, "Yes, of course everybody has Why did he ask that?","[p]”Yes, of course everybody has Why did he ask that?”.[/p]","Natürlich, jeder hat Kondome, warum hat er das gefragt?",,, "I saw my body lying on the bed, getting undressed. I was drifting away, towards the stars.","[p]I saw my body lying on the bed, getting undressed. I was drifting away, towards the stars.","Ich habe gesehen, wie mein Körper entkleidet wurde. Ich war schwerelos zwischen den Sternen.",,, -My body didn't move. It didn't say a word when the butterflies tried to escape from its stomach as he kissed it.,My body didn't move. It didn't say a word when the butterflies tried to escape from its stomach as he kissed it.,"Mein Körper hat sich nicht bewegt. Mein Mund hat nichts gesagt, als die Schmetterlinge aus meinem Bauch ausbrechen wollten, weil der geküsst wurde.",,, -"I … observed him from afar. He … didn't seem to notice, that I had left.","I … observed him from afar. He … didn't seem to notice, that I had left. ","Ich habe Lukas von Weitem beobachtet. Ihm ist nicht aufgefallen, dass ich nicht mehr da war.",,, -That I didn't return to kiss him goodbye. That I didn't hug him when he went home.,That I didn't return to kiss him goodbye. That I didn't hug him when he went home.[/p],Dass ich ihm keinen Abschiedskuss gegeben habe. Dass ich ihn an der Tür nicht umarmt habe.,,, -My hands knocked on my brother’s door. He let me lie on his carpet.,[p]My hands knocked on my brother’s door. He let me lie on his carpet.[/p],Meine Hände klopften an Fabis tür. Ich durfte auf seinem Teppich liegen.,,, +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.,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.,"Mein Körper hat sich nicht bewegt. Mein Mund hat nichts gesagt, als die Schmetterlinge aus meinem Bauch ausbrechen wollten, weil der geküsst wurde.",,, +"I … observed him from afar. He … didn’t seem to notice, that I had left.","I … observed him from afar. He … didn’t seem to notice, that I had left. ","Ich habe Lukas von Weitem beobachtet. Ihm ist nicht aufgefallen, dass ich nicht mehr da war.",,, +That I didn’t return to kiss him good bye. That I didn’t hug him when he went home.,That I didn’t return to kiss him good bye. That I didn’t hug him when he went home.[/p],Dass ich ihm keinen Abschiedskuss gegeben habe. Dass ich ihn an der Tür nicht umarmt habe.,,, +My hands knocked on my brother’s door. He let me lie on his carpet.,[p]My hands knocked on my brother’s door. He let me lie on his carpet.[/p],Meine Hände Klopften an Fabis tür. Ich durfte auf seinem Teppich liegen.,,, I slowly returned.,[p]I slowly returned.[/p],Langsam bin ich zurück gekehrt.,,, """How did it go?, Fabian asked.","[p]""How did it go?, Fabian asked.[/p]","“Wie wars?”, fragte mein Bruder.",,, -"""It was moist”, I said.","[p]""It was moist”, I said.[/p]","“Feucht?”, fragte ich.",,, +"""It was moist”, I said.","[p]""It was moist”, I said.[/p]","“Feucht?”, frgte ich.",,, “That usually helps.”,[p]“That usually helps.”[/p],"“Das hilft.""",,, "He laughed awkwardly. I just wanted to also laugh, but curled into a ball and cried.","[p]He laughed awkwardly. I just wanted to also laugh, but curled into a ball and cried.[/p]","Er lachte peinlich berührt. Ich wollte auch lachen, aber ich habe mich zusammen gerollt und geweint.",,, -It took him a while to say something. “I … you … it's fine Lisa. I know it hurts the first time.”,[p]It took him a while to say something. “I … you … it's fine Lisa. I know it hurts the first time.”,"Er hat eine Weile gebraucht um etwas zu sagen. “Ich … du … Lisa, es ist okay. Ich weiß das erste mal tut weh.""",,, +It took him a while to say something. “I … you … it’s fine Lisa. I know it hurts the first time.” ,[p]It took him a while to say something. “I … you … it’s fine Lisa. I know it hurts the first time.” ,"Er hat eine Weile gebraucht um etwas zu sagen. “Ich … du … Lisa, es ist okay. Ich weiß das erste mal tut weh.""",,, He gently stroked the back I was curling towards him.,[p]He gently stroked the back I was curling towards him.,"Sanft streichelte er den Rücken, den ich ihm hin hielt.",,, That was good. He was a sweet angel. Why must he be so bad at comforting?,That was good. He was a sweet angel. Why must he be so bad at comforting?[/p],Das war gut. Fabi ist so gut zu mir. Warum muss er so schlecht im Trösten sein?,,, -My secret comic stash. I remember playing Clue-Men with the boys.,[p]My secret comic stash. I remember playing Clue-Men with the boys.,Meine geheime Comic-Kiste. Wir hatten damals mit den Jungs so viel Clue-Men gespielt.,,, -I had a voice for every character in that comic. But more often than not I played him: Agent Q.,I had a voice for every character in that comic. But more often than not I played him: Agent Q.,Ich hatte eine Stimme für jeden Charakter in diesem Comic. Am liebsten aber war ich er: Agent Clue.,,, +My secret comic stash. I remember playing Que-Men with the boys.,[p]My secret comic stash. I remember playing Que-Men with the boys.,Meine geheime Comic-Kiste. Wir hatten damals mit den Jungs so viel Que-Men gespielt.,,, +I had a voice for every character in that comic. But more often than not I played him: Agent Q.,I had a voice for every character in that comic. But more often than not I played him: Agent Q. ,Ich hatte eine Stimme für jeden Charakter in diesem Comic. Am liebsten aber war ich er: Agend Clue.,,, "Going under the radar, putting in precise work to save the world.","Going under the radar, putting in precise work to save the world. ","Mit chirurgischer Präzision im Verborgenen arbeiten, um die Welt zu retten.",,, Not having to deal with being a girl.,Not having to deal with being a girl.[/p],Kein Mädchen sein müssen.,,, "Boys were so much easier. They like cars, bikes, guns and agents.","[p]Boys were so much easier. They like cars, bikes, guns and agents.","Jungs sind so viel einfacher. Sie mögen Autos, Motorräder, Waffen und Agenten.",,, -They don't talk behind your back. They don't think everything is about relationships.,They don't talk behind your back. They don't think everything is about relationships.,Jungs reden nicht hinter deinem Rücken. Jungs denken nicht alles dreht sich um Beziehungen.,,, -"Girls don't get that. I knew they talked behind my back about me only “pretending” to like boy stuff, so I’d get laid ","[p]Girls don't get that. I knew they talked behind my back about me only “pretending” to like boy stuff, so I’d get laid ","Mädchen verstehen das nicht. Ich weiß sie haben über mich gelästert. Dass ich Jungs Kram nur gemocht hätte, um jemanden ins Bett zu kriegen.",,, +They don’t talk behind your back. They don’t think everything is about relationships.,They don’t talk behind your back. They don’t think everything is about relationships.,Jungs reden nicht hinter deinem Rücken. Jungs denken nicht alles dreht sich um Beziehungen.,,, +"Girls don’t get that. I knew they talked behind my back about me only “pretending” to like boy stuff, so I’d get laid ","[p]Girls don’t get that. I knew they talked behind my back about me only “pretending” to like boy stuff, so I’d get laid ","Mädchen verstehen das nicht. Ich weiß sie haben über mich gelästert. Dass ich Jungs Kram nur gemocht hätte, um jemanden ins Bett zu kriegen.",,, "… I mean, maybe they were right?","… I mean, maybe they were right?","… ich meine, vielleicht war was dran?",,, -Like I won't deny I was probably the first girl in my class to see a dick.,Like I won't deny I was probably the first girl in my class to see a dick.[/p],Ich hab vermutlich als erstes Mädchen meiner Stufe einen Schwanz gesehen.,,, -"But like - that’s what the boys do, right?","[p]But like - that’s what the boys do, right?[/p]","Aber das machen Jungs halt miteinander, oder?",,, +Like I won’t deny I was probably the first girl in my class to see a dick.,Like I won’t deny I was probably the first girl in my class to see a dick.[/p],Ich hab vermutlich als erstes Mädchen meiner Stufe einen Schwanz gesehen.,,, +"But like - that’s what the boys do, right?","[p]But like - that’s what the boys do, right?[/p]","Aber das machen Jungs halt miteinander, nich?",,, At least it has gotten better after me and Jojo became friends.,[p]At least it has gotten better after me and Jojo became friends.,"Zumindest hat es sich gebessert, nachdem Jojo und ich Freundinnen wurden.",,, -I still remember how that happened. I did a voice acting workshop in art class.,I still remember how that happened. I did a voice acting workshop in art class.,Die Geschichte ist großartig. Ich durfte in Kunst einen Vortrag über Voice Acting halten.,,, -Being allowed to share my technique in front of everyone was just :D,Being allowed to share my technique in front of everyone was just :D,Meine Technik mit allen teilen können war einfach nur :D,,, -I mean next to nobody put in any effort. But Jojo did.,I mean next to nobody put in any effort. But Jojo did.[/p],"Ich meine … niemand hat sich wirklich angestrengt, außer Jojo halt.",,, -"When our Mr Funny then decided to ape her attempts instead of just minding his own, I pretty much exploded.","[p]When our Mr Funny then decided to ape her attempts instead of just minding his own, I pretty much exploded.[/p]",Langsam kam ich zurück.,,, +I still remember how that happend. I did a voice acting workshop in art class. ,I still remember how that happend. I did a voice acting workshop in art class. ,Die Geschichte ist großartig. Ich durfte in Kunst einen Vortag über Voice Acting halten.,,, +Being allowed to share my technique in front of everyone was just :D,Being allowed to share my technique in front of everyone was just :D ,Meine Technik mit allen teilen können war einfach nur :D,,, +I mean next to nobody put in any effort. But Jojo did.,I mean next to nobody put in any effort. But Jojo did.[/p],"Ich meine … nieman hat sich wirklich angesträngt, außer Jojo halt.",,, +"When our Mr Funny then decided to ape her attempts instead of just minding his own, I pretty much exploded.","[p]When our Mr Funny then decided to ape her attempts instead of just minding his own, I pretty much exploded.[/p]","Als unser Klassencloun sie dann nachäffen musste anstatt sich um seinen Scheiß zu kümmern, bin ich einfach eplodiert.",,, "After this, we suddenly were besties. And my class finally started to just leave me be. ","[p]After this, we suddenly were besties. And my class finally started to just leave me be. ",Danach hatte ich plötzlich eine beste Freundin und endlich meine Ruhe.,,, Maybe because I for once was friends with another girl. Maybe because I scared them. Maybe both.,Maybe because I for once was friends with another girl. Maybe because I scared them. Maybe both.[/p],"Vielleicht, weil ich nun auch mit einem Mädchen befreundet war. Vielleicht weil die Mobber plötzlich Angst vor mir hatten. Vermutlich beides.",,, skip reading (hold),skip reading (hold),zum Ende springen (gedrückt halten),,, @@ -302,4 +302,4 @@ Collect Memento,Collect Memento,Erinnerung einsammeln,,, Order Thoughts,Order Thoughts,Gedanken sortieren,,, 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?,,, -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.",,, \ No newline at end of file +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.",,, diff --git a/src/internationalisation.de.translation b/src/internationalisation.de.translation index e15bc05aa6fe93cea44517c57dcae84be89cb56e..afbc5c86c283b985b0a118a66802941affe89c67 100644 GIT binary patch delta 6563 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 Vg1)Ia=7QXsK0fpsWKYZ<{U1}b++_d& delta 6412 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 literal 7405 zcmd^^d05Ts7RQqYB9*B@l4&D}bCFahp%M+8jl}JghOI&EvUiFMB_t#>2}S0qqmZFw zyhR!)l8)QCDpArQV@`6{uk$W-%}v@V>u2mw2XlvJ$&gzze1Z z)(dQUSa@JaV3fpfmdsl!5B3fZ43z@@^XdrhQJ<)ms=gv3)Jx(MvNS?zn2-zC zU)~T^SQKss`XKN2n`jJZE!2KfxB&kb6K=RRm;qZG#K}=;^Ie*-+)?1oS!~VxB<7vL zyRmpa^9#TWHzNux1}qLN0ZeGT3;aG7A7%bL^H-R^4nB{?_n9vT|CGhJ!D^;o65hn( z_u#(}jx~Z89wQAfZ7>5cV=!Ddf!G4fhA>{8NQ>A%|You->SU(+v7EW6H{K z55ana8G_MTj0Z426udc$ZJBofKZC`X@5c0e1&-^258|waF&4#Hivbn~wuPS9z4B)9DEh5YmVoNYb!h}3m(6box z1RnqD3qLF7Cy|$fBIMyHBb092$@Zojtew&HL z^BdKdjTF8MV80tlI(b<{NB0`!RZBGHbqfxwAI{;CXSI_nIQ()}-nQ+8<380iN}i7= ze3JCAcpK3;ujjSajB_0R`k9mCY7Q^nwD8+*4wq!@3}49ME~_2(KBja)SD&FsO1V}178ol(MfK+H2Nh!_`3 zH1bPMUz2ALj`c>Tp>za))tybn9` z-S;>W?x9)UcRtaWH)KIC;cMLY{S^h?ds$61uB9yMQhAbatl#{lG~q7c%f@*({*!2| zSNDlbsv;a8hk`cY+4Z0K$kgZ%mNO#x+C8z{Eosr z?3?x=WPc>#ww+2s>xss5j*TlakrQ6*J9x)VqAOig^7a#rbK;|RtIp-{t?3JM`g6Eb zpI=uNaJXrXu8lq6xUbtH{r2C5IL~6i{f2uaZ{f7EjF&{?xhskfYEC6Q+axi?k7(@Y zvM7D?bHcIygvF*L9m0E09HzB}Xsmx!S9qc{Y~aUYsIa zKhx9vA4KDv{+14A283h%94o8E7z?@n)!p;glRT`q`m{uRfy2$>gS-+6$6oWRhkW%X z+;(;NwX;NH-+il_`$#!_Zo0Fr6#=Z{C>y}$`_=+a;s_uki z-$J91<=qG`mIXWABpUlh)y`4+m2j-jugD*xM)>92Khlke#`>(1LpwA$Tr*9(?<@{~ z?mE@Jgu^Y24Sh!wj{9iZ(^_Lec*w#goZ#uJV8^@Hoqdl8QH zu5wwu1L1|MI+@fEjqeLnd~?^#CR}wwqW zD>z&*7r~)~gqHaOy|6%<)e16{4{|M^`(t3x~_qSBI4nj;{}`ZdaGDB>eKmxkhC~ z%S-EKzakpz0?+QLw<0`uLSnziL{A#<*7;vVE(B?~X>xe6+OgOO!trsCmh@Ragzz5XimaJL4_@=g{TR_W$FZ|0GMK}EFt|`) z!{O`Ss07{S@D+Aug?b#W{`}Pq+#}8u{1h#TmnX@``x8BGf8qRa)M~=p<>qH ad75xFh=tdGGuZ#*r4EM{?u{7!(fMzXIAGrZ diff --git a/src/internationalisation.notes.translation b/src/internationalisation.notes.translation index 26e51780235c151f6d78709250bfdc5891fe9096..d4871abe2e736a1025a944f9a1f8606dcce9c40a 100644 GIT binary patch literal 8008 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 bool: @@ -273,8 +275,9 @@ func is_board_complete() -> bool: func is_board_lore() -> bool: for card in dropzone.get_children(): - if card.has_sticky_note_attached(): - if not card.current_sticky_note.is_in_group(card.name): return false + if card is Card: + if card.has_sticky_note_attached(): + if not card.current_sticky_note.sticky_id.contains(card.card_id): return false return true # Mark area that was hovered over as currently selected @@ -434,7 +437,7 @@ func rebuild_from_savedict(board_state:Dictionary): var cards: Dictionary = board_state["cards"] var stickies: Dictionary = board_state["stickies"] - var card_pile = board_of_devs.get_cards_by_name_array(cards.keys() + (stickies.keys())) + var card_pile = HardCards.get_cards_by_name_array(cards.keys() + (stickies.keys())) for card:Card in card_pile["cards"]: add_card(card) @@ -478,13 +481,10 @@ func validate_board(): # FIXME: currently, illegal temporary state exists a lot and needs to be rectified before this can be trusted. if needs_rebuild and false: - remove_child(board_of_devs) for child in dropzone.get_children(): child.free() for child in sticky_note_container.get_children(): child.free() - board_of_devs = preload("res://dev-util/board of devs.tscn").instantiate() - add_child(board_of_devs) rebuild_from_savedict(last_save_dict) current_dropzone_id = 0 diff --git a/src/logic-scenes/board/card-textures/card-sprites.tres b/src/logic-scenes/board/card-textures/card-sprites.tres index cf77ff4..9f0ddd0 100644 --- a/src/logic-scenes/board/card-textures/card-sprites.tres +++ b/src/logic-scenes/board/card-textures/card-sprites.tres @@ -1,4 +1,4 @@ -[gd_resource type="SpriteFrames" load_steps=7 format=3 uid="uid://db35k2lntld0o"] +[gd_resource type="SpriteFrames" load_steps=7 format=3 uid="uid://j7e7me3hl6xt"] [ext_resource type="Texture2D" uid="uid://sv0nhkkur1tt" path="res://logic-scenes/board/card-textures/cardsheet.png" id="1_l4v2i"] diff --git a/src/logic-scenes/board/card-textures/sticky-note_sprites.tres b/src/logic-scenes/board/card-textures/sticky-note_sprites.tres new file mode 100644 index 0000000..c9fa1ad --- /dev/null +++ b/src/logic-scenes/board/card-textures/sticky-note_sprites.tres @@ -0,0 +1,95 @@ +[gd_resource type="SpriteFrames" load_steps=14 format=3 uid="uid://bixem613olfie"] + +[ext_resource type="Texture2D" uid="uid://c8ckkjmdegyis" path="res://logic-scenes/board/card-textures/postitsheet.png" id="1_c6eib"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_nj16s"] +atlas = ExtResource("1_c6eib") +region = Rect2(0, 0, 500, 220) + +[sub_resource type="AtlasTexture" id="AtlasTexture_23tiq"] +atlas = ExtResource("1_c6eib") +region = Rect2(500, 0, 500, 220) + +[sub_resource type="AtlasTexture" id="AtlasTexture_aomh0"] +atlas = ExtResource("1_c6eib") +region = Rect2(1000, 0, 500, 220) + +[sub_resource type="AtlasTexture" id="AtlasTexture_n3svg"] +atlas = ExtResource("1_c6eib") +region = Rect2(1500, 0, 500, 220) + +[sub_resource type="AtlasTexture" id="AtlasTexture_tfg7a"] +atlas = ExtResource("1_c6eib") +region = Rect2(0, 220, 500, 220) + +[sub_resource type="AtlasTexture" id="AtlasTexture_dtics"] +atlas = ExtResource("1_c6eib") +region = Rect2(500, 220, 500, 220) + +[sub_resource type="AtlasTexture" id="AtlasTexture_e0ocs"] +atlas = ExtResource("1_c6eib") +region = Rect2(1000, 220, 500, 220) + +[sub_resource type="AtlasTexture" id="AtlasTexture_bpwg2"] +atlas = ExtResource("1_c6eib") +region = Rect2(1500, 220, 500, 220) + +[sub_resource type="AtlasTexture" id="AtlasTexture_xaxol"] +atlas = ExtResource("1_c6eib") +region = Rect2(0, 440, 500, 220) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ifitb"] +atlas = ExtResource("1_c6eib") +region = Rect2(500, 440, 500, 220) + +[sub_resource type="AtlasTexture" id="AtlasTexture_6slhe"] +atlas = ExtResource("1_c6eib") +region = Rect2(1000, 440, 500, 220) + +[sub_resource type="AtlasTexture" id="AtlasTexture_4tk5m"] +atlas = ExtResource("1_c6eib") +region = Rect2(1500, 440, 500, 220) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_nj16s") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_23tiq") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_aomh0") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_n3svg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_tfg7a") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_dtics") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_e0ocs") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_bpwg2") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_xaxol") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ifitb") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_6slhe") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_4tk5m") +}], +"loop": true, +"name": &"default", +"speed": 5.0 +}] diff --git a/src/logic-scenes/board/card.gd b/src/logic-scenes/board/card.gd index cc46608..4661b00 100644 --- a/src/logic-scenes/board/card.gd +++ b/src/logic-scenes/board/card.gd @@ -26,15 +26,9 @@ var transfor_arr: Array[Transform2D] = [ @export var text: String = "" : set(value): text = value - if get_children() != [] or Engine.is_editor_hint(): - $Label.text = value - var curr_frame = text.hash() % $BackgroundSprite.sprite_frames.get_frame_count($BackgroundSprite.animation) - $BackgroundSprite.frame = text.hash() % $BackgroundSprite.sprite_frames.get_frame_count($BackgroundSprite.animation) - $Label.rotation = deg_to_rad(transfor_arr[curr_frame].get_rotation()) - $Label.position = transfor_arr[curr_frame].origin - if !Engine.is_editor_hint(): - wiggle_pos = float(text.hash() % 100) - _handle_wiggle(0) + _on_text_updated() +var label:Label +var background_sprite: AnimatedSprite2D @export var wiggle_strength: float = 0.2 @export var wiggle_speed: float = 5 @export_range(1, 2) var scale_bump: float = 1.05 @@ -67,8 +61,10 @@ var transfor_arr: Array[Transform2D] = [ @export var voice_line: AudioStream = null @export var is_dragable: bool = false -@onready var diameter = $CollisionShape2D.shape.height -@onready var sticky_note_anchor: Node2D = %StickyNoteAncor +@export var diameter = 336.0 + +var sticky_note_position: Vector2 = Vector2(-66, 83) +var collider: Shape2D var is_dragged: bool = false: set(dragged): @@ -79,46 +75,65 @@ var is_mouse_entered: bool = false var mouse_offset: Vector2 func _init(card_name: String = "card", own_id:StringName = "-1") -> void: - text = card_name + if card_name != "void": + text = card_name card_id = own_id name = "c_%s" % card_name func _ready(): - input_event.connect(_on_input_event) mouse_entered.connect(_on_mouse_entered) mouse_exited.connect(_on_mouse_exited) + background_sprite = AnimatedSprite2D.new() + background_sprite.sprite_frames = preload("res://logic-scenes/board/card-textures/card-sprites.tres") + add_child(background_sprite, false, Node.INTERNAL_MODE_BACK) + + label = Label.new() + label.theme_type_variation = "card_text" + add_child(label, false, Node.INTERNAL_MODE_BACK) + label.size = Vector2(273.0, 131.0) + label.position = Vector2(-135.0, -82.0) + label.autowrap_mode = TextServer.AUTOWRAP_WORD + + var collision_shape: = CollisionShape2D.new() + collider = CapsuleShape2D.new() + collider.height = diameter + collider.radius = 110 + collision_shape.shape = collider + + add_child(collision_shape, false, Node.INTERNAL_MODE_BACK) + + collision_shape.rotation = PI/2 + _handle_wiggle(0) - if not Engine.is_editor_hint() and is_inside_tree(): - for sticky_note in self.get_children(): - if sticky_note is StickyNote: self.own_sticky_notes.append(sticky_note as StickyNote) - - for sticky_note in get_tree().get_nodes_in_group(name): - if sticky_note is StickyNote: self.compatible_sticky_notes.append(sticky_note as StickyNote) - compatible_sticky_notes.append_array(own_sticky_notes) - - if own_sticky_notes.size() == 2: - own_sticky_notes[0].sibling = own_sticky_notes[1] - own_sticky_notes[1].sibling = own_sticky_notes[0] - - %BackgroundSprite.frame = text.hash() % %BackgroundSprite.sprite_frames.get_frame_count(%BackgroundSprite.animation) - $Label.text = self.text - - $Label.theme = State.current_main_theme - State.theme_changed.connect(func change_theme(new_theme): $Label.theme = new_theme) - - wiggle_pos = float(text.hash() % 100) - if not Engine.is_editor_hint(): - _handle_wiggle(0) + _on_text_updated() - if text == "": - become_void() - -func become_void(): - %BackgroundSprite.add_child(load("res://logic-scenes/board/void_stuff.tscn").instantiate()) +func _on_text_updated(): + if is_node_ready(): + var curr_frame = text.hash() % background_sprite.sprite_frames.get_frame_count(background_sprite.animation) + background_sprite.frame = curr_frame + background_sprite.scale = Vector2(0.6, 0.6) + + if text == "": + if background_sprite.get_child_count() == 0: + background_sprite.add_child(load("res://logic-scenes/board/void_stuff.tscn").instantiate(), false, Node.INTERNAL_MODE_DISABLED) + background_sprite.clip_children = CanvasItem.CLIP_CHILDREN_AND_DRAW + else: + if background_sprite.get_child_count() > 0: + background_sprite.get_child(0).queue_free() + + label.text = text + + wiggle_pos = float(text.hash() % 100) + + label.rotation = deg_to_rad(transfor_arr[curr_frame].get_rotation()) + label.position = transfor_arr[curr_frame].origin + + if not Engine.is_editor_hint(): + _handle_wiggle(0) func _process(delta: float) -> void: if highlighted: @@ -135,9 +150,6 @@ func _process(delta: float) -> void: _move_card() -func get_text() -> String: - return $Label.text - func _handle_wiggle(delta): wiggle_pos += delta * wiggle_speed * wiggle_intensity @@ -156,12 +168,6 @@ func _input(event: InputEvent) -> void: if event.button_index == MOUSE_BUTTON_LEFT and not event.pressed: is_dragged = false -func _on_focus_entered(): - print(self, "is focused") - -func _on_focus_exited(): - print(self, "is not focused") - func _on_mouse_entered(): is_mouse_entered = true if not Input.is_action_pressed("mouse_left"): @@ -195,26 +201,26 @@ func _move_card(): position += (get_viewport().get_mouse_position() - position) - mouse_offset func has_sticky_note_attached() -> bool: - return sticky_note_anchor.get_child_count() > 0 + return get_child_count(false) > 0 func get_attached_sticky_note() -> StickyNote: - return null if not has_sticky_note_attached() else sticky_note_anchor.get_child(0) + return null if not has_sticky_note_attached() else get_child(0) func preview_sticky_note(sticky_note: StickyNote): sticky_note.reparent(self.get_parent()) sticky_note.attached_to = self - sticky_note.tween_transform_to(Transform2D(0, sticky_note_anchor.global_position + 0 * Vector2(sticky_note.diameter, sticky_note.diameter))) + sticky_note.tween_transform_to(Transform2D(0, global_position + sticky_note_position + 0 * Vector2(sticky_note.diameter, sticky_note.diameter))) func attach_sticky_note(sticky_note: StickyNote) -> bool: if has_sticky_note_attached(): return false - sticky_note.reparent(sticky_note_anchor) - sticky_note.position = Vector2.ZERO + sticky_note.reparent(self) + sticky_note.position = sticky_note_position sticky_note.on_board = false current_sticky_note = sticky_note sticky_note.attached_to = self - if name == "c_hit" and sticky_note.name == "p_effort": + if text == "hit" and sticky_note.text == "effort": Steam.setAchievement("FIGHT_FOR_GOOD") Steam.storeStats() @@ -242,7 +248,7 @@ func check_hover(): func reclaim_sticky_note(): current_sticky_note.on_board = false - current_sticky_note.tween_transform_to(sticky_note_anchor.global_transform) + current_sticky_note.tween_transform_to(Transform2D(0, to_global(sticky_note_position))) await current_sticky_note.transform_tween_finished current_sticky_note.reparent(self) current_sticky_note.owner = self.owner diff --git a/src/logic-scenes/board/card.tscn b/src/logic-scenes/board/card.tscn index 52d1cf1..420daf3 100644 --- a/src/logic-scenes/board/card.tscn +++ b/src/logic-scenes/board/card.tscn @@ -1,46 +1,8 @@ -[gd_scene load_steps=5 format=3 uid="uid://dy5rd437h5hsw"] +[gd_scene load_steps=2 format=3 uid="uid://dy5rd437h5hsw"] -[ext_resource type="Script" uid="uid://wv72dum1fe72" path="res://logic-scenes/board/card.gd" id="1_emip0"] -[ext_resource type="SpriteFrames" uid="uid://db35k2lntld0o" path="res://logic-scenes/board/card-textures/card-sprites.tres" id="2_mdi7r"] -[ext_resource type="Theme" uid="uid://b056fn288p8ha" path="res://logic-scenes/themes/handwriting.theme" id="3_1x4uh"] - -[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_foovg"] -radius = 110.0 -height = 336.0 +[ext_resource type="Script" uid="uid://2loic2eeec5b" path="res://logic-scenes/board/card.gd" id="1_emip0"] [node name="card" type="Area2D"] script = ExtResource("1_emip0") +text = "asdf" metadata/type = "card" - -[node name="CollisionShape2D" type="CollisionShape2D" parent="."] -position = Vector2(-0.0713516, 0.997451) -rotation = 1.5708 -shape = SubResource("CapsuleShape2D_foovg") - -[node name="BackgroundSprite" type="AnimatedSprite2D" parent="."] -unique_name_in_owner = true -clip_children = 2 -scale = Vector2(0.6, 0.6) -sprite_frames = ExtResource("2_mdi7r") -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 = -126.0 -offset_top = -77.0 -offset_right = 128.0 -offset_bottom = 88.0 -grow_horizontal = 2 -grow_vertical = 2 -rotation = 0.00872665 -theme = ExtResource("3_1x4uh") -theme_type_variation = &"card_text" -autowrap_mode = 3 - -[node name="StickyNoteAncor" type="Node2D" parent="."] -unique_name_in_owner = true -position = Vector2(-66, 83) diff --git a/src/logic-scenes/board/empty_sticky_note_panel.gd b/src/logic-scenes/board/empty_sticky_note_panel.gd index b8da04a..31b364d 100644 --- a/src/logic-scenes/board/empty_sticky_note_panel.gd +++ b/src/logic-scenes/board/empty_sticky_note_panel.gd @@ -19,7 +19,7 @@ func _ready(): custom_minimum_size = Vector2(custom_minimum_size.x, 0) var is_attatching: bool = false -func attatch_sticky_note(attatchment: StickyNote, custom_owner: Node, tween:bool = true): +func attatch_sticky_note(attatchment: StickyNote, custom_owner: Node, tween:bool = true, reparent:bool = true): is_attatching = true attatchment.on_board = false attached_sticky_note = attatchment @@ -35,7 +35,10 @@ func attatch_sticky_note(attatchment: StickyNote, custom_owner: Node, tween:bool attatchment.position = ancor_position else: custom_minimum_size = minimum_size - attatchment.reparent(self) + if reparent: + attatchment.reparent(self) + else: + add_child(attatchment) attatchment.position = ancor_position is_attatching = false attatchment.owner = custom_owner diff --git a/src/logic-scenes/board/physics-board.tscn b/src/logic-scenes/board/physics-board.tscn index 6083d18..e8f4fc8 100644 --- a/src/logic-scenes/board/physics-board.tscn +++ b/src/logic-scenes/board/physics-board.tscn @@ -1,9 +1,8 @@ -[gd_scene load_steps=10 format=3 uid="uid://bnskiyx1sksww"] +[gd_scene load_steps=9 format=3 uid="uid://bnskiyx1sksww"] [ext_resource type="Texture2D" uid="uid://bi3xqdknw5tpe" path="res://logic-scenes/board/board-texture/Cork002_2K_Color.png" id="1_8brxc"] [ext_resource type="Shader" uid="uid://kyd37e0s6fdu" path="res://logic-scenes/board/physics-board.gdshader" id="1_ggnth"] [ext_resource type="Script" uid="uid://cqsor57nvowni" path="res://logic-scenes/board/card-board.gd" id="3_8v4c4"] -[ext_resource type="PackedScene" uid="uid://bvowj4l8dtceu" path="res://dev-util/board of devs.tscn" id="4_sskx2"] [ext_resource type="Script" uid="uid://ddy8kb2hjvgss" path="res://logic-scenes/board/card collider.gd" id="6_wpxls"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_ttqei"] @@ -49,11 +48,6 @@ horizontal_scroll_mode = 0 [node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/ScrollContainer"] layout_mode = 2 -[node name="board of devs" parent="." instance=ExtResource("4_sskx2")] -process_mode = 4 -visible = false -layout_mode = 2 - [node name="up" type="Control" parent="."] layout_mode = 2 size_flags_horizontal = 4 diff --git a/src/logic-scenes/board/sticky-note.gd b/src/logic-scenes/board/sticky-note.gd index e5fb0c0..9b08125 100644 --- a/src/logic-scenes/board/sticky-note.gd +++ b/src/logic-scenes/board/sticky-note.gd @@ -24,11 +24,12 @@ signal transform_tween_finished @export var text: String = "" : set (value): - if is_inside_tree() or Engine.is_editor_hint(): - $Content/Label.text = value - $Content/BackgroundSprite.frame = text.hash() % $Content/BackgroundSprite.sprite_frames.get_frame_count($Content/BackgroundSprite.animation) + if is_node_ready(): + _on_text_updated() text = value - +var content: Node2D +var label: Label +var background_sprite: AnimatedSprite2D @export var shift_by: Vector2 = Vector2(-32, 0) @export_color_no_alpha var highlight_color: Color = Color(1.5, 1.5, 1.5) @@ -44,12 +45,12 @@ signal transform_tween_finished modulate_tween = get_tree().create_tween() modulate_tween.tween_property(self, "modulate", highlight_color, 0.1) shift_tween = get_tree().create_tween() - shift_tween.tween_property($Content, "position", shift_by, 0.2) + shift_tween.tween_property(content, "position", shift_by, 0.2) else: modulate_tween = get_tree().create_tween() modulate_tween.tween_property(self, "modulate", Color(1, 1, 1), 0.3) shift_tween = get_tree().create_tween() - shift_tween.tween_property($Content, "position", Vector2.ZERO, 0.5) + shift_tween.tween_property(content, "position", Vector2.ZERO, 0.5) else: if highlighted: modulate = Color(1, 1, 1) @@ -69,7 +70,7 @@ var is_dragged: bool = false: var initial_drag_position: Vector2 var mouse_diff: Vector2 -@onready var diameter = $CollisionShape2D.shape.height +@onready var diameter = 312.0 @export_range(1.0, 10.0) var bounce_speed: float = 8 var on_board: bool = false @@ -79,6 +80,38 @@ func _init(sticky_name: String = "card", card_id: StringName = "-1", own_id:Stri sticky_id = own_id func _ready() -> void: + if get_child_count() == 0: + content = Node2D.new() + add_child(content, false, Node.INTERNAL_MODE_BACK) + label = Label.new() + label.autowrap_mode = TextServer.AUTOWRAP_WORD + label.size = Vector2( 295.0, 97.0 ) + label.position = Vector2( -52.0, -50.0 ) + label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER + #FIXME eventually replace with better theme handling + label.theme = State.current_main_theme + State.theme_changed.connect(func change_theme(new_theme): label.theme = new_theme) + content.add_child(label, false, Node.INTERNAL_MODE_BACK) + background_sprite = AnimatedSprite2D.new() + background_sprite.sprite_frames = preload("res://logic-scenes/board/card-textures/sticky-note_sprites.tres") + background_sprite.scale = Vector2(0.65, 0.65) + background_sprite.position = Vector2(99.5, 0) + content.add_child(background_sprite, false, Node.INTERNAL_MODE_FRONT) + var collision_shape := CollisionShape2D.new() + var capsule := CapsuleShape2D.new() + capsule.radius = 48.0 + capsule.height = diameter + collision_shape.shape = capsule + add_child(collision_shape, false, Node.INTERNAL_MODE_FRONT) + collision_shape.position.x = 99.5 + collision_shape.rotation = PI/2 + + label.theme_type_variation = "card_text" + else: + label = $Content/Label + background_sprite = $Content/BackgroundSprite + content = $Content + _on_text_updated() input_event.connect(_on_input_event) mouse_entered.connect(_on_mouse_entered) @@ -86,11 +119,11 @@ func _ready() -> void: area_entered.connect(_on_area_enter) area_exited.connect(_on_area_exit) - $Content/Label.text = self.text - $Content/BackgroundSprite.frame = text.hash() % $Content/BackgroundSprite.sprite_frames.get_frame_count($Content/BackgroundSprite.animation) - $Content/Label.theme = State.current_main_theme - State.theme_changed.connect(func change_theme(new_theme): $Content/Label.theme = new_theme) + +func _on_text_updated(): + label.text = text + background_sprite.frame = text.hash() % background_sprite.sprite_frames.get_frame_count(background_sprite.animation) func replace_with(sticky_note: StickyNote): self.text = sticky_note.text @@ -117,8 +150,9 @@ func _process(delta: float) -> void: func _on_mouse_entered(): if not Input.is_action_pressed("mouse_left"): highlighted = true - if "handle_hover" in current_handle: - current_handle.handle_hover(self) + if current_handle != null: + if "handle_hover" in current_handle: + current_handle.handle_hover(self) func _on_mouse_exited(): if not is_dragged: @@ -146,7 +180,7 @@ func _on_area_exit(card: Area2D): card.highlighted = false if hovering_cards == []: hover_pos_shift = 0 - $Content.position = Vector2.ZERO + content.position = Vector2.ZERO elif card is StickyNote and is_sticky_note_in_panel(): attached_to.collapse_gap() @@ -170,7 +204,7 @@ func _move_sticky_note(): if (closest.position - position).length() > (closest.position - position).length(): card = closest closest.highlighted = true - $Content.position = (closest.sticky_note_anchor.global_position - global_position) * hover_pos_shift + content.position = (closest.sticky_note_anchor.global_position - global_position) * hover_pos_shift func is_sticky_note_attached() -> bool: return attached_to is Card diff --git a/src/logic-scenes/board/sticky-note.tscn b/src/logic-scenes/board/sticky-note.tscn index a729e46..144fd89 100644 --- a/src/logic-scenes/board/sticky-note.tscn +++ b/src/logic-scenes/board/sticky-note.tscn @@ -1,107 +1,16 @@ -[gd_scene load_steps=18 format=3 uid="uid://vkcdj8c3ytbq"] +[gd_scene load_steps=5 format=3 uid="uid://vkcdj8c3ytbq"] [ext_resource type="Script" uid="uid://r12efqgk6t4n" path="res://logic-scenes/board/sticky-note.gd" id="1_yvh5n"] -[ext_resource type="Texture2D" uid="uid://c8ckkjmdegyis" path="res://logic-scenes/board/card-textures/postitsheet.png" id="2_j17jn"] +[ext_resource type="SpriteFrames" uid="uid://bixem613olfie" path="res://logic-scenes/board/card-textures/sticky-note_sprites.tres" id="2_260t4"] [ext_resource type="Theme" uid="uid://b056fn288p8ha" path="res://logic-scenes/themes/handwriting.theme" id="3_qmm0h"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ml4q7"] radius = 48.0 height = 312.0 -[sub_resource type="AtlasTexture" id="AtlasTexture_nj16s"] -atlas = ExtResource("2_j17jn") -region = Rect2(0, 0, 500, 220) - -[sub_resource type="AtlasTexture" id="AtlasTexture_23tiq"] -atlas = ExtResource("2_j17jn") -region = Rect2(500, 0, 500, 220) - -[sub_resource type="AtlasTexture" id="AtlasTexture_aomh0"] -atlas = ExtResource("2_j17jn") -region = Rect2(1000, 0, 500, 220) - -[sub_resource type="AtlasTexture" id="AtlasTexture_n3svg"] -atlas = ExtResource("2_j17jn") -region = Rect2(1500, 0, 500, 220) - -[sub_resource type="AtlasTexture" id="AtlasTexture_tfg7a"] -atlas = ExtResource("2_j17jn") -region = Rect2(0, 220, 500, 220) - -[sub_resource type="AtlasTexture" id="AtlasTexture_dtics"] -atlas = ExtResource("2_j17jn") -region = Rect2(500, 220, 500, 220) - -[sub_resource type="AtlasTexture" id="AtlasTexture_e0ocs"] -atlas = ExtResource("2_j17jn") -region = Rect2(1000, 220, 500, 220) - -[sub_resource type="AtlasTexture" id="AtlasTexture_bpwg2"] -atlas = ExtResource("2_j17jn") -region = Rect2(1500, 220, 500, 220) - -[sub_resource type="AtlasTexture" id="AtlasTexture_xaxol"] -atlas = ExtResource("2_j17jn") -region = Rect2(0, 440, 500, 220) - -[sub_resource type="AtlasTexture" id="AtlasTexture_ifitb"] -atlas = ExtResource("2_j17jn") -region = Rect2(500, 440, 500, 220) - -[sub_resource type="AtlasTexture" id="AtlasTexture_6slhe"] -atlas = ExtResource("2_j17jn") -region = Rect2(1000, 440, 500, 220) - -[sub_resource type="AtlasTexture" id="AtlasTexture_4tk5m"] -atlas = ExtResource("2_j17jn") -region = Rect2(1500, 440, 500, 220) - -[sub_resource type="SpriteFrames" id="SpriteFrames_2amsi"] -animations = [{ -"frames": [{ -"duration": 1.0, -"texture": SubResource("AtlasTexture_nj16s") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_23tiq") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_aomh0") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_n3svg") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_tfg7a") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_dtics") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_e0ocs") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_bpwg2") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_xaxol") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_ifitb") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_6slhe") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_4tk5m") -}], -"loop": true, -"name": &"default", -"speed": 5.0 -}] - [node name="sticky-note" type="Area2D"] script = ExtResource("1_yvh5n") +text = "card" highlight_color = Color(1.2, 1.2, 1.2, 1) metadata/type = "sticky-note" @@ -115,8 +24,8 @@ shape = SubResource("CapsuleShape2D_ml4q7") [node name="BackgroundSprite" type="AnimatedSprite2D" parent="Content"] position = Vector2(99.5, 0) scale = Vector2(0.65, 0.65) -sprite_frames = SubResource("SpriteFrames_2amsi") -frame = 5 +sprite_frames = ExtResource("2_260t4") +frame = 3 [node name="Label" type="Label" parent="Content"] anchors_preset = 8 @@ -132,5 +41,6 @@ grow_horizontal = 2 grow_vertical = 2 theme = ExtResource("3_qmm0h") theme_type_variation = &"card_text" +text = "card" vertical_alignment = 1 autowrap_mode = 3 diff --git a/src/logic-scenes/board/void_card.tscn b/src/logic-scenes/board/void_card.tscn index 71f89e7..e48416e 100644 --- a/src/logic-scenes/board/void_card.tscn +++ b/src/logic-scenes/board/void_card.tscn @@ -2,7 +2,7 @@ [ext_resource type="Script" uid="uid://2loic2eeec5b" path="res://logic-scenes/board/card.gd" id="1_6ceun"] [ext_resource type="Texture2D" uid="uid://sv0nhkkur1tt" path="res://logic-scenes/board/card-textures/cardsheet.png" id="2_buevv"] -[ext_resource type="PackedScene" uid="uid://b2st6v25p0ley" path="res://logic-scenes/board/void_stuff.tscn" id="3_ipd1f"] +[ext_resource type="PackedScene" path="res://logic-scenes/board/void_stuff.tscn" id="3_ipd1f"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_aqrbw"] radius = 110.0 @@ -80,6 +80,7 @@ animations = [{ [node name="c_void" type="Area2D"] script = ExtResource("1_6ceun") +text = "card" metadata/type = "card" [node name="CollisionShape2D" type="CollisionShape2D" parent="."] diff --git a/src/logic-scenes/board/void_stuff.tscn b/src/logic-scenes/board/void_stuff.tscn index 9adebae..1199736 100644 --- a/src/logic-scenes/board/void_stuff.tscn +++ b/src/logic-scenes/board/void_stuff.tscn @@ -1,8 +1,46 @@ -[gd_scene load_steps=10 format=3 uid="uid://b2st6v25p0ley"] +[gd_scene load_steps=9 format=3 uid="uid://b2st6v25p0ley"] [ext_resource type="Texture2D" uid="uid://kpmk21d8rlso" path="res://logic-scenes/board/particle_textures/star.png" id="1_kbpjt"] [ext_resource type="Texture2D" uid="uid://bqilajx05t0eb" path="res://logic-scenes/board/particle_textures/void_nomotion.png" id="2_5si5k"] +[sub_resource type="GDScript" id="GDScript_kbpjt"] +script/source = "extends Node2D + +@onready var particles = $GPUParticles2D +@onready var sprite = $Sprite2D +@onready var initial_position = position +@onready var parent +var noise_position = randf() +var noise: Noise = FastNoiseLite.new() + +func _ready() -> void: + State.settings_changed.connect(_on_settings_updated) + + parent = get_parent() + +func _process(delta): + + if not State.reduce_motion: + + noise_position += delta * 10 + + var random_position = Vector2(noise.get_noise_1d(noise_position*2), noise.get_noise_1d(-noise_position)) + + random_position = random_position.normalized() * pow(random_position.length()*2, 3) * 5 + + parent.position = initial_position - random_position + + parent.rotation = noise.get_noise_1d(noise_position*10) * random_position.length() * 0.01 + + particles.position = random_position + + else: position = initial_position + +func _on_settings_updated(): + particles.visible = !State.reduce_motion + sprite.visible = State.reduce_motion +" + [sub_resource type="Gradient" id="Gradient_v70nd"] interpolation_mode = 2 offsets = PackedFloat32Array(0, 0.0529197, 0.191606, 1) @@ -43,21 +81,8 @@ scale_curve = SubResource("CurveTexture_cg0w1") color_ramp = SubResource("GradientTexture1D_xxq8p") turbulence_noise_strength = 0.1 -[sub_resource type="GDScript" id="GDScript_vjwk7"] -script/source = "extends GPUParticles2D - -func _process(_delta): - self.visible = !State.reduce_motion -" - -[sub_resource type="GDScript" id="GDScript_tgc0b"] -script/source = "extends Sprite2D - -func _process(_delta): - self.visible = State.reduce_motion -" - [node name="void_stuff" type="Node2D"] +script = SubResource("GDScript_kbpjt") [node name="GPUParticles2D" type="GPUParticles2D" parent="."] amount = 500 @@ -68,10 +93,8 @@ explosiveness = 0.2 randomness = 0.14 local_coords = true process_material = SubResource("ParticleProcessMaterial_by44l") -script = SubResource("GDScript_vjwk7") [node name="Sprite2D" type="Sprite2D" parent="."] visible = false scale = Vector2(0.4, 0.4) texture = ExtResource("2_5si5k") -script = SubResource("GDScript_tgc0b") diff --git a/src/logic-scenes/card_picker/card_picker.gd b/src/logic-scenes/card_picker/card_picker.gd index 157e16f..a46bfc9 100644 --- a/src/logic-scenes/card_picker/card_picker.gd +++ b/src/logic-scenes/card_picker/card_picker.gd @@ -11,8 +11,6 @@ enum { DONE } -@onready var source_board:Control = $"board of devs" - var has_stage = false: set(focus): if not focus == has_stage: @@ -78,12 +76,12 @@ func reset(): for player in anim_players: player.play("reveal") func fill_card_slots(id: int): - var new_cards = source_board.get_cards_by_scene_id(id) + var new_cards = HardCards.get_cards_by_scene_id(id) for i in range(new_cards.size()): $cards.get_child(i).remove_child($cards.get_child(i).get_child(1)) var new_card:Card = new_cards[i] - new_card.reparent($cards.get_child(i), false) + $cards.get_child(i).add_child(new_card) new_card.owner = self new_card.connect("mouse_entered", Callable(self, "get_highlight")) @@ -93,8 +91,8 @@ func fill_card_slots(id: int): func fill_post_slots(): var sticky_notes: Array[StickyNote] = [] - for card in output: - sticky_notes.append_array(card.own_sticky_notes) + for card: Card in output: + sticky_notes.append_array(HardCards.get_children_of(card.card_id)) for note:StickyNote in sticky_notes: note.current_handle = self @@ -124,7 +122,6 @@ func _input(event): pick(curr_selection_id) elif event.is_action_pressed("skip"): ##fixme: using skip causes a lot of invalid state - return if selection_state == CARDS_SELECTED: transition() show_posts() @@ -196,11 +193,12 @@ func transition(): fill_post_slots() await anim_players[0].animation_finished - show_posts() + if selection_state != POSTS: + show_posts() elif selection_state == POSTS_SELECTED: - var out_str:Array[String] = [] + var out_str:Array[StringName] = [] for card in output: - out_str.append(card.name) + out_str.append(card.text) cards_picked.emit(out_str) get_parent().get_parent().get_parent().dnd = false selection_state = DONE @@ -209,7 +207,7 @@ func transition(): func show_posts(): selection_state = POSTS for player:AnimationPlayer in anim_players: - player.play("reset") + player.play("RESET") func handle_hover(new_highlight): diff --git a/src/logic-scenes/card_picker/card_picker.tscn b/src/logic-scenes/card_picker/card_picker.tscn index c6ff9fe..a512836 100644 --- a/src/logic-scenes/card_picker/card_picker.tscn +++ b/src/logic-scenes/card_picker/card_picker.tscn @@ -1,9 +1,8 @@ -[gd_scene load_steps=65 format=3 uid="uid://brk4hjdf2x81a"] +[gd_scene load_steps=64 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="PackedScene" uid="uid://dy5rd437h5hsw" path="res://logic-scenes/board/card.tscn" id="2_dqebt"] -[ext_resource type="PackedScene" uid="uid://vkcdj8c3ytbq" path="res://logic-scenes/board/sticky-note.tscn" id="3_ggbxq"] -[ext_resource type="PackedScene" uid="uid://bvowj4l8dtceu" path="res://dev-util/board of devs.tscn" id="4_1kvte"] +[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"] [sub_resource type="Animation" id="Animation_dinvx"] length = 0.001 @@ -1526,8 +1525,10 @@ libraries = { &"": SubResource("AnimationLibrary_gdxmh") } -[node name="card" parent="cards/card_1" instance=ExtResource("2_dqebt")] +[node name="Card" type="Area2D" parent="cards/card_1"] +script = ExtResource("2_f4sp4") text = "Slot 1" +metadata/_custom_type_script = "uid://2loic2eeec5b" [node name="card_2" type="Control" parent="cards"] layout_mode = 2 @@ -1538,8 +1539,10 @@ libraries = { &"": SubResource("AnimationLibrary_oxheu") } -[node name="card" parent="cards/card_2" instance=ExtResource("2_dqebt")] +[node name="Card" type="Area2D" parent="cards/card_2"] +script = ExtResource("2_f4sp4") text = "Slot 2" +metadata/_custom_type_script = "uid://2loic2eeec5b" [node name="card_3" type="Control" parent="cards"] layout_mode = 2 @@ -1555,8 +1558,10 @@ libraries = { &"": SubResource("AnimationLibrary_8blxm") } -[node name="card" parent="cards/card_3" instance=ExtResource("2_dqebt")] +[node name="Card" type="Area2D" parent="cards/card_3"] +script = ExtResource("2_f4sp4") text = "Slot 3" +metadata/_custom_type_script = "uid://2loic2eeec5b" [node name="sticky_notes" type="Panel" parent="."] layout_mode = 2 @@ -1574,8 +1579,10 @@ libraries = { } autoplay = "ini" -[node name="sticky-note" parent="sticky_notes/sticky_note_1" instance=ExtResource("3_ggbxq")] -text = "Post 1" +[node name="StickyNote" type="Area2D" parent="sticky_notes/sticky_note_1"] +script = ExtResource("3_f4sp4") +text = "Slot 1" +metadata/_custom_type_script = "uid://r12efqgk6t4n" [node name="sticky_note_2" type="Control" parent="sticky_notes"] layout_mode = 2 @@ -1590,8 +1597,10 @@ libraries = { } autoplay = "ini" -[node name="sticky-note" parent="sticky_notes/sticky_note_2" instance=ExtResource("3_ggbxq")] -text = "Post 2" +[node name="StickyNote" type="Area2D" parent="sticky_notes/sticky_note_2"] +script = ExtResource("3_f4sp4") +text = "Slot 2" +metadata/_custom_type_script = "uid://r12efqgk6t4n" [node name="sticky_note_3" type="Control" parent="sticky_notes"] layout_mode = 2 @@ -1606,8 +1615,10 @@ libraries = { } autoplay = "ini" -[node name="sticky-note" parent="sticky_notes/sticky_note_3" instance=ExtResource("3_ggbxq")] -text = "Post 3" +[node name="StickyNote" type="Area2D" parent="sticky_notes/sticky_note_3"] +script = ExtResource("3_f4sp4") +text = "Slot 3" +metadata/_custom_type_script = "uid://r12efqgk6t4n" [node name="sticky_note_4" type="Control" parent="sticky_notes"] layout_mode = 2 @@ -1622,12 +1633,10 @@ libraries = { } autoplay = "ini" -[node name="sticky-note" parent="sticky_notes/sticky_note_4" instance=ExtResource("3_ggbxq")] -text = "Post 4" - -[node name="board of devs" parent="." instance=ExtResource("4_1kvte")] -visible = false -layout_mode = 2 +[node name="StickyNote" type="Area2D" parent="sticky_notes/sticky_note_4"] +script = ExtResource("3_f4sp4") +text = "Slot 4" +metadata/_custom_type_script = "uid://r12efqgk6t4n" [node name="thought_prompt" type="Control" parent="."] layout_mode = 2