From 0f998f94b6369dd49366efce37d624dbfd39f74f Mon Sep 17 00:00:00 2001 From: Gregory Marco Date: Sat, 17 Oct 2026 22:26:36 -0500 Subject: [PATCH 1/4] Track priority of quest objectives (i.e. "find disk 2" has higher priority than "install disk 4") --- disk.gd | 2 +- objectives_label.gd | 4 ++-- pharaoh.gd | 2 +- player_2d.gd | 20 ++++++++++++++++---- 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/disk.gd b/disk.gd index 8b9c616..584a618 100644 --- a/disk.gd +++ b/disk.gd @@ -7,5 +7,5 @@ func _ready() -> void: func _on_picked_up() -> void: %Player2D.give_disk(disk_num) - %Player2D.give_objective("disk%d" % disk_num, "Install data disk %d" % disk_num) + %Player2D.give_objective("disk%d" % disk_num, disk_num, "Install data disk %d" % disk_num) print("Picked up disk ", disk_num) diff --git a/objectives_label.gd b/objectives_label.gd index c766a16..430c947 100644 --- a/objectives_label.gd +++ b/objectives_label.gd @@ -3,6 +3,6 @@ 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] + "\n" + for objective in %Player2D.get_current_objectives(): + new_text = new_text + objective + "\n" text = new_text diff --git a/pharaoh.gd b/pharaoh.gd index 274967a..2f7418c 100644 --- a/pharaoh.gd +++ b/pharaoh.gd @@ -36,4 +36,4 @@ func _on_interacted() -> void: if (not wanted_disk) or %Player2D.has_disk(wanted_disk): return - %Player2D.give_objective("disk%d" % wanted_disk, "Locate data disk %d" % wanted_disk) + %Player2D.give_objective("disk%d" % wanted_disk, wanted_disk, "Locate data disk %d" % wanted_disk) diff --git a/player_2d.gd b/player_2d.gd index 66a4438..6f11c18 100644 --- a/player_2d.gd +++ b/player_2d.gd @@ -52,14 +52,26 @@ func take_disk(disk_num) -> bool: 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 give_objective(id: String, priority: int, description: String) -> void: + objectives[id] = { + "priority": priority, + "description": description, + "completed": false + } func has_objective(id: String) -> bool: - return objectives.has(id) + return objectives.has(id) and not objectives[id].completed + +func get_current_objectives() -> Array[String]: + var current_objectives = objectives.values() + current_objectives.sort_custom(func(a, b): return a.priority < b.priority) + return current_objectives.filter(func(objective): return not objective.completed).map(func(objective): return objective.description) func complete_objective(id: String) -> bool: - return objectives.erase(id) + if not has_objective(id): + return false + objectives[id].completed = true + return true func on_teleport(): refresh_jump(1) From a5f45800bafe3863c3a1473c4010a25f6e2f4823 Mon Sep 17 00:00:00 2001 From: Gregory Marco Date: Sat, 17 Oct 2026 22:42:00 -0500 Subject: [PATCH 2/4] If player does not have the disk 1 objective and the pharaoh wants disk 1 then give the player the objective. --- pharaoh.gd | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pharaoh.gd b/pharaoh.gd index 2f7418c..a09fc01 100644 --- a/pharaoh.gd +++ b/pharaoh.gd @@ -18,8 +18,16 @@ func get_memory_integrity(): return 100.0 / total_integrity * (starting_integrity + len(disks_loaded)) func _on_interacted() -> void: + #%OldComputer.open() + var wanted_disk = disks_wanted.front() if not %Player2D.take_disk(wanted_disk): + if wanted_disk == 1 and not %Player2D.has_objective("disk%d" % wanted_disk): + %OldComputer.open() + %Player2D.give_objective( + "disk%d" % wanted_disk, + wanted_disk, "Locate data disk %d" % wanted_disk + ) return if not load_disk(wanted_disk): From fb5fb19df18dd661f14f169078cfbc6f3be1ee2b Mon Sep 17 00:00:00 2001 From: Gregory Marco Date: Sat, 17 Oct 2026 22:44:01 -0500 Subject: [PATCH 3/4] Don't show the OC at startup, since it now comes after the intro comic + tutorial level. --- OldComputer.tscn | 1 + old_computer.gd | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/OldComputer.tscn b/OldComputer.tscn index e8d6cbe..7cf4d16 100644 --- a/OldComputer.tscn +++ b/OldComputer.tscn @@ -7,6 +7,7 @@ bg_color = Color(0.28627452, 0.25490198, 0.22745098, 1) [node name="OldComputer" type="CanvasLayer" unique_id=1944134941] +visible = false script = ExtResource("1_6jyhx") [node name="BackgroundPanel" type="Panel" parent="." unique_id=1876350245] diff --git a/old_computer.gd b/old_computer.gd index 1bb19de..0caef5b 100644 --- a/old_computer.gd +++ b/old_computer.gd @@ -2,7 +2,6 @@ extends CanvasLayer func _ready() -> void: $ConsoleText.text = $ConsoleText.text % %Pharaoh.get_memory_integrity() - open() func open() -> void: visible = true From 15367da9b48422e015da6488dc244ee41881f62b Mon Sep 17 00:00:00 2001 From: debugman18 Date: Sat, 17 Oct 2026 22:47:39 -0500 Subject: [PATCH 4/4] New checkpoint system --- pharaoh.gd | 3 +++ player_2d.gd | 5 ++++- player_2d.tscn | 4 ++-- world.tscn | 29 +++++++++++++++++++++++------ 4 files changed, 32 insertions(+), 9 deletions(-) diff --git a/pharaoh.gd b/pharaoh.gd index 274967a..bd4a6a4 100644 --- a/pharaoh.gd +++ b/pharaoh.gd @@ -19,6 +19,9 @@ func get_memory_integrity(): func _on_interacted() -> void: var wanted_disk = disks_wanted.front() + + %Player2D.spawn_point = position + if not %Player2D.take_disk(wanted_disk): return diff --git a/player_2d.gd b/player_2d.gd index 66a4438..36c1bf5 100644 --- a/player_2d.gd +++ b/player_2d.gd @@ -16,11 +16,13 @@ var dashes = 1 var dashing = false var death_threshold = 1000 var coins = 0 +var spawn_point var data_disks = [] var objectives = {} func _ready() -> void: + spawn_point = position DisplayServer.window_set_title("JUMPS EQUALS JUMPS") func refresh_dash(new_dashes): @@ -92,7 +94,8 @@ func on_death(instant = false, player_position = position): spawn_ghost(player_position) get_tree().paused = false - position = %LevelStart.position + #position = %LevelStart.position + position = spawn_point 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")): diff --git a/player_2d.tscn b/player_2d.tscn index d2404b2..abcefe7 100644 --- a/player_2d.tscn +++ b/player_2d.tscn @@ -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://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://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://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://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"] diff --git a/world.tscn b/world.tscn index 4ebe157..34dd62f 100644 --- a/world.tscn +++ b/world.tscn @@ -26,11 +26,30 @@ scale = Vector2(1, 1.0155824) [node name="Player2D" parent="." unique_id=889851478 instance=ExtResource("1_aqk2v")] unique_name_in_owner = true -position = Vector2(55, 102.324905) +position = Vector2(-1004, -1335.1945) + +[node name="StartingArea" type="Node2D" parent="." unique_id=130240736] +position = Vector2(-842, -1300.7314) + +[node name="LevelStart" parent="StartingArea" unique_id=2121809777 instance=ExtResource("4_ic0uy")] +position = Vector2(-45, -31.508991) + +[node name="LongerBlock" parent="StartingArea" unique_id=426800863 instance=ExtResource("6_dwbse")] +position = Vector2(-17, -17.72377) + +[node name="LongerBlock3" parent="StartingArea" unique_id=1122236775 instance=ExtResource("6_dwbse")] +position = Vector2(-193, -179.20744) +rotation = 1.5707964 + +[node name="LongerBlock2" parent="StartingArea" unique_id=75325542 instance=ExtResource("6_dwbse")] +position = Vector2(-17, -65.97195) + +[node name="Pharaoh" parent="StartingArea" unique_id=1201409437 instance=ExtResource("15_hiqwa")] +position = Vector2(-62, -39.38623) [node name="Tutorial" type="Node2D" parent="." unique_id=1391494772] -[node name="LongBlock7" parent="Tutorial" unique_id=426800863 instance=ExtResource("6_dwbse")] +[node name="LongBlock7" parent="Tutorial" unique_id=1405051006 instance=ExtResource("6_dwbse")] position = Vector2(1946, 401.7399) [node name="LongBlock8" parent="Tutorial" unique_id=1886381744 instance=ExtResource("6_dwbse")] @@ -104,7 +123,7 @@ position = Vector2(1256, 612.4564) [node name="Spike13" parent="Tutorial" unique_id=2050689217 instance=ExtResource("12_k3n1d")] position = Vector2(1271, 612.4564) -[node name="Teleporter1" parent="Tutorial" unique_id=1201409437 instance=ExtResource("4_gbfbk")] +[node name="Teleporter1" parent="Tutorial" unique_id=686866202 instance=ExtResource("4_gbfbk")] position = Vector2(149, 91.57307) paired_teleporter = "A" @@ -231,6 +250,7 @@ position = Vector2(1679, 181.17683) rotation = 4.712389 [node name="ZoeLevel" type="Node2D" parent="." unique_id=980267417] +visible = false [node name="LongBlock4" parent="ZoeLevel" unique_id=469408536 instance=ExtResource("6_dwbse")] position = Vector2(544, 399) @@ -400,9 +420,6 @@ position = Vector2(7607, -277.12885) [node name="LongBlock" parent="." unique_id=1836871184 instance=ExtResource("3_dwbse")] position = Vector2(7963, -271.12885) -[node name="VerticalLongBlock" parent="." unique_id=1990277242 instance=ExtResource("4_pkg7o")] -position = Vector2(7864, -322.12885) - [node name="VerticalLongBlock2" parent="." unique_id=10220440 instance=ExtResource("4_pkg7o")] position = Vector2(7864, -212.12886)