From 1ac21d4a67ddd211fda841aa6e368bc2cf52a3d6 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Mon, 18 Aug 2025 12:56:13 -0400 Subject: Validate that nodes in game files are used You can now also list out nodes that you are explicitly not mapping out. The current state of the repo does produce some warnings when the validator is run and they're either endings, paintings that I'm not sure what to do with yet, and weird proxy stuff I'm not sure how to handle yet. --- data/connections.txtpb | 2 +- data/maps/the_between/connections.txtpb | 43 ++++++++++++++++++++++- data/maps/the_between/rooms/B2 Back Room.txtpb | 17 +++++++++ data/maps/the_between/rooms/B2 Front Room.txtpb | 12 +++++++ data/maps/the_between/rooms/B2 Room.txtpb | 8 ----- data/maps/the_between/rooms/Main Area.txtpb | 6 ---- data/maps/the_between/rooms/Plaza Entrance.txtpb | 7 ++++ data/maps/the_colorful/metadata.txtpb | 2 ++ data/maps/the_entry/metadata.txtpb | 10 ++++++ data/maps/the_extravagant/metadata.txtpb | 2 ++ data/maps/the_gallery/metadata.txtpb | 8 +++++ data/maps/the_graveyard/metadata.txtpb | 5 +++ data/maps/the_great/metadata.txtpb | 7 ++++ data/maps/the_great/rooms/Back Area.txtpb | 2 +- data/maps/the_great/rooms/Daedalus Entrance.txtpb | 2 +- data/maps/the_great/rooms/Main Area.txtpb | 10 +++--- data/maps/the_great/rooms/Purple Room.txtpb | 2 +- data/maps/the_great/rooms/Salmon Room.txtpb | 2 +- data/maps/the_hinterlands/metadata.txtpb | 32 +++++++++++++++++ data/maps/the_impressive/metadata.txtpb | 5 +++ data/maps/the_orb/metadata.txtpb | 4 +++ data/maps/the_orb/rooms/B Room.txtpb | 1 - 22 files changed, 163 insertions(+), 26 deletions(-) create mode 100644 data/maps/the_between/rooms/B2 Back Room.txtpb create mode 100644 data/maps/the_between/rooms/B2 Front Room.txtpb delete mode 100644 data/maps/the_between/rooms/B2 Room.txtpb create mode 100644 data/maps/the_between/rooms/Plaza Entrance.txtpb create mode 100644 data/maps/the_colorful/metadata.txtpb create mode 100644 data/maps/the_entry/metadata.txtpb create mode 100644 data/maps/the_extravagant/metadata.txtpb create mode 100644 data/maps/the_gallery/metadata.txtpb create mode 100644 data/maps/the_graveyard/metadata.txtpb create mode 100644 data/maps/the_great/metadata.txtpb create mode 100644 data/maps/the_hinterlands/metadata.txtpb create mode 100644 data/maps/the_impressive/metadata.txtpb create mode 100644 data/maps/the_orb/metadata.txtpb (limited to 'data') diff --git a/data/connections.txtpb b/data/connections.txtpb index 5e67500..e5014f7 100644 --- a/data/connections.txtpb +++ b/data/connections.txtpb @@ -915,7 +915,7 @@ connections { from { port { map: "the_between" - room: "Main Area" + room: "Plaza Entrance" name: "PLAZA" } } diff --git a/data/maps/the_between/connections.txtpb b/data/maps/the_between/connections.txtpb index e2e7dc8..4e2e9a5 100644 --- a/data/maps/the_between/connections.txtpb +++ b/data/maps/the_between/connections.txtpb @@ -5,6 +5,47 @@ connections { } connections { from_room: "Main Area" - to_room: "B2 Room" + to_room: "B2 Front Room" door { name: "B2 Door" } } +connections { + from { + painting { + room: "B2 Front Room" + name: "EYES4" + } + } + to { + painting { + room: "B2 Back Room" + name: "EYES3" + } + } + oneway: true +} +connections { + from { + painting { + room: "B2 Front Room" + name: "EYES" + } + } + to { + painting { + room: "B2 Back Room" + name: "EYES2" + } + } + oneway: true +} +connections { + from_room: "B2 Back Room" + to_room: "B2 Front Room" + # via collecting B2 + oneway: true +} +connections { + from_room: "Main Area" + to_room: "Plaza Entrance" + door { name: "Plaza Entrance" } +} diff --git a/data/maps/the_between/rooms/B2 Back Room.txtpb b/data/maps/the_between/rooms/B2 Back Room.txtpb new file mode 100644 index 0000000..132ba56 --- /dev/null +++ b/data/maps/the_between/rooms/B2 Back Room.txtpb @@ -0,0 +1,17 @@ +name: "B2 Back Room" +display_name: "B2 Room" +letters { + key: "b" + level2: true + path: "Components/Collectables/collectable" +} +paintings { + name: "EYES2" + path: "Components/Paintings/eyes2" + orientation: "east" +} +paintings { + name: "EYES3" + path: "Components/Paintings/eyes3" + orientation: "west" +} diff --git a/data/maps/the_between/rooms/B2 Front Room.txtpb b/data/maps/the_between/rooms/B2 Front Room.txtpb new file mode 100644 index 0000000..02c09fb --- /dev/null +++ b/data/maps/the_between/rooms/B2 Front Room.txtpb @@ -0,0 +1,12 @@ +name: "B2 Front Room" +display_name: "B2 Room" +paintings { + name: "EYES" + path: "Components/Paintings/eyes" + orientation: "east" +} +paintings { + name: "EYES4" + path: "Components/Paintings/eyes4" + orientation: "west" +} diff --git a/data/maps/the_between/rooms/B2 Room.txtpb b/data/maps/the_between/rooms/B2 Room.txtpb deleted file mode 100644 index aad5d15..0000000 --- a/data/maps/the_between/rooms/B2 Room.txtpb +++ /dev/null @@ -1,8 +0,0 @@ -name: "B2 Room" -display_name: "B2 Room" -letters { - key: "b" - level2: true - path: "Components/Collectables/collectable" -} -# Uhh idk if the paintings and door in here should be randomized. diff --git a/data/maps/the_between/rooms/Main Area.txtpb b/data/maps/the_between/rooms/Main Area.txtpb index 1e0e291..164493d 100644 --- a/data/maps/the_between/rooms/Main Area.txtpb +++ b/data/maps/the_between/rooms/Main Area.txtpb @@ -201,9 +201,3 @@ ports { path: "Components/Warps/worldport" orientation: "east" } -ports { - name: "PLAZA" - path: "Components/Warps/worldport4" - orientation: "north" - required_door { name: "Plaza Entrance" } -} diff --git a/data/maps/the_between/rooms/Plaza Entrance.txtpb b/data/maps/the_between/rooms/Plaza Entrance.txtpb new file mode 100644 index 0000000..b99081a --- /dev/null +++ b/data/maps/the_between/rooms/Plaza Entrance.txtpb @@ -0,0 +1,7 @@ +name: "Plaza Entrance" +display_name: "Main Area" +ports { + name: "PLAZA" + path: "Components/Warps/worldport4" + orientation: "north" +} diff --git a/data/maps/the_colorful/metadata.txtpb b/data/maps/the_colorful/metadata.txtpb new file mode 100644 index 0000000..4c475a0 --- /dev/null +++ b/data/maps/the_colorful/metadata.txtpb @@ -0,0 +1,2 @@ +# This has something to do with the FISH/FISHES proxy. +excluded_nodes: "Components/panel_fake" diff --git a/data/maps/the_entry/metadata.txtpb b/data/maps/the_entry/metadata.txtpb new file mode 100644 index 0000000..24d17bf --- /dev/null +++ b/data/maps/the_entry/metadata.txtpb @@ -0,0 +1,10 @@ +# This is a debug warp to The Ancient and as far as I can tell there is no way +# to access it. +excluded_nodes: "Components/Warps/worldport-test" +# Proxy stuff related to the Ctrl Tutorial. +excluded_nodes: "Panels/Back Left/backleft_2_proxied_1" +excluded_nodes: "Panels/Back Left/backleft_2_proxied_2" +excluded_nodes: "Panels/Back Left/backleft_3_proxied_1" +excluded_nodes: "Panels/Back Left/backleft_3_proxied_2" +excluded_nodes: "Panels/Back Left/backleft_4_proxied_1" +excluded_nodes: "Panels/Back Left/backleft_4_proxied_2" diff --git a/data/maps/the_extravagant/metadata.txtpb b/data/maps/the_extravagant/metadata.txtpb new file mode 100644 index 0000000..36fc80a --- /dev/null +++ b/data/maps/the_extravagant/metadata.txtpb @@ -0,0 +1,2 @@ +# This appears to be completely inaccessible. +excluded_nodes: "Components/Warps/worldport" diff --git a/data/maps/the_gallery/metadata.txtpb b/data/maps/the_gallery/metadata.txtpb new file mode 100644 index 0000000..c07cb5c --- /dev/null +++ b/data/maps/the_gallery/metadata.txtpb @@ -0,0 +1,8 @@ +# These are the eyes in the foyer, and aren't normal paintings. +excluded_nodes: "Components/Paintings/Starting/eye" +excluded_nodes: "Components/Paintings/Starting/eye2" +excluded_nodes: "Components/Paintings/Starting/eye3" +excluded_nodes: "Components/Paintings/Starting/eye4" +# This is the E that got removed but not deleted. It's above the ceiling and +# cannot be accessed. +excluded_nodes: "Components/Paintings/Starting/e" diff --git a/data/maps/the_graveyard/metadata.txtpb b/data/maps/the_graveyard/metadata.txtpb new file mode 100644 index 0000000..fbac6ab --- /dev/null +++ b/data/maps/the_graveyard/metadata.txtpb @@ -0,0 +1,5 @@ +# These really shouldn't be shuffled because it would make Black Ending trivial. +excluded_nodes: "Components/Paintings/grave" +excluded_nodes: "Components/Paintings/grave2" +# I'll be real, I have no idea what this is. +excluded_nodes: "Panels/panel_4" diff --git a/data/maps/the_great/metadata.txtpb b/data/maps/the_great/metadata.txtpb new file mode 100644 index 0000000..d3b3018 --- /dev/null +++ b/data/maps/the_great/metadata.txtpb @@ -0,0 +1,7 @@ +# This can't be shuffled because it is tilted. +excluded_nodes: "Components/Paintings/u" +# This can't be shuffled because it is on the ground. +excluded_nodes: "Components/blare" +# This is the fake HI panel that used to be in the Control Center entrance. It +# is neither visible nor accessible. +excluded_nodes: "Panels/General/entry_4" diff --git a/data/maps/the_great/rooms/Back Area.txtpb b/data/maps/the_great/rooms/Back Area.txtpb index 0a8b168..013b0e2 100644 --- a/data/maps/the_great/rooms/Back Area.txtpb +++ b/data/maps/the_great/rooms/Back Area.txtpb @@ -134,7 +134,7 @@ ports { } ports { name: "TOWER" - path: "Components/Warps/worldport10" + path: "Meshes/Blocks/Warps/worldport10" orientation: "south" required_door { name: "Tower Entrance" } # The reverse warp bypasses the door, so there needs to be two oneway connections. diff --git a/data/maps/the_great/rooms/Daedalus Entrance.txtpb b/data/maps/the_great/rooms/Daedalus Entrance.txtpb index c7e71f0..f4c159a 100644 --- a/data/maps/the_great/rooms/Daedalus Entrance.txtpb +++ b/data/maps/the_great/rooms/Daedalus Entrance.txtpb @@ -9,7 +9,7 @@ panels { } ports { name: "DAEDALUS" - path: "Components/Warps/worldport8" + path: "Meshes/Blocks/Warps/worldport8" orientation: "south" required_door { name: "Daedalus Entrance" } # The reverse warp bypasses the door, so there needs to be two oneway connections. diff --git a/data/maps/the_great/rooms/Main Area.txtpb b/data/maps/the_great/rooms/Main Area.txtpb index b562909..cf6285a 100644 --- a/data/maps/the_great/rooms/Main Area.txtpb +++ b/data/maps/the_great/rooms/Main Area.txtpb @@ -121,27 +121,27 @@ panels { } ports { name: "ENTRY" - path: "Components/Warps/worldport" + path: "Meshes/Blocks/Warps/worldport" orientation: "south" } ports { name: "KEEN" - path: "Components/Warps/worldport6" + path: "Meshes/Blocks/Warps/worldport6" orientation: "north" } ports { name: "ORB" - path: "Components/Warps/worldport3" + path: "Meshes/Blocks/Warps/worldport3" orientation: "north" } ports { name: "LINEAR" - path: "Components/Warps/worldport15" + path: "Meshes/Blocks/Warps/worldport15" orientation: "south" } ports { name: "DIGITAL" - path: "Components/Warps/worldport4" + path: "Meshes/Blocks/Warps/worldport4" orientation: "down" required_door { name: "Digital Entrance" } } diff --git a/data/maps/the_great/rooms/Purple Room.txtpb b/data/maps/the_great/rooms/Purple Room.txtpb index 8edc789..ff9bd9a 100644 --- a/data/maps/the_great/rooms/Purple Room.txtpb +++ b/data/maps/the_great/rooms/Purple Room.txtpb @@ -2,6 +2,6 @@ name: "Purple Room" display_name: "Main Area" ports { name: "DAEDALUS" - path: "Components/Warps/worldport18" + path: "Meshes/Blocks/Warps/worldport18" orientation: "north" } diff --git a/data/maps/the_great/rooms/Salmon Room.txtpb b/data/maps/the_great/rooms/Salmon Room.txtpb index 9e29860..96efd1a 100644 --- a/data/maps/the_great/rooms/Salmon Room.txtpb +++ b/data/maps/the_great/rooms/Salmon Room.txtpb @@ -2,6 +2,6 @@ name: "Salmon Room" display_name: "Main Area" ports { name: "BETWEEN" - path: "Components/Warps/worldport11" + path: "Meshes/Blocks/Warps/worldport11" orientation: "east" } diff --git a/data/maps/the_hinterlands/metadata.txtpb b/data/maps/the_hinterlands/metadata.txtpb new file mode 100644 index 0000000..b15ef2e --- /dev/null +++ b/data/maps/the_hinterlands/metadata.txtpb @@ -0,0 +1,32 @@ +# I'm not currently planning on shuffling anything in here. +excluded_nodes: "Components/Paintings/C" +excluded_nodes: "Components/Paintings/E" +excluded_nodes: "Components/Paintings/F/F_0" +excluded_nodes: "Components/Paintings/F/F_1" +excluded_nodes: "Components/Paintings/U" +excluded_nodes: "Components/Paintings/U_1" +excluded_nodes: "Components/Paintings/X" +excluded_nodes: "Components/Paintings/z2_1" +excluded_nodes: "Components/Paintings/z2_2" +excluded_nodes: "Components/Warps/worldport3_deco" +excluded_nodes: "Components/Warps/worldport3_deco2" +excluded_nodes: "Components/Warps/worldport3_deco3" +excluded_nodes: "Components/Warps/worldport3_deco4" +excluded_nodes: "Components/Warps/worldport3_deco5" +excluded_nodes: "Panels/G/court" +excluded_nodes: "Panels/J/red" +excluded_nodes: "Panels/K/no" +excluded_nodes: "Panels/L/trick" +excluded_nodes: "Panels/Misc/hi" +excluded_nodes: "Panels/Misc/hint" +excluded_nodes: "Panels/O/oh" +excluded_nodes: "Panels/P/hint" +excluded_nodes: "Panels/Q/gray" +excluded_nodes: "Panels/V/grin" +excluded_nodes: "Panels/Z/art" +excluded_nodes: "Panels/k2/place" +excluded_nodes: "Panels/m2/green" +excluded_nodes: "Panels/o2/orange2" +excluded_nodes: "Panels/p2/foxes" +excluded_nodes: "Panels/u2/open" +excluded_nodes: "Panels/v2/snipe" diff --git a/data/maps/the_impressive/metadata.txtpb b/data/maps/the_impressive/metadata.txtpb new file mode 100644 index 0000000..3d4e2b5 --- /dev/null +++ b/data/maps/the_impressive/metadata.txtpb @@ -0,0 +1,5 @@ +# These are apparently little eyes on the Green Eye panel pedestals? I don't +# think they're ever visible in gameplay. +excluded_nodes: "Meshes/eye" +excluded_nodes: "Meshes/eye2" +excluded_nodes: "Meshes/eye3" diff --git a/data/maps/the_orb/metadata.txtpb b/data/maps/the_orb/metadata.txtpb new file mode 100644 index 0000000..920422d --- /dev/null +++ b/data/maps/the_orb/metadata.txtpb @@ -0,0 +1,4 @@ +# These are inaccessible, and were probably just copy pasted from the other +# rooms. +excluded_nodes: "Components/Warps/worldport2" +excluded_nodes: "Components/Warps/worldport3" diff --git a/data/maps/the_orb/rooms/B Room.txtpb b/data/maps/the_orb/rooms/B Room.txtpb index 08dce6e..833c659 100644 --- a/data/maps/the_orb/rooms/B Room.txtpb +++ b/data/maps/the_orb/rooms/B Room.txtpb @@ -10,7 +10,6 @@ paintings { # TODO: This is too high up to enter. It's also a hint painting. exit_only: true } -# I believe worldport2 and worldport3 are completely inaccessible. # TODO: Should these two be independent for shuffling purposes, or always tied # to the Main Area's port? ports { -- cgit 1.4.1