Compare commits

27 Commits
Author SHA1 Message Date
yagigreg 8bb2c5c840 Add ability to have two images in a slide.
ci/woodpecker/push/woodpecker Pipeline was successful
2026-10-18 08:11:58 -05:00
yagigreg ddf7942890 Rudimentary comic/slideshow viewer and intro scene.
ci/woodpecker/push/woodpecker Pipeline was successful
2026-10-18 07:16:08 -05:00
yagigreg eded968b4e Stubs for intro scene and slideshower control.
ci/woodpecker/push/woodpecker Pipeline was successful
2026-10-18 03:29:46 -05:00
yagigreg 890541465b Record last known ground position. Idea is that when you die you drop the disks at the last place you stood. Doesn't seem to be reliable so I'm not using it at the moment;
ci/woodpecker/push/woodpecker Pipeline was successful
2026-10-18 03:21:33 -05:00
Debugman b416cd6d4f Merge branch 'main' of http://git.nanoyagi.com/NanoYagi/JumpRopeOldTech
ci/woodpecker/push/woodpecker Pipeline was successful
2026-10-18 03:20:10 -05:00
Debugman 2c203c8476 Teleporter tutorial 2026-10-18 03:20:05 -05:00
yagigreg f1c232847f Actually exit the game upon completing the main quest.
ci/woodpecker/push/woodpecker Pipeline was successful
2026-10-18 03:10:37 -05:00
yagigreg 904c6e7f15 Fix issue where OldComputer crashes upon inserting the final disk. Add a message instructing player to press [E] to exit the game. 2026-10-18 03:08:33 -05:00
Debugman 82d1375871 Update world.tscn
ci/woodpecker/push/woodpecker Pipeline was successful
2026-10-18 03:02:26 -05:00
Debugman 4d9cb93483 Merge branch 'main' of http://git.nanoyagi.com/NanoYagi/JumpRopeOldTech
ci/woodpecker/push/woodpecker Pipeline was successful
2026-10-18 02:38:28 -05:00
Debugman 4de204a122 Tutorial polish 2026-10-18 02:37:32 -05:00
yagigreg 9ba305b6a1 Hide dialogue box by default
ci/woodpecker/push/woodpecker Pipeline was successful
2026-10-18 02:08:56 -05:00
yagigreg 93baf56fd5 Move interactable input handling into Player2D so we can selectively block it from working if OldComputer is open
ci/woodpecker/push/woodpecker Pipeline was successful
We probably could have special-cased that check in Interactable now that I think about it
2026-10-18 02:05:51 -05:00
yagigreg f061e1905f Remove hello world dialogue demonstration. 2026-10-18 01:52:22 -05:00
yagigreg cb1b579544 Block all input other than E/Space when OldComputer is up. Make it so that exiting out of OldComputer does not jump.
ci/woodpecker/push/woodpecker Pipeline was successful
2026-10-18 01:43:41 -05:00
yagigreg 954fd873bd Fix sign interaction
ci/woodpecker/push/woodpecker Pipeline was successful
2026-10-18 01:40:20 -05:00
Debugman eed1540c93 Added signs
ci/woodpecker/push/woodpecker Pipeline was successful
2026-10-18 01:35:58 -05:00
Debugman 01e8fbf4fe Merge branch 'main' of http://git.nanoyagi.com/NanoYagi/JumpRopeOldTech
ci/woodpecker/push/woodpecker Pipeline was successful
2026-10-18 01:22:17 -05:00
Debugman 9ffce48c38 Level tweaks 2026-10-18 01:09:25 -05:00
yagigreg a3d54fa9d3 .. fix indentation
ci/woodpecker/push/woodpecker Pipeline was successful
2026-10-18 01:03:03 -05:00
yagigreg f50b7da9eb Fix "respawn point set" message triggering even if that sarco is already the respawn point.
ci/woodpecker/push/woodpecker Pipeline was successful
2026-10-18 01:01:00 -05:00
yagigreg 775338c4d2 fix issue where Open Sarcophagus objective did not complete, among other things 2026-10-18 00:59:08 -05:00
yagigreg c8ad334936 Merge branch 'main' of ssh://git.egg:2222/NanoYagi/JumpRopeOldTech 2026-10-18 00:57:35 -05:00
Debugman 4aae35ee49 Improved tutorial
ci/woodpecker/push/woodpecker Pipeline was successful
2026-10-18 00:53:35 -05:00
yagigreg c56a32555e Add rudimentary dialogue system. 2026-10-18 00:53:22 -05:00
Debugman b07d850b82 Merge branch 'main' of http://git.nanoyagi.com/NanoYagi/JumpRopeOldTech
ci/woodpecker/push/woodpecker Pipeline was successful
2026-10-18 00:28:51 -05:00
Debugman c9510f8902 Some tutorial 2026-10-18 00:28:27 -05:00
66 changed files with 1277 additions and 51 deletions

