diff --git a/Dialogue.tscn b/Dialogue.tscn new file mode 100644 index 0000000..f341bf7 --- /dev/null +++ b/Dialogue.tscn @@ -0,0 +1,37 @@ +[gd_scene format=3 uid="uid://bla1cfndgad0"] + +[ext_resource type="Texture2D" uid="uid://m5dwatby4pfc" path="res://art/text_box.png" id="1_4xg4g"] +[ext_resource type="Script" uid="uid://byj4ibepgm6oa" path="res://dialogue.gd" id="1_tgtc2"] + +[node name="Dialogue" type="TextureRect" unique_id=733911232] +visible = false +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("1_4xg4g") +script = ExtResource("1_tgtc2") + +[node name="Panel" type="Panel" parent="." unique_id=1878574619] +self_modulate = Color(1, 1, 1, 0) +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Text" type="RichTextLabel" parent="Panel" unique_id=1494828842] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 8.0 +offset_top = 265.0 +offset_right = -11.0 +offset_bottom = -263.0 +grow_horizontal = 2 +grow_vertical = 2 +bbcode_enabled = true +fit_content = true diff --git a/OldComputer.tscn b/OldComputer.tscn index 7cf4d16..719c285 100644 --- a/OldComputer.tscn +++ b/OldComputer.tscn @@ -43,6 +43,7 @@ offset_left = 150.0 offset_top = 105.0 offset_right = 1102.0 offset_bottom = 652.0 +bbcode_enabled = true text = ">> Pharaoh OS 2000 Boot Sequence >> WARN: Detected anomalies! >> WARN: Memory integrity at %d%%! diff --git a/Slideshower.tscn b/Slideshower.tscn new file mode 100644 index 0000000..db4b064 --- /dev/null +++ b/Slideshower.tscn @@ -0,0 +1,88 @@ +[gd_scene format=3 uid="uid://rcq5arl8mdes"] + +[ext_resource type="Script" uid="uid://bdv4qahk8mumv" path="res://slideshower.gd" id="1_7e6iu"] +[ext_resource type="Texture2D" uid="uid://pwn1pdrp6ruh" path="res://art/keyart_thumb.png" id="2_puxm7"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_puxm7"] +bg_color = Color(0.8203125, 0.8203125, 0.8203125, 1) + +[node name="Slideshower" type="Control" unique_id=776393005] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_7e6iu") + +[node name="VSplitContainer" type="VSplitContainer" parent="." unique_id=35480294] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 3.0 +offset_top = 4.0 +grow_horizontal = 2 +grow_vertical = 2 +split_offsets = PackedInt32Array(642) +split_offset = 642 + +[node name="ImageFrame" type="Panel" parent="VSplitContainer" unique_id=1582351824] +layout_mode = 2 + +[node name="SlideContainer" type="HBoxContainer" parent="VSplitContainer/ImageFrame" unique_id=975465325] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +alignment = 1 + +[node name="SlideImage" type="TextureRect" parent="VSplitContainer/ImageFrame/SlideContainer" unique_id=720362532] +layout_mode = 2 +texture = ExtResource("2_puxm7") +expand_mode = 2 +stretch_mode = 5 + +[node name="SlideImage2" type="TextureRect" parent="VSplitContainer/ImageFrame/SlideContainer" unique_id=746302187] +visible = false +layout_mode = 2 +texture = ExtResource("2_puxm7") +expand_mode = 2 +stretch_mode = 5 + +[node name="TextFrame" type="Panel" parent="VSplitContainer" unique_id=1381001186] +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_puxm7") + +[node name="SlideText" type="RichTextLabel" parent="VSplitContainer/TextFrame" unique_id=1168262970] +layout_mode = 1 +anchors_preset = -1 +anchor_right = 0.86 +anchor_bottom = 1.0 +offset_right = 11.780029 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_colors/default_color = Color(0, 0, 0, 1) +theme_override_font_sizes/normal_font_size = 21 +theme_override_font_sizes/bold_font_size = 21 +theme_override_font_sizes/bold_italics_font_size = 21 +theme_override_font_sizes/italics_font_size = 21 +theme_override_font_sizes/mono_font_size = 21 +text = "The Pharaoh's Jetpack!" + +[node name="ContinueButton" type="Button" parent="VSplitContainer/TextFrame" unique_id=1558725691] +layout_mode = 1 +anchors_preset = -1 +anchor_top = 0.097 +anchor_right = 1.0 +anchor_bottom = 0.79 +offset_left = 1133.0 +offset_top = -0.013999939 +offset_right = -14.0 +offset_bottom = 0.020000458 +grow_horizontal = 2 +text = "Continue [E]" + +[connection signal="pressed" from="VSplitContainer/TextFrame/ContinueButton" to="." method="_on_continue_button_pressed"] diff --git a/art/background.png b/art/background.png index 9a346fe..79dea26 100644 Binary files a/art/background.png and b/art/background.png differ diff --git a/art/block/portal.png b/art/block/portal.png index 838a586..a4a1f2d 100644 Binary files a/art/block/portal.png and b/art/block/portal.png differ diff --git a/art/block/portal2.png b/art/block/portal2.png index 0ccfb91..4925685 100644 Binary files a/art/block/portal2.png and b/art/block/portal2.png differ diff --git a/art/block/portal3.png b/art/block/portal3.png index 3c799db..546ea4d 100644 Binary files a/art/block/portal3.png and b/art/block/portal3.png differ diff --git a/art/idle_hidden.gif b/art/idle_hidden.gif new file mode 100644 index 0000000..8a3b0d0 Binary files /dev/null and b/art/idle_hidden.gif differ diff --git a/art/sign.png b/art/sign.png new file mode 100644 index 0000000..117f93f Binary files /dev/null and b/art/sign.png differ diff --git a/art/sign.png.import b/art/sign.png.import new file mode 100644 index 0000000..2e9a97a --- /dev/null +++ b/art/sign.png.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://djlqqmqpsd0kc" +path="res://.godot/imported/sign.png-f68c0bf044084530e7373ad6ed8f7c3f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/sign.png" +dest_files=["res://.godot/imported/sign.png-f68c0bf044084530e7373ad6ed8f7c3f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/high_quality_mode=0 +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +mipmaps/preserve_alpha_test_coverage=false +mipmaps/alpha_test_threshold=0.5 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/art/slides/Activate.png b/art/slides/Activate.png new file mode 100644 index 0000000..d1cb8c0 Binary files /dev/null and b/art/slides/Activate.png differ diff --git a/art/slides/Activate.png.import b/art/slides/Activate.png.import new file mode 100644 index 0000000..c291c5e --- /dev/null +++ b/art/slides/Activate.png.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d1njkrglsofqk" +path="res://.godot/imported/Activate.png-5a9b65792bff5759f1905879cea1ebaa.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/slides/Activate.png" +dest_files=["res://.godot/imported/Activate.png-5a9b65792bff5759f1905879cea1ebaa.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/high_quality_mode=0 +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +mipmaps/preserve_alpha_test_coverage=false +mipmaps/alpha_test_threshold=0.5 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/art/slides/Daydreaming.png b/art/slides/Daydreaming.png new file mode 100644 index 0000000..03f5e0b Binary files /dev/null and b/art/slides/Daydreaming.png differ diff --git a/art/slides/Daydreaming.png.import b/art/slides/Daydreaming.png.import new file mode 100644 index 0000000..25353db --- /dev/null +++ b/art/slides/Daydreaming.png.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dkhnrtsstc3gs" +path="res://.godot/imported/Daydreaming.png-653e4d4bd093a39da88f576e50d6c4f0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/slides/Daydreaming.png" +dest_files=["res://.godot/imported/Daydreaming.png-653e4d4bd093a39da88f576e50d6c4f0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/high_quality_mode=0 +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +mipmaps/preserve_alpha_test_coverage=false +mipmaps/alpha_test_threshold=0.5 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/art/slides/Glow.png b/art/slides/Glow.png new file mode 100644 index 0000000..500900d Binary files /dev/null and b/art/slides/Glow.png differ diff --git a/art/slides/Glow.png.import b/art/slides/Glow.png.import new file mode 100644 index 0000000..4069d24 --- /dev/null +++ b/art/slides/Glow.png.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://2mb7loqx4035" +path="res://.godot/imported/Glow.png-7fece8dff73930115c57f2c0ae3578d8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/slides/Glow.png" +dest_files=["res://.godot/imported/Glow.png-7fece8dff73930115c57f2c0ae3578d8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/high_quality_mode=0 +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +mipmaps/preserve_alpha_test_coverage=false +mipmaps/alpha_test_threshold=0.5 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/art/slides/Goatcaphagus.png b/art/slides/Goatcaphagus.png new file mode 100644 index 0000000..e0a40d9 Binary files /dev/null and b/art/slides/Goatcaphagus.png differ diff --git a/art/slides/Goatcaphagus.png.import b/art/slides/Goatcaphagus.png.import new file mode 100644 index 0000000..830adf4 --- /dev/null +++ b/art/slides/Goatcaphagus.png.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c5kfj40gjnltf" +path="res://.godot/imported/Goatcaphagus.png-d86b36347399a0816eebbbd8281279fc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/slides/Goatcaphagus.png" +dest_files=["res://.godot/imported/Goatcaphagus.png-d86b36347399a0816eebbbd8281279fc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/high_quality_mode=0 +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +mipmaps/preserve_alpha_test_coverage=false +mipmaps/alpha_test_threshold=0.5 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/art/slides/Journey.png b/art/slides/Journey.png new file mode 100644 index 0000000..cb9e9cd Binary files /dev/null and b/art/slides/Journey.png differ diff --git a/art/slides/Journey.png.import b/art/slides/Journey.png.import new file mode 100644 index 0000000..f0c404a --- /dev/null +++ b/art/slides/Journey.png.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://3jk04ddh4tme" +path="res://.godot/imported/Journey.png-73c5508ef5224e4becee36594c39a18b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/slides/Journey.png" +dest_files=["res://.godot/imported/Journey.png-73c5508ef5224e4becee36594c39a18b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/high_quality_mode=0 +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +mipmaps/preserve_alpha_test_coverage=false +mipmaps/alpha_test_threshold=0.5 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/art/slides/Opensofar.png b/art/slides/Opensofar.png new file mode 100644 index 0000000..d792daf Binary files /dev/null and b/art/slides/Opensofar.png differ diff --git a/art/slides/Opensofar.png.import b/art/slides/Opensofar.png.import new file mode 100644 index 0000000..4839ece --- /dev/null +++ b/art/slides/Opensofar.png.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dd6rkyvutqrxb" +path="res://.godot/imported/Opensofar.png-a0b612c8052ea0cd9e0750c52238989d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/slides/Opensofar.png" +dest_files=["res://.godot/imported/Opensofar.png-a0b612c8052ea0cd9e0750c52238989d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/high_quality_mode=0 +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +mipmaps/preserve_alpha_test_coverage=false +mipmaps/alpha_test_threshold=0.5 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/art/slides/PossessedbyOC.png b/art/slides/PossessedbyOC.png new file mode 100644 index 0000000..ac0cf01 Binary files /dev/null and b/art/slides/PossessedbyOC.png differ diff --git a/art/slides/PossessedbyOC.png.import b/art/slides/PossessedbyOC.png.import new file mode 100644 index 0000000..47dde84 --- /dev/null +++ b/art/slides/PossessedbyOC.png.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bh6teffdplxy7" +path="res://.godot/imported/PossessedbyOC.png-96605a3f22a6b73e1293b2d1be720757.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/slides/PossessedbyOC.png" +dest_files=["res://.godot/imported/PossessedbyOC.png-96605a3f22a6b73e1293b2d1be720757.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/high_quality_mode=0 +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +mipmaps/preserve_alpha_test_coverage=false +mipmaps/alpha_test_threshold=0.5 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/art/slides/Power_source.png b/art/slides/Power_source.png new file mode 100644 index 0000000..7c179b6 Binary files /dev/null and b/art/slides/Power_source.png differ diff --git a/art/slides/Power_source.png.import b/art/slides/Power_source.png.import new file mode 100644 index 0000000..7460f15 --- /dev/null +++ b/art/slides/Power_source.png.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c2e5dbfb16dhq" +path="res://.godot/imported/Power_source.png-669b9d6c712b93bed5f0d8805876b0d5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/slides/Power_source.png" +dest_files=["res://.godot/imported/Power_source.png-669b9d6c712b93bed5f0d8805876b0d5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/high_quality_mode=0 +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +mipmaps/preserve_alpha_test_coverage=false +mipmaps/alpha_test_threshold=0.5 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/art/text_box.png b/art/text_box.png new file mode 100644 index 0000000..ac2b0bf Binary files /dev/null and b/art/text_box.png differ diff --git a/art/text_box.png.import b/art/text_box.png.import new file mode 100644 index 0000000..1f567f3 --- /dev/null +++ b/art/text_box.png.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://m5dwatby4pfc" +path="res://.godot/imported/text_box.png-d58c3f415558f4d17ce4db7eb8cebb71.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/text_box.png" +dest_files=["res://.godot/imported/text_box.png-d58c3f415558f4d17ce4db7eb8cebb71.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/high_quality_mode=0 +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +mipmaps/preserve_alpha_test_coverage=false +mipmaps/alpha_test_threshold=0.5 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/block.tscn b/block.tscn index 1e60c7d..105bc16 100644 --- a/block.tscn +++ b/block.tscn @@ -3,7 +3,7 @@ [ext_resource type="Texture2D" uid="uid://blbaaqyrt8dtk" path="res://art/block/block.png" id="1_im0tn"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_f3sb7"] -size = Vector2(16, 16) +size = Vector2(16, 14) [node name="Block" type="RigidBody2D" unique_id=1409784601] gravity_scale = 0.0 diff --git a/dialogue.gd b/dialogue.gd new file mode 100644 index 0000000..0361fed --- /dev/null +++ b/dialogue.gd @@ -0,0 +1,15 @@ +class_name Dialogue +extends Control + +func show_text(text: String) -> Dialogue: + visible = true + $Panel/Text.text = "[center][font_size=28][color=BLACK]%s" % text + return self + +func dismiss_after(secs: float) -> Dialogue: + await get_tree().create_timer(secs).timeout + return dismiss() + +func dismiss() -> Dialogue: + visible = false + return self diff --git a/dialogue.gd.uid b/dialogue.gd.uid new file mode 100644 index 0000000..f7b8ea7 --- /dev/null +++ b/dialogue.gd.uid @@ -0,0 +1 @@ +uid://byj4ibepgm6oa diff --git a/down_spike.tscn b/down_spike.tscn new file mode 100644 index 0000000..9d940d6 --- /dev/null +++ b/down_spike.tscn @@ -0,0 +1,24 @@ +[gd_scene format=3 uid="uid://hqmkjtv5shyk"] + +[ext_resource type="Script" uid="uid://brlrpnqrsi2vn" path="res://spike.gd" id="1_bl7j6"] +[ext_resource type="Texture2D" uid="uid://bu5wgerfu7cbc" path="res://art/spike.png" id="2_24rqj"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_xfwl5"] +size = Vector2(15, 10) + +[node name="Spike" type="Node2D" unique_id=1739014101] +script = ExtResource("1_bl7j6") + +[node name="Sprite2D" type="Sprite2D" parent="." unique_id=813041394] +texture_filter = 1 +position = Vector2(0, 2) +scale = Vector2(-1, -1) +texture = ExtResource("2_24rqj") + +[node name="Area2D" type="Area2D" parent="." unique_id=170499029] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D" unique_id=1865546056] +position = Vector2(-0.5, -1) +shape = SubResource("RectangleShape2D_xfwl5") + +[connection signal="body_entered" from="Area2D" to="." method="on_contact"] diff --git a/hidden_coin.gd b/hidden_coin.gd new file mode 100644 index 0000000..022ac28 --- /dev/null +++ b/hidden_coin.gd @@ -0,0 +1,17 @@ +extends Node2D + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + add_to_group("Hidden") + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass + +func on_contact(body: Node2D) -> void: + print(body) + $AudioStreamPlayer2D.play() + visible = false + %Player2D.coins += 1 + await get_tree().create_timer(0.2).timeout + queue_free() diff --git a/hidden_coin.gd.uid b/hidden_coin.gd.uid new file mode 100644 index 0000000..f228475 --- /dev/null +++ b/hidden_coin.gd.uid @@ -0,0 +1 @@ +uid://7qhq76giye1v diff --git a/hidden_coin.tscn b/hidden_coin.tscn new file mode 100644 index 0000000..3ea0a11 --- /dev/null +++ b/hidden_coin.tscn @@ -0,0 +1,33 @@ +[gd_scene format=3 uid="uid://be757jqlv785s"] + +[ext_resource type="Script" uid="uid://7qhq76giye1v" path="res://hidden_coin.gd" id="1_4tl78"] +[ext_resource type="Texture2D" uid="uid://cr2wdd0yn1syy" path="res://art/coin_glow.png" id="2_17b6t"] +[ext_resource type="Texture2D" uid="uid://dftfxivu3peog" path="res://art/coin.png" id="3_n84lr"] +[ext_resource type="AudioStream" uid="uid://f2xmq6cgiiwj" path="res://sound/coin.wav" id="4_rxg23"] + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_6qpsl"] +height = 26.0 + +[node name="HiddenCoin" type="Node2D" unique_id=1739014101] +visible = false +script = ExtResource("1_4tl78") + +[node name="PointLight2D" type="PointLight2D" parent="." unique_id=2052227436] +color = Color(0, 0.5492828, 0.05646421, 1) +energy = 4.0 +texture = ExtResource("2_17b6t") +texture_scale = 1.3 + +[node name="Sprite2D" type="Sprite2D" parent="." unique_id=813041394] +texture = ExtResource("3_n84lr") + +[node name="Area2D" type="Area2D" parent="." unique_id=170499029] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D" unique_id=1865546056] +shape = SubResource("CapsuleShape2D_6qpsl") + +[node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="." unique_id=1778061188] +stream = ExtResource("4_rxg23") +volume_db = 1.0 + +[connection signal="body_entered" from="Area2D" to="." method="on_contact"] diff --git a/hidden_horizontal_long_block.tscn b/hidden_horizontal_long_block.tscn new file mode 100644 index 0000000..9dadd8e --- /dev/null +++ b/hidden_horizontal_long_block.tscn @@ -0,0 +1,30 @@ +[gd_scene format=3 uid="uid://ch0417iiviaxb"] + +[ext_resource type="Script" uid="uid://dcesonmhay5vo" path="res://hidden_vertical_long_block.gd" id="1_llak8"] +[ext_resource type="PackedScene" uid="uid://ckqable762x8v" path="res://block.tscn" id="2_se82m"] + +[node name="HiddenHorizontalLongBlock" type="RigidBody2D" unique_id=925152188] +rotation = 3.1415927 +gravity_scale = 0.0 +freeze = true +script = ExtResource("1_llak8") + +[node name="Block" parent="." unique_id=1409784601 instance=ExtResource("2_se82m")] + +[node name="Block2" parent="." unique_id=54235726 instance=ExtResource("2_se82m")] +position = Vector2(15.999999, -9.536743e-07) + +[node name="Block3" parent="." unique_id=474997430 instance=ExtResource("2_se82m")] +position = Vector2(-15, 0) + +[node name="Block4" parent="." unique_id=1125897933 instance=ExtResource("2_se82m")] +position = Vector2(32, -1.9073486e-06) + +[node name="Block5" parent="." unique_id=1104682129 instance=ExtResource("2_se82m")] +position = Vector2(-31, 0) + +[node name="Block6" parent="." unique_id=200247655 instance=ExtResource("2_se82m")] +position = Vector2(48, -1.9073486e-06) + +[node name="Block7" parent="." unique_id=519163182 instance=ExtResource("2_se82m")] +position = Vector2(-47, 3.8146973e-06) diff --git a/hidden_sign.gd b/hidden_sign.gd new file mode 100644 index 0000000..f5e5c3f --- /dev/null +++ b/hidden_sign.gd @@ -0,0 +1,11 @@ +extends Interactable + +@export var sign_text = "" +@export var text_dismiss_timer = 2 + +func _ready() -> void: + add_to_group("Hidden") + modulate = Color.DARK_CYAN + +func _on_interacted() -> void: + %Dialogue.show_text(sign_text).dismiss_after(text_dismiss_timer) diff --git a/hidden_sign.gd.uid b/hidden_sign.gd.uid new file mode 100644 index 0000000..8798f8e --- /dev/null +++ b/hidden_sign.gd.uid @@ -0,0 +1 @@ +uid://b64hyvumk366h diff --git a/hidden_sign.tscn b/hidden_sign.tscn new file mode 100644 index 0000000..5f95ac5 --- /dev/null +++ b/hidden_sign.tscn @@ -0,0 +1,30 @@ +[gd_scene format=3 uid="uid://dt43trxumfv0i"] + +[ext_resource type="Script" uid="uid://b64hyvumk366h" path="res://hidden_sign.gd" id="1_a20ku"] +[ext_resource type="Texture2D" uid="uid://djlqqmqpsd0kc" path="res://art/sign.png" id="2_soj2u"] +[ext_resource type="Texture2D" uid="uid://d0cd1alr8k706" path="res://art/interact_button.png" id="3_7o2b3"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_eumkw"] +size = Vector2(26, 32) + +[node name="HiddenSign" type="Node2D" unique_id=1201409437] +script = ExtResource("1_a20ku") + +[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1680278216] +position = Vector2(0, -16) +texture = ExtResource("2_soj2u") + +[node name="Area2D" type="Area2D" parent="Sprite2D" unique_id=2050186824] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Sprite2D/Area2D" unique_id=1560168165] +shape = SubResource("RectangleShape2D_eumkw") + +[node name="ButtonPrompt" type="Sprite2D" parent="Sprite2D" unique_id=1864817335] +visible = false +position = Vector2(0, -8.000002) +scale = Vector2(0.8, 0.8) +texture = ExtResource("3_7o2b3") + +[connection signal="interacted" from="." to="." method="_on_interacted"] +[connection signal="body_entered" from="Sprite2D/Area2D" to="." method="_on_approach"] +[connection signal="body_exited" from="Sprite2D/Area2D" to="." method="_on_abandon"] diff --git a/hidden_teleporter.gd b/hidden_teleporter.gd new file mode 100644 index 0000000..5b98ff4 --- /dev/null +++ b/hidden_teleporter.gd @@ -0,0 +1,44 @@ +extends Node2D + +@export var paired_teleporter: String +var checked_teleport +var telecam_speed_mult = 4 +var enabled = true +var cooldown = 2 + +func _ready() -> void: + modulate = Color.PURPLE + add_to_group("TELEPORTERS") + add_to_group("Hidden") + +func check_for_pair() -> String: + print(paired_teleporter) + return paired_teleporter + +func disable(): + enabled = false + $Sprite2D.modulate = Color.DARK_ORANGE + +func enable(): + enabled = true + $Sprite2D.modulate = Color.WHITE + +func _process(delta: float) -> void: + pass + +func _physics_process(delta: float) -> void: + pass + +func _on_contact(body) -> void: + #get_tree().call_group("TELEPORTERS","disable") + for teleporter in get_tree().get_nodes_in_group("TELEPORTERS"): + if teleporter != self: + if teleporter.paired_teleporter == paired_teleporter and enabled: + %Player2D.get_node("Camera2D").position_smoothing_enabled = false + if %Player2D.teleport_cooldown > 0: + return + body.set_position(teleporter.get_position()) + %Player2D.on_teleport() + disable() + await get_tree().create_timer(cooldown).timeout + enable() diff --git a/hidden_teleporter.gd.uid b/hidden_teleporter.gd.uid new file mode 100644 index 0000000..80bc369 --- /dev/null +++ b/hidden_teleporter.gd.uid @@ -0,0 +1 @@ +uid://btxx0p5ccar5f diff --git a/hidden_teleporter.tscn b/hidden_teleporter.tscn new file mode 100644 index 0000000..6be9c7f --- /dev/null +++ b/hidden_teleporter.tscn @@ -0,0 +1,40 @@ +[gd_scene format=3 uid="uid://7bjqgxckho"] + +[ext_resource type="Script" uid="uid://btxx0p5ccar5f" path="res://hidden_teleporter.gd" id="1_52wed"] +[ext_resource type="Texture2D" uid="uid://d0tvtt4eu8jmt" path="res://art/block/portal.png" id="2_rx1y0"] +[ext_resource type="Texture2D" uid="uid://55ihxa2emnep" path="res://art/block/portal2.png" id="3_5admx"] +[ext_resource type="Texture2D" uid="uid://d4a5x8gwhl2wc" path="res://art/block/portal3.png" id="4_tfiuq"] + +[sub_resource type="SpriteFrames" id="SpriteFrames_tuehi"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": ExtResource("2_rx1y0") +}, { +"duration": 1.0, +"texture": ExtResource("3_5admx") +}, { +"duration": 1.0, +"texture": ExtResource("4_tfiuq") +}], +"loop": 1, +"name": &"default", +"speed": 5.0 +}] + +[sub_resource type="CircleShape2D" id="CircleShape2D_7k7bx"] +radius = 9.0 + +[node name="HiddenTeleporter" type="Node2D" unique_id=1201409437] +script = ExtResource("1_52wed") + +[node name="Sprite2D" type="AnimatedSprite2D" parent="." unique_id=395479262] +sprite_frames = SubResource("SpriteFrames_tuehi") +autoplay = "default" + +[node name="Area2D" type="Area2D" parent="Sprite2D" unique_id=2050186824] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Sprite2D/Area2D" unique_id=1560168165] +shape = SubResource("CircleShape2D_7k7bx") + +[connection signal="body_entered" from="Sprite2D/Area2D" to="." method="_on_contact"] diff --git a/hidden_vertical_long_block.gd b/hidden_vertical_long_block.gd index 08f97a3..e07aba7 100644 --- a/hidden_vertical_long_block.gd +++ b/hidden_vertical_long_block.gd @@ -3,6 +3,7 @@ extends RigidBody2D # Called when the node enters the scene tree for the first time. func _ready() -> void: add_to_group("Hidden") + modulate = Color.DARK_CYAN # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: diff --git a/interactable.gd b/interactable.gd index d2d729a..2668cce 100644 --- a/interactable.gd +++ b/interactable.gd @@ -7,7 +7,7 @@ var checked_teleport var telecam_speed_mult = 4 var enabled = true var cooldown = 2 -var is_interactable = false +var _is_interactable = false func disable(): enabled = false @@ -17,10 +17,12 @@ func enable(): enabled = true $Sprite2D.modulate = Color.WHITE -func _process(delta: float) -> void: - if not (is_interactable and Input.is_action_just_released("interact")): - return +func is_interactable() -> bool: + return _is_interactable +func interact() -> void: + if not is_interactable(): + return interacted.emit() func _physics_process(delta: float) -> void: @@ -29,11 +31,13 @@ func _physics_process(delta: float) -> void: func _on_approach(body) -> void: if body!=%Player2D: return - is_interactable = true + _is_interactable = true + self.add_to_group("nearby_interactables") $Sprite2D/ButtonPrompt.show() func _on_abandon(body) -> void: if body!=%Player2D: return - is_interactable = false + _is_interactable = false + self.remove_from_group("nearby_interactables") $Sprite2D/ButtonPrompt.hide() diff --git a/intro.gd b/intro.gd new file mode 100644 index 0000000..caa3c39 --- /dev/null +++ b/intro.gd @@ -0,0 +1,25 @@ +extends Control + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + $Slideshower.play_slideshow([ + { "image": "Daydreaming", + "text": "Ever since he was a wee lad, Mr. Rhombini had always had one dream - to fly around in a blinged up jetpack." }, + { "image": "res://art/keyart_thumb.png", + "text": "The internet has been abuzz with talks of a legendary Pharaoh's jetpack. Mr. Rhombini's day has come." }, + { "image": "Journey", + "text": "Under the cover of night, Mr. Rhombini sneaks into the famous pharaoh's pyramid. This night, of all nights, it seems to glow with strange energy." }, + { "image": "Goatcaphagus", + "text": "Mr. Rhombini stumbles upon an unusual sarcophagus, a blend of ancient craftsmanship and advanced technology. The antenna have been disconnected." }, + { "image": "Activate", + "text": "Mr. Rhombini excitedly connects the antenna. The sarcophagus begins to hum." }, + { "image": "Opensofar", + "text": "The sarcophagus swings open to reveal, not a dead body, but an old computer. The computer begins to boot up, but an error message is visible on the main screen." }, + { "images": ["PossessedbyOC", "Power_source"], + "text": "However, Mr. Rhombini's attention is instantly grabbed by the other object inside the open sarcophagus." }, + { "image": "Glow", + "text": "The Pharaoh's jetpack! Mr. Rhombini wastes no time in putting it on." } + ]) + +func _on_slideshower_finished_playing() -> void: + get_tree().change_scene_to_file("res://world.tscn") diff --git a/intro.gd.uid b/intro.gd.uid new file mode 100644 index 0000000..b17e146 --- /dev/null +++ b/intro.gd.uid @@ -0,0 +1 @@ +uid://bo6557y41ps7i diff --git a/intro.tscn b/intro.tscn new file mode 100644 index 0000000..8968b9f --- /dev/null +++ b/intro.tscn @@ -0,0 +1,18 @@ +[gd_scene format=3 uid="uid://p65fagt04vv8"] + +[ext_resource type="Script" uid="uid://bo6557y41ps7i" path="res://intro.gd" id="1_ayt76"] +[ext_resource type="PackedScene" uid="uid://rcq5arl8mdes" path="res://Slideshower.tscn" id="1_s2ta7"] + +[node name="Intro" type="Control" unique_id=1423273784] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_ayt76") + +[node name="Slideshower" parent="." unique_id=776393005 instance=ExtResource("1_s2ta7")] +layout_mode = 1 + +[connection signal="finished_playing" from="Slideshower" to="." method="_on_slideshower_finished_playing"] diff --git a/long_floor_spike.gd b/long_floor_spike.gd new file mode 100644 index 0000000..ca85932 --- /dev/null +++ b/long_floor_spike.gd @@ -0,0 +1,14 @@ +extends Node2D + +func _ready() -> void: + pass + +func _process(delta: float) -> void: + pass + +func on_contact(body: Node2D) -> void: + if body==%Player2D and %Player2D.death_cooldown == 0: + print("SLASH KILL") + %Player2D/Jetpack/DeathSound.play() + %Player2D.on_death(false,%Player2D.position) + print(body) diff --git a/long_floor_spike.gd.uid b/long_floor_spike.gd.uid new file mode 100644 index 0000000..e762843 --- /dev/null +++ b/long_floor_spike.gd.uid @@ -0,0 +1 @@ +uid://cvguf2l65n7xa diff --git a/long_floor_spike.tscn b/long_floor_spike.tscn new file mode 100644 index 0000000..494dfcf --- /dev/null +++ b/long_floor_spike.tscn @@ -0,0 +1,32 @@ +[gd_scene format=3 uid="uid://b1ccvtwwb1cl7"] + +[ext_resource type="PackedScene" uid="uid://c8m4d77hcr0pj" path="res://spike.tscn" id="1_phdmj"] +[ext_resource type="Script" uid="uid://cvguf2l65n7xa" path="res://long_floor_spike.gd" id="1_rwckv"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_phdmj"] +size = Vector2(74, 9) + +[node name="Spike" type="Node2D" unique_id=1739014101] +script = ExtResource("1_rwckv") + +[node name="Spike" parent="." unique_id=324768327 instance=ExtResource("1_phdmj")] + +[node name="Spike2" parent="." unique_id=1119131696 instance=ExtResource("1_phdmj")] +position = Vector2(15, 0) + +[node name="Spike5" parent="." unique_id=356301870 instance=ExtResource("1_phdmj")] +position = Vector2(30, 0) + +[node name="Spike3" parent="." unique_id=1414181030 instance=ExtResource("1_phdmj")] +position = Vector2(-15, 0) + +[node name="Spike4" parent="." unique_id=333001001 instance=ExtResource("1_phdmj")] +position = Vector2(-30, 0) + +[node name="Area2D" type="Area2D" parent="." unique_id=2124972792] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D" unique_id=371031870] +position = Vector2(0, 5.5) +shape = SubResource("RectangleShape2D_phdmj") + +[connection signal="body_entered" from="Area2D" to="." method="on_contact"] diff --git a/old_computer.gd b/old_computer.gd index 0caef5b..436a066 100644 --- a/old_computer.gd +++ b/old_computer.gd @@ -1,7 +1,47 @@ extends CanvasLayer +var disks_wanted = [1, 2, 3, 4] +var disks_loaded = [] + +var starting_integrity = 2 +var total_integrity = starting_integrity + len(disks_wanted) + func _ready() -> void: - $ConsoleText.text = $ConsoleText.text % %Pharaoh.get_memory_integrity() + $ConsoleText.text = $ConsoleText.text % get_memory_integrity() + +func load_disk(disk_num: int) -> bool: + if !disk_num or (disk_num in disks_loaded): + return false + + disks_loaded.push_back(disk_num) + disks_wanted.remove_at(disks_wanted.find(disk_num)) + + print("Loaded up disk ", disk_num) + printline( + ">> Loaded data disk %d (of %d). Memory integrity now at %d%%" % + [disk_num, len(disks_wanted) + len(disks_loaded), get_memory_integrity()] + ) + + if has_finished_initialization(): + printline( + ">> System initialization complete. Beginning reactivation sequence." + ) + printline( + ">> Player: Press [E] or [Space] to return to the outside world." + ) + + return true + +func get_next_disk_num() -> int: + if disks_wanted.is_empty(): + return 0 + return disks_wanted.front() + +func get_memory_integrity(): + return 100.0 / total_integrity * (starting_integrity + len(disks_loaded)) + +func has_finished_initialization() -> bool: + return disks_wanted.is_empty() func open() -> void: visible = true @@ -11,4 +51,7 @@ func printline(line: String) -> void: $ConsoleText.text += "\n" + line func close() -> void: + if has_finished_initialization(): + get_tree().quit() + visible = false diff --git a/pharaoh.gd b/pharaoh.gd index d0a87fe..dd5aca6 100644 --- a/pharaoh.gd +++ b/pharaoh.gd @@ -1,49 +1,30 @@ extends Interactable -var disks_wanted = [1, 2, 3, 4] -var disks_loaded = [] - -var starting_integrity = 2 -var total_integrity = starting_integrity + len(disks_wanted) - -func load_disk(disk_num: int) -> bool: - if !disk_num or (disk_num in disks_loaded): - return false - - disks_loaded.push_back(disk_num) - disks_wanted.remove_at(disks_wanted.find(disk_num)) - return true - -func get_memory_integrity(): - return 100.0 / total_integrity * (starting_integrity + len(disks_loaded)) - func _on_interacted() -> void: - #%OldComputer.open() + %OldComputer.open() - var wanted_disk = disks_wanted.front() + #Accomodate some collision antics. + var new_spawn_point = global_position + Vector2(0,-10) + + if %Player2D.spawn_point != new_spawn_point: + %Player2D.spawn_point = new_spawn_point + %OldComputer.printline(">> Respawn point set to %s" % new_spawn_point) - %Player2D.spawn_point = global_position + var wanted_disk = %OldComputer.get_next_disk_num() - if not %Player2D.take_disk(wanted_disk): - if wanted_disk == 1 and not %Player2D.has_objective("disk%d" % wanted_disk): - %OldComputer.open() - %Player2D.give_objective( - "disk%d" % wanted_disk, - wanted_disk, "Locate data disk %d" % wanted_disk - ) + if %Player2D.complete_objective("sarc"): + %OldComputer.open() + %Player2D.give_objective( + "disk%d" % wanted_disk, + wanted_disk, "Locate data disk %d" % wanted_disk + ) return - if not load_disk(wanted_disk): + if not (%Player2D.take_disk(wanted_disk) and %OldComputer.load_disk(wanted_disk)): return %Player2D.complete_objective("disk%d" % wanted_disk) - print("Loaded up disk ", wanted_disk) - %OldComputer.printline( - ">> Loaded data disk %d (of %d). Memory integrity now at %d%%" % - [wanted_disk, len(disks_wanted) + len(disks_loaded), get_memory_integrity()] - ) - - wanted_disk = disks_wanted.front() + wanted_disk = %OldComputer.get_next_disk_num() if (not wanted_disk) or %Player2D.has_disk(wanted_disk): return diff --git a/pharaoh.tscn b/pharaoh.tscn index 0b9ec3e..38a759d 100644 --- a/pharaoh.tscn +++ b/pharaoh.tscn @@ -11,7 +11,7 @@ size = Vector2(26, 32) script = ExtResource("1_mt7kg") [node name="Sprite2D" type="Sprite2D" parent="." unique_id=1680278216] -position = Vector2(0, -15) +position = Vector2(0, -16) texture = ExtResource("2_mt7kg") [node name="Area2D" type="Area2D" parent="Sprite2D" unique_id=2050186824] diff --git a/player_2d.gd b/player_2d.gd index 2f595b3..8b05271 100644 --- a/player_2d.gd +++ b/player_2d.gd @@ -7,8 +7,9 @@ const FRICTION = 100 const GRAVITY_MULT = 0.8 const JUMP_VELOCITY = -410.0 const DASH_LENGTH = 0.2 -const BACKGROUND_COLOR = Color.SANDY_BROWN +const BACKGROUND_COLOR = Color(Color.ORANGE.r + 0.80,Color.ORANGE.g + 0.20,Color.ORANGE.b - 0.10) +var death_cooldown = 0.0 var fall_timer = 0.0 var teleport_cooldown = 0 var jumps = 0 @@ -16,7 +17,9 @@ var dashes = 1 var dashing = false var death_threshold = 2000 var coins = 0 + var spawn_point +var last_ground_point var data_disks = [] var objectives = {} @@ -24,6 +27,8 @@ var objectives = {} func _ready() -> void: spawn_point = position DisplayServer.window_set_title("JUMPS EQUALS JUMPS") + give_objective("sarc", 0, "Open the Sarcophagus") + #%Dialogue.show_text("Hello world!").dismiss_after(2) func refresh_dash(new_dashes): if new_dashes: @@ -91,6 +96,7 @@ func spawn_ghost(ghost_position): ghost.position = ghost_position func on_death(instant = false, player_position = position): + death_cooldown += 1 if !instant: await get_tree().create_timer(0.1).timeout get_tree().paused = true @@ -107,14 +113,27 @@ func on_death(instant = false, player_position = position): get_tree().paused = false #position = %LevelStart.position - position = spawn_point + velocity = Vector2(0,0) + position = spawn_point + Vector2(0,-100) + await get_tree().create_timer(0.1).timeout + death_cooldown = 0 func _process(delta: float) -> void: if Input.is_action_just_released("restart") or (Input.is_action_pressed("controller_restart_left") and Input.is_action_pressed("controller_restart_right")): get_tree().reload_current_scene() + if is_on_floor(): + last_ground_point = global_position + #spawn_point = last_ground_point + + if %OldComputer.visible: + if Input.is_action_just_released("interact") or Input.is_action_just_released("jump"): + %OldComputer.close() + return + if Input.is_action_just_released("interact"): - %OldComputer.close() + for interactable in get_tree().get_nodes_in_group("nearby_interactables"): + interactable.interact() if Input.is_action_just_pressed("jump"): %OldComputer.close() @@ -128,15 +147,15 @@ func _process(delta: float) -> void: $Jetpack/DoubleJumpSound.play() if jumps == 0: $Jetpack/JumpIndicator.hide() + + if Input.is_action_just_released("jump"): + velocity.y = -(0.001 * JUMP_VELOCITY) if Input.is_action_pressed("jump") and is_on_wall_only(): print("WALL HANGING") #velocity.y = 0 #velocity.x = 0 - if %OldComputer.visible: - return - var direction = Input.get_axis("move_left","move_right") if direction < 0: @@ -147,9 +166,7 @@ func _process(delta: float) -> void: $Sprite2D/HatSprite.flip_h = false if Input.is_action_pressed("dash_down") and is_on_floor(): - print("Crouching") $Sprite2D.play("crouch") - print("MODULATE: " + str($Parallax2D/Sprite2D.modulate)) $Parallax2D/Sprite2D.modulate = Color.CYAN for hidden_object in get_tree().get_nodes_in_group("Hidden"): @@ -208,7 +225,6 @@ func _process(delta: float) -> void: #get_tree().reload_current_scene() func _physics_process(delta: float) -> void: - if not is_on_floor(): velocity += (get_gravity() * GRAVITY_MULT) * delta diff --git a/player_2d.tscn b/player_2d.tscn index abcefe7..02f637f 100644 --- a/player_2d.tscn +++ b/player_2d.tscn @@ -124,10 +124,12 @@ animations = [{ "speed": 5.0 }] -[sub_resource type="RectangleShape2D" id="RectangleShape2D_fj7yv"] -size = Vector2(10, 16) +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ix7pg"] +radius = 6.0 +height = 12.0 [node name="Player2D" type="CharacterBody2D" unique_id=889851478] +safe_margin = 0.06 script = ExtResource("1_sy00s") [node name="BackgroundMusic" type="AudioStreamPlayer2D" parent="." unique_id=299359239] @@ -139,6 +141,7 @@ script = ExtResource("3_sxtm6") [node name="WarpShader" type="MeshInstance2D" parent="CanvasLayer2" unique_id=88397728] material = SubResource("ShaderMaterial_pmt5n") +position = Vector2(0, -1) mesh = SubResource("QuadMesh_nj6as") script = ExtResource("4_pmt5n") @@ -148,7 +151,7 @@ texture = ExtResource("4_nj6as") [node name="Parallax2D" type="Parallax2D" parent="." unique_id=270393374] repeat_size = Vector2(1280, 720) -autoscroll = Vector2(5, 0) +autoscroll = Vector2(1, 0) follow_viewport = false ignore_camera_scroll = true @@ -220,4 +223,5 @@ stream = ExtResource("20_l50qk") stream = ExtResource("20_1741q") [node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1294571021] -shape = SubResource("RectangleShape2D_fj7yv") +position = Vector2(0, 3) +shape = SubResource("CapsuleShape2D_ix7pg") diff --git a/project.godot b/project.godot index 65816c5..0b0b882 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="JumpRope" -run/main_scene="uid://iivvrut0lfsr" +run/main_scene="uid://p65fagt04vv8" config/features=PackedStringArray("4.8", "Forward Plus") boot_splash/image="uid://dhue32shjdpt8" config/icon="res://icon.svg" @@ -123,7 +123,7 @@ move_left={ )] } jump={ -"deadzone": 0.2, +"deadzone": 0.0, "events": [Object(InputEventJoypadButton, "resource_local_to_scene": false, "resource_name": "", @@ -383,6 +383,14 @@ interact={ "location": 0, "echo": false, "script": null +), Object(InputEventJoypadButton, +"resource_local_to_scene": false, +"resource_name": "", +"device": -1, +"button_index": 1, +"pressure": 0.0, +"pressed": true, +"script": null )] } diff --git a/sign.gd b/sign.gd new file mode 100644 index 0000000..2577a53 --- /dev/null +++ b/sign.gd @@ -0,0 +1,7 @@ +extends Interactable + +@export var sign_text = "" +@export var text_dismiss_timer = 2 + +func _on_interacted() -> void: + %Dialogue.show_text(sign_text).dismiss_after(text_dismiss_timer) diff --git a/sign.gd.uid b/sign.gd.uid new file mode 100644 index 0000000..1dc2179 --- /dev/null +++ b/sign.gd.uid @@ -0,0 +1 @@ +uid://dvo0iux2pcggi diff --git a/sign.tscn b/sign.tscn new file mode 100644 index 0000000..bfa3a2f --- /dev/null +++ b/sign.tscn @@ -0,0 +1,30 @@ +[gd_scene format=3 uid="uid://bnkbkfto83owf"] + +[ext_resource type="Script" uid="uid://dvo0iux2pcggi" path="res://sign.gd" id="1_q3tny"] +[ext_resource type="Texture2D" uid="uid://djlqqmqpsd0kc" path="res://art/sign.png" id="2_q3tny"] +[ext_resource type="Texture2D" uid="uid://d0cd1alr8k706" path="res://art/interact_button.png" id="3_e8cgb"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_eumkw"] +size = Vector2(26, 32) + +[node name="Sign" type="Node2D" unique_id=1201409437] +script = ExtResource("1_q3tny") + +[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1680278216] +position = Vector2(0, -16) +texture = ExtResource("2_q3tny") + +[node name="Area2D" type="Area2D" parent="Sprite2D" unique_id=2050186824] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Sprite2D/Area2D" unique_id=1560168165] +shape = SubResource("RectangleShape2D_eumkw") + +[node name="ButtonPrompt" type="Sprite2D" parent="Sprite2D" unique_id=1864817335] +visible = false +position = Vector2(0, -8.000002) +scale = Vector2(0.8, 0.8) +texture = ExtResource("3_e8cgb") + +[connection signal="interacted" from="." to="." method="_on_interacted"] +[connection signal="body_entered" from="Sprite2D/Area2D" to="." method="_on_approach"] +[connection signal="body_exited" from="Sprite2D/Area2D" to="." method="_on_abandon"] diff --git a/slideshower.gd b/slideshower.gd new file mode 100644 index 0000000..30d70f4 --- /dev/null +++ b/slideshower.gd @@ -0,0 +1,57 @@ +class_name Slideshower +extends Control + +signal finished_playing + +var slides = [] +var slide = 0 + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + +func play_slideshow(new_slides) -> void: + slides = new_slides + play_slide(0) + +func _make_image_path(image_name: String) -> String: + if image_name.begins_with("res://"): + return image_name + return "res://art/slides/%s.png" % image_name + +func play_slide(index) -> bool: + if index < 0 or index >= len(slides): + return false + + slide = index + var slide_object = slides[index] + $VSplitContainer/TextFrame/SlideText.text = slide_object.text + + if "image" in slides[index]: + $VSplitContainer/ImageFrame/SlideContainer/SlideImage.texture = load(_make_image_path(slide_object.image)) + $VSplitContainer/ImageFrame/SlideContainer/SlideImage2.visible = false + else: + $VSplitContainer/ImageFrame/SlideContainer/SlideImage.texture = load(_make_image_path(slide_object.images[0])) + $VSplitContainer/ImageFrame/SlideContainer/SlideImage2.visible = true + $VSplitContainer/ImageFrame/SlideContainer/SlideImage2.texture = load(_make_image_path(slide_object.images[1])) + return true + +func next_slide() -> bool: + var success = play_slide(slide + 1) + if not success: + finished_playing.emit() + return success + +func prev_slide() -> bool: + return play_slide(slide - 1) + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + if Input.is_action_just_released("interact") or Input.is_action_just_released("jump") or Input.is_action_just_released("move_right"): + next_slide() + + if Input.is_action_just_released("move_left"): + prev_slide() + +func _on_continue_button_pressed() -> void: + next_slide() diff --git a/slideshower.gd.uid b/slideshower.gd.uid new file mode 100644 index 0000000..20bfe2a --- /dev/null +++ b/slideshower.gd.uid @@ -0,0 +1 @@ +uid://bdv4qahk8mumv diff --git a/spike.gd b/spike.gd index 52ed27b..ca85932 100644 --- a/spike.gd +++ b/spike.gd @@ -7,9 +7,8 @@ func _process(delta: float) -> void: pass func on_contact(body: Node2D) -> void: - if body==%Player2D: + if body==%Player2D and %Player2D.death_cooldown == 0: print("SLASH KILL") %Player2D/Jetpack/DeathSound.play() %Player2D.on_death(false,%Player2D.position) print(body) - diff --git a/spike.tscn b/spike.tscn index 6427201..0cf51b5 100644 --- a/spike.tscn +++ b/spike.tscn @@ -4,7 +4,7 @@ [ext_resource type="Texture2D" uid="uid://bu5wgerfu7cbc" path="res://art/spike.png" id="2_7k7bx"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_xfwl5"] -size = Vector2(15, 12) +size = Vector2(15, 7.5) [node name="Spike" type="Node2D" unique_id=1739014101] script = ExtResource("1_7k7bx") @@ -17,7 +17,7 @@ texture = ExtResource("2_7k7bx") [node name="Area2D" type="Area2D" parent="." unique_id=170499029] [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D" unique_id=1865546056] -position = Vector2(-0.5, 0) +position = Vector2(0, 4.75) shape = SubResource("RectangleShape2D_xfwl5") [connection signal="body_entered" from="Area2D" to="." method="on_contact"] diff --git a/teleporter.tscn b/teleporter.tscn index 0995f1a..69fc695 100644 --- a/teleporter.tscn +++ b/teleporter.tscn @@ -23,7 +23,7 @@ animations = [{ }] [sub_resource type="CircleShape2D" id="CircleShape2D_7k7bx"] -radius = 14.0 +radius = 9.0 [node name="Teleporter" type="Node2D" unique_id=1201409437] script = ExtResource("1_tuehi") diff --git a/vertical_block.tscn b/vertical_block.tscn new file mode 100644 index 0000000..2502e51 --- /dev/null +++ b/vertical_block.tscn @@ -0,0 +1,18 @@ +[gd_scene format=3 uid="uid://byfgwmvln8ukh"] + +[ext_resource type="Texture2D" uid="uid://blbaaqyrt8dtk" path="res://art/block/block.png" id="1_j20nc"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_f3sb7"] +size = Vector2(16, 16) + +[node name="Block" type="RigidBody2D" unique_id=1409784601] +gravity_scale = 0.0 +freeze = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1866755047] +shape = SubResource("RectangleShape2D_f3sb7") + +[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1680278216] +texture_filter = 1 +rotation = 1.5707964 +texture = ExtResource("1_j20nc") diff --git a/world.tscn b/world.tscn index d2690a1..546c706 100644 --- a/world.tscn +++ b/world.tscn @@ -18,7 +18,14 @@ [ext_resource type="Script" uid="uid://d3rx82psovcpp" path="res://music_button.gd" id="14_70uel"] [ext_resource type="Script" uid="uid://oyyhhy1gemg0" path="res://objectives_label.gd" id="14_ikiii"] [ext_resource type="PackedScene" uid="uid://dr8h8xij3qw2h" path="res://pharaoh.tscn" id="15_hiqwa"] +[ext_resource type="PackedScene" uid="uid://bla1cfndgad0" path="res://Dialogue.tscn" id="19_26xuy"] [ext_resource type="PackedScene" uid="uid://bcu7ftukipiyy" path="res://OldComputer.tscn" id="19_cbp6q"] +[ext_resource type="PackedScene" uid="uid://b5ssjxl1l3fx0" path="res://hidden_vertical_long_block.tscn" id="20_26xuy"] +[ext_resource type="PackedScene" uid="uid://ch0417iiviaxb" path="res://hidden_horizontal_long_block.tscn" id="21_bc84e"] +[ext_resource type="PackedScene" uid="uid://be757jqlv785s" path="res://hidden_coin.tscn" id="22_wukud"] +[ext_resource type="PackedScene" uid="uid://bnkbkfto83owf" path="res://sign.tscn" id="24_wjb0r"] +[ext_resource type="PackedScene" uid="uid://byfgwmvln8ukh" path="res://vertical_block.tscn" id="25_mc2jv"] +[ext_resource type="PackedScene" uid="uid://dt43trxumfv0i" path="res://hidden_sign.tscn" id="26_bo7i5"] [node name="World" type="Node2D" unique_id=1327991900] process_mode = 1 @@ -26,24 +33,49 @@ scale = Vector2(1, 1.0155824) [node name="Player2D" parent="." unique_id=889851478 instance=ExtResource("1_aqk2v")] unique_name_in_owner = true -position = Vector2(-1004, -1335.1945) +position = Vector2(-4838.9995, 356.4457) +rotation = 0.0005533503 +safe_margin = 0.08 [node name="StartingArea" type="Node2D" parent="." unique_id=130240736] -position = Vector2(-842, -1300.7314) +position = Vector2(-4673, 390.9087) -[node name="LongerBlock" parent="StartingArea" unique_id=426800863 instance=ExtResource("6_dwbse")] +[node name="LongerBlock" parent="StartingArea" unique_id=1619185575 instance=ExtResource("6_dwbse")] position = Vector2(-17, -17.72377) -[node name="LongerBlock3" parent="StartingArea" unique_id=1122236775 instance=ExtResource("6_dwbse")] -position = Vector2(-193, -179.20744) -rotation = 1.5707964 +[node name="LongerBlock2" parent="StartingArea" unique_id=426800863 instance=ExtResource("6_dwbse")] +position = Vector2(650, -17.72377) -[node name="LongerBlock2" parent="StartingArea" unique_id=75325542 instance=ExtResource("6_dwbse")] -position = Vector2(-17, -79.75723) +[node name="LongerBlock5" parent="StartingArea" unique_id=1844119708 instance=ExtResource("6_dwbse")] +position = Vector2(1657, -18.708487) + +[node name="LongerBlock7" parent="StartingArea" unique_id=2057011049 instance=ExtResource("6_dwbse")] +position = Vector2(2804, -19.693142) + +[node name="LongerBlock8" parent="StartingArea" unique_id=74356311 instance=ExtResource("6_dwbse")] +position = Vector2(3174, -397.80124) + +[node name="LongerBlock11" parent="StartingArea" unique_id=624436532 instance=ExtResource("6_dwbse")] +position = Vector2(3390, -1028.9663) + +[node name="LongerBlock9" parent="StartingArea" unique_id=1224082804 instance=ExtResource("6_dwbse")] +position = Vector2(3723, -1028.9663) [node name="Pharaoh" parent="StartingArea" unique_id=1201409437 instance=ExtResource("15_hiqwa")] position = Vector2(-62, -24.616333) +[node name="Pharaoh2" parent="StartingArea" unique_id=472779826 instance=ExtResource("15_hiqwa")] +position = Vector2(615, -24.616425) + +[node name="Pharaoh3" parent="StartingArea" unique_id=1148075738 instance=ExtResource("15_hiqwa")] +position = Vector2(1609, -26.585724) + +[node name="Pharaoh4" parent="StartingArea" unique_id=764966940 instance=ExtResource("15_hiqwa")] +position = Vector2(2751, -27.570404) + +[node name="Pharaoh5" parent="StartingArea" unique_id=2064737854 instance=ExtResource("15_hiqwa")] +position = Vector2(3089, -403.70926) + [node name="Tutorial" type="Node2D" parent="." unique_id=1391494772] [node name="Block2" parent="Tutorial" unique_id=878186522 instance=ExtResource("2_036b0")] @@ -422,8 +454,10 @@ script = ExtResource("3_wse8f") anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 -offset_top = 605.0 -offset_bottom = 274.0 +offset_left = 11.0 +offset_top = 9.0 +offset_right = -1086.0 +offset_bottom = -575.0 grow_horizontal = 2 grow_vertical = 2 bbcode_enabled = true @@ -450,17 +484,31 @@ texture_pressed = ExtResource("13_70uel") texture_disabled = ExtResource("13_70uel") script = ExtResource("14_70uel") -[node name="Pharaoh" parent="." unique_id=44054531 instance=ExtResource("15_hiqwa")] +[node name="Dialogue" parent="CanvasLayer" unique_id=1025022375 instance=ExtResource("19_26xuy")] unique_name_in_owner = true -position = Vector2(192, 177.23824) +offset_left = 3.9999995 +offset_top = 550.99994 +offset_right = 268.38086 +offset_bottom = -7.640442 +rotation = 4.9367074e-05 +scale = Vector2(0.8267815, 0.8267815) +stretch_mode = 5 + +[node name="Pharaoh" parent="." unique_id=44054531 instance=ExtResource("15_hiqwa")] +position = Vector2(192, 193.97743) [node name="Pharaoh2" parent="." unique_id=1541178727 instance=ExtResource("15_hiqwa")] -unique_name_in_owner = true -position = Vector2(6338, -58.09474) +position = Vector2(6338, -42.34024) [node name="OldComputer" parent="." unique_id=1951254108 instance=ExtResource("19_cbp6q")] unique_name_in_owner = true +[node name="Sign9" parent="." unique_id=573430453 instance=ExtResource("24_wjb0r")] +position = Vector2(-1387, -14.769852) +scale = Vector2(1, 0.98465663) +sign_text = "HOLDING DOWN WILL MEDITATE" +text_dismiss_timer = 4 + [node name="Block" parent="." unique_id=226580978 instance=ExtResource("2_036b0")] position = Vector2(6637, -253.12886) @@ -512,4 +560,125 @@ position = Vector2(7732, -109.12882) [node name="VerticalLongBlock6" parent="." unique_id=200846556 instance=ExtResource("4_pkg7o")] position = Vector2(7865, -18.128824) +[node name="Pharaoh4" parent="." unique_id=439750165 instance=ExtResource("15_hiqwa")] +position = Vector2(4097, 175.26888) + +[node name="Pharaoh3" parent="." unique_id=998592579 instance=ExtResource("15_hiqwa")] +position = Vector2(-883, -642.9808) + +[node name="HiddenVerticalLongBlock" parent="." unique_id=550983536 instance=ExtResource("20_26xuy")] +visible = true +position = Vector2(-1625, -449.00342) +rotation = 0.0 + +[node name="HiddenVerticalLongBlock11" parent="." unique_id=1548779318 instance=ExtResource("20_26xuy")] +visible = true +position = Vector2(-1806, -161.48367) +rotation = 0.0 + +[node name="HiddenVerticalLongBlock12" parent="." unique_id=225495194 instance=ExtResource("20_26xuy")] +visible = true +position = Vector2(-2003, -321.98273) +rotation = 0.0 + +[node name="HiddenVerticalLongBlock2" parent="." unique_id=671573231 instance=ExtResource("20_26xuy")] +visible = true +position = Vector2(-4696, 435.21823) + +[node name="HiddenHorizontalLongBlock" parent="." unique_id=252771458 instance=ExtResource("21_bc84e")] +position = Vector2(-4647, 485.43573) + +[node name="Coin" parent="." unique_id=1292877109 instance=ExtResource("22_wukud")] +position = Vector2(-4646, 447.03412) + +[node name="HiddenVerticalLongBlock3" parent="." unique_id=9509488 instance=ExtResource("20_26xuy")] +position = Vector2(249, -709.93744) + +[node name="HiddenVerticalLongBlock4" parent="." unique_id=1392186992 instance=ExtResource("20_26xuy")] +position = Vector2(249, -600.64056) + +[node name="HiddenVerticalLongBlock5" parent="." unique_id=1233145931 instance=ExtResource("20_26xuy")] +position = Vector2(248, -822.1883) + +[node name="HiddenVerticalLongBlock6" parent="." unique_id=1910226562 instance=ExtResource("20_26xuy")] +position = Vector2(248, -932.46985) + +[node name="HiddenVerticalLongBlock7" parent="." unique_id=808086224 instance=ExtResource("20_26xuy")] +position = Vector2(248, -1149.0942) + +[node name="HiddenVerticalLongBlock8" parent="." unique_id=1783201320 instance=ExtResource("20_26xuy")] +position = Vector2(248, -1039.7974) + +[node name="HiddenVerticalLongBlock9" parent="." unique_id=1967440515 instance=ExtResource("20_26xuy")] +position = Vector2(247, -1261.3452) + +[node name="HiddenVerticalLongBlock10" parent="." unique_id=170869907 instance=ExtResource("20_26xuy")] +position = Vector2(247, -1371.6267) + +[node name="Sign" parent="." unique_id=916197061 instance=ExtResource("24_wjb0r")] +position = Vector2(-4799, 365.30762) +sign_text = "JUMP WITH A" + +[node name="Sign2" parent="." unique_id=1141422640 instance=ExtResource("24_wjb0r")] +position = Vector2(-3949, 364.32294) +sign_text = "YOU CAN JUMP AGAIN IN THE AIR" + +[node name="Sign3" parent="." unique_id=692258908 instance=ExtResource("24_wjb0r")] +position = Vector2(-2941, 365.30762) +sign_text = "DASH WITH SHIFT WHILE MOVING IN A DIRECTION" + +[node name="Sign4" parent="." unique_id=335524344 instance=ExtResource("24_wjb0r")] +position = Vector2(-1789, 364.32297) +sign_text = "TOUCHING A FLOOR, WALL, OR EVEN CEILING WILL REFRESH YOUR AIR JUMP" + +[node name="Sign5" parent="." unique_id=349011535 instance=ExtResource("24_wjb0r")] +position = Vector2(-2908, 365.30762) +sign_text = "DASH CAN BE USED EVEN AFTER JUMPING" +text_dismiss_timer = 4 + +[node name="Sign6" parent="." unique_id=1820216223 instance=ExtResource("24_wjb0r")] +position = Vector2(-3918, 364.32297) +sign_text = "THE CRYSTAL FADES WHEN YOU HAVE NO JUMPS REMAINING" +text_dismiss_timer = 4 + +[node name="Sign7" parent="." unique_id=381974434 instance=ExtResource("24_wjb0r")] +position = Vector2(-4771, 365.30762) +sign_text = "HOLD A TO JUMP FURTHER" +text_dismiss_timer = 3 + +[node name="Block12" parent="." unique_id=888208031 instance=ExtResource("25_mc2jv")] +position = Vector2(-1660, 5.9079437) + +[node name="Block13" parent="." unique_id=501875762 instance=ExtResource("25_mc2jv")] +position = Vector2(-1660, 20.677792) + +[node name="Sign8" parent="." unique_id=460763419 instance=ExtResource("24_wjb0r")] +position = Vector2(-2876, 364.32297) +sign_text = "THE OTHER CRYSTAL WILL GO OUT WHEN NO DASHES REMAIN" +text_dismiss_timer = 4 + +[node name="HiddenSign" parent="." unique_id=1914486910 instance=ExtResource("26_bo7i5")] +position = Vector2(-1351, -14.769848) +sign_text = "MEDITATING REVEALS SECRETS" +text_dismiss_timer = 4 + +[node name="Sign10" parent="." unique_id=600787286 instance=ExtResource("24_wjb0r")] +position = Vector2(-1349, -644.9501) +sign_text = "PORTALS WORK AS EXPECTED" + +[node name="Teleporter" parent="." unique_id=1261295038 instance=ExtResource("4_gbfbk")] +position = Vector2(-1295, -668.58185) +paired_teleporter = "C" + +[node name="Teleporter2" parent="." unique_id=392920399 instance=ExtResource("4_gbfbk")] +position = Vector2(-1171, -669.5665) +paired_teleporter = "C" + +[node name="Sign11" parent="." unique_id=933599424 instance=ExtResource("24_wjb0r")] +position = Vector2(-1115, -644.9501) +sign_text = "COINS AREN'T REAL" + +[node name="HiddenCoin" parent="." unique_id=1654988120 instance=ExtResource("22_wukud")] +position = Vector2(-1063, -662.6739) + [connection signal="toggled" from="CanvasLayer/MusicButton" to="CanvasLayer/MusicButton" method="_on_toggled"]