From f6d6e287f1c93355a5ee2d4435222364a32e1e7d Mon Sep 17 00:00:00 2001 From: Gregory Marco Date: Sat, 17 Oct 2026 16:59:10 -0500 Subject: [PATCH 1/9] Add programmer art pharaoh pink square --- art/Pharaoh.png | Bin 0 -> 130 bytes art/Pharaoh.png.import | 43 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 art/Pharaoh.png create mode 100644 art/Pharaoh.png.import diff --git a/art/Pharaoh.png b/art/Pharaoh.png new file mode 100644 index 0000000000000000000000000000000000000000..fd65b784553e220fdf54f5259b3baad036b95c12 GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`o}Mm_Ar`&KHb?ipw`XQ;=oC8J ze3(HjMkvjGZorS_H@;7N*A)EbcR`lQDTX8lKYas(gsSEgW)92wjfn;>j}^=sW-u&S d%iY1s@ZbY);*)iY9|H|#@O1TaS?83{1OTR+D|P?? literal 0 HcmV?d00001 diff --git a/art/Pharaoh.png.import b/art/Pharaoh.png.import new file mode 100644 index 0000000..719eb7a --- /dev/null +++ b/art/Pharaoh.png.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bfqc03jxmymdy" +path="res://.godot/imported/Pharaoh.png-b23c3a0f85bea8b766379c1c8242fe8c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/Pharaoh.png" +dest_files=["res://.godot/imported/Pharaoh.png-b23c3a0f85bea8b766379c1c8242fe8c.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 From 5dd4c27430323d1e62fecd11da94a191ba7d9e60 Mon Sep 17 00:00:00 2001 From: Gregory Marco Date: Sat, 17 Oct 2026 17:02:39 -0500 Subject: [PATCH 2/9] Proof of concept data disks, pharaoh character --- disk.gd | 7 +++++++ disk.gd.uid | 1 + disk.tscn | 28 ++++++++++++++++++++++++++++ icon.svg.import | 3 --- interactable.gd | 37 +++++++++++++++++++++++++++++++++++++ interactable.gd.uid | 1 + pharaoh.gd | 22 ++++++++++++++++++++++ pharaoh.gd.uid | 1 + pharaoh.tscn | 23 +++++++++++++++++++++++ pickup.gd | 20 ++++++++++++++++++++ pickup.gd.uid | 1 + player_2d.gd | 13 ++++++++++++- project.godot | 21 +++++++++++++++++++++ world.tscn | 16 ++++++++++++++-- 14 files changed, 188 insertions(+), 6 deletions(-) create mode 100644 disk.gd create mode 100644 disk.gd.uid create mode 100644 disk.tscn create mode 100644 interactable.gd create mode 100644 interactable.gd.uid create mode 100644 pharaoh.gd create mode 100644 pharaoh.gd.uid create mode 100644 pharaoh.tscn create mode 100644 pickup.gd create mode 100644 pickup.gd.uid diff --git a/disk.gd b/disk.gd new file mode 100644 index 0000000..13ae1a4 --- /dev/null +++ b/disk.gd @@ -0,0 +1,7 @@ +extends Pickup + +@export var disk_num: int + +func _on_picked_up() -> void: + %Player2D.give_disk(disk_num) + print("Picked up disk ", disk_num) diff --git a/disk.gd.uid b/disk.gd.uid new file mode 100644 index 0000000..84dd604 --- /dev/null +++ b/disk.gd.uid @@ -0,0 +1 @@ +uid://d1uqjaar8v5vi diff --git a/disk.tscn b/disk.tscn new file mode 100644 index 0000000..630d873 --- /dev/null +++ b/disk.tscn @@ -0,0 +1,28 @@ +[gd_scene format=3 uid="uid://b1e1nx60ng3tq"] + +[ext_resource type="Script" uid="uid://d1uqjaar8v5vi" path="res://disk.gd" id="1_olhq3"] +[ext_resource type="Texture2D" uid="uid://b0l3mbvieqbnb" path="res://art/empty_tablet.png" id="3_olhq3"] +[ext_resource type="AudioStream" uid="uid://f2xmq6cgiiwj" path="res://sound/coin.wav" id="4_5qg3x"] + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_6qpsl"] +radius = 7.0 +height = 20.0 + +[node name="Disk" type="Node2D" unique_id=1739014101] +script = ExtResource("1_olhq3") + +[node name="Sprite2D" type="Sprite2D" parent="." unique_id=813041394] +texture = ExtResource("3_olhq3") + +[node name="Area2D" type="Area2D" parent="." unique_id=170499029] +scale = Vector2(1.3291091, 1) + +[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_5qg3x") +volume_db = 1.0 + +[connection signal="picked_up" from="." to="." method="_on_picked_up"] +[connection signal="body_entered" from="Area2D" to="." method="on_contact"] diff --git a/icon.svg.import b/icon.svg.import index ff4a2c7..3ccb140 100644 --- a/icon.svg.import +++ b/icon.svg.import @@ -17,7 +17,6 @@ dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.cte 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 @@ -26,8 +25,6 @@ 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 diff --git a/interactable.gd b/interactable.gd new file mode 100644 index 0000000..242195d --- /dev/null +++ b/interactable.gd @@ -0,0 +1,37 @@ +class_name Interactable +extends Node2D + +signal interacted + +var checked_teleport +var telecam_speed_mult = 4 +var enabled = true +var cooldown = 2 +var is_interactable = false + +func disable(): + enabled = false + $Sprite2D.modulate = Color.DARK_ORANGE + +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 + + interacted.emit() + +func _physics_process(delta: float) -> void: + pass + +func _on_approach(body) -> void: + if body!=%Player2D: + return + is_interactable = true + +func _on_abandon(body) -> void: + if body!=%Player2D: + return + is_interactable = false diff --git a/interactable.gd.uid b/interactable.gd.uid new file mode 100644 index 0000000..eb408d4 --- /dev/null +++ b/interactable.gd.uid @@ -0,0 +1 @@ +uid://dbg7h6gp6hun8 diff --git a/pharaoh.gd b/pharaoh.gd new file mode 100644 index 0000000..9f1ec10 --- /dev/null +++ b/pharaoh.gd @@ -0,0 +1,22 @@ +extends Interactable + +var disks_wanted = [1, 2, 3, 4, 5] +var disks_loaded = [] + +func _ready() -> void: + pass # Replace with function body. + +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 _on_interacted() -> void: + var disk_num = %Player2D.take_disk() + if not load_disk(disk_num): + return + + print("Loaded up disk ", disk_num) diff --git a/pharaoh.gd.uid b/pharaoh.gd.uid new file mode 100644 index 0000000..99150e5 --- /dev/null +++ b/pharaoh.gd.uid @@ -0,0 +1 @@ +uid://bh588bpddschq diff --git a/pharaoh.tscn b/pharaoh.tscn new file mode 100644 index 0000000..cc1bfc7 --- /dev/null +++ b/pharaoh.tscn @@ -0,0 +1,23 @@ +[gd_scene format=3 uid="uid://dr8h8xij3qw2h"] + +[ext_resource type="Script" uid="uid://bh588bpddschq" path="res://pharaoh.gd" id="1_mt7kg"] +[ext_resource type="Texture2D" uid="uid://bfqc03jxmymdy" path="res://art/Pharaoh.png" id="2_mt7kg"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_eumkw"] +size = Vector2(26, 32) + +[node name="Pharaoh" type="Node2D" unique_id=1201409437] +script = ExtResource("1_mt7kg") + +[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1680278216] +texture = ExtResource("2_mt7kg") + +[node name="Area2D" type="Area2D" parent="Sprite2D" unique_id=2050186824] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Sprite2D/Area2D" unique_id=1560168165] +position = Vector2(0, -8) +shape = SubResource("RectangleShape2D_eumkw") + +[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/pickup.gd b/pickup.gd new file mode 100644 index 0000000..4aa34f2 --- /dev/null +++ b/pickup.gd @@ -0,0 +1,20 @@ +class_name Pickup +extends Node2D + +signal picked_up + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + +# 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(0) + visible = false + picked_up.emit() + await get_tree().create_timer(0.2).timeout + queue_free() diff --git a/pickup.gd.uid b/pickup.gd.uid new file mode 100644 index 0000000..3301f53 --- /dev/null +++ b/pickup.gd.uid @@ -0,0 +1 @@ +uid://bun3ype8fkpv8 diff --git a/player_2d.gd b/player_2d.gd index c2bf67a..b75152d 100644 --- a/player_2d.gd +++ b/player_2d.gd @@ -18,6 +18,8 @@ var dashing = false var death_threshold = 1000 var coins = 0 +var data_disks = [] + func _ready() -> void: DisplayServer.window_set_title("JUMPS EQUALS JUMPS") @@ -32,7 +34,16 @@ func refresh_jump(new_jumps): jumps = new_jumps else: jumps = 1 - + +func give_disk(disk_num: int) -> void: + data_disks.push_back(disk_num) + +func take_disk() -> int: + var disk_num = data_disks.pop_back() + if disk_num: + return disk_num + return 0 + func on_teleport(): refresh_jump(1) teleport_cooldown = 1 diff --git a/project.godot b/project.godot index 77305f7..fec94bd 100644 --- a/project.godot +++ b/project.godot @@ -360,6 +360,27 @@ controller_restart_right={ "script": null )] } +interact={ +"deadzone": 0.2, +"events": [Object(InputEventKey, +"resource_local_to_scene": false, +"resource_name": "", +"device": -1, +"window_id": 0, +"alt_pressed": false, +"shift_pressed": false, +"ctrl_pressed": false, +"meta_pressed": false, +"pressed": false, +"keycode": 0, +"physical_keycode": 69, +"key_label": 0, +"unicode": 101, +"location": 0, +"echo": false, +"script": null +)] +} [input_devices] diff --git a/world.tscn b/world.tscn index 4a8a5d0..48938ab 100644 --- a/world.tscn +++ b/world.tscn @@ -10,10 +10,12 @@ [ext_resource type="PackedScene" uid="uid://bos6oh7nwyeca" path="res://vertical_long_block.tscn" id="4_pkg7o"] [ext_resource type="PackedScene" uid="uid://biot4cuwgohvo" path="res://longer_block.tscn" id="6_dwbse"] [ext_resource type="PackedScene" uid="uid://kstmxoa4dx55" path="res://coin.tscn" id="8_ioo17"] +[ext_resource type="PackedScene" uid="uid://b1e1nx60ng3tq" path="res://disk.tscn" id="10_2u3nc"] [ext_resource type="Texture2D" uid="uid://s3h6tpypoee0" path="res://art/music_button.png" id="12_2o6r5"] [ext_resource type="PackedScene" uid="uid://c8m4d77hcr0pj" path="res://spike.tscn" id="12_k3n1d"] [ext_resource type="Texture2D" uid="uid://dxgnkftqtyt53" path="res://art/music_button_disabled.png" id="13_70uel"] [ext_resource type="Script" uid="uid://d3rx82psovcpp" path="res://music_button.gd" id="14_70uel"] +[ext_resource type="PackedScene" uid="uid://dr8h8xij3qw2h" path="res://pharaoh.tscn" id="15_hiqwa"] [node name="World" type="Node2D" unique_id=1327991900] process_mode = 3 @@ -144,6 +146,10 @@ position = Vector2(0, -58.094738) [node name="Coin4" parent="Tutorial" unique_id=1504473184 instance=ExtResource("8_ioo17")] position = Vector2(0, -85.66513) +[node name="Disk" parent="Tutorial" unique_id=514380026 instance=ExtResource("10_2u3nc")] +position = Vector2(213, 95.511696) +disk_num = 1 + [node name="ZoeLevel" type="Node2D" parent="." unique_id=980267417] [node name="LongBlock4" parent="ZoeLevel" unique_id=469408536 instance=ExtResource("6_dwbse")] @@ -180,8 +186,10 @@ script = ExtResource("2_dwbse") anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 -offset_top = 23.0 -offset_bottom = 23.0 +offset_left = 3.0 +offset_top = 32.0 +offset_right = 3.0 +offset_bottom = 32.0 grow_horizontal = 2 grow_vertical = 2 bbcode_enabled = true @@ -208,4 +216,8 @@ 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")] +unique_name_in_owner = true +position = Vector2(192, 185.11545) + [connection signal="toggled" from="CanvasLayer/MusicButton" to="CanvasLayer/MusicButton" method="_on_toggled"] From 1aa29a0539a6c0dbcf381b2cd14c2c0a461a6ae8 Mon Sep 17 00:00:00 2001 From: Gregory Marco Date: Sat, 17 Oct 2026 18:04:18 -0500 Subject: [PATCH 3/9] Add objectives listing and all four data disks/tablets. Track each individual disk and ensure they are loaded in order. Player can collect multiple disks in one run but must present them to the pharaoh in order. --- disk.gd | 1 + objectives_label.gd | 8 ++++++++ objectives_label.gd.uid | 1 + pharaoh.gd | 18 ++++++++++++++---- player_2d.gd | 26 ++++++++++++++++++++------ player_2d.tscn | 8 ++++---- world.tscn | 25 +++++++++++++++++++++++++ 7 files changed, 73 insertions(+), 14 deletions(-) create mode 100644 objectives_label.gd create mode 100644 objectives_label.gd.uid diff --git a/disk.gd b/disk.gd index 13ae1a4..b45da36 100644 --- a/disk.gd +++ b/disk.gd @@ -4,4 +4,5 @@ extends Pickup func _on_picked_up() -> void: %Player2D.give_disk(disk_num) + %Player2D.give_objective("disk%d" % disk_num, "Install data disk %d" % disk_num) print("Picked up disk ", disk_num) diff --git a/objectives_label.gd b/objectives_label.gd new file mode 100644 index 0000000..7f88101 --- /dev/null +++ b/objectives_label.gd @@ -0,0 +1,8 @@ +extends RichTextLabel + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + var new_text = "OBJECTIVES:\n" + for objective in %Player2D.objectives: + new_text = new_text + %Player2D.objectives[objective] + text = new_text diff --git a/objectives_label.gd.uid b/objectives_label.gd.uid new file mode 100644 index 0000000..8afb70c --- /dev/null +++ b/objectives_label.gd.uid @@ -0,0 +1 @@ +uid://oyyhhy1gemg0 diff --git a/pharaoh.gd b/pharaoh.gd index 9f1ec10..ed550fc 100644 --- a/pharaoh.gd +++ b/pharaoh.gd @@ -1,6 +1,6 @@ extends Interactable -var disks_wanted = [1, 2, 3, 4, 5] +var disks_wanted = [1, 2, 3, 4] var disks_loaded = [] func _ready() -> void: @@ -15,8 +15,18 @@ func load_disk(disk_num: int) -> bool: return true func _on_interacted() -> void: - var disk_num = %Player2D.take_disk() - if not load_disk(disk_num): + var wanted_disk = disks_wanted.front() + if not %Player2D.take_disk(wanted_disk): return - print("Loaded up disk ", disk_num) + if not load_disk(wanted_disk): + return + + %Player2D.complete_objective("disk%d" % wanted_disk) + print("Loaded up disk ", wanted_disk) + + wanted_disk = disks_wanted.front() + if not wanted_disk: + return + + %Player2D.give_objective("disk%d" % wanted_disk, "Locate data disk %d" % wanted_disk) diff --git a/player_2d.gd b/player_2d.gd index bcffccb..07b6818 100644 --- a/player_2d.gd +++ b/player_2d.gd @@ -19,6 +19,7 @@ var death_threshold = 1000 var coins = 0 var data_disks = [] +var objectives = {} func _ready() -> void: DisplayServer.window_set_title("JUMPS EQUALS JUMPS") @@ -43,12 +44,25 @@ func refresh_jump(new_jumps): func give_disk(disk_num: int) -> void: data_disks.push_back(disk_num) -func take_disk() -> int: - var disk_num = data_disks.pop_back() - if disk_num: - return disk_num - return 0 - +func take_disk(disk_num) -> bool: + if not has_disk(disk_num): + return false + + data_disks.remove_at(data_disks.find(disk_num)) + return true + +func has_disk(disk_num: int) -> bool: + return disk_num in data_disks + +func give_objective(id: String, description: String) -> void: + objectives[id] = description + +func has_objective(id: String) -> bool: + return objectives.has(id) + +func complete_objective(id: String) -> bool: + return objectives.erase(id) + func on_teleport(): refresh_jump(1) teleport_cooldown = 1 diff --git a/player_2d.tscn b/player_2d.tscn index dd78eaf..867bfca 100644 --- a/player_2d.tscn +++ b/player_2d.tscn @@ -5,8 +5,8 @@ [ext_resource type="Texture2D" uid="uid://dpdxs6gjmexgh" path="res://art/background.png" id="3_p3026"] [ext_resource type="Texture2D" uid="uid://biv3f67rqumak" path="res://art/level_start.png" id="4_nj6as"] [ext_resource type="Script" uid="uid://3bqq3mfbby2c" path="res://warp_shader.gd" id="4_pmt5n"] -[ext_resource type="Texture2D" uid="uid://lk0f1qyswyxv" path="res://art/player/running/frame1.png" id="5_6jyqn"] -[ext_resource type="Texture2D" uid="uid://lmje8plw76e1" path="res://art/player/running/frame2.png" id="6_gt2ls"] +[ext_resource type="Texture2D" uid="uid://lk0f1qyswyxv" path="res://art/player/idle/frame1.png" id="5_6jyqn"] +[ext_resource type="Texture2D" uid="uid://lmje8plw76e1" path="res://art/player/idle/frame2.png" id="6_gt2ls"] [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://yf13nw31k8ua" path="res://art/player/running/frame4.png" id="8_nj6as"] @@ -161,7 +161,7 @@ autoplay = "idle" [node name="DashIndicator" type="CPUParticles2D" parent="Jetpack" unique_id=1424397604] position = Vector2(-11, -2) texture = ExtResource("16_ur4nw") -lifetime = 0.09999999999999999 +lifetime = 0.1 gravity = Vector2(0, 0) [node name="DashIndicatorGlow" type="PointLight2D" parent="Jetpack/DashIndicator" unique_id=1334369973] @@ -172,7 +172,7 @@ texture = ExtResource("10_ur4nw") [node name="JumpIndicator" type="CPUParticles2D" parent="Jetpack" unique_id=1519478958] position = Vector2(13, -2) texture = ExtResource("18_fat58") -lifetime = 0.09999999999999999 +lifetime = 0.1 gravity = Vector2(0, 0) [node name="JumpIndicatorGlow" type="PointLight2D" parent="Jetpack/JumpIndicator" unique_id=920409859] diff --git a/world.tscn b/world.tscn index ebe5d7d..b7c13de 100644 --- a/world.tscn +++ b/world.tscn @@ -16,6 +16,7 @@ [ext_resource type="PackedScene" uid="uid://c8m4d77hcr0pj" path="res://spike.tscn" id="12_k3n1d"] [ext_resource type="Texture2D" uid="uid://dxgnkftqtyt53" path="res://art/music_button_disabled.png" id="13_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="PackedScene" uid="uid://dr8h8xij3qw2h" path="res://pharaoh.tscn" id="15_hiqwa"] [node name="World" type="Node2D" unique_id=1327991900] @@ -205,6 +206,18 @@ position = Vector2(0, -85.66513) position = Vector2(213, 95.511696) disk_num = 1 +[node name="Disk2" parent="Tutorial" unique_id=369042906 instance=ExtResource("10_2u3nc")] +position = Vector2(285, 96.49635) +disk_num = 2 + +[node name="Disk3" parent="Tutorial" unique_id=224370384 instance=ExtResource("10_2u3nc")] +position = Vector2(188, 234.34827) +disk_num = 3 + +[node name="Disk4" parent="Tutorial" unique_id=1193788903 instance=ExtResource("10_2u3nc")] +position = Vector2(293, 182.16148) +disk_num = 4 + [node name="WallSpike" parent="Tutorial" unique_id=287086441 instance=ExtResource("10_hiqwa")] position = Vector2(1325, 629.1956) @@ -310,6 +323,18 @@ bbcode_enabled = true text = "COINS:" script = ExtResource("3_wse8f") +[node name="Objectives" type="RichTextLabel" parent="CanvasLayer" unique_id=528356873] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = 274.0 +offset_bottom = 274.0 +grow_horizontal = 2 +grow_vertical = 2 +bbcode_enabled = true +text = "OBJECTIVES:" +script = ExtResource("14_ikiii") + [node name="MusicButton" type="TextureButton" parent="CanvasLayer" unique_id=1088022504] unique_name_in_owner = true anchors_preset = 1 From a3fb8debbbc420bd30918f642a2706af02f83779 Mon Sep 17 00:00:00 2001 From: Gregory Marco Date: Sat, 17 Oct 2026 18:30:53 -0500 Subject: [PATCH 4/9] Add disk numbers 1 through 4 (currently roman numerals) --- art/numbers/1.png | Bin 0 -> 93 bytes art/numbers/1.png.import | 43 +++++++++++++++++++++++++++++++++++++++ art/numbers/2.png | Bin 0 -> 98 bytes art/numbers/2.png.import | 43 +++++++++++++++++++++++++++++++++++++++ art/numbers/3.png | Bin 0 -> 97 bytes art/numbers/3.png.import | 43 +++++++++++++++++++++++++++++++++++++++ art/numbers/4.png | Bin 0 -> 117 bytes art/numbers/4.png.import | 43 +++++++++++++++++++++++++++++++++++++++ disk.gd | 3 +++ disk.tscn | 2 ++ objectives_label.gd | 2 +- pharaoh.gd | 2 +- 12 files changed, 179 insertions(+), 2 deletions(-) create mode 100644 art/numbers/1.png create mode 100644 art/numbers/1.png.import create mode 100644 art/numbers/2.png create mode 100644 art/numbers/2.png.import create mode 100644 art/numbers/3.png create mode 100644 art/numbers/3.png.import create mode 100644 art/numbers/4.png create mode 100644 art/numbers/4.png.import diff --git a/art/numbers/1.png b/art/numbers/1.png new file mode 100644 index 0000000000000000000000000000000000000000..e981515c83101aebc66fffa11a08bc68ed31a61b GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`DxNNmAr`&K2@Ar`&K2@jWm;?z4htClbObiV7zOivWgTe~DWM4fUmO~f literal 0 HcmV?d00001 diff --git a/art/numbers/2.png.import b/art/numbers/2.png.import new file mode 100644 index 0000000..842a873 --- /dev/null +++ b/art/numbers/2.png.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://5p4gwkndi1un" +path="res://.godot/imported/2.png-7eebbc475a29d976e42436727060df80.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/numbers/2.png" +dest_files=["res://.godot/imported/2.png-7eebbc475a29d976e42436727060df80.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/numbers/3.png b/art/numbers/3.png new file mode 100644 index 0000000000000000000000000000000000000000..04375261bcb174363a09eae139ed7e25c15e35a6 GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`8lEnWAr`&K2@39B}hm(Y>tp{VqkC)=j7cRCLen5aHt`Pxqz`m|G*K0BbsH5h8r8sx>h77bTBe>t8p_cMD5=K PG>5^{)z4*}Q$iB}Uw void: + $DiskNumber.texture = load("res://art/numbers/%d.png" % disk_num) + func _on_picked_up() -> void: %Player2D.give_disk(disk_num) %Player2D.give_objective("disk%d" % disk_num, "Install data disk %d" % disk_num) diff --git a/disk.tscn b/disk.tscn index 630d873..0d90ff4 100644 --- a/disk.tscn +++ b/disk.tscn @@ -24,5 +24,7 @@ shape = SubResource("CapsuleShape2D_6qpsl") stream = ExtResource("4_5qg3x") volume_db = 1.0 +[node name="DiskNumber" type="Sprite2D" parent="." unique_id=1317449795] + [connection signal="picked_up" from="." to="." method="_on_picked_up"] [connection signal="body_entered" from="Area2D" to="." method="on_contact"] diff --git a/objectives_label.gd b/objectives_label.gd index 7f88101..c766a16 100644 --- a/objectives_label.gd +++ b/objectives_label.gd @@ -4,5 +4,5 @@ extends RichTextLabel func _process(delta: float) -> void: var new_text = "OBJECTIVES:\n" for objective in %Player2D.objectives: - new_text = new_text + %Player2D.objectives[objective] + new_text = new_text + %Player2D.objectives[objective] + "\n" text = new_text diff --git a/pharaoh.gd b/pharaoh.gd index ed550fc..7e93de6 100644 --- a/pharaoh.gd +++ b/pharaoh.gd @@ -26,7 +26,7 @@ func _on_interacted() -> void: print("Loaded up disk ", wanted_disk) wanted_disk = disks_wanted.front() - if not wanted_disk: + if %Player2D.has_disk(wanted_disk): return %Player2D.give_objective("disk%d" % wanted_disk, "Locate data disk %d" % wanted_disk) From d01b62b8f744d5c6a6413ab57fb466a7832be80b Mon Sep 17 00:00:00 2001 From: Gregory Marco Date: Sat, 17 Oct 2026 18:41:31 -0500 Subject: [PATCH 5/9] Move the objectives listing down a bit --- world.tscn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/world.tscn b/world.tscn index b7c13de..c8cf268 100644 --- a/world.tscn +++ b/world.tscn @@ -327,7 +327,7 @@ script = ExtResource("3_wse8f") anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 -offset_top = 274.0 +offset_top = 605.0 offset_bottom = 274.0 grow_horizontal = 2 grow_vertical = 2 From fef374fe95e78c380a6bb3a4ba54c081b0e305a5 Mon Sep 17 00:00:00 2001 From: Gregory Marco Date: Sat, 17 Oct 2026 19:02:29 -0500 Subject: [PATCH 6/9] null check next wanted disk --- pharaoh.gd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pharaoh.gd b/pharaoh.gd index 7e93de6..28be541 100644 --- a/pharaoh.gd +++ b/pharaoh.gd @@ -26,7 +26,7 @@ func _on_interacted() -> void: print("Loaded up disk ", wanted_disk) wanted_disk = disks_wanted.front() - if %Player2D.has_disk(wanted_disk): + if wanted_disk and %Player2D.has_disk(wanted_disk): return %Player2D.give_objective("disk%d" % wanted_disk, "Locate data disk %d" % wanted_disk) From 955a5c0556e033c1b465c3fd082d130eb9093541 Mon Sep 17 00:00:00 2001 From: TheRailGoat <128244062+TheRailGoat@users.noreply.github.com> Date: Sat, 17 Oct 2026 20:36:24 -0500 Subject: [PATCH 7/9] Basic Sarcophagus Closed Closed! --- art/sarco_closed.png | Bin 0 -> 304 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 art/sarco_closed.png diff --git a/art/sarco_closed.png b/art/sarco_closed.png new file mode 100644 index 0000000000000000000000000000000000000000..f60b03ce16426e6248f178f0c86f20e8aa275080 GIT binary patch literal 304 zcmV-00nh%4P)Px#>PbXFR7i>4l`9g1Fcd}a!*noNL`_{C`(UZrM;#8sA}|>Ysp(5!zJyFghijO8 z?%{nPA$(;&PYTAVIUb`Eo3KvSAV0|)>Ka#11;it@=7Dq(h#U9d(gDI^10j Date: Sat, 17 Oct 2026 20:56:59 -0500 Subject: [PATCH 8/9] Add the old computer screen popup. --- OldComputer.tscn | 49 +++++++++++++++++++++++++++++ art/computer/background.png | Bin 0 -> 71343 bytes art/computer/background.png.import | 43 +++++++++++++++++++++++++ old_computer.gd | 15 +++++++++ old_computer.gd.uid | 1 + pharaoh.gd | 13 ++++++-- player_2d.gd | 10 +++++- world.tscn | 4 +++ 8 files changed, 131 insertions(+), 4 deletions(-) create mode 100644 OldComputer.tscn create mode 100644 art/computer/background.png create mode 100644 art/computer/background.png.import create mode 100644 old_computer.gd create mode 100644 old_computer.gd.uid diff --git a/OldComputer.tscn b/OldComputer.tscn new file mode 100644 index 0000000..e8d6cbe --- /dev/null +++ b/OldComputer.tscn @@ -0,0 +1,49 @@ +[gd_scene format=3 uid="uid://bcu7ftukipiyy"] + +[ext_resource type="Script" uid="uid://d0lvnnd3mqfxh" path="res://old_computer.gd" id="1_6jyhx"] +[ext_resource type="Texture2D" uid="uid://brppyauh1xyif" path="res://art/computer/background.png" id="2_2wyuv"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_2wyuv"] +bg_color = Color(0.28627452, 0.25490198, 0.22745098, 1) + +[node name="OldComputer" type="CanvasLayer" unique_id=1944134941] +script = ExtResource("1_6jyhx") + +[node name="BackgroundPanel" type="Panel" parent="." unique_id=1876350245] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="ForegroundPanel" type="Panel" parent="BackgroundPanel" unique_id=1797726425] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_2wyuv") + +[node name="ScreenPanel" type="Panel" parent="BackgroundPanel/ForegroundPanel" unique_id=528166777] +layout_mode = 0 +offset_left = 82.0 +offset_top = 42.0 +offset_right = 122.81183 +offset_bottom = 85.64739 +scale = Vector2(27.099607, 14.530945) + +[node name="Sprite2D" type="Sprite2D" parent="BackgroundPanel" unique_id=856709145] +position = Vector2(618, 349) +texture = ExtResource("2_2wyuv") + +[node name="ConsoleText" type="RichTextLabel" parent="." unique_id=715961645] +offset_left = 150.0 +offset_top = 105.0 +offset_right = 1102.0 +offset_bottom = 652.0 +text = ">> Pharaoh OS 2000 Boot Sequence +>> WARN: Detected anomalies! +>> WARN: Memory integrity at %d%%! +>> User: Please load backup data disk (1 of 4) +>> Player: Press interact [E] or jump [Space] to exit." diff --git a/art/computer/background.png b/art/computer/background.png new file mode 100644 index 0000000000000000000000000000000000000000..c37bbeb0647282a3c1f884d113ed3faef8ba80a4 GIT binary patch literal 71343 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 z�=j)$WfUhW!6EjBbA;ozx!|Vt%fJ~ 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 void: + $ConsoleText.text = $ConsoleText.text % %Pharaoh.get_memory_integrity() + open() + +func open() -> void: + visible = true + +func printline(line: String) -> void: + open() + $ConsoleText.text += "\n" + line + +func close() -> void: + visible = false diff --git a/old_computer.gd.uid b/old_computer.gd.uid new file mode 100644 index 0000000..a7bd0cc --- /dev/null +++ b/old_computer.gd.uid @@ -0,0 +1 @@ +uid://d0lvnnd3mqfxh diff --git a/pharaoh.gd b/pharaoh.gd index 28be541..274967a 100644 --- a/pharaoh.gd +++ b/pharaoh.gd @@ -3,8 +3,8 @@ extends Interactable var disks_wanted = [1, 2, 3, 4] var disks_loaded = [] -func _ready() -> void: - pass # Replace with function body. +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): @@ -14,6 +14,9 @@ func load_disk(disk_num: int) -> bool: 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: var wanted_disk = disks_wanted.front() if not %Player2D.take_disk(wanted_disk): @@ -24,9 +27,13 @@ func _on_interacted() -> void: %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() - if wanted_disk and %Player2D.has_disk(wanted_disk): + if (not wanted_disk) or %Player2D.has_disk(wanted_disk): return %Player2D.give_objective("disk%d" % wanted_disk, "Locate data disk %d" % wanted_disk) diff --git a/player_2d.gd b/player_2d.gd index e1a969a..a58f406 100644 --- a/player_2d.gd +++ b/player_2d.gd @@ -99,7 +99,12 @@ 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 Input.is_action_just_released("interact"): + %OldComputer.close() + if Input.is_action_just_pressed("jump"): + %OldComputer.close() + if is_on_floor(): velocity.y = JUMP_VELOCITY elif !is_on_floor() and jumps >= 1: @@ -114,7 +119,10 @@ func _process(delta: float) -> void: 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: diff --git a/world.tscn b/world.tscn index c8cf268..5e10cf6 100644 --- a/world.tscn +++ b/world.tscn @@ -18,6 +18,7 @@ [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://bcu7ftukipiyy" path="res://OldComputer.tscn" id="19_cbp6q"] [node name="World" type="Node2D" unique_id=1327991900] process_mode = 1 @@ -359,4 +360,7 @@ script = ExtResource("14_70uel") unique_name_in_owner = true position = Vector2(192, 185.11545) +[node name="OldComputer" parent="." unique_id=1951254108 instance=ExtResource("19_cbp6q")] +unique_name_in_owner = true + [connection signal="toggled" from="CanvasLayer/MusicButton" to="CanvasLayer/MusicButton" method="_on_toggled"] From 3326f514340542856ccc2e0520f38107844d05ef Mon Sep 17 00:00:00 2001 From: Gregory Marco Date: Sat, 17 Oct 2026 21:02:05 -0500 Subject: [PATCH 9/9] Update pharaoh character image. --- pharaoh.tscn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pharaoh.tscn b/pharaoh.tscn index cc1bfc7..5a2c662 100644 --- a/pharaoh.tscn +++ b/pharaoh.tscn @@ -1,7 +1,7 @@ [gd_scene format=3 uid="uid://dr8h8xij3qw2h"] [ext_resource type="Script" uid="uid://bh588bpddschq" path="res://pharaoh.gd" id="1_mt7kg"] -[ext_resource type="Texture2D" uid="uid://bfqc03jxmymdy" path="res://art/Pharaoh.png" id="2_mt7kg"] +[ext_resource type="Texture2D" uid="uid://b2nldodte5p6s" path="res://art/sarco_closed.png" id="2_mt7kg"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_eumkw"] size = Vector2(26, 32)