From bd4850b2b5ba0d5b36a899a353ce30b6d1a4632d Mon Sep 17 00:00:00 2001 From: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com> Date: Sun, 17 Jul 2022 12:56:22 +0200 Subject: [PATCH] The Witness 0.3.4 features (#780) New options: Shuffle Doors: Many doors in the game will open on their own upon receiving an item ("key"). Variant - Shuffle Door/Control Panels: Many panels in the game that open doors or control devices in the world will be off until receiving their respective item ("key"). Shuffle Lasers: Lasers no longer activate by solving the laser panel, instead you will get an item that activates the laser. Shuffle Symbols: Now that there is something else to shuffle (doors / door panels), you can turn off Symbol Rando. Shuffle Postgame (replaces "Shuffle Hard"): The randomizer will now determine by your settings which panels are in the "postgame" - Meaning they can only be accessed after you can complete your win condition anyway. --- worlds/witness/Door_Shuffle.txt | 30 - worlds/witness/Early_UTM.txt | 5 - worlds/witness/Options.py | 51 +- worlds/witness/WitnessItems.txt | 173 ++ worlds/witness/WitnessLogic.txt | 1508 ++++++++++------- worlds/witness/__init__.py | 21 +- worlds/witness/items.py | 33 +- worlds/witness/locations.py | 148 +- worlds/witness/player_logic.py | 230 +-- worlds/witness/regions.py | 19 +- worlds/witness/rules.py | 53 +- .../{ => settings}/Disable_Unrandomized.txt | 16 +- .../witness/settings/Door_Panel_Shuffle.txt | 31 + worlds/witness/settings/Doors_Complex.txt | 201 +++ worlds/witness/settings/Doors_Max.txt | 212 +++ worlds/witness/settings/Doors_Simple.txt | 146 ++ worlds/witness/settings/Early_UTM.txt | 9 + worlds/witness/settings/Laser_Shuffle.txt | 12 + worlds/witness/settings/Symbol_Shuffle.txt | 14 + worlds/witness/static_logic.py | 106 +- worlds/witness/utils.py | 34 +- 21 files changed, 2058 insertions(+), 994 deletions(-) delete mode 100644 worlds/witness/Door_Shuffle.txt delete mode 100644 worlds/witness/Early_UTM.txt rename worlds/witness/{ => settings}/Disable_Unrandomized.txt (93%) create mode 100644 worlds/witness/settings/Door_Panel_Shuffle.txt create mode 100644 worlds/witness/settings/Doors_Complex.txt create mode 100644 worlds/witness/settings/Doors_Max.txt create mode 100644 worlds/witness/settings/Doors_Simple.txt create mode 100644 worlds/witness/settings/Early_UTM.txt create mode 100644 worlds/witness/settings/Laser_Shuffle.txt create mode 100644 worlds/witness/settings/Symbol_Shuffle.txt diff --git a/worlds/witness/Door_Shuffle.txt b/worlds/witness/Door_Shuffle.txt deleted file mode 100644 index 7d48064c..00000000 --- a/worlds/witness/Door_Shuffle.txt +++ /dev/null @@ -1,30 +0,0 @@ -100 - 0x01A54 - None - Glass Factory Entry Door -105 - 0x000B0 - 0x0343A - Door to Symmetry Island Lower -107 - 0x1C349 - 0x00076 - Door to Symmetry Island Upper -110 - 0x0C339 - 0x09F94 - Door to Desert Flood Light Room -111 - 0x1C2DF,0x1831E,0x1C260,0x1831C,0x1C2F3,0x1831D,0x1C2B1,0x1831B - None - Desert Flood Room Flood Controls -120 - 0x03678 - None - Quarry Mill Ramp Control -122 - 0x03679 - 0x014E8 - Quarry Mill Elevator Control -125 - 0x03852 - 0x034D4,0x021D5 - Quarry Boathouse Ramp Height Control -127 - 0x03858 - 0x021AE - Quarry Boathouse Ramp Horizontal Control -131 - 0x334DB,0x334DC - None - Shadows Door Timer -150 - 0x00B10 - None - Monastery Entry Door Left -151 - 0x00C92 - None - Monastery Entry Door Right -162 - 0x28998 - None - Town Door to RGB House -163 - 0x28A0D - 0x28998 - Town Door to Church -166 - 0x28A79 - None - Town Maze Panel (Drop-Down Staircase) -169 - 0x17F5F - None - Windmill Door -200 - 0x0288C - None - Treehouse First & Second Door -202 - 0x0A182 - None - Treehouse Third Door -205 - 0x2700B - None - Treehouse Laser House Door Timer -208 - 0x17CBC - None - Treehouse Shortcut Drop-Down Bridge -175 - 0x17CAB - 0x002C7 - Jungle Popup Wall -180 - 0x17C2E - None - Bunker Entry Door -183 - 0x0A099 - 0x09DAF - Inside Bunker Door to Bunker Proper -186 - 0x0A079 - None - Bunker Elevator Control -190 - 0x0056E - None - Swamp Entry Door -192 - 0x00609,0x18488 - 0x181A9 - Swamp Sliding Bridge -195 - 0x181F5 - None - Swamp Rotating Bridge -197 - 0x17C0A - None - Swamp Maze Control -300 - 0x0042D - None - Mountaintop River Shape Panel (Shortcut to Secret Area) -310 - 0x17CDF,0x17CC8,0x17CA6,0x09DB8,0x17C95,0x0A054 - None - Boat diff --git a/worlds/witness/Early_UTM.txt b/worlds/witness/Early_UTM.txt deleted file mode 100644 index 57da491e..00000000 --- a/worlds/witness/Early_UTM.txt +++ /dev/null @@ -1,5 +0,0 @@ -Event Items: -Shortcut to Secret Area Opens - 0x0042D - -Region Changes: -Inside Mountain Secret Area (Inside Mountain Secret Area) - Inside Mountain Path to Secret Area - 0x00FF8 - Main Island - 0x021D7 | 0x0042D - Main Island - 0x17CF2 \ No newline at end of file diff --git a/worlds/witness/Options.py b/worlds/witness/Options.py index e8b7e576..2bfe3f41 100644 --- a/worlds/witness/Options.py +++ b/worlds/witness/Options.py @@ -7,37 +7,48 @@ from Options import Toggle, DefaultOnToggle, Option, Range, Choice # "Play the randomizer in hardmode" # display_name = "Hard Mode" -# class UnlockSymbols(DefaultOnToggle): -# "All Puzzle symbols of a specific panel need to be unlocked before the panel can be used" -# display_name = "Unlock Symbols" - class DisableNonRandomizedPuzzles(DefaultOnToggle): - """Disable puzzles that cannot be randomized. - Non randomized puzzles are Shadows, Monastery, and Greenhouse. + """Disables puzzles that cannot be randomized. + This includes many puzzles that heavily involve the environment, such as Shadows, Monastery or Orchard. The lasers for those areas will be activated as you solve optional puzzles throughout the island.""" display_name = "Disable non randomized puzzles" class EarlySecretArea(Toggle): - """The Mountainside shortcut to the Mountain Secret Area is open from the start. + """Opens the Mountainside shortcut to the Mountain Secret Area from the start. (Otherwise known as "UTM", "Caves" or the "Challenge Area")""" display_name = "Early Secret Area" class ShuffleSymbols(DefaultOnToggle): - """You will need to unlock puzzle symbols as items to be able to solve the panels that contain those symbols.""" + """You will need to unlock puzzle symbols as items to be able to solve the panels that contain those symbols. + If you turn this off, there will be no progression items in the game unless you turn on door shuffle.""" display_name = "Shuffle Symbols" -class ShuffleDoors(Toggle): - """Many doors around the island will have their panels turned off initially. - You will need to find the items that power the panels to open those doors.""" +class ShuffleLasers(Toggle): + """If on, the 11 lasers are turned into items and will activate on their own upon receiving them. + Note: There is a visual bug that can occur with the Desert Laser. It does not affect gameplay - The Laser can still + be redirected as normal, for both applications of redirection.""" + display_name = "Shuffle Lasers" + + +class ShuffleDoors(Choice): + """If on, opening doors will require their respective "keys". + If set to "panels", those keys will unlock the panels on doors. + In "doors_simple" and "doors_complex", the doors will magically open by themselves upon receiving the key.""" display_name = "Shuffle Doors" + option_none = 0 + option_panels = 1 + option_doors_simple = 2 + option_doors_complex = 3 + option_max = 4 class ShuffleDiscardedPanels(Toggle): - """Discarded Panels will have items on them. - Solving certain Discarded Panels may still be necessary even if off!""" + """Add Discarded Panels into the location pool. + Solving certain Discarded Panels may still be necessary to beat the game, even if this is off.""" + display_name = "Shuffle Discarded Panels" @@ -52,9 +63,10 @@ class ShuffleUncommonLocations(Toggle): display_name = "Shuffle Uncommon Locations" -class ShuffleHardLocations(Toggle): - """Adds some harder locations into the game, e.g. Mountain Secret Area panels""" - display_name = "Shuffle Hard Locations" +class ShufflePostgame(Toggle): + """Adds locations into the pool that are guaranteed to be locked behind your goal. Use this if you don't play with + forfeit on victory.""" + display_name = "Shuffle Postgame" class VictoryCondition(Choice): @@ -103,16 +115,17 @@ class PuzzleSkipAmount(Range): the_witness_options: Dict[str, type] = { # "hard_mode": HardMode, + "shuffle_symbols": ShuffleSymbols, + "shuffle_doors": ShuffleDoors, + "shuffle_lasers": ShuffleLasers, "disable_non_randomized_puzzles": DisableNonRandomizedPuzzles, "shuffle_discarded_panels": ShuffleDiscardedPanels, "shuffle_vault_boxes": ShuffleVaultBoxes, "shuffle_uncommon": ShuffleUncommonLocations, - "shuffle_hard": ShuffleHardLocations, + "shuffle_postgame": ShufflePostgame, "victory_condition": VictoryCondition, "trap_percentage": TrapPercentage, "early_secret_area": EarlySecretArea, - # "shuffle_symbols": ShuffleSymbols, - # "shuffle_doors": ShuffleDoors, "mountain_lasers": MountainLasers, "challenge_lasers": ChallengeLasers, "puzzle_skip_amount": PuzzleSkipAmount, diff --git a/worlds/witness/WitnessItems.txt b/worlds/witness/WitnessItems.txt index 9d8831bb..5631ab2f 100644 --- a/worlds/witness/WitnessItems.txt +++ b/worlds/witness/WitnessItems.txt @@ -1,6 +1,8 @@ Progression: 0 - Dots 1 - Colored Dots +2 - Full Dots +3 - Invisible Dots 5 - Sound Dots 10 - Symmetry 20 - Triangles @@ -12,6 +14,7 @@ Progression: 61 - Stars + Same Colored Symbol 71 - Black/White Squares 72 - Colored Squares +80 - Arrows Usefuls: 101 - Functioning Brain - False @@ -23,3 +26,173 @@ Boosts: Traps: 600 - Slowness 610 - Power Surge + +Doors: +1100 - Glass Factory Entry Door (Panel) - 0x01A54 +1105 - Door to Symmetry Island Lower (Panel) - 0x000B0 +1107 - Door to Symmetry Island Upper (Panel) - 0x1C349 +1110 - Door to Desert Flood Light Room (Panel) - 0x0C339 +1111 - Desert Flood Room Flood Controls (Panel) - 0x1C2DF,0x1831E,0x1C260,0x1831C,0x1C2F3,0x1831D,0x1C2B1,0x1831B +1119 - Quarry Door to Mill (Panel) - 0x01E5A,0x01E59 +1120 - Quarry Mill Ramp Controls (Panel) - 0x03678,0x03676 +1122 - Quarry Mill Elevator Controls (Panel) - 0x03679,0x03675 +1125 - Quarry Boathouse Ramp Height Control (Panel) - 0x03852 +1127 - Quarry Boathouse Ramp Horizontal Control (Panel) - 0x03858 +1131 - Shadows Door Timer (Panel) - 0x334DB,0x334DC +1150 - Monastery Entry Door Left (Panel) - 0x00B10 +1151 - Monastery Entry Door Right (Panel) - 0x00C92 +1162 - Town Door to RGB House (Panel) - 0x28998 +1163 - Town Door to Church (Panel) - 0x28A0D +1166 - Town Maze Panel (Drop-Down Staircase) (Panel) - 0x28A79 +1169 - Windmill Door (Panel) - 0x17F5F +1200 - Treehouse First & Second Doors (Panel) - 0x0288C,0x02886 +1202 - Treehouse Third Door (Panel) - 0x0A182 +1205 - Treehouse Laser House Door Timer (Panel) - 0x2700B,0x334DC +1208 - Treehouse Shortcut Drop-Down Bridge (Panel) - 0x17CBC +1175 - Jungle Popup Wall (Panel) - 0x17CAB +1180 - Bunker Entry Door (Panel) - 0x17C2E +1183 - Inside Bunker Door to Bunker Proper (Panel) - 0x0A099 +1186 - Bunker Elevator Control (Panel) - 0x0A079 +1190 - Swamp Entry Door (Panel) - 0x0056E +1192 - Swamp Sliding Bridge (Panel) - 0x00609,0x18488 +1195 - Swamp Rotating Bridge (Panel) - 0x181F5 +1197 - Swamp Maze Control (Panel) - 0x17C0A +1310 - Boat - 0x17CDF,0x17CC8,0x17CA6,0x09DB8,0x17C95,0x0A054 + +1400 - Caves Mountain Shortcut - 0x2D73F + +1500 - Symmetry Laser - 0x00509 +1501 - Desert Laser - 0x012FB,0x01317 +1502 - Quarry Laser - 0x01539 +1503 - Shadows Laser - 0x181B3 +1504 - Keep Laser - 0x014BB +1505 - Monastery Laser - 0x17C65 +1506 - Town Laser - 0x032F9 +1507 - Jungle Laser - 0x00274 +1508 - Bunker Laser - 0x0C2B2 +1509 - Swamp Laser - 0x00BF6 +1510 - Treehouse Laser - 0x028A4 + +1600 - Outside Tutorial Optional Door - 0x03BA2 +1603 - Outside Tutorial Outpost Entry Door - 0x0A170 +1606 - Outside Tutorial Outpost Exit Door - 0x04CA3 +1609 - Glass Factory Entry Door - 0x01A29 +1612 - Glass Factory Back Wall - 0x0D7ED +1615 - Symmetry Island Lower Door - 0x17F3E +1618 - Symmetry Island Upper Door - 0x18269 +1619 - Orchard Middle Gate - 0x03307 +1620 - Orchard Final Gate - 0x03313 +1621 - Desert Door to Flood Light Room - 0x09FEE +1624 - Desert Door to Pond Room - 0x0C2C3 +1627 - Desert Door to Water Levels Room - 0x0A24B +1630 - Desert Door to Elevator Room - 0x0C316 +1633 - Quarry Main Entry 1 - 0x09D6F +1636 - Quarry Main Entry 2 - 0x17C07 +1639 - Quarry Door to Mill - 0x02010 +1642 - Quarry Mill Side Door - 0x275FF +1645 - Quarry Mill Rooftop Shortcut - 0x17CE8 +1648 - Quarry Mill Stairs - 0x0368A +1651 - Quarry Boathouse Boat Staircase - 0x2769B,0x27163 +1653 - Quarry Boathouse First Barrier - 0x17C50 +1654 - Quarry Boathouse Shortcut - 0x3865F +1656 - Shadows Timed Door - 0x19B24 +1657 - Shadows Laser Room Right Door - 0x194B2 +1660 - Shadows Laser Room Left Door - 0x19665 +1663 - Shadows Barrier to Quarry - 0x19865,0x0A2DF +1666 - Shadows Barrier to Ledge - 0x1855B,0x19ADE +1669 - Keep Hedge Maze 1 Exit Door - 0x01954 +1672 - Keep Pressure Plates 1 Exit Door - 0x01BEC +1675 - Keep Hedge Maze 2 Shortcut - 0x018CE +1678 - Keep Hedge Maze 2 Exit Door - 0x019D8 +1681 - Keep Hedge Maze 3 Shortcut - 0x019B5 +1684 - Keep Hedge Maze 3 Exit Door - 0x019E6 +1687 - Keep Hedge Maze 4 Shortcut - 0x0199A +1690 - Keep Hedge Maze 4 Exit Door - 0x01A0E +1693 - Keep Pressure Plates 2 Exit Door - 0x01BEA +1696 - Keep Pressure Plates 3 Exit Door - 0x01CD5 +1699 - Keep Pressure Plates 4 Exit Door - 0x01D40 +1702 - Keep Shortcut to Shadows - 0x09E3D +1705 - Keep Tower Shortcut - 0x04F8F +1708 - Monastery Shortcut - 0x0364E +1711 - Monastery Inner Door - 0x0C128 +1714 - Monastery Outer Door - 0x0C153 +1717 - Monastery Door to Garden - 0x03750 +1718 - Town Cargo Box Door - 0x0A0C9 +1720 - Town Wooden Roof Staircase - 0x034F5 +1723 - Town Tinted Door to RGB House - 0x28A61 +1726 - Town Door to Church - 0x03BB0 +1729 - Town Maze Staircase - 0x28AA2 +1732 - Town Windmill Door - 0x1845B +1735 - Town RGB House Staircase - 0x2897B +1738 - Town Tower Blue Panels Door - 0x27798 +1741 - Town Tower Lattice Door - 0x27799 +1744 - Town Tower Environmental Set Door - 0x2779A +1747 - Town Tower Wooden Roof Set Door - 0x2779C +1750 - Theater Entry Door - 0x17F88 +1753 - Theater Exit Door Left - 0x0A16D +1756 - Theater Exit Door Right - 0x3CCDF +1759 - Jungle Bamboo Shortcut to River - 0x3873B +1760 - Jungle Popup Wall - 0x1475B +1762 - River Shortcut to Monastery Garden - 0x0CF2A +1765 - Bunker Bunker Entry Door - 0x0C2A4 +1768 - Bunker Tinted Glass Door - 0x17C79 +1771 - Bunker Door to Ultraviolet Room - 0x0C2A3 +1774 - Bunker Door to Elevator - 0x0A08D +1777 - Swamp Entry Door - 0x00C1C +1780 - Swamp Door to Broken Shapers - 0x184B7 +1783 - Swamp Platform Shortcut Door - 0x38AE6 +1786 - Swamp Cyan Water Pump - 0x04B7F +1789 - Swamp Door to Rotated Shapers - 0x18507 +1792 - Swamp Red Water Pump - 0x183F2 +1795 - Swamp Red Underwater Exit - 0x305D5 +1798 - Swamp Blue Water Pump - 0x18482 +1801 - Swamp Purple Water Pump - 0x0A1D6 +1804 - Swamp Near Laser Shortcut - 0x2D880 +1807 - Treehouse First Door - 0x0C309 +1810 - Treehouse Second Door - 0x0C310 +1813 - Treehouse Beyond Yellow Bridge Door - 0x0A181 +1816 - Treehouse Drawbridge - 0x0C32D +1819 - Treehouse Timed Door to Laser House - 0x0C323 +1822 - Inside Mountain First Layer Exit Door - 0x09E54 +1825 - Inside Mountain Second Layer Staircase Near - 0x09FFB +1828 - Inside Mountain Second Layer Exit Door - 0x09EDD +1831 - Inside Mountain Second Layer Staircase Far - 0x09E07 +1834 - Inside Mountain Giant Puzzle Exit Door - 0x09F89 +1840 - Inside Mountain Door to Final Room - 0x0C141 +1843 - Inside Mountain Bottom Layer Rock - 0x17F33 +1846 - Inside Mountain Door to Secret Area - 0x2D77D +1849 - Caves Pillar Door - 0x019A5 +1855 - Caves Swamp Shortcut - 0x2D859 +1858 - Challenge Entry Door - 0x0A19A +1861 - Challenge Door to Theater Walkway - 0x0348A +1864 - Theater Walkway Door to Windmill Interior - 0x27739 +1867 - Theater Walkway Door to Desert Elevator Room - 0x27263 +1870 - Theater Walkway Door to Town - 0x09E87 + +1903 - Outside Tutorial Outpost Doors - 0x03BA2,0x0A170,0x04CA3 +1906 - Symmetry Island Doors - 0x17F3E,0x18269 +1909 - Orchard Gates - 0x03313,0x03307 +1912 - Desert Doors - 0x09FEE,0x0C2C3,0x0A24B,0x0C316 +1915 - Quarry Main Entry - 0x09D6F +1918 - Quarry Mill Shortcuts - 0x17C07,0x17CE8,0x0368A +1921 - Quarry Boathouse Barriers - 0x17C50,0x3865F +1924 - Shadows Laser Room Door - 0x194B2,0x19665 +1927 - Shadows Barriers - 0x19865,0x0A2DF,0x1855B,0x19ADE +1930 - Keep Hedge Maze Doors - 0x01954,0x018CE,0x019D8,0x019B5,0x019E6,0x0199A,0x01A0E +1933 - Keep Pressure Plates Doors - 0x01BEC,0x01BEA,0x01CD5,0x01D40 +1936 - Keep Shortcuts - 0x09E3D,0x04F8F +1939 - Monastery Entry Door - 0x0C128,0x0C153 +1942 - Monastery Shortcuts - 0x0364E,0x03750 +1945 - Town Doors - 0x0A0C9,0x034F5,0x28A61,0x03BB0,0x28AA2,0x1845B,0x2897B +1948 - Town Tower Doors - 0x27798,0x27799,0x2779A,0x2779C +1951 - Theater Exit Door - 0x0A16D,0x3CCDF +1954 - Jungle & River Shortcuts - 0x3873B,0x0CF2A +1957 - Bunker Doors - 0x0C2A4,0x17C79,0x0C2A3,0x0A08D +1960 - Swamp Doors - 0x00C1C,0x184B7,0x38AE6,0x18507 +1963 - Swamp Water Pumps - 0x04B7F,0x183F2,0x305D5,0x18482,0x0A1D6 +1966 - Treehouse Entry Doors - 0x0C309,0x0C310,0x0A181 +1975 - Inside Mountain Second Layer Stairs & Doors - 0x09FFB,0x09EDD,0x09E07 +1978 - Inside Mountain Bottom Layer Doors to Caves - 0x17F33,0x2D77D +1981 - Caves Doors to Challenge - 0x019A5,0x0A19A +1984 - Caves Exits to Main Island - 0x2D859,0x2D73F +1987 - Theater Walkway Doors - 0x27739,0x27263,0x09E87 \ No newline at end of file diff --git a/worlds/witness/WitnessLogic.txt b/worlds/witness/WitnessLogic.txt index e4e63dc4..350f72b6 100644 --- a/worlds/witness/WitnessLogic.txt +++ b/worlds/witness/WitnessLogic.txt @@ -1,712 +1,924 @@ -First Hallway (First Hallway) - Entry - True: -0x00064 (Straight) - True - True -0x00182 (Bend) - 0x00064 - True +First Hallway (First Hallway) - Entry - True - Tutorial - 0x00182: +158000 - 0x00064 (Straight) - True - True +158001 - 0x00182 (Bend) - 0x00064 - True -Tutorial (Tutorial) - First Hallway - 0x00182: -0x00293 (Front Center) - True - True -0x00295 (Center Left) - 0x00293 - True -0x002C2 (Front Left) - 0x00295 - True -0x0A3B5 (Back Left) - True - True -0x0A3B2 (Back Right) - True - True -0x03629 (Gate Open) - 0x002C2 & 0x0A3B5 & 0x0A3B2 - True -0x03505 (Gate Close) - 0x2FAF6 - True -0x0C335 (Pillar) - True - Triangles - True -0x0C373 (Patio Floor) - 0x0C335 - Dots +Tutorial (Tutorial) - Outside Tutorial - 0x03629: +158002 - 0x00293 (Front Center) - True - True +158003 - 0x00295 (Center Left) - 0x00293 - True +158004 - 0x002C2 (Front Left) - 0x00295 - True +158005 - 0x0A3B5 (Back Left) - True - True +158006 - 0x0A3B2 (Back Right) - True - True +158007 - 0x03629 (Gate Open) - 0x002C2 & 0x0A3B5 & 0x0A3B2 - True +158008 - 0x03505 (Gate Close) - 0x2FAF6 - True +158009 - 0x0C335 (Pillar) - True - Triangles - True +158010 - 0x0C373 (Patio Floor) - 0x0C335 - Dots -Outside Tutorial (Outside Tutorial) - Tutorial - 0x03629: -0x033D4 (Vault) - True - Dots & Squares & Black/White Squares -0x03481 (Vault Box) - 0x033D4 - True -0x0A171 (Optional Door 1) - 0x0A3B5 - Dots -0x17CFB (Discard) - 0x0A171 - Triangles -0x04CA4 (Optional Door 2) - 0x0A171 - Dots & Squares & Black/White Squares -0x0005D (Dots Introduction 1) - True - Dots -0x0005E (Dots Introduction 2) - 0x0005D - Dots -0x0005F (Dots Introduction 3) - 0x0005E - Dots -0x00060 (Dots Introduction 4) - 0x0005F - Dots -0x00061 (Dots Introduction 5) - 0x00060 - Dots -0x018AF (Squares Introduction 1) - True - Squares & Black/White Squares -0x0001B (Squares Introduction 2) - 0x018AF - Squares & Black/White Squares -0x012C9 (Squares Introduction 3) - 0x0001B - Squares & Black/White Squares -0x0001C (Squares Introduction 4) - 0x012C9 - Squares & Black/White Squares -0x0001D (Squares Introduction 5) - 0x0001C - Squares & Black/White Squares -0x0001E (Squares Introduction 6) - 0x0001D - Squares & Black/White Squares -0x0001F (Squares Introduction 7) - 0x0001E - Squares & Black/White Squares -0x00020 (Squares Introduction 8) - 0x0001F - Squares & Black/White Squares -0x00021 (Squares Introduction 9) - 0x00020 - Squares & Black/White Squares +Outside Tutorial (Outside Tutorial) - Outside Tutorial Path To Outpost - 0x03BA2: +158650 - 0x033D4 (Vault) - True - Dots & Squares & Black/White Squares +158651 - 0x03481 (Vault Box) - 0x033D4 - True +158013 - 0x0005D (Dots Introduction 1) - True - Dots +158014 - 0x0005E (Dots Introduction 2) - 0x0005D - Dots +158015 - 0x0005F (Dots Introduction 3) - 0x0005E - Dots +158016 - 0x00060 (Dots Introduction 4) - 0x0005F - Dots +158017 - 0x00061 (Dots Introduction 5) - 0x00060 - Dots +158018 - 0x018AF (Squares Introduction 1) - True - Squares & Black/White Squares +158019 - 0x0001B (Squares Introduction 2) - 0x018AF - Squares & Black/White Squares +158020 - 0x012C9 (Squares Introduction 3) - 0x0001B - Squares & Black/White Squares +158021 - 0x0001C (Squares Introduction 4) - 0x012C9 - Squares & Black/White Squares +158022 - 0x0001D (Squares Introduction 5) - 0x0001C - Squares & Black/White Squares +158023 - 0x0001E (Squares Introduction 6) - 0x0001D - Squares & Black/White Squares +158024 - 0x0001F (Squares Introduction 7) - 0x0001E - Squares & Black/White Squares +158025 - 0x00020 (Squares Introduction 8) - 0x0001F - Squares & Black/White Squares +158026 - 0x00021 (Squares Introduction 9) - 0x00020 - Squares & Black/White Squares +Door - 0x03BA2 (Optional Door 1) - 0x0A3B5 + +Outside Tutorial Path To Outpost (Outside Tutorial) - Outside Tutorial Outpost - 0x0A170: +158011 - 0x0A171 (Door to Outpost Panel) - True - Dots +Door - 0x0A170 (Door to Outpost) - 0x0A171 + +Outside Tutorial Outpost (Outside Tutorial) - Outside Tutorial - 0x04CA3: +158012 - 0x04CA4 (Exit Door from Outpost Panel) - True - Dots & Squares & Black/White Squares +Door - 0x04CA3 (Exit Door from Outpost) - 0x04CA4 +158600 - 0x17CFB (Discard) - True - Triangles Main Island () - Outside Tutorial - True: -Outside Glass Factory (Glass Factory) - Main Island - True: -0x01A54 (Entry Door) - True - Symmetry -0x3C12B (Discard) - True - Triangles +Outside Glass Factory (Glass Factory) - Main Island - True - Inside Glass Factory - 0x01A29: +158027 - 0x01A54 (Entry Door Panel) - True - Symmetry +Door - 0x01A29 (Entry Door) - 0x01A54 +158601 - 0x3C12B (Discard) - True - Triangles -Inside Glass Factory (Glass Factory) - Outside Glass Factory - 0x01A54: -0x00086 (Vertical Symmetry 1) - True - Symmetry -0x00087 (Vertical Symmetry 2) - 0x00086 - Symmetry -0x00059 (Vertical Symmetry 3) - 0x00087 - Symmetry -0x00062 (Vertical Symmetry 4) - 0x00059 - Symmetry -0x0005C (Vertical Symmetry 5) - 0x00062 - Symmetry -0x0008D (Rotational Symmetry 1) - 0x0005C - Symmetry -0x00081 (Rotational Symmetry 2) - 0x0008D - Symmetry -0x00083 (Rotational Symmetry 3) - 0x00081 - Symmetry -0x00084 (Melting 1) - 0x00083 - Symmetry -0x00082 (Melting 2) - 0x00084 - Symmetry -0x0343A (Melting 3) - 0x00082 - Symmetry -0x17CC8 (Boat Spawn) - 0x0005C - Boat +Inside Glass Factory (Glass Factory) - Inside Glass Factory Behind Back Wall - 0x0D7ED: +158028 - 0x00086 (Vertical Symmetry 1) - True - Symmetry +158029 - 0x00087 (Vertical Symmetry 2) - 0x00086 - Symmetry +158030 - 0x00059 (Vertical Symmetry 3) - 0x00087 - Symmetry +158031 - 0x00062 (Vertical Symmetry 4) - 0x00059 - Symmetry +158032 - 0x0005C (Vertical Symmetry 5) - 0x00062 - Symmetry +158033 - 0x0008D (Rotational Symmetry 1) - 0x0005C - Symmetry +158034 - 0x00081 (Rotational Symmetry 2) - 0x0008D - Symmetry +158035 - 0x00083 (Rotational Symmetry 3) - 0x00081 - Symmetry +158036 - 0x00084 (Melting 1) - 0x00083 - Symmetry +158037 - 0x00082 (Melting 2) - 0x00084 - Symmetry +158038 - 0x0343A (Melting 3) - 0x00082 - Symmetry +Door - 0x0D7ED (Back Wall) - 0x0005C -Outside Symmetry Island (Symmetry Island) - Main Island - True: -0x000B0 (Door to Symmetry Island Lower) - 0x0343A - Dots +Inside Glass Factory Behind Back Wall (Glass Factory) - Boat - 0x17CC8: +158039 - 0x17CC8 (Boat Spawn) - 0x17CA6 | 0x17CDF | 0x09DB8 | 0x17C95 - Boat -Symmetry Island Lower (Symmetry Island) - Outside Symmetry Island - 0x000B0: -0x00022 (Black Dots 1) - True - Symmetry & Dots -0x00023 (Black Dots 2) - 0x00022 - Symmetry & Dots -0x00024 (Black Dots 3) - 0x00023 - Symmetry & Dots -0x00025 (Black Dots 4) - 0x00024 - Symmetry & Dots -0x00026 (Black Dots 5) - 0x00025 - Symmetry & Dots -0x0007C (Colored Dots 1) - 0x00026 - Symmetry & Colored Dots -0x0007E (Colored Dots 2) - 0x0007C - Symmetry & Colored Dots -0x00075 (Colored Dots 3) - 0x0007E - Symmetry & Colored Dots -0x00073 (Colored Dots 4) - 0x00075 - Symmetry & Colored Dots -0x00077 (Colored Dots 5) - 0x00073 - Symmetry & Colored Dots -0x00079 (Colored Dots 6) - 0x00077 - Symmetry & Colored Dots -0x00065 (Fading Lines 1) - 0x00079 - Symmetry & Colored Dots -0x0006D (Fading Lines 2) - 0x00065 - Symmetry & Colored Dots -0x00072 (Fading Lines 3) - 0x0006D - Symmetry & Colored Dots -0x0006F (Fading Lines 4) - 0x00072 - Symmetry & Colored Dots -0x00070 (Fading Lines 5) - 0x0006F - Symmetry & Colored Dots -0x00071 (Fading Lines 6) - 0x00070 - Symmetry & Colored Dots -0x00076 (Fading Lines 7) - 0x00071 - Symmetry & Colored Dots -0x009B8 (Scenery Outlines 1) - True - Symmetry & Environment -0x003E8 (Scenery Outlines 2) - 0x009B8 - Symmetry & Environment -0x00A15 (Scenery Outlines 3) - 0x003E8 - Symmetry & Environment -0x00B53 (Scenery Outlines 4) - 0x00A15 - Symmetry & Environment -0x00B8D (Scenery Outlines 5) - 0x00B53 - Symmetry & Environment -0x1C349 (Door to Symmetry Island Upper) - 0x00076 - Symmetry & Dots +Outside Symmetry Island (Symmetry Island) - Main Island - True - Symmetry Island Lower - 0x17F3E: +158040 - 0x000B0 (Door to Symmetry Island Lower Panel) - 0x0343A - Dots +Door - 0x17F3E (Door to Symmetry Island Lower) - 0x000B0 -Symmetry Island Upper (Symmetry Island) - Symmetry Island Lower - 0x1C349: -0x00A52 (Yellow 1) - True - Symmetry & Colored Dots -0x00A57 (Yellow 2) - 0x00A52 - Symmetry & Colored Dots -0x00A5B (Yellow 3) - 0x00A57 - Symmetry & Colored Dots -0x00A61 (Blue 1) - 0x00A52 - Symmetry & Colored Dots -0x00A64 (Blue 2) - 0x00A61 & 0x00A52 - Symmetry & Colored Dots -0x00A68 (Blue 3) - 0x00A64 & 0x00A57 - Symmetry & Colored Dots -0x0360D (Laser) - 0x00A68 - True +Symmetry Island Lower (Symmetry Island) - Symmetry Island Upper - 0x18269: +158041 - 0x00022 (Black Dots 1) - True - Symmetry & Dots +158042 - 0x00023 (Black Dots 2) - 0x00022 - Symmetry & Dots +158043 - 0x00024 (Black Dots 3) - 0x00023 - Symmetry & Dots +158044 - 0x00025 (Black Dots 4) - 0x00024 - Symmetry & Dots +158045 - 0x00026 (Black Dots 5) - 0x00025 - Symmetry & Dots +158046 - 0x0007C (Colored Dots 1) - 0x00026 - Symmetry & Colored Dots +158047 - 0x0007E (Colored Dots 2) - 0x0007C - Symmetry & Colored Dots +158048 - 0x00075 (Colored Dots 3) - 0x0007E - Symmetry & Colored Dots +158049 - 0x00073 (Colored Dots 4) - 0x00075 - Symmetry & Colored Dots +158050 - 0x00077 (Colored Dots 5) - 0x00073 - Symmetry & Colored Dots +158051 - 0x00079 (Colored Dots 6) - 0x00077 - Symmetry & Colored Dots +158052 - 0x00065 (Fading Lines 1) - 0x00079 - Symmetry & Colored Dots +158053 - 0x0006D (Fading Lines 2) - 0x00065 - Symmetry & Colored Dots +158054 - 0x00072 (Fading Lines 3) - 0x0006D - Symmetry & Colored Dots +158055 - 0x0006F (Fading Lines 4) - 0x00072 - Symmetry & Colored Dots +158056 - 0x00070 (Fading Lines 5) - 0x0006F - Symmetry & Colored Dots +158057 - 0x00071 (Fading Lines 6) - 0x00070 - Symmetry & Colored Dots +158058 - 0x00076 (Fading Lines 7) - 0x00071 - Symmetry & Colored Dots +158059 - 0x009B8 (Scenery Outlines 1) - True - Symmetry & Environment +158060 - 0x003E8 (Scenery Outlines 2) - 0x009B8 - Symmetry & Environment +158061 - 0x00A15 (Scenery Outlines 3) - 0x003E8 - Symmetry & Environment +158062 - 0x00B53 (Scenery Outlines 4) - 0x00A15 - Symmetry & Environment +158063 - 0x00B8D (Scenery Outlines 5) - 0x00B53 - Symmetry & Environment +158064 - 0x1C349 (Door to Symmetry Island Upper Panel) - 0x00076 - Symmetry & Dots +Door - 0x18269 (Door to Symmetry Island Upper) - 0x1C349 -Orchard (Orchard) - Main Island - True: -0x00143 (Apple Tree 1) - True - Environment -0x0003B (Apple Tree 2) - 0x00143 - Environment -0x00055 (Apple Tree 3) - 0x0003B - Environment -0x032F7 (Apple Tree 4) - 0x00055 - Environment -0x032FF (Apple Tree 5) - 0x032F7 - Environment +Symmetry Island Upper (Symmetry Island): +158065 - 0x00A52 (Yellow 1) - True - Symmetry & Colored Dots +158066 - 0x00A57 (Yellow 2) - 0x00A52 - Symmetry & Colored Dots +158067 - 0x00A5B (Yellow 3) - 0x00A57 - Symmetry & Colored Dots +158068 - 0x00A61 (Blue 1) - 0x00A52 - Symmetry & Colored Dots +158069 - 0x00A64 (Blue 2) - 0x00A61 & 0x00A52 - Symmetry & Colored Dots +158070 - 0x00A68 (Blue 3) - 0x00A64 & 0x00A57 - Symmetry & Colored Dots +158700 - 0x0360D (Laser Panel) - 0x00A68 - True +Laser - 0x00509 (Laser) - 0x0360D - True -Desert Outside (Desert) - Main Island - True: -0x0CC7B (Vault) - True - Dots & Shapers & Rotated Shapers & Negative Shapers -0x0339E (Vault Box) - 0x0CC7B - True -0x17CE7 (Discard) - True - Triangles -0x00698 (Sun Reflection 1) - True - Reflection -0x0048F (Sun Reflection 2) - 0x00698 - Reflection -0x09F92 (Sun Reflection 3) - 0x0048F & 0x09FA0 - Reflection -0x09FA0 (Reflection 3 Control) - 0x0048F - True -0x0A036 (Sun Reflection 4) - 0x09F92 - Reflection -0x09DA6 (Sun Reflection 5) - 0x09F92 - Reflection -0x0A049 (Sun Reflection 6) - 0x09F92 - Reflection -0x0A053 (Sun Reflection 7) - 0x0A036 & 0x09DA6 & 0x0A049 - Reflection -0x09F94 (Sun Reflection 8) - 0x0A053 & 0x09F86 - Reflection -0x09F86 (Reflection 8 Control) - 0x0A053 - True -0x0C339 (Door to Desert Flood Light Room) - 0x09F94 - True +Orchard (Orchard) - Main Island - True - Orchard Beyond First Gate - 0x03307: +158071 - 0x00143 (Apple Tree 1) - True - Environment +158072 - 0x0003B (Apple Tree 2) - 0x00143 - Environment +158073 - 0x00055 (Apple Tree 3) - 0x0003B - Environment +Door - 0x03307 (Mid Gate) - 0x00055 -Desert Floodlight Room (Desert) - Desert Outside - 0x0C339: -0x09FAA (Light Control) - True - True -0x00422 (Artificial Light Reflection 1) - 0x09FAA - Reflection -0x006E3 (Artificial Light Reflection 2) - 0x09FAA - Reflection -0x0A02D (Artificial Light Reflection 3) - 0x09FAA & 0x00422 & 0x006E3 - Reflection +Orchard Beyond First Gate (Orchard) - Orchard End - 0x03313: +158074 - 0x032F7 (Apple Tree 4) - 0x00055 - Environment +158075 - 0x032FF (Apple Tree 5) - 0x032F7 - Environment +Door - 0x03313 (Final Gate) - 0x032FF -Desert Pond Room (Desert) - Desert Floodlight Room - 0x0A02D: -0x00C72 (Pond Reflection 1) - True - Reflection -0x0129D (Pond Reflection 2) - 0x00C72 - Reflection -0x008BB (Pond Reflection 3) - 0x0129D - Reflection -0x0078D (Pond Reflection 4) - 0x008BB - Reflection -0x18313 (Pond Reflection 5) - 0x0078D - Reflection -0x0A249 (Door to Desert Water Levels Room) - 0x18313 - Reflection +Orchard End (Orchard): -Desert Water Levels Room (Desert) - Desert Pond Room - 0x0A249: -0x1C2DF (Reduce Water Level Far Left) - True - True -0x1831E (Reduce Water Level Far Right) - True - True -0x1C260 (Reduce Water Level Near Left) - True - True -0x1831C (Reduce Water Level Near Right) - True - True -0x1C2F3 (Raise Water Level Far Left) - True - True -0x1831D (Raise Water Level Far Right) - True - True -0x1C2B1 (Raise Water Level Near Left) - True - True -0x1831B (Raise Water Level Near Right) - True - True -0x04D18 (Flood Reflection 1) - 0x1C260 & 0x1831C - Reflection -0x01205 (Flood Reflection 2) - 0x04D18 & 0x1C260 & 0x1831C - Reflection -0x181AB (Flood Reflection 3) - 0x01205 & 0x1C260 & 0x1831C - Reflection -0x0117A (Flood Reflection 4) - 0x181AB & 0x1C260 & 0x1831C - Reflection -0x17ECA (Flood Reflection 5) - 0x0117A & 0x1C260 & 0x1831C - Reflection -0x18076 (Flood Reflection 6) - 0x17ECA & 0x1C260 & 0x1831C - Reflection +Desert Outside (Desert) - Main Island - True - Desert Floodlight Room - 0x09FEE: +158652 - 0x0CC7B (Vault) - True - Dots & Shapers & Rotated Shapers & Negative Shapers +158653 - 0x0339E (Vault Box) - 0x0CC7B - True +158602 - 0x17CE7 (Discard) - True - Triangles +158076 - 0x00698 (Sun Reflection 1) - True - Reflection +158077 - 0x0048F (Sun Reflection 2) - 0x00698 - Reflection +158078 - 0x09F92 (Sun Reflection 3) - 0x0048F & 0x09FA0 - Reflection +158079 - 0x09FA0 (Reflection 3 Control) - 0x0048F - True +158080 - 0x0A036 (Sun Reflection 4) - 0x09F92 - Reflection +158081 - 0x09DA6 (Sun Reflection 5) - 0x09F92 - Reflection +158082 - 0x0A049 (Sun Reflection 6) - 0x09F92 - Reflection +158083 - 0x0A053 (Sun Reflection 7) - 0x0A036 & 0x09DA6 & 0x0A049 - Reflection +158084 - 0x09F94 (Sun Reflection 8) - 0x0A053 & 0x09F86 - Reflection +158085 - 0x09F86 (Reflection 8 Control) - 0x0A053 - True +158086 - 0x0C339 (Door to Desert Flood Light Room Panel) - 0x09F94 - True +Door - 0x09FEE (Door to Desert Flood Light Room) - 0x0C339 - True -Desert Elevator Room (Desert) - Desert Water Levels Room - 0x18076: -0x17C31 (Final Transparent Reflection) - True - Reflection -0x012D7 (Final Reflection) - 0x17C31 & 0x0A015 - Reflection -0x0A015 (Final Reflection Control) - 0x17C31 - True -0x0A15C (Final Bent Reflection 1) - True - Reflection -0x09FFF (Final Bent Reflection 2) - 0x0A15C - Reflection -0x0A15F (Final Bent Reflection 3) - 0x09FFF - Reflection -0x03608 (Laser) - 0x012D7 & 0x0A15F - True +Desert Floodlight Room (Desert) - Desert Pond Room - 0x0C2C3: +158087 - 0x09FAA (Light Control) - True - True +158088 - 0x00422 (Artificial Light Reflection 1) - 0x09FAA - Reflection +158089 - 0x006E3 (Artificial Light Reflection 2) - 0x09FAA - Reflection +158090 - 0x0A02D (Artificial Light Reflection 3) - 0x09FAA & 0x00422 & 0x006E3 - Reflection +Door - 0x0C2C3 (Door to Pond Room) - 0x0A02D -Outside Quarry (Quarry) - Main Island - True: -0x09E57 (Door to Quarry 1) - True - Squares & Black/White Squares -0x17C09 (Door to Quarry 2) - 0x09E57 - Shapers -0x17CC4 (Elevator Control) - 0x0367C - Dots & Eraser +Desert Pond Room (Desert) - Desert Water Levels Room - 0x0A24B: +158091 - 0x00C72 (Pond Reflection 1) - True - Reflection +158092 - 0x0129D (Pond Reflection 2) - 0x00C72 - Reflection +158093 - 0x008BB (Pond Reflection 3) - 0x0129D - Reflection +158094 - 0x0078D (Pond Reflection 4) - 0x008BB - Reflection +158095 - 0x18313 (Pond Reflection 5) - 0x0078D - Reflection +158096 - 0x0A249 (Door to Water Levels Room Panel) - 0x18313 - Reflection +Door - 0x0A24B (Door to Water Levels Room) - 0x0A249 -Quarry (Quarry) - Outside Quarry - 0x17C09 - Quarry Mill - 0x275ED - Quarry Mill - 0x17CAC - Shadows Ledge - 0x198BF: -0x01E5A (Door to Mill Left) - True - Squares & Black/White Squares -0x01E59 (Door to Mill Right) - True - Dots -0x17CF0 (Discard) - True - Triangles -0x03612 (Laser) - 0x0A3D0 & 0x0367C - Eraser & Shapers +Desert Water Levels Room (Desert) - Desert Elevator Room - 0x0C316: +158097 - 0x1C2DF (Reduce Water Level Far Left) - True - True +158098 - 0x1831E (Reduce Water Level Far Right) - True - True +158099 - 0x1C260 (Reduce Water Level Near Left) - True - True +158100 - 0x1831C (Reduce Water Level Near Right) - True - True +158101 - 0x1C2F3 (Raise Water Level Far Left) - True - True +158102 - 0x1831D (Raise Water Level Far Right) - True - True +158103 - 0x1C2B1 (Raise Water Level Near Left) - True - True +158104 - 0x1831B (Raise Water Level Near Right) - True - True +158105 - 0x04D18 (Flood Reflection 1) - 0x1C260 & 0x1831C - Reflection +158106 - 0x01205 (Flood Reflection 2) - 0x04D18 & 0x1C260 & 0x1831C - Reflection +158107 - 0x181AB (Flood Reflection 3) - 0x01205 & 0x1C260 & 0x1831C - Reflection +158108 - 0x0117A (Flood Reflection 4) - 0x181AB & 0x1C260 & 0x1831C - Reflection +158109 - 0x17ECA (Flood Reflection 5) - 0x0117A & 0x1C260 & 0x1831C - Reflection +158110 - 0x18076 (Flood Reflection 6) - 0x17ECA & 0x1C260 & 0x1831C - Reflection +Door - 0x0C316 (Door to Elevator Room) - 0x18076 -Quarry Mill (Quarry Mill) - Quarry - 0x01E59 & 0x01E5A: -0x275ED (Ground Floor Shortcut Door) - True - True -0x03678 (Lower Ramp Control) - True - Dots & Eraser -0x00E0C (Eraser and Dots 1) - 0x03678 - Dots & Eraser -0x01489 (Eraser and Dots 2) - 0x00E0C - Dots & Eraser -0x0148A (Eraser and Dots 3) - 0x01489 - Dots & Eraser -0x014D9 (Eraser and Dots 4) - 0x0148A - Dots & Eraser -0x014E7 (Eraser and Dots 5) - 0x014D9 - Dots & Eraser -0x014E8 (Eraser and Dots 6) - 0x014E7 - Dots & Eraser -0x03679 (Lower Lift Control) - 0x014E8 - Dots & Eraser -0x03675 (Upper Ramp Control) - 0x03679 - Dots & Eraser -0x03676 (Upper Lift Control) - 0x03679 - Dots & Eraser -0x00557 (Eraser and Squares 1) - 0x03679 - Squares & Colored Squares & Eraser -0x005F1 (Eraser and Squares 2) - 0x00557 - Squares & Colored Squares & Eraser -0x00620 (Eraser and Squares 3) - 0x005F1 - Squares & Colored Squares & Eraser -0x009F5 (Eraser and Squares 4) - 0x00620 - Squares & Colored Squares & Eraser -0x0146C (Eraser and Squares 5) - 0x009F5 - Squares & Colored Squares & Eraser -0x3C12D (Eraser and Squares 6) - 0x0146C - Squares & Colored Squares & Eraser -0x03686 (Eraser and Squares 7) - 0x3C12D - Squares & Colored Squares & Eraser -0x014E9 (Eraser and Squares 8) - 0x03686 - Squares & Colored Squares & Eraser -0x03677 (Stair Control) - 0x014E8 - Squares & Colored Squares & Eraser -0x3C125 (Big Squares & Dots & Eraser) - 0x0367C - Squares & Black/White Squares & Dots & Eraser -0x0367C (Small Squares & Dots & Eraser) - 0x014E9 - Squares & Colored Squares & Dots & Eraser -0x17CAC (Door to Outside Quarry Stairs) - True - True +Desert Elevator Room (Desert) - Desert Lowest Level Inbetween Shortcuts - 0x012FB: +158111 - 0x17C31 (Final Transparent Reflection) - True - Reflection +158113 - 0x012D7 (Final Reflection) - 0x17C31 & 0x0A015 - Reflection +158114 - 0x0A015 (Final Reflection Control) - 0x17C31 - True +158115 - 0x0A15C (Final Bent Reflection 1) - True - Reflection +158116 - 0x09FFF (Final Bent Reflection 2) - 0x0A15C - Reflection +158117 - 0x0A15F (Final Bent Reflection 3) - 0x09FFF - Reflection +158701 - 0x03608 (Laser Panel) - 0x012D7 & 0x0A15F - True +Laser - 0x012FB (Laser) - 0x03608 -Quarry Boathouse (Quarry Boathouse) - Quarry - True: -0x034D4 (Intro Stars) - True - Stars -0x021D5 (Intro Shapers) - True - Shapers & Rotated Shapers -0x03852 (Ramp Height Control) - 0x034D4 & 0x021D5 - Rotated Shapers -0x021B3 (Eraser and Shapers 1) - 0x03852 - Shapers & Eraser -0x021B4 (Eraser and Shapers 2) - 0x021B3 - Shapers & Eraser -0x021B0 (Eraser and Shapers 3) - 0x021B4 - Shapers & Eraser -0x021AF (Eraser and Shapers 4) - 0x021B0 - Shapers & Eraser -0x021AE (Eraser and Shapers 5) - 0x021AF - Shapers & Eraser & Broken Shapers -0x03858 (Ramp Horizontal Control) - 0x021AE - Shapers & Eraser -0x38663 (Shortcut Door) - 0x03858 - True -0x021B5 (Stars and Colored Eraser 1) - 0x03858 - Stars & Stars + Same Colored Symbol & Eraser -0x021B6 (Stars and Colored Eraser 2) - 0x021B5 - Stars & Stars + Same Colored Symbol & Eraser -0x021B7 (Stars and Colored Eraser 3) - 0x021B6 - Stars & Stars + Same Colored Symbol & Eraser -0x021BB (Stars and Colored Eraser 4) - 0x021B7 - Stars & Stars + Same Colored Symbol & Eraser -0x09DB5 (Stars and Colored Eraser 5) - 0x021BB - Stars & Stars + Same Colored Symbol & Eraser -0x09DB1 (Stars and Colored Eraser 6) - 0x09DB5 - Stars & Stars + Same Colored Symbol & Eraser -0x3C124 (Stars and Colored Eraser 7) - 0x09DB1 - Stars & Stars + Same Colored Symbol & Eraser -0x09DB3 (Stars & Eraser & Shapers 1) - 0x3C124 - Stars & Eraser & Shapers -0x09DB4 (Stars & Eraser & Shapers 2) - 0x09DB3 - Stars & Eraser & Shapers -0x275FA (Hook Control) - 0x03858 - Shapers & Eraser -0x17CA6 (Boat Spawn) - True - Boat -0x0A3CB (Stars & Eraser & Shapers 3) - 0x09DB4 - Stars & Eraser & Shapers -0x0A3CC (Stars & Eraser & Shapers 4) - 0x0A3CB - Stars & Eraser & Shapers -0x0A3D0 (Stars & Eraser & Shapers 5) - 0x0A3CC - Stars & Eraser & Shapers +Desert Lowest Level Inbetween Shortcuts (Desert): -Shadows (Shadows) - Main Island - True - Keep Glass Plates - 0x09E49: -0x334DB (Door Timer Outside) - True - True -0x0AC74 (Lower Avoid 6) - 0x0A8DC - Shadows Avoid -0x0AC7A (Lower Avoid 7) - 0x0AC74 - Shadows Avoid -0x0A8E0 (Lower Avoid 8) - 0x0AC7A - Shadows Avoid -0x386FA (Environmental Avoid 1) - 0x0A8E0 - Shadows Avoid & Environment -0x1C33F (Environmental Avoid 2) - 0x386FA - Shadows Avoid & Environment -0x196E2 (Environmental Avoid 3) - 0x1C33F - Shadows Avoid & Environment -0x1972A (Environmental Avoid 4) - 0x196E2 - Shadows Avoid & Environment -0x19809 (Environmental Avoid 5) - 0x1972A - Shadows Avoid & Environment -0x19806 (Environmental Avoid 6) - 0x19809 - Shadows Avoid & Environment -0x196F8 (Environmental Avoid 7) - 0x19806 - Shadows Avoid & Environment -0x1972F (Environmental Avoid 8) - 0x196F8 - Shadows Avoid & Environment -0x19797 (Follow 1) - 0x0A8E0 - Shadows Follow -0x1979A (Follow 2) - 0x19797 - Shadows Follow -0x197E0 (Follow 3) - 0x1979A - Shadows Follow -0x197E8 (Follow 4) - 0x197E0 - Shadows Follow -0x197E5 (Follow 5) - 0x197E8 - Shadows Follow -0x19650 (Laser) - 0x197E5 & 0x196F8 - Shadows Avoid & Shadows Follow +Outside Quarry (Quarry) - Main Island - True - Quarry Between Entry Doors - 0x09D6F: +158118 - 0x09E57 (Door to Quarry 1 Panel) - True - Squares & Black/White Squares +158120 - 0x17CC4 (Elevator Control) - 0x0367C - Dots & Eraser +158603 - 0x17CF0 (Discard) - True - Triangles +158702 - 0x03612 (Laser Panel) - 0x0A3D0 & 0x0367C - Eraser & Shapers +Laser - 0x01539 (Laser) - 0x03612 +Door - 0x09D6F (Door to Quarry 1) - 0x09E57 -Shadows Ledge (Shadows) - Shadows - 0x334DB | 0x334DC | 0x0A8DC: -0x334DC (Door Timer Inside) - True - True -0x198B5 (Lower Avoid 1) - True - Shadows Avoid -0x198BD (Lower Avoid 2) - 0x198B5 - Shadows Avoid -0x198BF (Lower Avoid 3) - 0x198BD & 0x334DC - Shadows Avoid -0x19771 (Lower Avoid 4) - 0x198BF - Shadows Avoid -0x0A8DC (Lower Avoid 5) - 0x19771 - Shadows Avoid +Quarry Between Entry Doors (Quarry) - Quarry - 0x17C07: +158119 - 0x17C09 (Door to Quarry 2 Panel) - True - Shapers +Door - 0x17C07 (Door to Quarry 2) - 0x17C09 -Keep (Keep) - Main Island - True: +Quarry (Quarry) - Quarry Mill Ground Floor - 0x02010: +158121 - 0x01E5A (Door to Mill Left) - True - Squares & Black/White Squares +158122 - 0x01E59 (Door to Mill Right) - True - Dots +Door - 0x02010 (Door to Mill) - 0x01E59 & 0x01E5A -Keep Hedges (Keep) - Keep - True: -0x00139 (Hedge Maze 1) - True - Environment -0x019DC (Hedge Maze 2) - 0x00139 - Environment -0x019E7 (Hedge Maze 3) - 0x019DC - Environment & Sound -0x01A0F (Hedge Maze 4) - 0x019E7 - Environment +Quarry Mill Ground Floor (Quarry Mill) - Quarry - 0x275FF - Quarry Mill Middle Floor - 0x03678 - Outside Quarry - 0x17CE8: +158123 - 0x275ED (Ground Floor Shortcut Door Panel) - True - True +Door - 0x275FF (Ground Floor Shortcut Door) - 0x275ED +158124 - 0x03678 (Lower Ramp Control) - True - Dots & Eraser +158145 - 0x17CAC (Door to Outside Quarry Stairs Panel) - True - True +Door - 0x17CE8 (Door to Outside Quarry Stairs) - 0x17CAC -Keep Glass Plates (Keep) - Keep - True - Keep Tower - 0x0361B: -0x0A3A8 (Reset Pressure Plates 1) - True - True -0x033EA (Pressure Plates 1) - 0x0A3A8 - Pressure Plates & Dots -0x0A3B9 (Reset Pressure Plates 2) - 0x033EA - True -0x01BE9 (Pressure Plates 2) - 0x033EA & 0x0A3B9 - Pressure Plates & Stars & Stars + Same Colored Symbol & Squares & Black/White Squares -0x0A3BB (Reset Pressure Plates 3) - 0x0A3A8 - True -0x01CD3 (Pressure Plates 3) - 0x0A3A8 & 0x0A3BB - Pressure Plates & Shapers & Squares & Black/White Squares & Colored Squares -0x0A3AD (Reset Pressure Plates 4) - 0x01CD3 - True -0x01D3F (Pressure Plates 4) - 0x01CD3 & 0x0A3AD - Pressure Plates & Shapers & Dots & Symmetry -0x17D27 (Discard) - 0x01CD3 - Triangles -0x09E49 (Shortcut to Shadows) - 0x01CD3 - True +Quarry Mill Middle Floor (Quarry Mill) - Quarry Mill Ground Floor - 0x03675 - Quarry Mill Upper Floor - 0x03679: +158125 - 0x00E0C (Eraser and Dots 1) - True - Dots & Eraser +158126 - 0x01489 (Eraser and Dots 2) - 0x00E0C - Dots & Eraser +158127 - 0x0148A (Eraser and Dots 3) - 0x01489 - Dots & Eraser +158128 - 0x014D9 (Eraser and Dots 4) - 0x0148A - Dots & Eraser +158129 - 0x014E7 (Eraser and Dots 5) - 0x014D9 - Dots & Eraser +158130 - 0x014E8 (Eraser and Dots 6) - 0x014E7 - Dots & Eraser +158131 - 0x03679 (Lower Lift Control) - 0x014E8 - Dots & Eraser -Shipwreck (Shipwreck) - Keep Glass Plates - 0x033EA: -0x00AFB (Vault) - True - Symmetry & Sound & Sound Dots & Colored Dots -0x03535 (Vault Box) - 0x00AFB - True -0x17D28 (Discard) - True - Triangles +Quarry Mill Upper Floor (Quarry Mill) - Quarry Mill Middle Floor - 0x03676 & 0x03679 - Quarry Mill Ground Floor - 0x0368A: +158132 - 0x03676 (Upper Ramp Control) - True - Dots & Eraser +158133 - 0x03675 (Upper Lift Control) - True - Dots & Eraser +158134 - 0x00557 (Eraser and Squares 1) - True - Squares & Colored Squares & Eraser +158135 - 0x005F1 (Eraser and Squares 2) - 0x00557 - Squares & Colored Squares & Eraser +158136 - 0x00620 (Eraser and Squares 3) - 0x005F1 - Squares & Colored Squares & Eraser +158137 - 0x009F5 (Eraser and Squares 4) - 0x00620 - Squares & Colored Squares & Eraser +158138 - 0x0146C (Eraser and Squares 5) - 0x009F5 - Squares & Colored Squares & Eraser +158139 - 0x3C12D (Eraser and Squares 6) - 0x0146C - Squares & Colored Squares & Eraser +158140 - 0x03686 (Eraser and Squares 7) - 0x3C12D - Squares & Colored Squares & Eraser +158141 - 0x014E9 (Eraser and Squares 8) - 0x03686 - Squares & Colored Squares & Eraser +158142 - 0x03677 (Stair Control) - True - Squares & Colored Squares & Eraser +Door - 0x0368A (Stairs) - 0x03677 +158143 - 0x3C125 (Big Squares & Dots & Eraser) - 0x0367C - Squares & Black/White Squares & Dots & Eraser +158144 - 0x0367C (Small Squares & Dots & Eraser) - 0x014E9 - Squares & Colored Squares & Dots & Eraser -Keep Tower (Keep) - Keep Hedges - 0x01A0F - Keep Glass Plates - 0x01D3F: -0x0361B (Shortcut to Keep Glass Plates) - True - True -0x0360E (Laser Hedges) - 0x01A0F - Environment & Sound -0x03317 (Laser Pressure Plates) - 0x01D3F - Shapers & Squares & Black/White Squares & Colored Squares & Stars & Stars + Same Colored Symbol & Dots +Quarry Boathouse (Quarry Boathouse) - Quarry - True - Quarry Boathouse Upper Front - 0x03852 - Quarry Boathouse Behind Staircase - 0x2769B: +158146 - 0x034D4 (Intro Stars) - True - Stars +158147 - 0x021D5 (Intro Shapers) - True - Shapers & Rotated Shapers +158148 - 0x03852 (Ramp Height Control) - 0x034D4 & 0x021D5 - Rotated Shapers +158166 - 0x17CA6 (Boat Spawn) - True - Boat +Door - 0x2769B (Boat Staircase) - 0x17CA6 +Door - 0x27163 (Boat Staircase Invis Barrier) - 0x17CA6 -Outside Monastery (Monastery) - Main Island - True: -0x03713 (Shortcut) - True - True -0x00B10 (Door Open Left) - True - True -0x00C92 (Door Open Right) - True - True -0x00290 (Rhombic Avoid 1) - 0x09D9B - Environment -0x00038 (Rhombic Avoid 2) - 0x09D9B & 0x00290 - Environment -0x00037 (Rhombic Avoid 3) - 0x09D9B & 0x00038 - Environment -0x17CA4 (Laser) - 0x193A6 - True +Quarry Boathouse Behind Staircase (Quarry Boathouse) - Boat - 0x17CA6: -Inside Monastery (Monastery) - Outside Monastery - 0x00B10 & 0x00C92: -0x09D9B (Overhead Door Control) - True - Dots -0x193A7 (Branch Avoid 1) - 0x00037 - Environment -0x193AA (Branch Avoid 2) - 0x193A7 - Environment -0x193AB (Branch Follow 1) - 0x193AA - Environment -0x193A6 (Branch Follow 2) - 0x193AB - Environment +Quarry Boathouse Upper Front (Quarry Boathouse) - Quarry Boathouse Upper Middle - 0x17C50: +158149 - 0x021B3 (Eraser and Shapers 1) - True - Shapers & Eraser +158150 - 0x021B4 (Eraser and Shapers 2) - 0x021B3 - Shapers & Eraser +158151 - 0x021B0 (Eraser and Shapers 3) - 0x021B4 - Shapers & Eraser +158152 - 0x021AF (Eraser and Shapers 4) - 0x021B0 - Shapers & Eraser +158153 - 0x021AE (Eraser and Shapers 5) - 0x021AF - Shapers & Eraser & Broken Shapers +Door - 0x17C50 (Boathouse Barrier 1) - 0x021AE -Monastery Garden (Monastery) - Outside Monastery - 0x00037 - Outside Jungle River - 0x17CAA: +Quarry Boathouse Upper Middle (Quarry Boathouse) - Quarry Boathouse Upper Back - 0x03858: +158154 - 0x03858 (Ramp Horizontal Control) - True - Shapers & Eraser -Town (Town) - Main Island - True - Theater - 0x0A168 | 0x33AB2: -0x0A054 (Boat Summon) - True - Boat -0x0A0C8 (Cargo Box) - True - Squares & Black/White Squares & Shapers -0x17D01 (Cargo Box Discard) - 0x0A0C8 - Triangles -0x09F98 (Desert Laser Redirect) - True - True -0x18590 (Tree Outlines) - True - Symmetry & Environment -0x28AE3 (Vines Shadows Follow) - 0x18590 - Shadows Follow & Environment -0x28938 (Four-way Apple Tree) - 0x28AE3 - Environment -0x079DF (Triple Environmental Puzzle) - 0x28938 - Shadows Avoid & Environment & Reflection -0x28B39 (Hexagonal Reflection) - 0x079DF & 0x2896A - Reflection -0x28998 (Tinted Door to RGB House) - True - Stars & Rotated Shapers -0x28A0D (Door to Church) - 0x28998 - Stars & RGB & Environment -0x28A69 (Square Avoid) - 0x28A0D - Environment -0x28A79 (Maze Stair Control) - True - Environment -0x2896A (Maze Rooftop Bridge Control) - 0x28A79 - Shapers -0x17C71 (Rooftop Discard) - 0x2896A - Triangles -0x28AC7 (Symmetry Squares 1) - 0x2896A - Symmetry & Squares & Black/White Squares -0x28AC8 (Symmetry Squares 2) - 0x28AC7 - Symmetry & Squares & Black/White Squares -0x28ACA (Symmetry Squares 3 + Dots) - 0x28AC8 - Symmetry & Squares & Black/White Squares & Dots -0x28ACB (Symmetry Squares 4 + Dots) - 0x28ACA - Symmetry & Squares & Black/White Squares & Dots -0x28ACC (Symmetry Squares 5 + Dots) - 0x28ACB - Symmetry & Squares & Black/White Squares & Dots -0x2899C (Full Dot Grid Shapers 1) - True - Rotated Shapers & Dots -0x28A33 (Full Dot Grid Shapers 2) - 0x2899C - Shapers & Dots -0x28ABF (Full Dot Grid Shapers 3) - 0x28A33 - Shapers & Rotated Shapers & Dots -0x28AC0 (Full Dot Grid Shapers 4) - 0x28ABF - Rotated Shapers & Dots -0x28AC1 (Full Dot Grid Shapers 5) - 0x28AC0 - Rotated Shapers & Dots -0x28AD9 (Shapers & Dots & Eraser) - 0x28AC1 - Rotated Shapers & Dots & Eraser -0x17F5F (Windmill Door) - True - Dots +Quarry Boathouse Upper Back (Quarry Boathouse) - Quarry Boathouse Upper Middle - 0x3865F: +158155 - 0x38663 (Shortcut Door Panel) - True - True +Door - 0x3865F (Shortcut Door) - 0x38663 +158156 - 0x021B5 (Stars and Colored Eraser 1) - True - Stars & Stars + Same Colored Symbol & Eraser +158157 - 0x021B6 (Stars and Colored Eraser 2) - 0x021B5 - Stars & Stars + Same Colored Symbol & Eraser +158158 - 0x021B7 (Stars and Colored Eraser 3) - 0x021B6 - Stars & Stars + Same Colored Symbol & Eraser +158159 - 0x021BB (Stars and Colored Eraser 4) - 0x021B7 - Stars & Stars + Same Colored Symbol & Eraser +158160 - 0x09DB5 (Stars and Colored Eraser 5) - 0x021BB - Stars & Stars + Same Colored Symbol & Eraser +158161 - 0x09DB1 (Stars and Colored Eraser 6) - 0x09DB5 - Stars & Stars + Same Colored Symbol & Eraser +158162 - 0x3C124 (Stars and Colored Eraser 7) - 0x09DB1 - Stars & Stars + Same Colored Symbol & Eraser +158163 - 0x09DB3 (Stars & Eraser & Shapers 1) - 0x3C124 - Stars & Eraser & Shapers +158164 - 0x09DB4 (Stars & Eraser & Shapers 2) - 0x09DB3 - Stars & Eraser & Shapers +158165 - 0x275FA (Hook Control) - True - Shapers & Eraser +158167 - 0x0A3CB (Stars & Eraser & Shapers 3) - 0x09DB4 - Stars & Eraser & Shapers +158168 - 0x0A3CC (Stars & Eraser & Shapers 4) - 0x0A3CB - Stars & Eraser & Shapers +158169 - 0x0A3D0 (Stars & Eraser & Shapers 5) - 0x0A3CC - Stars & Eraser & Shapers -RGB House (Town) - Town - 0x28998: -0x034E4 (Sound Room Left) - True - Sound & Sound Waves -0x034E3 (Sound Room Right) - True - Sound & Sound Dots -0x334D8 (RGB Control) - 0x034E4 & 0x034E3 - Rotated Shapers & RGB & Squares & Colored Squares -0x03C0C (RGB Squares) - 0x334D8 - RGB & Squares & Colored Squares & Black/White Squares -0x03C08 (RGB Stars) - 0x334D8 - RGB & Stars +Shadows (Shadows) - Main Island - True - Shadows Ledge - 0x19B24 - Shadows Laser Room - 0x194B2 & 0x19665: +158170 - 0x334DB (Door Timer Outside) - True - True +Door - 0x19B24 (Timed Door) - 0x334DB +158171 - 0x0AC74 (Lower Avoid 6) - 0x0A8DC - Shadows Avoid +158172 - 0x0AC7A (Lower Avoid 7) - 0x0AC74 - Shadows Avoid +158173 - 0x0A8E0 (Lower Avoid 8) - 0x0AC7A - Shadows Avoid +158174 - 0x386FA (Environmental Avoid 1) - 0x0A8E0 - Shadows Avoid & Environment +158175 - 0x1C33F (Environmental Avoid 2) - 0x386FA - Shadows Avoid & Environment +158176 - 0x196E2 (Environmental Avoid 3) - 0x1C33F - Shadows Avoid & Environment +158177 - 0x1972A (Environmental Avoid 4) - 0x196E2 - Shadows Avoid & Environment +158178 - 0x19809 (Environmental Avoid 5) - 0x1972A - Shadows Avoid & Environment +158179 - 0x19806 (Environmental Avoid 6) - 0x19809 - Shadows Avoid & Environment +158180 - 0x196F8 (Environmental Avoid 7) - 0x19806 - Shadows Avoid & Environment +158181 - 0x1972F (Environmental Avoid 8) - 0x196F8 - Shadows Avoid & Environment +Door - 0x194B2 (Laser Room Right Door) - 0x1972F +158182 - 0x19797 (Follow 1) - 0x0A8E0 - Shadows Follow +158183 - 0x1979A (Follow 2) - 0x19797 - Shadows Follow +158184 - 0x197E0 (Follow 3) - 0x1979A - Shadows Follow +158185 - 0x197E8 (Follow 4) - 0x197E0 - Shadows Follow +158186 - 0x197E5 (Follow 5) - 0x197E8 - Shadows Follow +Door - 0x19665 (Laser Room Left Door) - 0x197E5 -Town Tower Top (Town) - Town - 0x28A69 & 0x28B39 & 0x28ACC & 0x28AD9: -0x032F5 (Laser) - True - True +Shadows Ledge (Shadows) - Shadows - 0x1855B - Quarry - 0x19865 & 0x0A2DF: +158187 - 0x334DC (Door Timer Inside) - True - True +158188 - 0x198B5 (Lower Avoid 1) - True - Shadows Avoid +158189 - 0x198BD (Lower Avoid 2) - 0x198B5 - Shadows Avoid +158190 - 0x198BF (Lower Avoid 3) - 0x198BD & 0x334DC & 0x19B24 - Shadows Avoid +Door - 0x19865 (Barrier to Quarry) - 0x198BF +Door - 0x0A2DF (Barrier to Quarry 2) - 0x198BF +158191 - 0x19771 (Lower Avoid 4) - 0x198BF - Shadows Avoid +158192 - 0x0A8DC (Lower Avoid 5) - 0x19771 - Shadows Avoid +Door - 0x1855B (Barrier to Shadows) - 0x0A8DC +Door - 0x19ADE (Barrier to Shadows 2) - 0x0A8DC -Windmill Interior (Windmill) - Town - 0x17F5F: -0x17D02 (Turn Control) - True - Dots -0x17F89 (Door to Front of Theater) - True - Squares & Black/White Squares +Shadows Laser Room (Shadows): +158703 - 0x19650 (Laser Panel) - True - Shadows Avoid & Shadows Follow +Laser - 0x181B3 (Laser) - 0x19650 -Theater (Theater) - Windmill Interior - 0x17F89: -0x00815 (Video Input) - True - True -0x03553 (Tutorial Video) - 0x00815 & 0x03481 - True -0x03552 (Desert Video) - 0x00815 & 0x0339E - True -0x0354E (Jungle Video) - 0x00815 & 0x03702 - True -0x03549 (Challenge Video) - 0x00815 & 0x2FAF6 - True -0x0354F (Shipwreck Video) - 0x00815 & 0x03535 - True -0x03545 (Mountain Video) - 0x00815 & 0x03542 - True -0x0A168 (Door to Cargo Box Left) - True - Squares & Black/White Squares & Eraser -0x33AB2 (Door to Cargo Box Right) - True - Squares & Black/White Squares & Shapers -0x17CF7 (Discard) - True - Triangles +Keep (Keep) - Main Island - True - Keep 2nd Maze - 0x01954 - Keep 2nd Pressure Plate - 0x01BEC: +158193 - 0x00139 (Hedge Maze 1) - True - Environment +158197 - 0x0A3A8 (Reset Pressure Plates 1) - True - True +158198 - 0x033EA (Pressure Plates 1) - 0x0A3A8 - Pressure Plates & Dots +Door - 0x01954 (Hedge Maze 1 Exit Door) - 0x00139 +Door - 0x01BEC (Pressure Plates 1 Exit Door) - 0x033EA -Jungle (Jungle) - Main Island - True: -0x17CDF (Shore Boat Spawn) - True - Boat -0x17F9B (Discard) - True - Triangles -0x002C4 (Waves 1) - True - Sound & Sound Waves -0x00767 (Waves 2) - 0x002C4 - Sound & Sound Waves -0x002C6 (Waves 3) - 0x00767 - Sound & Sound Waves -0x0070E (Waves 4) - 0x002C6 - Sound & Sound Waves -0x0070F (Waves 5) - 0x0070E - Sound & Sound Waves -0x0087D (Waves 6) - 0x0070F - Sound & Sound Waves -0x002C7 (Waves 7) - 0x0087D - Sound & Sound Waves -0x17CAB (Popup Wall Control) - 0x002C7 - True -0x0026D (Popup Wall 1) - 0x17CAB - Sound & Sound Dots -0x0026E (Popup Wall 2) - 0x0026D - Sound & Sound Dots -0x0026F (Popup Wall 3) - 0x0026E - Sound & Sound Dots -0x00C3F (Popup Wall 4) - 0x0026F - Sound & Sound Dots -0x00C41 (Popup Wall 5) - 0x00C3F - Sound & Sound Dots -0x014B2 (Popup Wall 6) - 0x00C41 - Sound & Sound Dots -0x03616 (Laser) - 0x014B2 - True -0x337FA (Shortcut to River) - True - True +Keep 2nd Maze (Keep) - Keep - 0x018CE - Keep 3rd Maze - 0x019D8: +Door - 0x018CE (Hedge Maze 2 Shortcut) - 0x00139 +158194 - 0x019DC (Hedge Maze 2) - True - Environment +Door - 0x019D8 (Hedge Maze 2 Exit Door) - 0x019DC -Outside Jungle River (River) - Main Island - True - Jungle - 0x337FA: -0x17CAA (Rhombic Avoid to Monastery Garden) - True - Environment -0x15ADD (Vault) - True - Environment & Black/White Squares & Dots -0x03702 (Vault Box) - 0x15ADD - True +Keep 3rd Maze (Keep) - Keep - 0x019B5 - Keep 4th Maze - 0x019E6: +Door - 0x019B5 (Hedge Maze 3 Shortcut) - 0x019DC +158195 - 0x019E7 (Hedge Maze 3) - True - Environment & Sound +Door - 0x019E6 (Hedge Maze 3 Exit Door) - 0x019E7 -Outside Bunker (Bunker) - Main Island - True - Inside Bunker - 0x0A079: -0x17C2E (Door to Bunker) - True - Squares & Black/White Squares -0x09DE0 (Laser) - 0x0A079 - True +Keep 4th Maze (Keep) - Keep - 0x0199A - Keep Tower - 0x01A0E: +Door - 0x0199A (Hedge Maze 4 Shortcut) - 0x019E7 +158196 - 0x01A0F (Hedge Maze 4) - True - Environment +Door - 0x01A0E (Hedge Maze 4 Exit Door) - 0x01A0F -Inside Bunker (Bunker) - Outside Bunker - 0x17C2E: -0x09F7D (Drawn Squares 1) - True - Squares & Colored Squares -0x09FDC (Drawn Squares 2) - 0x09F7D - Squares & Colored Squares & Black/White Squares -0x09FF7 (Drawn Squares 3) - 0x09FDC - Squares & Colored Squares & Black/White Squares -0x09F82 (Drawn Squares 4) - 0x09FF7 - Squares & Colored Squares & Black/White Squares -0x09FF8 (Drawn Squares 5) - 0x09F82 - Squares & Colored Squares & Black/White Squares -0x09D9F (Drawn Squares 6) - 0x09FF8 - Squares & Colored Squares & Black/White Squares -0x09DA1 (Drawn Squares 7) - 0x09D9F - Squares & Colored Squares -0x09DA2 (Drawn Squares 8) - 0x09DA1 - Squares & Colored Squares -0x09DAF (Drawn Squares 9) - 0x09DA2 - Squares & Colored Squares -0x0A099 (Door to Bunker Proper) - 0x09DAF - True -0x0A010 (Drawn Squares through Tinted Glass 1) - 0x0A099 - Squares & Colored Squares & RGB & Environment -0x0A01B (Drawn Squares through Tinted Glass 2) - 0x0A010 - Squares & Colored Squares & Black/White Squares & RGB & Environment -0x0A01F (Drawn Squares through Tinted Glass 3) - 0x0A01B - Squares & Colored Squares & Black/White Squares & RGB & Environment -0x34BC5 (Drop-Down Door Open) - 0x0A01F - True -0x34BC6 (Drop-Down Door Close) - 0x34BC5 - True -0x17E63 (Drop-Down Door Squares 1) - 0x0A01F & 0x34BC5 - Squares & Colored Squares & RGB & Environment -0x17E67 (Drop-Down Door Squares 2) - 0x17E63 & 0x34BC6 - Squares & Colored Squares & Black/White Squares & RGB -0x0A079 (Elevator Control) - 0x17E67 - Squares & Colored Squares & Black/White Squares & RGB +Keep 2nd Pressure Plate (Keep) - Keep 3rd Pressure Plate - 0x01BEA: +158199 - 0x0A3B9 (Reset Pressure Plates 2) - True - True +158200 - 0x01BE9 (Pressure Plates 2) - 0x0A3B9 - Pressure Plates & Stars & Stars + Same Colored Symbol & Squares & Black/White Squares +Door - 0x01BEA (Pressure Plates 2 Exit Door) - 0x01BE9 -Outside Swamp (Swamp) - Main Island - True: -0x0056E (Entry Door) - True - Shapers +Keep 3rd Pressure Plate (Keep) - Keep 4th Pressure Plate - 0x01CD5: +158201 - 0x0A3BB (Reset Pressure Plates 3) - True - True +158202 - 0x01CD3 (Pressure Plates 3) - 0x0A3BB - Pressure Plates & Shapers & Squares & Black/White Squares & Colored Squares +Door - 0x01CD5 (Pressure Plates 3 Exit Door) - 0x01CD3 -Swamp Entry Area (Swamp) - Outside Swamp - 0x0056E: -0x00469 (Seperatable Shapers 1) - True - Shapers -0x00472 (Seperatable Shapers 2) - 0x00469 - Shapers -0x00262 (Seperatable Shapers 3) - 0x00472 - Shapers -0x00474 (Seperatable Shapers 4) - 0x00262 - Shapers -0x00553 (Seperatable Shapers 5) - 0x00474 - Shapers -0x0056F (Seperatable Shapers 6) - 0x00553 - Shapers -0x00390 (Combinable Shapers 1) - 0x0056F - Shapers -0x010CA (Combinable Shapers 2) - 0x00390 - Shapers -0x00983 (Combinable Shapers 3) - 0x010CA - Shapers -0x00984 (Combinable Shapers 4) - 0x00983 - Shapers -0x00986 (Combinable Shapers 5) - 0x00984 - Shapers -0x00985 (Combinable Shapers 6) - 0x00986 - Shapers -0x00987 (Combinable Shapers 7) - 0x00985 - Shapers -0x181A9 (Combinable Shapers 8) - 0x00987 - Shapers -0x00609 (Sliding Bridge) - 0x181A9 - Shapers +Keep 4th Pressure Plate (Keep) - Keep - 0x09E3D - Keep Tower - 0x01D40: +158203 - 0x0A3AD (Reset Pressure Plates 4) - True - True +158204 - 0x01D3F (Pressure Plates 4) - 0x0A3AD - Pressure Plates & Shapers & Dots & Symmetry +Door - 0x01D40 (Pressure Plates 4 Exit Door) - 0x01D3F +158604 - 0x17D27 (Discard) - True - Triangles +158205 - 0x09E49 (Shortcut to Shadows Panel) - True - True +Door - 0x09E3D (Shortcut to Shadows) - 0x09E49 -Swamp Near Platform (Swamp) - Swamp Entry Area - 0x00609 | 0x18488: -0x00999 (Broken Shapers 1) - 0x00990 - Broken Shapers -0x0099D (Broken Shapers 2) - 0x00999 - Broken Shapers -0x009A0 (Broken Shapers 3) - 0x0099D - Broken Shapers -0x009A1 (Broken Shapers 4) - 0x009A0 - Broken Shapers -0x00002 (Cyan Underwater Negative Shapers 1) - 0x00006 - Shapers & Negative Shapers -0x00004 (Cyan Underwater Negative Shapers 2) - 0x00002 - Shapers & Negative Shapers -0x00005 (Cyan Underwater Negative Shapers 3) - 0x00004 - Shapers & Negative Shapers -0x013E6 (Cyan Underwater Negative Shapers 4) - 0x00005 - Shapers & Negative Shapers -0x00596 (Cyan Underwater Negative Shapers 5) - 0x013E6 - Shapers & Negative Shapers -0x18488 (Cyan Underwater Sliding Bridge Control) - 0x00006 - Shapers +Shipwreck (Shipwreck) - Keep 3rd Pressure Plate - True: +158654 - 0x00AFB (Vault) - True - Symmetry & Sound & Sound Dots & Colored Dots +158655 - 0x03535 (Vault Box) - 0x00AFB - True +158605 - 0x17D28 (Discard) - True - Triangles -Swamp Platform (Swamp) - Swamp Near Platform - True: -0x00982 (Platform Shapers 1) - True - Shapers -0x0097F (Platform Shapers 2) - 0x00982 - Shapers -0x0098F (Platform Shapers 3) - 0x0097F - Shapers -0x00990 (Platform Shapers 4) - 0x0098F - Shapers -0x17C0D (Platform Shortcut Door Left) - True - Shapers -0x17C0E (Platform Shortcut Door Right) - True - Shapers +Keep Tower (Keep) - Keep - 0x04F8F: +158206 - 0x0361B (Tower Shortcut to Keep Panel) - True - True +Door - 0x04F8F (Tower Shortcut to Keep) - 0x0361B +158704 - 0x0360E (Laser Panel Hedges) - 0x01A0F - Environment & Sound +158705 - 0x03317 (Laser Panel Pressure Plates) - 0x01D3F - Shapers & Squares & Black/White Squares & Colored Squares & Stars & Stars + Same Colored Symbol & Dots +Laser - 0x014BB (Laser) - 0x0360E | 0x03317 -Swamp Rotating Bridge Near Side (Swamp) - Swamp Near Platform - 0x009A1: -0x00007 (Rotated Shapers 1) - 0x009A1 - Rotated Shapers -0x00008 (Rotated Shapers 2) - 0x00007 - Rotated Shapers & Shapers -0x00009 (Rotated Shapers 3) - 0x00008 - Rotated Shapers -0x0000A (Rotated Shapers 4) - 0x00009 - Rotated Shapers -0x00001 (Red Underwater Negative Shapers 1) - 0x00596 - Shapers & Negative Shapers -0x014D2 (Red Underwater Negative Shapers 2) - 0x00596 - Shapers & Negative Shapers -0x014D4 (Red Underwater Negative Shapers 3) - 0x00596 - Shapers & Negative Shapers -0x014D1 (Red Underwater Negative Shapers 4) - 0x00596 - Shapers & Negative Shapers +Outside Monastery (Monastery) - Main Island - True - Main Island - 0x0364E - Inside Monastery - 0x0C128 & 0x0C153 - Monastery Garden - 0x03750: +158207 - 0x03713 (Shortcut Door Panel) - True - True +Door - 0x0364E (Shortcut) - 0x03713 +158208 - 0x00B10 (Door Open Left) - True - True +158209 - 0x00C92 (Door Open Right) - True - True +Door - 0x0C128 (Left Door) - 0x00B10 +Door - 0x0C153 (Right Door) - 0x00C92 +158210 - 0x00290 (Rhombic Avoid 1) - 0x09D9B - Environment +158211 - 0x00038 (Rhombic Avoid 2) - 0x09D9B & 0x00290 - Environment +158212 - 0x00037 (Rhombic Avoid 3) - 0x09D9B & 0x00038 - Environment +Door - 0x03750 (Door to Garden) - 0x00037 +158706 - 0x17CA4 (Laser Panel) - 0x193A6 - True +Laser - 0x17C65 (Laser) - 0x17CA4 -Swamp Near Boat (Swamp) - Swamp Rotating Bridge Near Side - 0x0000A - Swamp Platform - 0x17C0D & 0x17C0E: -0x181F5 (Rotating Bridge) - True - Rotated Shapers & Shapers -0x09DB8 (Boat Spawn) - True - Boat -0x003B2 (More Rotated Shapers 1) - 0x0000A - Rotated Shapers -0x00A1E (More Rotated Shapers 2) - 0x003B2 - Rotated Shapers -0x00C2E (More Rotated Shapers 3) - 0x00A1E - Rotated Shapers -0x00E3A (More Rotated Shapers 4) - 0x00C2E - Rotated Shapers -0x009A6 (Underwater Back Optional) - 0x00E3A & 0x181F5 - Shapers -0x009AB (Blue Underwater Negative Shapers 1) - 0x00E3A - Shapers & Negative Shapers -0x009AD (Blue Underwater Negative Shapers 2) - 0x009AB - Shapers & Negative Shapers -0x009AE (Blue Underwater Negetive Shapers 3) - 0x009AD - Shapers & Negative Shapers -0x009AF (Blue Underwater Negative Shapers 4) - 0x009AE - Shapers & Negative Shapers -0x00006 (Blue Underwater Negative Shapers 5) - 0x009AF - Shapers & Negative Shapers & Broken Negative Shapers -0x17E2B (Long Bridge Control) - True - Rotated Shapers & Shapers +Inside Monastery (Monastery): +158213 - 0x09D9B (Overhead Door Control) - True - Dots +158214 - 0x193A7 (Branch Avoid 1) - 0x00037 - Environment +158215 - 0x193AA (Branch Avoid 2) - 0x193A7 - Environment +158216 - 0x193AB (Branch Follow 1) - 0x193AA - Environment +158217 - 0x193A6 (Branch Follow 2) - 0x193AB - Environment -Swamp Maze (Swamp) - Swamp Rotating Bridge Near Side - 0x00001 & 0x014D2 & 0x014D4 & 0x014D1 - Outside Swamp - 0x17C05 & 0x17C02: -0x17C0A (Maze Control) - True - Shapers & Negative Shapers & Rotated Shapers & Environment -0x17E07 (Maze Control Other Side) - True - Shapers & Negative Shapers & Rotated Shapers & Environment -0x03615 (Laser) - 0x17C0A & 0x17E07 - True -0x17C05 (Near Laser Shortcut Door Left) - True - Rotated Shapers -0x17C02 (Near Laser Shortcut Door Right) - 0x17C05 - Shapers & Negative Shapers & Rotated Shapers +Monastery Garden (Monastery): -Treehouse Entry Area (Treehouse): -0x17C95 (Boat Spawn) - True - Boat -0x0288C (First Door) - True - Stars -0x02886 (Second Door) - 0x0288C - Stars -0x17D72 (Yellow Bridge 1) - 0x02886 - Stars -0x17D8F (Yellow Bridge 2) - 0x17D72 - Stars -0x17D74 (Yellow Bridge 3) - 0x17D8F - Stars -0x17DAC (Yellow Bridge 4) - 0x17D74 - Stars -0x17D9E (Yellow Bridge 5) - 0x17DAC - Stars -0x17DB9 (Yellow Bridge 6) - 0x17D9E - Stars -0x17D9C (Yellow Bridge 7) - 0x17DB9 - Stars -0x17DC2 (Yellow Bridge 8) - 0x17D9C - Stars -0x17DC4 (Yellow Bridge 9) - 0x17DC2 - Stars -0x0A182 (Beyond Yellow Bridge Door) - 0x17DC4 - Stars +Town (Town) - Main Island - True - Boat - 0x0A054 - Town Maze Rooftop - 0x28AA2 - Town Church - True - Town Wooden Rooftop - 0x034F5 - RGB House - 0x28A61 - Windmill Interior - 0x1845B - Town Inside Cargo Box - 0x0A0C9: +158218 - 0x0A054 (Boat Spawn) - 0x17CA6 | 0x17CDF | 0x09DB8 | 0x17C95 - Boat +158219 - 0x0A0C8 (Cargo Box Panel) - True - Squares & Black/White Squares & Shapers +Door - 0x0A0C9 (Cargo Box Door) - 0x0A0C8 +158707 - 0x09F98 (Desert Laser Redirect) - True - True +158220 - 0x18590 (Tree Outlines) - True - Symmetry & Environment +158221 - 0x28AE3 (Vines Shadows Follow) - 0x18590 - Shadows Follow & Environment +158222 - 0x28938 (Four-way Apple Tree) - 0x28AE3 - Environment +158223 - 0x079DF (Triple Environmental Puzzle) - 0x28938 - Shadows Avoid & Environment & Reflection +158235 - 0x2899C (Full Dot Grid Shapers 1) - True - Rotated Shapers & Dots +158236 - 0x28A33 (Full Dot Grid Shapers 2) - 0x2899C - Shapers & Dots +158237 - 0x28ABF (Full Dot Grid Shapers 3) - 0x28A33 - Shapers & Rotated Shapers & Dots +158238 - 0x28AC0 (Full Dot Grid Shapers 4) - 0x28ABF - Rotated Shapers & Dots +158239 - 0x28AC1 (Full Dot Grid Shapers 5) - 0x28AC0 - Rotated Shapers & Dots +Door - 0x034F5 (Wooden Roof Staircase) - 0x28AC1 +158225 - 0x28998 (Tinted Door Panel) - True - Stars & Rotated Shapers +Door - 0x28A61 (Tinted Door to RGB House) - 0x28998 +158226 - 0x28A0D (Door to Church Stars Panel) - 0x28998 - Stars & RGB & Environment +Door - 0x03BB0 (Door to Church) - 0x28A0D +158228 - 0x28A79 (Maze Stair Control) - True - Environment +Door - 0x28AA2 (Maze Staircase) - 0x28A79 +158241 - 0x17F5F (Windmill Door Panel) - True - Dots +Door - 0x1845B (Windmill Door) - 0x17F5F -Treehouse Beyond Yellow Bridge (Treehouse) - Treehouse Entry Area - 0x0A182: -0x2700B (Laser House Door Timer Outside Control) - True - True -0x17DC8 (First Purple Bridge 1) - True - Stars & Dots -0x17DC7 (First Purple Bridge 2) - 0x17DC8 - Stars & Dots -0x17CE4 (First Purple Bridge 3) - 0x17DC7 - Stars & Dots -0x17D2D (First Purple Bridge 4) - 0x17CE4 - Stars & Dots -0x17D6C (First Purple Bridge 5) - 0x17D2D - Stars & Dots -0x17D9B (Second Purple Bridge 1) - 0x17D6C - Stars & Squares & Black/White Squares -0x17D99 (Second Purple Bridge 2) - 0x17D9B - Stars & Squares & Black/White Squares -0x17DAA (Second Purple Bridge 3) - 0x17D99 - Stars & Squares & Black/White Squares -0x17D97 (Second Purple Bridge 4) - 0x17DAA - Stars & Squares & Black/White Squares & Colored Squares -0x17BDF (Second Purple Bridge 5) - 0x17D97 - Stars & Squares & Colored Squares -0x17D91 (Second Purple Bridge 6) - 0x17BDF - Stars & Squares & Colored Squares -0x17DC6 (Second Purple Bridge 7) - 0x17D91 - Stars & Squares & Colored Squares -0x17E3C (Green Bridge 1) - True - Stars & Shapers -0x17E4D (Green Bridge 2) - 0x17E3C - Stars & Shapers -0x17E4F (Green Bridge 3) - 0x17E4D - Stars & Shapers & Rotated Shapers -0x17E52 (Green Bridge 4 & Directional) - 0x17E4F - Stars & Rotated Shapers & Environment -0x17E5B (Green Bridge 5) - 0x17E52 - Stars & Shapers & Colored Shapers & Stars + Same Colored Symbol -0x17E5F (Green Bridge 6) - 0x17E5B - Stars & Shapers & Colored Shapers & Negative Shapers & Colored Negative Shapers & Stars + Same Colored Symbol -0x17E61 (Green Bridge 7) - 0x17E5F - Stars & Shapers & Rotated Shapers -0x17FA9 (Green Bridge Discard) - 0x17E61 - Triangles -0x17DB3 (Left Orange Bridge 1) - 0x17DC6 - Stars & Squares & Black/White Squares & Stars + Same Colored Symbol -0x17DB5 (Left Orange Bridge 2) - 0x17DB3 - Stars & Squares & Black/White Squares & Stars + Same Colored Symbol -0x17DB6 (Left Orange Bridge 3) - 0x17DB5 - Stars & Squares & Black/White Squares & Stars + Same Colored Symbol -0x17DC0 (Left Orange Bridge 4) - 0x17DB6 - Stars & Squares & Black/White Squares & Stars + Same Colored Symbol -0x17DD7 (Left Orange Bridge 5) - 0x17DC0 - Stars & Squares & Black/White Squares & Colored Squares & Stars + Same Colored Symbol -0x17DD9 (Left Orange Bridge 6) - 0x17DD7 - Stars & Squares & Black/White Squares & Colored Squares & Stars + Same Colored Symbol -0x17DB8 (Left Orange Bridge 7) - 0x17DD9 - Stars & Squares & Black/White Squares & Colored Squares & Stars + Same Colored Symbol -0x17DDC (Left Orange Bridge 8) - 0x17DB8 - Stars & Squares & Colored Squares & Stars + Same Colored Symbol -0x17DD1 (Left Orange Bridge 9 & Directional) - 0x17DDC - Stars & Squares & Colored Squares & Stars + Same Colored Symbol & Environment -0x17DDE (Left Orange Bridge 10) - 0x17DD1 - Stars & Squares & Colored Squares & Stars + Same Colored Symbol -0x17DE3 (Left Orange Bridge 11) - 0x17DDE - Stars & Squares & Colored Squares & Stars + Same Colored Symbol -0x17DEC (Left Orange Bridge 12) - 0x17DE3 - Stars & Squares & Black/White Squares & Stars + Same Colored Symbol -0x17DAE (Left Orange Bridge 13) - 0x17DEC - Stars & Squares & Black/White Squares & Stars + Same Colored Symbol -0x17DB0 (Left Orange Bridge 14) - 0x17DAE - Stars & Squares & Black/White Squares & Stars + Same Colored Symbol -0x17DDB (Left Orange Bridge 15) - 0x17DB0 - Stars & Squares & Black/White Squares & Stars + Same Colored Symbol -0x17FA0 (Burned House Discard) - 0x17DDB - Triangles -0x17D88 (Right Orange Bridge 1) - True - Stars -0x17DB4 (Right Orange Bridge 2) - 0x17D88 - Stars -0x17D8C (Right Orange Bridge 3) - 0x17DB4 - Stars -0x17CE3 (Right Orange Bridge 4 & Directional) - 0x17D8C - Stars & Environment -0x17DCD (Right Orange Bridge 5) - 0x17CE3 - Stars -0x17DB2 (Right Orange Bridge 6) - 0x17DCD - Stars -0x17DCC (Right Orange Bridge 7) - 0x17DB2 - Stars -0x17DCA (Right Orange Bridge 8) - 0x17DCC - Stars -0x17D8E (Right Orange Bridge 9) - 0x17DCA - Stars -0x17DB7 (Right Orange Bridge 10 & Directional) - 0x17D8E - Stars -0x17DB1 (Right Orange Bridge 11) - 0x17DB7 - Stars -0x17DA2 (Right Orange Bridge 12) - 0x17DB1 - Stars +Town Inside Cargo Box (Town): +158606 - 0x17D01 (Cargo Box Discard) - True - Triangles -Treehouse Laser Room (Treehouse) - Treehouse Beyond Yellow Bridge - 0x2700B & 0x17DA2 & 0x17DDB: -0x03613 (Laser) - True - True -0x17CBC (Laser House Door Timer Inside Control) - True - True +Town Maze Rooftop (Town) - Town Red Rooftop - 0x2896A: +158229 - 0x2896A (Maze Rooftop Bridge Control) - True - Shapers -Treehouse Bridge Platform (Treehouse) - Treehouse Beyond Yellow Bridge - 0x17DA2 - Main Island - 0x037FF: -0x037FF (Bridge Control) - True - Stars +Town Red Rooftop (Town): +158607 - 0x17C71 (Rooftop Discard) - True - Triangles +158230 - 0x28AC7 (Symmetry Squares 1) - True - Symmetry & Squares & Black/White Squares +158231 - 0x28AC8 (Symmetry Squares 2) - 0x28AC7 - Symmetry & Squares & Black/White Squares +158232 - 0x28ACA (Symmetry Squares 3 + Dots) - 0x28AC8 - Symmetry & Squares & Black/White Squares & Dots +158233 - 0x28ACB (Symmetry Squares 4 + Dots) - 0x28ACA - Symmetry & Squares & Black/White Squares & Dots +158234 - 0x28ACC (Symmetry Squares 5 + Dots) - 0x28ACB - Symmetry & Squares & Black/White Squares & Dots +158224 - 0x28B39 (Hexagonal Reflection) - 0x079DF - Reflection -Mountaintop (Mountaintop) - Main Island - True: -0x0042D (River Shape) - True - True -0x09F7F (Box Short) - 7 Lasers - True -0xFFF00 (Box Long) - 11 Lasers & 0x17C34 - True -0x17C34 (Trap Door Triple Exit) - 0x09F7F - Stars & Squares & Black/White Squares & Stars + Same Colored Symbol -0x17C42 (Discard) - True - Triangles -0x002A6 (Vault) - True - Symmetry & Colored Dots & Squares & Black/White Squares & Dots -0x03542 (Vault Box) - 0x002A6 - True +Town Wooden Rooftop (Town): +158240 - 0x28AD9 (Shapers & Dots & Eraser) - 0x28AC1 - Rotated Shapers & Dots & Eraser -Inside Mountain Top Layer (Inside Mountain) - Mountaintop - 0x17C34: -0x09E39 (Light Bridge Controller) - True - Squares & Black/White Squares & Colored Squares & Eraser & Colored Eraser +Town Church (Town): +158227 - 0x28A69 (Church Lattice) - 0x03BB0 - Environment -Inside Mountain Top Layer Bridge (Inside Mountain) - Inside Mountain Top Layer - 0x09E39: -0x09E7A (Obscured Vision 1) - True - Obscured & Squares & Black/White Squares & Dots -0x09E71 (Obscured Vision 2) - 0x09E7A - Obscured & Squares & Black/White Squares & Dots -0x09E72 (Obscured Vision 3) - 0x09E71 - Obscured & Squares & Black/White Squares & Shapers & Dots -0x09E69 (Obscured Vision 4) - 0x09E72 - Obscured & Squares & Black/White Squares & Dots -0x09E7B (Obscured Vision 5) - 0x09E69 - Obscured & Squares & Black/White Squares & Dots -0x09E73 (Moving Background 1) - True - Moving & Stars & Squares & Black/White Squares & Stars + Same Colored Symbol -0x09E75 (Moving Background 2) - 0x09E73 - Moving & Stars & Squares & Black/White Squares & Stars + Same Colored Symbol -0x09E78 (Moving Background 3) - 0x09E75 - Moving & Shapers -0x09E79 (Moving Background 4) - 0x09E78 - Moving & Shapers & Rotated Shapers -0x09E6C (Moving Background 5) - 0x09E79 - Moving & Stars & Squares & Black/White Squares & Stars + Same Colored Symbol -0x09E6F (Moving Background 6) - 0x09E6C - Moving & Stars & Rotated Shapers & Shapers -0x09E6B (Moving Background 7) - 0x09E6F - Moving & Stars & Dots -0x33AF5 (Physically Obstructed 1) - True - Squares & Black/White Squares & Environment & Symmetry -0x33AF7 (Physically Obstructed 2) - 0x33AF5 - Squares & Black/White Squares & Stars & Environment -0x09F6E (Physically Obstructed 3) - 0x33AF7 - Symmetry & Dots & Environment -0x09EAD (Angled Inside Trash 1) - True - Squares & Black/White Squares & Shapers & Angled -0x09EAF (Angled Inside Trash 2) - 0x09EAD - Squares & Black/White Squares & Shapers & Angled +RGB House (Town) - RGB Room - 0x2897B: +158242 - 0x034E4 (Sound Room Left) - True - Sound & Sound Waves +158243 - 0x034E3 (Sound Room Right) - True - Sound & Sound Dots +Door - 0x2897B (RGB House Staircase) - 0x034E4 & 0x034E3 -Inside Mountain Second Layer (Inside Mountain) - Inside Mountain Top Layer Bridge - 0x09EAF & 0x09F6E & 0x09E6B & 0x09E7B: -0x09FD3 (Color Cycle 1) - True - Color Cycle & RGB & Stars & Squares & Colored Squares & Stars + Same Colored Symbol -0x09FD4 (Color Cycle 2) - 0x09FD3 - Color Cycle & RGB & Stars & Squares & Colored Squares & Stars + Same Colored Symbol -0x09FD6 (Color Cycle 3) - 0x09FD4 - Color Cycle & RGB & Stars & Squares & Colored Squares & Stars + Same Colored Symbol -0x09FD7 (Color Cycle 4) - 0x09FD6 - Color Cycle & RGB & Stars & Squares & Colored Squares & Stars + Same Colored Symbol & Shapers & Colored Shapers -0x09FD8 (Color Cycle 5) - 0x09FD7 - Color Cycle & RGB & Squares & Colored Squares & Symmetry & Colored Dots -0x09E86 (Light Bridge Controller 2) - 0x09FD8 - Stars & Stars + Same Colored Symbol & Colored Rotated Shapers & Rotated Shapers & Eraser & Two Lines +RGB Room (Town): +158244 - 0x334D8 (RGB Control) - True - Rotated Shapers & RGB & Squares & Colored Squares +158245 - 0x03C0C (RGB Squares) - 0x334D8 - RGB & Squares & Colored Squares & Black/White Squares +158246 - 0x03C08 (RGB Stars) - 0x334D8 - RGB & Stars -Inside Mountain Second Layer Beyond Bridge (Inside Mountain) - Inside Mountain Second Layer - 0x09E86: -0x09FCC (Same Solution 1) - True - Dots & Same Solution -0x09FCE (Same Solution 2) - 0x09FCC - Squares & Black/White Squares & Same Solution -0x09FCF (Same Solution 3) - 0x09FCE - Stars & Same Solution -0x09FD0 (Same Solution 4) - 0x09FCF - Rotated Shapers & Same Solution -0x09FD1 (Same Solution 5) - 0x09FD0 - Stars & Squares & Colored Squares & Stars + Same Colored Symbol & Same Solution -0x09FD2 (Same Solution 6) - 0x09FD1 - Shapers & Same Solution -0x09ED8 (Light Bridge Controller 3) - 0x09FD2 - Stars & Stars + Same Colored Symbol & Colored Rotated Shapers & Rotated Shapers & Eraser & Two Lines +Town Tower (Town Tower) - Town - True - Town Tower Top - 0x27798 & 0x27799 & 0x2779A & 0x2779C: +Door - 0x27798 (Blue Panels Door) - 0x28ACC +Door - 0x27799 (Church Lattice Door) - 0x28A69 +Door - 0x2779A (Environmental Set Door) - 0x28B39 +Door - 0x2779C (Eraser Set Door) - 0x28AD9 -Inside Mountain Second Layer Elevator (Inside Mountain) - Inside Mountain Second Layer - 0x09ED8 & 0x09E86: -0x09EEB (Elevator Control Panel) - True - Dots -0x17F93 (Elevator Discard) - True - Triangles +Town Tower Top (Town): +158708 - 0x032F5 (Laser Panel) - True - True +Laser - 0x032F9 (Laser) - 0x032F5 -Inside Mountain Third Layer (Inside Mountain) - Inside Mountain Second Layer Elevator - 0x09EEB: -0x09FC1 (Giant Puzzle Bottom Left) - True - Shapers & Eraser -0x09F8E (Giant Puzzle Bottom Right) - True - Shapers & Eraser -0x09F01 (Giant Puzzle Top Right) - True - Rotated Shapers -0x09EFF (Giant Puzzle Top Left) - True - Shapers & Eraser -0x09FDA (Giant Puzzle) - 0x09FC1 & 0x09F8E & 0x09F01 & 0x09EFF - Shapers & Symmetry +Windmill Interior (Windmill) - Theater - 0x17F88: +158247 - 0x17D02 (Turn Control) - True - Dots +158248 - 0x17F89 (Door to Front of Theater Panel) - True - Squares & Black/White Squares +Door - 0x17F88 (Door to Front of Theater) - 0x17F89 -Inside Mountain Bottom Layer (Inside Mountain) - Inside Mountain Third Layer - 0x09FDA - Inside Mountain Path to Secret Area - 0x334E1: -0x17FA2 (Bottom Layer Discard) - 0xFFF00 - Triangles & Environment -0x01983 (Door to Final Room Left) - True - Shapers & Stars -0x01987 (Door to Final Room Right) - True - Squares & Colored Squares & Dots +Theater (Theater) - Town - 0x0A16D | 0x3CCDF: +158656 - 0x00815 (Video Input) - True - True +158657 - 0x03553 (Tutorial Video) - 0x00815 & 0x03481 - True +158658 - 0x03552 (Desert Video) - 0x00815 & 0x0339E - True +158659 - 0x0354E (Jungle Video) - 0x00815 & 0x03702 - True +158660 - 0x03549 (Challenge Video) - 0x00815 & 0x0356B - True +158661 - 0x0354F (Shipwreck Video) - 0x00815 & 0x03535 - True +158662 - 0x03545 (Mountain Video) - 0x00815 & 0x03542 - True +158249 - 0x0A168 (Door to Cargo Box Left Panel) - True - Squares & Black/White Squares & Eraser +158250 - 0x33AB2 (Door to Cargo Box Right Panel) - True - Squares & Black/White Squares & Shapers +Door - 0x0A16D (Door to Cargo Box Left) - 0x0A168 +Door - 0x3CCDF (Door to Cargo Box Right) - 0x33AB2 +158608 - 0x17CF7 (Discard) - True - Triangles -Inside Mountain Path to Secret Area (Inside Mountain) - Inside Mountain Bottom Layer - 0x17FA2: -0x00FF8 (Door to Secret Area) - True - Triangles & Black/White Squares & Squares -0x334E1 (Rock Control) - True - True +Jungle (Jungle) - Main Island - True - Outside Jungle River - 0x3873B - Boat - 0x17CDF: +158251 - 0x17CDF (Shore Boat Spawn) - True - Boat +158609 - 0x17F9B (Discard) - True - Triangles +158252 - 0x002C4 (Waves 1) - True - Sound & Sound Waves +158253 - 0x00767 (Waves 2) - 0x002C4 - Sound & Sound Waves +158254 - 0x002C6 (Waves 3) - 0x00767 - Sound & Sound Waves +158255 - 0x0070E (Waves 4) - 0x002C6 - Sound & Sound Waves +158256 - 0x0070F (Waves 5) - 0x0070E - Sound & Sound Waves +158257 - 0x0087D (Waves 6) - 0x0070F - Sound & Sound Waves +158258 - 0x002C7 (Waves 7) - 0x0087D - Sound & Sound Waves +158259 - 0x17CAB (Popup Wall Control) - 0x002C7 - True +Door - 0x1475B (Popup Wall) - 0x17CAB +158260 - 0x0026D (Popup Wall 1) - 0x1475B - Sound & Sound Dots +158261 - 0x0026E (Popup Wall 2) - 0x0026D - Sound & Sound Dots +158262 - 0x0026F (Popup Wall 3) - 0x0026E - Sound & Sound Dots +158263 - 0x00C3F (Popup Wall 4) - 0x0026F - Sound & Sound Dots +158264 - 0x00C41 (Popup Wall 5) - 0x00C3F - Sound & Sound Dots +158265 - 0x014B2 (Popup Wall 6) - 0x00C41 - Sound & Sound Dots +158709 - 0x03616 (Laser Panel) - 0x014B2 - True +Laser - 0x00274 (Laser) - 0x03616 +158266 - 0x337FA (Shortcut to River Panel) - True - True +Door - 0x3873B (Shortcut to River) - 0x337FA -Inside Mountain Secret Area (Inside Mountain Secret Area) - Inside Mountain Path to Secret Area - 0x00FF8 - Main Island - 0x021D7 - Main Island - 0x17CF2: -0x021D7 (Shortcut to Mountain) - True - Triangles & Stars & Stars + Same Colored Symbol & Colored Triangles -0x17CF2 (Shortcut to Swamp) - True - Triangles -0x335AB (Elevator Inside Control) - True - Dots & Squares & Black/White Squares -0x335AC (Elevator Upper Outside Control) - 0x335AB - Squares & Black/White Squares -0x3369D (Elevator Lower Outside Control) - 0x335AB - Squares & Black/White Squares & Dots -0x00190 (Dot Grid Triangles 1) - True - Dots & Triangles -0x00558 (Dot Grid Triangles 2) - 0x00190 - Dots & Triangles -0x00567 (Dot Grid Triangles 3) - 0x00558 - Dots & Triangles -0x006FE (Dot Grid Triangles 4) - 0x00567 - Dots & Triangles -0x01A0D (Symmetry Triangles) - True - Symmetry & Triangles -0x008B8 (Squares and Triangles) - True - Squares & Black/White Squares & Triangles -0x00973 (Stars and Triangles) - 0x008B8 - Stars & Triangles -0x0097B (Stars and Triangles of same color) - 0x00973 - Stars & Triangles & Stars and Triangles of same color & Stars + Same Colored Symbol -0x0097D (Stars & Squares and Triangles) - 0x0097B - Stars & Squares & Black/White Squares & Stars + Same Colored Symbol & Triangles -0x0097E (Stars & Squares and Triangles 2) - 0x0097D - Stars & Squares & Black/White Squares & Stars + Same Colored Symbol & Stars and Triangles of same color -0x00994 (Rotated Shapers and Triangles 1) - True - Rotated Shapers & Triangles -0x334D5 (Rotated Shapers and Triangles 2) - 0x00994 - Rotated Shapers & Triangles -0x00995 (Rotated Shapers and Triangles 3) - 0x334D5 - Rotated Shapers & Triangles -0x00996 (Shapers and Triangles 1) - 0x00995 - Shapers & Triangles -0x00998 (Shapers and Triangles 2) - 0x00996 - Shapers & Triangles -0x009A4 (Broken Shapers) - True - Shapers & Broken Shapers -0x018A0 (Symmetry Shapers) - True - Shapers & Symmetry -0x00A72 (Broken and Negative Shapers) - True - Shapers & Broken Shapers & Negative Shapers -0x32962 (Rotated Broken Shapers) - True - Rotated Shapers & Broken Rotated Shapers -0x32966 (Stars and Squares) - True - Stars & Squares & Black/White Squares & Stars + Same Colored Symbol -0x01A31 (Rainbow Squares) - True - Color Cycle & RGB & Squares & Colored Squares -0x00B71 (Squares & Stars and Colored Eraser) - True - Colored Eraser & Squares & Colored Squares & Stars & Stars + Same Colored Symbol & Eraser -0x09DD5 (Lone Pillar) - True - Pillar & Triangles -0x0A16E (Door to Challenge) - 0x09DD5 - Stars & Shapers & Colored Shapers & Stars + Same Colored Symbol -0x288EA (Wooden Beam Shapers) - True - Environment & Shapers -0x288FC (Wooden Beam Squares and Shapers) - True - Environment & Squares & Black/White Squares & Shapers & Rotated Shapers -0x289E7 (Wooden Beam Stars and Squares) - True - Environment & Stars & Squares & Black/White Squares -0x288AA (Wooden Beam Shapers and Stars) - True - Environment & Stars & Shapers -0x17FB9 (Upstairs Dot Grid Negative Shapers) - True - Shapers & Dots & Negative Shapers -0x0A16B (Upstairs Dot Grid Gap Dots) - True - Dots -0x0A2CE (Upstairs Dot Grid Stars) - 0x0A16B - Stars & Dots -0x0A2D7 (Upstairs Dot Grid Stars & Squares) - 0x0A2CE - Dots & Black/White Squares & Stars + Same Colored Symbol & Stars -0x0A2DD (Upstairs Dot Grid Shapers) - 0x0A2D7 - Shapers & Dots -0x0A2EA (Upstairs Dot Grid Rotated Shapers) - 0x0A2DD - Rotated Shapers & Dots -0x0008F (Upstairs Invisible Dots 1) - True - Dots & Invisible Dots -0x0006B (Upstairs Invisible Dots 2) - 0x0008F - Dots & Invisible Dots -0x0008B (Upstairs Invisible Dots 3) - 0x0006B - Dots & Invisible Dots -0x0008C (Upstairs Invisible Dots 4) - 0x0008B - Dots & Invisible Dots -0x0008A (Upstairs Invisible Dots 5) - 0x0008C - Dots & Invisible Dots -0x00089 (Upstairs Invisible Dots 6) - 0x0008A - Dots & Invisible Dots -0x0006A (Upstairs Invisible Dots 7) - 0x00089 - Dots & Invisible Dots -0x0006C (Upstairs Invisible Dots 8) - 0x0006A - Dots & Invisible Dots -0x00027 (Upstairs Invisible Dot Symmetry 1) - True - Dots & Invisible Dots & Symmetry -0x00028 (Upstairs Invisible Dot Symmetry 2) - 0x00027 - Dots & Invisible Dots & Symmetry -0x00029 (Upstairs Invisible Dot Symmetry 3) - 0x00028 - Dots & Invisible Dots & Symmetry +Outside Jungle River (River) - Main Island - True - Monastery Garden - 0x0CF2A: +158267 - 0x17CAA (Rhombic Avoid to Monastery Garden) - True - Environment +Door - 0x0CF2A (Shortcut to Monastery Garden) - 0x17CAA +158663 - 0x15ADD (Vault) - True - Environment & Black/White Squares & Dots +158664 - 0x03702 (Vault Box) - 0x15ADD - True -Challenge (Challenge) - Inside Mountain Secret Area - 0x0A16E: -0x0A332 (Start Timer) - 11 Lasers - True -0x0088E (Small Basic) - 0x0A332 - True -0x00BAF (Big Basic) - 0x0088E - True -0x00BF3 (Square) - 0x00BAF - Squares & Black/White Squares -0x00C09 (Maze Map) - 0x00BF3 - Dots -0x00CDB (Stars and Dots) - 0x00C09 - Stars & Dots -0x0051F (Symmetry) - 0x00CDB - Symmetry & Colored Dots & Dots -0x00524 (Stars and Shapers) - 0x0051F - Stars & Shapers -0x00CD4 (Big Basic 2) - 0x00524 - True -0x00CB9 (Choice Squares Right) - 0x00CD4 - Squares & Black/White Squares -0x00CA1 (Choice Squares Middle) - 0x00CD4 - Squares & Black/White Squares -0x00C80 (Choice Squares Left) - 0x00CD4 - Squares & Black/White Squares -0x00C68 (Choice Squares 2 Right) - 0x00CB9 | 0x00CA1 | 0x00C80 - Squares & Black/White Squares & Colored Squares -0x00C59 (Choice Squares 2 Middle) - 0x00CB9 | 0x00CA1 | 0x00C80 - Squares & Black/White Squares & Colored Squares -0x00C22 (Choice Squares 2 Left) - 0x00CB9 | 0x00CA1 | 0x00C80 - Squares & Black/White Squares & Colored Squares -0x034F4 (Maze Hidden 1) - 0x00C68 | 0x00C59 | 0x00C22 - Triangles -0x034EC (Maze Hidden 2) - 0x00C68 | 0x00C59 | 0x00C22 - Triangles -0x1C31A (Dots Pillar) - 0x034F4 & 0x034EC - Dots & Symmetry & Pillar -0x1C319 (Squares Pillar) - 0x034F4 & 0x034EC - Squares & Black/White Squares & Symmetry & Pillar -0x0356B (Vault Box) - 0x1C31A & 0x1C319 - True -0x039B4 (Door to Theater Walkway) - True - Triangles +Outside Bunker (Bunker) - Main Island - True - Inside Bunker - 0x0C2A4: +158268 - 0x17C2E (Bunker Entry Panel) - True - Squares & Black/White Squares & Colored Squares +Door - 0x0C2A4 (Bunker Entry Door) - 0x17C2E -Theater Walkway (Theater Walkway) - Challenge - 0x039B4 - Theater - 0x27732 - Desert Elevator Room - 0x2773D & 0x03608 - Town - 0x09E85: -0x2FAF6 (Vault Box) - True - True -0x27732 (Door to Back of Theater) - True - True -0x2773D (Door to Desert Elevator Room) - True - True -0x09E85 (Door to Town) - True - Triangles +Inside Bunker (Bunker) - Inside Bunker Glass Room - 0x17C79: +158269 - 0x09F7D (Drawn Squares 1) - True - Squares & Colored Squares +158270 - 0x09FDC (Drawn Squares 2) - 0x09F7D - Squares & Colored Squares & Black/White Squares +158271 - 0x09FF7 (Drawn Squares 3) - 0x09FDC - Squares & Colored Squares & Black/White Squares +158272 - 0x09F82 (Drawn Squares 4) - 0x09FF7 - Squares & Colored Squares & Black/White Squares +158273 - 0x09FF8 (Drawn Squares 5) - 0x09F82 - Squares & Colored Squares & Black/White Squares +158274 - 0x09D9F (Drawn Squares 6) - 0x09FF8 - Squares & Colored Squares & Black/White Squares +158275 - 0x09DA1 (Drawn Squares 7) - 0x09D9F - Squares & Colored Squares +158276 - 0x09DA2 (Drawn Squares 8) - 0x09DA1 - Squares & Colored Squares +158277 - 0x09DAF (Drawn Squares 9) - 0x09DA2 - Squares & Colored Squares +158278 - 0x0A099 (Door to Bunker Proper Panel) - 0x09DAF - True +Door - 0x17C79 (Door to Bunker Proper) - 0x0A099 -Final Room (Inside Mountain Final Room) - Inside Mountain Bottom Layer - 0x01983 & 0x01987: -0x0383A (Stars Pillar) - True - Stars & Pillar -0x09E56 (Stars and Dots Pillar) - 0x0383A - Stars & Dots & Pillar -0x09E5A (Dot Grid Pillar) - 0x09E56 - Dots & Pillar -0x33961 (Sparse Dots Pillar) - 0x09E5A - Dots & Symmetry & Pillar -0x0383D (Dot Maze Pillar) - True - Dots & Pillar -0x0383F (Squares Pillar) - 0x0383D - Squares & Black/White Squares & Pillar -0x03859 (Shapers Pillar) - 0x0383F - Shapers & Pillar -0x339BB (Squares and Stars) - 0x03859 - Squares & Black/White Squares & Stars & Symmetry & Pillar +Inside Bunker Glass Room (Bunker) - Inside Bunker Ultraviolet Room - 0x0C2A3: +158279 - 0x0A010 (Drawn Squares through Tinted Glass 1) - True - Squares & Colored Squares & RGB & Environment +158280 - 0x0A01B (Drawn Squares through Tinted Glass 2) - 0x0A010 - Squares & Colored Squares & Black/White Squares & RGB & Environment +158281 - 0x0A01F (Drawn Squares through Tinted Glass 3) - 0x0A01B - Squares & Colored Squares & Black/White Squares & RGB & Environment +Door - 0x0C2A3 (Door to Ultraviolet Room) - 0x0A01F -Elevator (Inside Mountain Final Room) - Final Room - 0x339BB & 0x33961: -0x3D9A6 (Elevator Door Closer Left) - True - True -0x3D9A7 (Elevator Door Close Right) - True - True -0x3C113 (Elevator Door Open Left) - 0x3D9A6 | 0x3D9A7 - True -0x3C114 (Elevator Door Open Right) - 0x3D9A6 | 0x3D9A7 - True -0x3D9AA (Back Wall Left) - 0x3D9A6 | 0x3D9A7 - True -0x3D9A8 (Back Wall Right) - 0x3D9A6 | 0x3D9A7 - True -0x3D9A9 (Elevator Start) - 0x3D9AA | 0x3D9A8 - True +Inside Bunker Ultraviolet Room (Bunker) - Inside Bunker Elevator Section - 0x0A08D: +158282 - 0x34BC5 (Drop-Down Door Open) - True - True +158283 - 0x34BC6 (Drop-Down Door Close) - 0x34BC5 - True +158284 - 0x17E63 (Drop-Down Door Squares 1) - 0x34BC5 - Squares & Colored Squares & RGB & Environment +158285 - 0x17E67 (Drop-Down Door Squares 2) - 0x17E63 & 0x34BC6 - Squares & Colored Squares & Black/White Squares & RGB +Door - 0x0A08D (Door to Elevator) - 0x17E67 -Boat (Boat) - Main Island - 0x17CDF | 0x17CC8 & 0x0005C | 0x17CA6 | 0x09DB8 | 0x17C95 | 0x0A054 - Inside Glass Factory - 0x17CDF & 0x0005C | 0x17CC8 & 0x0005C | 0x17CA6 & 0x0005C | 0x09DB8 & 0x0005C | 0x17C95 & 0x0005C | 0x0A054 & 0x0005C - Quarry Boathouse - 0x17CA6 - Swamp Near Boat - 0x17CDF | 0x17CC8 & 0x0005C | 0x17CA6 | 0x09DB8 | 0x17C95 | 0x0A054 - Treehouse Entry Area - 0x17CDF | 0x17CC8 & 0x0005C | 0x17CA6 | 0x09DB8 | 0x17C95 | 0x0A054: +Inside Bunker Elevator Section (Bunker) - Bunker Laser Platform - 0x0A079: +158286 - 0x0A079 (Elevator Control) - True - Squares & Colored Squares & Black/White Squares & RGB + +Bunker Laser Platform (Bunker): +158710 - 0x09DE0 (Laser Panel) - True - True +Laser - 0x0C2B2 (Laser) - 0x09DE0 + +Outside Swamp (Swamp) - Swamp Entry Area - 0x00C1C - Main Island - True: +158287 - 0x0056E (Entry Panel) - True - Shapers +Door - 0x00C1C (Entry Door) - 0x0056E + +Swamp Entry Area (Swamp) - Swamp Sliding Bridge - TrueOneWay: +158288 - 0x00469 (Seperatable Shapers 1) - True - Shapers +158289 - 0x00472 (Seperatable Shapers 2) - 0x00469 - Shapers +158290 - 0x00262 (Seperatable Shapers 3) - 0x00472 - Shapers +158291 - 0x00474 (Seperatable Shapers 4) - 0x00262 - Shapers +158292 - 0x00553 (Seperatable Shapers 5) - 0x00474 - Shapers +158293 - 0x0056F (Seperatable Shapers 6) - 0x00553 - Shapers +158294 - 0x00390 (Combinable Shapers 1) - 0x0056F - Shapers +158295 - 0x010CA (Combinable Shapers 2) - 0x00390 - Shapers +158296 - 0x00983 (Combinable Shapers 3) - 0x010CA - Shapers +158297 - 0x00984 (Combinable Shapers 4) - 0x00983 - Shapers +158298 - 0x00986 (Combinable Shapers 5) - 0x00984 - Shapers +158299 - 0x00985 (Combinable Shapers 6) - 0x00986 - Shapers +158300 - 0x00987 (Combinable Shapers 7) - 0x00985 - Shapers +158301 - 0x181A9 (Combinable Shapers 8) - 0x00987 - Shapers + +Swamp Sliding Bridge (Swamp) - Swamp Entry Area - 0x00609 - Swamp Near Platform - 0x00609: +158302 - 0x00609 (Sliding Bridge) - True - Shapers + +Swamp Near Platform (Swamp) - Swamp Cyan Underwater - 0x04B7F - Swamp Near Boat - 0x38AE6 - Swamp Broken Shapers - 0x184B7 - Swamp Sliding Bridge - TrueOneWay: +158313 - 0x00982 (Platform Shapers 1) - True - Shapers +158314 - 0x0097F (Platform Shapers 2) - 0x00982 - Shapers +158315 - 0x0098F (Platform Shapers 3) - 0x0097F - Shapers +158316 - 0x00990 (Platform Shapers 4) - 0x0098F - Shapers +Door - 0x184B7 (Door to Broken Shapers) - 0x00990 +158317 - 0x17C0D (Platform Shortcut Left Panel) - True - Shapers +158318 - 0x17C0E (Platform Shortcut Right Panel) - True - Shapers +Door - 0x38AE6 (Platform Shortcut Door) - 0x17C0E +Door - 0x04B7F (Cyan Water Pump) - 0x00006 + +Swamp Cyan Underwater (Swamp): +158307 - 0x00002 (Cyan Underwater Negative Shapers 1) - True - Shapers & Negative Shapers +158308 - 0x00004 (Cyan Underwater Negative Shapers 2) - 0x00002 - Shapers & Negative Shapers +158309 - 0x00005 (Cyan Underwater Negative Shapers 3) - 0x00004 - Shapers & Negative Shapers +158310 - 0x013E6 (Cyan Underwater Negative Shapers 4) - 0x00005 - Shapers & Negative Shapers +158311 - 0x00596 (Cyan Underwater Negative Shapers 5) - 0x013E6 - Shapers & Negative Shapers +158312 - 0x18488 (Cyan Underwater Sliding Bridge Control) - True - Shapers + +Swamp Broken Shapers (Swamp) - Swamp Rotated Shapers - 0x18507: +158303 - 0x00999 (Broken Shapers 1) - 0x00990 - Shapers & Broken Shapers +158304 - 0x0099D (Broken Shapers 2) - 0x00999 - Shapers & Broken Shapers +158305 - 0x009A0 (Broken Shapers 3) - 0x0099D - Shapers & Broken Shapers +158306 - 0x009A1 (Broken Shapers 4) - 0x009A0 - Shapers & Broken Shapers +Door - 0x18507 (Door to Rotated Shapers) - 0x009A1 + +Swamp Rotated Shapers (Swamp) - Swamp Red Underwater - 0x183F2 - Swamp Rotating Bridge - TrueOneWay: +158319 - 0x00007 (Rotated Shapers 1) - 0x009A1 - Rotated Shapers +158320 - 0x00008 (Rotated Shapers 2) - 0x00007 - Rotated Shapers & Shapers +158321 - 0x00009 (Rotated Shapers 3) - 0x00008 - Rotated Shapers +158322 - 0x0000A (Rotated Shapers 4) - 0x00009 - Rotated Shapers +Door - 0x183F2 (Red Water Pump) - 0x00596 + +Swamp Red Underwater (Swamp) - Swamp Maze - 0x014D1: +158323 - 0x00001 (Red Underwater Negative Shapers 1) - True - Shapers & Negative Shapers +158324 - 0x014D2 (Red Underwater Negative Shapers 2) - True - Shapers & Negative Shapers +158325 - 0x014D4 (Red Underwater Negative Shapers 3) - True - Shapers & Negative Shapers +158326 - 0x014D1 (Red Underwater Negative Shapers 4) - True - Shapers & Negative Shapers +Door - 0x305D5 (Red Underwater Exit) - 0x014D1 + +Swamp Rotating Bridge (Swamp) - Swamp Rotated Shapers - 0x181F5 - Swamp Near Boat - 0x181F5 - Swamp Purple Area - 0x181F5: +158327 - 0x181F5 (Rotating Bridge) - True - Rotated Shapers & Shapers + +Swamp Near Boat (Swamp) - Swamp Rotating Bridge - TrueOneWay - Swamp Blue Underwater - 0x18482: +158328 - 0x09DB8 (Boat Spawn) - True - Boat +158329 - 0x003B2 (More Rotated Shapers 1) - 0x0000A - Rotated Shapers +158330 - 0x00A1E (More Rotated Shapers 2) - 0x003B2 - Rotated Shapers +158331 - 0x00C2E (More Rotated Shapers 3) - 0x00A1E - Rotated Shapers +158332 - 0x00E3A (More Rotated Shapers 4) - 0x00C2E - Rotated Shapers +158339 - 0x17E2B (Long Bridge Control) - True - Rotated Shapers & Shapers +Door - 0x18482 (Blue Water Pump) - 0x00E3A + +Swamp Purple Area (Swamp) - Swamp Rotating Bridge - TrueOneWay - Swamp Purple Underwater - 0x0A1D6: +Door - 0x0A1D6 (Purple Water Pump) - 0x00E3A + +Swamp Purple Underwater (Swamp): +158333 - 0x009A6 (Underwater Back Optional) - True - Shapers + +Swamp Blue Underwater (Swamp): +158334 - 0x009AB (Blue Underwater Negative Shapers 1) - True - Shapers & Negative Shapers +158335 - 0x009AD (Blue Underwater Negative Shapers 2) - 0x009AB - Shapers & Negative Shapers +158336 - 0x009AE (Blue Underwater Negetive Shapers 3) - 0x009AD - Shapers & Negative Shapers +158337 - 0x009AF (Blue Underwater Negative Shapers 4) - 0x009AE - Shapers & Negative Shapers +158338 - 0x00006 (Blue Underwater Negative Shapers 5) - 0x009AF - Shapers & Negative Shapers & Broken Negative Shapers + +Swamp Maze (Swamp) - Swamp Laser Area - 0x17C0A & 0x17E07: +158340 - 0x17C0A (Maze Control) - True - Shapers & Negative Shapers & Rotated Shapers & Environment +158112 - 0x17E07 (Maze Control Other Side) - True - Shapers & Negative Shapers & Rotated Shapers & Environment + +Swamp Laser Area (Swamp) - Outside Swamp - 0x2D880: +158711 - 0x03615 (Laser Panel) - True - True +Laser - 0x00BF6 (Laser) - 0x03615 +158341 - 0x17C05 (Near Laser Shortcut Left Panel) - True - Rotated Shapers +158342 - 0x17C02 (Near Laser Shortcut Right Panel) - 0x17C05 - Shapers & Negative Shapers & Rotated Shapers +Door - 0x2D880 (Near Laser Shortcut) - 0x17C02 + +Treehouse Entry Area (Treehouse) - Treehouse Between Doors - 0x0C309: +158343 - 0x17C95 (Boat Spawn) - True - Boat +158344 - 0x0288C (First Door Panel) - True - Stars +Door - 0x0C309 (First Door) - 0x0288C + +Treehouse Between Doors (Treehouse) - Treehouse Yellow Bridge - 0x0C310: +158345 - 0x02886 (Second Door Panel) - True - Stars +Door - 0x0C310 (Second Door) - 0x02886 + +Treehouse Yellow Bridge (Treehouse) - Treehouse After Yellow Bridge - 0x17DC4: +158346 - 0x17D72 (Yellow Bridge 1) - True - Stars +158347 - 0x17D8F (Yellow Bridge 2) - 0x17D72 - Stars +158348 - 0x17D74 (Yellow Bridge 3) - 0x17D8F - Stars +158349 - 0x17DAC (Yellow Bridge 4) - 0x17D74 - Stars +158350 - 0x17D9E (Yellow Bridge 5) - 0x17DAC - Stars +158351 - 0x17DB9 (Yellow Bridge 6) - 0x17D9E - Stars +158352 - 0x17D9C (Yellow Bridge 7) - 0x17DB9 - Stars +158353 - 0x17DC2 (Yellow Bridge 8) - 0x17D9C - Stars +158354 - 0x17DC4 (Yellow Bridge 9) - 0x17DC2 - Stars + +Treehouse After Yellow Bridge (Treehouse) - Treehouse Junction - 0x0A181: +158355 - 0x0A182 (Beyond Yellow Bridge Door Panel) - True - Stars +Door - 0x0A181 (Beyond Yellow Bridge Door) - 0x0A182 + +Treehouse Junction (Treehouse) - Treehouse Right Orange Bridge - True - Treehouse First Purple Bridge - True - Treehouse Green Bridge - True: +158356 - 0x2700B (Laser House Door Timer Outside Control) - True - True + +Treehouse First Purple Bridge (Treehouse) - Treehouse Second Purple Bridge - 0x17D6C: +158357 - 0x17DC8 (First Purple Bridge 1) - True - Stars & Dots +158358 - 0x17DC7 (First Purple Bridge 2) - 0x17DC8 - Stars & Dots +158359 - 0x17CE4 (First Purple Bridge 3) - 0x17DC7 - Stars & Dots +158360 - 0x17D2D (First Purple Bridge 4) - 0x17CE4 - Stars & Dots +158361 - 0x17D6C (First Purple Bridge 5) - 0x17D2D - Stars & Dots + +Treehouse Right Orange Bridge (Treehouse) - Treehouse Bridge Platform - 0x17DA2: +158391 - 0x17D88 (Right Orange Bridge 1) - True - Stars +158392 - 0x17DB4 (Right Orange Bridge 2) - 0x17D88 - Stars +158393 - 0x17D8C (Right Orange Bridge 3) - 0x17DB4 - Stars +158394 - 0x17CE3 (Right Orange Bridge 4 & Directional) - 0x17D8C - Stars & Environment +158395 - 0x17DCD (Right Orange Bridge 5) - 0x17CE3 - Stars +158396 - 0x17DB2 (Right Orange Bridge 6) - 0x17DCD - Stars +158397 - 0x17DCC (Right Orange Bridge 7) - 0x17DB2 - Stars +158398 - 0x17DCA (Right Orange Bridge 8) - 0x17DCC - Stars +158399 - 0x17D8E (Right Orange Bridge 9) - 0x17DCA - Stars +158400 - 0x17DB7 (Right Orange Bridge 10 & Directional) - 0x17D8E - Stars +158401 - 0x17DB1 (Right Orange Bridge 11) - 0x17DB7 - Stars +158402 - 0x17DA2 (Right Orange Bridge 12) - 0x17DB1 - Stars + +Treehouse Bridge Platform (Treehouse) - Main Island - 0x0C32D: +158404 - 0x037FF (Bridge Control) - True - Stars +Door - 0x0C32D (Drawbridge) - 0x037FF + +Treehouse Second Purple Bridge (Treehouse) - Treehouse Left Orange Bridge - 0x17DC6: +158362 - 0x17D9B (Second Purple Bridge 1) - True - Stars & Squares & Black/White Squares +158363 - 0x17D99 (Second Purple Bridge 2) - 0x17D9B - Stars & Squares & Black/White Squares +158364 - 0x17DAA (Second Purple Bridge 3) - 0x17D99 - Stars & Squares & Black/White Squares +158365 - 0x17D97 (Second Purple Bridge 4) - 0x17DAA - Stars & Squares & Black/White Squares & Colored Squares +158366 - 0x17BDF (Second Purple Bridge 5) - 0x17D97 - Stars & Squares & Colored Squares +158367 - 0x17D91 (Second Purple Bridge 6) - 0x17BDF - Stars & Squares & Colored Squares +158368 - 0x17DC6 (Second Purple Bridge 7) - 0x17D91 - Stars & Squares & Colored Squares + +Treehouse Left Orange Bridge (Treehouse) - Treehouse Laser Room - 0x0C323: +158376 - 0x17DB3 (Left Orange Bridge 1) - True - Stars & Squares & Black/White Squares & Stars + Same Colored Symbol +158377 - 0x17DB5 (Left Orange Bridge 2) - 0x17DB3 - Stars & Squares & Black/White Squares & Stars + Same Colored Symbol +158378 - 0x17DB6 (Left Orange Bridge 3) - 0x17DB5 - Stars & Squares & Black/White Squares & Stars + Same Colored Symbol +158379 - 0x17DC0 (Left Orange Bridge 4) - 0x17DB6 - Stars & Squares & Black/White Squares & Stars + Same Colored Symbol +158380 - 0x17DD7 (Left Orange Bridge 5) - 0x17DC0 - Stars & Squares & Black/White Squares & Colored Squares & Stars + Same Colored Symbol +158381 - 0x17DD9 (Left Orange Bridge 6) - 0x17DD7 - Stars & Squares & Black/White Squares & Colored Squares & Stars + Same Colored Symbol +158382 - 0x17DB8 (Left Orange Bridge 7) - 0x17DD9 - Stars & Squares & Black/White Squares & Colored Squares & Stars + Same Colored Symbol +158383 - 0x17DDC (Left Orange Bridge 8) - 0x17DB8 - Stars & Squares & Colored Squares & Stars + Same Colored Symbol +158384 - 0x17DD1 (Left Orange Bridge 9 & Directional) - 0x17DDC - Stars & Squares & Colored Squares & Stars + Same Colored Symbol & Environment +158385 - 0x17DDE (Left Orange Bridge 10) - 0x17DD1 - Stars & Squares & Colored Squares & Stars + Same Colored Symbol +158386 - 0x17DE3 (Left Orange Bridge 11) - 0x17DDE - Stars & Squares & Colored Squares & Stars + Same Colored Symbol +158387 - 0x17DEC (Left Orange Bridge 12) - 0x17DE3 - Stars & Squares & Black/White Squares & Stars + Same Colored Symbol +158388 - 0x17DAE (Left Orange Bridge 13) - 0x17DEC - Stars & Squares & Black/White Squares & Stars + Same Colored Symbol +158389 - 0x17DB0 (Left Orange Bridge 14) - 0x17DAE - Stars & Squares & Black/White Squares & Stars + Same Colored Symbol +158390 - 0x17DDB (Left Orange Bridge 15) - 0x17DB0 - Stars & Squares & Black/White Squares & Stars + Same Colored Symbol +158611 - 0x17FA0 (Burnt House Discard) - 0x17DDB - Triangles +Door - 0x0C323 (Door to Laser House) - 0x17DDB & 0x17DA2 & 0x2700B + +Treehouse Green Bridge (Treehouse): +158369 - 0x17E3C (Green Bridge 1) - True - Stars & Shapers +158370 - 0x17E4D (Green Bridge 2) - 0x17E3C - Stars & Shapers +158371 - 0x17E4F (Green Bridge 3) - 0x17E4D - Stars & Shapers & Rotated Shapers +158372 - 0x17E52 (Green Bridge 4 & Directional) - 0x17E4F - Stars & Rotated Shapers & Environment +158373 - 0x17E5B (Green Bridge 5) - 0x17E52 - Stars & Shapers & Colored Shapers & Stars + Same Colored Symbol +158374 - 0x17E5F (Green Bridge 6) - 0x17E5B - Stars & Shapers & Colored Shapers & Negative Shapers & Colored Negative Shapers & Stars + Same Colored Symbol +158375 - 0x17E61 (Green Bridge 7) - 0x17E5F - Stars & Shapers & Rotated Shapers +158610 - 0x17FA9 (Green Bridge Discard) - 0x17E61 - Triangles + +Treehouse Laser Room (Treehouse): +158712 - 0x03613 (Laser Panel) - True - True +158403 - 0x17CBC (Laser House Door Timer Inside Control) - True - True +Laser - 0x028A4 (Laser) - 0x03613 + +Mountaintop (Mountaintop) - Main Island - True - Inside Mountain Top Layer - 0x17C34: +158405 - 0x0042D (River Shape) - True - True +158406 - 0x09F7F (Box Short) - 7 Lasers - True +158407 - 0x17C34 (Trap Door Triple Exit) - 0x09F7F - Stars & Squares & Black/White Squares & Stars + Same Colored Symbol +158612 - 0x17C42 (Discard) - True - Triangles +158665 - 0x002A6 (Vault) - True - Symmetry & Colored Dots & Squares & Black/White Squares & Dots +158666 - 0x03542 (Vault Box) - 0x002A6 - True +158800 - 0xFFF00 (Box Long) - 7 Lasers & 11 Lasers & 0x17C34 - True + +Inside Mountain Top Layer (Inside Mountain) - Inside Mountain Top Layer Bridge - 0x09E39: +158408 - 0x09E39 (Light Bridge Controller) - True - Squares & Black/White Squares & Colored Squares & Eraser & Colored Eraser + +Inside Mountain Top Layer Bridge (Inside Mountain) - Inside Mountain Second Layer - 0x09E54: +158409 - 0x09E7A (Obscured Vision 1) - True - Obscured & Squares & Black/White Squares & Dots +158410 - 0x09E71 (Obscured Vision 2) - 0x09E7A - Obscured & Squares & Black/White Squares & Dots +158411 - 0x09E72 (Obscured Vision 3) - 0x09E71 - Obscured & Squares & Black/White Squares & Shapers & Dots +158412 - 0x09E69 (Obscured Vision 4) - 0x09E72 - Obscured & Squares & Black/White Squares & Dots +158413 - 0x09E7B (Obscured Vision 5) - 0x09E69 - Obscured & Squares & Black/White Squares & Dots +158414 - 0x09E73 (Moving Background 1) - True - Moving & Stars & Squares & Black/White Squares & Stars + Same Colored Symbol +158415 - 0x09E75 (Moving Background 2) - 0x09E73 - Moving & Stars & Squares & Black/White Squares & Stars + Same Colored Symbol +158416 - 0x09E78 (Moving Background 3) - 0x09E75 - Moving & Shapers +158417 - 0x09E79 (Moving Background 4) - 0x09E78 - Moving & Shapers & Rotated Shapers +158418 - 0x09E6C (Moving Background 5) - 0x09E79 - Moving & Stars & Squares & Black/White Squares & Stars + Same Colored Symbol +158419 - 0x09E6F (Moving Background 6) - 0x09E6C - Moving & Stars & Rotated Shapers & Shapers +158420 - 0x09E6B (Moving Background 7) - 0x09E6F - Moving & Stars & Dots +158421 - 0x33AF5 (Physically Obstructed 1) - True - Squares & Black/White Squares & Environment & Symmetry +158422 - 0x33AF7 (Physically Obstructed 2) - 0x33AF5 - Squares & Black/White Squares & Stars & Environment +158423 - 0x09F6E (Physically Obstructed 3) - 0x33AF7 - Symmetry & Dots & Environment +158424 - 0x09EAD (Angled Inside Trash 1) - True - Squares & Black/White Squares & Shapers & Angled +158425 - 0x09EAF (Angled Inside Trash 2) - 0x09EAD - Squares & Black/White Squares & Shapers & Angled +Door - 0x09E54 (Door to Second Layer) - 0x09EAF & 0x09F6E & 0x09E6B & 0x09E7B + +Inside Mountain Second Layer (Inside Mountain) - Inside Mountain Second Layer Light Bridge Room Near - 0x09FFB - Inside Mountain Second Layer Blue Bridge - 0x09E86: +158426 - 0x09FD3 (Color Cycle 1) - True - Color Cycle & RGB & Stars & Squares & Colored Squares & Stars + Same Colored Symbol +158427 - 0x09FD4 (Color Cycle 2) - 0x09FD3 - Color Cycle & RGB & Stars & Squares & Colored Squares & Stars + Same Colored Symbol +158428 - 0x09FD6 (Color Cycle 3) - 0x09FD4 - Color Cycle & RGB & Stars & Squares & Colored Squares & Stars + Same Colored Symbol +158429 - 0x09FD7 (Color Cycle 4) - 0x09FD6 - Color Cycle & RGB & Stars & Squares & Colored Squares & Stars + Same Colored Symbol & Shapers & Colored Shapers +158430 - 0x09FD8 (Color Cycle 5) - 0x09FD7 - Color Cycle & RGB & Squares & Colored Squares & Symmetry & Colored Dots +Door - 0x09FFB (Staircase Near) - 0x09FD8 + +Inside Mountain Second Layer Blue Bridge (Inside Mountain) - Inside Mountain Second Layer Beyond Bridge - TrueOneWay - Inside Mountain Second Layer Elevator Room - 0x09EDD: +Door - 0x09EDD (Door to Elevator) - 0x09ED8 & 0x09E86 + +Inside Mountain Second Layer Light Bridge Room Near (Inside Mountain): +158431 - 0x09E86 (Light Bridge Controller 2) - True - Stars & Stars + Same Colored Symbol & Colored Rotated Shapers & Rotated Shapers & Eraser & Two Lines + +Inside Mountain Second Layer Beyond Bridge (Inside Mountain) - Inside Mountain Second Layer Light Bridge Room Far - 0x09E07: +158432 - 0x09FCC (Same Solution 1) - True - Dots & Same Solution +158433 - 0x09FCE (Same Solution 2) - 0x09FCC - Squares & Black/White Squares & Same Solution +158434 - 0x09FCF (Same Solution 3) - 0x09FCE - Stars & Same Solution +158435 - 0x09FD0 (Same Solution 4) - 0x09FCF - Rotated Shapers & Same Solution +158436 - 0x09FD1 (Same Solution 5) - 0x09FD0 - Stars & Squares & Colored Squares & Stars + Same Colored Symbol & Same Solution +158437 - 0x09FD2 (Same Solution 6) - 0x09FD1 - Shapers & Same Solution +Door - 0x09E07 (Staircase Far) - 0x09FD2 + +Inside Mountain Second Layer Light Bridge Room Far (Inside Mountain): +158438 - 0x09ED8 (Light Bridge Controller 3) - True - Stars & Stars + Same Colored Symbol & Colored Rotated Shapers & Rotated Shapers & Eraser & Two Lines + +Inside Mountain Second Layer Elevator Room (Inside Mountain) - Inside Mountain Second Layer Elevator - TrueOneWay: +158613 - 0x17F93 (Elevator Discard) - True - Triangles + +Inside Mountain Second Layer Elevator (Inside Mountain) - Inside Mountain Second Layer Elevator Room - 0x09EEB - Inside Mountain Third Layer - 0x09EEB: +158439 - 0x09EEB (Elevator Control Panel) - True - Dots + +Inside Mountain Third Layer (Inside Mountain) - Inside Mountain Second Layer Elevator - TrueOneWay - Inside Mountain Bottom Layer - 0x09F89: +158440 - 0x09FC1 (Giant Puzzle Bottom Left) - True - Shapers & Eraser +158441 - 0x09F8E (Giant Puzzle Bottom Right) - True - Shapers & Eraser +158442 - 0x09F01 (Giant Puzzle Top Right) - True - Rotated Shapers +158443 - 0x09EFF (Giant Puzzle Top Left) - True - Shapers & Eraser +158444 - 0x09FDA (Giant Puzzle) - 0x09FC1 & 0x09F8E & 0x09F01 & 0x09EFF - Shapers & Symmetry +Door - 0x09F89 (Glass Door) - 0x09FDA + +Inside Mountain Bottom Layer (Inside Mountain) - Inside Mountain Bottom Layer Rock - 0x17FA2 - Final Room - 0x0C141: +158614 - 0x17FA2 (Bottom Layer Discard) - 0xFFF00 - Triangles & Environment +158445 - 0x01983 (Door to Final Room Left) - True - Shapers & Stars +158446 - 0x01987 (Door to Final Room Right) - True - Squares & Colored Squares & Dots +Door - 0x0C141 (Door to Final Room) - 0x01983 & 0x01987 + +Inside Mountain Bottom Layer Rock (Inside Mountain) - Inside Mountain Bottom Layer - 0x17F33 - Inside Mountain Path to Secret Area - 0x17F33: +Door - 0x17F33 (Bottom Layer Rock Open) - True + +Inside Mountain Path to Secret Area (Inside Mountain) - Inside Mountain Bottom Layer Rock - 0x334E1 - Inside Mountain Caves - 0x2D77D: +158447 - 0x00FF8 (Secret Area Entry Panel) - True - Triangles & Black/White Squares & Squares +Door - 0x2D77D (Door to Secret Area) - 0x00FF8 +158448 - 0x334E1 (Rock Control) - True - True + +Inside Mountain Caves (Inside Mountain Caves) - Main Island - 0x2D73F - Main Island - 0x2D859 - Path to Challenge - 0x019A5: +158451 - 0x335AB (Elevator Inside Control) - True - Dots & Squares & Black/White Squares +158452 - 0x335AC (Elevator Upper Outside Control) - 0x335AB - Squares & Black/White Squares +158453 - 0x3369D (Elevator Lower Outside Control) - 0x335AB - Squares & Black/White Squares & Dots +158454 - 0x00190 (Dot Grid Triangles 1) - True - Dots & Triangles +158455 - 0x00558 (Dot Grid Triangles 2) - 0x00190 - Dots & Triangles +158456 - 0x00567 (Dot Grid Triangles 3) - 0x00558 - Dots & Triangles +158457 - 0x006FE (Dot Grid Triangles 4) - 0x00567 - Dots & Triangles +158458 - 0x01A0D (Symmetry Triangles) - True - Symmetry & Triangles +158459 - 0x008B8 (Squares and Triangles) - True - Squares & Black/White Squares & Triangles +158460 - 0x00973 (Stars and Triangles) - 0x008B8 - Stars & Triangles +158461 - 0x0097B (Stars and Triangles of same color) - 0x00973 - Stars & Triangles & Stars and Triangles of same color & Stars + Same Colored Symbol +158462 - 0x0097D (Stars & Squares and Triangles) - 0x0097B - Stars & Squares & Black/White Squares & Stars + Same Colored Symbol & Triangles +158463 - 0x0097E (Stars & Squares and Triangles 2) - 0x0097D - Stars & Squares & Black/White Squares & Stars + Same Colored Symbol & Stars and Triangles of same color +158464 - 0x00994 (Rotated Shapers and Triangles 1) - True - Rotated Shapers & Triangles +158465 - 0x334D5 (Rotated Shapers and Triangles 2) - 0x00994 - Rotated Shapers & Triangles +158466 - 0x00995 (Rotated Shapers and Triangles 3) - 0x334D5 - Rotated Shapers & Triangles +158467 - 0x00996 (Shapers and Triangles 1) - 0x00995 - Shapers & Triangles +158468 - 0x00998 (Shapers and Triangles 2) - 0x00996 - Shapers & Triangles +158469 - 0x009A4 (Broken Shapers) - True - Shapers & Broken Shapers +158470 - 0x018A0 (Symmetry Shapers) - True - Shapers & Symmetry +158471 - 0x00A72 (Broken and Negative Shapers) - True - Shapers & Broken Shapers & Negative Shapers +158472 - 0x32962 (Rotated Broken Shapers) - True - Rotated Shapers & Broken Rotated Shapers +158473 - 0x32966 (Stars and Squares) - True - Stars & Squares & Black/White Squares & Stars + Same Colored Symbol +158474 - 0x01A31 (Rainbow Squares) - True - Color Cycle & RGB & Squares & Colored Squares +158475 - 0x00B71 (Squares & Stars and Colored Eraser) - True - Colored Eraser & Squares & Colored Squares & Stars & Stars + Same Colored Symbol & Eraser +158478 - 0x288EA (Wooden Beam Shapers) - True - Environment & Shapers +158479 - 0x288FC (Wooden Beam Squares and Shapers) - True - Environment & Squares & Black/White Squares & Shapers & Rotated Shapers +158480 - 0x289E7 (Wooden Beam Stars and Squares) - True - Environment & Stars & Squares & Black/White Squares +158481 - 0x288AA (Wooden Beam Shapers and Stars) - True - Environment & Stars & Shapers +158482 - 0x17FB9 (Upstairs Dot Grid Negative Shapers) - True - Shapers & Dots & Negative Shapers +158483 - 0x0A16B (Upstairs Dot Grid Gap Dots) - True - Dots +158484 - 0x0A2CE (Upstairs Dot Grid Stars) - 0x0A16B - Stars & Dots +158485 - 0x0A2D7 (Upstairs Dot Grid Stars & Squares) - 0x0A2CE - Dots & Black/White Squares & Stars + Same Colored Symbol & Stars +158486 - 0x0A2DD (Upstairs Dot Grid Shapers) - 0x0A2D7 - Shapers & Dots +158487 - 0x0A2EA (Upstairs Dot Grid Rotated Shapers) - 0x0A2DD - Rotated Shapers & Dots +158488 - 0x0008F (Upstairs Invisible Dots 1) - True - Dots & Invisible Dots +158489 - 0x0006B (Upstairs Invisible Dots 2) - 0x0008F - Dots & Invisible Dots +158490 - 0x0008B (Upstairs Invisible Dots 3) - 0x0006B - Dots & Invisible Dots +158491 - 0x0008C (Upstairs Invisible Dots 4) - 0x0008B - Dots & Invisible Dots +158492 - 0x0008A (Upstairs Invisible Dots 5) - 0x0008C - Dots & Invisible Dots +158493 - 0x00089 (Upstairs Invisible Dots 6) - 0x0008A - Dots & Invisible Dots +158494 - 0x0006A (Upstairs Invisible Dots 7) - 0x00089 - Dots & Invisible Dots +158495 - 0x0006C (Upstairs Invisible Dots 8) - 0x0006A - Dots & Invisible Dots +158496 - 0x00027 (Upstairs Invisible Dot Symmetry 1) - True - Dots & Invisible Dots & Symmetry +158497 - 0x00028 (Upstairs Invisible Dot Symmetry 2) - 0x00027 - Dots & Invisible Dots & Symmetry +158498 - 0x00029 (Upstairs Invisible Dot Symmetry 3) - 0x00028 - Dots & Invisible Dots & Symmetry +158476 - 0x09DD5 (Lone Pillar) - True - Pillar & Triangles +Door - 0x019A5 (Secret Black Door to Challenge) - 0x09DD5 +158449 - 0x021D7 (Shortcut to Mountain Panel) - True - Triangles & Stars & Stars + Same Colored Symbol & Colored Triangles +Door - 0x2D73F (Shortcut to Mountain Door) - 0x021D7 +158450 - 0x17CF2 (Shortcut to Swamp Panel) - True - Triangles +Door - 0x2D859 (Shortcut to Swamp Door) - 0x17CF2 + +Path to Challenge (Inside Mountain Caves) - Challenge - 0x0A19A: +158477 - 0x0A16E (Challenge Entry Panel) - True - Stars & Shapers & Colored Shapers & Stars + Same Colored Symbol +Door - 0x0A19A (Challenge Entry Door) - 0x0A16E + +Challenge (Challenge) - Theater Walkway - 0x0348A: +158499 - 0x0A332 (Start Timer) - 11 Lasers - True +158500 - 0x0088E (Small Basic) - 0x0A332 - True +158501 - 0x00BAF (Big Basic) - 0x0088E - True +158502 - 0x00BF3 (Square) - 0x00BAF - Squares & Black/White Squares +158503 - 0x00C09 (Maze Map) - 0x00BF3 - Dots +158504 - 0x00CDB (Stars and Dots) - 0x00C09 - Stars & Dots +158505 - 0x0051F (Symmetry) - 0x00CDB - Symmetry & Colored Dots & Dots +158506 - 0x00524 (Stars and Shapers) - 0x0051F - Stars & Shapers +158507 - 0x00CD4 (Big Basic 2) - 0x00524 - True +158508 - 0x00CB9 (Choice Squares Right) - 0x00CD4 - Squares & Black/White Squares +158509 - 0x00CA1 (Choice Squares Middle) - 0x00CD4 - Squares & Black/White Squares +158510 - 0x00C80 (Choice Squares Left) - 0x00CD4 - Squares & Black/White Squares +158511 - 0x00C68 (Choice Squares 2 Right) - 0x00CB9 | 0x00CA1 | 0x00C80 - Squares & Black/White Squares & Colored Squares +158512 - 0x00C59 (Choice Squares 2 Middle) - 0x00CB9 | 0x00CA1 | 0x00C80 - Squares & Black/White Squares & Colored Squares +158513 - 0x00C22 (Choice Squares 2 Left) - 0x00CB9 | 0x00CA1 | 0x00C80 - Squares & Black/White Squares & Colored Squares +158514 - 0x034F4 (Maze Hidden 1) - 0x00C68 | 0x00C59 | 0x00C22 - Triangles +158515 - 0x034EC (Maze Hidden 2) - 0x00C68 | 0x00C59 | 0x00C22 - Triangles +158516 - 0x1C31A (Dots Pillar) - 0x034F4 & 0x034EC - Dots & Symmetry & Pillar +158517 - 0x1C319 (Squares Pillar) - 0x034F4 & 0x034EC - Squares & Black/White Squares & Symmetry & Pillar +158667 - 0x0356B (Vault Box) - 0x1C31A & 0x1C319 - True +158518 - 0x039B4 (Door to Theater Walkway Panel) - True - Triangles +Door - 0x0348A (Door to Theater Walkway) - 0x039B4 + +Theater Walkway (Theater Walkway) - Windmill Interior - 0x27739 - Desert Lowest Level Inbetween Shortcuts - 0x27263 - Town - 0x09E87: +158668 - 0x2FAF6 (Vault Box) - True - True +158519 - 0x27732 (Theater Shortcut Panel) - True - True +Door - 0x27739 (Door to Windmill Interior) - 0x27732 +158520 - 0x2773D (Desert Shortcut Panel) - True - True +Door - 0x27263 (Door to Desert Elevator Room) - 0x2773D +158521 - 0x09E85 (Town Shortcut Panel) - True - Triangles +Door - 0x09E87 (Door to Town) - 0x09E85 + +Final Room (Inside Mountain Final Room) - Elevator - 0x339BB & 0x33961: +158522 - 0x0383A (Right Pillar 1) - True - Stars & Pillar +158523 - 0x09E56 (Right Pillar 2) - 0x0383A - Stars & Dots & Pillar +158524 - 0x09E5A (Right Pillar 3) - 0x09E56 - Dots & Pillar +158525 - 0x33961 (Right Pillar 4) - 0x09E5A - Dots & Symmetry & Pillar +158526 - 0x0383D (Left Pillar 1) - True - Dots & Pillar +158527 - 0x0383F (Left Pillar 2) - 0x0383D - Squares & Black/White Squares & Pillar +158528 - 0x03859 (Left Pillar 3) - 0x0383F - Shapers & Pillar +158529 - 0x339BB (Left Pillar 4) - 0x03859 - Squares & Black/White Squares & Stars & Symmetry & Pillar + +Elevator (Inside Mountain Final Room): +158530 - 0x3D9A6 (Elevator Door Closer Left) - True - True +158531 - 0x3D9A7 (Elevator Door Close Right) - True - True +158532 - 0x3C113 (Elevator Door Open Left) - 0x3D9A6 | 0x3D9A7 - True +158533 - 0x3C114 (Elevator Door Open Right) - 0x3D9A6 | 0x3D9A7 - True +158534 - 0x3D9AA (Back Wall Left) - 0x3D9A6 | 0x3D9A7 - True +158535 - 0x3D9A8 (Back Wall Right) - 0x3D9A6 | 0x3D9A7 - True +158536 - 0x3D9A9 (Elevator Start) - 0x3D9AA | 0x3D9A8 - True + +Boat (Boat) - Main Island - TrueOneWay - Swamp Near Boat - TrueOneWay - Treehouse Entry Area - TrueOneWay - Quarry Boathouse Behind Staircase - TrueOneWay - Inside Glass Factory Behind Back Wall - TrueOneWay: diff --git a/worlds/witness/__init__.py b/worlds/witness/__init__.py index 0857ef6b..01669cff 100644 --- a/worlds/witness/__init__.py +++ b/worlds/witness/__init__.py @@ -35,7 +35,7 @@ class WitnessWorld(World): """ game = "The Witness" topology_present = False - data_version = 2 + data_version = 5 static_logic = StaticWitnessLogic() static_locat = StaticWitnessLocations() @@ -53,11 +53,18 @@ class WitnessWorld(World): 'seed': self.world.random.randint(0, 1000000), 'victory_location': int(self.player_logic.VICTORY_LOCATION, 16), 'panelhex_to_id': self.locat.CHECK_PANELHEX_TO_ID, - 'doorhex_to_id': self.player_logic.DOOR_DICT_FOR_CLIENT, - 'door_connections_to_sever': self.player_logic.DOOR_CONNECTIONS_TO_SEVER + 'item_id_to_door_hexes': self.items.ITEM_ID_TO_DOOR_HEX, + 'door_hexes': self.items.DOORS, + 'symbols_not_in_the_game': self.items.SYMBOLS_NOT_IN_THE_GAME } def generate_early(self): + if not (is_option_enabled(self.world, self.player, "shuffle_symbols") + or get_option_value(self.world, self.player, "shuffle_doors") + or is_option_enabled(self.world, self.player, "shuffle_lasers")): + raise Exception("This Witness world doesn't have any progression items. Please turn on Symbol Shuffle, Door" + " Shuffle or Laser Shuffle") + self.player_logic = WitnessPlayerLogic(self.world, self.player) self.locat = WitnessPlayerLocations(self.world, self.player, self.player_logic) self.items = WitnessPlayerItems(self.locat, self.world, self.player, self.player_logic) @@ -78,11 +85,11 @@ class WitnessWorld(World): less_junk = 0 # Put good item on first check if symbol shuffle is on - # symbols = is_option_enabled(self.world, self.player, "shuffle_symbols") - symbols = True + symbols = is_option_enabled(self.world, self.player, "shuffle_symbols") if symbols: random_good_item = self.world.random.choice(self.items.GOOD_ITEMS) + first_check = self.world.get_location( "Tutorial Gate Open", self.player ) @@ -91,6 +98,10 @@ class WitnessWorld(World): less_junk = 1 + for item in self.player_logic.STARTING_INVENTORY: + self.world.push_precollected(items_by_name[item]) + pool.remove(items_by_name[item]) + for item in self.items.EXTRA_AMOUNTS: witness_item = self.create_item(item) for i in range(0, self.items.EXTRA_AMOUNTS[item]): diff --git a/worlds/witness/items.py b/worlds/witness/items.py index 0d753098..65a83269 100644 --- a/worlds/witness/items.py +++ b/worlds/witness/items.py @@ -51,12 +51,15 @@ class StaticWitnessItems: def __init__(self): item_tab = dict() - for item in StaticWitnessLogic.ALL_SYMBOL_ITEMS.union(StaticWitnessLogic.ALL_DOOR_ITEMS): + for item in StaticWitnessLogic.ALL_SYMBOL_ITEMS: if item[0] == "11 Lasers" or item == "7 Lasers": continue item_tab[item[0]] = ItemData(158000 + item[1], True, False) + for item in StaticWitnessLogic.ALL_DOOR_ITEMS: + item_tab[item[0]] = ItemData(158000 + item[1], True, False) + for item in StaticWitnessLogic.ALL_TRAPS: item_tab[item[0]] = ItemData( 158000 + item[1], False, False, True @@ -89,23 +92,39 @@ class WitnessPlayerItems: self.ITEM_TABLE = copy.copy(StaticWitnessItems.ALL_ITEM_TABLE) self.PROGRESSION_TABLE = dict() + self.ITEM_ID_TO_DOOR_HEX = dict() + self.DOORS = set() + + self.SYMBOLS_NOT_IN_THE_GAME = set() + self.EXTRA_AMOUNTS = { "Functioning Brain": 1, "Puzzle Skip": get_option_value(world, player, "puzzle_skip_amount") } for item in StaticWitnessLogic.ALL_SYMBOL_ITEMS.union(StaticWitnessLogic.ALL_DOOR_ITEMS): - if item not in player_logic.PROG_ITEMS_ACTUALLY_IN_THE_GAME: + if item[0] not in player_logic.PROG_ITEMS_ACTUALLY_IN_THE_GAME: del self.ITEM_TABLE[item[0]] + if item in StaticWitnessLogic.ALL_SYMBOL_ITEMS: + self.SYMBOLS_NOT_IN_THE_GAME.add(StaticWitnessItems.ALL_ITEM_TABLE[item[0]].code) else: self.PROGRESSION_TABLE[item[0]] = self.ITEM_TABLE[item[0]] + for entity_hex, items in player_logic.DOOR_ITEMS_BY_ID.items(): + entity_hex_int = int(entity_hex, 16) + + self.DOORS.add(entity_hex_int) + + for item in items: + item_id = StaticWitnessItems.ALL_ITEM_TABLE[item].code + self.ITEM_ID_TO_DOOR_HEX.setdefault(item_id, set()).add(entity_hex_int) + symbols = is_option_enabled(world, player, "shuffle_symbols") if "shuffle_symbols" not in the_witness_options.keys(): symbols = True - doors = is_option_enabled(world, player, "shuffle_doors") + doors = get_option_value(world, player, "shuffle_doors") if doors and symbols: self.GOOD_ITEMS = [ @@ -117,10 +136,10 @@ class WitnessPlayerItems: "Shapers", "Symmetry" ] - if is_option_enabled(world, player, "shuffle_discarded_panels"): - self.GOOD_ITEMS.append("Triangles") - if not is_option_enabled(world, player, "disable_non_randomized_puzzles"): - self.GOOD_ITEMS.append("Colored Squares") + if is_option_enabled(world, player, "shuffle_discarded_panels"): + self.GOOD_ITEMS.append("Triangles") + if not is_option_enabled(world, player, "disable_non_randomized_puzzles"): + self.GOOD_ITEMS.append("Colored Squares") for event_location in locat.EVENT_LOCATION_TABLE: location = player_logic.EVENT_ITEM_PAIRS[event_location] diff --git a/worlds/witness/locations.py b/worlds/witness/locations.py index 380c64c0..f6fcad70 100644 --- a/worlds/witness/locations.py +++ b/worlds/witness/locations.py @@ -2,7 +2,7 @@ Defines constants for different types of locations in the game """ -from .Options import is_option_enabled +from .Options import is_option_enabled, get_option_value from .player_logic import StaticWitnessLogic, WitnessPlayerLogic @@ -42,7 +42,7 @@ class StaticWitnessLocations: "Symmetry Island Colored Dots 6", "Symmetry Island Fading Lines 7", "Symmetry Island Scenery Outlines 5", - "Symmetry Island Laser", + "Symmetry Island Laser Panel", "Orchard Apple Tree 5", @@ -52,7 +52,7 @@ class StaticWitnessLocations: "Desert Artificial Light Reflection 3", "Desert Pond Reflection 5", "Desert Flood Reflection 6", - "Desert Laser", + "Desert Laser Panel", "Quarry Mill Eraser and Dots 6", "Quarry Mill Eraser and Squares 8", @@ -63,34 +63,34 @@ class StaticWitnessLocations: "Quarry Boathouse Stars & Eraser & Shapers 2", "Quarry Boathouse Stars & Eraser & Shapers 5", "Quarry Discard", - "Quarry Laser", + "Quarry Laser Panel", "Shadows Lower Avoid 8", "Shadows Environmental Avoid 8", "Shadows Follow 5", - "Shadows Laser", + "Shadows Laser Panel", "Keep Hedge Maze 4", "Keep Pressure Plates 4", "Keep Discard", - "Keep Laser Hedges", - "Keep Laser Pressure Plates", + "Keep Laser Panel Hedges", + "Keep Laser Panel Pressure Plates", "Shipwreck Vault Box", "Shipwreck Discard", "Monastery Rhombic Avoid 3", "Monastery Branch Follow 2", - "Monastery Laser", + "Monastery Laser Panel", "Town Cargo Box Discard", "Town Hexagonal Reflection", - "Town Square Avoid", + "Town Church Lattice", "Town Rooftop Discard", "Town Symmetry Squares 5 + Dots", "Town Full Dot Grid Shapers 5", "Town Shapers & Dots & Eraser", - "Town Laser", + "Town Laser Panel", "Theater Discard", @@ -98,7 +98,7 @@ class StaticWitnessLocations: "Jungle Waves 3", "Jungle Waves 7", "Jungle Popup Wall 6", - "Jungle Laser", + "Jungle Laser Panel", "River Vault Box", @@ -106,7 +106,7 @@ class StaticWitnessLocations: "Bunker Drawn Squares 9", "Bunker Drawn Squares through Tinted Glass 3", "Bunker Drop-Down Door Squares 2", - "Bunker Laser", + "Bunker Laser Panel", "Swamp Seperatable Shapers 6", "Swamp Combinable Shapers 8", @@ -117,7 +117,7 @@ class StaticWitnessLocations: "Swamp Red Underwater Negative Shapers 4", "Swamp More Rotated Shapers 4", "Swamp Blue Underwater Negative Shapers 5", - "Swamp Laser", + "Swamp Laser Panel", "Treehouse Yellow Bridge 9", "Treehouse First Purple Bridge 5", @@ -125,21 +125,12 @@ class StaticWitnessLocations: "Treehouse Green Bridge 7", "Treehouse Green Bridge Discard", "Treehouse Left Orange Bridge 15", - "Treehouse Burned House Discard", + "Treehouse Burnt House Discard", "Treehouse Right Orange Bridge 12", - "Treehouse Laser", + "Treehouse Laser Panel", "Mountaintop Discard", "Mountaintop Vault Box", - - "Inside Mountain Obscured Vision 5", - "Inside Mountain Moving Background 7", - "Inside Mountain Physically Obstructed 3", - "Inside Mountain Angled Inside Trash 2", - "Inside Mountain Color Cycle 5", - "Inside Mountain Same Solution 6", - "Inside Mountain Elevator Discard", - "Inside Mountain Giant Puzzle", } UNCOMMON_LOCATIONS = { @@ -156,35 +147,53 @@ class StaticWitnessLocations: "Swamp Underwater Back Optional", } - HARD_LOCATIONS = { - "Inside Mountain Secret Area Dot Grid Triangles 4", - "Inside Mountain Secret Area Symmetry Triangles", - "Inside Mountain Secret Area Stars & Squares and Triangles 2", - "Inside Mountain Secret Area Shapers and Triangles 2", - "Inside Mountain Secret Area Symmetry Shapers", - "Inside Mountain Secret Area Broken and Negative Shapers", - "Inside Mountain Secret Area Broken Shapers", + CAVES_LOCATIONS = { + "Inside Mountain Caves Dot Grid Triangles 4", + "Inside Mountain Caves Symmetry Triangles", + "Inside Mountain Caves Stars & Squares and Triangles 2", + "Inside Mountain Caves Shapers and Triangles 2", + "Inside Mountain Caves Symmetry Shapers", + "Inside Mountain Caves Broken and Negative Shapers", + "Inside Mountain Caves Broken Shapers", - "Inside Mountain Secret Area Rainbow Squares", - "Inside Mountain Secret Area Squares & Stars and Colored Eraser", - "Inside Mountain Secret Area Rotated Broken Shapers", - "Inside Mountain Secret Area Stars and Squares", - "Inside Mountain Secret Area Lone Pillar", - "Inside Mountain Secret Area Wooden Beam Shapers", - "Inside Mountain Secret Area Wooden Beam Squares and Shapers", - "Inside Mountain Secret Area Wooden Beam Stars and Squares", - "Inside Mountain Secret Area Wooden Beam Shapers and Stars", - "Inside Mountain Secret Area Upstairs Invisible Dots 8", - "Inside Mountain Secret Area Upstairs Invisible Dot Symmetry 3", - "Inside Mountain Secret Area Upstairs Dot Grid Negative Shapers", - "Inside Mountain Secret Area Upstairs Dot Grid Rotated Shapers", + "Inside Mountain Caves Rainbow Squares", + "Inside Mountain Caves Squares & Stars and Colored Eraser", + "Inside Mountain Caves Rotated Broken Shapers", + "Inside Mountain Caves Stars and Squares", + "Inside Mountain Caves Lone Pillar", + "Inside Mountain Caves Wooden Beam Shapers", + "Inside Mountain Caves Wooden Beam Squares and Shapers", + "Inside Mountain Caves Wooden Beam Stars and Squares", + "Inside Mountain Caves Wooden Beam Shapers and Stars", + "Inside Mountain Caves Upstairs Invisible Dots 8", + "Inside Mountain Caves Upstairs Invisible Dot Symmetry 3", + "Inside Mountain Caves Upstairs Dot Grid Negative Shapers", + "Inside Mountain Caves Upstairs Dot Grid Rotated Shapers", - "Challenge Vault Box", "Theater Walkway Vault Box", "Inside Mountain Bottom Layer Discard", "Theater Challenge Video", } + MOUNTAIN_UNREACHABLE_FROM_BEHIND = { + "Mountaintop Trap Door Triple Exit", + + "Inside Mountain Obscured Vision 5", + "Inside Mountain Moving Background 7", + "Inside Mountain Physically Obstructed 3", + "Inside Mountain Angled Inside Trash 2", + "Inside Mountain Color Cycle 5", + "Inside Mountain Same Solution 6", + } + + MOUNTAIN_REACHABLE_FROM_BEHIND = { + "Inside Mountain Elevator Discard", + "Inside Mountain Giant Puzzle", + + "Inside Mountain Final Room Left Pillar 4", + "Inside Mountain Final Room Right Pillar 4", + } + ALL_LOCATIONS_TO_ID = dict() @staticmethod @@ -193,12 +202,7 @@ class StaticWitnessLocations: Calculates the location ID for any given location """ - panel_offset = StaticWitnessLogic.CHECKS_BY_HEX[chex]["idOffset"] - type_offset = StaticWitnessLocations.TYPE_OFFSETS[ - StaticWitnessLogic.CHECKS_BY_HEX[chex]["panelType"] - ] - - return StaticWitnessLocations.ID_START + panel_offset + type_offset + return StaticWitnessLogic.CHECKS_BY_HEX[chex]["id"] @staticmethod def get_event_name(panel_hex): @@ -213,6 +217,7 @@ class StaticWitnessLocations: all_loc_to_id = { panel_obj["checkName"]: self.get_id(chex) for chex, panel_obj in StaticWitnessLogic.CHECKS_BY_HEX.items() + if panel_obj["id"] } all_loc_to_id = dict( @@ -229,12 +234,34 @@ class WitnessPlayerLocations: """ def __init__(self, world, player, player_logic: WitnessPlayerLogic): + """Defines locations AFTER logic changes due to options""" + self.PANEL_TYPES_TO_SHUFFLE = {"General", "Laser"} self.CHECK_LOCATIONS = ( StaticWitnessLocations.GENERAL_LOCATIONS ) - """Defines locations AFTER logic changes due to options""" + doors = get_option_value(world, player, "shuffle_doors") + earlyutm = is_option_enabled(world, player, "early_secret_area") + victory = get_option_value(world, player, "victory_condition") + lasers = get_option_value(world, player, "challenge_lasers") + laser_shuffle = get_option_value(world, player, "shuffle_lasers") + + postgame = set() + postgame = postgame | StaticWitnessLocations.CAVES_LOCATIONS + postgame = postgame | StaticWitnessLocations.MOUNTAIN_REACHABLE_FROM_BEHIND + postgame = postgame | StaticWitnessLocations.MOUNTAIN_UNREACHABLE_FROM_BEHIND + + self.CHECK_LOCATIONS = self.CHECK_LOCATIONS | postgame + + if earlyutm or doors >= 2 or (victory == 1 and (lasers <= 11 or laser_shuffle)): + postgame -= StaticWitnessLocations.CAVES_LOCATIONS + + if doors >= 2: + postgame -= StaticWitnessLocations.MOUNTAIN_REACHABLE_FROM_BEHIND + + if victory != 2: + postgame -= StaticWitnessLocations.MOUNTAIN_UNREACHABLE_FROM_BEHIND if is_option_enabled(world, player, "shuffle_discarded_panels"): self.PANEL_TYPES_TO_SHUFFLE.add("Discard") @@ -245,18 +272,11 @@ class WitnessPlayerLocations: if is_option_enabled(world, player, "shuffle_uncommon"): self.CHECK_LOCATIONS = self.CHECK_LOCATIONS | StaticWitnessLocations.UNCOMMON_LOCATIONS - if is_option_enabled(world, player, "shuffle_hard"): - self.CHECK_LOCATIONS = self.CHECK_LOCATIONS | StaticWitnessLocations.HARD_LOCATIONS - - if is_option_enabled(world, player, "shuffle_symbols") and is_option_enabled(world, player, "shuffle_doors"): - if is_option_enabled(world, player, "disable_non_randomized_puzzles"): - # This particular combination of logic settings leads to logic so restrictive that generation can fail - # Hence, we add some extra sphere 0 locations - - self.CHECK_LOCATIONS = self.CHECK_LOCATIONS | StaticWitnessLocations.EXTRA_LOCATIONS - self.CHECK_LOCATIONS = self.CHECK_LOCATIONS | player_logic.ADDED_CHECKS + if not is_option_enabled(world, player, "shuffle_postgame"): + self.CHECK_LOCATIONS -= postgame + self.CHECK_LOCATIONS = self.CHECK_LOCATIONS - { StaticWitnessLogic.CHECKS_BY_HEX[check_hex]["checkName"] for check_hex in player_logic.COMPLETELY_DISABLED_CHECKS @@ -272,7 +292,7 @@ class WitnessPlayerLocations: ) event_locations = { - p for p in player_logic.NECESSARY_EVENT_PANELS + p for p in player_logic.EVENT_PANELS } self.EVENT_LOCATION_TABLE = { diff --git a/worlds/witness/player_logic.py b/worlds/witness/player_logic.py index 689403dc..eb57f2c6 100644 --- a/worlds/witness/player_logic.py +++ b/worlds/witness/player_logic.py @@ -18,22 +18,15 @@ When the world has parsed its options, a second function is called to finalize t import copy from BaseClasses import MultiWorld from .static_logic import StaticWitnessLogic -from .utils import define_new_region, get_disable_unrandomized_list, parse_lambda, get_early_utm_list +from .utils import define_new_region, get_disable_unrandomized_list, parse_lambda, get_early_utm_list, \ + get_symbol_shuffle_list, get_door_panel_shuffle_list, get_doors_complex_list, get_doors_max_list, \ + get_doors_simple_list, get_laser_shuffle from .Options import is_option_enabled, get_option_value, the_witness_options class WitnessPlayerLogic: """WITNESS LOGIC CLASS""" - def update_door_dict(self, panel_hex): - item_id = StaticWitnessLogic.ALL_DOOR_ITEM_IDS_BY_HEX.get(panel_hex) - - if item_id is None: - return - - self.DOOR_DICT_FOR_CLIENT[panel_hex] = item_id - self.DOOR_CONNECTIONS_TO_SEVER.update(StaticWitnessLogic.CONNECTIONS_TO_SEVER_BY_DOOR_HEX[panel_hex]) - def reduce_req_within_region(self, panel_hex): """ Panels in this game often only turn on when other panels are solved. @@ -43,35 +36,42 @@ class WitnessPlayerLogic: Panels outside of the same region will still be checked manually. """ - these_items = self.DEPENDENT_REQUIREMENTS_BY_HEX[panel_hex]["items"] + check_obj = StaticWitnessLogic.CHECKS_BY_HEX[panel_hex] - real_items = {item[0] for item in self.PROG_ITEMS_ACTUALLY_IN_THE_GAME} + these_items = frozenset({frozenset()}) + + if check_obj["id"]: + these_items = self.DEPENDENT_REQUIREMENTS_BY_HEX[panel_hex]["items"] these_items = frozenset({ - subset.intersection(real_items) + subset.intersection(self.PROG_ITEMS_ACTUALLY_IN_THE_GAME) for subset in these_items }) + if panel_hex in self.DOOR_ITEMS_BY_ID: + door_items = frozenset({frozenset([item]) for item in self.DOOR_ITEMS_BY_ID[panel_hex]}) + + all_options = set() + + for items_option in these_items: + for dependentItem in door_items: + all_options.add(items_option.union(dependentItem)) + + return frozenset(all_options) + these_panels = self.DEPENDENT_REQUIREMENTS_BY_HEX[panel_hex]["panels"] - if StaticWitnessLogic.DOOR_NAMES_BY_HEX.get(panel_hex) in real_items: - self.update_door_dict(panel_hex) - - these_panels = frozenset({frozenset()}) - if these_panels == frozenset({frozenset()}): return these_items all_options = set() - check_obj = StaticWitnessLogic.CHECKS_BY_HEX[panel_hex] - for option in these_panels: dependent_items_for_option = frozenset({frozenset()}) for option_panel in option: - new_items = set() dep_obj = StaticWitnessLogic.CHECKS_BY_HEX.get(option_panel) + if option_panel in {"7 Lasers", "11 Lasers"}: new_items = frozenset({frozenset([option_panel])}) # If a panel turns on when a panel in a different region turns on, @@ -101,8 +101,34 @@ class WitnessPlayerLogic: return frozenset(all_options) def make_single_adjustment(self, adj_type, line): + from . import StaticWitnessItems """Makes a single logic adjustment based on additional logic file""" + if adj_type == "Items": + if line not in StaticWitnessItems.ALL_ITEM_TABLE: + raise RuntimeError("Item \"" + line + "\" does not exit.") + + self.PROG_ITEMS_ACTUALLY_IN_THE_GAME.add(line) + + if line in StaticWitnessLogic.ALL_DOOR_ITEMS_AS_DICT: + panel_hexes = StaticWitnessLogic.ALL_DOOR_ITEMS_AS_DICT[line][2] + for panel_hex in panel_hexes: + self.DOOR_ITEMS_BY_ID.setdefault(panel_hex, set()).add(line) + + return + + if adj_type == "Remove Items": + self.PROG_ITEMS_ACTUALLY_IN_THE_GAME.discard(line) + + if line in StaticWitnessLogic.ALL_DOOR_ITEMS_AS_DICT: + panel_hexes = StaticWitnessLogic.ALL_DOOR_ITEMS_AS_DICT[line][2] + for panel_hex in panel_hexes: + if panel_hex in self.DOOR_ITEMS_BY_ID: + self.DOOR_ITEMS_BY_ID[panel_hex].discard(line) + + if adj_type == "Starting Inventory": + self.STARTING_INVENTORY.add(line) + if adj_type == "Event Items": line_split = line.split(" - ") hex_set = line_split[1].split(",") @@ -130,18 +156,20 @@ class WitnessPlayerLogic: if adj_type == "Requirement Changes": line_split = line.split(" - ") - required_items = parse_lambda(line_split[2]) - items_actually_in_the_game = {item[0] for item in StaticWitnessLogic.ALL_SYMBOL_ITEMS} - required_items = frozenset( - subset.intersection(items_actually_in_the_game) - for subset in required_items - ) - requirement = { "panels": parse_lambda(line_split[1]), - "items": required_items } + if len(line_split) > 2: + required_items = parse_lambda(line_split[2]) + items_actually_in_the_game = {item[0] for item in StaticWitnessLogic.ALL_SYMBOL_ITEMS} + required_items = frozenset( + subset.intersection(items_actually_in_the_game) + for subset in required_items + ) + + requirement["items"] = required_items + self.DEPENDENT_REQUIREMENTS_BY_HEX[line_split[0]] = requirement return @@ -151,11 +179,6 @@ class WitnessPlayerLogic: self.COMPLETELY_DISABLED_CHECKS.add(panel_hex) - self.PROG_ITEMS_ACTUALLY_IN_THE_GAME = { - item for item in self.PROG_ITEMS_ACTUALLY_IN_THE_GAME - if item[0] != StaticWitnessLogic.DOOR_NAMES_BY_HEX.get(panel_hex) - } - return if adj_type == "Region Changes": @@ -189,18 +212,25 @@ class WitnessPlayerLogic: adjustment_linesets_in_order.append(get_disable_unrandomized_list()) if is_option_enabled(world, player, "shuffle_symbols") or "shuffle_symbols" not in the_witness_options.keys(): - self.PROG_ITEMS_ACTUALLY_IN_THE_GAME.update(StaticWitnessLogic.ALL_SYMBOL_ITEMS) + adjustment_linesets_in_order.append(get_symbol_shuffle_list()) - if is_option_enabled(world, player, "shuffle_doors"): - self.PROG_ITEMS_ACTUALLY_IN_THE_GAME.update(StaticWitnessLogic.ALL_DOOR_ITEMS) + if get_option_value(world, player, "shuffle_doors") == 1: + adjustment_linesets_in_order.append(get_door_panel_shuffle_list()) + + if get_option_value(world, player, "shuffle_doors") == 2: + adjustment_linesets_in_order.append(get_doors_simple_list()) + + if get_option_value(world, player, "shuffle_doors") == 3: + adjustment_linesets_in_order.append(get_doors_complex_list()) + + if get_option_value(world, player, "shuffle_doors") == 4: + adjustment_linesets_in_order.append(get_doors_max_list()) if is_option_enabled(world, player, "early_secret_area"): adjustment_linesets_in_order.append(get_early_utm_list()) - else: - self.PROG_ITEMS_ACTUALLY_IN_THE_GAME = { - item for item in self.PROG_ITEMS_ACTUALLY_IN_THE_GAME - if item[0] != "Mountaintop River Shape Power On" - } + + if is_option_enabled(world, player, "shuffle_lasers"): + adjustment_linesets_in_order.append(get_laser_shuffle()) for adjustment_lineset in adjustment_linesets_in_order: current_adjustment_type = None @@ -233,62 +263,32 @@ class WitnessPlayerLogic: pair = (name, self.EVENT_ITEM_NAMES[panel]) return pair - def _regions_are_adjacent(self, region1, region2): - for connection in self.CONNECTIONS_BY_REGION_NAME[region1]: - if connection[0] == region2: - return True - - for connection in self.CONNECTIONS_BY_REGION_NAME[region2]: - if connection[0] == region1: - return True - - return False - def make_event_panel_lists(self): """ Special event panel data structures """ - for region_conn in self.CONNECTIONS_BY_REGION_NAME.values(): - for region_and_option in region_conn: - for panelset in region_and_option[1]: - for panel in panelset: - self.EVENT_PANELS_FROM_REGIONS.add(panel) - self.ALWAYS_EVENT_NAMES_BY_HEX[self.VICTORY_LOCATION] = "Victory" - self.ORIGINAL_EVENT_PANELS.update(self.EVENT_PANELS_FROM_PANELS) - self.ORIGINAL_EVENT_PANELS.update(self.EVENT_PANELS_FROM_REGIONS) + for region_name, connections in self.CONNECTIONS_BY_REGION_NAME.items(): + for connection in connections: + for panel_req in connection[1]: + for panel in panel_req: + if panel == "TrueOneWay": + continue - for panel in self.EVENT_PANELS_FROM_REGIONS: - for region_name, region in StaticWitnessLogic.ALL_REGIONS_BY_NAME.items(): - for connection in self.CONNECTIONS_BY_REGION_NAME[region_name]: - connected_r = connection[0] - if connected_r not in StaticWitnessLogic.ALL_REGIONS_BY_NAME: - continue - if region_name == "Boat" or connected_r == "Boat": - continue - connected_r = StaticWitnessLogic.ALL_REGIONS_BY_NAME[connected_r] - if not any([panel in option for option in connection[1]]): - continue - if panel not in region["panels"] | connected_r["panels"]: - self.NECESSARY_EVENT_PANELS.add(panel) + if StaticWitnessLogic.CHECKS_BY_HEX[panel]["region"]["name"] != region_name: + self.EVENT_PANELS_FROM_REGIONS.add(panel) - for event_panel in self.EVENT_PANELS_FROM_PANELS: - for panel, panel_req in self.REQUIREMENTS_BY_HEX.items(): - if any([event_panel in item_set for item_set in panel_req]): - region1 = StaticWitnessLogic.CHECKS_BY_HEX[panel]["region"]["name"] - region2 = StaticWitnessLogic.CHECKS_BY_HEX[event_panel]["region"]["name"] - - if not self._regions_are_adjacent(region1, region2): - self.NECESSARY_EVENT_PANELS.add(event_panel) + self.EVENT_PANELS.update(self.EVENT_PANELS_FROM_PANELS) + self.EVENT_PANELS.update(self.EVENT_PANELS_FROM_REGIONS) for always_hex, always_item in self.ALWAYS_EVENT_NAMES_BY_HEX.items(): self.ALWAYS_EVENT_HEX_CODES.add(always_hex) - self.NECESSARY_EVENT_PANELS.add(always_hex) + self.EVENT_PANELS.add(always_hex) self.EVENT_ITEM_NAMES[always_hex] = always_item - for panel in self.NECESSARY_EVENT_PANELS: + for panel in self.EVENT_PANELS: pair = self.make_event_item_pair(panel) self.EVENT_ITEM_PAIRS[pair[0]] = pair[1] @@ -297,8 +297,8 @@ class WitnessPlayerLogic: self.EVENT_PANELS_FROM_REGIONS = set() self.PROG_ITEMS_ACTUALLY_IN_THE_GAME = set() - self.DOOR_DICT_FOR_CLIENT = dict() - self.DOOR_CONNECTIONS_TO_SEVER = set() + self.DOOR_ITEMS_BY_ID = dict() + self.STARTING_INVENTORY = set() self.CONNECTIONS_BY_REGION_NAME = copy.copy(StaticWitnessLogic.STATIC_CONNECTIONS_BY_REGION_NAME) self.DEPENDENT_REQUIREMENTS_BY_HEX = copy.copy(StaticWitnessLogic.STATIC_DEPENDENT_REQUIREMENTS_BY_HEX) @@ -306,8 +306,7 @@ class WitnessPlayerLogic: # Determining which panels need to be events is a difficult process. # At the end, we will have EVENT_ITEM_PAIRS for all the necessary ones. - self.ORIGINAL_EVENT_PANELS = set() - self.NECESSARY_EVENT_PANELS = set() + self.EVENT_PANELS = set() self.EVENT_ITEM_PAIRS = dict() self.ALWAYS_EVENT_HEX_CODES = set() self.COMPLETELY_DISABLED_CHECKS = set() @@ -320,42 +319,63 @@ class WitnessPlayerLogic: "0x00037": "Monastery Branch Panels Activate", "0x0A079": "Access to Bunker Laser", "0x0A3B5": "Door to Tutorial Discard Opens", + "0x00139": "Keep Hedges 2 Turns On", + "0x019DC": "Keep Hedges 3 Turns On", + "0x019E7": "Keep Hedges 4 Turns On", "0x01D3F": "Keep Laser Panel (Pressure Plates) Activates", "0x09F7F": "Mountain Access", "0x0367C": "Quarry Laser Mill Requirement Met", - "0x009A1": "Swamp Rotating Bridge Near Side", + "0x009A1": "Swamp Rotated Shapers 1 Activates", "0x00006": "Swamp Cyan Water Drains", "0x00990": "Swamp Broken Shapers 1 Activates", "0x0A8DC": "Lower Avoid 6 Activates", "0x0000A": "Swamp More Rotated Shapers 1 Access", - "0x09ED8": "Inside Mountain Second Layer Both Light Bridges Solved", + "0x09E86": "Inside Mountain Second Layer Blue Bridge Access", + "0x09ED8": "Inside Mountain Second Layer Yellow Bridge Access", "0x0A3D0": "Quarry Laser Boathouse Requirement Met", "0x00596": "Swamp Red Water Drains", - "0x28B39": "Town Tower 4th Door Opens", + "0x00E3A": "Swamp Purple Water Drains", "0x0343A": "Door to Symmetry Island Powers On", - "0xFFF00": "Inside Mountain Bottom Layer Discard Turns On" + "0xFFF00": "Inside Mountain Bottom Layer Discard Turns On", + "0x17CA6": "All Boat Panels Turn On", + "0x17CDF": "All Boat Panels Turn On", + "0x09DB8": "All Boat Panels Turn On", + "0x17C95": "All Boat Panels Turn On", + "0x03BB0": "Town Church Lattice Vision From Outside", + "0x28AC1": "Town Shapers & Dots & Eraser Turns On", + "0x28A69": "Town Tower 1st Door Opens", + "0x28ACC": "Town Tower 2nd Door Opens", + "0x28AD9": "Town Tower 3rd Door Opens", + "0x28B39": "Town Tower 4th Door Opens", + "0x03675": "Quarry Mill Ramp Activation From Above", + "0x03679": "Quarry Mill Lift Lowering While Standing On It", + "0x2FAF6": "Tutorial Gate Secret Solution Knowledge", + "0x079DF": "Town Hexagonal Reflection Turns On", + "0x17DA2": "Right Orange Bridge Fully Extended", + "0x19B24": "Shadows Lower Avoid Patterns Visible", + "0x2700B": "Open Door to Treehouse Laser House", + "0x00055": "Orchard Apple Trees 4 Turns On", } self.ALWAYS_EVENT_NAMES_BY_HEX = { - "0x0360D": "Symmetry Laser Activation", - "0x03608": "Desert Laser Activation", + "0x00509": "Symmetry Laser Activation", + "0x012FB": "Desert Laser Activation", "0x09F98": "Desert Laser Redirection", - "0x03612": "Quarry Laser Activation", - "0x19650": "Shadows Laser Activation", - "0x0360E": "Keep Laser Activation", - "0x03317": "Keep Laser Activation", - "0x17CA4": "Monastery Laser Activation", - "0x032F5": "Town Laser Activation", - "0x03616": "Jungle Laser Activation", - "0x09DE0": "Bunker Laser Activation", - "0x03615": "Swamp Laser Activation", - "0x03613": "Treehouse Laser Activation", + "0x01539": "Quarry Laser Activation", + "0x181B3": "Shadows Laser Activation", + "0x014BB": "Keep Laser Activation", + "0x17C65": "Monastery Laser Activation", + "0x032F9": "Town Laser Activation", + "0x00274": "Jungle Laser Activation", + "0x0C2B2": "Bunker Laser Activation", + "0x00BF6": "Swamp Laser Activation", + "0x028A4": "Treehouse Laser Activation", "0x03535": "Shipwreck Video Pattern Knowledge", "0x03542": "Mountain Video Pattern Knowledge", "0x0339E": "Desert Video Pattern Knowledge", "0x03481": "Tutorial Video Pattern Knowledge", "0x03702": "Jungle Video Pattern Knowledge", - "0x2FAF6": "Theater Walkway Video Pattern Knowledge", + "0x0356B": "Challenge Video Pattern Knowledge", "0x09F7F": "Mountaintop Trap Door Turns On", "0x17C34": "Mountain Access", } diff --git a/worlds/witness/regions.py b/worlds/witness/regions.py index a7d549e7..b5ee31b8 100644 --- a/worlds/witness/regions.py +++ b/worlds/witness/regions.py @@ -33,6 +33,10 @@ class WitnessRegions: source_region = world.get_region(source, player) target_region = world.get_region(target, player) + #print(source_region) + #print(target_region) + #print("---") + connection = Entrance( player, source + " to " + target + " via " + str(panel_hex_to_solve_set), @@ -76,10 +80,17 @@ class WitnessRegions: for connection in player_logic.CONNECTIONS_BY_REGION_NAME[region_name]: if connection[0] == "Entry": continue - self.connect(world, player, region_name, - connection[0], player_logic, connection[1]) - self.connect(world, player, connection[0], - region_name, player_logic, connection[1]) + + if connection[1] == frozenset({frozenset(["TrueOneWay"])}): + self.connect(world, player, region_name, connection[0], player_logic, frozenset({frozenset()})) + continue + + for subset in connection[1]: + if all({panel in player_logic.DOOR_ITEMS_BY_ID for panel in subset}): + if all({StaticWitnessLogic.CHECKS_BY_HEX[panel]["id"] is None for panel in subset}): + self.connect(world, player, connection[0], region_name, player_logic, frozenset({subset})) + + self.connect(world, player, region_name, connection[0], player_logic, connection[1]) world.get_entrance("The Splashscreen?", player).connect( world.get_region('First Hallway', player) diff --git a/worlds/witness/rules.py b/worlds/witness/rules.py index 1f13074a..cd1fae12 100644 --- a/worlds/witness/rules.py +++ b/worlds/witness/rules.py @@ -22,6 +22,21 @@ class WitnessLogic(LogicMixin): def _witness_has_lasers(self, world, player: int, amount: int) -> bool: lasers = 0 + if is_option_enabled(world, player, "shuffle_lasers"): + lasers += int(self.has("Symmetry Laser", player)) + lasers += int(self.has("Desert Laser", player) + and self.has("Desert Laser Redirection", player)) + lasers += int(self.has("Town Laser", player)) + lasers += int(self.has("Monastery Laser", player)) + lasers += int(self.has("Keep Laser", player)) + lasers += int(self.has("Quarry Laser", player)) + lasers += int(self.has("Treehouse Laser", player)) + lasers += int(self.has("Jungle Laser", player)) + lasers += int(self.has("Bunker Laser", player)) + lasers += int(self.has("Swamp Laser", player)) + lasers += int(self.has("Shadows Laser", player)) + return lasers >= amount + lasers += int(self.has("Symmetry Laser Activation", player)) lasers += int(self.has("Desert Laser Activation", player) and self.has("Desert Laser Redirection", player)) @@ -48,11 +63,8 @@ class WitnessLogic(LogicMixin): if (check_name + " Solved" in locat.EVENT_LOCATION_TABLE and not self.has(player_logic.EVENT_ITEM_PAIRS[check_name + " Solved"], player)): return False - if panel not in player_logic.ORIGINAL_EVENT_PANELS and not self.can_reach(check_name, "Location", player): - return False - if (panel in player_logic.ORIGINAL_EVENT_PANELS - and check_name + " Solved" not in locat.EVENT_LOCATION_TABLE - and not self._witness_safe_manual_panel_check(panel, world, player, player_logic, locat)): + if (check_name + " Solved" not in locat.EVENT_LOCATION_TABLE + and not self._witness_meets_item_requirements(panel, world, player, player_logic, locat)): return False return True @@ -79,8 +91,10 @@ class WitnessLogic(LogicMixin): if not self._witness_has_lasers(world, player, get_option_value(world, player, "challenge_lasers")): valid_option = False break - elif item in player_logic.ORIGINAL_EVENT_PANELS: - valid_option = self._witness_can_solve_panel(item, world, player, player_logic, locat) + elif item in player_logic.EVENT_PANELS: + if not self._witness_can_solve_panel(item, world, player, player_logic, locat): + valid_option = False + break elif not self.has(item, player): valid_option = False break @@ -90,24 +104,6 @@ class WitnessLogic(LogicMixin): return False - def _witness_safe_manual_panel_check(self, panel, world, player, player_logic: WitnessPlayerLogic, locat): - """ - nested can_reach can cause problems, but only if the region being - checked is neither of the two original regions from the first - can_reach. - A nested can_reach is okay here because the only panels this - function is called on are panels that exist on either side of all - connections they are required for. - The spoiler log looks so much nicer this way, - it gets rid of a bunch of event items, only leaving a couple. :) - """ - region = StaticWitnessLogic.CHECKS_BY_HEX[panel]["region"]["name"] - - return ( - self._witness_meets_item_requirements(panel, world, player, player_logic, locat) - and self.can_reach(region, "Region", player) - ) - def _witness_can_solve_panels(self, panel_hex_to_solve_set, world, player, player_logic: WitnessPlayerLogic, locat): """ Checks whether a set of panels can be solved. @@ -120,7 +116,12 @@ class WitnessLogic(LogicMixin): valid_option = True for panel in option: - if not self._witness_can_solve_panel(panel, world, player, player_logic, locat): + if panel in player_logic.DOOR_ITEMS_BY_ID: + if all({not self.has(item, player) for item in player_logic.DOOR_ITEMS_BY_ID[panel]}): + valid_option = False + break + + elif not self._witness_can_solve_panel(panel, world, player, player_logic, locat): valid_option = False break diff --git a/worlds/witness/Disable_Unrandomized.txt b/worlds/witness/settings/Disable_Unrandomized.txt similarity index 93% rename from worlds/witness/Disable_Unrandomized.txt rename to worlds/witness/settings/Disable_Unrandomized.txt index cad3804f..6f957ada 100644 --- a/worlds/witness/Disable_Unrandomized.txt +++ b/worlds/witness/settings/Disable_Unrandomized.txt @@ -1,18 +1,16 @@ Event Items: -Shadows Laser Activation - 0x00021,0x17D28,0x17C71 -Keep Laser Activation - 0x03317 -Bunker Laser Activation - 0x00061,0x17D01,0x17C42 -Monastery Laser Activation - 0x00A5B,0x17CE7,0x17FA9,0x17CA4 Town Tower 4th Door Opens - 0x17CFB,0x3C12B,0x00B8D,0x17CF7 +Monastery Laser Activation - 0x00A5B,0x17CE7,0x17FA9,0x17CA4 +Bunker Laser Activation - 0x00061,0x17D01,0x17C42 +Shadows Laser Activation - 0x00021,0x17D28,0x17C71 Requirement Changes: -0x17CA4 - True - True -0x28B39 - 0x2896A - Reflection +0x17C65 - 0x00A5B | 0x17CE7 | 0x17FA9 | 0x17CA4 +0x0C2B2 - 0x00061 | 0x17D01 | 0x17C42 +0x181B3 - 0x00021 | 0x17D28 | 0x17C71 +0x28B39 - True - Reflection 0x17CAB - True - True -Region Changes: -Quarry (Quarry) - Outside Quarry - 0x17C09 - Quarry Mill - 0x275ED - Quarry Mill - 0x17CAC - Disabled Locations: 0x03505 (Tutorial Gate Close) 0x0C335 (Tutorial Pillar) diff --git a/worlds/witness/settings/Door_Panel_Shuffle.txt b/worlds/witness/settings/Door_Panel_Shuffle.txt new file mode 100644 index 00000000..d6982f52 --- /dev/null +++ b/worlds/witness/settings/Door_Panel_Shuffle.txt @@ -0,0 +1,31 @@ +Items: +Glass Factory Entry Door (Panel) +Door to Symmetry Island Lower (Panel) +Door to Symmetry Island Upper (Panel) +Door to Desert Flood Light Room (Panel) +Desert Flood Room Flood Controls (Panel) +Quarry Door to Mill (Panel) +Quarry Mill Ramp Controls (Panel) +Quarry Mill Elevator Controls (Panel) +Quarry Boathouse Ramp Height Control (Panel) +Quarry Boathouse Ramp Horizontal Control (Panel) +Shadows Door Timer (Panel) +Monastery Entry Door Left (Panel) +Monastery Entry Door Right (Panel) +Town Door to RGB House (Panel) +Town Door to Church (Panel) +Town Maze Panel (Drop-Down Staircase) (Panel) +Windmill Door (Panel) +Treehouse First & Second Doors (Panel) +Treehouse Third Door (Panel) +Treehouse Laser House Door Timer (Panel) +Treehouse Shortcut Drop-Down Bridge (Panel) +Jungle Popup Wall (Panel) +Bunker Entry Door (Panel) +Inside Bunker Door to Bunker Proper (Panel) +Bunker Elevator Control (Panel) +Swamp Entry Door (Panel) +Swamp Sliding Bridge (Panel) +Swamp Rotating Bridge (Panel) +Swamp Maze Control (Panel) +Boat diff --git a/worlds/witness/settings/Doors_Complex.txt b/worlds/witness/settings/Doors_Complex.txt new file mode 100644 index 00000000..c62562e3 --- /dev/null +++ b/worlds/witness/settings/Doors_Complex.txt @@ -0,0 +1,201 @@ +Items: +Outside Tutorial Optional Door +Outside Tutorial Outpost Entry Door +Outside Tutorial Outpost Exit Door +Glass Factory Entry Door +Glass Factory Back Wall +Symmetry Island Lower Door +Symmetry Island Upper Door +Orchard Middle Gate +Orchard Final Gate +Desert Door to Flood Light Room +Desert Door to Pond Room +Desert Door to Water Levels Room +Desert Door to Elevator Room +Quarry Main Entry 1 +Quarry Main Entry 2 +Quarry Door to Mill +Quarry Mill Side Door +Quarry Mill Rooftop Shortcut +Quarry Mill Stairs +Quarry Boathouse Boat Staircase +Quarry Boathouse First Barrier +Quarry Boathouse Shortcut +Shadows Timed Door +Shadows Laser Room Right Door +Shadows Laser Room Left Door +Shadows Barrier to Quarry +Shadows Barrier to Ledge +Keep Hedge Maze 1 Exit Door +Keep Pressure Plates 1 Exit Door +Keep Hedge Maze 2 Shortcut +Keep Hedge Maze 2 Exit Door +Keep Hedge Maze 3 Shortcut +Keep Hedge Maze 3 Exit Door +Keep Hedge Maze 4 Shortcut +Keep Hedge Maze 4 Exit Door +Keep Pressure Plates 2 Exit Door +Keep Pressure Plates 3 Exit Door +Keep Pressure Plates 4 Exit Door +Keep Shortcut to Shadows +Keep Tower Shortcut +Monastery Shortcut +Monastery Inner Door +Monastery Outer Door +Monastery Door to Garden +Town Cargo Box Door +Town Wooden Roof Staircase +Town Tinted Door to RGB House +Town Door to Church +Town Maze Staircase +Town Windmill Door +Town RGB House Staircase +Town Tower Blue Panels Door +Town Tower Lattice Door +Town Tower Environmental Set Door +Town Tower Wooden Roof Set Door +Theater Entry Door +Theater Exit Door Left +Theater Exit Door Right +Jungle Bamboo Shortcut to River +Jungle Popup Wall +River Shortcut to Monastery Garden +Bunker Bunker Entry Door +Bunker Tinted Glass Door +Bunker Door to Ultraviolet Room +Bunker Door to Elevator +Swamp Entry Door +Swamp Door to Broken Shapers +Swamp Platform Shortcut Door +Swamp Cyan Water Pump +Swamp Door to Rotated Shapers +Swamp Red Water Pump +Swamp Red Underwater Exit +Swamp Blue Water Pump +Swamp Purple Water Pump +Swamp Near Laser Shortcut +Treehouse First Door +Treehouse Second Door +Treehouse Beyond Yellow Bridge Door +Treehouse Drawbridge +Treehouse Timed Door to Laser House +Inside Mountain First Layer Exit Door +Inside Mountain Second Layer Staircase Near +Inside Mountain Second Layer Exit Door +Inside Mountain Second Layer Staircase Far +Inside Mountain Giant Puzzle Exit Door +Inside Mountain Door to Final Room +Inside Mountain Bottom Layer Rock +Inside Mountain Door to Secret Area +Caves Pillar Door +Caves Mountain Shortcut +Caves Swamp Shortcut +Challenge Entry Door +Challenge Door to Theater Walkway +Theater Walkway Door to Windmill Interior +Theater Walkway Door to Desert Elevator Room +Theater Walkway Door to Town + +Added Locations: +Outside Tutorial Door to Outpost Panel +Outside Tutorial Exit Door from Outpost Panel +Glass Factory Entry Door Panel +Glass Factory Vertical Symmetry 5 +Symmetry Island Door to Symmetry Island Lower Panel +Symmetry Island Door to Symmetry Island Upper Panel +Orchard Apple Tree 3 +Orchard Apple Tree 5 +Desert Door to Desert Flood Light Room Panel +Desert Artificial Light Reflection 3 +Desert Door to Water Levels Room Panel +Desert Flood Reflection 6 +Quarry Door to Quarry 1 Panel +Quarry Door to Quarry 2 Panel +Quarry Door to Mill Right +Quarry Door to Mill Left +Quarry Mill Ground Floor Shortcut Door Panel +Quarry Mill Door to Outside Quarry Stairs Panel +Quarry Mill Stair Control +Quarry Boathouse Shortcut Door Panel +Shadows Door Timer Inside +Shadows Door Timer Outside +Shadows Environmental Avoid 8 +Shadows Follow 5 +Shadows Lower Avoid 3 +Shadows Lower Avoid 5 +Keep Hedge Maze 1 +Keep Pressure Plates 1 +Keep Hedge Maze 2 +Keep Hedge Maze 3 +Keep Hedge Maze 4 +Keep Pressure Plates 2 +Keep Pressure Plates 3 +Keep Pressure Plates 4 +Keep Shortcut to Shadows Panel +Keep Tower Shortcut to Keep Panel +Monastery Shortcut Door Panel +Monastery Door Open Left +Monastery Door Open Right +Monastery Rhombic Avoid 3 +Town Cargo Box Panel +Town Full Dot Grid Shapers 5 +Town Tinted Door Panel +Town Door to Church Stars Panel +Town Maze Stair Control +Town Windmill Door Panel +Town Sound Room Left +Town Sound Room Right +Town Symmetry Squares 5 + Dots +Town Church Lattice +Town Hexagonal Reflection +Town Shapers & Dots & Eraser +Windmill Door to Front of Theater Panel +Theater Door to Cargo Box Left Panel +Theater Door to Cargo Box Right Panel +Jungle Shortcut to River Panel +Jungle Popup Wall Control +River Rhombic Avoid to Monastery Garden +Bunker Bunker Entry Panel +Bunker Door to Bunker Proper Panel +Bunker Drawn Squares through Tinted Glass 3 +Bunker Drop-Down Door Squares 2 +Swamp Entry Panel +Swamp Platform Shapers 4 +Swamp Platform Shortcut Right Panel +Swamp Blue Underwater Negative Shapers 5 +Swamp Broken Shapers 4 +Swamp Cyan Underwater Negative Shapers 5 +Swamp Red Underwater Negative Shapers 4 +Swamp More Rotated Shapers 4 +Swamp More Rotated Shapers 4 +Swamp Near Laser Shortcut Right Panel +Treehouse First Door Panel +Treehouse Second Door Panel +Treehouse Beyond Yellow Bridge Door Panel +Treehouse Bridge Control +Treehouse Left Orange Bridge 15 +Treehouse Right Orange Bridge 12 +Treehouse Laser House Door Timer Outside Control +Treehouse Laser House Door Timer Inside Control +Inside Mountain Moving Background 7 +Inside Mountain Obscured Vision 5 +Inside Mountain Physically Obstructed 3 +Inside Mountain Angled Inside Trash 2 +Inside Mountain Color Cycle 5 +Inside Mountain Light Bridge Controller 2 +Inside Mountain Light Bridge Controller 3 +Inside Mountain Same Solution 6 +Inside Mountain Giant Puzzle +Inside Mountain Door to Final Room Left +Inside Mountain Door to Final Room Right +Inside Mountain Bottom Layer Discard +Inside Mountain Rock Control +Inside Mountain Secret Area Entry Panel +Inside Mountain Caves Lone Pillar +Inside Mountain Caves Shortcut to Mountain Panel +Inside Mountain Caves Shortcut to Swamp Panel +Inside Mountain Caves Challenge Entry Panel +Challenge Door to Theater Walkway Panel +Theater Walkway Theater Shortcut Panel +Theater Walkway Desert Shortcut Panel +Theater Walkway Town Shortcut Panel \ No newline at end of file diff --git a/worlds/witness/settings/Doors_Max.txt b/worlds/witness/settings/Doors_Max.txt new file mode 100644 index 00000000..ec0a56a5 --- /dev/null +++ b/worlds/witness/settings/Doors_Max.txt @@ -0,0 +1,212 @@ +Items: +Outside Tutorial Optional Door +Outside Tutorial Outpost Entry Door +Outside Tutorial Outpost Exit Door +Glass Factory Entry Door +Glass Factory Back Wall +Symmetry Island Lower Door +Symmetry Island Upper Door +Orchard Middle Gate +Orchard Final Gate +Desert Door to Flood Light Room +Desert Door to Pond Room +Desert Door to Water Levels Room +Desert Door to Elevator Room +Quarry Main Entry 1 +Quarry Main Entry 2 +Quarry Door to Mill +Quarry Mill Side Door +Quarry Mill Rooftop Shortcut +Quarry Mill Stairs +Quarry Boathouse Boat Staircase +Quarry Boathouse First Barrier +Quarry Boathouse Shortcut +Shadows Timed Door +Shadows Laser Room Right Door +Shadows Laser Room Left Door +Shadows Barrier to Quarry +Shadows Barrier to Ledge +Keep Hedge Maze 1 Exit Door +Keep Pressure Plates 1 Exit Door +Keep Hedge Maze 2 Shortcut +Keep Hedge Maze 2 Exit Door +Keep Hedge Maze 3 Shortcut +Keep Hedge Maze 3 Exit Door +Keep Hedge Maze 4 Shortcut +Keep Hedge Maze 4 Exit Door +Keep Pressure Plates 2 Exit Door +Keep Pressure Plates 3 Exit Door +Keep Pressure Plates 4 Exit Door +Keep Shortcut to Shadows +Keep Tower Shortcut +Monastery Shortcut +Monastery Inner Door +Monastery Outer Door +Monastery Door to Garden +Town Cargo Box Door +Town Wooden Roof Staircase +Town Tinted Door to RGB House +Town Door to Church +Town Maze Staircase +Town Windmill Door +Town RGB House Staircase +Town Tower Blue Panels Door +Town Tower Lattice Door +Town Tower Environmental Set Door +Town Tower Wooden Roof Set Door +Theater Entry Door +Theater Exit Door Left +Theater Exit Door Right +Jungle Bamboo Shortcut to River +Jungle Popup Wall +River Shortcut to Monastery Garden +Bunker Bunker Entry Door +Bunker Tinted Glass Door +Bunker Door to Ultraviolet Room +Bunker Door to Elevator +Swamp Entry Door +Swamp Door to Broken Shapers +Swamp Platform Shortcut Door +Swamp Cyan Water Pump +Swamp Door to Rotated Shapers +Swamp Red Water Pump +Swamp Red Underwater Exit +Swamp Blue Water Pump +Swamp Purple Water Pump +Swamp Near Laser Shortcut +Treehouse First Door +Treehouse Second Door +Treehouse Beyond Yellow Bridge Door +Treehouse Drawbridge +Treehouse Timed Door to Laser House +Inside Mountain First Layer Exit Door +Inside Mountain Second Layer Staircase Near +Inside Mountain Second Layer Exit Door +Inside Mountain Second Layer Staircase Far +Inside Mountain Giant Puzzle Exit Door +Inside Mountain Door to Final Room +Inside Mountain Bottom Layer Rock +Inside Mountain Door to Secret Area +Caves Pillar Door +Caves Mountain Shortcut +Caves Swamp Shortcut +Challenge Entry Door +Challenge Door to Theater Walkway +Theater Walkway Door to Windmill Interior +Theater Walkway Door to Desert Elevator Room +Theater Walkway Door to Town + +Desert Flood Room Flood Controls (Panel) +Quarry Mill Ramp Controls (Panel) +Quarry Mill Elevator Controls (Panel) +Quarry Boathouse Ramp Height Control (Panel) +Quarry Boathouse Ramp Horizontal Control (Panel) +Bunker Elevator Control (Panel) +Swamp Sliding Bridge (Panel) +Swamp Rotating Bridge (Panel) +Swamp Maze Control (Panel) +Boat + +Added Locations: +Outside Tutorial Door to Outpost Panel +Outside Tutorial Exit Door from Outpost Panel +Glass Factory Entry Door Panel +Glass Factory Vertical Symmetry 5 +Symmetry Island Door to Symmetry Island Lower Panel +Symmetry Island Door to Symmetry Island Upper Panel +Orchard Apple Tree 3 +Orchard Apple Tree 5 +Desert Door to Desert Flood Light Room Panel +Desert Artificial Light Reflection 3 +Desert Door to Water Levels Room Panel +Desert Flood Reflection 6 +Quarry Door to Quarry 1 Panel +Quarry Door to Quarry 2 Panel +Quarry Door to Mill Right +Quarry Door to Mill Left +Quarry Mill Ground Floor Shortcut Door Panel +Quarry Mill Door to Outside Quarry Stairs Panel +Quarry Mill Stair Control +Quarry Boathouse Shortcut Door Panel +Shadows Door Timer Inside +Shadows Door Timer Outside +Shadows Environmental Avoid 8 +Shadows Follow 5 +Shadows Lower Avoid 3 +Shadows Lower Avoid 5 +Keep Hedge Maze 1 +Keep Pressure Plates 1 +Keep Hedge Maze 2 +Keep Hedge Maze 3 +Keep Hedge Maze 4 +Keep Pressure Plates 2 +Keep Pressure Plates 3 +Keep Pressure Plates 4 +Keep Shortcut to Shadows Panel +Keep Tower Shortcut to Keep Panel +Monastery Shortcut Door Panel +Monastery Door Open Left +Monastery Door Open Right +Monastery Rhombic Avoid 3 +Town Cargo Box Panel +Town Full Dot Grid Shapers 5 +Town Tinted Door Panel +Town Door to Church Stars Panel +Town Maze Stair Control +Town Windmill Door Panel +Town Sound Room Left +Town Sound Room Right +Town Symmetry Squares 5 + Dots +Town Church Lattice +Town Hexagonal Reflection +Town Shapers & Dots & Eraser +Windmill Door to Front of Theater Panel +Theater Door to Cargo Box Left Panel +Theater Door to Cargo Box Right Panel +Jungle Shortcut to River Panel +Jungle Popup Wall Control +River Rhombic Avoid to Monastery Garden +Bunker Bunker Entry Panel +Bunker Door to Bunker Proper Panel +Bunker Drawn Squares through Tinted Glass 3 +Bunker Drop-Down Door Squares 2 +Swamp Entry Panel +Swamp Platform Shapers 4 +Swamp Platform Shortcut Right Panel +Swamp Blue Underwater Negative Shapers 5 +Swamp Broken Shapers 4 +Swamp Cyan Underwater Negative Shapers 5 +Swamp Red Underwater Negative Shapers 4 +Swamp More Rotated Shapers 4 +Swamp More Rotated Shapers 4 +Swamp Near Laser Shortcut Right Panel +Treehouse First Door Panel +Treehouse Second Door Panel +Treehouse Beyond Yellow Bridge Door Panel +Treehouse Bridge Control +Treehouse Left Orange Bridge 15 +Treehouse Right Orange Bridge 12 +Treehouse Laser House Door Timer Outside Control +Treehouse Laser House Door Timer Inside Control +Inside Mountain Moving Background 7 +Inside Mountain Obscured Vision 5 +Inside Mountain Physically Obstructed 3 +Inside Mountain Angled Inside Trash 2 +Inside Mountain Color Cycle 5 +Inside Mountain Light Bridge Controller 2 +Inside Mountain Light Bridge Controller 3 +Inside Mountain Same Solution 6 +Inside Mountain Giant Puzzle +Inside Mountain Door to Final Room Left +Inside Mountain Door to Final Room Right +Inside Mountain Bottom Layer Discard +Inside Mountain Rock Control +Inside Mountain Secret Area Entry Panel +Inside Mountain Caves Lone Pillar +Inside Mountain Caves Shortcut to Mountain Panel +Inside Mountain Caves Shortcut to Swamp Panel +Inside Mountain Caves Challenge Entry Panel +Challenge Door to Theater Walkway Panel +Theater Walkway Theater Shortcut Panel +Theater Walkway Desert Shortcut Panel +Theater Walkway Town Shortcut Panel \ No newline at end of file diff --git a/worlds/witness/settings/Doors_Simple.txt b/worlds/witness/settings/Doors_Simple.txt new file mode 100644 index 00000000..1335456d --- /dev/null +++ b/worlds/witness/settings/Doors_Simple.txt @@ -0,0 +1,146 @@ +Items: +Glass Factory Back Wall +Quarry Boathouse Boat Staircase +Outside Tutorial Outpost Doors +Glass Factory Entry Door +Symmetry Island Doors +Orchard Gates +Desert Doors +Quarry Main Entry +Quarry Door to Mill +Quarry Mill Shortcuts +Quarry Boathouse Barriers +Shadows Timed Door +Shadows Laser Room Door +Shadows Barriers +Keep Hedge Maze Doors +Keep Pressure Plates Doors +Keep Shortcuts +Monastery Entry Door +Monastery Shortcuts +Town Doors +Town Tower Doors +Theater Entry Door +Theater Exit Door +Jungle & River Shortcuts +Jungle Popup Wall +Bunker Doors +Swamp Doors +Swamp Near Laser Shortcut +Swamp Water Pumps +Treehouse Entry Doors +Treehouse Drawbridge +Treehouse Timed Door to Laser House +Inside Mountain First Layer Exit Door +Inside Mountain Second Layer Stairs & Doors +Inside Mountain Giant Puzzle Exit Door +Inside Mountain Door to Final Room +Inside Mountain Bottom Layer Doors to Caves +Caves Doors to Challenge +Caves Exits to Main Island +Challenge Door to Theater Walkway +Theater Walkway Doors + +Added Locations: +Outside Tutorial Door to Outpost Panel +Outside Tutorial Exit Door from Outpost Panel +Glass Factory Entry Door Panel +Glass Factory Vertical Symmetry 5 +Symmetry Island Door to Symmetry Island Lower Panel +Symmetry Island Door to Symmetry Island Upper Panel +Orchard Apple Tree 3 +Orchard Apple Tree 5 +Desert Door to Desert Flood Light Room Panel +Desert Artificial Light Reflection 3 +Desert Door to Water Levels Room Panel +Desert Flood Reflection 6 +Quarry Door to Quarry 1 Panel +Quarry Door to Quarry 2 Panel +Quarry Door to Mill Right +Quarry Door to Mill Left +Quarry Mill Ground Floor Shortcut Door Panel +Quarry Mill Door to Outside Quarry Stairs Panel +Quarry Mill Stair Control +Quarry Boathouse Shortcut Door Panel +Shadows Door Timer Inside +Shadows Door Timer Outside +Shadows Environmental Avoid 8 +Shadows Follow 5 +Shadows Lower Avoid 3 +Shadows Lower Avoid 5 +Keep Hedge Maze 1 +Keep Pressure Plates 1 +Keep Hedge Maze 2 +Keep Hedge Maze 3 +Keep Hedge Maze 4 +Keep Pressure Plates 2 +Keep Pressure Plates 3 +Keep Pressure Plates 4 +Keep Shortcut to Shadows Panel +Keep Tower Shortcut to Keep Panel +Monastery Shortcut Door Panel +Monastery Door Open Left +Monastery Door Open Right +Monastery Rhombic Avoid 3 +Town Cargo Box Panel +Town Full Dot Grid Shapers 5 +Town Tinted Door Panel +Town Door to Church Stars Panel +Town Maze Stair Control +Town Windmill Door Panel +Town Sound Room Left +Town Sound Room Right +Town Symmetry Squares 5 + Dots +Town Church Lattice +Town Hexagonal Reflection +Town Shapers & Dots & Eraser +Windmill Door to Front of Theater Panel +Theater Door to Cargo Box Left Panel +Theater Door to Cargo Box Right Panel +Jungle Shortcut to River Panel +Jungle Popup Wall Control +River Rhombic Avoid to Monastery Garden +Bunker Bunker Entry Panel +Bunker Door to Bunker Proper Panel +Bunker Drawn Squares through Tinted Glass 3 +Bunker Drop-Down Door Squares 2 +Swamp Entry Panel +Swamp Platform Shapers 4 +Swamp Platform Shortcut Right Panel +Swamp Blue Underwater Negative Shapers 5 +Swamp Broken Shapers 4 +Swamp Cyan Underwater Negative Shapers 5 +Swamp Red Underwater Negative Shapers 4 +Swamp More Rotated Shapers 4 +Swamp More Rotated Shapers 4 +Swamp Near Laser Shortcut Right Panel +Treehouse First Door Panel +Treehouse Second Door Panel +Treehouse Beyond Yellow Bridge Door Panel +Treehouse Bridge Control +Treehouse Left Orange Bridge 15 +Treehouse Right Orange Bridge 12 +Treehouse Laser House Door Timer Outside Control +Treehouse Laser House Door Timer Inside Control +Inside Mountain Moving Background 7 +Inside Mountain Obscured Vision 5 +Inside Mountain Physically Obstructed 3 +Inside Mountain Angled Inside Trash 2 +Inside Mountain Color Cycle 5 +Inside Mountain Light Bridge Controller 2 +Inside Mountain Light Bridge Controller 3 +Inside Mountain Same Solution 6 +Inside Mountain Giant Puzzle +Inside Mountain Door to Final Room Left +Inside Mountain Door to Final Room Right +Inside Mountain Bottom Layer Discard +Inside Mountain Rock Control +Inside Mountain Secret Area Entry Panel +Inside Mountain Caves Lone Pillar +Inside Mountain Caves Shortcut to Mountain Panel +Inside Mountain Caves Shortcut to Swamp Panel +Inside Mountain Caves Challenge Entry Panel +Challenge Door to Theater Walkway Panel +Theater Walkway Theater Shortcut Panel +Theater Walkway Desert Shortcut Panel +Theater Walkway Town Shortcut Panel \ No newline at end of file diff --git a/worlds/witness/settings/Early_UTM.txt b/worlds/witness/settings/Early_UTM.txt new file mode 100644 index 00000000..893f29d8 --- /dev/null +++ b/worlds/witness/settings/Early_UTM.txt @@ -0,0 +1,9 @@ +Items: +Caves Exits to Main Island + +Starting Inventory: +Caves Exits to Main Island + +Remove Items: +Caves Mountain Shortcut +Caves Swamp Shortcut \ No newline at end of file diff --git a/worlds/witness/settings/Laser_Shuffle.txt b/worlds/witness/settings/Laser_Shuffle.txt new file mode 100644 index 00000000..668a13f9 --- /dev/null +++ b/worlds/witness/settings/Laser_Shuffle.txt @@ -0,0 +1,12 @@ +Items: +Symmetry Laser +Desert Laser +Keep Laser +Shadows Laser +Quarry Laser +Town Laser +Swamp Laser +Jungle Laser +Bunker Laser +Monastery Laser +Treehouse Laser \ No newline at end of file diff --git a/worlds/witness/settings/Symbol_Shuffle.txt b/worlds/witness/settings/Symbol_Shuffle.txt new file mode 100644 index 00000000..d03391f5 --- /dev/null +++ b/worlds/witness/settings/Symbol_Shuffle.txt @@ -0,0 +1,14 @@ +Items: +Dots +Colored Dots +Sound Dots +Symmetry +Triangles +Eraser +Shapers +Rotated Shapers +Negative Shapers +Stars +Stars + Same Colored Symbol +Black/White Squares +Colored Squares \ No newline at end of file diff --git a/worlds/witness/static_logic.py b/worlds/witness/static_logic.py index 5f1d77d3..646957c4 100644 --- a/worlds/witness/static_logic.py +++ b/worlds/witness/static_logic.py @@ -5,12 +5,11 @@ from .utils import define_new_region, parse_lambda class StaticWitnessLogic: ALL_SYMBOL_ITEMS = set() + ALL_DOOR_ITEMS = set() + ALL_DOOR_ITEMS_AS_DICT = dict() ALL_USEFULS = set() ALL_TRAPS = set() ALL_BOOSTS = set() - ALL_DOOR_ITEM_IDS_BY_HEX = dict() - DOOR_NAMES_BY_HEX = dict() - ALL_DOOR_ITEMS = set() CONNECTIONS_TO_SEVER_BY_DOOR_HEX = dict() EVENT_PANELS_FROM_REGIONS = set() @@ -47,35 +46,23 @@ class StaticWitnessLogic: if line == "Usefuls:": current_set = self.ALL_USEFULS continue + if line == "Doors:": + current_set = self.ALL_DOOR_ITEMS + continue if line == "": continue line_split = line.split(" - ") - if current_set is not self.ALL_USEFULS: - current_set.add((line_split[1], int(line_split[0]))) - else: + if current_set is self.ALL_USEFULS: current_set.add((line_split[1], int(line_split[0]), line_split[2] == "True")) + elif current_set is self.ALL_DOOR_ITEMS: + new_door = (line_split[1], int(line_split[0]), frozenset(line_split[2].split(","))) + current_set.add(new_door) + self.ALL_DOOR_ITEMS_AS_DICT[line_split[1]] = new_door + else: + current_set.add((line_split[1], int(line_split[0]))) - path = os.path.join(os.path.dirname(__file__), "Door_Shuffle.txt") - with open(path, "r", encoding="utf-8") as file: - for line in file.readlines(): - line = line.strip() - - line_split = line.split(" - ") - - hex_set_split = line_split[1].split(",") - - sever_list = line_split[2].split(",") - sever_set = {sever_panel for sever_panel in sever_list if sever_panel != "None"} - - for door_hex in hex_set_split: - self.ALL_DOOR_ITEM_IDS_BY_HEX[door_hex] = int(line_split[0]) - self.CONNECTIONS_TO_SEVER_BY_DOOR_HEX[door_hex] = sever_set - - if len(line_split) > 3: - self.DOOR_NAMES_BY_HEX[door_hex] = line_split[3] - def read_logic_file(self): """ Reads the logic file and does the initial population of data structures @@ -84,10 +71,7 @@ class StaticWitnessLogic: with open(path, "r", encoding="utf-8") as file: current_region = dict() - discard_ids = 0 - normal_panel_ids = 0 - vault_ids = 0 - laser_ids = 0 + counter = 0 for line in file.readlines(): line = line.strip() @@ -95,7 +79,7 @@ class StaticWitnessLogic: if line == "": continue - if line[0] != "0": + if line[-1] == ":": new_region_and_connections = define_new_region(line) current_region = new_region_and_connections[0] region_name = current_region["name"] @@ -105,12 +89,33 @@ class StaticWitnessLogic: line_split = line.split(" - ") + location_id = line_split.pop(0) + check_name_full = line_split.pop(0) check_hex = check_name_full[0:7] check_name = check_name_full[9:-1] required_panel_lambda = line_split.pop(0) + + if location_id == "Door" or location_id == "Laser": + self.CHECKS_BY_HEX[check_hex] = { + "checkName": current_region["shortName"] + " " + check_name, + "checkHex": check_hex, + "region": current_region, + "id": None, + "panelType": location_id + } + + self.CHECKS_BY_NAME[self.CHECKS_BY_HEX[check_hex]["checkName"]] = self.CHECKS_BY_HEX[check_hex] + + self.STATIC_DEPENDENT_REQUIREMENTS_BY_HEX[check_hex] = { + "panels": parse_lambda(required_panel_lambda) + } + + current_region["panels"].add(check_hex) + continue + required_item_lambda = line_split.pop(0) laser_names = { @@ -123,53 +128,14 @@ class StaticWitnessLogic: if "Discard" in check_name: location_type = "Discard" - location_id = discard_ids - discard_ids += 1 elif is_vault_or_video or check_name == "Tutorial Gate Close": location_type = "Vault" - location_id = vault_ids - vault_ids += 1 elif check_name in laser_names: location_type = "Laser" - location_id = laser_ids - laser_ids += 1 else: location_type = "General" - if check_hex == "0x012D7": # Compatibility - normal_panel_ids += 1 - - if check_hex == "0x17E07": # Compatibility - location_id = 112 - - elif check_hex == "0xFFF00": - location_id = 800 - - else: - location_id = normal_panel_ids - normal_panel_ids += 1 - required_items = parse_lambda(required_item_lambda) - items_actually_in_the_game = {item[0] for item in self.ALL_SYMBOL_ITEMS} - required_items = set( - subset.intersection(items_actually_in_the_game) - for subset in required_items - ) - - doors_in_the_game = self.ALL_DOOR_ITEM_IDS_BY_HEX.keys() - if check_hex in doors_in_the_game: - door_name = current_region["shortName"] + " " + check_name + " Power On" - if check_hex in self.DOOR_NAMES_BY_HEX.keys(): - door_name = self.DOOR_NAMES_BY_HEX[check_hex] - - required_items = set( - subset.union(frozenset({door_name})) - for subset in required_items - ) - - self.ALL_DOOR_ITEMS.add( - (door_name, self.ALL_DOOR_ITEM_IDS_BY_HEX[check_hex]) - ) required_items = frozenset(required_items) @@ -182,7 +148,7 @@ class StaticWitnessLogic: "checkName": current_region["shortName"] + " " + check_name, "checkHex": check_hex, "region": current_region, - "idOffset": location_id, + "id": int(location_id), "panelType": location_type } diff --git a/worlds/witness/utils.py b/worlds/witness/utils.py index df4b4371..809b2b1c 100644 --- a/worlds/witness/utils.py +++ b/worlds/witness/utils.py @@ -98,9 +98,39 @@ def get_adjustment_file(adjustment_file): @cache_argsless def get_disable_unrandomized_list(): - return get_adjustment_file("Disable_Unrandomized.txt") + return get_adjustment_file("settings/Disable_Unrandomized.txt") @cache_argsless def get_early_utm_list(): - return get_adjustment_file("Early_UTM.txt") \ No newline at end of file + return get_adjustment_file("settings/Early_UTM.txt") + + +@cache_argsless +def get_symbol_shuffle_list(): + return get_adjustment_file("settings/Symbol_Shuffle.txt") + + +@cache_argsless +def get_door_panel_shuffle_list(): + return get_adjustment_file("settings/Door_Panel_Shuffle.txt") + + +@cache_argsless +def get_doors_simple_list(): + return get_adjustment_file("settings/Doors_Simple.txt") + + +@cache_argsless +def get_doors_complex_list(): + return get_adjustment_file("settings/Doors_Complex.txt") + + +@cache_argsless +def get_doors_max_list(): + return get_adjustment_file("settings/Doors_Max.txt") + + +@cache_argsless +def get_laser_shuffle(): + return get_adjustment_file("settings/Laser_Shuffle.txt")