diff --git a/.gitlab/issue_templates/bug-report.md b/.gitlab/issue_templates/bug-report.md new file mode 100644 index 0000000..d1ee344 --- /dev/null +++ b/.gitlab/issue_templates/bug-report.md @@ -0,0 +1,38 @@ +## Summary + +(This template will help you publicly describe an issue you have encountered. Contact email support, when you do not with to openly describe your Issue.) + +(Fill out what is relevant to your issue and delete what's not) + +## Steps to reproduce +(What did you do before finding the issue? Providing a step by step guide can help us solve it. Try if the issue still persists after restarting the game.) + +Example +1. Load the first Level +2. Go to the Laptop and click the screen 4 times +3. Run at the window. + +### What did you expect to happen? +(The player hits the window) + +### What happend? +(The player floats up towards the sky) + +## Did you change any settings? + +(We will provide you with an option to just dump your config here in the future, but for now just describe what you did.) + +## How do you play the game? + +(With a racing wheel and a touch screen, obviousely) + +## Please give us some System Info + +- OS: GameOS 42 +- Processor: intel Ryzen 1234XD +- Graphics Card: Radeon Battlemage Pro + +## Possible Fixes +(This is the section for nerds, that already dug up our source code and know exactly what is going on.) + +/label ~bug \ No newline at end of file diff --git a/design/contributions.md b/design/contributions.md index 1fe456b..6fb95b0 100644 --- a/design/contributions.md +++ b/design/contributions.md @@ -20,14 +20,16 @@ - [Wood Substance 009](https://ambientcg.com/view?id=WoodSubstance009) - [Wicker 010 B](https://ambientcg.com/view?id=Wicker010B) - ## Comic Illustrations - by [Fernand0FC](https://www.deviantart.com/fernand0fc), CC-BY-3.0 + [Corporate level bodyguard](https://www.deviantart.com/fernand0fc/art/Corporate-level-bodyguard-803579124) + [Into the glowing sea](https://www.deviantart.com/fernand0fc/art/Into-the-glowing-sea-834238466) + [Anti-Hero](https://www.deviantart.com/fernand0fc/art/Anti-Hero-555054767) - + +## Music + - [Foundations I by Azure Studios](https://azurestudios.bandcamp.com/album/foundations-i-24bit), CC-BY 3.0 + ## Sounds Effects - [Rain on Windows, Interior](https://freesound.org/people/InspectorJ/sounds/346641/) by [InspectorJ](https://freesound.org/people/InspectorJ/) CC-BY 3.0 - [Rain and thunder](https://freesound.org/people/MrAuralization/sounds/241294/) by [MrAuralization](https://freesound.org/people/MrAuralization/) CC-BY 3.0 diff --git a/design/itch-header.png b/design/itch-header.png new file mode 100644 index 0000000..a0d2f42 Binary files /dev/null and b/design/itch-header.png differ diff --git a/design/itch-header.svg b/design/itch-header.svg new file mode 100644 index 0000000..359504d --- /dev/null +++ b/design/itch-header.svg @@ -0,0 +1,16340 @@ + + + +of mindframe diff --git a/flake.lock b/flake.lock index f126826..7c5aaf9 100644 --- a/flake.lock +++ b/flake.lock @@ -17,12 +17,15 @@ } }, "flake-utils": { + "inputs": { + "systems": "systems" + }, "locked": { - "lastModified": 1678901627, - "narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=", + "lastModified": 1689068808, + "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=", "owner": "numtide", "repo": "flake-utils", - "rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6", + "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4", "type": "github" }, "original": { @@ -32,11 +35,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1679793451, - "narHash": "sha256-JafTtgMDATE8dZOImBhWMA9RCn9AP8FVOpN+9K/tTlg=", + "lastModified": 1689078114, + "narHash": "sha256-osG8BrX5RpKJ7wH+vI6auOU+ctvNOblT4XXCgknK47c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0cd51a933d91078775b300cf0f29aa3495231aa2", + "rev": "b6cc7ff8fee93789bc871a267ab876c3fca042cb", "type": "github" }, "original": { @@ -50,6 +53,21 @@ "flake-utils": "flake-utils", "nixpkgs": "nixpkgs" } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 4e26134..9f7c786 100644 --- a/flake.nix +++ b/flake.nix @@ -85,7 +85,7 @@ mkdir -p $out/share/${pname} # This just copies the export template and packs the game files next to it - godot --headless --export-release "linux" $out/share/${pname}/${pname} + godot4 --headless --export-release "linux" $out/share/${pname}/${pname} runHook postBuild ''; diff --git a/src/base-environments/youth_room/Collectable.gd b/src/base-environments/youth_room/Collectable.gd index b740652..997d54d 100644 --- a/src/base-environments/youth_room/Collectable.gd +++ b/src/base-environments/youth_room/Collectable.gd @@ -1,6 +1,19 @@ extends Area3D @onready var pass_to_actor = $UiWrapper/UiSprite/SubViewport/Collectable_ui +@onready var wrapper = $UiWrapper +@onready var ui = $UiWrapper/UiSprite/SubViewport.get_child(0) + +var revealed: bool = false: + set(on_stage): + revealed = on_stage + if on_stage: + wrapper.show() + ui.show() + else: + wrapper.hide() + ui.hide() + var has_mouse: bool = false # Called when the node enters the scene tree for the first time. @@ -9,9 +22,11 @@ func _ready(): func _on_mouse_entered(): input_ray_pickable = false - $UiWrapper.show() - $UiWrapper/UiSprite/SubViewport/Collectable_ui.show() + ui.collapsed = false has_mouse = true func _on_mouse_exited(): assert(false) + +func reveal(): + revealed = true diff --git a/src/base-environments/youth_room/audio/Azure Studios - mgd-723687677.mp3 b/src/base-environments/youth_room/audio/Azure Studios - mgd-723687677.mp3 new file mode 100644 index 0000000..e7e2cf1 --- /dev/null +++ b/src/base-environments/youth_room/audio/Azure Studios - mgd-723687677.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e52c9f57af34bca122ca3f4ed076ab478290f464cf09305d632779eabc8958d +size 2724674 diff --git a/src/base-environments/youth_room/audio/Azure Studios - mgd-723687677.mp3.import b/src/base-environments/youth_room/audio/Azure Studios - mgd-723687677.mp3.import new file mode 100644 index 0000000..2977738 --- /dev/null +++ b/src/base-environments/youth_room/audio/Azure Studios - mgd-723687677.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://1tvopjmo6dp2" +path="res://.godot/imported/Azure Studios - mgd-723687677.mp3-ffcb00059cdac7ecd24487bd9e38d9cb.mp3str" + +[deps] + +source_file="res://base-environments/youth_room/audio/Azure Studios - mgd-723687677.mp3" +dest_files=["res://.godot/imported/Azure Studios - mgd-723687677.mp3-ffcb00059cdac7ecd24487bd9e38d9cb.mp3str"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/src/base-environments/youth_room/room_handle.gd b/src/base-environments/youth_room/room_handle.gd index 7c32223..656773d 100644 --- a/src/base-environments/youth_room/room_handle.gd +++ b/src/base-environments/youth_room/room_handle.gd @@ -11,6 +11,8 @@ enum Modes { signal freeze signal unfreeze +signal ini_room +signal resume_room var current_mode: int = Modes.FREEZE: set(new_mode): @@ -18,9 +20,7 @@ var current_mode: int = Modes.FREEZE: current_mode = _update_scene(new_mode) func start(): - $light_animation.play("light_up") - $AudioPlayer.play("intro") - State.pass_stage_to($PlayerController) + emit_signal("ini_room") current_mode = Modes.WALKING func _update_scene(new_mode) -> int: diff --git a/src/base-environments/youth_room/shaders/starlight_shader.gdshader b/src/base-environments/youth_room/shaders/starlight_shader.gdshader index 86d97aa..2f847db 100644 --- a/src/base-environments/youth_room/shaders/starlight_shader.gdshader +++ b/src/base-environments/youth_room/shaders/starlight_shader.gdshader @@ -5,7 +5,7 @@ uniform float nebula_brightness = 4; uniform vec2 nebula_scale = vec2(1.5); uniform sampler2D starlight_noise; uniform sampler2D starlight_textures; -uniform float rotation_speed = 0.05; +uniform float rotation_speed = 0.02; uniform vec2 rotation_pivot = vec2(.8); uniform vec2 drift_compensation = vec2(0.1, -0.2); uniform float noise_strength = 0.2; diff --git a/src/base-environments/youth_room/youth_room.tscn b/src/base-environments/youth_room/youth_room.tscn index d0403bc..64d1b5f 100644 --- a/src/base-environments/youth_room/youth_room.tscn +++ b/src/base-environments/youth_room/youth_room.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=67 format=3 uid="uid://b3b0gyvklqn50"] +[gd_scene load_steps=84 format=3 uid="uid://b3b0gyvklqn50"] [ext_resource type="Script" path="res://base-environments/youth_room/room_handle.gd" id="1_aitp0"] [ext_resource type="PackedScene" uid="uid://c0i4ydmxtxfho" path="res://base-environments/youth_room/import/youth_room.glb" id="1_jf3oi"] @@ -7,15 +7,19 @@ [ext_resource type="PackedScene" uid="uid://mkccbig41bqb" path="res://logic-scenes/player_controller/player_controller.tscn" id="3_foj4y"] [ext_resource type="AudioStream" uid="uid://bbpo1hu35yer8" path="res://base-environments/youth_room/import/sounds/thunder.mp3" id="3_wcypa"] [ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_xqd4w"] +[ext_resource type="AudioStream" uid="uid://1tvopjmo6dp2" path="res://base-environments/youth_room/audio/Azure Studios - mgd-723687677.mp3" id="5_fe1yj"] [ext_resource type="ArrayMesh" uid="uid://wuxbl6u3s8yo" path="res://base-environments/youth_room/shaders/starlight-mesh.res" id="6_gy6jv"] [ext_resource type="AudioStream" uid="uid://cudna8k7fw06t" path="res://base-environments/youth_room/audio/Moving Loop.wav" id="8_egnow"] [ext_resource type="AudioStream" uid="uid://bwh60165c3saj" path="res://base-environments/youth_room/audio/lisa_youth_voice.ogg" id="9_dqdgk"] [ext_resource type="AudioStream" uid="uid://cl74a68tjwinh" path="res://base-environments/youth_room/audio/Youth Loop.wav" id="9_i8mqk"] +[ext_resource type="Texture2D" uid="uid://sv0nhkkur1tt" path="res://logic-scenes/board/card-textures/cardsheet.png" id="10_ftoxq"] [ext_resource type="AudioStream" uid="uid://cho5neuxkvpyh" path="res://base-environments/youth_room/audio/Voice Loop.wav" id="10_wwwdq"] [ext_resource type="Script" path="res://base-environments/youth_room/Collectable.gd" id="11_6fwv8"] [ext_resource type="Script" path="res://dev-util/click-trough-area.gd" id="11_7uxd8"] [ext_resource type="PackedScene" uid="uid://d3pb25xuef2t2" path="res://logic-scenes/collectable/collectable_ui.tscn" id="11_jxai0"] +[ext_resource type="Texture2D" uid="uid://kpmk21d8rlso" path="res://logic-scenes/board/particle_textures/star.png" id="11_maw5c"] [ext_resource type="PackedScene" uid="uid://bdnesuqroi7ss" path="res://vfx/collectable_particles.tscn" id="12_qxx2k"] +[ext_resource type="Texture2D" uid="uid://bqilajx05t0eb" path="res://logic-scenes/board/particle_textures/void_nomotion.png" id="12_xnele"] [ext_resource type="Texture2D" uid="uid://d005qvnbnishb" path="res://import/interface-elements/cursor_grab.png" id="13_lqj71"] [ext_resource type="PackedScene" uid="uid://brk4hjdf2x81a" path="res://logic-scenes/card_picker/card_picker.tscn" id="19_a4n1o"] [ext_resource type="ArrayMesh" uid="uid://bfc3d4g40n0wy" path="res://logic-scenes/collectable/import/old-mask.res" id="19_jr2bb"] @@ -65,6 +69,7 @@ size = Vector3(0.56931, 1.23778, 1.62664) [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_f1g8m"] radius = 0.156739 +height = 1.0 [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_kewqg"] radius = 0.787239 @@ -72,7 +77,7 @@ height = 3.19663 [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_k4x40"] radius = 1.0352 -height = 2.55391 +height = 2.3319 [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_4q8vc"] radius = 1.14469 @@ -87,12 +92,14 @@ script/source = "extends StaticBody3D var risen:bool = false var start_position:Vector3 = position -func raise(_discard): - if risen: - position = start_position - var raiser = create_tween() - raiser.tween_property(self, \"position\", position + Vector3(0,1.1,0), 1) - risen = true +func raise(entering_player): + if not entering_player.on_crouch_cooldown: + if risen: + position = start_position + var raiser = create_tween() + raiser.tween_property(self, \"position\", position + Vector3(0,1.1,0), 1) + risen = true + func reset(_discard): risen = false @@ -103,7 +110,1082 @@ func reset(_discard): size = Vector3(1.63347, 0.305693, 0.775269) [sub_resource type="BoxShape3D" id="BoxShape3D_bq15k"] -size = Vector3(0.375967, 1, 0.245859) +size = Vector3(0.244565, 1, 0.245859) + +[sub_resource type="Animation" id="Animation_nwry8"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("ScenePlayer/VoiceTraining:playing") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("ScenePlayer/Moving:volume_db") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [-80.0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("ScenePlayer/Childhood:volume_db") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("ScenePlayer/VoiceTraining:volume_db") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("ScenePlayer/childhood/PanelContainer/VBoxContainer/ScrollContainer/Label:visible_ratio") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("ScenePlayer/childhood/PanelContainer/VBoxContainer/ScrollContainer:scroll_vertical") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("ScenePlayer/childhood/PanelContainer/VBoxContainer/ScrollContainer:mouse_filter") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [1] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("ScenePlayer/childhood/PanelContainer/VBoxContainer/ScrollContainer:custom_minimum_size") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(800, 750)] +} +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("ScenePlayer/childhood:modulate") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 0)] +} +tracks/9/type = "value" +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/path = NodePath("ScenePlayer/childhood/PanelContainer:self_modulate") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} +tracks/10/type = "value" +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/path = NodePath("ScenePlayer/childhood:visible") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/11/type = "value" +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/path = NodePath("ScenePlayer/jui_jutsu/PanelContainer/VBoxContainer/ScrollContainer/Label:visible_characters") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [43] +} +tracks/12/type = "value" +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/path = NodePath("ScenePlayer/jui_jutsu/PanelContainer/VBoxContainer/ScrollContainer:scroll_vertical") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [638] +} +tracks/13/type = "value" +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/path = NodePath("ScenePlayer/jui_jutsu/PanelContainer/card/BackgroundSprite/GPUParticles2D:emitting") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/14/type = "value" +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/path = NodePath("ScenePlayer/jui_jutsu/PanelContainer/card/BackgroundSprite/GPUParticles2D:amount") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [500] +} +tracks/15/type = "value" +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/path = NodePath("ScenePlayer/jui_jutsu/PanelContainer/card/BackgroundSprite:noise_speed") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [10.0] +} +tracks/16/type = "value" +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/path = NodePath("ScenePlayer/jui_jutsu/PanelContainer/card/BackgroundSprite/GPUParticles2D:one_shot") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/17/type = "value" +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/path = NodePath("ScenePlayer/jui_jutsu/PanelContainer/card/BackgroundSprite/GPUParticles2D:lifetime") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [1.0] +} +tracks/18/type = "value" +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/path = NodePath("ScenePlayer/jui_jutsu/PanelContainer/card/BackgroundSprite/GPUParticles2D:explosiveness") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.29] +} +tracks/19/type = "value" +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/path = NodePath("ScenePlayer/jui_jutsu/PanelContainer/card/BackgroundSprite/GPUParticles2D:speed_scale") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [1.9] +} +tracks/20/type = "value" +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/path = NodePath("ScenePlayer/jui_jutsu/PanelContainer/card/BackgroundSprite:noise_power") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [3.0] +} +tracks/21/type = "value" +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/path = NodePath("ScenePlayer/jui_jutsu:visible") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/22/type = "value" +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/path = NodePath("ScenePlayer/Voice Training:modulate") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 0.923078)] +} +tracks/23/type = "value" +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/path = NodePath("ScenePlayer/Voice Training:visible") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/24/type = "value" +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/path = NodePath("ScenePlayer/Voice Training/PanelContainer/VBoxContainer/ScrollContainer:custom_minimum_size") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(800, 800)] +} +tracks/25/type = "value" +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/path = NodePath("ScenePlayer/Voice Training/PanelContainer/VBoxContainer/ScrollContainer/Label:visible_characters") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [-1] +} +tracks/26/type = "value" +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/path = NodePath("ScenePlayer/Voice Training/PanelContainer/VBoxContainer/ScrollContainer:scroll_vertical") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0] +} + +[sub_resource type="Animation" id="Animation_g5l1m"] +resource_name = "childhood" +length = 100.0 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("ScenePlayer/Moving:volume_db") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 9, 89.4, 97.5), +"transitions": PackedFloat32Array(1.93187, 1, 0.189465, 1.93187), +"update": 0, +"values": [0.0, -80.0, -80.0, 0.0] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("ScenePlayer/Childhood:volume_db") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 9, 89.3, 97.6), +"transitions": PackedFloat32Array(0.176777, 1, 1.93187, 0.176777), +"update": 0, +"values": [-80.0, 0.0, 0.0, -80.0] +} +tracks/2/type = "audio" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("ScenePlayer/Lisa") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"clips": [{ +"end_offset": 200.412, +"start_offset": 96.656, +"stream": ExtResource("9_dqdgk") +}], +"times": PackedFloat32Array(1.6) +} +tracks/2/use_blend = true +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("ScenePlayer/childhood/PanelContainer/VBoxContainer/ScrollContainer/Label:visible_ratio") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0.3, 0.8, 3, 14.6, 17.2, 26.4, 28.6, 36.3, 36.8, 50.0759, 51, 53.4, 54.7, 60.8, 61.7, 66.8, 67.8, 74.7, 76.6, 78.3, 81, 81.6, 87.2), +"transitions": PackedFloat32Array(1, 1, 0.615572, 1, 0.435275, 1, 0.615572, 1, 0.594604, 1, 0.378929, 1, 0.63728, 1, 0.535887, 1, 1, 1, 0.435275, 0.63728, 1, 1, 1), +"update": 0, +"values": [0.0, 0.014, 0.014, 0.15, 0.153, 0.287, 0.287, 0.38, 0.38, 0.528, 0.528, 0.563, 0.563, 0.663, 0.663, 0.746, 0.746, 0.859, 0.859, 0.876, 0.92, 0.92, 1.0] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("ScenePlayer/childhood/PanelContainer/VBoxContainer/ScrollContainer:scroll_vertical") +tracks/4/interp = 2 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(74.8, 76.2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0, 74] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("ScenePlayer/childhood/PanelContainer/VBoxContainer/ScrollContainer:mouse_filter") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0, 90), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [2, 0] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("ScenePlayer/childhood/PanelContainer/VBoxContainer/ScrollContainer:custom_minimum_size") +tracks/6/interp = 2 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0, 0.4), +"transitions": PackedFloat32Array(0.466516, 1), +"update": 0, +"values": [Vector2(800, 750), Vector2(800, 800)] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("ScenePlayer/childhood:modulate") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0, 0.4, 91.7, 92.6), +"transitions": PackedFloat32Array(1, 1, 1.93187, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)] +} +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("ScenePlayer/childhood/PanelContainer:self_modulate") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(89.3, 91.8), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)] +} +tracks/9/type = "method" +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/path = NodePath(".") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/keys = { +"times": PackedFloat32Array(91.9), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"_on_childhood_done" +}] +} +tracks/10/type = "value" +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/path = NodePath("ScenePlayer/childhood:visible") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/keys = { +"times": PackedFloat32Array(0, 93.1), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [true, false] +} + +[sub_resource type="Animation" id="Animation_1pmhi"] +resource_name = "intro" +length = 20.0 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("ScenePlayer/Moving:volume_db") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 18.8), +"transitions": PackedFloat32Array(0.0717937, 0.120742), +"update": 0, +"values": [-80.0, 0.0] +} +tracks/1/type = "method" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("ScenePlayer") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0.8), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"start_soundtrack" +}] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("ScenePlayer/Childhood:volume_db") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [-80.0] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("ScenePlayer/VoiceTraining:volume_db") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [-80.0] +} + +[sub_resource type="Animation" id="Animation_dot4p"] +resource_name = "jui_jutsu" +length = 210.0 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("ScenePlayer/Moving:volume_db") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 9, 171.8, 207.7), +"transitions": PackedFloat32Array(1.93187, 1, 0.189465, 1.93187), +"update": 0, +"values": [0.0, -80.0, -80.0, 0.0] +} +tracks/1/type = "audio" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("ScenePlayer/Lisa") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"clips": [{ +"end_offset": 62.4779, +"start_offset": 183.499, +"stream": ExtResource("9_dqdgk") +}, { +"end_offset": 0.0, +"start_offset": 322.397, +"stream": ExtResource("9_dqdgk") +}], +"times": PackedFloat32Array(1.1, 139.2) +} +tracks/1/use_blend = true +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("ScenePlayer/jui_jutsu/PanelContainer/VBoxContainer/ScrollContainer:scroll_vertical") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(78.1, 81, 148.1, 152, 155.7, 155.8, 158.009), +"transitions": PackedFloat32Array(0.307786, 0.307786, 12.1257, 0.554785, 1, 1, 1), +"update": 0, +"values": [0, 638, 638, 677, 1220, 1252, 1252] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("ScenePlayer/jui_jutsu/PanelContainer/VBoxContainer/ScrollContainer:mouse_filter") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 90), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [2, 0] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("ScenePlayer/childhood/PanelContainer/VBoxContainer/ScrollContainer:custom_minimum_size") +tracks/4/interp = 2 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 0.4), +"transitions": PackedFloat32Array(0.466516, 1), +"update": 0, +"values": [Vector2(800, 750), Vector2(800, 800)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("ScenePlayer/jui_jutsu:modulate") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0, 0.4, 203.8, 204.7), +"transitions": PackedFloat32Array(1, 1, 1.93187, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("ScenePlayer/jui_jutsu/PanelContainer:self_modulate") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(201.4, 203.9), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)] +} +tracks/7/type = "method" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath(".") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(91.9), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"_on_childhood_done" +}] +} +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("ScenePlayer/jui_jutsu:visible") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0, 206.7), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [true, false] +} +tracks/9/type = "audio" +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/path = NodePath("ScenePlayer/Jui_Jutsu") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/keys = { +"clips": [{ +"end_offset": 0.0, +"start_offset": 0.0, +"stream": ExtResource("5_fe1yj") +}], +"times": PackedFloat32Array(3) +} +tracks/9/use_blend = true +tracks/10/type = "value" +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/path = NodePath("ScenePlayer/jui_jutsu/PanelContainer/VBoxContainer/ScrollContainer/Label:visible_characters") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/keys = { +"times": PackedFloat32Array(0.7, 2.5, 4.2, 8.59882, 11.202, 17.9, 22.9, 28.4866, 34.1, 40.7, 44.6, 50, 53.9237, 58.9, 63.2334, 71.5, 75.5, 79.8, 84.7, 88.7, 91.9227, 98.6, 102.972, 106, 106.8, 109.1, 110.3, 114.8, 117.385, 120.6, 121.989, 125.4, 128.512, 136.313, 143.8, 149.7, 153, 156.2, 160.1, 163, 170.3, 175.771, 182.9, 183.9, 184.6, 188.4, 189.5, 195.1, 198.112, 201), +"transitions": PackedFloat32Array(0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 1, 0.287175, 0.965937, 0.287175, 0.287175, 0.287175, 0.287175, 1, 1, 0.287175, 0.287175, 0.287175, 0.517633, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175, 0.287175), +"update": 0, +"values": [0, 43, 43, 110, 110, 275, 275, 360, 508, 540, 540, 648, 648, 735, 735, 1024, 1091, 1091, 1162, 1279, 1279, 1434, 1434, 1452, 1452, 1483, 1483, 1596, 1596, 1647, 1647, 1698, 1698, 1790, 1906, 2061, 2061, 2101, 2150, 2150, 2229, 2313, 2352, 2357, 2363, 2412, 2412, 2503, 2503, 2540] +} +tracks/11/type = "value" +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/path = NodePath("ScenePlayer/jui_jutsu/PanelContainer/card/BackgroundSprite/GPUParticles2D:emitting") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/keys = { +"times": PackedFloat32Array(0, 5.8, 11.3, 18.2, 26.1, 34.4, 43.7, 53.2, 65.1, 75.7, 93), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [false, true, true, true, true, true, true, true, true, true, true] +} +tracks/12/type = "value" +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/path = NodePath("ScenePlayer/jui_jutsu/PanelContainer/card/BackgroundSprite/GPUParticles2D:amount") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/keys = { +"times": PackedFloat32Array(4, 11.1, 18, 25.9, 34.2, 43.5, 53, 65, 75.6, 92.1), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [1, 10, 20, 40, 80, 180, 160, 320, 400, 500] +} +tracks/13/type = "value" +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/path = NodePath("ScenePlayer/jui_jutsu/PanelContainer/card/BackgroundSprite:noise_speed") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/keys = { +"times": PackedFloat32Array(2, 129.7, 149.1, 167.15), +"transitions": PackedFloat32Array(0.482968, 1.86607, 1, 1), +"update": 0, +"values": [0.0, 10.0, 5.0, 10.0] +} +tracks/14/type = "value" +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/path = NodePath("ScenePlayer/jui_jutsu/PanelContainer/card/BackgroundSprite/GPUParticles2D:one_shot") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/keys = { +"times": PackedFloat32Array(0, 93), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [true, false] +} +tracks/15/type = "value" +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/path = NodePath("ScenePlayer/jui_jutsu/PanelContainer/card/BackgroundSprite/GPUParticles2D:lifetime") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/keys = { +"times": PackedFloat32Array(93, 129.9, 136.6, 164.8), +"transitions": PackedFloat32Array(1, 0.31864, 2.21914, 1), +"update": 0, +"values": [5.0, 1.5, 4.0, 2.0] +} +tracks/16/type = "value" +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/path = NodePath("ScenePlayer/jui_jutsu/PanelContainer/card/BackgroundSprite/GPUParticles2D:explosiveness") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/keys = { +"times": PackedFloat32Array(96.3, 129.9, 136.6, 159.5, 176.7), +"transitions": PackedFloat32Array(1, 0.31864, 1, 0.406126, 1), +"update": 0, +"values": [0.29, 0.69, 0.74, 0.9, 0.2] +} +tracks/17/type = "value" +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/path = NodePath("ScenePlayer/jui_jutsu/PanelContainer/card/BackgroundSprite/GPUParticles2D:speed_scale") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/keys = { +"times": PackedFloat32Array(105.6, 129.8, 150.5, 164.7), +"transitions": PackedFloat32Array(1, 0.466516, 1, 1), +"update": 0, +"values": [1.0, 1.9, 0.4, 1.0] +} +tracks/18/type = "value" +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/path = NodePath("ScenePlayer/jui_jutsu/PanelContainer/card/BackgroundSprite:noise_power") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/keys = { +"times": PackedFloat32Array(8.4, 93.4, 129.7, 159.4, 169.4), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [5.0, 2.0, 0.3, 0.3, 1.5] +} +tracks/19/type = "method" +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/path = NodePath("ScenePlayer") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/keys = { +"times": PackedFloat32Array(), +"transitions": PackedFloat32Array(), +"values": [] +} + +[sub_resource type="Animation" id="Animation_t64y4"] +resource_name = "voice training" +length = 105.0 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("ScenePlayer/Moving:volume_db") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 5.6, 94.8, 102.9), +"transitions": PackedFloat32Array(1.93187, 1, 0.189465, 1.93187), +"update": 0, +"values": [0.0, -80.0, -80.0, 0.0] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("ScenePlayer/VoiceTraining:volume_db") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0.1, 5.7, 94.8, 103.1), +"transitions": PackedFloat32Array(0.176777, 1, 1.93187, 0.176777), +"update": 0, +"values": [-80.0, 0.0, 0.0, -80.0] +} +tracks/2/type = "audio" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("ScenePlayer/Lisa") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"clips": [{ +"end_offset": 290.288, +"start_offset": 0.0, +"stream": ExtResource("9_dqdgk") +}], +"times": PackedFloat32Array(0.4) +} +tracks/2/use_blend = true +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("ScenePlayer/Voice Training:modulate") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.6, 97.2, 98.8), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0.923078), Color(1, 1, 1, 0.923078), Color(1, 1, 1, 0)] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("ScenePlayer/Voice Training:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 100.5), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [true, false] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("ScenePlayer/Voice Training/PanelContainer/VBoxContainer/ScrollContainer:custom_minimum_size") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0.1, 0.8, 97, 98.9), +"transitions": PackedFloat32Array(0.535887, 1, 2, 0.535887), +"update": 0, +"values": [Vector2(800, 750), Vector2(800, 800), Vector2(800, 800), Vector2(800, 750)] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("ScenePlayer/Voice Training/PanelContainer/VBoxContainer/ScrollContainer/Label:visible_characters") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0.6, 3.4, 7.9, 9.5, 14.1, 20.839, 29.8, 31.8233, 37.1, 39.5, 42.3, 45.8, 47.3949, 51.2, 55.5952, 61.1605, 63.5, 64.7412, 65.8, 70.1, 71.5212, 76.9388, 79.1504, 82.3541, 85.6, 86.4, 89.3, 90, 92.1, 94), +"transitions": PackedFloat32Array(0.594604, 0.594604, 0.594604, 0.594604, 0.594604, 0.594604, 0.594604, 0.594604, 0.594604, 0.594604, 0.594604, 0.594604, 0.594604, 0.594604, 0.594604, 0.594604, 0.594604, 0.594604, 0.594604, 0.594604, 0.594604, 0.594604, 0.594604, 0.594604, 0.594604, 0.594604, 0.594604, 0.594604, 0.594604, 0.594604), +"update": 0, +"values": [0, 23, 114, 114, 161, 265, 419, 419, 538, 538, 570, 644, 644, 690, 753, 833, 900, 900, 903, 959, 959, 1067, 1067, 1105, 1154, 1154, 1210, 1210, 1239, 1265] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("ScenePlayer/Voice Training/PanelContainer/VBoxContainer/ScrollContainer:scroll_vertical") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(70.9, 72, 95.5, 98.8), +"transitions": PackedFloat32Array(0.466516, 1, 2.46229, 1), +"update": 0, +"values": [0, 226, 226, 0] +} + +[sub_resource type="Animation" id="Animation_8gaqi"] +resource_name = "voice_intro" +length = 10.0 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("ScenePlayer/Moving:volume_db") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 9), +"transitions": PackedFloat32Array(1.93187, 1), +"update": 0, +"values": [0.0, -80.0] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("ScenePlayer/VoiceTraining:volume_db") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 9.1), +"transitions": PackedFloat32Array(0.241484, 1), +"update": 0, +"values": [-80.0, 0.0] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_ilekd"] +_data = { +"RESET": SubResource("Animation_nwry8"), +"childhood": SubResource("Animation_g5l1m"), +"intro": SubResource("Animation_1pmhi"), +"jui_jutsu": SubResource("Animation_dot4p"), +"voice training": SubResource("Animation_t64y4"), +"voice_intro": SubResource("Animation_8gaqi") +} + +[sub_resource type="GDScript" id="GDScript_tfc2r"] +script/source = "extends AnimationPlayer + +var has_stage + +func start_soundtrack(): + $Moving.play(70) + $Childhood.play(70) + $VoiceTraining.play(70) + +func play_scene(id: int): + State.queue_for_stage(self) + match id: + Scenes.id.YOUTH_CHILDHOOD: + play(\"childhood\") + Scenes.id.YOUTH_VOICE_TRAINING: + play(\"voice training\") + Scenes.id.YOUTH_JUI_JUTSU: + play(\"jui_jutsu\") + +func _on_ini_room(): + play(\"intro\") +" + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_foovg"] +radius = 110.0 +height = 336.0 + +[sub_resource type="AtlasTexture" id="AtlasTexture_ykk13"] +atlas = ExtResource("10_ftoxq") +region = Rect2(0, 0, 600, 440) + +[sub_resource type="AtlasTexture" id="AtlasTexture_l43eo"] +atlas = ExtResource("10_ftoxq") +region = Rect2(600, 0, 600, 440) + +[sub_resource type="AtlasTexture" id="AtlasTexture_x2vcn"] +atlas = ExtResource("10_ftoxq") +region = Rect2(0, 440, 600, 440) + +[sub_resource type="AtlasTexture" id="AtlasTexture_e7401"] +atlas = ExtResource("10_ftoxq") +region = Rect2(600, 440, 600, 440) + +[sub_resource type="AtlasTexture" id="AtlasTexture_j7wh6"] +atlas = ExtResource("10_ftoxq") +region = Rect2(0, 880, 600, 440) + +[sub_resource type="SpriteFrames" id="SpriteFrames_ckivt"] +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 +}] + +[sub_resource type="GDScript" id="GDScript_252ei"] +script/source = "extends AnimatedSprite2D + +@onready var particles = $GPUParticles2D +@onready var initial_position = position +@export var noise_speed: float = 10 +@export var noise_power: float = 1 +var noise_position = randf() +var noise: Noise = FastNoiseLite.new() +@export var void_active: bool = true + +func _ready(): + reduce_motion_changed(State.reduce_motion) + +func _process(delta): + if void_active and not State.reduce_motion: + noise_position += delta * noise_speed + + 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, noise_power) * 10 + + position = initial_position - random_position + + rotation = noise.get_noise_1d(noise_position*7) * random_position.length() * 0.01 + + particles.position = random_position + + else: position = initial_position + +func reduce_motion_changed(value:bool): + $GPUParticles2D.visible = !value + $Sprite2D.visible = value +" + +[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"] +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 +particle_flag_disable_z = true +spread = 180.0 +gravity = Vector3(0, 0, 0) +initial_velocity_min = -10.0 +initial_velocity_max = 10.0 +angular_velocity_min = -150.0 +angular_velocity_max = -150.0 +orbit_velocity_min = 0.0 +orbit_velocity_max = 0.0 +radial_accel_min = -20.0 +radial_accel_max = -5.0 +tangential_accel_min = 20.0 +tangential_accel_max = 30.0 +scale_min = 3.0 +scale_max = 5.0 +scale_curve = SubResource("CurveTexture_cg0w1") +color_ramp = SubResource("GradientTexture1D_xxq8p") +turbulence_noise_strength = 0.1 +attractor_interaction_enabled = false + +[sub_resource type="BoxShape3D" id="BoxShape3D_cb3g8"] +size = Vector3(1.81843, 2.13395, 0.0774798) + +[sub_resource type="ViewportTexture" id="ViewportTexture_7hana"] +viewport_path = NodePath("logic/clothes_interaction/UiWrapper/UiSprite/SubViewport") + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_72g2i"] +radius = 0.342951 +height = 1.08154 [sub_resource type="GDScript" id="GDScript_35dmj"] script/source = "extends SpotLight3D @@ -235,6 +1317,16 @@ _data = { "menu": SubResource("Animation_upogh") } +[sub_resource type="GDScript" id="GDScript_5ot1o"] +script/source = "extends AnimationPlayer + +func _on_ini_room(): + play(\"light_up\") + +func play_scene(_id: int): + play(\"lights_out\") +" + [sub_resource type="GDScript" id="GDScript_yn0pl"] script/source = "extends SpotLight3D @@ -318,522 +1410,11 @@ func focus_env(): func focus_object(): var dof_strength_tween: Tween = create_tween() dof_strength_tween.tween_property(camera_attributes, \"dof_blur_amount\", 0.6, 1) + +func play_scene(_id: int): + focus_object() " -[sub_resource type="Animation" id="Animation_nwry8"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("AudioPlayer/VoiceTraining:playing") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("AudioPlayer/Jui Jutsu:playing") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("AudioPlayer/Moving:volume_db") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [-80.0] -} -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("AudioPlayer/Childhood:volume_db") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [0.0] -} -tracks/4/type = "value" -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/path = NodePath("AudioPlayer/VoiceTraining:volume_db") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [0.0] -} -tracks/5/type = "value" -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/path = NodePath("AudioPlayer/childhood/PanelContainer/VBoxContainer/ScrollContainer/Label:visible_ratio") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [0.0] -} -tracks/6/type = "value" -tracks/6/imported = false -tracks/6/enabled = true -tracks/6/path = NodePath("AudioPlayer/childhood/PanelContainer/VBoxContainer/ScrollContainer:scroll_vertical") -tracks/6/interp = 1 -tracks/6/loop_wrap = true -tracks/6/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [0] -} -tracks/7/type = "value" -tracks/7/imported = false -tracks/7/enabled = true -tracks/7/path = NodePath("AudioPlayer/childhood/PanelContainer/VBoxContainer/ScrollContainer:mouse_filter") -tracks/7/interp = 1 -tracks/7/loop_wrap = true -tracks/7/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [1] -} -tracks/8/type = "value" -tracks/8/imported = false -tracks/8/enabled = true -tracks/8/path = NodePath("AudioPlayer/childhood/PanelContainer/VBoxContainer/ScrollContainer:custom_minimum_size") -tracks/8/interp = 1 -tracks/8/loop_wrap = true -tracks/8/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(800, 750)] -} -tracks/9/type = "value" -tracks/9/imported = false -tracks/9/enabled = true -tracks/9/path = NodePath("AudioPlayer/childhood:modulate") -tracks/9/interp = 1 -tracks/9/loop_wrap = true -tracks/9/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Color(1, 1, 1, 0)] -} -tracks/10/type = "value" -tracks/10/imported = false -tracks/10/enabled = true -tracks/10/path = NodePath("AudioPlayer/childhood/PanelContainer:self_modulate") -tracks/10/interp = 1 -tracks/10/loop_wrap = true -tracks/10/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Color(1, 1, 1, 1)] -} -tracks/11/type = "value" -tracks/11/imported = false -tracks/11/enabled = true -tracks/11/path = NodePath("AudioPlayer/childhood:visible") -tracks/11/interp = 1 -tracks/11/loop_wrap = true -tracks/11/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} - -[sub_resource type="Animation" id="Animation_g5l1m"] -resource_name = "childhood" -length = 100.0 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("AudioPlayer/Moving:volume_db") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 9, 89.4, 97.5), -"transitions": PackedFloat32Array(1.93187, 1, 0.189465, 1.93187), -"update": 0, -"values": [0.0, -80.0, -80.0, 0.0] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("AudioPlayer/Childhood:volume_db") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0, 9, 89.3, 97.6), -"transitions": PackedFloat32Array(0.176777, 1, 1.93187, 0.176777), -"update": 0, -"values": [-80.0, 0.0, 0.0, -80.0] -} -tracks/2/type = "audio" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("AudioPlayer/Lisa") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"clips": [{ -"end_offset": 200.412, -"start_offset": 96.656, -"stream": ExtResource("9_dqdgk") -}], -"times": PackedFloat32Array(1.6) -} -tracks/2/use_blend = true -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("AudioPlayer/childhood/PanelContainer/VBoxContainer/ScrollContainer/Label:visible_ratio") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"times": PackedFloat32Array(0.3, 0.8, 3, 14.6, 17.2, 26.4, 28.6, 36.3, 36.8, 50.0759, 51, 53.4, 54.7, 60.8, 61.7, 66.8, 67.8, 74.7, 76.6, 78.3, 81, 81.6, 87.2), -"transitions": PackedFloat32Array(1, 1, 0.615572, 1, 0.435275, 1, 0.615572, 1, 0.594604, 1, 0.378929, 1, 0.63728, 1, 0.535887, 1, 1, 1, 0.435275, 0.63728, 1, 1, 1), -"update": 0, -"values": [0.0, 0.014, 0.014, 0.15, 0.153, 0.287, 0.287, 0.38, 0.38, 0.528, 0.528, 0.563, 0.563, 0.663, 0.663, 0.746, 0.746, 0.859, 0.859, 0.876, 0.92, 0.92, 1.0] -} -tracks/4/type = "value" -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/path = NodePath("AudioPlayer/childhood/PanelContainer/VBoxContainer/ScrollContainer:scroll_vertical") -tracks/4/interp = 2 -tracks/4/loop_wrap = true -tracks/4/keys = { -"times": PackedFloat32Array(74.8, 76.2), -"transitions": PackedFloat32Array(1, 1), -"update": 0, -"values": [0, 74] -} -tracks/5/type = "value" -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/path = NodePath("AudioPlayer/childhood/PanelContainer/VBoxContainer/ScrollContainer:mouse_filter") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/keys = { -"times": PackedFloat32Array(0, 90), -"transitions": PackedFloat32Array(1, 1), -"update": 1, -"values": [2, 0] -} -tracks/6/type = "value" -tracks/6/imported = false -tracks/6/enabled = true -tracks/6/path = NodePath("AudioPlayer/childhood/PanelContainer/VBoxContainer/ScrollContainer:custom_minimum_size") -tracks/6/interp = 2 -tracks/6/loop_wrap = true -tracks/6/keys = { -"times": PackedFloat32Array(0, 0.4), -"transitions": PackedFloat32Array(0.466516, 1), -"update": 0, -"values": [Vector2(800, 750), Vector2(800, 800)] -} -tracks/7/type = "value" -tracks/7/imported = false -tracks/7/enabled = true -tracks/7/path = NodePath("AudioPlayer/childhood:modulate") -tracks/7/interp = 1 -tracks/7/loop_wrap = true -tracks/7/keys = { -"times": PackedFloat32Array(0, 0.4, 91.7, 92.6), -"transitions": PackedFloat32Array(1, 1, 1.93187, 1), -"update": 0, -"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)] -} -tracks/8/type = "value" -tracks/8/imported = false -tracks/8/enabled = true -tracks/8/path = NodePath("AudioPlayer/childhood/PanelContainer:self_modulate") -tracks/8/interp = 1 -tracks/8/loop_wrap = true -tracks/8/keys = { -"times": PackedFloat32Array(89.3, 91.8), -"transitions": PackedFloat32Array(1, 1), -"update": 0, -"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)] -} -tracks/9/type = "method" -tracks/9/imported = false -tracks/9/enabled = true -tracks/9/path = NodePath(".") -tracks/9/interp = 1 -tracks/9/loop_wrap = true -tracks/9/keys = { -"times": PackedFloat32Array(91.9), -"transitions": PackedFloat32Array(1), -"values": [{ -"args": [], -"method": &"_on_childhood_done" -}] -} -tracks/10/type = "value" -tracks/10/imported = false -tracks/10/enabled = true -tracks/10/path = NodePath("AudioPlayer/childhood:visible") -tracks/10/interp = 1 -tracks/10/loop_wrap = true -tracks/10/keys = { -"times": PackedFloat32Array(0, 93.1), -"transitions": PackedFloat32Array(1, 1), -"update": 1, -"values": [true, false] -} - -[sub_resource type="Animation" id="Animation_as75l"] -resource_name = "childhood_intro" -length = 10.0 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("AudioPlayer/Moving:volume_db") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 9), -"transitions": PackedFloat32Array(1.93187, 1), -"update": 0, -"values": [0.0, -80.0] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("AudioPlayer/Childhood:volume_db") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0, 9), -"transitions": PackedFloat32Array(0.176777, 1), -"update": 0, -"values": [-80.0, 0.0] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("AudioPlayer/Lisa:playing") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} - -[sub_resource type="Animation" id="Animation_60him"] -resource_name = "childhood_outro" -length = 10.0 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("AudioPlayer/Moving:volume_db") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 9), -"transitions": PackedFloat32Array(0.307786, 1), -"update": 0, -"values": [-80.0, 0.0] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("AudioPlayer/Childhood:volume_db") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0, 9), -"transitions": PackedFloat32Array(2.54912, 1), -"update": 0, -"values": [0.0, -80.0] -} - -[sub_resource type="Animation" id="Animation_1pmhi"] -resource_name = "intro" -length = 20.0 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("AudioPlayer/Moving:volume_db") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 18.8), -"transitions": PackedFloat32Array(0.0717937, 0.120742), -"update": 0, -"values": [-80.0, 0.0] -} -tracks/1/type = "method" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("AudioPlayer") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0.8), -"transitions": PackedFloat32Array(1), -"values": [{ -"args": [], -"method": &"start_soundtrack" -}] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("AudioPlayer/Childhood:volume_db") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [-80.0] -} -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("AudioPlayer/VoiceTraining:volume_db") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [-80.0] -} - -[sub_resource type="Animation" id="Animation_t64y4"] -resource_name = "voice training" -length = 100.0 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("AudioPlayer/Moving:volume_db") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 5.6, 89.4, 97.5), -"transitions": PackedFloat32Array(1.93187, 1, 0.189465, 1.93187), -"update": 0, -"values": [0.0, -80.0, -80.0, 0.0] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("AudioPlayer/VoiceTraining:volume_db") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0.1, 5.7, 89.4, 97.7), -"transitions": PackedFloat32Array(0.176777, 1, 1.93187, 0.176777), -"update": 0, -"values": [-80.0, 0.0, 0.0, -80.0] -} -tracks/2/type = "audio" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("AudioPlayer/Lisa") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"clips": [{ -"end_offset": 290.288, -"start_offset": 0.0, -"stream": ExtResource("9_dqdgk") -}], -"times": PackedFloat32Array(0.4) -} -tracks/2/use_blend = true - -[sub_resource type="Animation" id="Animation_8gaqi"] -resource_name = "voice_intro" -length = 10.0 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("AudioPlayer/Moving:volume_db") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 9), -"transitions": PackedFloat32Array(1.93187, 1), -"update": 0, -"values": [0.0, -80.0] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("AudioPlayer/VoiceTraining:volume_db") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0, 9.1), -"transitions": PackedFloat32Array(0.241484, 1), -"update": 0, -"values": [-80.0, 0.0] -} - -[sub_resource type="AnimationLibrary" id="AnimationLibrary_ilekd"] -_data = { -"RESET": SubResource("Animation_nwry8"), -"childhood": SubResource("Animation_g5l1m"), -"childhood_intro": SubResource("Animation_as75l"), -"childhood_outro": SubResource("Animation_60him"), -"intro": SubResource("Animation_1pmhi"), -"voice training": SubResource("Animation_t64y4"), -"voice_intro": SubResource("Animation_8gaqi") -} - -[sub_resource type="GDScript" id="GDScript_tfc2r"] -script/source = "extends AnimationPlayer - -func start_soundtrack(): - $Moving.play(70) - $Childhood.play(70) - $VoiceTraining.play(70) - -func _on_childhood_collected(): - play(\"childhood\") -" - -[sub_resource type="BoxShape3D" id="BoxShape3D_cb3g8"] -size = Vector3(1.81843, 2.13395, 0.0774798) - -[sub_resource type="ViewportTexture" id="ViewportTexture_7hana"] -viewport_path = NodePath("Collectable/UiWrapper/UiSprite/SubViewport") - -[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_72g2i"] -radius = 0.342951 -height = 1.08154 - [node name="youth room" type="Node3D"] script = ExtResource("1_aitp0") @@ -991,11 +1572,11 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.336261, -0.199846, 0.054946 shape = SubResource("BoxShape3D_gim5a") [node name="CollisionShape3D2" type="CollisionShape3D" parent="logic/Bed and Ladders/ladder"] -transform = Transform3D(0.833085, 0, -0.553144, 0, 1, 0, 0.553144, 0, 0.833085, -0.0238513, 0, -0.359131) +transform = Transform3D(0.833085, 0, -0.553144, 0, 1, 0, 0.553144, 0, 0.833085, 0.0114179, 0, -0.412249) shape = SubResource("BoxShape3D_bq15k") [node name="CollisionShape3D3" type="CollisionShape3D" parent="logic/Bed and Ladders/ladder"] -transform = Transform3D(0.707304, 0, 0.706909, 0, 1, 0, -0.706909, 0, 0.707304, 0.188369, 0, 0.502213) +transform = Transform3D(0.707304, 0, 0.706909, 0, 1, 0, -0.706909, 0, 0.707304, 0.240986, 0, 0.539403) shape = SubResource("BoxShape3D_bq15k") [node name="UI" type="Control" parent="logic"] @@ -1009,6 +1590,397 @@ mouse_filter = 1 visible = false layout_mode = 1 +[node name="ScenePlayer" type="AnimationPlayer" parent="logic" groups=["animation_player"]] +autoplay = "RESET" +libraries = { +"": SubResource("AnimationLibrary_ilekd") +} +script = SubResource("GDScript_tfc2r") + +[node name="Lisa" type="AudioStreamPlayer" parent="logic/ScenePlayer"] +bus = &"text" + +[node name="Moving" type="AudioStreamPlayer" parent="logic/ScenePlayer"] +stream = ExtResource("8_egnow") +volume_db = -80.0 +bus = &"music" + +[node name="Childhood" type="AudioStreamPlayer" parent="logic/ScenePlayer"] +stream = ExtResource("9_i8mqk") +bus = &"music" + +[node name="childhood" type="CenterContainer" parent="logic/ScenePlayer"] +visible = false +modulate = Color(1, 1, 1, 0) +self_modulate = Color(1, 1, 1, 0.923078) +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_right = -424.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="PanelContainer" type="PanelContainer" parent="logic/ScenePlayer/childhood"] +layout_mode = 2 +mouse_filter = 1 + +[node name="StartFrame" type="TextureRect" parent="logic/ScenePlayer/childhood/PanelContainer"] +custom_minimum_size = Vector2(0, 900) +layout_mode = 2 +size_flags_vertical = 0 +texture = ExtResource("2_21x33") +expand_mode = 2 +stretch_mode = 4 + +[node name="Panel" type="PanelContainer" parent="logic/ScenePlayer/childhood/PanelContainer/StartFrame"] +show_behind_parent = true +layout_mode = 2 +offset_left = 199.0 +offset_top = -112.0 +offset_right = 1039.0 +offset_bottom = 697.0 +rotation = 0.459022 +mouse_filter = 1 + +[node name="VBoxContainer" type="VBoxContainer" parent="logic/ScenePlayer/childhood/PanelContainer"] +layout_mode = 2 + +[node name="Label" type="Label" parent="logic/ScenePlayer/childhood/PanelContainer/VBoxContainer"] +layout_mode = 2 +theme_type_variation = &"HeaderLarge" +text = " Childhood" + +[node name="ScrollContainer" type="ScrollContainer" parent="logic/ScenePlayer/childhood/PanelContainer/VBoxContainer"] +custom_minimum_size = Vector2(800, 750) +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +horizontal_scroll_mode = 0 +vertical_scroll_mode = 3 + +[node name="Label" type="Label" parent="logic/ScenePlayer/childhood/PanelContainer/VBoxContainer/ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Oh, my old mask. I have so many good memories about theatre club. I would stand on my bed for entire afternoons, weeks on end, practicing my lines. Pretending to be on the big stage ... my mom would get mad at me, when she had to call me three or four times for dinner. I just … didn’t like the interruptions. We both were often mad at each other. + +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." +autowrap_mode = 3 +visible_characters = 0 +visible_characters_behavior = 1 +visible_ratio = 0.0 + +[node name="StartBottom" type="TextureRect" parent="logic/ScenePlayer/childhood/PanelContainer/VBoxContainer"] +custom_minimum_size = Vector2(0, 64) +layout_mode = 2 +size_flags_vertical = 8 +texture = ExtResource("3_xqd4w") +expand_mode = 2 +stretch_mode = 4 + +[node name="VoiceTraining" type="AudioStreamPlayer" parent="logic/ScenePlayer"] +stream = ExtResource("10_wwwdq") +bus = &"music" + +[node name="Voice Training" type="CenterContainer" parent="logic/ScenePlayer"] +visible = false +modulate = Color(1, 1, 1, 0.923078) +self_modulate = Color(1, 1, 1, 0.923078) +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_right = -424.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="PanelContainer" type="PanelContainer" parent="logic/ScenePlayer/Voice Training"] +layout_mode = 2 +mouse_filter = 1 + +[node name="StartFrame" type="TextureRect" parent="logic/ScenePlayer/Voice Training/PanelContainer"] +custom_minimum_size = Vector2(0, 900) +layout_mode = 2 +size_flags_vertical = 0 +texture = ExtResource("2_21x33") +expand_mode = 2 +stretch_mode = 4 + +[node name="Panel" type="PanelContainer" parent="logic/ScenePlayer/Voice Training/PanelContainer/StartFrame"] +show_behind_parent = true +layout_mode = 2 +offset_left = 199.0 +offset_top = -112.0 +offset_right = 1039.0 +offset_bottom = 697.0 +rotation = 0.459022 +mouse_filter = 1 + +[node name="VBoxContainer" type="VBoxContainer" parent="logic/ScenePlayer/Voice Training/PanelContainer"] +layout_mode = 2 + +[node name="Label" type="Label" parent="logic/ScenePlayer/Voice Training/PanelContainer/VBoxContainer"] +layout_mode = 2 +theme_type_variation = &"HeaderLarge" +text = "voice Training" + +[node name="ScrollContainer" type="ScrollContainer" parent="logic/ScenePlayer/Voice Training/PanelContainer/VBoxContainer"] +custom_minimum_size = Vector2(800, 800) +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +mouse_filter = 2 +horizontal_scroll_mode = 0 +vertical_scroll_mode = 3 + +[node name="Label" type="Label" parent="logic/ScenePlayer/Voice Training/PanelContainer/VBoxContainer/ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +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 :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. +" +autowrap_mode = 3 +visible_characters_behavior = 1 +visible_ratio = -0.000798722 + +[node name="StartBottom" type="TextureRect" parent="logic/ScenePlayer/Voice Training/PanelContainer/VBoxContainer"] +custom_minimum_size = Vector2(0, 64) +layout_mode = 2 +size_flags_vertical = 8 +texture = ExtResource("3_xqd4w") +expand_mode = 2 +stretch_mode = 4 + +[node name="Jui_Jutsu" type="AudioStreamPlayer" parent="logic/ScenePlayer"] +volume_db = -10.0 +bus = &"music" + +[node name="jui_jutsu" type="CenterContainer" parent="logic/ScenePlayer"] +visible = false +modulate = Color(1, 1, 1, 0) +self_modulate = Color(1, 1, 1, 0.923078) +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_right = -424.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="PanelContainer" type="PanelContainer" parent="logic/ScenePlayer/jui_jutsu"] +layout_mode = 2 +mouse_filter = 1 + +[node name="StartFrame" type="TextureRect" parent="logic/ScenePlayer/jui_jutsu/PanelContainer"] +custom_minimum_size = Vector2(0, 900) +layout_mode = 2 +size_flags_vertical = 0 +texture = ExtResource("2_21x33") +expand_mode = 2 +stretch_mode = 4 + +[node name="Panel" type="PanelContainer" parent="logic/ScenePlayer/jui_jutsu/PanelContainer/StartFrame"] +show_behind_parent = true +layout_mode = 2 +offset_left = 199.0 +offset_top = -112.0 +offset_right = 1039.0 +offset_bottom = 697.0 +rotation = 0.459022 +mouse_filter = 1 + +[node name="VBoxContainer" type="VBoxContainer" parent="logic/ScenePlayer/jui_jutsu/PanelContainer"] +layout_mode = 2 + +[node name="Label" type="Label" parent="logic/ScenePlayer/jui_jutsu/PanelContainer/VBoxContainer"] +layout_mode = 2 +theme_type_variation = &"HeaderLarge" +text = " Jiu Jutsu" + +[node name="ScrollContainer" type="ScrollContainer" parent="logic/ScenePlayer/jui_jutsu/PanelContainer/VBoxContainer"] +custom_minimum_size = Vector2(800, 800) +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +mouse_filter = 2 +horizontal_scroll_mode = 0 +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 golt 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. + +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? +" +autowrap_mode = 3 +visible_characters = 43 +visible_characters_behavior = 1 +visible_ratio = 0.0169225 + +[node name="StartBottom" type="TextureRect" parent="logic/ScenePlayer/jui_jutsu/PanelContainer/VBoxContainer"] +custom_minimum_size = Vector2(0, 64) +layout_mode = 2 +size_flags_vertical = 8 +texture = ExtResource("3_xqd4w") +expand_mode = 2 +stretch_mode = 4 + +[node name="card" type="Area2D" parent="logic/ScenePlayer/jui_jutsu/PanelContainer"] +position = Vector2(1136, 457) +scale = Vector2(1.2, 1.2) +metadata/type = "card" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="logic/ScenePlayer/jui_jutsu/PanelContainer/card"] +position = Vector2(-0.0713516, 0.997451) +rotation = 1.5708 +shape = SubResource("CapsuleShape2D_foovg") + +[node name="BackgroundSprite" type="AnimatedSprite2D" parent="logic/ScenePlayer/jui_jutsu/PanelContainer/card" groups=["reduce_motion"]] +clip_children = 2 +scale = Vector2(0.6, 0.6) +sprite_frames = SubResource("SpriteFrames_ckivt") +frame = 1 +script = SubResource("GDScript_252ei") +noise_power = 3.0 + +[node name="GPUParticles2D" type="GPUParticles2D" parent="logic/ScenePlayer/jui_jutsu/PanelContainer/card/BackgroundSprite"] +emitting = false +amount = 500 +process_material = SubResource("ParticleProcessMaterial_by44l") +texture = ExtResource("11_maw5c") +one_shot = true +speed_scale = 1.9 +explosiveness = 0.29 +randomness = 0.14 +local_coords = true + +[node name="Sprite2D" type="Sprite2D" parent="logic/ScenePlayer/jui_jutsu/PanelContainer/card/BackgroundSprite"] +visible = false +scale = Vector2(0.4, 0.4) +texture = ExtResource("12_xnele") + +[node name="Mask-interaction" type="Area3D" parent="logic" groups=["interactables"]] +transform = Transform3D(-0.863025, 0, 0.50516, 0, 1, 0, -0.50516, 0, -0.863025, 0.121309, 0.803665, 2.4765) +collision_layer = 16 +script = ExtResource("11_6fwv8") + +[node name="collectable_particles" parent="logic/Mask-interaction" instance=ExtResource("12_qxx2k")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00898492, -0.14171, 0.152755) +visible = false + +[node name="UiWrapper" type="Area3D" parent="logic/Mask-interaction"] +transform = Transform3D(0.1, -1.86265e-09, 0, 0, 0.0906676, 0.0421827, 0, -0.0421827, 0.0906676, -2.38419e-07, 0, 0.0718942) +visible = false +script = ExtResource("11_7uxd8") + +[node name="UI_click_collider" type="CollisionShape3D" parent="logic/Mask-interaction/UiWrapper"] +transform = Transform3D(2.56, -5.96046e-08, 4.76837e-07, 1.78814e-07, 2.56, -4.17233e-07, -2.38419e-07, -5.96046e-08, 2.56, 0, 1.90735e-06, 0.238397) +shape = SubResource("BoxShape3D_cb3g8") + +[node name="UiSprite" type="Sprite3D" parent="logic/Mask-interaction/UiWrapper"] +transform = Transform3D(1, 0, 2.4869e-14, 0, 1, 0, -2.4869e-14, 0, 1, 0, 0, 0.610758) +pixel_size = 0.015 +no_depth_test = true +texture = SubResource("ViewportTexture_7hana") + +[node name="SubViewport" type="SubViewport" parent="logic/Mask-interaction/UiWrapper/UiSprite"] +transparent_bg = true +size = Vector2i(300, 350) +render_target_update_mode = 4 + +[node name="Collectable_ui" parent="logic/Mask-interaction/UiWrapper/UiSprite/SubViewport" instance=ExtResource("11_jxai0")] +visible = false +scene = 0 +is_story = true +item_name = "Sport Clothes" +content_notes = "CN: testing testing 123" + +[node name="HoverDetect" type="CollisionShape3D" parent="logic/Mask-interaction"] +shape = SubResource("CapsuleShape3D_72g2i") + +[node name="clothes_interaction" type="Area3D" parent="logic" groups=["interactables"]] +transform = Transform3D(0.86043, 0, -0.509567, 0, 1, 0, 0.509567, 0, 0.86043, 1.47102, 1.17096, -0.629588) +collision_layer = 16 +script = ExtResource("11_6fwv8") + +[node name="collectable_particles" parent="logic/clothes_interaction" instance=ExtResource("12_qxx2k")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00898492, -0.14171, 0.152755) +visible = false + +[node name="UiWrapper" type="Area3D" parent="logic/clothes_interaction"] +transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0) +script = ExtResource("11_7uxd8") + +[node name="UI_click_collider" type="CollisionShape3D" parent="logic/clothes_interaction/UiWrapper"] +transform = Transform3D(2.56, -5.96046e-08, 4.76837e-07, 1.78814e-07, 2.56, -4.17233e-07, -2.38419e-07, -5.96046e-08, 2.56, 0, 1.90735e-06, 0.238397) +shape = SubResource("BoxShape3D_cb3g8") + +[node name="UiSprite" type="Sprite3D" parent="logic/clothes_interaction/UiWrapper"] +transform = Transform3D(1, 0, 2.4869e-14, 0, 1, 0, -2.4869e-14, 0, 1, 0, 0, 0.610758) +pixel_size = 0.015 +no_depth_test = true +texture = SubResource("ViewportTexture_7hana") + +[node name="SubViewport" type="SubViewport" parent="logic/clothes_interaction/UiWrapper/UiSprite"] +transparent_bg = true +size = Vector2i(300, 350) +render_target_update_mode = 1 + +[node name="Collectable_ui" parent="logic/clothes_interaction/UiWrapper/UiSprite/SubViewport" instance=ExtResource("11_jxai0")] +visible = false +scene = 2 +is_story = true +item_name = "my old Mask" +content_notes = "CN: testing testing 123" + +[node name="HoverDetect" type="CollisionShape3D" parent="logic/clothes_interaction"] +transform = Transform3D(1, 0, 2.98023e-08, 0, 1, 0, -2.98023e-08, 0, 1, 0, -0.237872, 0) +shape = SubResource("CapsuleShape3D_72g2i") + [node name="sfx" type="Node3D" parent="."] [node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="sfx"] @@ -1066,11 +2038,12 @@ light_size = 0.1 shadow_enabled = true omni_range = 2.17653 -[node name="light_animation" type="AnimationPlayer" parent="visuals/lights"] +[node name="light_animation" type="AnimationPlayer" parent="visuals/lights" groups=["animation_player"]] autoplay = "menu" libraries = { "": SubResource("AnimationLibrary_k8op5") } +script = SubResource("GDScript_5ot1o") [node name="lighting aids" type="Node3D" parent="visuals"] @@ -1164,152 +2137,11 @@ spot_angle_attenuation = 1.18921 [node name="youth_room" parent="visuals" instance=ExtResource("1_jf3oi")] -[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +[node name="WorldEnvironment" type="WorldEnvironment" parent="." groups=["animation_player"]] environment = SubResource("Environment_pllnm") camera_attributes = SubResource("CameraAttributesPractical_26mp0") script = SubResource("GDScript_wb8kg") -[node name="AudioPlayer" type="AnimationPlayer" parent="." groups=["animation_player"]] -libraries = { -"": SubResource("AnimationLibrary_ilekd") -} -script = SubResource("GDScript_tfc2r") - -[node name="Lisa" type="AudioStreamPlayer" parent="AudioPlayer"] -bus = &"text" - -[node name="Moving" type="AudioStreamPlayer" parent="AudioPlayer"] -stream = ExtResource("8_egnow") -volume_db = -80.0 -bus = &"music" - -[node name="Childhood" type="AudioStreamPlayer" parent="AudioPlayer"] -stream = ExtResource("9_i8mqk") -bus = &"music" - -[node name="childhood" type="CenterContainer" parent="AudioPlayer"] -visible = false -modulate = Color(1, 1, 1, 0) -self_modulate = Color(1, 1, 1, 0.923078) -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_right = -424.0 -grow_horizontal = 2 -grow_vertical = 2 - -[node name="PanelContainer" type="PanelContainer" parent="AudioPlayer/childhood"] -layout_mode = 2 -mouse_filter = 1 - -[node name="StartFrame" type="TextureRect" parent="AudioPlayer/childhood/PanelContainer"] -custom_minimum_size = Vector2(0, 900) -layout_mode = 2 -size_flags_vertical = 0 -texture = ExtResource("2_21x33") -expand_mode = 2 -stretch_mode = 4 - -[node name="Panel" type="PanelContainer" parent="AudioPlayer/childhood/PanelContainer/StartFrame"] -show_behind_parent = true -layout_mode = 2 -offset_left = 199.0 -offset_top = -112.0 -offset_right = 1039.0 -offset_bottom = 697.0 -rotation = 0.459022 -mouse_filter = 1 - -[node name="VBoxContainer" type="VBoxContainer" parent="AudioPlayer/childhood/PanelContainer"] -layout_mode = 2 - -[node name="Label" type="Label" parent="AudioPlayer/childhood/PanelContainer/VBoxContainer"] -layout_mode = 2 -theme_type_variation = &"HeaderLarge" -text = " Childhood" - -[node name="ScrollContainer" type="ScrollContainer" parent="AudioPlayer/childhood/PanelContainer/VBoxContainer"] -custom_minimum_size = Vector2(800, 750) -layout_mode = 2 -size_flags_horizontal = 4 -size_flags_vertical = 4 -horizontal_scroll_mode = 0 -vertical_scroll_mode = 3 - -[node name="Label" type="Label" parent="AudioPlayer/childhood/PanelContainer/VBoxContainer/ScrollContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -text = "Oh, my old mask. I have so many good memories about theatre club. I would stand on my bed for entire afternoons, weeks on end, practicing my lines. Pretending to be on the big stage ... my mom would get mad at me, when she had to call me three or four times for dinner. I just … didn’t like the interruptions. We both were often mad at each other. - -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." -autowrap_mode = 3 -visible_characters = 0 -visible_characters_behavior = 1 -visible_ratio = 0.0 - -[node name="StartBottom" type="TextureRect" parent="AudioPlayer/childhood/PanelContainer/VBoxContainer"] -custom_minimum_size = Vector2(0, 64) -layout_mode = 2 -size_flags_vertical = 8 -texture = ExtResource("3_xqd4w") -expand_mode = 2 -stretch_mode = 4 - -[node name="VoiceTraining" type="AudioStreamPlayer" parent="AudioPlayer"] -stream = ExtResource("10_wwwdq") -bus = &"music" - -[node name="VoiceTraining2" type="AudioStreamPlayer" parent="AudioPlayer"] -stream = ExtResource("10_wwwdq") -bus = &"music" - -[node name="Jui Jutsu" type="AudioStreamPlayer" parent="AudioPlayer"] -bus = &"music" - -[node name="Mask-interaction" type="Area3D" parent="." groups=["interactables"]] -transform = Transform3D(-0.863025, 0, 0.50516, 0, 1, 0, -0.50516, 0, -0.863025, 0.121309, 0.803665, 2.4765) -collision_layer = 16 -script = ExtResource("11_6fwv8") - -[node name="collectable_particles" parent="Mask-interaction" instance=ExtResource("12_qxx2k")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00898492, -0.14171, 0.152755) -visible = false - -[node name="UiWrapper" type="Area3D" parent="Mask-interaction"] -transform = Transform3D(0.1, -1.86265e-09, 0, 0, 0.0906676, 0.0421827, 0, -0.0421827, 0.0906676, -2.38419e-07, 0, 0.0718942) -script = ExtResource("11_7uxd8") - -[node name="UI_click_collider" type="CollisionShape3D" parent="Mask-interaction/UiWrapper"] -transform = Transform3D(2.56, -5.96046e-08, 4.76837e-07, 1.78814e-07, 2.56, -4.17233e-07, -2.38419e-07, -5.96046e-08, 2.56, 0, 1.90735e-06, 0.238397) -shape = SubResource("BoxShape3D_cb3g8") - -[node name="UiSprite" type="Sprite3D" parent="Mask-interaction/UiWrapper"] -transform = Transform3D(1, 0, 2.4869e-14, 0, 1, 0, -2.4869e-14, 0, 1, 0, 0, 0.610758) -pixel_size = 0.015 -no_depth_test = true -texture = SubResource("ViewportTexture_7hana") - -[node name="SubViewport" type="SubViewport" parent="Mask-interaction/UiWrapper/UiSprite"] -transparent_bg = true -size = Vector2i(300, 350) -render_target_update_mode = 4 - -[node name="Collectable_ui" parent="Mask-interaction/UiWrapper/UiSprite/SubViewport" instance=ExtResource("11_jxai0")] -visible = false -is_story = true -item_name = "my old Mask" -content_notes = "CN: testing testing 123" - -[node name="HoverDetect" type="CollisionShape3D" parent="Mask-interaction"] -shape = SubResource("CapsuleShape3D_72g2i") - [node name="SceneUI" type="Control" parent="."] visible = false layout_mode = 3 @@ -1349,6 +2181,9 @@ light_specular = 0.0 omni_range = 0.457129 omni_attenuation = 0.659754 +[connection signal="ini_room" from="." to="logic/PlayerController" method="_on_ini_room"] +[connection signal="ini_room" from="." to="logic/ScenePlayer" method="_on_ini_room"] +[connection signal="ini_room" from="." to="visuals/lights/light_animation" method="_on_ini_room"] [connection signal="ui_entered" from="logic/PlayerController" to="SceneUI" method="show"] [connection signal="ui_exited" from="logic/PlayerController" to="SceneUI" method="hide"] [connection signal="body_entered" from="logic/Bed and Ladders/ladder_trigger" to="logic/PlayerController" method="_on_bed_enter"] @@ -1358,9 +2193,8 @@ omni_attenuation = 0.659754 [connection signal="body_entered" from="logic/Bed and Ladders/bed_enter" to="logic/PlayerController" method="_on_bed_enter"] [connection signal="body_exited" from="logic/Bed and Ladders/bed_reset" to="logic/PlayerController" method="_on_bed_exit"] [connection signal="body_exited" from="logic/Bed and Ladders/reset_failover" to="logic/PlayerController" method="_on_bed_exit"] -[connection signal="animation_finished" from="AudioPlayer" to="logic/PlayerController" method="_on_childhood_done"] -[connection signal="input_event" from="Mask-interaction/UiWrapper" to="Mask-interaction/UiWrapper" method="_on_input_event" flags=18] -[connection signal="card_collected" from="Mask-interaction/UiWrapper/UiSprite/SubViewport/Collectable_ui" to="." method="_on_childhood_collected"] -[connection signal="card_collected" from="Mask-interaction/UiWrapper/UiSprite/SubViewport/Collectable_ui" to="logic/PlayerController" method="_on_childhood_collected"] -[connection signal="card_collected" from="Mask-interaction/UiWrapper/UiSprite/SubViewport/Collectable_ui" to="WorldEnvironment" method="focus_object"] -[connection signal="card_collected" from="Mask-interaction/UiWrapper/UiSprite/SubViewport/Collectable_ui" to="AudioPlayer" method="_on_childhood_collected"] +[connection signal="input_event" from="logic/ScenePlayer/jui_jutsu/PanelContainer/card" to="logic/ScenePlayer/jui_jutsu/PanelContainer/card" method="_on_input_event" flags=18] +[connection signal="mouse_entered" from="logic/ScenePlayer/jui_jutsu/PanelContainer/card" to="logic/ScenePlayer/jui_jutsu/PanelContainer/card" method="_on_mouse_entered" flags=18] +[connection signal="mouse_exited" from="logic/ScenePlayer/jui_jutsu/PanelContainer/card" to="logic/ScenePlayer/jui_jutsu/PanelContainer/card" method="_on_mouse_exited" flags=18] +[connection signal="input_event" from="logic/Mask-interaction/UiWrapper" to="logic/Mask-interaction/UiWrapper" method="_on_input_event" flags=18] +[connection signal="input_event" from="logic/clothes_interaction/UiWrapper" to="logic/clothes_interaction/UiWrapper" method="_on_input_event" flags=18] diff --git a/src/default_bus_layout.tres b/src/default_bus_layout.tres index 144a4b7..3d80367 100644 --- a/src/default_bus_layout.tres +++ b/src/default_bus_layout.tres @@ -1,7 +1,6 @@ [gd_resource type="AudioBusLayout" format=3 uid="uid://djkwd76o033io"] [resource] -bus/0/mute = true bus/1/name = &"text" bus/1/solo = false bus/1/mute = false diff --git a/src/dev-util/board of devs.tscn b/src/dev-util/board of devs.tscn index f3e6368..d8688f2 100644 --- a/src/dev-util/board of devs.tscn +++ b/src/dev-util/board of devs.tscn @@ -1,8 +1,14 @@ -[gd_scene load_steps=3 format=3 uid="uid://bvowj4l8dtceu"] +[gd_scene load_steps=4 format=3 uid="uid://bvowj4l8dtceu"] [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/post-it.tscn" id="2_ucudl"] +[sub_resource type="GDScript" id="GDScript_cr445"] +script/source = "extends Control + +var has_stage: bool = false +" + [node name="board of devs" type="Control"] layout_mode = 3 anchors_preset = 15 @@ -10,6 +16,7 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +script = SubResource("GDScript_cr445") [node name="childhood" type="Control" parent="."] anchors_preset = 0 diff --git a/src/dev-util/click-trough-area.gd b/src/dev-util/click-trough-area.gd index a86ee9d..579b009 100644 --- a/src/dev-util/click-trough-area.gd +++ b/src/dev-util/click-trough-area.gd @@ -14,11 +14,6 @@ func _process(_delta): look_at(look, Vector3.UP) func _unhandled_input(event): - if event is InputEventMouse: - if event is InputEventMouseButton: - if event.button_index == MOUSE_BUTTON_RIGHT: - assert(false) - return viewport.push_input(event) func _on_input_event(_camera: Camera3D, event: InputEvent, pos: Vector3, _normal: Vector3, _shape_idx: int): diff --git a/src/logic-scenes/board/card-board.gd b/src/logic-scenes/board/card-board.gd index bc2b4ca..77733c2 100644 --- a/src/logic-scenes/board/card-board.gd +++ b/src/logic-scenes/board/card-board.gd @@ -5,13 +5,18 @@ enum ui_context {DROPZONE, POST_IT_LIST, ASSIGN_POST_IT} var has_stage = false: set(focus): - if focus != has_stage: - if focus: - has_stage = true - self.mouse_filter = Control.MOUSE_FILTER_PASS - else: - has_stage = false - self.mouse_filter = Control.MOUSE_FILTER_IGNORE + if focus: + has_stage = true + self.mouse_filter = Control.MOUSE_FILTER_PASS + else: + has_stage = false + self.mouse_filter = Control.MOUSE_FILTER_IGNORE + if is_node_ready(): + #fixme: thie should be replaced by a reference that holds all children ... + for child in dropzone.get_children(): + child.on_stage = has_stage + for child in postit_container.get_children(): + child.get_child(1).on_stage = has_stage @onready var dropzone = $HBoxContainer/dropzone @onready var postit_container = $HBoxContainer/ScrollContainer/VBoxContainer @@ -36,6 +41,7 @@ func _ready(): reorder_areas("dropzone_content") active_context = ui_context.DROPZONE + has_stage = has_stage # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta): diff --git a/src/logic-scenes/board/card.gd b/src/logic-scenes/board/card.gd index caf015d..3801963 100644 --- a/src/logic-scenes/board/card.gd +++ b/src/logic-scenes/board/card.gd @@ -10,16 +10,18 @@ var noise: Noise = FastNoiseLite.new() var wiggle_tween var scale_tween +var on_stage = false + @export var text: String = "" : - set (value): + set(value): text = value - if is_inside_tree() or Engine.is_editor_hint(): + if get_children() != [] or Engine.is_editor_hint(): $Label.text = value $BackgroundSprite.frame = text.hash() % $BackgroundSprite.sprite_frames.get_frame_count($BackgroundSprite.animation) - if is_inside_tree() and !Engine.is_editor_hint(): + if !Engine.is_editor_hint(): wiggle_pos = float(text.hash() % 100) _handle_wiggle(0) - if is_inside_tree() and value == "": + if get_children() != [] and !Engine.is_editor_hint() and text == "": $BackgroundSprite.void_active = true @export var wiggle_strength: float = 0.2 @export var wiggle_speed: float = 5 @@ -74,17 +76,18 @@ func _ready(): $BackgroundSprite.frame = text.hash() % $BackgroundSprite.sprite_frames.get_frame_count($BackgroundSprite.animation) $Label.text = self.text + if not Engine.is_editor_hint(): $BackgroundSprite.void_active = text == "" wiggle_pos = float(text.hash() % 100) if not Engine.is_editor_hint(): _handle_wiggle(0) func _process(delta: float) -> void: - - if highlighted: - _handle_wiggle(delta) - - _move_card() + if self.on_stage: + if highlighted: + _handle_wiggle(delta) + + _move_card() func _handle_wiggle(delta): wiggle_pos += delta * wiggle_speed * wiggle_intensity @@ -104,23 +107,25 @@ func _on_focus_exited(): print(self, "is not focused") func _on_mouse_entered(): - if not Input.is_action_pressed("mouse_left"): - highlighted = true - if "handle_hover" in owner: - owner.handle_hover(self) + if self.on_stage: + if not Input.is_action_pressed("mouse_left"): + highlighted = true + if "handle_hover" in owner: + owner.handle_hover(self) func _on_mouse_exited(): - highlighted = false + if self.on_stage: + highlighted = false func _on_input_event(viewport, event, shape_idx): - - if event is InputEventMouseMotion: - _move_card() - - if event is InputEventMouseButton: - if event.button_index == MOUSE_BUTTON_LEFT: - if is_dragable and "handle_mouse_button" in owner: - owner.handle_mouse_button(self, event) + if self.on_stage: + if event is InputEventMouseMotion: + _move_card() + + if event is InputEventMouseButton: + if event.button_index == MOUSE_BUTTON_LEFT: + if is_dragable and "handle_mouse_button" in owner: + owner.handle_mouse_button(self, event) func _move_card(): if is_dragged: diff --git a/src/logic-scenes/board/post-it.gd b/src/logic-scenes/board/post-it.gd index 0a9f785..b5883ba 100644 --- a/src/logic-scenes/board/post-it.gd +++ b/src/logic-scenes/board/post-it.gd @@ -6,6 +6,8 @@ var sibling var shift_tween var modulate_tween +var on_stage = false + @export var text: String = "" : set (value): if is_inside_tree() or Engine.is_editor_hint(): @@ -60,8 +62,8 @@ func replace_with(postit: PostIt): self.sibling = postit.sibling func _process(_delta: float) -> void: - _move_post_it() - + if on_stage: + _move_post_it() func _on_focus_entered(): print(self, "is focused") @@ -70,7 +72,7 @@ func _on_focus_exited(): print(self, "is not focused") func _on_mouse_entered(): - if not Input.is_action_pressed("mouse_left"): + if on_stage and not Input.is_action_pressed("mouse_left"): highlighted = true if "handle_hover" in owner: owner.handle_hover(self) @@ -79,13 +81,14 @@ func _on_mouse_exited(): highlighted = false func _on_input_event(viewport, event, shape_idx): - if event is InputEventMouseMotion: - _move_post_it() - - if event is InputEventMouseButton: - if event.button_index == MOUSE_BUTTON_LEFT: - if is_dragable and "handle_mouse_button" in owner: - owner.handle_mouse_button(self, event) + if on_stage: + if event is InputEventMouseMotion: + _move_post_it() + + if event is InputEventMouseButton: + if event.button_index == MOUSE_BUTTON_LEFT: + if is_dragable and "handle_mouse_button" in owner: + owner.handle_mouse_button(self, event) func _move_post_it(): if is_dragged: diff --git a/src/logic-scenes/card_picker/card_picker.tscn b/src/logic-scenes/card_picker/card_picker.tscn index 1aa837a..b8c5459 100644 --- a/src/logic-scenes/card_picker/card_picker.tscn +++ b/src/logic-scenes/card_picker/card_picker.tscn @@ -1491,7 +1491,6 @@ libraries = { [node name="card" parent="cards/card_1" instance=ExtResource("2_dqebt")] text = "Slot 1" -metadata/type = "card" [node name="card_2" type="Control" parent="cards"] layout_mode = 2 @@ -1504,7 +1503,6 @@ libraries = { [node name="card" parent="cards/card_2" instance=ExtResource("2_dqebt")] text = "Slot 2" -metadata/type = "card" [node name="card_3" type="Control" parent="cards"] layout_mode = 2 @@ -1522,7 +1520,6 @@ libraries = { [node name="card" parent="cards/card_3" instance=ExtResource("2_dqebt")] text = "Slot 3" -metadata/type = "card" [node name="postIts" type="Panel" parent="."] layout_mode = 2 diff --git a/src/logic-scenes/collectable/collectable_ui.gd b/src/logic-scenes/collectable/collectable_ui.gd index 4e605cf..96a4677 100644 --- a/src/logic-scenes/collectable/collectable_ui.gd +++ b/src/logic-scenes/collectable/collectable_ui.gd @@ -2,6 +2,8 @@ extends CenterContainer class_name Collectable_Ui +@export var scene = Scenes.id + @export var collapsed = true: set(collapse): if is_inside_tree() and not Engine.is_editor_hint(): @@ -17,6 +19,8 @@ class_name Collectable_Ui _show_buttons() collapsed = collapse + if collapse and has_stage: State.leave_stage(self) + @export var is_story: bool = false @export var has_stage: bool = false: set(focused): @@ -36,9 +40,6 @@ class_name Collectable_Ui elif has_stage: has_stage = false get_viewport().gui_release_focus() - #hide() - - @export var collected: bool = false: set(set_collected): @@ -100,22 +101,26 @@ func hide(): _hide_buttons() await tween.finished visible = false + if has_stage: State.leave_stage(self) func show(): - if not collapsed: - _show_buttons() - modulate = Color() - visible = true - var tween = create_tween() - tween.tween_property(self, "modulate", Color(1, 1, 1), 0.4) + if !visible: + if not collapsed: + _show_buttons() + modulate = Color() + visible = true + var tween = create_tween() + tween.tween_property(self, "modulate", Color(1, 1, 1), 0.4) func _yoink_focus(): - return # fixme if not has_stage: - State.take_stage(self, true) + State.transition_stage_to(self) func _on_pick_button_pressed(): - hide() print("card collected!") - emit_signal("card_collected") + if scene != null: + get_tree().call_group("animation_player", "play_scene", scene) State.leave_stage(self) + +func _on_pick_button_released(): + hide() diff --git a/src/logic-scenes/collectable/collectable_ui.tscn b/src/logic-scenes/collectable/collectable_ui.tscn index c2217bf..2893e86 100644 --- a/src/logic-scenes/collectable/collectable_ui.tscn +++ b/src/logic-scenes/collectable/collectable_ui.tscn @@ -99,6 +99,7 @@ grow_horizontal = 2 grow_vertical = 2 theme = ExtResource("1_2apkb") script = ExtResource("1_tgjc2") +scene = null [node name="Panel" type="PanelContainer" parent="."] layout_mode = 2 @@ -170,6 +171,7 @@ libraries = { } [connection signal="resized" from="Panel/Content/Buttons/VBoxContainer" to="Panel/Content/Buttons" method="_on_v_box_container_resized"] +[connection signal="button_up" from="Panel/Content/Buttons/VBoxContainer/collect_or_listen" to="." method="_on_pick_button_released"] [connection signal="focus_entered" from="Panel/Content/Buttons/VBoxContainer/collect_or_listen" to="." method="_yoink_focus"] [connection signal="pressed" from="Panel/Content/Buttons/VBoxContainer/collect_or_listen" to="." method="_on_pick_button_pressed"] [connection signal="focus_entered" from="Panel/Content/Buttons/VBoxContainer/Summary" to="." method="_yoink_focus"] diff --git a/src/logic-scenes/player_controller/player_controller.gd b/src/logic-scenes/player_controller/player_controller.gd index e04d169..e10bcc8 100644 --- a/src/logic-scenes/player_controller/player_controller.gd +++ b/src/logic-scenes/player_controller/player_controller.gd @@ -65,6 +65,9 @@ signal ui_exited func _ready(): _handle_jitter(0) +func _on_ini_room(): + State.take_stage(self) + func _process(_delta): if focus_ray.get_collider() != null: @@ -148,15 +151,17 @@ func _input(event:InputEvent): if event is InputEventMouseMotion and Input.mouse_mode == Input.MOUSE_MODE_CAPTURED: _handle_mouse_input(event) get_viewport().set_input_as_handled() - if event is InputEventMouseButton and has_entered: + if event is InputEventMouseButton and event.pressed: State.free_focus() - get_viewport().set_input_as_handled() + get_tree().call_group("interactables", "reveal") #if event.is_action_pressed("ui_accept"): # State.pass_stage_to(focus_ray.get_collider()) # get_viewport().set_input_as_handled() - -func _on_empty_click(): - State.take_stage(self, true) + else: + if event is InputEventMouseButton: + if event.button_index == MOUSE_BUTTON_RIGHT and event.pressed: + if !Input.is_mouse_button_pressed(MOUSE_BUTTON_LEFT): + State.take_stage(self, true) func _on_bed_enter(_body): if not (crouched or on_crouch_cooldown): @@ -175,5 +180,3 @@ func _on_bed_exit(_body): on_crouch_cooldown = true await get_tree().create_timer(1.0).timeout on_crouch_cooldown = false - - diff --git a/src/logic-scenes/player_controller/player_controller.tscn b/src/logic-scenes/player_controller/player_controller.tscn index f2fd71a..d898027 100644 --- a/src/logic-scenes/player_controller/player_controller.tscn +++ b/src/logic-scenes/player_controller/player_controller.tscn @@ -1,18 +1,10 @@ -[gd_scene load_steps=11 format=3 uid="uid://mkccbig41bqb"] +[gd_scene load_steps=8 format=3 uid="uid://mkccbig41bqb"] [ext_resource type="Script" path="res://logic-scenes/player_controller/player_controller.gd" id="1_0b4mi"] -[ext_resource type="ArrayMesh" uid="uid://bfc3d4g40n0wy" path="res://logic-scenes/collectable/import/old-mask.res" id="2_vnej0"] [sub_resource type="PhysicsMaterial" id="10"] friction = 0.0 -[sub_resource type="GDScript" id="GDScript_r0b38"] -script/source = "extends MeshInstance3D - -func _process(delta): - rotate_y(delta/3) -" - [sub_resource type="SphereShape3D" id="8"] radius = 0.307047 @@ -42,114 +34,6 @@ tracks/1/keys = { "update": 0, "values": [Vector3(0, 0, 0)] } -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("Yaw/Pitch/Mount/Camera3D/memory mount/old_mask2:rotation") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector3(5.96046e-08, 1.74846e-07, -7.10543e-15)] -} -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("Yaw/Pitch/Mount/Camera3D/memory mount:position") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector3(0.11067, -0.0251684, -0.309266)] -} -tracks/4/type = "value" -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/path = NodePath("Yaw/Pitch/Mount/Camera3D/memory mount:rotation") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector3(1.49012e-07, 0, 0)] -} -tracks/5/type = "value" -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/path = NodePath("Yaw/Pitch/Mount/Camera3D/SpotLight3D:light_energy") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [0.4] -} -tracks/6/type = "value" -tracks/6/imported = false -tracks/6/enabled = true -tracks/6/path = NodePath("Yaw/Pitch/Mount/Camera3D/SpotLight3D2:light_energy") -tracks/6/interp = 1 -tracks/6/loop_wrap = true -tracks/6/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [1.5] -} -tracks/7/type = "value" -tracks/7/imported = false -tracks/7/enabled = true -tracks/7/path = NodePath("Yaw/Pitch/Mount/Camera3D/SpotLight3D:visible") -tracks/7/interp = 1 -tracks/7/loop_wrap = true -tracks/7/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} -tracks/8/type = "value" -tracks/8/imported = false -tracks/8/enabled = true -tracks/8/path = NodePath("Yaw/Pitch/Mount/Camera3D/SpotLight3D2:layers") -tracks/8/interp = 1 -tracks/8/loop_wrap = true -tracks/8/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [1] -} -tracks/9/type = "value" -tracks/9/imported = false -tracks/9/enabled = true -tracks/9/path = NodePath("Yaw/Pitch/Mount/Camera3D/SpotLight3D2:visible") -tracks/9/interp = 1 -tracks/9/loop_wrap = true -tracks/9/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} -tracks/10/type = "value" -tracks/10/imported = false -tracks/10/enabled = true -tracks/10/path = NodePath("Yaw/Pitch/Mount/Camera3D/memory mount/old_mask2:visible") -tracks/10/interp = 1 -tracks/10/loop_wrap = true -tracks/10/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} [sub_resource type="Animation" id="12"] resource_name = "crouch" @@ -179,106 +63,6 @@ tracks/1/keys = { "values": [Vector3(0, 0, 0), Vector3(-30, 0, -10), Vector3(-20, 0, 3), Vector3(0, 0, 0), Vector3(0, 0, 0)] } -[sub_resource type="Animation" id="Animation_5o0sk"] -resource_name = "mask_reveal" -length = 3.0 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Yaw/Pitch/Mount/Camera3D/memory mount:position") -tracks/0/interp = 2 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 3), -"transitions": PackedFloat32Array(0.366021, 1), -"update": 0, -"values": [Vector3(0.376781, -0.521269, -0.513588), Vector3(0.18, -0.025, -0.309)] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("Yaw/Pitch/Mount/Camera3D/memory mount:rotation") -tracks/1/interp = 2 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0, 3), -"transitions": PackedFloat32Array(1, 0.378929), -"update": 0, -"values": [Vector3(0, -0.698132, 0), Vector3(1.49012e-07, 0, 0)] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("Yaw/Pitch/Mount/Camera3D/SpotLight3D:light_energy") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0.8, 3), -"transitions": PackedFloat32Array(1, 1), -"update": 0, -"values": [0.0, 0.4] -} -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("Yaw/Pitch/Mount/Camera3D/SpotLight3D2:light_energy") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"times": PackedFloat32Array(0.2, 3), -"transitions": PackedFloat32Array(1, 1), -"update": 0, -"values": [0.0, 1.5] -} -tracks/4/type = "value" -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/path = NodePath("Yaw/Pitch/Mount/Camera3D/SpotLight3D:visible") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/keys = { -"times": PackedFloat32Array(0, 0.1), -"transitions": PackedFloat32Array(1, 1), -"update": 1, -"values": [false, true] -} -tracks/5/type = "value" -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/path = NodePath("Yaw/Pitch/Mount/Camera3D/SpotLight3D2:layers") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [1] -} -tracks/6/type = "value" -tracks/6/imported = false -tracks/6/enabled = true -tracks/6/path = NodePath("Yaw/Pitch/Mount/Camera3D/SpotLight3D2:visible") -tracks/6/interp = 1 -tracks/6/loop_wrap = true -tracks/6/keys = { -"times": PackedFloat32Array(0, 0.1), -"transitions": PackedFloat32Array(1, 1), -"update": 1, -"values": [false, true] -} -tracks/7/type = "value" -tracks/7/imported = false -tracks/7/enabled = true -tracks/7/path = NodePath("Yaw/Pitch/Mount/Camera3D/memory mount/old_mask2:visible") -tracks/7/interp = 1 -tracks/7/loop_wrap = true -tracks/7/keys = { -"times": PackedFloat32Array(0, 0.1), -"transitions": PackedFloat32Array(1, 1), -"update": 1, -"values": [false, true] -} - [sub_resource type="Animation" id="14"] resource_name = "stand_up" length = 3.0 @@ -289,10 +73,10 @@ tracks/0/path = NodePath("Yaw:position") tracks/0/interp = 2 tracks/0/loop_wrap = true tracks/0/keys = { -"times": PackedFloat32Array(0, 0.9, 1.7, 3), +"times": PackedFloat32Array(0, 0.9, 1.8, 3), "transitions": PackedFloat32Array(1, 1, 1, 1), "update": 0, -"values": [Vector3(0, 0.327816, 0), Vector3(0, 0.331, 0), Vector3(0, 1.3, 0), Vector3(0, 1.22534, 0)] +"values": [Vector3(0, 0.327816, 0), Vector3(0, 0.331, 0), Vector3(0, 1, 0), Vector3(0, 1.22534, 0)] } tracks/1/type = "value" tracks/1/imported = false @@ -311,7 +95,6 @@ tracks/1/keys = { _data = { "RESET": SubResource("11"), "crouch": SubResource("12"), -"mask_reveal": SubResource("Animation_5o0sk"), "stand_up": SubResource("14") } @@ -343,44 +126,6 @@ collision_mask = 17 collide_with_areas = true collide_with_bodies = false -[node name="memory mount" type="Node3D" parent="Yaw/Pitch/Mount/Camera3D"] -transform = Transform3D(0.8, 0, 0, 0, 0.8, -7.15258e-08, 0, 1.1921e-07, 0.48, 0.11067, -0.0251684, -0.309266) - -[node name="old_mask2" type="MeshInstance3D" parent="Yaw/Pitch/Mount/Camera3D/memory mount"] -transform = Transform3D(1, 1.75271e-14, 1.74846e-07, -7.10543e-15, 1, -5.96046e-08, -1.74846e-07, 5.96046e-08, 1, 0.0250661, 0, 0) -visible = false -mesh = ExtResource("2_vnej0") -skeleton = NodePath("") -script = SubResource("GDScript_r0b38") - -[node name="OmniLight3D" type="OmniLight3D" parent="Yaw/Pitch/Mount/Camera3D/memory mount/old_mask2"] -transform = Transform3D(1, -3.8743e-07, 5.96046e-08, 3.57628e-07, 1, 8.9407e-08, -5.96046e-08, -8.9407e-08, 1, 0.083235, -0.219628, 0.176047) -light_color = Color(0.972549, 0.752941, 0.592157, 1) -light_energy = 0.1 -light_specular = 0.0 -omni_range = 0.457129 -omni_attenuation = 0.659754 - -[node name="SpotLight3D" type="SpotLight3D" parent="Yaw/Pitch/Mount/Camera3D"] -transform = Transform3D(0.584488, 0.621177, -0.522028, 0.363951, 0.374307, 0.852897, 0.725199, -0.688501, -0.00729993, 0.0601956, 0.21754, -0.271749) -visible = false -light_color = Color(0.97599, 0.669299, 0.509314, 1) -light_energy = 0.4 -light_size = 0.1 -shadow_enabled = true -spot_range = 0.394683 -spot_angle = 27.7927 - -[node name="SpotLight3D2" type="SpotLight3D" parent="Yaw/Pitch/Mount/Camera3D"] -transform = Transform3D(0.456583, 0.0747244, 0.886537, 0.819566, -0.423063, -0.386432, 0.346185, 0.903014, -0.254405, 0.475638, -0.147216, -0.329875) -visible = false -light_color = Color(0.317647, 0.427451, 1, 1) -light_energy = 1.5 -light_size = 0.1 -shadow_enabled = true -spot_range = 0.624277 -spot_angle = 22.1657 - [node name="PlayerCollision" type="CollisionShape3D" parent="."] transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0.322255, 0) shape = SubResource("8") diff --git a/src/project.godot b/src/project.godot index 7009d56..458fd43 100644 --- a/src/project.godot +++ b/src/project.godot @@ -19,6 +19,7 @@ config/icon="res://icon.png" [autoload] State="*res://singletons/global_state.gd" +Scenes="*res://singletons/scene_reference.gd" [debug] diff --git a/src/singletons/global_state.gd b/src/singletons/global_state.gd index 6e7c0f3..0defc1d 100644 --- a/src/singletons/global_state.gd +++ b/src/singletons/global_state.gd @@ -29,6 +29,7 @@ func take_stage(actor: Object, reclaim: bool = false) -> bool: if stage_list.has(actor): while stage_list.pop_front() != actor: break actor.has_stage = true + stage_list.push_front(actor) return actor.has_stage push_warning(actor, " wanted to reclaim focus, but was not on list.") return pass_stage_to(actor) @@ -58,10 +59,11 @@ func pass_stage_to(target:Object) -> bool: push_error("Focus instance not valid") elif !"has_stage" in target: push_error(target, " has no has focus method.") - if stage_list.size() > 0: - if stage_list.front() == target: - push_warning(target, " is already target. Abort passing focus.") else: + if stage_list.size() > 0: + if stage_list.front() == target: + push_warning(target, " is already target. Abort passing focus.") + return false if not stage_list.size() == 0: stage_list.front().has_stage = false target.has_stage = true if target.has_stage: @@ -72,7 +74,13 @@ func pass_stage_to(target:Object) -> bool: # Currently focused element loses focus, but remains in stack. func free_focus(): - if not stage_list.front() == null: stage_list.front().has_stage = false + if stage_list.size() > 0: stage_list.front().has_stage = false -func queue_for_stage(target: Object, index: int): +func transition_stage_to(thief: Object): + if stage_list.size() > 0: + if stage_list.front().has_stage: + stage_list.pop_front().has_stage = false + return pass_stage_to(thief) + +func queue_for_stage(target: Object, index: int = 1): stage_list.insert(index, target) diff --git a/src/singletons/scene_reference.gd b/src/singletons/scene_reference.gd index 4ffd27c..cbdae22 100644 --- a/src/singletons/scene_reference.gd +++ b/src/singletons/scene_reference.gd @@ -1,8 +1,8 @@ extends Node -enum { +enum id { YOUTH_CHILDHOOD, - YOUTH_THEATRE, + YOUTH_VOICE_TRAINING, YOUTH_JUI_JUTSU, ADULT_DND, ADULD_VOLUNTARY, diff --git a/src/vfx/collectable_particles.tscn b/src/vfx/collectable_particles.tscn index e93420f..dd3d745 100644 --- a/src/vfx/collectable_particles.tscn +++ b/src/vfx/collectable_particles.tscn @@ -25,7 +25,7 @@ gradient = SubResource("Gradient_c8r4y") [sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_eegys"] emission_shape = 1 -emission_sphere_radius = 0.3 +emission_sphere_radius = 0.2 spread = 180.0 gravity = Vector3(0, 0.02, 0) initial_velocity_max = 0.2 @@ -37,7 +37,7 @@ turbulence_noise_scale = 2.0 turbulence_noise_speed = Vector3(0.1, 0.3, 0.5) turbulence_noise_speed_random = 0.3 turbulence_influence_min = 0.01 -turbulence_influence_max = 0.03 +turbulence_influence_max = 0.02 turbulence_initial_displacement_max = 1.0 [sub_resource type="Shader" id="Shader_p2314"] @@ -127,12 +127,13 @@ shader_parameter/texture_backlight = ExtResource("2_h5y3k") [sub_resource type="QuadMesh" id="QuadMesh_ea2fp"] material = SubResource("ShaderMaterial_fgrmi") -size = Vector2(0.1, 0.1) +size = Vector2(0.06, 0.06) [node name="collectable_particles" type="GPUParticles3D"] material_override = SubResource("ShaderMaterial_lpenh") cast_shadow = 0 amount = 50 lifetime = 10.0 +speed_scale = 0.5 process_material = SubResource("ParticleProcessMaterial_eegys") draw_pass_1 = SubResource("QuadMesh_ea2fp")