No files matched your search

+37
View File
@@ -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
+1
View File
@@ -43,6 +43,7 @@ offset_left = 150.0
offset_top = 105.0 offset_top = 105.0
offset_right = 1102.0 offset_right = 1102.0
offset_bottom = 652.0 offset_bottom = 652.0
bbcode_enabled = true
text = ">> Pharaoh OS 2000 Boot Sequence text = ">> Pharaoh OS 2000 Boot Sequence
>> WARN: Detected anomalies! >> WARN: Detected anomalies!
>> WARN: Memory integrity at %d%%! >> WARN: Memory integrity at %d%%!
+88
View File
@@ -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"]
Binary file not shown.

Before

Width:  |  Height:  |  Size: 444 B

After

Width:  |  Height:  |  Size: 449 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 439 B

After

Width:  |  Height:  |  Size: 449 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 445 B

After

Width:  |  Height:  |  Size: 454 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 458 B

+43
View File
@@ -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
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

+43
View File
@@ -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
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

+43
View File
@@ -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
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

+43
View File
@@ -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
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 MiB

+43
View File
@@ -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
Binary file not shown.

After

Width:  |  Height:  |  Size: 663 KiB

+43
View File
@@ -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
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

+43
View File
@@ -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
Binary file not shown.

After

Width:  |  Height:  |  Size: 356 KiB

+43
View File
@@ -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
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 MiB

+43
View File
@@ -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
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 422 B

+43
View File
@@ -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
+1 -1
View File
@@ -3,7 +3,7 @@
[ext_resource type="Texture2D" uid="uid://blbaaqyrt8dtk" path="res://art/block/block.png" id="1_im0tn"] [ext_resource type="Texture2D" uid="uid://blbaaqyrt8dtk" path="res://art/block/block.png" id="1_im0tn"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_f3sb7"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_f3sb7"]
size = Vector2(16, 16) size = Vector2(16, 14)
[node name="Block" type="RigidBody2D" unique_id=1409784601] [node name="Block" type="RigidBody2D" unique_id=1409784601]
gravity_scale = 0.0 gravity_scale = 0.0
+15
View File
@@ -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=BROWN]%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
+1
View File
@@ -0,0 +1 @@
uid://byj4ibepgm6oa
+24
View File
@@ -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"]
+17
View File
@@ -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()
+1
View File
@@ -0,0 +1 @@
uid://7qhq76giye1v
+33
View File
@@ -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"]
+30
View File
@@ -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)
+11
View File
@@ -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)
+1
View File
@@ -0,0 +1 @@
uid://b64hyvumk366h
+30
View File
@@ -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"]
+44
View File
@@ -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()
+1
View File
@@ -0,0 +1 @@
uid://btxx0p5ccar5f
+40
View File
@@ -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"]
+1
View File
@@ -3,6 +3,7 @@ extends RigidBody2D
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
func _ready() -> void: func _ready() -> void:
add_to_group("Hidden") add_to_group("Hidden")
modulate = Color.DARK_CYAN
# Called every frame. 'delta' is the elapsed time since the previous frame. # Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void: func _process(delta: float) -> void:
-3
View File
@@ -17,7 +17,6 @@ dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.cte
compress/mode=0 compress/mode=0
compress/high_quality=false compress/high_quality=false
compress/high_quality_mode=0
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0 compress/uastc_level=0
compress/rdo_quality_loss=0.0 compress/rdo_quality_loss=0.0
@@ -26,8 +25,6 @@ compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
mipmaps/generate=false mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
mipmaps/preserve_alpha_test_coverage=false
mipmaps/alpha_test_threshold=0.5
roughness/mode=0 roughness/mode=0
roughness/src_normal="" roughness/src_normal=""
process/channel_remap/red=0 process/channel_remap/red=0
+10 -6
View File
@@ -7,7 +7,7 @@ var checked_teleport
var telecam_speed_mult = 4 var telecam_speed_mult = 4
var enabled = true var enabled = true
var cooldown = 2 var cooldown = 2
var is_interactable = false var _is_interactable = false
func disable(): func disable():
enabled = false enabled = false
@@ -17,10 +17,12 @@ func enable():
enabled = true enabled = true
$Sprite2D.modulate = Color.WHITE $Sprite2D.modulate = Color.WHITE
func _process(delta: float) -> void: func is_interactable() -> bool:
if not (is_interactable and Input.is_action_just_released("interact")): return _is_interactable
return
func interact() -> void:
if not is_interactable():
return
interacted.emit() interacted.emit()
func _physics_process(delta: float) -> void: func _physics_process(delta: float) -> void:
@@ -29,11 +31,13 @@ func _physics_process(delta: float) -> void:
func _on_approach(body) -> void: func _on_approach(body) -> void:
if body!=%Player2D: if body!=%Player2D:
return return
is_interactable = true _is_interactable = true
self.add_to_group("nearby_interactables")
$Sprite2D/ButtonPrompt.show() $Sprite2D/ButtonPrompt.show()
func _on_abandon(body) -> void: func _on_abandon(body) -> void:
if body!=%Player2D: if body!=%Player2D:
return return
is_interactable = false _is_interactable = false
self.remove_from_group("nearby_interactables")
$Sprite2D/ButtonPrompt.hide() $Sprite2D/ButtonPrompt.hide()
+25
View File
@@ -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")
+1
View File
@@ -0,0 +1 @@
uid://bo6557y41ps7i
+18
View File
@@ -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"]
+14
View File
@@ -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)
+1
View File
@@ -0,0 +1 @@
uid://cvguf2l65n7xa
+32
View File
@@ -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"]
+16
View File
@@ -22,14 +22,27 @@ func load_disk(disk_num: int) -> bool:
[disk_num, len(disks_wanted) + len(disks_loaded), get_memory_integrity()] [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 return true
func get_next_disk_num() -> int: func get_next_disk_num() -> int:
if disks_wanted.is_empty():
return 0
return disks_wanted.front() return disks_wanted.front()
func get_memory_integrity(): func get_memory_integrity():
return 100.0 / total_integrity * (starting_integrity + len(disks_loaded)) return 100.0 / total_integrity * (starting_integrity + len(disks_loaded))
func has_finished_initialization() -> bool:
return disks_wanted.is_empty()
func open() -> void: func open() -> void:
visible = true visible = true
@@ -38,4 +51,7 @@ func printline(line: String) -> void:
$ConsoleText.text += "\n" + line $ConsoleText.text += "\n" + line
func close() -> void: func close() -> void:
if has_finished_initialization():
get_tree().quit()
visible = false visible = false
+8 -4
View File
@@ -1,13 +1,17 @@
extends Interactable extends Interactable
func _on_interacted() -> void: func _on_interacted() -> void:
#%OldComputer.open() %OldComputer.open()
if %Player2D.spawn_point != global_position: #Accomodate some collision antics.
%Player2D.spawn_point = global_position var new_spawn_point = global_position + Vector2(0,-10)
%OldComputer.printline(">> Respawn point set.")
if %Player2D.spawn_point != new_spawn_point:
%Player2D.spawn_point = new_spawn_point
%OldComputer.printline(">> Respawn point set to %s" % new_spawn_point)
var wanted_disk = %OldComputer.get_next_disk_num() var wanted_disk = %OldComputer.get_next_disk_num()
if %Player2D.complete_objective("sarc"): if %Player2D.complete_objective("sarc"):
%OldComputer.open() %OldComputer.open()
%Player2D.give_objective( %Player2D.give_objective(
+1 -1
View File
@@ -11,7 +11,7 @@ size = Vector2(26, 32)
script = ExtResource("1_mt7kg") script = ExtResource("1_mt7kg")
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1680278216] [node name="Sprite2D" type="Sprite2D" parent="." unique_id=1680278216]
position = Vector2(0, -15) position = Vector2(0, -16)
texture = ExtResource("2_mt7kg") texture = ExtResource("2_mt7kg")
[node name="Area2D" type="Area2D" parent="Sprite2D" unique_id=2050186824] [node name="Area2D" type="Area2D" parent="Sprite2D" unique_id=2050186824]
+24 -9
View File
@@ -7,8 +7,9 @@ const FRICTION = 100
const GRAVITY_MULT = 0.8 const GRAVITY_MULT = 0.8
const JUMP_VELOCITY = -410.0 const JUMP_VELOCITY = -410.0
const DASH_LENGTH = 0.2 const DASH_LENGTH = 0.2
const BACKGROUND_COLOR = Color.SANDY_BROWN const BACKGROUND_COLOR = Color.INDIAN_RED
var death_cooldown = 0.0
var fall_timer = 0.0 var fall_timer = 0.0
var teleport_cooldown = 0 var teleport_cooldown = 0
var jumps = 0 var jumps = 0
@@ -16,7 +17,9 @@ var dashes = 1
var dashing = false var dashing = false
var death_threshold = 2000 var death_threshold = 2000
var coins = 0 var coins = 0
var spawn_point var spawn_point
var last_ground_point
var data_disks = [] var data_disks = []
var objectives = {} var objectives = {}
@@ -25,6 +28,7 @@ func _ready() -> void:
spawn_point = position spawn_point = position
DisplayServer.window_set_title("JUMPS EQUALS JUMPS") DisplayServer.window_set_title("JUMPS EQUALS JUMPS")
give_objective("sarc", 0, "Open the Sarcophagus") give_objective("sarc", 0, "Open the Sarcophagus")
#%Dialogue.show_text("Hello world!").dismiss_after(2)
func refresh_dash(new_dashes): func refresh_dash(new_dashes):
if new_dashes: if new_dashes:
@@ -92,6 +96,7 @@ func spawn_ghost(ghost_position):
ghost.position = ghost_position ghost.position = ghost_position
func on_death(instant = false, player_position = position): func on_death(instant = false, player_position = position):
death_cooldown += 1
if !instant: if !instant:
await get_tree().create_timer(0.1).timeout await get_tree().create_timer(0.1).timeout
get_tree().paused = true get_tree().paused = true
@@ -108,14 +113,27 @@ func on_death(instant = false, player_position = position):
get_tree().paused = false get_tree().paused = false
#position = %LevelStart.position #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: 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")): 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() get_tree().reload_current_scene()
if Input.is_action_just_released("interact"): 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() %OldComputer.close()
return
if Input.is_action_just_released("interact"):
for interactable in get_tree().get_nodes_in_group("nearby_interactables"):
interactable.interact()
if Input.is_action_just_pressed("jump"): if Input.is_action_just_pressed("jump"):
%OldComputer.close() %OldComputer.close()
@@ -130,14 +148,14 @@ func _process(delta: float) -> void:
if jumps == 0: if jumps == 0:
$Jetpack/JumpIndicator.hide() $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(): if Input.is_action_pressed("jump") and is_on_wall_only():
print("WALL HANGING") print("WALL HANGING")
#velocity.y = 0 #velocity.y = 0
#velocity.x = 0 #velocity.x = 0
if %OldComputer.visible:
return
var direction = Input.get_axis("move_left","move_right") var direction = Input.get_axis("move_left","move_right")
if direction < 0: if direction < 0:
@@ -148,9 +166,7 @@ func _process(delta: float) -> void:
$Sprite2D/HatSprite.flip_h = false $Sprite2D/HatSprite.flip_h = false
if Input.is_action_pressed("dash_down") and is_on_floor(): if Input.is_action_pressed("dash_down") and is_on_floor():
print("Crouching")
$Sprite2D.play("crouch") $Sprite2D.play("crouch")
print("MODULATE: " + str($Parallax2D/Sprite2D.modulate))
$Parallax2D/Sprite2D.modulate = Color.CYAN $Parallax2D/Sprite2D.modulate = Color.CYAN
for hidden_object in get_tree().get_nodes_in_group("Hidden"): for hidden_object in get_tree().get_nodes_in_group("Hidden"):
@@ -209,7 +225,6 @@ func _process(delta: float) -> void:
#get_tree().reload_current_scene() #get_tree().reload_current_scene()
func _physics_process(delta: float) -> void: func _physics_process(delta: float) -> void:
if not is_on_floor(): if not is_on_floor():
velocity += (get_gravity() * GRAVITY_MULT) * delta velocity += (get_gravity() * GRAVITY_MULT) * delta
+10 -6
View File
@@ -11,10 +11,10 @@
[ext_resource type="Texture2D" uid="uid://dyxbitw8hbd3s" path="res://art/player/crouch/frame2.png" id="7_lu0ka"] [ext_resource type="Texture2D" uid="uid://dyxbitw8hbd3s" path="res://art/player/crouch/frame2.png" id="7_lu0ka"]
[ext_resource type="Texture2D" uid="uid://bfyd1tro3s0gl" path="res://art/player/crystal2.png" id="7_oy4pt"] [ext_resource type="Texture2D" uid="uid://bfyd1tro3s0gl" path="res://art/player/crystal2.png" id="7_oy4pt"]
[ext_resource type="Texture2D" uid="uid://dh7a1knyqn5nd" path="res://art/player/running/frame3.png" id="7_pmt5n"] [ext_resource type="Texture2D" uid="uid://dh7a1knyqn5nd" path="res://art/player/running/frame3.png" id="7_pmt5n"]
[ext_resource type="Texture2D" uid="uid://lk0f1qyswyxv" path="res://art/player/idle/frame1.png" id="8_3prq1"] [ext_resource type="Texture2D" uid="uid://lk0f1qyswyxv" path="res://art/player/running/frame1.png" id="8_3prq1"]
[ext_resource type="Texture2D" uid="uid://yf13nw31k8ua" path="res://art/player/running/frame4.png" id="8_nj6as"] [ext_resource type="Texture2D" uid="uid://yf13nw31k8ua" path="res://art/player/running/frame4.png" id="8_nj6as"]
[ext_resource type="Texture2D" uid="uid://du5i0tg6u1lal" path="res://art/player/crystal3.png" id="8_ukfft"] [ext_resource type="Texture2D" uid="uid://du5i0tg6u1lal" path="res://art/player/crystal3.png" id="8_ukfft"]
[ext_resource type="Texture2D" uid="uid://lmje8plw76e1" path="res://art/player/idle/frame2.png" id="9_lu0ka"] [ext_resource type="Texture2D" uid="uid://lmje8plw76e1" path="res://art/player/running/frame2.png" id="9_lu0ka"]
[ext_resource type="Texture2D" uid="uid://bko8dvawpul3c" path="res://art/player/crystal4.png" id="9_ur4nw"] [ext_resource type="Texture2D" uid="uid://bko8dvawpul3c" path="res://art/player/crystal4.png" id="9_ur4nw"]
[ext_resource type="Texture2D" uid="uid://m5djssna67e1" path="res://art/player/crouch/frame3.png" id="9_w0gjo"] [ext_resource type="Texture2D" uid="uid://m5djssna67e1" path="res://art/player/crouch/frame3.png" id="9_w0gjo"]
[ext_resource type="Texture2D" uid="uid://ba4kjeulthw1g" path="res://art/hats/dunce1.png" id="10_5s8kx"] [ext_resource type="Texture2D" uid="uid://ba4kjeulthw1g" path="res://art/hats/dunce1.png" id="10_5s8kx"]
@@ -124,10 +124,12 @@ animations = [{
"speed": 5.0 "speed": 5.0
}] }]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_fj7yv"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ix7pg"]
size = Vector2(10, 16) radius = 6.0
height = 12.0
[node name="Player2D" type="CharacterBody2D" unique_id=889851478] [node name="Player2D" type="CharacterBody2D" unique_id=889851478]
safe_margin = 0.06
script = ExtResource("1_sy00s") script = ExtResource("1_sy00s")
[node name="BackgroundMusic" type="AudioStreamPlayer2D" parent="." unique_id=299359239] [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] [node name="WarpShader" type="MeshInstance2D" parent="CanvasLayer2" unique_id=88397728]
material = SubResource("ShaderMaterial_pmt5n") material = SubResource("ShaderMaterial_pmt5n")
position = Vector2(0, -1)
mesh = SubResource("QuadMesh_nj6as") mesh = SubResource("QuadMesh_nj6as")
script = ExtResource("4_pmt5n") script = ExtResource("4_pmt5n")
@@ -148,7 +151,7 @@ texture = ExtResource("4_nj6as")
[node name="Parallax2D" type="Parallax2D" parent="." unique_id=270393374] [node name="Parallax2D" type="Parallax2D" parent="." unique_id=270393374]
repeat_size = Vector2(1280, 720) repeat_size = Vector2(1280, 720)
autoscroll = Vector2(5, 0) autoscroll = Vector2(1, 0)
follow_viewport = false follow_viewport = false
ignore_camera_scroll = true ignore_camera_scroll = true
@@ -220,4 +223,5 @@ stream = ExtResource("20_l50qk")
stream = ExtResource("20_1741q") stream = ExtResource("20_1741q")
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1294571021] [node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1294571021]
shape = SubResource("RectangleShape2D_fj7yv") position = Vector2(0, 3)
shape = SubResource("CapsuleShape2D_ix7pg")
+10 -2
View File
@@ -11,7 +11,7 @@ config_version=5
[application] [application]
config/name="JumpRope" config/name="JumpRope"
run/main_scene="uid://iivvrut0lfsr" run/main_scene="uid://p65fagt04vv8"
config/features=PackedStringArray("4.8", "Forward Plus") config/features=PackedStringArray("4.8", "Forward Plus")
boot_splash/image="uid://dhue32shjdpt8" boot_splash/image="uid://dhue32shjdpt8"
config/icon="res://icon.svg" config/icon="res://icon.svg"
@@ -123,7 +123,7 @@ move_left={
)] )]
} }
jump={ jump={
"deadzone": 0.2, "deadzone": 0.0,
"events": [Object(InputEventJoypadButton, "events": [Object(InputEventJoypadButton,
"resource_local_to_scene": false, "resource_local_to_scene": false,
"resource_name": "", "resource_name": "",
@@ -383,6 +383,14 @@ interact={
"location": 0, "location": 0,
"echo": false, "echo": false,
"script": null "script": null
), Object(InputEventJoypadButton,
"resource_local_to_scene": false,
"resource_name": "",
"device": -1,
"button_index": 1,
"pressure": 0.0,
"pressed": true,
"script": null
)] )]
} }
+7
View File
@@ -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)
+1
View File
@@ -0,0 +1 @@
uid://dvo0iux2pcggi
+30
View File
@@ -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"]
+57
View File
@@ -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()
+1
View File
@@ -0,0 +1 @@
uid://bdv4qahk8mumv
+1 -2
View File
@@ -7,9 +7,8 @@ func _process(delta: float) -> void:
pass pass
func on_contact(body: Node2D) -> void: func on_contact(body: Node2D) -> void:
if body==%Player2D: if body==%Player2D and %Player2D.death_cooldown == 0:
print("SLASH KILL") print("SLASH KILL")
%Player2D/Jetpack/DeathSound.play() %Player2D/Jetpack/DeathSound.play()
%Player2D.on_death(false,%Player2D.position) %Player2D.on_death(false,%Player2D.position)
print(body) print(body)
+2 -2
View File
@@ -4,7 +4,7 @@
[ext_resource type="Texture2D" uid="uid://bu5wgerfu7cbc" path="res://art/spike.png" id="2_7k7bx"] [ext_resource type="Texture2D" uid="uid://bu5wgerfu7cbc" path="res://art/spike.png" id="2_7k7bx"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_xfwl5"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_xfwl5"]
size = Vector2(15, 12) size = Vector2(15, 7.5)
[node name="Spike" type="Node2D" unique_id=1739014101] [node name="Spike" type="Node2D" unique_id=1739014101]
script = ExtResource("1_7k7bx") script = ExtResource("1_7k7bx")
@@ -17,7 +17,7 @@ texture = ExtResource("2_7k7bx")
[node name="Area2D" type="Area2D" parent="." unique_id=170499029] [node name="Area2D" type="Area2D" parent="." unique_id=170499029]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D" unique_id=1865546056] [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D" unique_id=1865546056]
position = Vector2(-0.5, 0) position = Vector2(0, 4.75)
shape = SubResource("RectangleShape2D_xfwl5") shape = SubResource("RectangleShape2D_xfwl5")
[connection signal="body_entered" from="Area2D" to="." method="on_contact"] [connection signal="body_entered" from="Area2D" to="." method="on_contact"]
+1 -1
View File
@@ -23,7 +23,7 @@ animations = [{
}] }]
[sub_resource type="CircleShape2D" id="CircleShape2D_7k7bx"] [sub_resource type="CircleShape2D" id="CircleShape2D_7k7bx"]
radius = 14.0 radius = 9.0
[node name="Teleporter" type="Node2D" unique_id=1201409437] [node name="Teleporter" type="Node2D" unique_id=1201409437]
script = ExtResource("1_tuehi") script = ExtResource("1_tuehi")
+18
View File
@@ -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")
+183 -14
View File
@@ -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://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="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://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://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] [node name="World" type="Node2D" unique_id=1327991900]
process_mode = 1 process_mode = 1
@@ -26,24 +33,49 @@ scale = Vector2(1, 1.0155824)
[node name="Player2D" parent="." unique_id=889851478 instance=ExtResource("1_aqk2v")] [node name="Player2D" parent="." unique_id=889851478 instance=ExtResource("1_aqk2v")]
unique_name_in_owner = true 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] [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) position = Vector2(-17, -17.72377)
[node name="LongerBlock3" parent="StartingArea" unique_id=1122236775 instance=ExtResource("6_dwbse")] [node name="LongerBlock2" parent="StartingArea" unique_id=426800863 instance=ExtResource("6_dwbse")]
position = Vector2(-193, -179.20744) position = Vector2(650, -17.72377)
rotation = 1.5707964
[node name="LongerBlock2" parent="StartingArea" unique_id=75325542 instance=ExtResource("6_dwbse")] [node name="LongerBlock5" parent="StartingArea" unique_id=1844119708 instance=ExtResource("6_dwbse")]
position = Vector2(-17, -79.75723) 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")] [node name="Pharaoh" parent="StartingArea" unique_id=1201409437 instance=ExtResource("15_hiqwa")]
position = Vector2(-62, -24.616333) 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="Tutorial" type="Node2D" parent="." unique_id=1391494772]
[node name="Block2" parent="Tutorial" unique_id=878186522 instance=ExtResource("2_036b0")] [node name="Block2" parent="Tutorial" unique_id=878186522 instance=ExtResource("2_036b0")]
@@ -406,8 +438,10 @@ script = ExtResource("3_wse8f")
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
offset_top = 605.0 offset_left = 11.0
offset_bottom = 274.0 offset_top = 9.0
offset_right = -1086.0
offset_bottom = -575.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
bbcode_enabled = true bbcode_enabled = true
@@ -434,17 +468,31 @@ texture_pressed = ExtResource("13_70uel")
texture_disabled = ExtResource("13_70uel") texture_disabled = ExtResource("13_70uel")
script = ExtResource("14_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 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")] [node name="Pharaoh2" parent="." unique_id=1541178727 instance=ExtResource("15_hiqwa")]
unique_name_in_owner = true position = Vector2(6338, -42.34024)
position = Vector2(6338, -58.09474)
[node name="OldComputer" parent="." unique_id=1951254108 instance=ExtResource("19_cbp6q")] [node name="OldComputer" parent="." unique_id=1951254108 instance=ExtResource("19_cbp6q")]
unique_name_in_owner = true 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")] [node name="Block" parent="." unique_id=226580978 instance=ExtResource("2_036b0")]
position = Vector2(6637, -253.12886) position = Vector2(6637, -253.12886)
@@ -496,4 +544,125 @@ position = Vector2(7732, -109.12882)
[node name="VerticalLongBlock6" parent="." unique_id=200846556 instance=ExtResource("4_pkg7o")] [node name="VerticalLongBlock6" parent="." unique_id=200846556 instance=ExtResource("4_pkg7o")]
position = Vector2(7865, -18.128824) 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"] [connection signal="toggled" from="CanvasLayer/MusicButton" to="CanvasLayer/MusicButton" method="_on_toggled"]