The Witness: v4 Content Update (#1338)
## New Features: - EP Shuffle (Individual or Obelisk Sides, with varying difficulty levels) - Ability to play without Puzzle Randomization (I.e. vanilla + AP layer) - Pet the Dog to get a Puzzle Skip :) (No, really.) ## Changes: - Starting inventory behavior improved (Consider starting items like doors and lasers logically even if they aren't part of the mode) - Audio Log hint system improved (On low hint counts, you will no longer get the same locations hinted every time, i.e. always hints are shuffled) ## Fixes: - Many fixes to symbol requirements - Fixes to "shuffle_postgame" (What checks are evaluated as "postgame" in specific modes) - Logically irrelevant doors are now "useful" instead of "progression"
This commit is contained in:
parent
3cef39a387
commit
4de7ebd8b0
|
@ -58,6 +58,31 @@ class ShuffleVaultBoxes(Toggle):
|
||||||
display_name = "Shuffle Vault Boxes"
|
display_name = "Shuffle Vault Boxes"
|
||||||
|
|
||||||
|
|
||||||
|
class ShuffleEnvironmentalPuzzles(Choice):
|
||||||
|
"""
|
||||||
|
Add Environmental/Obelisk Puzzles into the location pool.
|
||||||
|
In "individual", every Environmental Puzzle sends an item.
|
||||||
|
In "obelisk_sides", completing every puzzle on one side of an Obelisk sends an item.
|
||||||
|
"""
|
||||||
|
display_name = "Shuffle Environmental Puzzles"
|
||||||
|
option_off = 0
|
||||||
|
option_individual = 1
|
||||||
|
option_obelisk_sides = 2
|
||||||
|
|
||||||
|
|
||||||
|
class ShuffleDog(Toggle):
|
||||||
|
"""Add petting the Town dog into the location pool."""
|
||||||
|
|
||||||
|
display_name = "Pet the Dog"
|
||||||
|
|
||||||
|
|
||||||
|
class EnvironmentalPuzzlesDifficulty(Choice):
|
||||||
|
display_name = "Environmental Puzzles Difficulty"
|
||||||
|
option_normal = 0
|
||||||
|
option_tedious = 1
|
||||||
|
option_eclipse = 2
|
||||||
|
|
||||||
|
|
||||||
class ShufflePostgame(Toggle):
|
class ShufflePostgame(Toggle):
|
||||||
"""Adds locations into the pool that are guaranteed to become accessible after or at the same time as your goal.
|
"""Adds locations into the pool that are guaranteed to become accessible after or at the same time as your goal.
|
||||||
Use this if you don't play with release on victory. IMPORTANT NOTE: The possibility of your second
|
Use this if you don't play with release on victory. IMPORTANT NOTE: The possibility of your second
|
||||||
|
@ -81,6 +106,7 @@ class PuzzleRandomization(Choice):
|
||||||
display_name = "Puzzle Randomization"
|
display_name = "Puzzle Randomization"
|
||||||
option_sigma_normal = 0
|
option_sigma_normal = 0
|
||||||
option_sigma_expert = 1
|
option_sigma_expert = 1
|
||||||
|
option_none = 2
|
||||||
|
|
||||||
|
|
||||||
class MountainLasers(Range):
|
class MountainLasers(Range):
|
||||||
|
@ -133,6 +159,8 @@ the_witness_options: Dict[str, type] = {
|
||||||
"disable_non_randomized_puzzles": DisableNonRandomizedPuzzles,
|
"disable_non_randomized_puzzles": DisableNonRandomizedPuzzles,
|
||||||
"shuffle_discarded_panels": ShuffleDiscardedPanels,
|
"shuffle_discarded_panels": ShuffleDiscardedPanels,
|
||||||
"shuffle_vault_boxes": ShuffleVaultBoxes,
|
"shuffle_vault_boxes": ShuffleVaultBoxes,
|
||||||
|
"shuffle_EPs": ShuffleEnvironmentalPuzzles,
|
||||||
|
"EP_difficulty": EnvironmentalPuzzlesDifficulty,
|
||||||
"shuffle_postgame": ShufflePostgame,
|
"shuffle_postgame": ShufflePostgame,
|
||||||
"victory_condition": VictoryCondition,
|
"victory_condition": VictoryCondition,
|
||||||
"mountain_lasers": MountainLasers,
|
"mountain_lasers": MountainLasers,
|
||||||
|
|
|
@ -1,6 +1,11 @@
|
||||||
First Hallway (First Hallway) - Entry - True - Tutorial - 0x00182:
|
Entry (Entry):
|
||||||
|
|
||||||
|
First Hallway (First Hallway) - Entry - True - First Hallway Room - 0x00064:
|
||||||
158000 - 0x00064 (Straight) - True - True
|
158000 - 0x00064 (Straight) - True - True
|
||||||
158001 - 0x00182 (Bend) - 0x00064 - True
|
159510 - 0x01848 (EP) - 0x00064 - True
|
||||||
|
|
||||||
|
First Hallway Room (First Hallway) - Tutorial - 0x00182:
|
||||||
|
158001 - 0x00182 (Bend) - True - True
|
||||||
|
|
||||||
Tutorial (Tutorial) - Outside Tutorial - 0x03629:
|
Tutorial (Tutorial) - Outside Tutorial - 0x03629:
|
||||||
158002 - 0x00293 (Front Center) - True - True
|
158002 - 0x00293 (Front Center) - True - True
|
||||||
|
@ -10,8 +15,11 @@ Tutorial (Tutorial) - Outside Tutorial - 0x03629:
|
||||||
158006 - 0x0A3B2 (Back Right) - True - True
|
158006 - 0x0A3B2 (Back Right) - True - True
|
||||||
158007 - 0x03629 (Gate Open) - 0x002C2 & 0x0A3B5 & 0x0A3B2 - True
|
158007 - 0x03629 (Gate Open) - 0x002C2 & 0x0A3B5 & 0x0A3B2 - True
|
||||||
158008 - 0x03505 (Gate Close) - 0x2FAF6 - True
|
158008 - 0x03505 (Gate Close) - 0x2FAF6 - True
|
||||||
158009 - 0x0C335 (Pillar) - True - Triangles - True
|
158009 - 0x0C335 (Pillar) - True - Triangles
|
||||||
158010 - 0x0C373 (Patio Floor) - 0x0C335 - Dots
|
158010 - 0x0C373 (Patio Floor) - 0x0C335 - Dots
|
||||||
|
159512 - 0x33530 (Cloud EP) - True - True
|
||||||
|
159513 - 0x33600 (Patio Flowers EP) - 0x0C373 - True
|
||||||
|
159517 - 0x3352F (Gate EP) - 0x03505 - True
|
||||||
|
|
||||||
Outside Tutorial (Outside Tutorial) - Outside Tutorial Path To Outpost - 0x03BA2:
|
Outside Tutorial (Outside Tutorial) - Outside Tutorial Path To Outpost - 0x03BA2:
|
||||||
158650 - 0x033D4 (Vault) - True - Dots & Black/White Squares
|
158650 - 0x033D4 (Vault) - True - Dots & Black/White Squares
|
||||||
|
@ -31,6 +39,10 @@ Outside Tutorial (Outside Tutorial) - Outside Tutorial Path To Outpost - 0x03BA2
|
||||||
158025 - 0x00020 (Tree Row 8) - 0x0001F - Black/White Squares
|
158025 - 0x00020 (Tree Row 8) - 0x0001F - Black/White Squares
|
||||||
158026 - 0x00021 (Tree Row 9) - 0x00020 - Black/White Squares
|
158026 - 0x00021 (Tree Row 9) - 0x00020 - Black/White Squares
|
||||||
Door - 0x03BA2 (Outpost Path) - 0x0A3B5
|
Door - 0x03BA2 (Outpost Path) - 0x0A3B5
|
||||||
|
159511 - 0x03D06 (Garden EP) - True - True
|
||||||
|
159514 - 0x28A2F (Town Sewer EP) - True - True
|
||||||
|
159516 - 0x334A3 (Path EP) - True - True
|
||||||
|
159500 - 0x035C7 (Tractor EP) - True - True
|
||||||
|
|
||||||
Outside Tutorial Path To Outpost (Outside Tutorial) - Outside Tutorial Outpost - 0x0A170:
|
Outside Tutorial Path To Outpost (Outside Tutorial) - Outside Tutorial Outpost - 0x0A170:
|
||||||
158011 - 0x0A171 (Outpost Entry Panel) - True - Dots & Full Dots
|
158011 - 0x0A171 (Outpost Entry Panel) - True - Dots & Full Dots
|
||||||
|
@ -41,12 +53,14 @@ Outside Tutorial Outpost (Outside Tutorial) - Outside Tutorial - 0x04CA3:
|
||||||
Door - 0x04CA3 (Outpost Exit) - 0x04CA4
|
Door - 0x04CA3 (Outpost Exit) - 0x04CA4
|
||||||
158600 - 0x17CFB (Discard) - True - Triangles
|
158600 - 0x17CFB (Discard) - True - Triangles
|
||||||
|
|
||||||
Main Island () - Outside Tutorial - True:
|
Main Island (Main Island) - Outside Tutorial - True:
|
||||||
|
159550 - 0x28B91 (Thundercloud EP) - 0x09F98 & 0x012FB - True
|
||||||
|
|
||||||
Outside Glass Factory (Glass Factory) - Main Island - True - Inside Glass Factory - 0x01A29:
|
Outside Glass Factory (Glass Factory) - Main Island - True - Inside Glass Factory - 0x01A29:
|
||||||
158027 - 0x01A54 (Entry Panel) - True - Symmetry
|
158027 - 0x01A54 (Entry Panel) - True - Symmetry
|
||||||
Door - 0x01A29 (Entry) - 0x01A54
|
Door - 0x01A29 (Entry) - 0x01A54
|
||||||
158601 - 0x3C12B (Discard) - True - Triangles
|
158601 - 0x3C12B (Discard) - True - Triangles
|
||||||
|
159002 - 0x28B8A (Vase EP) - 0x01A54 - True
|
||||||
|
|
||||||
Inside Glass Factory (Glass Factory) - Inside Glass Factory Behind Back Wall - 0x0D7ED:
|
Inside Glass Factory (Glass Factory) - Inside Glass Factory Behind Back Wall - 0x0D7ED:
|
||||||
158028 - 0x00086 (Back Wall 1) - True - Symmetry
|
158028 - 0x00086 (Back Wall 1) - True - Symmetry
|
||||||
|
@ -95,6 +109,7 @@ Symmetry Island Lower (Symmetry Island) - Symmetry Island Upper - 0x18269:
|
||||||
158063 - 0x00B8D (Scenery Outlines 5) - 0x00B53 - Symmetry
|
158063 - 0x00B8D (Scenery Outlines 5) - 0x00B53 - Symmetry
|
||||||
158064 - 0x1C349 (Upper Panel) - 0x00076 - Symmetry & Dots
|
158064 - 0x1C349 (Upper Panel) - 0x00076 - Symmetry & Dots
|
||||||
Door - 0x18269 (Upper) - 0x1C349
|
Door - 0x18269 (Upper) - 0x1C349
|
||||||
|
159000 - 0x0332B (Glass Factory Black Line Reflection EP) - True - True
|
||||||
|
|
||||||
Symmetry Island Upper (Symmetry Island):
|
Symmetry Island Upper (Symmetry Island):
|
||||||
158065 - 0x00A52 (Yellow 1) - True - Symmetry & Colored Dots
|
158065 - 0x00A52 (Yellow 1) - True - Symmetry & Colored Dots
|
||||||
|
@ -104,7 +119,8 @@ Symmetry Island Upper (Symmetry Island):
|
||||||
158069 - 0x00A64 (Blue 2) - 0x00A61 & 0x00A52 - Symmetry & Colored Dots
|
158069 - 0x00A64 (Blue 2) - 0x00A61 & 0x00A52 - Symmetry & Colored Dots
|
||||||
158070 - 0x00A68 (Blue 3) - 0x00A64 & 0x00A57 - Symmetry & Colored Dots
|
158070 - 0x00A68 (Blue 3) - 0x00A64 & 0x00A57 - Symmetry & Colored Dots
|
||||||
158700 - 0x0360D (Laser Panel) - 0x00A68 - True
|
158700 - 0x0360D (Laser Panel) - 0x00A68 - True
|
||||||
Laser - 0x00509 (Laser) - 0x0360D - True
|
Laser - 0x00509 (Laser) - 0x0360D
|
||||||
|
159001 - 0x03367 (Glass Factory Black Line EP) - True - True
|
||||||
|
|
||||||
Orchard (Orchard) - Main Island - True - Orchard Beyond First Gate - 0x03307:
|
Orchard (Orchard) - Main Island - True - Orchard Beyond First Gate - 0x03307:
|
||||||
158071 - 0x00143 (Apple Tree 1) - True - True
|
158071 - 0x00143 (Apple Tree 1) - True - True
|
||||||
|
@ -134,9 +150,18 @@ Desert Outside (Desert) - Main Island - True - Desert Floodlight Room - 0x09FEE:
|
||||||
158084 - 0x09F94 (Surface 8) - 0x0A053 & 0x09F86 - True
|
158084 - 0x09F94 (Surface 8) - 0x0A053 & 0x09F86 - True
|
||||||
158085 - 0x09F86 (Surface 8 Control) - 0x0A053 - True
|
158085 - 0x09F86 (Surface 8 Control) - 0x0A053 - True
|
||||||
158086 - 0x0C339 (Light Room Entry Panel) - 0x09F94 - True
|
158086 - 0x0C339 (Light Room Entry Panel) - 0x09F94 - True
|
||||||
Door - 0x09FEE (Light Room Entry) - 0x0C339 - True
|
Door - 0x09FEE (Light Room Entry) - 0x0C339
|
||||||
158701 - 0x03608 (Laser Panel) - 0x012D7 & 0x0A15F - True
|
158701 - 0x03608 (Laser Panel) - 0x012D7 & 0x0A15F - True
|
||||||
Laser - 0x012FB (Laser) - 0x03608
|
Laser - 0x012FB (Laser) - 0x03608
|
||||||
|
159020 - 0x3351D (Sand Snake EP) - True - True
|
||||||
|
159030 - 0x0053C (Facade Right EP) - True - True
|
||||||
|
159031 - 0x00771 (Facade Left EP) - True - True
|
||||||
|
159032 - 0x335C8 (Stairs Left EP) - True - True
|
||||||
|
159033 - 0x335C9 (Stairs Right EP) - True - True
|
||||||
|
159036 - 0x220E4 (Broken Wall Straight EP) - True - True
|
||||||
|
159037 - 0x220E5 (Broken Wall Bend EP) - True - True
|
||||||
|
159040 - 0x334B9 (Shore EP) - True - True
|
||||||
|
159041 - 0x334BC (Island EP) - True - True
|
||||||
|
|
||||||
Desert Floodlight Room (Desert) - Desert Pond Room - 0x0C2C3:
|
Desert Floodlight Room (Desert) - Desert Pond Room - 0x0C2C3:
|
||||||
158087 - 0x09FAA (Light Control) - True - True
|
158087 - 0x09FAA (Light Control) - True - True
|
||||||
|
@ -153,6 +178,8 @@ Desert Pond Room (Desert) - Desert Water Levels Room - 0x0A24B:
|
||||||
158095 - 0x18313 (Pond Room 5) - 0x0078D - True
|
158095 - 0x18313 (Pond Room 5) - 0x0078D - True
|
||||||
158096 - 0x0A249 (Flood Room Entry Panel) - 0x18313 - True
|
158096 - 0x0A249 (Flood Room Entry Panel) - 0x18313 - True
|
||||||
Door - 0x0A24B (Flood Room Entry) - 0x0A249
|
Door - 0x0A24B (Flood Room Entry) - 0x0A249
|
||||||
|
159043 - 0x0A14C (Pond Room Near Reflection EP) - True - True
|
||||||
|
159044 - 0x0A14D (Pond Room Far Reflection EP) - True - True
|
||||||
|
|
||||||
Desert Water Levels Room (Desert) - Desert Elevator Room - 0x0C316:
|
Desert Water Levels Room (Desert) - Desert Elevator Room - 0x0C316:
|
||||||
158097 - 0x1C2DF (Reduce Water Level Far Left) - True - True
|
158097 - 0x1C2DF (Reduce Water Level Far Left) - True - True
|
||||||
|
@ -170,6 +197,7 @@ Desert Water Levels Room (Desert) - Desert Elevator Room - 0x0C316:
|
||||||
158109 - 0x17ECA (Flood Room 5) - 0x0117A & 0x1C260 & 0x1831C - True
|
158109 - 0x17ECA (Flood Room 5) - 0x0117A & 0x1C260 & 0x1831C - True
|
||||||
158110 - 0x18076 (Flood Room 6) - 0x17ECA & 0x1C260 & 0x1831C - True
|
158110 - 0x18076 (Flood Room 6) - 0x17ECA & 0x1C260 & 0x1831C - True
|
||||||
Door - 0x0C316 (Elevator Room Entry) - 0x18076
|
Door - 0x0C316 (Elevator Room Entry) - 0x18076
|
||||||
|
159034 - 0x337F8 (Flood Room EP) - 0x1C2DF - True
|
||||||
|
|
||||||
Desert Elevator Room (Desert) - Desert Lowest Level Inbetween Shortcuts - 0x012FB:
|
Desert Elevator Room (Desert) - Desert Lowest Level Inbetween Shortcuts - 0x012FB:
|
||||||
158111 - 0x17C31 (Final Transparent) - True - True
|
158111 - 0x17C31 (Final Transparent) - True - True
|
||||||
|
@ -178,22 +206,31 @@ Desert Elevator Room (Desert) - Desert Lowest Level Inbetween Shortcuts - 0x012F
|
||||||
158115 - 0x0A15C (Final Bent 1) - True - True
|
158115 - 0x0A15C (Final Bent 1) - True - True
|
||||||
158116 - 0x09FFF (Final Bent 2) - 0x0A15C - True
|
158116 - 0x09FFF (Final Bent 2) - 0x0A15C - True
|
||||||
158117 - 0x0A15F (Final Bent 3) - 0x09FFF - True
|
158117 - 0x0A15F (Final Bent 3) - 0x09FFF - True
|
||||||
|
159035 - 0x037BB (Elevator EP) - 0x012FB - True
|
||||||
|
|
||||||
Desert Lowest Level Inbetween Shortcuts (Desert):
|
Desert Lowest Level Inbetween Shortcuts (Desert):
|
||||||
|
|
||||||
Outside Quarry (Quarry) - Main Island - True - Quarry Between Entrys - 0x09D6F:
|
Outside Quarry (Quarry) - Main Island - True - Quarry Between Entrys - 0x09D6F - Quarry Elevator - TrueOneWay:
|
||||||
158118 - 0x09E57 (Entry 1 Panel) - True - Black/White Squares
|
158118 - 0x09E57 (Entry 1 Panel) - True - Black/White Squares
|
||||||
158120 - 0x17CC4 (Elevator Control) - 0x0367C - Dots & Eraser
|
|
||||||
158603 - 0x17CF0 (Discard) - True - Triangles
|
158603 - 0x17CF0 (Discard) - True - Triangles
|
||||||
158702 - 0x03612 (Laser Panel) - 0x0A3D0 & 0x0367C - Eraser & Shapers
|
158702 - 0x03612 (Laser Panel) - 0x0A3D0 & 0x0367C - Eraser & Shapers
|
||||||
Laser - 0x01539 (Laser) - 0x03612
|
Laser - 0x01539 (Laser) - 0x03612
|
||||||
Door - 0x09D6F (Entry 1) - 0x09E57
|
Door - 0x09D6F (Entry 1) - 0x09E57
|
||||||
|
159404 - 0x28A4A (Shore EP) - True - True
|
||||||
|
159410 - 0x334B6 (Entrance Pipe EP) - True - True
|
||||||
|
159412 - 0x28A4C (Sand Pile EP) - True - True
|
||||||
|
159420 - 0x289CF (Rock Line EP) - True - True
|
||||||
|
159421 - 0x289D1 (Rock Line Reflection EP) - True - True
|
||||||
|
|
||||||
|
Quarry Elevator (Quarry):
|
||||||
|
158120 - 0x17CC4 (Elevator Control) - 0x0367C - Dots & Eraser
|
||||||
|
159403 - 0x17CB9 (Railroad EP) - 0x17CC4 - True
|
||||||
|
|
||||||
Quarry Between Entrys (Quarry) - Quarry - 0x17C07:
|
Quarry Between Entrys (Quarry) - Quarry - 0x17C07:
|
||||||
158119 - 0x17C09 (Entry 2 Panel) - True - Shapers
|
158119 - 0x17C09 (Entry 2 Panel) - True - Shapers
|
||||||
Door - 0x17C07 (Entry 2) - 0x17C09
|
Door - 0x17C07 (Entry 2) - 0x17C09
|
||||||
|
|
||||||
Quarry (Quarry) - Quarry Mill Ground Floor - 0x02010:
|
Quarry (Quarry) - Quarry Mill Ground Floor - 0x02010 - Quarry Elevator - 0x17CC4:
|
||||||
158121 - 0x01E5A (Mill Entry Left Panel) - True - Black/White Squares
|
158121 - 0x01E5A (Mill Entry Left Panel) - True - Black/White Squares
|
||||||
158122 - 0x01E59 (Mill Entry Right Panel) - True - Dots
|
158122 - 0x01E59 (Mill Entry Right Panel) - True - Dots
|
||||||
Door - 0x02010 (Mill Entry) - 0x01E59 & 0x01E5A
|
Door - 0x02010 (Mill Entry) - 0x01E59 & 0x01E5A
|
||||||
|
@ -229,6 +266,8 @@ Quarry Mill Upper Floor (Quarry Mill) - Quarry Mill Middle Floor - 0x03676 & 0x0
|
||||||
Door - 0x0368A (Stairs) - 0x03677
|
Door - 0x0368A (Stairs) - 0x03677
|
||||||
158143 - 0x3C125 (Control Room Left) - 0x0367C - Black/White Squares & Dots & Eraser
|
158143 - 0x3C125 (Control Room Left) - 0x0367C - Black/White Squares & Dots & Eraser
|
||||||
158144 - 0x0367C (Control Room Right) - 0x014E9 - Colored Squares & Dots & Eraser
|
158144 - 0x0367C (Control Room Right) - 0x014E9 - Colored Squares & Dots & Eraser
|
||||||
|
159411 - 0x0069D (Ramp EP) - 0x03676 & 0x275FF - True
|
||||||
|
159413 - 0x00614 (Lift EP) - 0x275FF & 0x03675 - True
|
||||||
|
|
||||||
Quarry Boathouse (Quarry Boathouse) - Quarry - True - Quarry Boathouse Upper Front - 0x03852 - Quarry Boathouse Behind Staircase - 0x2769B:
|
Quarry Boathouse (Quarry Boathouse) - Quarry - True - Quarry Boathouse Upper Front - 0x03852 - Quarry Boathouse Behind Staircase - 0x2769B:
|
||||||
158146 - 0x034D4 (Intro Left) - True - Stars
|
158146 - 0x034D4 (Intro Left) - True - Stars
|
||||||
|
@ -250,6 +289,7 @@ Door - 0x17C50 (First Barrier) - 0x021AE
|
||||||
|
|
||||||
Quarry Boathouse Upper Middle (Quarry Boathouse) - Quarry Boathouse Upper Back - 0x03858:
|
Quarry Boathouse Upper Middle (Quarry Boathouse) - Quarry Boathouse Upper Back - 0x03858:
|
||||||
158154 - 0x03858 (Ramp Horizontal Control) - True - Shapers & Eraser
|
158154 - 0x03858 (Ramp Horizontal Control) - True - Shapers & Eraser
|
||||||
|
159402 - 0x00859 (Moving Ramp EP) - 0x03858 & 0x03852 & 0x3865F - True
|
||||||
|
|
||||||
Quarry Boathouse Upper Back (Quarry Boathouse) - Quarry Boathouse Upper Middle - 0x3865F:
|
Quarry Boathouse Upper Back (Quarry Boathouse) - Quarry Boathouse Upper Middle - 0x3865F:
|
||||||
158155 - 0x38663 (Second Barrier Panel) - True - True
|
158155 - 0x38663 (Second Barrier Panel) - True - True
|
||||||
|
@ -267,6 +307,7 @@ Door - 0x3865F (Second Barrier) - 0x38663
|
||||||
158167 - 0x0A3CB (Back Second Row 1) - 0x09DB4 - Stars & Eraser & Shapers
|
158167 - 0x0A3CB (Back Second Row 1) - 0x09DB4 - Stars & Eraser & Shapers
|
||||||
158168 - 0x0A3CC (Back Second Row 2) - 0x0A3CB - Stars & Eraser & Shapers
|
158168 - 0x0A3CC (Back Second Row 2) - 0x0A3CB - Stars & Eraser & Shapers
|
||||||
158169 - 0x0A3D0 (Back Second Row 3) - 0x0A3CC - Stars & Eraser & Shapers
|
158169 - 0x0A3D0 (Back Second Row 3) - 0x0A3CC - Stars & Eraser & Shapers
|
||||||
|
159401 - 0x005F6 (Hook EP) - 0x275FA & 0x03852 & 0x3865F - True
|
||||||
|
|
||||||
Shadows (Shadows) - Main Island - True - Shadows Ledge - 0x19B24 - Shadows Laser Room - 0x194B2 & 0x19665:
|
Shadows (Shadows) - Main Island - True - Shadows Ledge - 0x19B24 - Shadows Laser Room - 0x194B2 & 0x19665:
|
||||||
158170 - 0x334DB (Door Timer Outside) - True - True
|
158170 - 0x334DB (Door Timer Outside) - True - True
|
||||||
|
@ -289,6 +330,7 @@ Door - 0x194B2 (Laser Entry Right) - 0x1972F
|
||||||
158185 - 0x197E8 (Near 4) - 0x197E0 - True
|
158185 - 0x197E8 (Near 4) - 0x197E0 - True
|
||||||
158186 - 0x197E5 (Near 5) - 0x197E8 - True
|
158186 - 0x197E5 (Near 5) - 0x197E8 - True
|
||||||
Door - 0x19665 (Laser Entry Left) - 0x197E5
|
Door - 0x19665 (Laser Entry Left) - 0x197E5
|
||||||
|
159400 - 0x28A7B (Quarry Mill Rooftop Vent EP) - True - True
|
||||||
|
|
||||||
Shadows Ledge (Shadows) - Shadows - 0x1855B - Quarry - 0x19865 & 0x0A2DF:
|
Shadows Ledge (Shadows) - Shadows - 0x1855B - Quarry - 0x19865 & 0x0A2DF:
|
||||||
158187 - 0x334DC (Door Timer Inside) - True - True
|
158187 - 0x334DC (Door Timer Inside) - True - True
|
||||||
|
@ -306,12 +348,19 @@ Shadows Laser Room (Shadows):
|
||||||
158703 - 0x19650 (Laser Panel) - True - True
|
158703 - 0x19650 (Laser Panel) - True - True
|
||||||
Laser - 0x181B3 (Laser) - 0x19650
|
Laser - 0x181B3 (Laser) - 0x19650
|
||||||
|
|
||||||
|
Treehouse Beach (Treehouse Beach) - Main Island - True:
|
||||||
|
159200 - 0x0053D (Rock Shadow EP) - True - True
|
||||||
|
159201 - 0x0053E (Sand Shadow EP) - True - True
|
||||||
|
159212 - 0x220BD (Both Orange Bridges EP) - 0x17DA2 & 0x17DDB - True
|
||||||
|
|
||||||
Keep (Keep) - Main Island - True - Keep 2nd Maze - 0x01954 - Keep 2nd Pressure Plate - 0x01BEC:
|
Keep (Keep) - Main Island - True - Keep 2nd Maze - 0x01954 - Keep 2nd Pressure Plate - 0x01BEC:
|
||||||
158193 - 0x00139 (Hedge Maze 1) - True - True
|
158193 - 0x00139 (Hedge Maze 1) - True - True
|
||||||
158197 - 0x0A3A8 (Reset Pressure Plates 1) - True - True
|
158197 - 0x0A3A8 (Reset Pressure Plates 1) - True - True
|
||||||
158198 - 0x033EA (Pressure Plates 1) - 0x0A3A8 - Dots
|
158198 - 0x033EA (Pressure Plates 1) - 0x0A3A8 - Dots
|
||||||
Door - 0x01954 (Hedge Maze 1 Exit) - 0x00139
|
Door - 0x01954 (Hedge Maze 1 Exit) - 0x00139
|
||||||
Door - 0x01BEC (Pressure Plates 1 Exit) - 0x033EA
|
Door - 0x01BEC (Pressure Plates 1 Exit) - 0x033EA
|
||||||
|
159430 - 0x03E77 (Red Flowers EP) - True - True
|
||||||
|
159431 - 0x03E7C (Purple Flowers EP) - True - True
|
||||||
|
|
||||||
Keep 2nd Maze (Keep) - Keep - 0x018CE - Keep 3rd Maze - 0x019D8:
|
Keep 2nd Maze (Keep) - Keep - 0x018CE - Keep 3rd Maze - 0x019D8:
|
||||||
Door - 0x018CE (Hedge Maze 2 Shortcut) - 0x00139
|
Door - 0x018CE (Hedge Maze 2 Shortcut) - 0x00139
|
||||||
|
@ -350,6 +399,13 @@ Shipwreck (Shipwreck) - Keep 3rd Pressure Plate - True:
|
||||||
158654 - 0x00AFB (Vault) - True - Symmetry & Sound Dots & Colored Dots
|
158654 - 0x00AFB (Vault) - True - Symmetry & Sound Dots & Colored Dots
|
||||||
158655 - 0x03535 (Vault Box) - 0x00AFB - True
|
158655 - 0x03535 (Vault Box) - 0x00AFB - True
|
||||||
158605 - 0x17D28 (Discard) - True - Triangles
|
158605 - 0x17D28 (Discard) - True - Triangles
|
||||||
|
159220 - 0x03B22 (Circle Far EP) - True - True
|
||||||
|
159221 - 0x03B23 (Circle Left EP) - True - True
|
||||||
|
159222 - 0x03B24 (Circle Near EP) - True - True
|
||||||
|
159224 - 0x03A79 (Stern EP) - True - True
|
||||||
|
159225 - 0x28ABD (Rope Inner EP) - True - True
|
||||||
|
159226 - 0x28ABE (Rope Outer EP) - True - True
|
||||||
|
159230 - 0x3388F (Couch EP) - 0x17CDF | 0x0A054 - True
|
||||||
|
|
||||||
Keep Tower (Keep) - Keep - 0x04F8F:
|
Keep Tower (Keep) - Keep - 0x04F8F:
|
||||||
158206 - 0x0361B (Tower Shortcut Panel) - True - True
|
158206 - 0x0361B (Tower Shortcut Panel) - True - True
|
||||||
|
@ -357,6 +413,13 @@ Door - 0x04F8F (Tower Shortcut) - 0x0361B
|
||||||
158704 - 0x0360E (Laser Panel Hedges) - 0x01A0F & 0x019E7 & 0x019DC & 0x00139 - True
|
158704 - 0x0360E (Laser Panel Hedges) - 0x01A0F & 0x019E7 & 0x019DC & 0x00139 - True
|
||||||
158705 - 0x03317 (Laser Panel Pressure Plates) - 0x01D3F - Shapers & Black/White Squares & Colored Squares & Stars & Stars + Same Colored Symbol & Dots
|
158705 - 0x03317 (Laser Panel Pressure Plates) - 0x01D3F - Shapers & Black/White Squares & Colored Squares & Stars & Stars + Same Colored Symbol & Dots
|
||||||
Laser - 0x014BB (Laser) - 0x0360E | 0x03317
|
Laser - 0x014BB (Laser) - 0x0360E | 0x03317
|
||||||
|
159240 - 0x033BE (Pressure Plates 1 EP) - 0x033EA - True
|
||||||
|
159241 - 0x033BF (Pressure Plates 2 EP) - 0x01BE9 - True
|
||||||
|
159242 - 0x033DD (Pressure Plates 3 EP) - 0x01CD3 & 0x01CD5 - True
|
||||||
|
159243 - 0x033E5 (Pressure Plates 4 Left Exit EP) - 0x01D3F - True
|
||||||
|
159244 - 0x018B6 (Pressure Plates 4 Right Exit EP) - 0x01D3F - True
|
||||||
|
159250 - 0x28AE9 (Path EP) - True - True
|
||||||
|
159251 - 0x3348F (Hedges EP) - True - True
|
||||||
|
|
||||||
Outside Monastery (Monastery) - Main Island - True - Inside Monastery - 0x0C128 & 0x0C153 - Monastery Garden - 0x03750:
|
Outside Monastery (Monastery) - Main Island - True - Inside Monastery - 0x0C128 & 0x0C153 - Monastery Garden - 0x03750:
|
||||||
158207 - 0x03713 (Shortcut Panel) - True - True
|
158207 - 0x03713 (Shortcut Panel) - True - True
|
||||||
|
@ -371,6 +434,13 @@ Door - 0x0C153 (Entry Outer) - 0x00C92
|
||||||
Door - 0x03750 (Garden Entry) - 0x00037
|
Door - 0x03750 (Garden Entry) - 0x00037
|
||||||
158706 - 0x17CA4 (Laser Panel) - 0x193A6 - True
|
158706 - 0x17CA4 (Laser Panel) - 0x193A6 - True
|
||||||
Laser - 0x17C65 (Laser) - 0x17CA4
|
Laser - 0x17C65 (Laser) - 0x17CA4
|
||||||
|
159130 - 0x006E5 (Facade Left Near EP) - True - True
|
||||||
|
159131 - 0x006E6 (Facade Left Far Short EP) - True - True
|
||||||
|
159132 - 0x006E7 (Facade Left Far Long EP) - True - True
|
||||||
|
159136 - 0x03DAB (Facade Right Near EP) - True - True
|
||||||
|
159137 - 0x03DAC (Facade Left Stairs EP) - True - True
|
||||||
|
159138 - 0x03DAD (Facade Right Stairs EP) - True - True
|
||||||
|
159140 - 0x03E01 (Grass Stairs EP) - True - True
|
||||||
|
|
||||||
Inside Monastery (Monastery):
|
Inside Monastery (Monastery):
|
||||||
158213 - 0x09D9B (Shutters Control) - True - Dots
|
158213 - 0x09D9B (Shutters Control) - True - Dots
|
||||||
|
@ -378,6 +448,9 @@ Inside Monastery (Monastery):
|
||||||
158215 - 0x193AA (Inside 2) - 0x193A7 - True
|
158215 - 0x193AA (Inside 2) - 0x193A7 - True
|
||||||
158216 - 0x193AB (Inside 3) - 0x193AA - True
|
158216 - 0x193AB (Inside 3) - 0x193AA - True
|
||||||
158217 - 0x193A6 (Inside 4) - 0x193AB - True
|
158217 - 0x193A6 (Inside 4) - 0x193AB - True
|
||||||
|
159133 - 0x034A7 (Left Shutter EP) - 0x09D9B - True
|
||||||
|
159134 - 0x034AD (Middle Shutter EP) - 0x09D9B - True
|
||||||
|
159135 - 0x034AF (Right Shutter EP) - 0x09D9B - True
|
||||||
|
|
||||||
Monastery Garden (Monastery):
|
Monastery Garden (Monastery):
|
||||||
|
|
||||||
|
@ -404,12 +477,24 @@ Door - 0x03BB0 (Church Entry) - 0x28A0D
|
||||||
Door - 0x28AA2 (Maze Stairs) - 0x28A79
|
Door - 0x28AA2 (Maze Stairs) - 0x28A79
|
||||||
158241 - 0x17F5F (Windmill Entry Panel) - True - Dots
|
158241 - 0x17F5F (Windmill Entry Panel) - True - Dots
|
||||||
Door - 0x1845B (Windmill Entry) - 0x17F5F
|
Door - 0x1845B (Windmill Entry) - 0x17F5F
|
||||||
|
159010 - 0x037B6 (Windmill First Blade EP) - 0x17D02 - True
|
||||||
|
159011 - 0x037B2 (Windmill Second Blade EP) - 0x17D02 - True
|
||||||
|
159012 - 0x000F7 (Windmill Third Blade EP) - 0x17D02 - True
|
||||||
|
159540 - 0x03335 (Tower Underside First EP) - True - True
|
||||||
|
159541 - 0x03412 (Tower Underside Second EP) - True - True
|
||||||
|
159542 - 0x038A6 (Tower Underside Third EP) - True - True
|
||||||
|
159543 - 0x038AA (Tower Underside Fourth EP) - True - True
|
||||||
|
159545 - 0x03E40 (RGB House Green EP) - 0x334D8 - True
|
||||||
|
159546 - 0x28B8E (Maze Bridge Underside EP) - 0x2896A - True
|
||||||
|
159552 - 0x03BCF (Black Line Redirect EP) - True - True
|
||||||
|
159800 - 0xFFF80 (Pet the Dog) - True - True
|
||||||
|
|
||||||
Town Inside Cargo Box (Town):
|
Town Inside Cargo Box (Town):
|
||||||
158606 - 0x17D01 (Cargo Box Discard) - True - Triangles
|
158606 - 0x17D01 (Cargo Box Discard) - True - Triangles
|
||||||
|
|
||||||
Town Maze Rooftop (Town) - Town Red Rooftop - 0x2896A:
|
Town Maze Rooftop (Town) - Town Red Rooftop - 0x2896A:
|
||||||
158229 - 0x2896A (Maze Rooftop Bridge Control) - True - Shapers
|
158229 - 0x2896A (Maze Rooftop Bridge Control) - True - Shapers
|
||||||
|
159544 - 0x03E3F (RGB House Red EP) - 0x334D8 - True
|
||||||
|
|
||||||
Town Red Rooftop (Town):
|
Town Red Rooftop (Town):
|
||||||
158607 - 0x17C71 (Rooftop Discard) - True - Triangles
|
158607 - 0x17C71 (Rooftop Discard) - True - Triangles
|
||||||
|
@ -425,6 +510,7 @@ Town Wooden Rooftop (Town):
|
||||||
|
|
||||||
Town Church (Town):
|
Town Church (Town):
|
||||||
158227 - 0x28A69 (Church Lattice) - 0x03BB0 - True
|
158227 - 0x28A69 (Church Lattice) - 0x03BB0 - True
|
||||||
|
159553 - 0x03BD1 (Black Line Church EP) - True - True
|
||||||
|
|
||||||
RGB House (Town) - RGB Room - 0x2897B:
|
RGB House (Town) - RGB Room - 0x2897B:
|
||||||
158242 - 0x034E4 (Sound Room Left) - True - True
|
158242 - 0x034E4 (Sound Room Left) - True - True
|
||||||
|
@ -445,6 +531,8 @@ Door - 0x2779A (Fourth Door) - 0x28B39
|
||||||
Town Tower Top (Town):
|
Town Tower Top (Town):
|
||||||
158708 - 0x032F5 (Laser Panel) - True - True
|
158708 - 0x032F5 (Laser Panel) - True - True
|
||||||
Laser - 0x032F9 (Laser) - 0x032F5
|
Laser - 0x032F9 (Laser) - 0x032F5
|
||||||
|
159422 - 0x33692 (Brown Bridge EP) - True - True
|
||||||
|
159551 - 0x03BCE (Black Line Tower EP) - True - True
|
||||||
|
|
||||||
Windmill Interior (Windmill) - Theater - 0x17F88:
|
Windmill Interior (Windmill) - Theater - 0x17F88:
|
||||||
158247 - 0x17D02 (Turn Control) - True - Dots
|
158247 - 0x17D02 (Turn Control) - True - Dots
|
||||||
|
@ -464,6 +552,10 @@ Theater (Theater) - Town - 0x0A16D | 0x3CCDF:
|
||||||
Door - 0x0A16D (Exit Left) - 0x0A168
|
Door - 0x0A16D (Exit Left) - 0x0A168
|
||||||
Door - 0x3CCDF (Exit Right) - 0x33AB2
|
Door - 0x3CCDF (Exit Right) - 0x33AB2
|
||||||
158608 - 0x17CF7 (Discard) - True - Triangles
|
158608 - 0x17CF7 (Discard) - True - Triangles
|
||||||
|
159554 - 0x339B6 (Eclipse EP) - 0x03549 & 0x0A16D & 0x3CCDF - True
|
||||||
|
159555 - 0x33A29 (Window EP) - 0x03553 - True
|
||||||
|
159556 - 0x33A2A (Door EP) - 0x03553 - True
|
||||||
|
159558 - 0x33B06 (Church EP) - 0x0354E - True
|
||||||
|
|
||||||
Jungle (Jungle) - Main Island - True - Outside Jungle River - 0x3873B - Boat - 0x17CDF:
|
Jungle (Jungle) - Main Island - True - Outside Jungle River - 0x3873B - Boat - 0x17CDF:
|
||||||
158251 - 0x17CDF (Shore Boat Spawn) - True - Boat
|
158251 - 0x17CDF (Shore Boat Spawn) - True - Boat
|
||||||
|
@ -487,12 +579,24 @@ Door - 0x1475B (Popup Wall) - 0x17CAB
|
||||||
Laser - 0x00274 (Laser) - 0x03616
|
Laser - 0x00274 (Laser) - 0x03616
|
||||||
158266 - 0x337FA (Laser Shortcut Panel) - True - True
|
158266 - 0x337FA (Laser Shortcut Panel) - True - True
|
||||||
Door - 0x3873B (Laser Shortcut) - 0x337FA
|
Door - 0x3873B (Laser Shortcut) - 0x337FA
|
||||||
|
159100 - 0x03ABC (Long Arch Moss EP) - True - True
|
||||||
|
159101 - 0x03ABE (Straight Left Moss EP) - True - True
|
||||||
|
159102 - 0x03AC0 (Pop-up Wall Moss EP) - True - True
|
||||||
|
159103 - 0x03AC4 (Short Arch Moss EP) - True - True
|
||||||
|
159150 - 0x289F4 (Entrance EP) - True - True
|
||||||
|
159151 - 0x289F5 (Tree Halo EP) - True - True
|
||||||
|
159350 - 0x035CB (Bamboo CCW EP) - True - True
|
||||||
|
159351 - 0x035CF (Bamboo CW EP) - True - True
|
||||||
|
|
||||||
Outside Jungle River (River) - Main Island - True - Monastery Garden - 0x0CF2A:
|
Outside Jungle River (River) - Main Island - True - Monastery Garden - 0x0CF2A:
|
||||||
158267 - 0x17CAA (Monastery Shortcut Panel) - True - True
|
158267 - 0x17CAA (Monastery Shortcut Panel) - True - True
|
||||||
Door - 0x0CF2A (Monastery Shortcut) - 0x17CAA
|
Door - 0x0CF2A (Monastery Shortcut) - 0x17CAA
|
||||||
158663 - 0x15ADD (Vault) - True - Black/White Squares & Dots
|
158663 - 0x15ADD (Vault) - True - Black/White Squares & Dots
|
||||||
158664 - 0x03702 (Vault Box) - 0x15ADD - True
|
158664 - 0x03702 (Vault Box) - 0x15ADD - True
|
||||||
|
159110 - 0x03AC5 (Green Leaf Moss EP) - True - True
|
||||||
|
159120 - 0x03BE2 (Monastery Garden Left EP) - 0x03750 - True
|
||||||
|
159121 - 0x03BE3 (Monastery Garden Right EP) - True - True
|
||||||
|
159122 - 0x0A409 (Monastery Wall EP) - True - True
|
||||||
|
|
||||||
Outside Bunker (Bunker) - Main Island - True - Bunker - 0x0C2A4:
|
Outside Bunker (Bunker) - Main Island - True - Bunker - 0x0C2A4:
|
||||||
158268 - 0x17C2E (Entry Panel) - True - Black/White Squares & Colored Squares
|
158268 - 0x17C2E (Entry Panel) - True - Black/White Squares & Colored Squares
|
||||||
|
@ -524,16 +628,25 @@ Bunker Ultraviolet Room (Bunker) - Bunker Elevator Section - 0x0A08D:
|
||||||
158285 - 0x17E67 (UV Room 2) - 0x17E63 & 0x34BC6 - Colored Squares & Black/White Squares
|
158285 - 0x17E67 (UV Room 2) - 0x17E63 & 0x34BC6 - Colored Squares & Black/White Squares
|
||||||
Door - 0x0A08D (Elevator Room Entry) - 0x17E67
|
Door - 0x0A08D (Elevator Room Entry) - 0x17E67
|
||||||
|
|
||||||
Bunker Elevator Section (Bunker) - Bunker Laser Platform - 0x0A079:
|
Bunker Elevator Section (Bunker) - Bunker Elevator - TrueOneWay:
|
||||||
|
159311 - 0x035F5 (Tinted Door EP) - 0x17C79 - True
|
||||||
|
|
||||||
|
Bunker Elevator (Bunker) - Bunker Laser Platform - 0x0A079 - Bunker Green Room - 0x0A079 - Bunker Laser Platform - 0x0A079 - Outside Bunker - 0x0A079:
|
||||||
158286 - 0x0A079 (Elevator Control) - True - Colored Squares & Black/White Squares
|
158286 - 0x0A079 (Elevator Control) - True - Colored Squares & Black/White Squares
|
||||||
|
|
||||||
Bunker Laser Platform (Bunker):
|
Bunker Green Room (Bunker) - Bunker Elevator - TrueOneWay:
|
||||||
|
159310 - 0x000D3 (Green Room Flowers EP) - True - True
|
||||||
|
|
||||||
|
Bunker Laser Platform (Bunker) - Bunker Elevator - TrueOneWay:
|
||||||
158710 - 0x09DE0 (Laser Panel) - True - True
|
158710 - 0x09DE0 (Laser Panel) - True - True
|
||||||
Laser - 0x0C2B2 (Laser) - 0x09DE0
|
Laser - 0x0C2B2 (Laser) - 0x09DE0
|
||||||
|
|
||||||
Outside Swamp (Swamp) - Swamp Entry Area - 0x00C1C - Main Island - True:
|
Outside Swamp (Swamp) - Swamp Entry Area - 0x00C1C - Main Island - True:
|
||||||
158287 - 0x0056E (Entry Panel) - True - Shapers
|
158287 - 0x0056E (Entry Panel) - True - Shapers
|
||||||
Door - 0x00C1C (Entry) - 0x0056E
|
Door - 0x00C1C (Entry) - 0x0056E
|
||||||
|
159321 - 0x03603 (Purple Sand Middle EP) - 0x17E2B - True
|
||||||
|
159322 - 0x03601 (Purple Sand Top EP) - 0x17E2B - True
|
||||||
|
159327 - 0x035DE (Purple Sand Bottom EP) - True - True
|
||||||
|
|
||||||
Swamp Entry Area (Swamp) - Swamp Sliding Bridge - TrueOneWay:
|
Swamp Entry Area (Swamp) - Swamp Sliding Bridge - TrueOneWay:
|
||||||
158288 - 0x00469 (Intro Front 1) - True - Shapers
|
158288 - 0x00469 (Intro Front 1) - True - Shapers
|
||||||
|
@ -553,6 +666,8 @@ Swamp Entry Area (Swamp) - Swamp Sliding Bridge - TrueOneWay:
|
||||||
|
|
||||||
Swamp Sliding Bridge (Swamp) - Swamp Entry Area - 0x00609 - Swamp Near Platform - 0x00609:
|
Swamp Sliding Bridge (Swamp) - Swamp Entry Area - 0x00609 - Swamp Near Platform - 0x00609:
|
||||||
158302 - 0x00609 (Sliding Bridge) - True - Shapers
|
158302 - 0x00609 (Sliding Bridge) - True - Shapers
|
||||||
|
159342 - 0x0105D (Sliding Bridge Left EP) - 0x00609 - True
|
||||||
|
159343 - 0x0A304 (Sliding Bridge Right EP) - 0x00609 - True
|
||||||
|
|
||||||
Swamp Near Platform (Swamp) - Swamp Cyan Underwater - 0x04B7F - Swamp Near Boat - 0x38AE6 - Swamp Between Bridges Near - 0x184B7 - Swamp Sliding Bridge - TrueOneWay:
|
Swamp Near Platform (Swamp) - Swamp Cyan Underwater - 0x04B7F - Swamp Near Boat - 0x38AE6 - Swamp Between Bridges Near - 0x184B7 - Swamp Sliding Bridge - TrueOneWay:
|
||||||
158313 - 0x00982 (Platform Row 1) - True - Shapers
|
158313 - 0x00982 (Platform Row 1) - True - Shapers
|
||||||
|
@ -572,6 +687,7 @@ Swamp Cyan Underwater (Swamp):
|
||||||
158310 - 0x013E6 (Cyan Underwater 4) - 0x00005 - Shapers & Negative Shapers
|
158310 - 0x013E6 (Cyan Underwater 4) - 0x00005 - Shapers & Negative Shapers
|
||||||
158311 - 0x00596 (Cyan Underwater 5) - 0x013E6 - Shapers & Negative Shapers
|
158311 - 0x00596 (Cyan Underwater 5) - 0x013E6 - Shapers & Negative Shapers
|
||||||
158312 - 0x18488 (Cyan Underwater Sliding Bridge Control) - True - Shapers
|
158312 - 0x18488 (Cyan Underwater Sliding Bridge Control) - True - Shapers
|
||||||
|
159340 - 0x03AA6 (Cyan Underwater Sliding Bridge EP) - 0x18488 - True
|
||||||
|
|
||||||
Swamp Between Bridges Near (Swamp) - Swamp Between Bridges Far - 0x18507:
|
Swamp Between Bridges Near (Swamp) - Swamp Between Bridges Far - 0x18507:
|
||||||
158303 - 0x00999 (Between Bridges Near Row 1) - 0x00990 - Shapers
|
158303 - 0x00999 (Between Bridges Near Row 1) - 0x00990 - Shapers
|
||||||
|
@ -596,6 +712,8 @@ Door - 0x305D5 (Red Underwater Exit) - 0x014D1
|
||||||
|
|
||||||
Swamp Rotating Bridge (Swamp) - Swamp Between Bridges Far - 0x181F5 - Swamp Near Boat - 0x181F5 - Swamp Purple Area - 0x181F5:
|
Swamp Rotating Bridge (Swamp) - Swamp Between Bridges Far - 0x181F5 - Swamp Near Boat - 0x181F5 - Swamp Purple Area - 0x181F5:
|
||||||
158327 - 0x181F5 (Rotating Bridge) - True - Rotated Shapers & Shapers
|
158327 - 0x181F5 (Rotating Bridge) - True - Rotated Shapers & Shapers
|
||||||
|
159331 - 0x016B2 (Rotating Bridge CCW EP) - 0x181F5 - True
|
||||||
|
159334 - 0x036CE (Rotating Bridge CW EP) - 0x181F5 - True
|
||||||
|
|
||||||
Swamp Near Boat (Swamp) - Swamp Rotating Bridge - TrueOneWay - Swamp Blue Underwater - 0x18482:
|
Swamp Near Boat (Swamp) - Swamp Rotating Bridge - TrueOneWay - Swamp Blue Underwater - 0x18482:
|
||||||
158328 - 0x09DB8 (Boat Spawn) - True - Boat
|
158328 - 0x09DB8 (Boat Spawn) - True - Boat
|
||||||
|
@ -605,12 +723,16 @@ Swamp Near Boat (Swamp) - Swamp Rotating Bridge - TrueOneWay - Swamp Blue Underw
|
||||||
158332 - 0x00E3A (Beyond Rotating Bridge 4) - 0x00C2E - Rotated Shapers
|
158332 - 0x00E3A (Beyond Rotating Bridge 4) - 0x00C2E - Rotated Shapers
|
||||||
158339 - 0x17E2B (Long Bridge Control) - True - Rotated Shapers & Shapers
|
158339 - 0x17E2B (Long Bridge Control) - True - Rotated Shapers & Shapers
|
||||||
Door - 0x18482 (Blue Water Pump) - 0x00E3A
|
Door - 0x18482 (Blue Water Pump) - 0x00E3A
|
||||||
|
159332 - 0x3365F (Boat EP) - 0x09DB8 - True
|
||||||
|
159333 - 0x03731 (Long Bridge Side EP) - 0x17E2B - True
|
||||||
|
|
||||||
Swamp Purple Area (Swamp) - Swamp Rotating Bridge - TrueOneWay - Swamp Purple Underwater - 0x0A1D6:
|
Swamp Purple Area (Swamp) - Swamp Rotating Bridge - TrueOneWay - Swamp Purple Underwater - 0x0A1D6:
|
||||||
Door - 0x0A1D6 (Purple Water Pump) - 0x00E3A
|
Door - 0x0A1D6 (Purple Water Pump) - 0x00E3A
|
||||||
|
|
||||||
Swamp Purple Underwater (Swamp):
|
Swamp Purple Underwater (Swamp):
|
||||||
158333 - 0x009A6 (Purple Underwater) - True - Shapers
|
158333 - 0x009A6 (Purple Underwater) - True - Shapers
|
||||||
|
159330 - 0x03A9E (Purple Underwater Right EP) - True - True
|
||||||
|
159336 - 0x03A93 (Purple Underwater Left EP) - True - True
|
||||||
|
|
||||||
Swamp Blue Underwater (Swamp):
|
Swamp Blue Underwater (Swamp):
|
||||||
158334 - 0x009AB (Blue Underwater 1) - True - Shapers & Negative Shapers
|
158334 - 0x009AB (Blue Underwater 1) - True - Shapers & Negative Shapers
|
||||||
|
@ -634,6 +756,7 @@ Treehouse Entry Area (Treehouse) - Treehouse Between Doors - 0x0C309:
|
||||||
158343 - 0x17C95 (Boat Spawn) - True - Boat
|
158343 - 0x17C95 (Boat Spawn) - True - Boat
|
||||||
158344 - 0x0288C (First Door Panel) - True - Stars
|
158344 - 0x0288C (First Door Panel) - True - Stars
|
||||||
Door - 0x0C309 (First Door) - 0x0288C
|
Door - 0x0C309 (First Door) - 0x0288C
|
||||||
|
159210 - 0x33721 (Buoy EP) - 0x17C95 - True
|
||||||
|
|
||||||
Treehouse Between Doors (Treehouse) - Treehouse Yellow Bridge - 0x0C310:
|
Treehouse Between Doors (Treehouse) - Treehouse Yellow Bridge - 0x0C310:
|
||||||
158345 - 0x02886 (Second Door Panel) - True - Stars
|
158345 - 0x02886 (Second Door Panel) - True - Stars
|
||||||
|
@ -691,7 +814,7 @@ Treehouse Second Purple Bridge (Treehouse) - Treehouse Left Orange Bridge - 0x17
|
||||||
158367 - 0x17D91 (Second Purple Bridge 6) - 0x17BDF - Stars & Colored Squares
|
158367 - 0x17D91 (Second Purple Bridge 6) - 0x17BDF - Stars & Colored Squares
|
||||||
158368 - 0x17DC6 (Second Purple Bridge 7) - 0x17D91 - Stars & Colored Squares
|
158368 - 0x17DC6 (Second Purple Bridge 7) - 0x17D91 - Stars & Colored Squares
|
||||||
|
|
||||||
Treehouse Left Orange Bridge (Treehouse) - Treehouse Laser Room Front Platform - 0x17DDB - Treehouse Laser Room Back Platform - 0x17DDB:
|
Treehouse Left Orange Bridge (Treehouse) - Treehouse Laser Room Front Platform - 0x17DDB - Treehouse Laser Room Back Platform - 0x17DDB - Treehouse Burned House - 0x17DDB:
|
||||||
158376 - 0x17DB3 (Left Orange Bridge 1) - True - Stars & Black/White Squares & Stars + Same Colored Symbol
|
158376 - 0x17DB3 (Left Orange Bridge 1) - True - Stars & Black/White Squares & Stars + Same Colored Symbol
|
||||||
158377 - 0x17DB5 (Left Orange Bridge 2) - 0x17DB3 - Stars & Black/White Squares & Stars + Same Colored Symbol
|
158377 - 0x17DB5 (Left Orange Bridge 2) - 0x17DB3 - Stars & Black/White Squares & Stars + Same Colored Symbol
|
||||||
158378 - 0x17DB6 (Left Orange Bridge 3) - 0x17DB5 - Stars & Black/White Squares & Stars + Same Colored Symbol
|
158378 - 0x17DB6 (Left Orange Bridge 3) - 0x17DB5 - Stars & Black/White Squares & Stars + Same Colored Symbol
|
||||||
|
@ -708,7 +831,7 @@ Treehouse Left Orange Bridge (Treehouse) - Treehouse Laser Room Front Platform -
|
||||||
158389 - 0x17DB0 (Left Orange Bridge 14) - 0x17DAE - Stars & Black/White Squares & Stars + Same Colored Symbol
|
158389 - 0x17DB0 (Left Orange Bridge 14) - 0x17DAE - Stars & Black/White Squares & Stars + Same Colored Symbol
|
||||||
158390 - 0x17DDB (Left Orange Bridge 15) - 0x17DB0 - Stars & Black/White Squares & Stars + Same Colored Symbol
|
158390 - 0x17DDB (Left Orange Bridge 15) - 0x17DB0 - Stars & Black/White Squares & Stars + Same Colored Symbol
|
||||||
|
|
||||||
Treehouse Green Bridge (Treehouse):
|
Treehouse Green Bridge (Treehouse) - Treehouse Green Bridge Front House - 0x17E61 - Treehouse Green Bridge Left House - 0x17E61:
|
||||||
158369 - 0x17E3C (Green Bridge 1) - True - Stars & Shapers
|
158369 - 0x17E3C (Green Bridge 1) - True - Stars & Shapers
|
||||||
158370 - 0x17E4D (Green Bridge 2) - 0x17E3C - Stars & Shapers
|
158370 - 0x17E4D (Green Bridge 2) - 0x17E3C - Stars & Shapers
|
||||||
158371 - 0x17E4F (Green Bridge 3) - 0x17E4D - Stars & Shapers & Rotated Shapers
|
158371 - 0x17E4F (Green Bridge 3) - 0x17E4D - Stars & Shapers & Rotated Shapers
|
||||||
|
@ -716,7 +839,12 @@ Treehouse Green Bridge (Treehouse):
|
||||||
158373 - 0x17E5B (Green Bridge 5) - 0x17E52 - Stars & Shapers & Stars + Same Colored Symbol
|
158373 - 0x17E5B (Green Bridge 5) - 0x17E52 - Stars & Shapers & Stars + Same Colored Symbol
|
||||||
158374 - 0x17E5F (Green Bridge 6) - 0x17E5B - Stars & Shapers & Negative Shapers & Stars + Same Colored Symbol
|
158374 - 0x17E5F (Green Bridge 6) - 0x17E5B - Stars & Shapers & Negative Shapers & Stars + Same Colored Symbol
|
||||||
158375 - 0x17E61 (Green Bridge 7) - 0x17E5F - Stars & Shapers & Rotated Shapers
|
158375 - 0x17E61 (Green Bridge 7) - 0x17E5F - Stars & Shapers & Rotated Shapers
|
||||||
158610 - 0x17FA9 (Green Bridge Discard) - 0x17E61 - Triangles
|
|
||||||
|
Treehouse Green Bridge Front House (Treehouse):
|
||||||
|
158610 - 0x17FA9 (Green Bridge Discard) - True - Triangles
|
||||||
|
|
||||||
|
Treehouse Green Bridge Left House (Treehouse):
|
||||||
|
159211 - 0x220A7 (Right Orange Bridge EP) - 0x17DA2 - True
|
||||||
|
|
||||||
Treehouse Laser Room Front Platform (Treehouse) - Treehouse Laser Room - 0x0C323:
|
Treehouse Laser Room Front Platform (Treehouse) - Treehouse Laser Room - 0x0C323:
|
||||||
Door - 0x0C323 (Laser House Entry) - 0x17DA2 & 0x2700B & 0x17DDB
|
Door - 0x0C323 (Laser House Entry) - 0x17DA2 & 0x2700B & 0x17DDB
|
||||||
|
@ -724,6 +852,9 @@ Door - 0x0C323 (Laser House Entry) - 0x17DA2 & 0x2700B & 0x17DDB
|
||||||
Treehouse Laser Room Back Platform (Treehouse):
|
Treehouse Laser Room Back Platform (Treehouse):
|
||||||
158611 - 0x17FA0 (Laser Discard) - True - Triangles
|
158611 - 0x17FA0 (Laser Discard) - True - Triangles
|
||||||
|
|
||||||
|
Treehouse Burned House (Treehouse):
|
||||||
|
159202 - 0x00769 (Burned House Beach EP) - True - True
|
||||||
|
|
||||||
Treehouse Laser Room (Treehouse):
|
Treehouse Laser Room (Treehouse):
|
||||||
158712 - 0x03613 (Laser Panel) - True - True
|
158712 - 0x03613 (Laser Panel) - True - True
|
||||||
158403 - 0x17CBC (Laser House Door Timer Inside) - True - True
|
158403 - 0x17CBC (Laser House Door Timer Inside) - True - True
|
||||||
|
@ -733,12 +864,19 @@ Mountainside (Mountainside) - Main Island - True - Mountaintop - True:
|
||||||
158612 - 0x17C42 (Discard) - True - Triangles
|
158612 - 0x17C42 (Discard) - True - Triangles
|
||||||
158665 - 0x002A6 (Vault) - True - Symmetry & Colored Dots & Black/White Squares & Dots
|
158665 - 0x002A6 (Vault) - True - Symmetry & Colored Dots & Black/White Squares & Dots
|
||||||
158666 - 0x03542 (Vault Box) - 0x002A6 - True
|
158666 - 0x03542 (Vault Box) - 0x002A6 - True
|
||||||
|
159301 - 0x335AE (Cloud Cycle EP) - True - True
|
||||||
|
159325 - 0x33505 (Bush EP) - True - True
|
||||||
|
159335 - 0x03C07 (Apparent River EP) - True - True
|
||||||
|
|
||||||
Mountaintop (Mountaintop) - Mountain Top Layer - 0x17C34:
|
Mountaintop (Mountaintop) - Mountain Top Layer - 0x17C34:
|
||||||
158405 - 0x0042D (River Shape) - True - True
|
158405 - 0x0042D (River Shape) - True - True
|
||||||
158406 - 0x09F7F (Box Short) - 7 Lasers - True
|
158406 - 0x09F7F (Box Short) - 7 Lasers - True
|
||||||
158407 - 0x17C34 (Trap Door Triple Exit) - 0x09F7F - Stars & Black/White Squares & Stars + Same Colored Symbol
|
158407 - 0x17C34 (Trap Door Triple Exit) - 0x09F7F - Stars & Black/White Squares & Stars + Same Colored Symbol
|
||||||
158800 - 0xFFF00 (Box Long) - 7 Lasers & 11 Lasers & 0x17C34 - True
|
158800 - 0xFFF00 (Box Long) - 7 Lasers & 11 Lasers & 0x17C34 - True
|
||||||
|
159300 - 0x001A3 (River Shape EP) - True - True
|
||||||
|
159320 - 0x3370E (Arch Black EP) - True - True
|
||||||
|
159324 - 0x336C8 (Arch White Right EP) - True - True
|
||||||
|
159326 - 0x3369A (Arch White Left EP) - True - True
|
||||||
|
|
||||||
Mountain Top Layer (Mountain Floor 1) - Mountain Top Layer Bridge - 0x09E39:
|
Mountain Top Layer (Mountain Floor 1) - Mountain Top Layer Bridge - 0x09E39:
|
||||||
158408 - 0x09E39 (Light Bridge Controller) - True - Black/White Squares & Colored Squares & Eraser
|
158408 - 0x09E39 (Light Bridge Controller) - True - Black/White Squares & Colored Squares & Eraser
|
||||||
|
@ -763,7 +901,7 @@ Mountain Top Layer Bridge (Mountain Floor 1) - Mountain Floor 2 - 0x09E54:
|
||||||
158425 - 0x09EAF (Trash Pillar 2) - 0x09EAD - Black/White Squares & Shapers
|
158425 - 0x09EAF (Trash Pillar 2) - 0x09EAD - Black/White Squares & Shapers
|
||||||
Door - 0x09E54 (Exit) - 0x09EAF & 0x09F6E & 0x09E6B & 0x09E7B
|
Door - 0x09E54 (Exit) - 0x09EAF & 0x09F6E & 0x09E6B & 0x09E7B
|
||||||
|
|
||||||
Mountain Floor 2 (Mountain Floor 2) - Mountain Floor 2 Light Bridge Room Near - 0x09FFB - Mountain Floor 2 Blue Bridge - 0x09E86:
|
Mountain Floor 2 (Mountain Floor 2) - Mountain Floor 2 Light Bridge Room Near - 0x09FFB - Mountain Floor 2 Blue Bridge - 0x09E86 - Mountain Pink Bridge EP - TrueOneWay:
|
||||||
158426 - 0x09FD3 (Near Row 1) - True - Stars & Colored Squares & Stars + Same Colored Symbol
|
158426 - 0x09FD3 (Near Row 1) - True - Stars & Colored Squares & Stars + Same Colored Symbol
|
||||||
158427 - 0x09FD4 (Near Row 2) - 0x09FD3 - Stars & Colored Squares & Stars + Same Colored Symbol
|
158427 - 0x09FD4 (Near Row 2) - 0x09FD3 - Stars & Colored Squares & Stars + Same Colored Symbol
|
||||||
158428 - 0x09FD6 (Near Row 3) - 0x09FD4 - Stars & Colored Squares & Stars + Same Colored Symbol
|
158428 - 0x09FD6 (Near Row 3) - 0x09FD4 - Stars & Colored Squares & Stars + Same Colored Symbol
|
||||||
|
@ -779,7 +917,7 @@ Door - 0x09EDD (Elevator Room Entry) - 0x09ED8 & 0x09E86
|
||||||
Mountain Floor 2 Light Bridge Room Near (Mountain Floor 2):
|
Mountain Floor 2 Light Bridge Room Near (Mountain Floor 2):
|
||||||
158431 - 0x09E86 (Light Bridge Controller Near) - True - Stars & Stars + Same Colored Symbol & Rotated Shapers & Eraser
|
158431 - 0x09E86 (Light Bridge Controller Near) - True - Stars & Stars + Same Colored Symbol & Rotated Shapers & Eraser
|
||||||
|
|
||||||
Mountain Floor 2 Beyond Bridge (Mountain Floor 2) - Mountain Floor 2 Light Bridge Room Far - 0x09E07:
|
Mountain Floor 2 Beyond Bridge (Mountain Floor 2) - Mountain Floor 2 Light Bridge Room Far - 0x09E07 - Mountain Pink Bridge EP - TrueOneWay:
|
||||||
158432 - 0x09FCC (Far Row 1) - True - Dots
|
158432 - 0x09FCC (Far Row 1) - True - Dots
|
||||||
158433 - 0x09FCE (Far Row 2) - 0x09FCC - Black/White Squares
|
158433 - 0x09FCE (Far Row 2) - 0x09FCC - Black/White Squares
|
||||||
158434 - 0x09FCF (Far Row 3) - 0x09FCE - Stars
|
158434 - 0x09FCF (Far Row 3) - 0x09FCE - Stars
|
||||||
|
@ -805,14 +943,19 @@ Mountain Third Layer (Mountain Bottom Floor) - Mountain Floor 2 Elevator - TrueO
|
||||||
158444 - 0x09FDA (Giant Puzzle) - 0x09FC1 & 0x09F8E & 0x09F01 & 0x09EFF - Shapers & Symmetry
|
158444 - 0x09FDA (Giant Puzzle) - 0x09FC1 & 0x09F8E & 0x09F01 & 0x09EFF - Shapers & Symmetry
|
||||||
Door - 0x09F89 (Exit) - 0x09FDA
|
Door - 0x09F89 (Exit) - 0x09FDA
|
||||||
|
|
||||||
Mountain Bottom Floor (Mountain Bottom Floor) - Mountain Bottom Floor Rock - 0x17FA2 - Final Room - 0x0C141:
|
Mountain Bottom Floor (Mountain Bottom Floor) - Mountain Bottom Floor Rock - 0x17FA2 - Final Room - 0x0C141 - Mountain Pink Bridge EP - TrueOneWay:
|
||||||
158614 - 0x17FA2 (Discard) - 0xFFF00 - Triangles
|
158614 - 0x17FA2 (Discard) - 0xFFF00 - Triangles
|
||||||
158445 - 0x01983 (Final Room Entry Left) - True - Shapers & Stars
|
158445 - 0x01983 (Final Room Entry Left) - True - Shapers & Stars
|
||||||
158446 - 0x01987 (Final Room Entry Right) - True - Colored Squares & Dots
|
158446 - 0x01987 (Final Room Entry Right) - True - Colored Squares & Dots
|
||||||
Door - 0x0C141 (Final Room Entry) - 0x01983 & 0x01987
|
Door - 0x0C141 (Final Room Entry) - 0x01983 & 0x01987
|
||||||
|
159313 - 0x09D5D (Yellow Bridge EP) - 0x09E86 & 0x09ED8 - True
|
||||||
|
159314 - 0x09D5E (Blue Bridge EP) - 0x09E86 & 0x09ED8 - True
|
||||||
|
|
||||||
|
Mountain Pink Bridge EP (Mountain Floor 2):
|
||||||
|
159312 - 0x09D63 (Pink Bridge EP) - 0x09E39 - True
|
||||||
|
|
||||||
Mountain Bottom Floor Rock (Mountain Bottom Floor) - Mountain Bottom Floor - 0x17F33 - Mountain Path to Caves - 0x17F33:
|
Mountain Bottom Floor Rock (Mountain Bottom Floor) - Mountain Bottom Floor - 0x17F33 - Mountain Path to Caves - 0x17F33:
|
||||||
Door - 0x17F33 (Rock Open) - True
|
Door - 0x17F33 (Rock Open) - True - True
|
||||||
|
|
||||||
Mountain Path to Caves (Mountain Bottom Floor) - Mountain Bottom Floor Rock - 0x334E1 - Caves - 0x2D77D:
|
Mountain Path to Caves (Mountain Bottom Floor) - Mountain Bottom Floor Rock - 0x334E1 - Caves - 0x2D77D:
|
||||||
158447 - 0x00FF8 (Caves Entry Panel) - True - Triangles & Black/White Squares
|
158447 - 0x00FF8 (Caves Entry Panel) - True - Triangles & Black/White Squares
|
||||||
|
@ -872,6 +1015,7 @@ Door - 0x019A5 (Pillar Door) - 0x09DD5
|
||||||
Door - 0x2D73F (Mountain Shortcut Door) - 0x021D7
|
Door - 0x2D73F (Mountain Shortcut Door) - 0x021D7
|
||||||
158450 - 0x17CF2 (Swamp Shortcut Panel) - True - Triangles
|
158450 - 0x17CF2 (Swamp Shortcut Panel) - True - Triangles
|
||||||
Door - 0x2D859 (Swamp Shortcut Door) - 0x17CF2
|
Door - 0x2D859 (Swamp Shortcut Door) - 0x17CF2
|
||||||
|
159341 - 0x3397C (Skylight EP) - True - True
|
||||||
|
|
||||||
Path to Challenge (Caves) - Challenge - 0x0A19A:
|
Path to Challenge (Caves) - Challenge - 0x0A19A:
|
||||||
158477 - 0x0A16E (Challenge Entry Panel) - True - Stars & Shapers & Stars + Same Colored Symbol
|
158477 - 0x0A16E (Challenge Entry Panel) - True - Stars & Shapers & Stars + Same Colored Symbol
|
||||||
|
@ -900,6 +1044,7 @@ Challenge (Challenge) - Tunnels - 0x0348A:
|
||||||
158667 - 0x0356B (Vault Box) - 0x1C31A & 0x1C319 - True
|
158667 - 0x0356B (Vault Box) - 0x1C31A & 0x1C319 - True
|
||||||
158518 - 0x039B4 (Tunnels Entry Panel) - True - Triangles
|
158518 - 0x039B4 (Tunnels Entry Panel) - True - Triangles
|
||||||
Door - 0x0348A (Tunnels Entry) - 0x039B4
|
Door - 0x0348A (Tunnels Entry) - 0x039B4
|
||||||
|
159530 - 0x28B30 (Water EP) - True - True
|
||||||
|
|
||||||
Tunnels (Tunnels) - Windmill Interior - 0x27739 - Desert Lowest Level Inbetween Shortcuts - 0x27263 - Town - 0x09E87:
|
Tunnels (Tunnels) - Windmill Interior - 0x27739 - Desert Lowest Level Inbetween Shortcuts - 0x27263 - Town - 0x09E87:
|
||||||
158668 - 0x2FAF6 (Vault Box) - True - True
|
158668 - 0x2FAF6 (Vault Box) - True - True
|
||||||
|
@ -909,6 +1054,7 @@ Door - 0x27739 (Theater Shortcut) - 0x27732
|
||||||
Door - 0x27263 (Desert Shortcut) - 0x2773D
|
Door - 0x27263 (Desert Shortcut) - 0x2773D
|
||||||
158521 - 0x09E85 (Town Shortcut Panel) - True - Triangles
|
158521 - 0x09E85 (Town Shortcut Panel) - True - Triangles
|
||||||
Door - 0x09E87 (Town Shortcut) - 0x09E85
|
Door - 0x09E87 (Town Shortcut) - 0x09E85
|
||||||
|
159557 - 0x33A20 (Theater Flowers EP) - 0x03553 & Theater to Tunnels - True
|
||||||
|
|
||||||
Final Room (Mountain Final Room) - Elevator - 0x339BB & 0x33961:
|
Final Room (Mountain Final Room) - Elevator - 0x339BB & 0x33961:
|
||||||
158522 - 0x0383A (Right Pillar 1) - True - Stars
|
158522 - 0x0383A (Right Pillar 1) - True - Stars
|
||||||
|
@ -930,3 +1076,50 @@ Elevator (Mountain Final Room):
|
||||||
158536 - 0x3D9A9 (Elevator Start) - 0x3D9AA & 7 Lasers | 0x3D9A8 & 7 Lasers - True
|
158536 - 0x3D9A9 (Elevator Start) - 0x3D9AA & 7 Lasers | 0x3D9A8 & 7 Lasers - 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:
|
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:
|
||||||
|
159042 - 0x22106 (Desert EP) - True - True
|
||||||
|
159223 - 0x03B25 (Shipwreck CCW Underside EP) - True - True
|
||||||
|
159231 - 0x28B29 (Shipwreck Green EP) - True - True
|
||||||
|
159232 - 0x28B2A (Shipwreck CW Underside EP) - True - True
|
||||||
|
159323 - 0x03D0D (Bunker Yellow Line EP) - True - True
|
||||||
|
159515 - 0x28A37 (Town Long Sewer EP) - True - True
|
||||||
|
159520 - 0x33857 (Tutorial EP) - True - True
|
||||||
|
159521 - 0x33879 (Tutorial Reflection EP) - True - True
|
||||||
|
159522 - 0x03C19 (Tutorial Moss EP) - True - True
|
||||||
|
159531 - 0x035C9 (Cargo Box EP) - 0x0A0C9 - True
|
||||||
|
|
||||||
|
Obelisks (EPs) - Entry - True:
|
||||||
|
159700 - 0xFFE00 (Desert Obelisk Side 1) - 0x0332B & 0x03367 & 0x28B8A - True
|
||||||
|
159701 - 0xFFE01 (Desert Obelisk Side 2) - 0x037B6 & 0x037B2 & 0x000F7 - True
|
||||||
|
159702 - 0xFFE02 (Desert Obelisk Side 3) - 0x3351D - True
|
||||||
|
159703 - 0xFFE03 (Desert Obelisk Side 4) - 0x0053C & 0x00771 & 0x335C8 & 0x335C9 & 0x337F8 & 0x037BB & 0x220E4 & 0x220E5 - True
|
||||||
|
159704 - 0xFFE04 (Desert Obelisk Side 5) - 0x334B9 & 0x334BC & 0x22106 & 0x0A14C & 0x0A14D - True
|
||||||
|
159710 - 0xFFE10 (Monastery Obelisk Side 1) - 0x03ABC & 0x03ABE & 0x03AC0 & 0x03AC4 - True
|
||||||
|
159711 - 0xFFE11 (Monastery Obelisk Side 2) - 0x03AC5 - True
|
||||||
|
159712 - 0xFFE12 (Monastery Obelisk Side 3) - 0x03BE2 & 0x03BE3 & 0x0A409 - True
|
||||||
|
159713 - 0xFFE13 (Monastery Obelisk Side 4) - 0x006E5 & 0x006E6 & 0x006E7 & 0x034A7 & 0x034AD & 0x034AF & 0x03DAB & 0x03DAC & 0x03DAD - True
|
||||||
|
159714 - 0xFFE14 (Monastery Obelisk Side 5) - 0x03E01 - True
|
||||||
|
159715 - 0xFFE15 (Monastery Obelisk Side 6) - 0x289F4 & 0x289F5 - True
|
||||||
|
159720 - 0xFFE20 (Treehouse Obelisk Side 1) - 0x0053D & 0x0053E & 0x00769 - True
|
||||||
|
159721 - 0xFFE21 (Treehouse Obelisk Side 2) - 0x33721 & 0x220A7 & 0x220BD - True
|
||||||
|
159722 - 0xFFE22 (Treehouse Obelisk Side 3) - 0x03B22 & 0x03B23 & 0x03B24 & 0x03B25 & 0x03A79 & 0x28ABD & 0x28ABE - True
|
||||||
|
159723 - 0xFFE23 (Treehouse Obelisk Side 4) - 0x3388F & 0x28B29 & 0x28B2A - True
|
||||||
|
159724 - 0xFFE24 (Treehouse Obelisk Side 5) - 0x018B6 & 0x033BE & 0x033BF & 0x033DD & 0x033E5 - True
|
||||||
|
159725 - 0xFFE25 (Treehouse Obelisk Side 6) - 0x28AE9 & 0x3348F - True
|
||||||
|
159730 - 0xFFE30 (River Obelisk Side 1) - 0x001A3 & 0x335AE - True
|
||||||
|
159731 - 0xFFE31 (River Obelisk Side 2) - 0x000D3 & 0x035F5 & 0x09D5D & 0x09D5E & 0x09D63 - True
|
||||||
|
159732 - 0xFFE32 (River Obelisk Side 3) - 0x3370E & 0x035DE & 0x03601 & 0x03603 & 0x03D0D & 0x3369A & 0x336C8 & 0x33505 - True
|
||||||
|
159733 - 0xFFE33 (River Obelisk Side 4) - 0x03A9E & 0x016B2 & 0x3365F & 0x03731 & 0x036CE & 0x03C07 & 0x03A93 - True
|
||||||
|
159734 - 0xFFE34 (River Obelisk Side 5) - 0x03AA6 & 0x3397C & 0x0105D & 0x0A304 - True
|
||||||
|
159735 - 0xFFE35 (River Obelisk Side 6) - 0x035CB & 0x035CF - True
|
||||||
|
159740 - 0xFFE40 (Quarry Obelisk Side 1) - 0x28A7B & 0x005F6 & 0x00859 & 0x17CB9 & 0x28A4A - True
|
||||||
|
159741 - 0xFFE41 (Quarry Obelisk Side 2) - 0x334B6 & 0x00614 & 0x0069D & 0x28A4C - True
|
||||||
|
159742 - 0xFFE42 (Quarry Obelisk Side 3) - 0x289CF & 0x289D1 & 0x33692 - True
|
||||||
|
159743 - 0xFFE43 (Quarry Obelisk Side 4) - 0x03E77 & 0x03E7C - True
|
||||||
|
159750 - 0xFFE50 (Town Obelisk Side 1) - 0x035C7 - True
|
||||||
|
159751 - 0xFFE51 (Town Obelisk Side 2) - 0x01848 & 0x03D06 & 0x33530 & 0x33600 & 0x28A2F & 0x28A37 & 0x334A3 & 0x3352F - True
|
||||||
|
159752 - 0xFFE52 (Town Obelisk Side 3) - 0x33857 & 0x33879 & 0x03C19 - True
|
||||||
|
159753 - 0xFFE53 (Town Obelisk Side 4) - 0x28B30 & 0x035C9 - True
|
||||||
|
159754 - 0xFFE54 (Town Obelisk Side 5) - 0x03335 & 0x03412 & 0x038A6 & 0x038AA & 0x03E3F & 0x03E40 & 0x28B8E - True
|
||||||
|
159755 - 0xFFE55 (Town Obelisk Side 6) - 0x28B91 & 0x03BCE & 0x03BCF & 0x03BD1 & 0x339B6 & 0x33A20 & 0x33A29 & 0x33A2A & 0x33B06 - True
|
||||||
|
|
||||||
|
Lasers (Lasers) - Entry - True:
|
||||||
|
|
|
@ -1,6 +1,11 @@
|
||||||
First Hallway (First Hallway) - Entry - True - Tutorial - 0x00182:
|
Entry (Entry):
|
||||||
|
|
||||||
|
First Hallway (First Hallway) - Entry - True - First Hallway Room - 0x00064:
|
||||||
158000 - 0x00064 (Straight) - True - True
|
158000 - 0x00064 (Straight) - True - True
|
||||||
158001 - 0x00182 (Bend) - 0x00064 - True
|
159510 - 0x01848 (EP) - 0x00064 - True
|
||||||
|
|
||||||
|
First Hallway Room (First Hallway) - Tutorial - 0x00182:
|
||||||
|
158001 - 0x00182 (Bend) - True - True
|
||||||
|
|
||||||
Tutorial (Tutorial) - Outside Tutorial - True:
|
Tutorial (Tutorial) - Outside Tutorial - True:
|
||||||
158002 - 0x00293 (Front Center) - True - Dots
|
158002 - 0x00293 (Front Center) - True - Dots
|
||||||
|
@ -10,8 +15,11 @@ Tutorial (Tutorial) - Outside Tutorial - True:
|
||||||
158006 - 0x0A3B2 (Back Right) - True - Dots & Full Dots
|
158006 - 0x0A3B2 (Back Right) - True - Dots & Full Dots
|
||||||
158007 - 0x03629 (Gate Open) - 0x002C2 - Symmetry & Dots
|
158007 - 0x03629 (Gate Open) - 0x002C2 - Symmetry & Dots
|
||||||
158008 - 0x03505 (Gate Close) - 0x2FAF6 - False
|
158008 - 0x03505 (Gate Close) - 0x2FAF6 - False
|
||||||
158009 - 0x0C335 (Pillar) - True - Triangles - True
|
158009 - 0x0C335 (Pillar) - True - Triangles
|
||||||
158010 - 0x0C373 (Patio Floor) - 0x0C335 - Dots
|
158010 - 0x0C373 (Patio Floor) - 0x0C335 - Dots
|
||||||
|
159512 - 0x33530 (Cloud EP) - True - True
|
||||||
|
159513 - 0x33600 (Patio Flowers EP) - 0x0C373 - True
|
||||||
|
159517 - 0x3352F (Gate EP) - 0x03505 - True
|
||||||
|
|
||||||
Outside Tutorial (Outside Tutorial) - Outside Tutorial Path To Outpost - 0x03BA2:
|
Outside Tutorial (Outside Tutorial) - Outside Tutorial Path To Outpost - 0x03BA2:
|
||||||
158650 - 0x033D4 (Vault) - True - Dots & Full Dots & Squares & Black/White Squares
|
158650 - 0x033D4 (Vault) - True - Dots & Full Dots & Squares & Black/White Squares
|
||||||
|
@ -31,6 +39,10 @@ Outside Tutorial (Outside Tutorial) - Outside Tutorial Path To Outpost - 0x03BA2
|
||||||
158025 - 0x00020 (Tree Row 8) - 0x0001F - Squares & Black/White Squares & Dots & Full Dots
|
158025 - 0x00020 (Tree Row 8) - 0x0001F - Squares & Black/White Squares & Dots & Full Dots
|
||||||
158026 - 0x00021 (Tree Row 9) - 0x00020 - Squares & Black/White Squares & Dots & Full Dots
|
158026 - 0x00021 (Tree Row 9) - 0x00020 - Squares & Black/White Squares & Dots & Full Dots
|
||||||
Door - 0x03BA2 (Outpost Path) - 0x0A3B5
|
Door - 0x03BA2 (Outpost Path) - 0x0A3B5
|
||||||
|
159511 - 0x03D06 (Garden EP) - True - True
|
||||||
|
159514 - 0x28A2F (Town Sewer EP) - True - True
|
||||||
|
159516 - 0x334A3 (Path EP) - True - True
|
||||||
|
159500 - 0x035C7 (Tractor EP) - True - True
|
||||||
|
|
||||||
Outside Tutorial Path To Outpost (Outside Tutorial) - Outside Tutorial Outpost - 0x0A170:
|
Outside Tutorial Path To Outpost (Outside Tutorial) - Outside Tutorial Outpost - 0x0A170:
|
||||||
158011 - 0x0A171 (Outpost Entry Panel) - True - Dots & Full Dots & Triangles
|
158011 - 0x0A171 (Outpost Entry Panel) - True - Dots & Full Dots & Triangles
|
||||||
|
@ -41,12 +53,14 @@ Outside Tutorial Outpost (Outside Tutorial) - Outside Tutorial - 0x04CA3:
|
||||||
Door - 0x04CA3 (Outpost Exit) - 0x04CA4
|
Door - 0x04CA3 (Outpost Exit) - 0x04CA4
|
||||||
158600 - 0x17CFB (Discard) - True - Arrows
|
158600 - 0x17CFB (Discard) - True - Arrows
|
||||||
|
|
||||||
Main Island () - Outside Tutorial - True:
|
Main Island (Main Island) - Outside Tutorial - True:
|
||||||
|
159550 - 0x28B91 (Thundercloud EP) - 0x09F98 & 0x012FB - True
|
||||||
|
|
||||||
Outside Glass Factory (Glass Factory) - Main Island - True - Inside Glass Factory - 0x01A29:
|
Outside Glass Factory (Glass Factory) - Main Island - True - Inside Glass Factory - 0x01A29:
|
||||||
158027 - 0x01A54 (Entry Panel) - True - Symmetry
|
158027 - 0x01A54 (Entry Panel) - True - Symmetry
|
||||||
Door - 0x01A29 (Entry) - 0x01A54
|
Door - 0x01A29 (Entry) - 0x01A54
|
||||||
158601 - 0x3C12B (Discard) - True - Arrows
|
158601 - 0x3C12B (Discard) - True - Arrows
|
||||||
|
159002 - 0x28B8A (Vase EP) - 0x01A54 - True
|
||||||
|
|
||||||
Inside Glass Factory (Glass Factory) - Inside Glass Factory Behind Back Wall - 0x0D7ED:
|
Inside Glass Factory (Glass Factory) - Inside Glass Factory Behind Back Wall - 0x0D7ED:
|
||||||
158028 - 0x00086 (Back Wall 1) - True - Symmetry & Dots
|
158028 - 0x00086 (Back Wall 1) - True - Symmetry & Dots
|
||||||
|
@ -88,13 +102,14 @@ Symmetry Island Lower (Symmetry Island) - Symmetry Island Upper - 0x18269:
|
||||||
158056 - 0x00070 (Left 5) - 0x0006F - Symmetry & Colored Dots & Triangles
|
158056 - 0x00070 (Left 5) - 0x0006F - Symmetry & Colored Dots & Triangles
|
||||||
158057 - 0x00071 (Left 6) - 0x00070 - Symmetry & Triangles
|
158057 - 0x00071 (Left 6) - 0x00070 - Symmetry & Triangles
|
||||||
158058 - 0x00076 (Left 7) - 0x00071 - Symmetry & Triangles
|
158058 - 0x00076 (Left 7) - 0x00071 - Symmetry & Triangles
|
||||||
158059 - 0x009B8 (Scenery Outlines 1) - True - Symmetry & Environment
|
158059 - 0x009B8 (Scenery Outlines 1) - True - Symmetry
|
||||||
158060 - 0x003E8 (Scenery Outlines 2) - 0x009B8 - Symmetry & Environment
|
158060 - 0x003E8 (Scenery Outlines 2) - 0x009B8 - Symmetry
|
||||||
158061 - 0x00A15 (Scenery Outlines 3) - 0x003E8 - Symmetry & Environment
|
158061 - 0x00A15 (Scenery Outlines 3) - 0x003E8 - Symmetry
|
||||||
158062 - 0x00B53 (Scenery Outlines 4) - 0x00A15 - Symmetry & Environment
|
158062 - 0x00B53 (Scenery Outlines 4) - 0x00A15 - Symmetry
|
||||||
158063 - 0x00B8D (Scenery Outlines 5) - 0x00B53 - Symmetry & Environment
|
158063 - 0x00B8D (Scenery Outlines 5) - 0x00B53 - Symmetry
|
||||||
158064 - 0x1C349 (Upper Panel) - 0x00076 - Symmetry & Triangles
|
158064 - 0x1C349 (Upper Panel) - 0x00076 - Symmetry & Triangles
|
||||||
Door - 0x18269 (Upper) - 0x1C349
|
Door - 0x18269 (Upper) - 0x1C349
|
||||||
|
159000 - 0x0332B (Glass Factory Black Line Reflection EP) - True - True
|
||||||
|
|
||||||
Symmetry Island Upper (Symmetry Island):
|
Symmetry Island Upper (Symmetry Island):
|
||||||
158065 - 0x00A52 (Yellow 1) - True - Symmetry & Colored Dots
|
158065 - 0x00A52 (Yellow 1) - True - Symmetry & Colored Dots
|
||||||
|
@ -104,17 +119,18 @@ Symmetry Island Upper (Symmetry Island):
|
||||||
158069 - 0x00A64 (Blue 2) - 0x00A61 & 0x00A52 - Symmetry & Colored Dots
|
158069 - 0x00A64 (Blue 2) - 0x00A61 & 0x00A52 - Symmetry & Colored Dots
|
||||||
158070 - 0x00A68 (Blue 3) - 0x00A64 & 0x00A57 - Symmetry & Colored Dots
|
158070 - 0x00A68 (Blue 3) - 0x00A64 & 0x00A57 - Symmetry & Colored Dots
|
||||||
158700 - 0x0360D (Laser Panel) - 0x00A68 - True
|
158700 - 0x0360D (Laser Panel) - 0x00A68 - True
|
||||||
Laser - 0x00509 (Laser) - 0x0360D - True
|
Laser - 0x00509 (Laser) - 0x0360D
|
||||||
|
159001 - 0x03367 (Glass Factory Black Line EP) - True - True
|
||||||
|
|
||||||
Orchard (Orchard) - Main Island - True - Orchard Beyond First Gate - 0x03307:
|
Orchard (Orchard) - Main Island - True - Orchard Beyond First Gate - 0x03307:
|
||||||
158071 - 0x00143 (Apple Tree 1) - True - Environment
|
158071 - 0x00143 (Apple Tree 1) - True - True
|
||||||
158072 - 0x0003B (Apple Tree 2) - 0x00143 - Environment
|
158072 - 0x0003B (Apple Tree 2) - 0x00143 - True
|
||||||
158073 - 0x00055 (Apple Tree 3) - 0x0003B - Environment
|
158073 - 0x00055 (Apple Tree 3) - 0x0003B - True
|
||||||
Door - 0x03307 (First Gate) - 0x00055
|
Door - 0x03307 (First Gate) - 0x00055
|
||||||
|
|
||||||
Orchard Beyond First Gate (Orchard) - Orchard End - 0x03313:
|
Orchard Beyond First Gate (Orchard) - Orchard End - 0x03313:
|
||||||
158074 - 0x032F7 (Apple Tree 4) - 0x00055 - Environment
|
158074 - 0x032F7 (Apple Tree 4) - 0x00055 - True
|
||||||
158075 - 0x032FF (Apple Tree 5) - 0x032F7 - Environment
|
158075 - 0x032FF (Apple Tree 5) - 0x032F7 - True
|
||||||
Door - 0x03313 (Second Gate) - 0x032FF
|
Door - 0x03313 (Second Gate) - 0x032FF
|
||||||
|
|
||||||
Orchard End (Orchard):
|
Orchard End (Orchard):
|
||||||
|
@ -123,36 +139,47 @@ Desert Outside (Desert) - Main Island - True - Desert Floodlight Room - 0x09FEE:
|
||||||
158652 - 0x0CC7B (Vault) - True - Dots & Full Dots & Stars & Stars + Same Colored Symbol & Eraser & Triangles & Shapers & Negative Shapers & Colored Squares
|
158652 - 0x0CC7B (Vault) - True - Dots & Full Dots & Stars & Stars + Same Colored Symbol & Eraser & Triangles & Shapers & Negative Shapers & Colored Squares
|
||||||
158653 - 0x0339E (Vault Box) - 0x0CC7B - True
|
158653 - 0x0339E (Vault Box) - 0x0CC7B - True
|
||||||
158602 - 0x17CE7 (Discard) - True - Arrows
|
158602 - 0x17CE7 (Discard) - True - Arrows
|
||||||
158076 - 0x00698 (Surface 1) - True - Reflection
|
158076 - 0x00698 (Surface 1) - True - True
|
||||||
158077 - 0x0048F (Surface 2) - 0x00698 - Reflection
|
158077 - 0x0048F (Surface 2) - 0x00698 - True
|
||||||
158078 - 0x09F92 (Surface 3) - 0x0048F & 0x09FA0 - Reflection
|
158078 - 0x09F92 (Surface 3) - 0x0048F & 0x09FA0 - True
|
||||||
158079 - 0x09FA0 (Surface 3 Control) - 0x0048F - True
|
158079 - 0x09FA0 (Surface 3 Control) - 0x0048F - True
|
||||||
158080 - 0x0A036 (Surface 4) - 0x09F92 - Reflection
|
158080 - 0x0A036 (Surface 4) - 0x09F92 - True
|
||||||
158081 - 0x09DA6 (Surface 5) - 0x09F92 - Reflection
|
158081 - 0x09DA6 (Surface 5) - 0x09F92 - True
|
||||||
158082 - 0x0A049 (Surface 6) - 0x09F92 - Reflection
|
158082 - 0x0A049 (Surface 6) - 0x09F92 - True
|
||||||
158083 - 0x0A053 (Surface 7) - 0x0A036 & 0x09DA6 & 0x0A049 - Reflection
|
158083 - 0x0A053 (Surface 7) - 0x0A036 & 0x09DA6 & 0x0A049 - True
|
||||||
158084 - 0x09F94 (Surface 8) - 0x0A053 & 0x09F86 - Reflection
|
158084 - 0x09F94 (Surface 8) - 0x0A053 & 0x09F86 - True
|
||||||
158085 - 0x09F86 (Surface 8 Control) - 0x0A053 - True
|
158085 - 0x09F86 (Surface 8 Control) - 0x0A053 - True
|
||||||
158086 - 0x0C339 (Light Room Entry Panel) - 0x09F94 - True
|
158086 - 0x0C339 (Light Room Entry Panel) - 0x09F94 - True
|
||||||
Door - 0x09FEE (Light Room Entry) - 0x0C339 - True
|
Door - 0x09FEE (Light Room Entry) - 0x0C339
|
||||||
158701 - 0x03608 (Laser Panel) - 0x012D7 & 0x0A15F - True
|
158701 - 0x03608 (Laser Panel) - 0x012D7 & 0x0A15F - True
|
||||||
Laser - 0x012FB (Laser) - 0x03608
|
Laser - 0x012FB (Laser) - 0x03608
|
||||||
|
159020 - 0x3351D (Sand Snake EP) - True - True
|
||||||
|
159030 - 0x0053C (Facade Right EP) - True - True
|
||||||
|
159031 - 0x00771 (Facade Left EP) - True - True
|
||||||
|
159032 - 0x335C8 (Stairs Left EP) - True - True
|
||||||
|
159033 - 0x335C9 (Stairs Right EP) - True - True
|
||||||
|
159036 - 0x220E4 (Broken Wall Straight EP) - True - True
|
||||||
|
159037 - 0x220E5 (Broken Wall Bend EP) - True - True
|
||||||
|
159040 - 0x334B9 (Shore EP) - True - True
|
||||||
|
159041 - 0x334BC (Island EP) - True - True
|
||||||
|
|
||||||
Desert Floodlight Room (Desert) - Desert Pond Room - 0x0C2C3:
|
Desert Floodlight Room (Desert) - Desert Pond Room - 0x0C2C3:
|
||||||
158087 - 0x09FAA (Light Control) - True - True
|
158087 - 0x09FAA (Light Control) - True - True
|
||||||
158088 - 0x00422 (Light Room 1) - 0x09FAA - Reflection
|
158088 - 0x00422 (Light Room 1) - 0x09FAA - True
|
||||||
158089 - 0x006E3 (Light Room 2) - 0x09FAA - Reflection
|
158089 - 0x006E3 (Light Room 2) - 0x09FAA - True
|
||||||
158090 - 0x0A02D (Light Room 3) - 0x09FAA & 0x00422 & 0x006E3 - Reflection
|
158090 - 0x0A02D (Light Room 3) - 0x09FAA & 0x00422 & 0x006E3 - True
|
||||||
Door - 0x0C2C3 (Pond Room Entry) - 0x0A02D
|
Door - 0x0C2C3 (Pond Room Entry) - 0x0A02D
|
||||||
|
|
||||||
Desert Pond Room (Desert) - Desert Water Levels Room - 0x0A24B:
|
Desert Pond Room (Desert) - Desert Water Levels Room - 0x0A24B:
|
||||||
158091 - 0x00C72 (Pond Room 1) - True - Reflection
|
158091 - 0x00C72 (Pond Room 1) - True - True
|
||||||
158092 - 0x0129D (Pond Room 2) - 0x00C72 - Reflection
|
158092 - 0x0129D (Pond Room 2) - 0x00C72 - True
|
||||||
158093 - 0x008BB (Pond Room 3) - 0x0129D - Reflection
|
158093 - 0x008BB (Pond Room 3) - 0x0129D - True
|
||||||
158094 - 0x0078D (Pond Room 4) - 0x008BB - Reflection
|
158094 - 0x0078D (Pond Room 4) - 0x008BB - True
|
||||||
158095 - 0x18313 (Pond Room 5) - 0x0078D - Reflection
|
158095 - 0x18313 (Pond Room 5) - 0x0078D - True
|
||||||
158096 - 0x0A249 (Flood Room Entry Panel) - 0x18313 - Reflection
|
158096 - 0x0A249 (Flood Room Entry Panel) - 0x18313 - True
|
||||||
Door - 0x0A24B (Flood Room Entry) - 0x0A249
|
Door - 0x0A24B (Flood Room Entry) - 0x0A249
|
||||||
|
159043 - 0x0A14C (Pond Room Near Reflection EP) - True - True
|
||||||
|
159044 - 0x0A14D (Pond Room Far Reflection EP) - True - True
|
||||||
|
|
||||||
Desert Water Levels Room (Desert) - Desert Elevator Room - 0x0C316:
|
Desert Water Levels Room (Desert) - Desert Elevator Room - 0x0C316:
|
||||||
158097 - 0x1C2DF (Reduce Water Level Far Left) - True - True
|
158097 - 0x1C2DF (Reduce Water Level Far Left) - True - True
|
||||||
|
@ -163,37 +190,47 @@ Desert Water Levels Room (Desert) - Desert Elevator Room - 0x0C316:
|
||||||
158102 - 0x1831D (Raise Water Level Far Right) - True - True
|
158102 - 0x1831D (Raise Water Level Far Right) - True - True
|
||||||
158103 - 0x1C2B1 (Raise Water Level Near Left) - True - True
|
158103 - 0x1C2B1 (Raise Water Level Near Left) - True - True
|
||||||
158104 - 0x1831B (Raise Water Level Near Right) - True - True
|
158104 - 0x1831B (Raise Water Level Near Right) - True - True
|
||||||
158105 - 0x04D18 (Flood Room 1) - 0x1C260 & 0x1831C - Reflection
|
158105 - 0x04D18 (Flood Room 1) - 0x1C260 & 0x1831C - True
|
||||||
158106 - 0x01205 (Flood Room 2) - 0x04D18 & 0x1C260 & 0x1831C - Reflection
|
158106 - 0x01205 (Flood Room 2) - 0x04D18 & 0x1C260 & 0x1831C - True
|
||||||
158107 - 0x181AB (Flood Room 3) - 0x01205 & 0x1C260 & 0x1831C - Reflection
|
158107 - 0x181AB (Flood Room 3) - 0x01205 & 0x1C260 & 0x1831C - True
|
||||||
158108 - 0x0117A (Flood Room 4) - 0x181AB & 0x1C260 & 0x1831C - Reflection
|
158108 - 0x0117A (Flood Room 4) - 0x181AB & 0x1C260 & 0x1831C - True
|
||||||
158109 - 0x17ECA (Flood Room 5) - 0x0117A & 0x1C260 & 0x1831C - Reflection
|
158109 - 0x17ECA (Flood Room 5) - 0x0117A & 0x1C260 & 0x1831C - True
|
||||||
158110 - 0x18076 (Flood Room 6) - 0x17ECA & 0x1C260 & 0x1831C - Reflection
|
158110 - 0x18076 (Flood Room 6) - 0x17ECA & 0x1C260 & 0x1831C - True
|
||||||
Door - 0x0C316 (Elevator Room Entry) - 0x18076
|
Door - 0x0C316 (Elevator Room Entry) - 0x18076
|
||||||
|
159034 - 0x337F8 (Flood Room EP) - 0x1C2DF - True
|
||||||
|
|
||||||
Desert Elevator Room (Desert) - Desert Lowest Level Inbetween Shortcuts - 0x012FB:
|
Desert Elevator Room (Desert) - Desert Lowest Level Inbetween Shortcuts - 0x012FB:
|
||||||
158111 - 0x17C31 (Final Transparent) - True - Reflection
|
158111 - 0x17C31 (Final Transparent) - True - True
|
||||||
158113 - 0x012D7 (Final Hexagonal) - 0x17C31 & 0x0A015 - Reflection
|
158113 - 0x012D7 (Final Hexagonal) - 0x17C31 & 0x0A015 - True
|
||||||
158114 - 0x0A015 (Final Hexagonal Control) - 0x17C31 - True
|
158114 - 0x0A015 (Final Hexagonal Control) - 0x17C31 - True
|
||||||
158115 - 0x0A15C (Final Bent 1) - True - Reflection
|
158115 - 0x0A15C (Final Bent 1) - True - True
|
||||||
158116 - 0x09FFF (Final Bent 2) - 0x0A15C - Reflection
|
158116 - 0x09FFF (Final Bent 2) - 0x0A15C - True
|
||||||
158117 - 0x0A15F (Final Bent 3) - 0x09FFF - Reflection
|
158117 - 0x0A15F (Final Bent 3) - 0x09FFF - True
|
||||||
|
159035 - 0x037BB (Elevator EP) - 0x012FB - True
|
||||||
|
|
||||||
Desert Lowest Level Inbetween Shortcuts (Desert):
|
Desert Lowest Level Inbetween Shortcuts (Desert):
|
||||||
|
|
||||||
Outside Quarry (Quarry) - Main Island - True - Quarry Between Entrys - 0x09D6F:
|
Outside Quarry (Quarry) - Main Island - True - Quarry Between Entrys - 0x09D6F - Quarry Elevator - TrueOneWay:
|
||||||
158118 - 0x09E57 (Entry 1 Panel) - True - Squares & Black/White Squares & Triangles
|
158118 - 0x09E57 (Entry 1 Panel) - True - Squares & Black/White Squares & Triangles
|
||||||
158120 - 0x17CC4 (Elevator Control) - 0x0367C - Dots & Eraser
|
|
||||||
158603 - 0x17CF0 (Discard) - True - Arrows
|
158603 - 0x17CF0 (Discard) - True - Arrows
|
||||||
158702 - 0x03612 (Laser Panel) - 0x0A3D0 & 0x0367C - Eraser & Triangles & Stars & Stars + Same Colored Symbol
|
158702 - 0x03612 (Laser Panel) - 0x0A3D0 & 0x0367C - Eraser & Triangles & Stars & Stars + Same Colored Symbol
|
||||||
Laser - 0x01539 (Laser) - 0x03612
|
Laser - 0x01539 (Laser) - 0x03612
|
||||||
Door - 0x09D6F (Entry 1) - 0x09E57
|
Door - 0x09D6F (Entry 1) - 0x09E57
|
||||||
|
159404 - 0x28A4A (Shore EP) - True - True
|
||||||
|
159410 - 0x334B6 (Entrance Pipe EP) - True - True
|
||||||
|
159412 - 0x28A4C (Sand Pile EP) - True - True
|
||||||
|
159420 - 0x289CF (Rock Line EP) - True - True
|
||||||
|
159421 - 0x289D1 (Rock Line Reflection EP) - True - True
|
||||||
|
|
||||||
|
Quarry Elevator (Quarry):
|
||||||
|
158120 - 0x17CC4 (Elevator Control) - 0x0367C - Dots & Eraser
|
||||||
|
159403 - 0x17CB9 (Railroad EP) - 0x17CC4 - True
|
||||||
|
|
||||||
Quarry Between Entrys (Quarry) - Quarry - 0x17C07:
|
Quarry Between Entrys (Quarry) - Quarry - 0x17C07:
|
||||||
158119 - 0x17C09 (Entry 2 Panel) - True - Shapers & Triangles
|
158119 - 0x17C09 (Entry 2 Panel) - True - Shapers & Triangles
|
||||||
Door - 0x17C07 (Entry 2) - 0x17C09
|
Door - 0x17C07 (Entry 2) - 0x17C09
|
||||||
|
|
||||||
Quarry (Quarry) - Quarry Mill Ground Floor - 0x02010:
|
Quarry (Quarry) - Quarry Mill Ground Floor - 0x02010 - Quarry Elevator - 0x17CC4:
|
||||||
158121 - 0x01E5A (Mill Entry Left Panel) - True - Squares & Black/White Squares & Stars & Stars + Same Colored Symbol
|
158121 - 0x01E5A (Mill Entry Left Panel) - True - Squares & Black/White Squares & Stars & Stars + Same Colored Symbol
|
||||||
158122 - 0x01E59 (Mill Entry Right Panel) - True - Triangles
|
158122 - 0x01E59 (Mill Entry Right Panel) - True - Triangles
|
||||||
Door - 0x02010 (Mill Entry) - 0x01E59 & 0x01E5A
|
Door - 0x02010 (Mill Entry) - 0x01E59 & 0x01E5A
|
||||||
|
@ -229,6 +266,8 @@ Quarry Mill Upper Floor (Quarry Mill) - Quarry Mill Middle Floor - 0x03676 & 0x0
|
||||||
Door - 0x0368A (Stairs) - 0x03677
|
Door - 0x0368A (Stairs) - 0x03677
|
||||||
158143 - 0x3C125 (Control Room Left) - 0x0367C - Squares & Black/White Squares & Dots & Full Dots & Eraser
|
158143 - 0x3C125 (Control Room Left) - 0x0367C - Squares & Black/White Squares & Dots & Full Dots & Eraser
|
||||||
158144 - 0x0367C (Control Room Right) - 0x014E9 - Squares & Colored Squares & Triangles & Eraser & Stars & Stars + Same Colored Symbol
|
158144 - 0x0367C (Control Room Right) - 0x014E9 - Squares & Colored Squares & Triangles & Eraser & Stars & Stars + Same Colored Symbol
|
||||||
|
159411 - 0x0069D (Ramp EP) - 0x03676 & 0x275FF - True
|
||||||
|
159413 - 0x00614 (Lift EP) - 0x275FF & 0x03675 - True
|
||||||
|
|
||||||
Quarry Boathouse (Quarry Boathouse) - Quarry - True - Quarry Boathouse Upper Front - 0x03852 - Quarry Boathouse Behind Staircase - 0x2769B:
|
Quarry Boathouse (Quarry Boathouse) - Quarry - True - Quarry Boathouse Upper Front - 0x03852 - Quarry Boathouse Behind Staircase - 0x2769B:
|
||||||
158146 - 0x034D4 (Intro Left) - True - Stars & Eraser
|
158146 - 0x034D4 (Intro Left) - True - Stars & Eraser
|
||||||
|
@ -250,6 +289,7 @@ Door - 0x17C50 (First Barrier) - 0x021AE
|
||||||
|
|
||||||
Quarry Boathouse Upper Middle (Quarry Boathouse) - Quarry Boathouse Upper Back - 0x03858:
|
Quarry Boathouse Upper Middle (Quarry Boathouse) - Quarry Boathouse Upper Back - 0x03858:
|
||||||
158154 - 0x03858 (Ramp Horizontal Control) - True - Shapers & Eraser
|
158154 - 0x03858 (Ramp Horizontal Control) - True - Shapers & Eraser
|
||||||
|
159402 - 0x00859 (Moving Ramp EP) - 0x03858 & 0x03852 & 0x3865F - True
|
||||||
|
|
||||||
Quarry Boathouse Upper Back (Quarry Boathouse) - Quarry Boathouse Upper Middle - 0x3865F:
|
Quarry Boathouse Upper Back (Quarry Boathouse) - Quarry Boathouse Upper Middle - 0x3865F:
|
||||||
158155 - 0x38663 (Second Barrier Panel) - True - True
|
158155 - 0x38663 (Second Barrier Panel) - True - True
|
||||||
|
@ -267,96 +307,119 @@ Door - 0x3865F (Second Barrier) - 0x38663
|
||||||
158167 - 0x0A3CB (Back Second Row 1) - 0x09DB4 - Stars & Eraser & Shapers & Negative Shapers & Stars + Same Colored Symbol
|
158167 - 0x0A3CB (Back Second Row 1) - 0x09DB4 - Stars & Eraser & Shapers & Negative Shapers & Stars + Same Colored Symbol
|
||||||
158168 - 0x0A3CC (Back Second Row 2) - 0x0A3CB - Stars & Eraser & Shapers & Negative Shapers & Stars + Same Colored Symbol
|
158168 - 0x0A3CC (Back Second Row 2) - 0x0A3CB - Stars & Eraser & Shapers & Negative Shapers & Stars + Same Colored Symbol
|
||||||
158169 - 0x0A3D0 (Back Second Row 3) - 0x0A3CC - Stars & Eraser & Shapers & Negative Shapers & Stars + Same Colored Symbol
|
158169 - 0x0A3D0 (Back Second Row 3) - 0x0A3CC - Stars & Eraser & Shapers & Negative Shapers & Stars + Same Colored Symbol
|
||||||
|
159401 - 0x005F6 (Hook EP) - 0x275FA & 0x03852 & 0x3865F - True
|
||||||
|
|
||||||
Shadows (Shadows) - Main Island - True - Shadows Ledge - 0x19B24 - Shadows Laser Room - 0x194B2 & 0x19665:
|
Shadows (Shadows) - Main Island - True - Shadows Ledge - 0x19B24 - Shadows Laser Room - 0x194B2 & 0x19665:
|
||||||
158170 - 0x334DB (Door Timer Outside) - True - True
|
158170 - 0x334DB (Door Timer Outside) - True - True
|
||||||
Door - 0x19B24 (Timed Door) - 0x334DB
|
Door - 0x19B24 (Timed Door) - 0x334DB
|
||||||
158171 - 0x0AC74 (Intro 6) - 0x0A8DC - Shadows Avoid
|
158171 - 0x0AC74 (Intro 6) - 0x0A8DC - True
|
||||||
158172 - 0x0AC7A (Intro 7) - 0x0AC74 - Shadows Avoid
|
158172 - 0x0AC7A (Intro 7) - 0x0AC74 - True
|
||||||
158173 - 0x0A8E0 (Intro 8) - 0x0AC7A - Shadows Avoid
|
158173 - 0x0A8E0 (Intro 8) - 0x0AC7A - True
|
||||||
158174 - 0x386FA (Far 1) - 0x0A8E0 - Shadows Avoid & Environment
|
158174 - 0x386FA (Far 1) - 0x0A8E0 - True
|
||||||
158175 - 0x1C33F (Far 2) - 0x386FA - Shadows Avoid & Environment
|
158175 - 0x1C33F (Far 2) - 0x386FA - True
|
||||||
158176 - 0x196E2 (Far 3) - 0x1C33F - Shadows Avoid & Environment
|
158176 - 0x196E2 (Far 3) - 0x1C33F - True
|
||||||
158177 - 0x1972A (Far 4) - 0x196E2 - Shadows Avoid & Environment
|
158177 - 0x1972A (Far 4) - 0x196E2 - True
|
||||||
158178 - 0x19809 (Far 5) - 0x1972A - Shadows Avoid & Environment
|
158178 - 0x19809 (Far 5) - 0x1972A - True
|
||||||
158179 - 0x19806 (Far 6) - 0x19809 - Shadows Avoid & Environment
|
158179 - 0x19806 (Far 6) - 0x19809 - True
|
||||||
158180 - 0x196F8 (Far 7) - 0x19806 - Shadows Avoid & Environment
|
158180 - 0x196F8 (Far 7) - 0x19806 - True
|
||||||
158181 - 0x1972F (Far 8) - 0x196F8 - Shadows Avoid & Environment
|
158181 - 0x1972F (Far 8) - 0x196F8 - True
|
||||||
Door - 0x194B2 (Laser Entry Right) - 0x1972F
|
Door - 0x194B2 (Laser Entry Right) - 0x1972F
|
||||||
158182 - 0x19797 (Near 1) - 0x0A8E0 - Shadows Follow
|
158182 - 0x19797 (Near 1) - 0x0A8E0 - True
|
||||||
158183 - 0x1979A (Near 2) - 0x19797 - Shadows Follow
|
158183 - 0x1979A (Near 2) - 0x19797 - True
|
||||||
158184 - 0x197E0 (Near 3) - 0x1979A - Shadows Follow
|
158184 - 0x197E0 (Near 3) - 0x1979A - True
|
||||||
158185 - 0x197E8 (Near 4) - 0x197E0 - Shadows Follow
|
158185 - 0x197E8 (Near 4) - 0x197E0 - True
|
||||||
158186 - 0x197E5 (Near 5) - 0x197E8 - Shadows Follow
|
158186 - 0x197E5 (Near 5) - 0x197E8 - True
|
||||||
Door - 0x19665 (Laser Entry Left) - 0x197E5
|
Door - 0x19665 (Laser Entry Left) - 0x197E5
|
||||||
|
159400 - 0x28A7B (Quarry Mill Rooftop Vent EP) - True - True
|
||||||
|
|
||||||
Shadows Ledge (Shadows) - Shadows - 0x1855B - Quarry - 0x19865 & 0x0A2DF:
|
Shadows Ledge (Shadows) - Shadows - 0x1855B - Quarry - 0x19865 & 0x0A2DF:
|
||||||
158187 - 0x334DC (Door Timer Inside) - True - True
|
158187 - 0x334DC (Door Timer Inside) - True - True
|
||||||
158188 - 0x198B5 (Intro 1) - True - Shadows Avoid
|
158188 - 0x198B5 (Intro 1) - True - True
|
||||||
158189 - 0x198BD (Intro 2) - 0x198B5 - Shadows Avoid
|
158189 - 0x198BD (Intro 2) - 0x198B5 - True
|
||||||
158190 - 0x198BF (Intro 3) - 0x198BD & 0x334DC & 0x19B24 - Shadows Avoid
|
158190 - 0x198BF (Intro 3) - 0x198BD & 0x334DC & 0x19B24 - True
|
||||||
Door - 0x19865 (Quarry Barrier) - 0x198BF
|
Door - 0x19865 (Quarry Barrier) - 0x198BF
|
||||||
Door - 0x0A2DF (Quarry Barrier 2) - 0x198BF
|
Door - 0x0A2DF (Quarry Barrier 2) - 0x198BF
|
||||||
158191 - 0x19771 (Intro 4) - 0x198BF - Shadows Avoid
|
158191 - 0x19771 (Intro 4) - 0x198BF - True
|
||||||
158192 - 0x0A8DC (Intro 5) - 0x19771 - Shadows Avoid
|
158192 - 0x0A8DC (Intro 5) - 0x19771 - True
|
||||||
Door - 0x1855B (Ledge Barrier) - 0x0A8DC
|
Door - 0x1855B (Ledge Barrier) - 0x0A8DC
|
||||||
Door - 0x19ADE (Ledge Barrier 2) - 0x0A8DC
|
Door - 0x19ADE (Ledge Barrier 2) - 0x0A8DC
|
||||||
|
|
||||||
Shadows Laser Room (Shadows):
|
Shadows Laser Room (Shadows):
|
||||||
158703 - 0x19650 (Laser Panel) - True - Shadows Avoid & Shadows Follow
|
158703 - 0x19650 (Laser Panel) - True - True
|
||||||
Laser - 0x181B3 (Laser) - 0x19650
|
Laser - 0x181B3 (Laser) - 0x19650
|
||||||
|
|
||||||
|
Treehouse Beach (Treehouse Beach) - Main Island - True:
|
||||||
|
159200 - 0x0053D (Rock Shadow EP) - True - True
|
||||||
|
159201 - 0x0053E (Sand Shadow EP) - True - True
|
||||||
|
159212 - 0x220BD (Both Orange Bridges EP) - 0x17DA2 & 0x17DDB - True
|
||||||
|
|
||||||
Keep (Keep) - Main Island - True - Keep 2nd Maze - 0x01954 - Keep 2nd Pressure Plate - 0x01BEC:
|
Keep (Keep) - Main Island - True - Keep 2nd Maze - 0x01954 - Keep 2nd Pressure Plate - 0x01BEC:
|
||||||
158193 - 0x00139 (Hedge Maze 1) - True - Environment
|
158193 - 0x00139 (Hedge Maze 1) - True - True
|
||||||
158197 - 0x0A3A8 (Reset Pressure Plates 1) - True - True
|
158197 - 0x0A3A8 (Reset Pressure Plates 1) - True - True
|
||||||
158198 - 0x033EA (Pressure Plates 1) - 0x0A3A8 - Pressure Plates & Colored Squares & Triangles & Stars & Stars + Same Colored Symbol
|
158198 - 0x033EA (Pressure Plates 1) - 0x0A3A8 - Colored Squares & Triangles & Stars & Stars + Same Colored Symbol
|
||||||
Door - 0x01954 (Hedge Maze 1 Exit) - 0x00139
|
Door - 0x01954 (Hedge Maze 1 Exit) - 0x00139
|
||||||
Door - 0x01BEC (Pressure Plates 1 Exit) - 0x033EA
|
Door - 0x01BEC (Pressure Plates 1 Exit) - 0x033EA
|
||||||
|
159430 - 0x03E77 (Red Flowers EP) - True - True
|
||||||
|
159431 - 0x03E7C (Purple Flowers EP) - True - True
|
||||||
|
|
||||||
Keep 2nd Maze (Keep) - Keep - 0x018CE - Keep 3rd Maze - 0x019D8:
|
Keep 2nd Maze (Keep) - Keep - 0x018CE - Keep 3rd Maze - 0x019D8:
|
||||||
Door - 0x018CE (Hedge Maze 2 Shortcut) - 0x00139
|
Door - 0x018CE (Hedge Maze 2 Shortcut) - 0x00139
|
||||||
158194 - 0x019DC (Hedge Maze 2) - True - Environment
|
158194 - 0x019DC (Hedge Maze 2) - True - True
|
||||||
Door - 0x019D8 (Hedge Maze 2 Exit) - 0x019DC
|
Door - 0x019D8 (Hedge Maze 2 Exit) - 0x019DC
|
||||||
|
|
||||||
Keep 3rd Maze (Keep) - Keep - 0x019B5 - Keep 4th Maze - 0x019E6:
|
Keep 3rd Maze (Keep) - Keep - 0x019B5 - Keep 4th Maze - 0x019E6:
|
||||||
Door - 0x019B5 (Hedge Maze 3 Shortcut) - 0x019DC
|
Door - 0x019B5 (Hedge Maze 3 Shortcut) - 0x019DC
|
||||||
158195 - 0x019E7 (Hedge Maze 3) - True - Environment & Sound
|
158195 - 0x019E7 (Hedge Maze 3) - True - True
|
||||||
Door - 0x019E6 (Hedge Maze 3 Exit) - 0x019E7
|
Door - 0x019E6 (Hedge Maze 3 Exit) - 0x019E7
|
||||||
|
|
||||||
Keep 4th Maze (Keep) - Keep - 0x0199A - Keep Tower - 0x01A0E:
|
Keep 4th Maze (Keep) - Keep - 0x0199A - Keep Tower - 0x01A0E:
|
||||||
Door - 0x0199A (Hedge Maze 4 Shortcut) - 0x019E7
|
Door - 0x0199A (Hedge Maze 4 Shortcut) - 0x019E7
|
||||||
158196 - 0x01A0F (Hedge Maze 4) - True - Environment
|
158196 - 0x01A0F (Hedge Maze 4) - True - True
|
||||||
Door - 0x01A0E (Hedge Maze 4 Exit) - 0x01A0F
|
Door - 0x01A0E (Hedge Maze 4 Exit) - 0x01A0F
|
||||||
|
|
||||||
Keep 2nd Pressure Plate (Keep) - Keep 3rd Pressure Plate - True:
|
Keep 2nd Pressure Plate (Keep) - Keep 3rd Pressure Plate - True:
|
||||||
158199 - 0x0A3B9 (Reset Pressure Plates 2) - True - True
|
158199 - 0x0A3B9 (Reset Pressure Plates 2) - True - True
|
||||||
158200 - 0x01BE9 (Pressure Plates 2) - PP2 Weirdness - Pressure Plates & Stars & Stars + Same Colored Symbol & Squares & Black/White Squares & Shapers & Rotated Shapers
|
158200 - 0x01BE9 (Pressure Plates 2) - PP2 Weirdness - Stars & Stars + Same Colored Symbol & Squares & Black/White Squares & Shapers & Rotated Shapers
|
||||||
Door - 0x01BEA (Pressure Plates 2 Exit) - 0x01BE9
|
Door - 0x01BEA (Pressure Plates 2 Exit) - 0x01BE9
|
||||||
|
|
||||||
Keep 3rd Pressure Plate (Keep) - Keep 4th Pressure Plate - 0x01CD5:
|
Keep 3rd Pressure Plate (Keep) - Keep 4th Pressure Plate - 0x01CD5:
|
||||||
158201 - 0x0A3BB (Reset Pressure Plates 3) - True - True
|
158201 - 0x0A3BB (Reset Pressure Plates 3) - True - True
|
||||||
158202 - 0x01CD3 (Pressure Plates 3) - 0x0A3BB - Pressure Plates & Black/White Squares & Triangles & Shapers & Rotated Shapers
|
158202 - 0x01CD3 (Pressure Plates 3) - 0x0A3BB - Black/White Squares & Triangles & Shapers & Rotated Shapers
|
||||||
Door - 0x01CD5 (Pressure Plates 3 Exit) - 0x01CD3
|
Door - 0x01CD5 (Pressure Plates 3 Exit) - 0x01CD3
|
||||||
|
|
||||||
Keep 4th Pressure Plate (Keep) - Shadows - 0x09E3D - Keep Tower - 0x01D40:
|
Keep 4th Pressure Plate (Keep) - Shadows - 0x09E3D - Keep Tower - 0x01D40:
|
||||||
158203 - 0x0A3AD (Reset Pressure Plates 4) - True - True
|
158203 - 0x0A3AD (Reset Pressure Plates 4) - True - True
|
||||||
158204 - 0x01D3F (Pressure Plates 4) - 0x0A3AD - Pressure Plates & Shapers & Triangles & Stars & Stars + Same Colored Symbol
|
158204 - 0x01D3F (Pressure Plates 4) - 0x0A3AD - Shapers & Triangles & Stars & Stars + Same Colored Symbol
|
||||||
Door - 0x01D40 (Pressure Plates 4 Exit) - 0x01D3F
|
Door - 0x01D40 (Pressure Plates 4 Exit) - 0x01D3F
|
||||||
158604 - 0x17D27 (Discard) - True - Arrows
|
158604 - 0x17D27 (Discard) - True - Arrows
|
||||||
158205 - 0x09E49 (Shadows Shortcut Panel) - True - True
|
158205 - 0x09E49 (Shadows Shortcut Panel) - True - True
|
||||||
Door - 0x09E3D (Shadows Shortcut) - 0x09E49
|
Door - 0x09E3D (Shadows Shortcut) - 0x09E49
|
||||||
|
|
||||||
Shipwreck (Shipwreck) - Keep 3rd Pressure Plate - True:
|
Shipwreck (Shipwreck) - Keep 3rd Pressure Plate - True:
|
||||||
158654 - 0x00AFB (Vault) - True - Symmetry & Sound & Sound Dots & Colored Dots
|
158654 - 0x00AFB (Vault) - True - Symmetry & Sound Dots & Colored Dots
|
||||||
158655 - 0x03535 (Vault Box) - 0x00AFB - True
|
158655 - 0x03535 (Vault Box) - 0x00AFB - True
|
||||||
158605 - 0x17D28 (Discard) - True - Arrows
|
158605 - 0x17D28 (Discard) - True - Arrows
|
||||||
|
159220 - 0x03B22 (Circle Far EP) - True - True
|
||||||
|
159221 - 0x03B23 (Circle Left EP) - True - True
|
||||||
|
159222 - 0x03B24 (Circle Near EP) - True - True
|
||||||
|
159224 - 0x03A79 (Stern EP) - True - True
|
||||||
|
159225 - 0x28ABD (Rope Inner EP) - True - True
|
||||||
|
159226 - 0x28ABE (Rope Outer EP) - True - True
|
||||||
|
159230 - 0x3388F (Couch EP) - 0x17CDF | 0x0A054 - True
|
||||||
|
|
||||||
Keep Tower (Keep) - Keep - 0x04F8F:
|
Keep Tower (Keep) - Keep - 0x04F8F:
|
||||||
158206 - 0x0361B (Tower Shortcut Panel) - True - True
|
158206 - 0x0361B (Tower Shortcut Panel) - True - True
|
||||||
Door - 0x04F8F (Tower Shortcut) - 0x0361B
|
Door - 0x04F8F (Tower Shortcut) - 0x0361B
|
||||||
158704 - 0x0360E (Laser Panel Hedges) - 0x01A0F & 0x019E7 & 0x019DC & 0x00139 - Environment & Sound
|
158704 - 0x0360E (Laser Panel Hedges) - 0x01A0F & 0x019E7 & 0x019DC & 0x00139 - True
|
||||||
158705 - 0x03317 (Laser Panel Pressure Plates) - 0x01BE9 - Shapers & Rotated Shapers & Triangles & Stars & Stars + Same Colored Symbol & Colored Squares & Black/White Squares
|
158705 - 0x03317 (Laser Panel Pressure Plates) - 0x01BE9 - Shapers & Rotated Shapers & Triangles & Stars & Stars + Same Colored Symbol & Colored Squares & Black/White Squares
|
||||||
Laser - 0x014BB (Laser) - 0x0360E | 0x03317
|
Laser - 0x014BB (Laser) - 0x0360E | 0x03317
|
||||||
|
159240 - 0x033BE (Pressure Plates 1 EP) - 0x033EA - True
|
||||||
|
159241 - 0x033BF (Pressure Plates 2 EP) - 0x01BE9 - True
|
||||||
|
159242 - 0x033DD (Pressure Plates 3 EP) - 0x01CD3 & 0x01CD5 - True
|
||||||
|
159243 - 0x033E5 (Pressure Plates 4 Left Exit EP) - 0x01D3F - True
|
||||||
|
159244 - 0x018B6 (Pressure Plates 4 Right Exit EP) - 0x01D3F - True
|
||||||
|
159250 - 0x28AE9 (Path EP) - True - True
|
||||||
|
159251 - 0x3348F (Hedges EP) - True - True
|
||||||
|
|
||||||
Outside Monastery (Monastery) - Main Island - True - Inside Monastery - 0x0C128 & 0x0C153 - Monastery Garden - 0x03750:
|
Outside Monastery (Monastery) - Main Island - True - Inside Monastery - 0x0C128 & 0x0C153 - Monastery Garden - 0x03750:
|
||||||
158207 - 0x03713 (Shortcut Panel) - True - True
|
158207 - 0x03713 (Shortcut Panel) - True - True
|
||||||
|
@ -365,19 +428,29 @@ Door - 0x0364E (Shortcut) - 0x03713
|
||||||
158209 - 0x00C92 (Entry Right) - True - True
|
158209 - 0x00C92 (Entry Right) - True - True
|
||||||
Door - 0x0C128 (Entry Inner) - 0x00B10
|
Door - 0x0C128 (Entry Inner) - 0x00B10
|
||||||
Door - 0x0C153 (Entry Outer) - 0x00C92
|
Door - 0x0C153 (Entry Outer) - 0x00C92
|
||||||
158210 - 0x00290 (Outside 1) - 0x09D9B - Environment
|
158210 - 0x00290 (Outside 1) - 0x09D9B - True
|
||||||
158211 - 0x00038 (Outside 2) - 0x09D9B & 0x00290 - Environment
|
158211 - 0x00038 (Outside 2) - 0x09D9B & 0x00290 - True
|
||||||
158212 - 0x00037 (Outside 3) - 0x09D9B & 0x00038 - Environment
|
158212 - 0x00037 (Outside 3) - 0x09D9B & 0x00038 - True
|
||||||
Door - 0x03750 (Garden Entry) - 0x00037
|
Door - 0x03750 (Garden Entry) - 0x00037
|
||||||
158706 - 0x17CA4 (Laser Panel) - 0x193A6 - True
|
158706 - 0x17CA4 (Laser Panel) - 0x193A6 - True
|
||||||
Laser - 0x17C65 (Laser) - 0x17CA4
|
Laser - 0x17C65 (Laser) - 0x17CA4
|
||||||
|
159130 - 0x006E5 (Facade Left Near EP) - True - True
|
||||||
|
159131 - 0x006E6 (Facade Left Far Short EP) - True - True
|
||||||
|
159132 - 0x006E7 (Facade Left Far Long EP) - True - True
|
||||||
|
159136 - 0x03DAB (Facade Right Near EP) - True - True
|
||||||
|
159137 - 0x03DAC (Facade Left Stairs EP) - True - True
|
||||||
|
159138 - 0x03DAD (Facade Right Stairs EP) - True - True
|
||||||
|
159140 - 0x03E01 (Grass Stairs EP) - True - True
|
||||||
|
|
||||||
Inside Monastery (Monastery):
|
Inside Monastery (Monastery):
|
||||||
158213 - 0x09D9B (Shutters Control) - True - Dots
|
158213 - 0x09D9B (Shutters Control) - True - Dots
|
||||||
158214 - 0x193A7 (Inside 1) - 0x00037 - Environment
|
158214 - 0x193A7 (Inside 1) - 0x00037 - True
|
||||||
158215 - 0x193AA (Inside 2) - 0x193A7 - Environment
|
158215 - 0x193AA (Inside 2) - 0x193A7 - True
|
||||||
158216 - 0x193AB (Inside 3) - 0x193AA - Environment
|
158216 - 0x193AB (Inside 3) - 0x193AA - True
|
||||||
158217 - 0x193A6 (Inside 4) - 0x193AB - Environment
|
158217 - 0x193A6 (Inside 4) - 0x193AB - True
|
||||||
|
159133 - 0x034A7 (Left Shutter EP) - 0x09D9B - True
|
||||||
|
159134 - 0x034AD (Middle Shutter EP) - 0x09D9B - True
|
||||||
|
159135 - 0x034AF (Right Shutter EP) - 0x09D9B - True
|
||||||
|
|
||||||
Monastery Garden (Monastery):
|
Monastery Garden (Monastery):
|
||||||
|
|
||||||
|
@ -386,10 +459,10 @@ Town (Town) - Main Island - True - Boat - 0x0A054 - Town Maze Rooftop - 0x28AA2
|
||||||
158219 - 0x0A0C8 (Cargo Box Entry Panel) - True - Squares & Black/White Squares & Shapers & Triangles
|
158219 - 0x0A0C8 (Cargo Box Entry Panel) - True - Squares & Black/White Squares & Shapers & Triangles
|
||||||
Door - 0x0A0C9 (Cargo Box Entry) - 0x0A0C8
|
Door - 0x0A0C9 (Cargo Box Entry) - 0x0A0C8
|
||||||
158707 - 0x09F98 (Desert Laser Redirect) - True - True
|
158707 - 0x09F98 (Desert Laser Redirect) - True - True
|
||||||
158220 - 0x18590 (Transparent) - True - Symmetry & Environment
|
158220 - 0x18590 (Transparent) - True - Symmetry
|
||||||
158221 - 0x28AE3 (Vines) - 0x18590 - Shadows Follow & Environment
|
158221 - 0x28AE3 (Vines) - 0x18590 - True
|
||||||
158222 - 0x28938 (Apple Tree) - 0x28AE3 - Environment
|
158222 - 0x28938 (Apple Tree) - 0x28AE3 - True
|
||||||
158223 - 0x079DF (Triple Exit) - 0x28938 - Shadows Avoid & Environment & Reflection
|
158223 - 0x079DF (Triple Exit) - 0x28938 - True
|
||||||
158235 - 0x2899C (Wooden Roof Lower Row 1) - True - Triangles & Dots & Full Dots
|
158235 - 0x2899C (Wooden Roof Lower Row 1) - True - Triangles & Dots & Full Dots
|
||||||
158236 - 0x28A33 (Wooden Roof Lower Row 2) - 0x2899C - Triangles & Dots & Full Dots
|
158236 - 0x28A33 (Wooden Roof Lower Row 2) - 0x2899C - Triangles & Dots & Full Dots
|
||||||
158237 - 0x28ABF (Wooden Roof Lower Row 3) - 0x28A33 - Triangles & Dots & Full Dots
|
158237 - 0x28ABF (Wooden Roof Lower Row 3) - 0x28A33 - Triangles & Dots & Full Dots
|
||||||
|
@ -398,18 +471,30 @@ Door - 0x0A0C9 (Cargo Box Entry) - 0x0A0C8
|
||||||
Door - 0x034F5 (Wooden Roof Stairs) - 0x28AC1
|
Door - 0x034F5 (Wooden Roof Stairs) - 0x28AC1
|
||||||
158225 - 0x28998 (Tinted Glass Door Panel) - True - Stars & Rotated Shapers & Stars + Same Colored Symbol
|
158225 - 0x28998 (Tinted Glass Door Panel) - True - Stars & Rotated Shapers & Stars + Same Colored Symbol
|
||||||
Door - 0x28A61 (Tinted Glass Door) - 0x28A0D
|
Door - 0x28A61 (Tinted Glass Door) - 0x28A0D
|
||||||
158226 - 0x28A0D (Church Entry Panel) - 0x28998 - Stars & RGB & Environment
|
158226 - 0x28A0D (Church Entry Panel) - 0x28998 - Stars
|
||||||
Door - 0x03BB0 (Church Entry) - 0x03C08
|
Door - 0x03BB0 (Church Entry) - 0x03C08
|
||||||
158228 - 0x28A79 (Maze Stair Control) - True - Environment
|
158228 - 0x28A79 (Maze Stair Control) - True - True
|
||||||
Door - 0x28AA2 (Maze Stairs) - 0x28A79
|
Door - 0x28AA2 (Maze Stairs) - 0x28A79
|
||||||
158241 - 0x17F5F (Windmill Entry Panel) - True - Dots
|
158241 - 0x17F5F (Windmill Entry Panel) - True - Dots
|
||||||
Door - 0x1845B (Windmill Entry) - 0x17F5F
|
Door - 0x1845B (Windmill Entry) - 0x17F5F
|
||||||
|
159010 - 0x037B6 (Windmill First Blade EP) - 0x17D02 - True
|
||||||
|
159011 - 0x037B2 (Windmill Second Blade EP) - 0x17D02 - True
|
||||||
|
159012 - 0x000F7 (Windmill Third Blade EP) - 0x17D02 - True
|
||||||
|
159540 - 0x03335 (Tower Underside First EP) - True - True
|
||||||
|
159541 - 0x03412 (Tower Underside Second EP) - True - True
|
||||||
|
159542 - 0x038A6 (Tower Underside Third EP) - True - True
|
||||||
|
159543 - 0x038AA (Tower Underside Fourth EP) - True - True
|
||||||
|
159545 - 0x03E40 (RGB House Green EP) - 0x334D8 & 0x03C0C & 0x03C08 - True
|
||||||
|
159546 - 0x28B8E (Maze Bridge Underside EP) - 0x2896A - True
|
||||||
|
159552 - 0x03BCF (Black Line Redirect EP) - True - True
|
||||||
|
159800 - 0xFFF80 (Pet the Dog) - True - True
|
||||||
|
|
||||||
Town Inside Cargo Box (Town):
|
Town Inside Cargo Box (Town):
|
||||||
158606 - 0x17D01 (Cargo Box Discard) - True - Arrows
|
158606 - 0x17D01 (Cargo Box Discard) - True - Arrows
|
||||||
|
|
||||||
Town Maze Rooftop (Town) - Town Red Rooftop - 0x2896A:
|
Town Maze Rooftop (Town) - Town Red Rooftop - 0x2896A:
|
||||||
158229 - 0x2896A (Maze Rooftop Bridge Control) - True - Shapers
|
158229 - 0x2896A (Maze Rooftop Bridge Control) - True - Shapers
|
||||||
|
159544 - 0x03E3F (RGB House Red EP) - 0x334D8 & 0x03C0C & 0x03C08 - True
|
||||||
|
|
||||||
Town Red Rooftop (Town):
|
Town Red Rooftop (Town):
|
||||||
158607 - 0x17C71 (Rooftop Discard) - True - Arrows
|
158607 - 0x17C71 (Rooftop Discard) - True - Arrows
|
||||||
|
@ -418,23 +503,24 @@ Town Red Rooftop (Town):
|
||||||
158232 - 0x28ACA (Red Rooftop 3) - 0x28AC8 - Symmetry & Shapers
|
158232 - 0x28ACA (Red Rooftop 3) - 0x28AC8 - Symmetry & Shapers
|
||||||
158233 - 0x28ACB (Red Rooftop 4) - 0x28ACA - Symmetry & Shapers
|
158233 - 0x28ACB (Red Rooftop 4) - 0x28ACA - Symmetry & Shapers
|
||||||
158234 - 0x28ACC (Red Rooftop 5) - 0x28ACB - Symmetry & Shapers
|
158234 - 0x28ACC (Red Rooftop 5) - 0x28ACB - Symmetry & Shapers
|
||||||
158224 - 0x28B39 (Tall Hexagonal) - 0x079DF - Reflection
|
158224 - 0x28B39 (Tall Hexagonal) - 0x079DF - True
|
||||||
|
|
||||||
Town Wooden Rooftop (Town):
|
Town Wooden Rooftop (Town):
|
||||||
158240 - 0x28AD9 (Wooden Rooftop) - 0x28AC1 - Triangles & Dots & Full Dots & Eraser
|
158240 - 0x28AD9 (Wooden Rooftop) - 0x28AC1 - Triangles & Dots & Full Dots & Eraser
|
||||||
|
|
||||||
Town Church (Town):
|
Town Church (Town):
|
||||||
158227 - 0x28A69 (Church Lattice) - 0x03BB0 - Environment
|
158227 - 0x28A69 (Church Lattice) - 0x03BB0 - True
|
||||||
|
159553 - 0x03BD1 (Black Line Church EP) - True - True
|
||||||
|
|
||||||
RGB House (Town) - RGB Room - 0x2897B:
|
RGB House (Town) - RGB Room - 0x2897B:
|
||||||
158242 - 0x034E4 (Sound Room Left) - True - Sound
|
158242 - 0x034E4 (Sound Room Left) - True - True
|
||||||
158243 - 0x034E3 (Sound Room Right) - True - Sound & Sound Dots
|
158243 - 0x034E3 (Sound Room Right) - True - Sound Dots
|
||||||
Door - 0x2897B (RGB House Stairs) - 0x034E4 & 0x034E3
|
Door - 0x2897B (RGB House Stairs) - 0x034E4 & 0x034E3
|
||||||
|
|
||||||
RGB Room (Town):
|
RGB Room (Town):
|
||||||
158244 - 0x334D8 (RGB Control) - True - Rotated Shapers & RGB & Squares & Colored Squares & Triangles
|
158244 - 0x334D8 (RGB Control) - True - Rotated Shapers & Squares & Colored Squares & Triangles
|
||||||
158245 - 0x03C0C (RGB Room Left) - 0x334D8 - RGB & Squares & Colored Squares & Black/White Squares & Eraser
|
158245 - 0x03C0C (RGB Room Left) - 0x334D8 - Squares & Colored Squares & Black/White Squares & Eraser
|
||||||
158246 - 0x03C08 (RGB Room Right) - 0x334D8 & 0x03C0C - RGB & Symmetry & Dots & Colored Dots & Triangles
|
158246 - 0x03C08 (RGB Room Right) - 0x334D8 & 0x03C0C - Symmetry & Dots & Colored Dots & Triangles
|
||||||
|
|
||||||
Town Tower (Town Tower) - Town - True - Town Tower Top - 0x27798 & 0x27799 & 0x2779A & 0x2779C:
|
Town Tower (Town Tower) - Town - True - Town Tower Top - 0x27798 & 0x27799 & 0x2779A & 0x2779C:
|
||||||
Door - 0x27798 (First Door) - 0x28ACC
|
Door - 0x27798 (First Door) - 0x28ACC
|
||||||
|
@ -445,6 +531,8 @@ Door - 0x2779A (Fourth Door) - 0x28B39
|
||||||
Town Tower Top (Town):
|
Town Tower Top (Town):
|
||||||
158708 - 0x032F5 (Laser Panel) - True - True
|
158708 - 0x032F5 (Laser Panel) - True - True
|
||||||
Laser - 0x032F9 (Laser) - 0x032F5
|
Laser - 0x032F9 (Laser) - 0x032F5
|
||||||
|
159422 - 0x33692 (Brown Bridge EP) - True - True
|
||||||
|
159551 - 0x03BCE (Black Line Tower EP) - True - True
|
||||||
|
|
||||||
Windmill Interior (Windmill) - Theater - 0x17F88:
|
Windmill Interior (Windmill) - Theater - 0x17F88:
|
||||||
158247 - 0x17D02 (Turn Control) - True - Dots
|
158247 - 0x17D02 (Turn Control) - True - Dots
|
||||||
|
@ -464,35 +552,51 @@ Theater (Theater) - Town - 0x0A16D | 0x3CCDF:
|
||||||
Door - 0x0A16D (Exit Left) - 0x0A168
|
Door - 0x0A16D (Exit Left) - 0x0A168
|
||||||
Door - 0x3CCDF (Exit Right) - 0x33AB2
|
Door - 0x3CCDF (Exit Right) - 0x33AB2
|
||||||
158608 - 0x17CF7 (Discard) - True - Arrows
|
158608 - 0x17CF7 (Discard) - True - Arrows
|
||||||
|
159554 - 0x339B6 (Eclipse EP) - 0x03549 & 0x0A16D & 0x3CCDF - True
|
||||||
|
159555 - 0x33A29 (Window EP) - 0x03553 - True
|
||||||
|
159556 - 0x33A2A (Door EP) - 0x03553 - True
|
||||||
|
159558 - 0x33B06 (Church EP) - 0x0354E - True
|
||||||
|
|
||||||
Jungle (Jungle) - Main Island - True - Outside Jungle River - 0x3873B - Boat - 0x17CDF:
|
Jungle (Jungle) - Main Island - True - Outside Jungle River - 0x3873B - Boat - 0x17CDF:
|
||||||
158251 - 0x17CDF (Shore Boat Spawn) - True - Boat
|
158251 - 0x17CDF (Shore Boat Spawn) - True - Boat
|
||||||
158609 - 0x17F9B (Discard) - True - Arrows
|
158609 - 0x17F9B (Discard) - True - Arrows
|
||||||
158252 - 0x002C4 (First Row 1) - True - Sound
|
158252 - 0x002C4 (First Row 1) - True - True
|
||||||
158253 - 0x00767 (First Row 2) - 0x002C4 - Sound
|
158253 - 0x00767 (First Row 2) - 0x002C4 - True
|
||||||
158254 - 0x002C6 (First Row 3) - 0x00767 - Sound
|
158254 - 0x002C6 (First Row 3) - 0x00767 - True
|
||||||
158255 - 0x0070E (Second Row 1) - 0x002C6 - Sound
|
158255 - 0x0070E (Second Row 1) - 0x002C6 - True
|
||||||
158256 - 0x0070F (Second Row 2) - 0x0070E - Sound
|
158256 - 0x0070F (Second Row 2) - 0x0070E - True
|
||||||
158257 - 0x0087D (Second Row 3) - 0x0070F - Sound
|
158257 - 0x0087D (Second Row 3) - 0x0070F - True
|
||||||
158258 - 0x002C7 (Second Row 4) - 0x0087D - Sound
|
158258 - 0x002C7 (Second Row 4) - 0x0087D - True
|
||||||
158259 - 0x17CAB (Popup Wall Control) - 0x002C7 - True
|
158259 - 0x17CAB (Popup Wall Control) - 0x002C7 - True
|
||||||
Door - 0x1475B (Popup Wall) - 0x17CAB
|
Door - 0x1475B (Popup Wall) - 0x17CAB
|
||||||
158260 - 0x0026D (Popup Wall 1) - 0x1475B - Sound & Sound Dots & Symmetry
|
158260 - 0x0026D (Popup Wall 1) - 0x1475B - Sound Dots & Symmetry
|
||||||
158261 - 0x0026E (Popup Wall 2) - 0x0026D - Sound & Sound Dots & Symmetry
|
158261 - 0x0026E (Popup Wall 2) - 0x0026D - Sound Dots & Symmetry
|
||||||
158262 - 0x0026F (Popup Wall 3) - 0x0026E - Sound & Sound Dots & Symmetry
|
158262 - 0x0026F (Popup Wall 3) - 0x0026E - Sound Dots & Symmetry
|
||||||
158263 - 0x00C3F (Popup Wall 4) - 0x0026F - Sound & Sound Dots & Symmetry
|
158263 - 0x00C3F (Popup Wall 4) - 0x0026F - Sound Dots & Symmetry
|
||||||
158264 - 0x00C41 (Popup Wall 5) - 0x00C3F - Sound & Sound Dots & Symmetry
|
158264 - 0x00C41 (Popup Wall 5) - 0x00C3F - Sound Dots & Symmetry
|
||||||
158265 - 0x014B2 (Popup Wall 6) - 0x00C41 - Sound & Sound Dots & Symmetry
|
158265 - 0x014B2 (Popup Wall 6) - 0x00C41 - Sound Dots & Symmetry
|
||||||
158709 - 0x03616 (Laser Panel) - 0x014B2 - True
|
158709 - 0x03616 (Laser Panel) - 0x014B2 - True
|
||||||
Laser - 0x00274 (Laser) - 0x03616
|
Laser - 0x00274 (Laser) - 0x03616
|
||||||
158266 - 0x337FA (Laser Shortcut Panel) - True - True
|
158266 - 0x337FA (Laser Shortcut Panel) - True - True
|
||||||
Door - 0x3873B (Laser Shortcut) - 0x337FA
|
Door - 0x3873B (Laser Shortcut) - 0x337FA
|
||||||
|
159100 - 0x03ABC (Long Arch Moss EP) - True - True
|
||||||
|
159101 - 0x03ABE (Straight Left Moss EP) - True - True
|
||||||
|
159102 - 0x03AC0 (Pop-up Wall Moss EP) - True - True
|
||||||
|
159103 - 0x03AC4 (Short Arch Moss EP) - True - True
|
||||||
|
159150 - 0x289F4 (Entrance EP) - True - True
|
||||||
|
159151 - 0x289F5 (Tree Halo EP) - True - True
|
||||||
|
159350 - 0x035CB (Bamboo CCW EP) - True - True
|
||||||
|
159351 - 0x035CF (Bamboo CW EP) - True - True
|
||||||
|
|
||||||
Outside Jungle River (River) - Main Island - True - Monastery Garden - 0x0CF2A:
|
Outside Jungle River (River) - Main Island - True - Monastery Garden - 0x0CF2A:
|
||||||
158267 - 0x17CAA (Monastery Shortcut Panel) - True - Environment
|
158267 - 0x17CAA (Monastery Shortcut Panel) - True - True
|
||||||
Door - 0x0CF2A (Monastery Shortcut) - 0x17CAA
|
Door - 0x0CF2A (Monastery Shortcut) - 0x17CAA
|
||||||
158663 - 0x15ADD (Vault) - True - Environment & Black/White Squares & Dots
|
158663 - 0x15ADD (Vault) - True - Black/White Squares & Dots
|
||||||
158664 - 0x03702 (Vault Box) - 0x15ADD - True
|
158664 - 0x03702 (Vault Box) - 0x15ADD - True
|
||||||
|
159110 - 0x03AC5 (Green Leaf Moss EP) - True - True
|
||||||
|
159120 - 0x03BE2 (Monastery Garden Left EP) - 0x03750 - True
|
||||||
|
159121 - 0x03BE3 (Monastery Garden Right EP) - True - True
|
||||||
|
159122 - 0x0A409 (Monastery Wall EP) - True - True
|
||||||
|
|
||||||
Outside Bunker (Bunker) - Main Island - True - Bunker - 0x0C2A4:
|
Outside Bunker (Bunker) - Main Island - True - Bunker - 0x0C2A4:
|
||||||
158268 - 0x17C2E (Entry Panel) - True - Squares & Black/White Squares & Colored Squares
|
158268 - 0x17C2E (Entry Panel) - True - Squares & Black/White Squares & Colored Squares
|
||||||
|
@ -512,28 +616,37 @@ Bunker (Bunker) - Bunker Glass Room - 0x17C79:
|
||||||
Door - 0x17C79 (Tinted Glass Door) - 0x0A099
|
Door - 0x17C79 (Tinted Glass Door) - 0x0A099
|
||||||
|
|
||||||
Bunker Glass Room (Bunker) - Bunker Ultraviolet Room - 0x0C2A3:
|
Bunker Glass Room (Bunker) - Bunker Ultraviolet Room - 0x0C2A3:
|
||||||
158279 - 0x0A010 (Glass Room 1) - True - Squares & Colored Squares & RGB & Environment
|
158279 - 0x0A010 (Glass Room 1) - True - Squares & Colored Squares
|
||||||
158280 - 0x0A01B (Glass Room 2) - 0x0A010 - Squares & Colored Squares & Black/White Squares & RGB & Environment
|
158280 - 0x0A01B (Glass Room 2) - 0x0A010 - Squares & Colored Squares & Black/White Squares
|
||||||
158281 - 0x0A01F (Glass Room 3) - 0x0A01B - Squares & Colored Squares & Black/White Squares & RGB & Environment
|
158281 - 0x0A01F (Glass Room 3) - 0x0A01B - Squares & Colored Squares & Black/White Squares
|
||||||
Door - 0x0C2A3 (UV Room Entry) - 0x0A01F
|
Door - 0x0C2A3 (UV Room Entry) - 0x0A01F
|
||||||
|
|
||||||
Bunker Ultraviolet Room (Bunker) - Bunker Elevator Section - 0x0A08D:
|
Bunker Ultraviolet Room (Bunker) - Bunker Elevator Section - 0x0A08D:
|
||||||
158282 - 0x34BC5 (Drop-Down Door Open) - True - True
|
158282 - 0x34BC5 (Drop-Down Door Open) - True - True
|
||||||
158283 - 0x34BC6 (Drop-Down Door Close) - 0x34BC5 - True
|
158283 - 0x34BC6 (Drop-Down Door Close) - 0x34BC5 - True
|
||||||
158284 - 0x17E63 (UV Room 1) - 0x34BC5 - Squares & Colored Squares & RGB & Environment
|
158284 - 0x17E63 (UV Room 1) - 0x34BC5 - Squares & Colored Squares
|
||||||
158285 - 0x17E67 (UV Room 2) - 0x17E63 & 0x34BC6 - Squares & Colored Squares & Black/White Squares & RGB
|
158285 - 0x17E67 (UV Room 2) - 0x17E63 & 0x34BC6 - Squares & Colored Squares & Black/White Squares
|
||||||
Door - 0x0A08D (Elevator Room Entry) - 0x17E67
|
Door - 0x0A08D (Elevator Room Entry) - 0x17E67
|
||||||
|
|
||||||
Bunker Elevator Section (Bunker) - Bunker Laser Platform - 0x0A079:
|
Bunker Elevator Section (Bunker) - Bunker Elevator - TrueOneWay:
|
||||||
158286 - 0x0A079 (Elevator Control) - True - Squares & Colored Squares & Black/White Squares & RGB
|
159311 - 0x035F5 (Tinted Door EP) - 0x17C79 - True
|
||||||
|
|
||||||
Bunker Laser Platform (Bunker):
|
Bunker Elevator (Bunker) - Bunker Laser Platform - 0x0A079 - Bunker Green Room - 0x0A079 - Bunker Laser Platform - 0x0A079 - Outside Bunker - 0x0A079:
|
||||||
|
158286 - 0x0A079 (Elevator Control) - True - Colored Squares & Black/White Squares
|
||||||
|
|
||||||
|
Bunker Green Room (Bunker) - Bunker Elevator - TrueOneWay:
|
||||||
|
159310 - 0x000D3 (Green Room Flowers EP) - True - True
|
||||||
|
|
||||||
|
Bunker Laser Platform (Bunker) - Bunker Elevator - TrueOneWay:
|
||||||
158710 - 0x09DE0 (Laser Panel) - True - True
|
158710 - 0x09DE0 (Laser Panel) - True - True
|
||||||
Laser - 0x0C2B2 (Laser) - 0x09DE0
|
Laser - 0x0C2B2 (Laser) - 0x09DE0
|
||||||
|
|
||||||
Outside Swamp (Swamp) - Swamp Entry Area - 0x00C1C - Main Island - True:
|
Outside Swamp (Swamp) - Swamp Entry Area - 0x00C1C - Main Island - True:
|
||||||
158287 - 0x0056E (Entry Panel) - True - Rotated Shapers & Black/White Squares & Triangles
|
158287 - 0x0056E (Entry Panel) - True - Rotated Shapers & Black/White Squares & Triangles
|
||||||
Door - 0x00C1C (Entry) - 0x0056E
|
Door - 0x00C1C (Entry) - 0x0056E
|
||||||
|
159321 - 0x03603 (Purple Sand Middle EP) - 0x17E2B - True
|
||||||
|
159322 - 0x03601 (Purple Sand Top EP) - 0x17E2B - True
|
||||||
|
159327 - 0x035DE (Purple Sand Bottom EP) - True - True
|
||||||
|
|
||||||
Swamp Entry Area (Swamp) - Swamp Sliding Bridge - TrueOneWay:
|
Swamp Entry Area (Swamp) - Swamp Sliding Bridge - TrueOneWay:
|
||||||
158288 - 0x00469 (Intro Front 1) - True - Black/White Squares & Shapers
|
158288 - 0x00469 (Intro Front 1) - True - Black/White Squares & Shapers
|
||||||
|
@ -553,6 +666,8 @@ Swamp Entry Area (Swamp) - Swamp Sliding Bridge - TrueOneWay:
|
||||||
|
|
||||||
Swamp Sliding Bridge (Swamp) - Swamp Entry Area - 0x00609 - Swamp Near Platform - 0x00609:
|
Swamp Sliding Bridge (Swamp) - Swamp Entry Area - 0x00609 - Swamp Near Platform - 0x00609:
|
||||||
158302 - 0x00609 (Sliding Bridge) - True - Shapers & Black/White Squares
|
158302 - 0x00609 (Sliding Bridge) - True - Shapers & Black/White Squares
|
||||||
|
159342 - 0x0105D (Sliding Bridge Left EP) - 0x00609 - True
|
||||||
|
159343 - 0x0A304 (Sliding Bridge Right EP) - 0x00609 - True
|
||||||
|
|
||||||
Swamp Near Platform (Swamp) - Swamp Cyan Underwater - 0x04B7F - Swamp Near Boat - 0x38AE6 - Swamp Between Bridges Near - 0x184B7 - Swamp Sliding Bridge - TrueOneWay:
|
Swamp Near Platform (Swamp) - Swamp Cyan Underwater - 0x04B7F - Swamp Near Boat - 0x38AE6 - Swamp Between Bridges Near - 0x184B7 - Swamp Sliding Bridge - TrueOneWay:
|
||||||
158313 - 0x00982 (Platform Row 1) - True - Rotated Shapers
|
158313 - 0x00982 (Platform Row 1) - True - Rotated Shapers
|
||||||
|
@ -572,6 +687,7 @@ Swamp Cyan Underwater (Swamp):
|
||||||
158310 - 0x013E6 (Cyan Underwater 4) - 0x00005 - Shapers & Negative Shapers & Triangles & Black/White Squares
|
158310 - 0x013E6 (Cyan Underwater 4) - 0x00005 - Shapers & Negative Shapers & Triangles & Black/White Squares
|
||||||
158311 - 0x00596 (Cyan Underwater 5) - 0x013E6 - Shapers & Negative Shapers & Triangles & Black/White Squares
|
158311 - 0x00596 (Cyan Underwater 5) - 0x013E6 - Shapers & Negative Shapers & Triangles & Black/White Squares
|
||||||
158312 - 0x18488 (Cyan Underwater Sliding Bridge Control) - True - Shapers
|
158312 - 0x18488 (Cyan Underwater Sliding Bridge Control) - True - Shapers
|
||||||
|
159340 - 0x03AA6 (Cyan Underwater Sliding Bridge EP) - 0x18488 - True
|
||||||
|
|
||||||
Swamp Between Bridges Near (Swamp) - Swamp Between Bridges Far - 0x18507:
|
Swamp Between Bridges Near (Swamp) - Swamp Between Bridges Far - 0x18507:
|
||||||
158303 - 0x00999 (Between Bridges Near Row 1) - 0x00990 - Rotated Shapers
|
158303 - 0x00999 (Between Bridges Near Row 1) - 0x00990 - Rotated Shapers
|
||||||
|
@ -596,6 +712,8 @@ Door - 0x305D5 (Red Underwater Exit) - 0x014D1
|
||||||
|
|
||||||
Swamp Rotating Bridge (Swamp) - Swamp Between Bridges Far - 0x181F5 - Swamp Near Boat - 0x181F5 - Swamp Purple Area - 0x181F5:
|
Swamp Rotating Bridge (Swamp) - Swamp Between Bridges Far - 0x181F5 - Swamp Near Boat - 0x181F5 - Swamp Purple Area - 0x181F5:
|
||||||
158327 - 0x181F5 (Rotating Bridge) - True - Rotated Shapers & Shapers & Stars & Colored Squares & Triangles & Stars + Same Colored Symbol
|
158327 - 0x181F5 (Rotating Bridge) - True - Rotated Shapers & Shapers & Stars & Colored Squares & Triangles & Stars + Same Colored Symbol
|
||||||
|
159331 - 0x016B2 (Rotating Bridge CCW EP) - 0x181F5 - True
|
||||||
|
159334 - 0x036CE (Rotating Bridge CW EP) - 0x181F5 - True
|
||||||
|
|
||||||
Swamp Near Boat (Swamp) - Swamp Rotating Bridge - TrueOneWay - Swamp Blue Underwater - 0x18482:
|
Swamp Near Boat (Swamp) - Swamp Rotating Bridge - TrueOneWay - Swamp Blue Underwater - 0x18482:
|
||||||
158328 - 0x09DB8 (Boat Spawn) - True - Boat
|
158328 - 0x09DB8 (Boat Spawn) - True - Boat
|
||||||
|
@ -605,12 +723,16 @@ Swamp Near Boat (Swamp) - Swamp Rotating Bridge - TrueOneWay - Swamp Blue Underw
|
||||||
158332 - 0x00E3A (Beyond Rotating Bridge 4) - 0x00C2E - Shapers & Dots & Full Dots
|
158332 - 0x00E3A (Beyond Rotating Bridge 4) - 0x00C2E - Shapers & Dots & Full Dots
|
||||||
158339 - 0x17E2B (Long Bridge Control) - True - Rotated Shapers & Shapers
|
158339 - 0x17E2B (Long Bridge Control) - True - Rotated Shapers & Shapers
|
||||||
Door - 0x18482 (Blue Water Pump) - 0x00E3A
|
Door - 0x18482 (Blue Water Pump) - 0x00E3A
|
||||||
|
159332 - 0x3365F (Boat EP) - 0x09DB8 - True
|
||||||
|
159333 - 0x03731 (Long Bridge Side EP) - 0x17E2B - True
|
||||||
|
|
||||||
Swamp Purple Area (Swamp) - Swamp Rotating Bridge - TrueOneWay - Swamp Purple Underwater - 0x0A1D6:
|
Swamp Purple Area (Swamp) - Swamp Rotating Bridge - TrueOneWay - Swamp Purple Underwater - 0x0A1D6:
|
||||||
Door - 0x0A1D6 (Purple Water Pump) - 0x00E3A
|
Door - 0x0A1D6 (Purple Water Pump) - 0x00E3A
|
||||||
|
|
||||||
Swamp Purple Underwater (Swamp):
|
Swamp Purple Underwater (Swamp):
|
||||||
158333 - 0x009A6 (Purple Underwater) - True - Shapers & Triangles & Black/White Squares & Rotated Shapers & Dots & Full Dots
|
158333 - 0x009A6 (Purple Underwater) - True - Shapers & Triangles & Black/White Squares & Rotated Shapers & Dots & Full Dots
|
||||||
|
159330 - 0x03A9E (Purple Underwater Right EP) - True - True
|
||||||
|
159336 - 0x03A93 (Purple Underwater Left EP) - True - True
|
||||||
|
|
||||||
Swamp Blue Underwater (Swamp):
|
Swamp Blue Underwater (Swamp):
|
||||||
158334 - 0x009AB (Blue Underwater 1) - True - Shapers & Negative Shapers
|
158334 - 0x009AB (Blue Underwater 1) - True - Shapers & Negative Shapers
|
||||||
|
@ -620,8 +742,8 @@ Swamp Blue Underwater (Swamp):
|
||||||
158338 - 0x00006 (Blue Underwater 5) - 0x009AF - Shapers & Negative Shapers
|
158338 - 0x00006 (Blue Underwater 5) - 0x009AF - Shapers & Negative Shapers
|
||||||
|
|
||||||
Swamp Maze (Swamp) - Swamp Laser Area - 0x17C0A & 0x17E07:
|
Swamp Maze (Swamp) - Swamp Laser Area - 0x17C0A & 0x17E07:
|
||||||
158340 - 0x17C0A (Maze Control) - True - Shapers & Negative Shapers & Rotated Shapers & Environment
|
158340 - 0x17C0A (Maze Control) - True - Shapers & Negative Shapers & Rotated Shapers
|
||||||
158112 - 0x17E07 (Maze Control Other Side) - True - Shapers & Negative Shapers & Rotated Shapers & Environment
|
158112 - 0x17E07 (Maze Control Other Side) - True - Shapers & Negative Shapers & Rotated Shapers
|
||||||
|
|
||||||
Swamp Laser Area (Swamp) - Outside Swamp - 0x2D880:
|
Swamp Laser Area (Swamp) - Outside Swamp - 0x2D880:
|
||||||
158711 - 0x03615 (Laser Panel) - True - True
|
158711 - 0x03615 (Laser Panel) - True - True
|
||||||
|
@ -634,6 +756,7 @@ Treehouse Entry Area (Treehouse) - Treehouse Between Doors - 0x0C309:
|
||||||
158343 - 0x17C95 (Boat Spawn) - True - Boat
|
158343 - 0x17C95 (Boat Spawn) - True - Boat
|
||||||
158344 - 0x0288C (First Door Panel) - True - Stars & Stars + Same Colored Symbol & Triangles
|
158344 - 0x0288C (First Door Panel) - True - Stars & Stars + Same Colored Symbol & Triangles
|
||||||
Door - 0x0C309 (First Door) - 0x0288C
|
Door - 0x0C309 (First Door) - 0x0288C
|
||||||
|
159210 - 0x33721 (Buoy EP) - 0x17C95 - True
|
||||||
|
|
||||||
Treehouse Between Doors (Treehouse) - Treehouse Yellow Bridge - 0x0C310:
|
Treehouse Between Doors (Treehouse) - Treehouse Yellow Bridge - 0x0C310:
|
||||||
158345 - 0x02886 (Second Door Panel) - True - Stars & Stars + Same Colored Symbol & Triangles
|
158345 - 0x02886 (Second Door Panel) - True - Stars & Stars + Same Colored Symbol & Triangles
|
||||||
|
@ -691,7 +814,7 @@ Treehouse Second Purple Bridge (Treehouse) - Treehouse Left Orange Bridge - 0x17
|
||||||
158367 - 0x17D91 (Second Purple Bridge 6) - 0x17BDF - Stars & Colored Squares & Triangles & Stars + Same Colored Symbol
|
158367 - 0x17D91 (Second Purple Bridge 6) - 0x17BDF - Stars & Colored Squares & Triangles & Stars + Same Colored Symbol
|
||||||
158368 - 0x17DC6 (Second Purple Bridge 7) - 0x17D91 - Stars & Colored Squares & Triangles & Stars + Same Colored Symbol
|
158368 - 0x17DC6 (Second Purple Bridge 7) - 0x17D91 - Stars & Colored Squares & Triangles & Stars + Same Colored Symbol
|
||||||
|
|
||||||
Treehouse Left Orange Bridge (Treehouse) - Treehouse Laser Room Front Platform - 0x17DDE - Treehouse Laser Room Back Platform - 0x17DDB:
|
Treehouse Left Orange Bridge (Treehouse) - Treehouse Laser Room Front Platform - 0x17DDE - Treehouse Laser Room Back Platform - 0x17DDB - Treehouse Burned House - 0x17DDB:
|
||||||
158376 - 0x17DB3 (Left Orange Bridge 1) - True - Stars & Black/White Squares & Stars + Same Colored Symbol & Shapers & Rotated Shapers
|
158376 - 0x17DB3 (Left Orange Bridge 1) - True - Stars & Black/White Squares & Stars + Same Colored Symbol & Shapers & Rotated Shapers
|
||||||
158377 - 0x17DB5 (Left Orange Bridge 2) - 0x17DB3 - Stars & Black/White Squares & Stars + Same Colored Symbol & Shapers & Rotated Shapers
|
158377 - 0x17DB5 (Left Orange Bridge 2) - 0x17DB3 - Stars & Black/White Squares & Stars + Same Colored Symbol & Shapers & Rotated Shapers
|
||||||
158378 - 0x17DB6 (Left Orange Bridge 3) - 0x17DB5 - Stars & Black/White Squares & Stars + Same Colored Symbol & Shapers & Rotated Shapers
|
158378 - 0x17DB6 (Left Orange Bridge 3) - 0x17DB5 - Stars & Black/White Squares & Stars + Same Colored Symbol & Shapers & Rotated Shapers
|
||||||
|
@ -708,7 +831,7 @@ Treehouse Left Orange Bridge (Treehouse) - Treehouse Laser Room Front Platform -
|
||||||
158389 - 0x17DB0 (Left Orange Bridge 14) - 0x17DAE - Stars & Black/White Squares & Stars + Same Colored Symbol
|
158389 - 0x17DB0 (Left Orange Bridge 14) - 0x17DAE - Stars & Black/White Squares & Stars + Same Colored Symbol
|
||||||
158390 - 0x17DDB (Left Orange Bridge 15) - 0x17DB0 - Stars & Black/White Squares & Stars + Same Colored Symbol
|
158390 - 0x17DDB (Left Orange Bridge 15) - 0x17DB0 - Stars & Black/White Squares & Stars + Same Colored Symbol
|
||||||
|
|
||||||
Treehouse Green Bridge (Treehouse):
|
Treehouse Green Bridge (Treehouse) - Treehouse Green Bridge Front House - 0x17E61 - Treehouse Green Bridge Left House - 0x17E61:
|
||||||
158369 - 0x17E3C (Green Bridge 1) - True - Stars & Shapers & Negative Shapers & Stars + Same Colored Symbol
|
158369 - 0x17E3C (Green Bridge 1) - True - Stars & Shapers & Negative Shapers & Stars + Same Colored Symbol
|
||||||
158370 - 0x17E4D (Green Bridge 2) - 0x17E3C - Stars & Shapers & Negative Shapers & Stars + Same Colored Symbol
|
158370 - 0x17E4D (Green Bridge 2) - 0x17E3C - Stars & Shapers & Negative Shapers & Stars + Same Colored Symbol
|
||||||
158371 - 0x17E4F (Green Bridge 3) - 0x17E4D - Stars & Shapers & Negative Shapers & Stars + Same Colored Symbol
|
158371 - 0x17E4F (Green Bridge 3) - 0x17E4D - Stars & Shapers & Negative Shapers & Stars + Same Colored Symbol
|
||||||
|
@ -716,7 +839,12 @@ Treehouse Green Bridge (Treehouse):
|
||||||
158373 - 0x17E5B (Green Bridge 5) - 0x17E52 - Stars & Shapers & Negative Shapers & Stars + Same Colored Symbol
|
158373 - 0x17E5B (Green Bridge 5) - 0x17E52 - Stars & Shapers & Negative Shapers & Stars + Same Colored Symbol
|
||||||
158374 - 0x17E5F (Green Bridge 6) - 0x17E5B - Stars & Shapers & Negative Shapers & Stars + Same Colored Symbol & Triangles
|
158374 - 0x17E5F (Green Bridge 6) - 0x17E5B - Stars & Shapers & Negative Shapers & Stars + Same Colored Symbol & Triangles
|
||||||
158375 - 0x17E61 (Green Bridge 7) - 0x17E5F - Stars & Shapers & Negative Shapers & Stars + Same Colored Symbol & Triangles
|
158375 - 0x17E61 (Green Bridge 7) - 0x17E5F - Stars & Shapers & Negative Shapers & Stars + Same Colored Symbol & Triangles
|
||||||
158610 - 0x17FA9 (Green Bridge Discard) - 0x17E61 - Arrows
|
|
||||||
|
Treehouse Green Bridge Front House (Treehouse):
|
||||||
|
158610 - 0x17FA9 (Green Bridge Discard) - True - Arrows
|
||||||
|
|
||||||
|
Treehouse Green Bridge Left House (Treehouse):
|
||||||
|
159211 - 0x220A7 (Right Orange Bridge EP) - 0x17DA2 - True
|
||||||
|
|
||||||
Treehouse Laser Room Front Platform (Treehouse) - Treehouse Laser Room - 0x0C323:
|
Treehouse Laser Room Front Platform (Treehouse) - Treehouse Laser Room - 0x0C323:
|
||||||
Door - 0x0C323 (Laser House Entry) - 0x17DA2 & 0x2700B & 0x17DEC
|
Door - 0x0C323 (Laser House Entry) - 0x17DA2 & 0x2700B & 0x17DEC
|
||||||
|
@ -724,6 +852,9 @@ Door - 0x0C323 (Laser House Entry) - 0x17DA2 & 0x2700B & 0x17DEC
|
||||||
Treehouse Laser Room Back Platform (Treehouse):
|
Treehouse Laser Room Back Platform (Treehouse):
|
||||||
158611 - 0x17FA0 (Laser Discard) - True - Arrows
|
158611 - 0x17FA0 (Laser Discard) - True - Arrows
|
||||||
|
|
||||||
|
Treehouse Burned House (Treehouse):
|
||||||
|
159202 - 0x00769 (Burned House Beach EP) - True - True
|
||||||
|
|
||||||
Treehouse Laser Room (Treehouse):
|
Treehouse Laser Room (Treehouse):
|
||||||
158712 - 0x03613 (Laser Panel) - True - True
|
158712 - 0x03613 (Laser Panel) - True - True
|
||||||
158403 - 0x17CBC (Laser House Door Timer Inside) - True - True
|
158403 - 0x17CBC (Laser House Door Timer Inside) - True - True
|
||||||
|
@ -733,12 +864,19 @@ Mountainside (Mountainside) - Main Island - True - Mountaintop - True:
|
||||||
158612 - 0x17C42 (Discard) - True - Arrows
|
158612 - 0x17C42 (Discard) - True - Arrows
|
||||||
158665 - 0x002A6 (Vault) - True - Symmetry & Colored Squares & Triangles & Stars & Stars + Same Colored Symbol
|
158665 - 0x002A6 (Vault) - True - Symmetry & Colored Squares & Triangles & Stars & Stars + Same Colored Symbol
|
||||||
158666 - 0x03542 (Vault Box) - 0x002A6 - True
|
158666 - 0x03542 (Vault Box) - 0x002A6 - True
|
||||||
|
159301 - 0x335AE (Cloud Cycle EP) - True - True
|
||||||
|
159325 - 0x33505 (Bush EP) - True - True
|
||||||
|
159335 - 0x03C07 (Apparent River EP) - True - True
|
||||||
|
|
||||||
Mountaintop (Mountaintop) - Mountain Top Layer - 0x17C34:
|
Mountaintop (Mountaintop) - Mountain Top Layer - 0x17C34:
|
||||||
158405 - 0x0042D (River Shape) - True - True
|
158405 - 0x0042D (River Shape) - True - True
|
||||||
158406 - 0x09F7F (Box Short) - 7 Lasers - True
|
158406 - 0x09F7F (Box Short) - 7 Lasers - True
|
||||||
158407 - 0x17C34 (Trap Door Triple Exit) - 0x09F7F - Stars & Black/White Squares & Stars + Same Colored Symbol & Triangles
|
158407 - 0x17C34 (Trap Door Triple Exit) - 0x09F7F - Stars & Black/White Squares & Stars + Same Colored Symbol & Triangles
|
||||||
158800 - 0xFFF00 (Box Long) - 7 Lasers & 11 Lasers & 0x17C34 - True
|
158800 - 0xFFF00 (Box Long) - 7 Lasers & 11 Lasers & 0x17C34 - True
|
||||||
|
159300 - 0x001A3 (River Shape EP) - True - True
|
||||||
|
159320 - 0x3370E (Arch Black EP) - True - True
|
||||||
|
159324 - 0x336C8 (Arch White Right EP) - True - True
|
||||||
|
159326 - 0x3369A (Arch White Left EP) - True - True
|
||||||
|
|
||||||
Mountain Top Layer (Mountain Floor 1) - Mountain Top Layer Bridge - 0x09E39:
|
Mountain Top Layer (Mountain Floor 1) - Mountain Top Layer Bridge - 0x09E39:
|
||||||
158408 - 0x09E39 (Light Bridge Controller) - True - Eraser & Triangles
|
158408 - 0x09E39 (Light Bridge Controller) - True - Eraser & Triangles
|
||||||
|
@ -763,7 +901,7 @@ Mountain Top Layer Bridge (Mountain Floor 1) - Mountain Floor 2 - 0x09E54:
|
||||||
158425 - 0x09EAF (Trash Pillar 2) - 0x09EAD - Rotated Shapers & Triangles
|
158425 - 0x09EAF (Trash Pillar 2) - 0x09EAD - Rotated Shapers & Triangles
|
||||||
Door - 0x09E54 (Exit) - 0x09EAF & 0x09F6E & 0x09E6B & 0x09E7B
|
Door - 0x09E54 (Exit) - 0x09EAF & 0x09F6E & 0x09E6B & 0x09E7B
|
||||||
|
|
||||||
Mountain Floor 2 (Mountain Floor 2) - Mountain Floor 2 Light Bridge Room Near - 0x09FFB - Mountain Floor 2 Blue Bridge - 0x09E86:
|
Mountain Floor 2 (Mountain Floor 2) - Mountain Floor 2 Light Bridge Room Near - 0x09FFB - Mountain Floor 2 Blue Bridge - 0x09E86 - Mountain Pink Bridge EP - TrueOneWay:
|
||||||
158426 - 0x09FD3 (Near Row 1) - True - Stars & Colored Squares & Stars + Same Colored Symbol
|
158426 - 0x09FD3 (Near Row 1) - True - Stars & Colored Squares & Stars + Same Colored Symbol
|
||||||
158427 - 0x09FD4 (Near Row 2) - 0x09FD3 - Stars & Triangles & Stars + Same Colored Symbol
|
158427 - 0x09FD4 (Near Row 2) - 0x09FD3 - Stars & Triangles & Stars + Same Colored Symbol
|
||||||
158428 - 0x09FD6 (Near Row 3) - 0x09FD4 - Stars & Shapers & Negative Shapers & Stars + Same Colored Symbol
|
158428 - 0x09FD6 (Near Row 3) - 0x09FD4 - Stars & Shapers & Negative Shapers & Stars + Same Colored Symbol
|
||||||
|
@ -779,7 +917,7 @@ Door - 0x09EDD (Elevator Room Entry) - 0x09ED8 & 0x09E86
|
||||||
Mountain Floor 2 Light Bridge Room Near (Mountain Floor 2):
|
Mountain Floor 2 Light Bridge Room Near (Mountain Floor 2):
|
||||||
158431 - 0x09E86 (Light Bridge Controller Near) - True - Shapers & Dots
|
158431 - 0x09E86 (Light Bridge Controller Near) - True - Shapers & Dots
|
||||||
|
|
||||||
Mountain Floor 2 Beyond Bridge (Mountain Floor 2) - Mountain Floor 2 Light Bridge Room Far - 0x09E07:
|
Mountain Floor 2 Beyond Bridge (Mountain Floor 2) - Mountain Floor 2 Light Bridge Room Far - 0x09E07 - Mountain Pink Bridge EP - TrueOneWay:
|
||||||
158432 - 0x09FCC (Far Row 1) - True - Triangles
|
158432 - 0x09FCC (Far Row 1) - True - Triangles
|
||||||
158433 - 0x09FCE (Far Row 2) - 0x09FCC - Black/White Squares & Stars & Stars + Same Colored Symbol
|
158433 - 0x09FCE (Far Row 2) - 0x09FCC - Black/White Squares & Stars & Stars + Same Colored Symbol
|
||||||
158434 - 0x09FCF (Far Row 3) - 0x09FCE - Stars & Triangles & Stars + Same Colored Symbol
|
158434 - 0x09FCF (Far Row 3) - 0x09FCE - Stars & Triangles & Stars + Same Colored Symbol
|
||||||
|
@ -805,11 +943,16 @@ Mountain Third Layer (Mountain Bottom Floor) - Mountain Floor 2 Elevator - TrueO
|
||||||
158444 - 0x09FDA (Giant Puzzle) - 0x09FC1 & 0x09F8E & 0x09F01 & 0x09EFF - Shapers & Symmetry
|
158444 - 0x09FDA (Giant Puzzle) - 0x09FC1 & 0x09F8E & 0x09F01 & 0x09EFF - Shapers & Symmetry
|
||||||
Door - 0x09F89 (Exit) - 0x09FDA
|
Door - 0x09F89 (Exit) - 0x09FDA
|
||||||
|
|
||||||
Mountain Bottom Floor (Mountain Bottom Floor) - Mountain Bottom Floor Rock - 0x17FA2 - Final Room - 0x0C141:
|
Mountain Bottom Floor (Mountain Bottom Floor) - Mountain Bottom Floor Rock - 0x17FA2 - Final Room - 0x0C141 - Mountain Pink Bridge EP - TrueOneWay:
|
||||||
158614 - 0x17FA2 (Discard) - 0xFFF00 - Arrows
|
158614 - 0x17FA2 (Discard) - 0xFFF00 - Arrows
|
||||||
158445 - 0x01983 (Final Room Entry Left) - True - Shapers & Stars
|
158445 - 0x01983 (Final Room Entry Left) - True - Shapers & Stars
|
||||||
158446 - 0x01987 (Final Room Entry Right) - True - Squares & Colored Squares & Dots
|
158446 - 0x01987 (Final Room Entry Right) - True - Squares & Colored Squares & Dots
|
||||||
Door - 0x0C141 (Final Room Entry) - 0x01983 & 0x01987
|
Door - 0x0C141 (Final Room Entry) - 0x01983 & 0x01987
|
||||||
|
159313 - 0x09D5D (Yellow Bridge EP) - 0x09E86 & 0x09ED8 - True
|
||||||
|
159314 - 0x09D5E (Blue Bridge EP) - 0x09E86 & 0x09ED8 - True
|
||||||
|
|
||||||
|
Mountain Pink Bridge EP (Mountain Floor 2):
|
||||||
|
159312 - 0x09D63 (Pink Bridge EP) - 0x09E39 - True
|
||||||
|
|
||||||
Mountain Bottom Floor Rock (Mountain Bottom Floor) - Mountain Bottom Floor - 0x17F33 - Mountain Path to Caves - 0x17F33:
|
Mountain Bottom Floor Rock (Mountain Bottom Floor) - Mountain Bottom Floor - 0x17F33 - Mountain Path to Caves - 0x17F33:
|
||||||
Door - 0x17F33 (Rock Open) - True
|
Door - 0x17F33 (Rock Open) - True
|
||||||
|
@ -872,6 +1015,7 @@ Door - 0x019A5 (Pillar Door) - 0x09DD5
|
||||||
Door - 0x2D73F (Mountain Shortcut Door) - 0x021D7
|
Door - 0x2D73F (Mountain Shortcut Door) - 0x021D7
|
||||||
158450 - 0x17CF2 (Swamp Shortcut Panel) - True - Arrows
|
158450 - 0x17CF2 (Swamp Shortcut Panel) - True - Arrows
|
||||||
Door - 0x2D859 (Swamp Shortcut Door) - 0x17CF2
|
Door - 0x2D859 (Swamp Shortcut Door) - 0x17CF2
|
||||||
|
159341 - 0x3397C (Skylight EP) - True - True
|
||||||
|
|
||||||
Path to Challenge (Caves) - Challenge - 0x0A19A:
|
Path to Challenge (Caves) - Challenge - 0x0A19A:
|
||||||
158477 - 0x0A16E (Challenge Entry Panel) - True - Stars & Arrows & Stars + Same Colored Symbol
|
158477 - 0x0A16E (Challenge Entry Panel) - True - Stars & Arrows & Stars + Same Colored Symbol
|
||||||
|
@ -895,11 +1039,12 @@ Challenge (Challenge) - Tunnels - 0x0348A:
|
||||||
158513 - 0x00C22 (Choice Squares 2 Left) - 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
|
158514 - 0x034F4 (Maze Hidden 1) - 0x00C68 | 0x00C59 | 0x00C22 - Triangles
|
||||||
158515 - 0x034EC (Maze Hidden 2) - 0x00C68 | 0x00C59 | 0x00C22 - Triangles
|
158515 - 0x034EC (Maze Hidden 2) - 0x00C68 | 0x00C59 | 0x00C22 - Triangles
|
||||||
158516 - 0x1C31A (Dots Pillar) - 0x034F4 & 0x034EC - Dots & Symmetry & Pillar
|
158516 - 0x1C31A (Dots Pillar) - 0x034F4 & 0x034EC - Dots & Symmetry
|
||||||
158517 - 0x1C319 (Squares Pillar) - 0x034F4 & 0x034EC - Squares & Black/White Squares & Symmetry & Pillar
|
158517 - 0x1C319 (Squares Pillar) - 0x034F4 & 0x034EC - Squares & Black/White Squares & Symmetry
|
||||||
158667 - 0x0356B (Vault Box) - 0x1C31A & 0x1C319 - True
|
158667 - 0x0356B (Vault Box) - 0x1C31A & 0x1C319 - True
|
||||||
158518 - 0x039B4 (Tunnels Entry Panel) - True - Arrows
|
158518 - 0x039B4 (Tunnels Entry Panel) - True - Arrows
|
||||||
Door - 0x0348A (Tunnels Entry) - 0x039B4
|
Door - 0x0348A (Tunnels Entry) - 0x039B4
|
||||||
|
159530 - 0x28B30 (Water EP) - True - True
|
||||||
|
|
||||||
Tunnels (Tunnels) - Windmill Interior - 0x27739 - Desert Lowest Level Inbetween Shortcuts - 0x27263 - Town - 0x09E87:
|
Tunnels (Tunnels) - Windmill Interior - 0x27739 - Desert Lowest Level Inbetween Shortcuts - 0x27263 - Town - 0x09E87:
|
||||||
158668 - 0x2FAF6 (Vault Box) - True - True
|
158668 - 0x2FAF6 (Vault Box) - True - True
|
||||||
|
@ -909,12 +1054,13 @@ Door - 0x27739 (Theater Shortcut) - 0x27732
|
||||||
Door - 0x27263 (Desert Shortcut) - 0x2773D
|
Door - 0x27263 (Desert Shortcut) - 0x2773D
|
||||||
158521 - 0x09E85 (Town Shortcut Panel) - True - Arrows
|
158521 - 0x09E85 (Town Shortcut Panel) - True - Arrows
|
||||||
Door - 0x09E87 (Town Shortcut) - 0x09E85
|
Door - 0x09E87 (Town Shortcut) - 0x09E85
|
||||||
|
159557 - 0x33A20 (Theater Flowers EP) - 0x03553 & Theater to Tunnels - True
|
||||||
|
|
||||||
Final Room (Mountain Final Room) - Elevator - 0x339BB & 0x33961:
|
Final Room (Mountain Final Room) - Elevator - 0x339BB & 0x33961:
|
||||||
158522 - 0x0383A (Right Pillar 1) - True - Stars & Eraser & Triangles & Stars + Same Colored Symbol
|
158522 - 0x0383A (Right Pillar 1) - True - Stars & Eraser & Triangles & Stars + Same Colored Symbol
|
||||||
158523 - 0x09E56 (Right Pillar 2) - 0x0383A - Dots & Full Dots & Triangles & Symmetry
|
158523 - 0x09E56 (Right Pillar 2) - 0x0383A - Dots & Full Dots & Triangles & Symmetry
|
||||||
158524 - 0x09E5A (Right Pillar 3) - 0x09E56 - Dots & Shapers & Stars & Negative Shapers & Stars + Same Colored Symbol & Symmetry
|
158524 - 0x09E5A (Right Pillar 3) - 0x09E56 - Dots & Shapers & Stars & Negative Shapers & Stars + Same Colored Symbol & Symmetry
|
||||||
158525 - 0x33961 (Right Pillar 4) - 0x09E5A - Eraser & Symmetry & Stars & Stars + Same Colored Symbols & Negative Shapers & Shapers
|
158525 - 0x33961 (Right Pillar 4) - 0x09E5A - Eraser & Symmetry & Stars & Stars + Same Colored Symbol & Negative Shapers & Shapers
|
||||||
158526 - 0x0383D (Left Pillar 1) - True - Stars & Black/White Squares & Stars + Same Colored Symbol
|
158526 - 0x0383D (Left Pillar 1) - True - Stars & Black/White Squares & Stars + Same Colored Symbol
|
||||||
158527 - 0x0383F (Left Pillar 2) - 0x0383D - Triangles & Symmetry
|
158527 - 0x0383F (Left Pillar 2) - 0x0383D - Triangles & Symmetry
|
||||||
158528 - 0x03859 (Left Pillar 3) - 0x0383F - Symmetry & Shapers & Black/White Squares
|
158528 - 0x03859 (Left Pillar 3) - 0x0383F - Symmetry & Shapers & Black/White Squares
|
||||||
|
@ -930,3 +1076,48 @@ Elevator (Mountain Final Room):
|
||||||
158536 - 0x3D9A9 (Elevator Start) - 0x3D9AA & 7 Lasers | 0x3D9A8 & 7 Lasers - True
|
158536 - 0x3D9A9 (Elevator Start) - 0x3D9AA & 7 Lasers | 0x3D9A8 & 7 Lasers - 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:
|
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:
|
||||||
|
159042 - 0x22106 (Desert EP) - True - True
|
||||||
|
159223 - 0x03B25 (Shipwreck CCW Underside EP) - True - True
|
||||||
|
159231 - 0x28B29 (Shipwreck Green EP) - True - True
|
||||||
|
159232 - 0x28B2A (Shipwreck CW Underside EP) - True - True
|
||||||
|
159323 - 0x03D0D (Bunker Yellow Line EP) - True - True
|
||||||
|
159515 - 0x28A37 (Town Long Sewer EP) - True - True
|
||||||
|
159520 - 0x33857 (Tutorial EP) - True - True
|
||||||
|
159521 - 0x33879 (Tutorial Reflection EP) - True - True
|
||||||
|
159522 - 0x03C19 (Tutorial Moss EP) - True - True
|
||||||
|
159531 - 0x035C9 (Cargo Box EP) - 0x0A0C9 - True
|
||||||
|
|
||||||
|
Obelisks (EPs) - Entry - True:
|
||||||
|
159700 - 0xFFE00 (Desert Obelisk Side 1) - 0x0332B & 0x03367 & 0x28B8A - True
|
||||||
|
159701 - 0xFFE01 (Desert Obelisk Side 2) - 0x037B6 & 0x037B2 & 0x000F7 - True
|
||||||
|
159702 - 0xFFE02 (Desert Obelisk Side 3) - 0x3351D - True
|
||||||
|
159703 - 0xFFE03 (Desert Obelisk Side 4) - 0x0053C & 0x00771 & 0x335C8 & 0x335C9 & 0x337F8 & 0x037BB & 0x220E4 & 0x220E5 - True
|
||||||
|
159704 - 0xFFE04 (Desert Obelisk Side 5) - 0x334B9 & 0x334BC & 0x22106 & 0x0A14C & 0x0A14D - True
|
||||||
|
159710 - 0xFFE10 (Monastery Obelisk Side 1) - 0x03ABC & 0x03ABE & 0x03AC0 & 0x03AC4 - True
|
||||||
|
159711 - 0xFFE11 (Monastery Obelisk Side 2) - 0x03AC5 - True
|
||||||
|
159712 - 0xFFE12 (Monastery Obelisk Side 3) - 0x03BE2 & 0x03BE3 & 0x0A409 - True
|
||||||
|
159713 - 0xFFE13 (Monastery Obelisk Side 4) - 0x006E5 & 0x006E6 & 0x006E7 & 0x034A7 & 0x034AD & 0x034AF & 0x03DAB & 0x03DAC & 0x03DAD - True
|
||||||
|
159714 - 0xFFE14 (Monastery Obelisk Side 5) - 0x03E01 - True
|
||||||
|
159715 - 0xFFE15 (Monastery Obelisk Side 6) - 0x289F4 & 0x289F5 - True
|
||||||
|
159720 - 0xFFE20 (Treehouse Obelisk Side 1) - 0x0053D & 0x0053E & 0x00769 - True
|
||||||
|
159721 - 0xFFE21 (Treehouse Obelisk Side 2) - 0x33721 & 0x220A7 & 0x220BD - True
|
||||||
|
159722 - 0xFFE22 (Treehouse Obelisk Side 3) - 0x03B22 & 0x03B23 & 0x03B24 & 0x03B25 & 0x03A79 & 0x28ABD & 0x28ABE - True
|
||||||
|
159723 - 0xFFE23 (Treehouse Obelisk Side 4) - 0x3388F & 0x28B29 & 0x28B2A - True
|
||||||
|
159724 - 0xFFE24 (Treehouse Obelisk Side 5) - 0x018B6 & 0x033BE & 0x033BF & 0x033DD & 0x033E5 - True
|
||||||
|
159725 - 0xFFE25 (Treehouse Obelisk Side 6) - 0x28AE9 & 0x3348F - True
|
||||||
|
159730 - 0xFFE30 (River Obelisk Side 1) - 0x001A3 & 0x335AE - True
|
||||||
|
159731 - 0xFFE31 (River Obelisk Side 2) - 0x000D3 & 0x035F5 & 0x09D5D & 0x09D5E & 0x09D63 - True
|
||||||
|
159732 - 0xFFE32 (River Obelisk Side 3) - 0x3370E & 0x035DE & 0x03601 & 0x03603 & 0x03D0D & 0x3369A & 0x336C8 & 0x33505 - True
|
||||||
|
159733 - 0xFFE33 (River Obelisk Side 4) - 0x03A9E & 0x016B2 & 0x3365F & 0x03731 & 0x036CE & 0x03C07 & 0x03A93 - True
|
||||||
|
159734 - 0xFFE34 (River Obelisk Side 5) - 0x03AA6 & 0x3397C & 0x0105D & 0x0A304 - True
|
||||||
|
159735 - 0xFFE35 (River Obelisk Side 6) - 0x035CB & 0x035CF - True
|
||||||
|
159740 - 0xFFE40 (Quarry Obelisk Side 1) - 0x28A7B & 0x005F6 & 0x00859 & 0x17CB9 & 0x28A4A - True
|
||||||
|
159741 - 0xFFE41 (Quarry Obelisk Side 2) - 0x334B6 & 0x00614 & 0x0069D & 0x28A4C - True
|
||||||
|
159742 - 0xFFE42 (Quarry Obelisk Side 3) - 0x289CF & 0x289D1 & 0x33692 - True
|
||||||
|
159743 - 0xFFE43 (Quarry Obelisk Side 4) - 0x03E77 & 0x03E7C - True
|
||||||
|
159750 - 0xFFE50 (Town Obelisk Side 1) - 0x035C7 - True
|
||||||
|
159751 - 0xFFE51 (Town Obelisk Side 2) - 0x01848 & 0x03D06 & 0x33530 & 0x33600 & 0x28A2F & 0x28A37 & 0x334A3 & 0x3352F - True
|
||||||
|
159752 - 0xFFE52 (Town Obelisk Side 3) - 0x33857 & 0x33879 & 0x03C19 - True
|
||||||
|
159753 - 0xFFE53 (Town Obelisk Side 4) - 0x28B30 & 0x035C9 - True
|
||||||
|
159754 - 0xFFE54 (Town Obelisk Side 5) - 0x03335 & 0x03412 & 0x038A6 & 0x038AA & 0x03E3F & 0x03E40 & 0x28B8E - True
|
||||||
|
159755 - 0xFFE55 (Town Obelisk Side 6) - 0x28B91 & 0x03BCE & 0x03BCF & 0x03BD1 & 0x339B6 & 0x33A20 & 0x33A29 & 0x33A2A & 0x33B06 - True
|
File diff suppressed because it is too large
Load Diff
|
@ -38,7 +38,7 @@ class WitnessWorld(World):
|
||||||
"""
|
"""
|
||||||
game = "The Witness"
|
game = "The Witness"
|
||||||
topology_present = False
|
topology_present = False
|
||||||
data_version = 8
|
data_version = 11
|
||||||
|
|
||||||
static_logic = StaticWitnessLogic()
|
static_logic = StaticWitnessLogic()
|
||||||
static_locat = StaticWitnessLocations()
|
static_locat = StaticWitnessLocations()
|
||||||
|
@ -52,22 +52,27 @@ class WitnessWorld(World):
|
||||||
location_name_to_id = StaticWitnessLocations.ALL_LOCATIONS_TO_ID
|
location_name_to_id = StaticWitnessLocations.ALL_LOCATIONS_TO_ID
|
||||||
item_name_groups = StaticWitnessItems.ITEM_NAME_GROUPS
|
item_name_groups = StaticWitnessItems.ITEM_NAME_GROUPS
|
||||||
|
|
||||||
required_client_version = (0, 3, 6)
|
required_client_version = (0, 3, 8)
|
||||||
|
|
||||||
def _get_slot_data(self):
|
def _get_slot_data(self):
|
||||||
return {
|
return {
|
||||||
'seed': self.multiworld.random.randint(0, 1000000),
|
'seed': self.multiworld.random.randint(0, 1000000),
|
||||||
'victory_location': int(self.player_logic.VICTORY_LOCATION, 16),
|
'victory_location': int(self.player_logic.VICTORY_LOCATION, 16),
|
||||||
'panelhex_to_id': self.locat.CHECK_PANELHEX_TO_ID,
|
'panelhex_to_id': self.locat.CHECK_PANELHEX_TO_ID,
|
||||||
'item_id_to_door_hexes': self.items.ITEM_ID_TO_DOOR_HEX,
|
'item_id_to_door_hexes': self.static_items.ITEM_ID_TO_DOOR_HEX_ALL,
|
||||||
'door_hexes': self.items.DOORS,
|
'door_hexes_in_the_pool': self.items.DOORS,
|
||||||
'symbols_not_in_the_game': self.items.SYMBOLS_NOT_IN_THE_GAME,
|
'symbols_not_in_the_game': self.items.SYMBOLS_NOT_IN_THE_GAME,
|
||||||
'disabled_panels': self.player_logic.COMPLETELY_DISABLED_CHECKS,
|
'disabled_panels': self.player_logic.COMPLETELY_DISABLED_CHECKS,
|
||||||
'log_ids_to_hints': self.log_ids_to_hints,
|
'log_ids_to_hints': self.log_ids_to_hints,
|
||||||
'progressive_item_lists': self.items.MULTI_LISTS_BY_CODE
|
'progressive_item_lists': self.items.MULTI_LISTS_BY_CODE,
|
||||||
|
'obelisk_side_id_to_EPs': self.static_logic.OBELISK_SIDE_ID_TO_EP_HEXES,
|
||||||
|
'precompleted_puzzles': {int(h, 16) for h in self.player_logic.PRECOMPLETED_LOCATIONS},
|
||||||
|
'ep_to_name': self.static_logic.EP_ID_TO_NAME,
|
||||||
}
|
}
|
||||||
|
|
||||||
def generate_early(self):
|
def generate_early(self):
|
||||||
|
self.items_by_name = dict()
|
||||||
|
|
||||||
if not (is_option_enabled(self.multiworld, self.player, "shuffle_symbols")
|
if not (is_option_enabled(self.multiworld, self.player, "shuffle_symbols")
|
||||||
or get_option_value(self.multiworld, self.player, "shuffle_doors")
|
or get_option_value(self.multiworld, self.player, "shuffle_doors")
|
||||||
or is_option_enabled(self.multiworld, self.player, "shuffle_lasers")):
|
or is_option_enabled(self.multiworld, self.player, "shuffle_lasers")):
|
||||||
|
@ -78,45 +83,52 @@ class WitnessWorld(World):
|
||||||
raise Exception("This Witness world doesn't have any progression items. Please turn on Symbol Shuffle,"
|
raise Exception("This Witness world doesn't have any progression items. Please turn on Symbol Shuffle,"
|
||||||
" Door Shuffle or Laser Shuffle.")
|
" Door Shuffle or Laser Shuffle.")
|
||||||
|
|
||||||
self.player_logic = WitnessPlayerLogic(self.multiworld, self.player)
|
disabled_locations = self.multiworld.exclude_locations[self.player].value
|
||||||
|
|
||||||
|
self.player_logic = WitnessPlayerLogic(
|
||||||
|
self.multiworld, self.player, disabled_locations, self.multiworld.start_inventory[self.player].value
|
||||||
|
)
|
||||||
|
|
||||||
self.locat = WitnessPlayerLocations(self.multiworld, self.player, self.player_logic)
|
self.locat = WitnessPlayerLocations(self.multiworld, self.player, self.player_logic)
|
||||||
self.items = WitnessPlayerItems(self.locat, self.multiworld, self.player, self.player_logic)
|
self.items = WitnessPlayerItems(self.locat, self.multiworld, self.player, self.player_logic)
|
||||||
self.regio = WitnessRegions(self.locat)
|
self.regio = WitnessRegions(self.locat)
|
||||||
|
|
||||||
self.log_ids_to_hints = dict()
|
def create_regions(self):
|
||||||
|
self.regio.create_regions(self.multiworld, self.player, self.player_logic)
|
||||||
self.junk_items_created = {key: 0 for key in self.items.JUNK_WEIGHTS.keys()}
|
|
||||||
|
|
||||||
def generate_basic(self):
|
def generate_basic(self):
|
||||||
|
self.log_ids_to_hints = dict()
|
||||||
|
self.junk_items_created = {key: 0 for key in self.items.JUNK_WEIGHTS.keys()}
|
||||||
|
|
||||||
# Generate item pool
|
# Generate item pool
|
||||||
pool = []
|
pool = []
|
||||||
items_by_name = dict()
|
|
||||||
for item in self.items.ITEM_TABLE:
|
for item in self.items.ITEM_TABLE:
|
||||||
for i in range(0, self.items.PROG_ITEM_AMOUNTS[item]):
|
for i in range(0, self.items.PROG_ITEM_AMOUNTS[item]):
|
||||||
if item in self.items.PROGRESSION_TABLE:
|
if item in self.items.PROGRESSION_TABLE:
|
||||||
witness_item = self.create_item(item)
|
witness_item = self.create_item(item)
|
||||||
pool.append(witness_item)
|
pool.append(witness_item)
|
||||||
items_by_name[item] = witness_item
|
self.items_by_name[item] = witness_item
|
||||||
|
|
||||||
less_junk = 0
|
less_junk = 0
|
||||||
|
|
||||||
# Put good item on first check if symbol shuffle is on
|
dog_check = self.multiworld.get_location(
|
||||||
symbols = is_option_enabled(self.multiworld, self.player, "shuffle_symbols")
|
"Town Pet the Dog", self.player
|
||||||
|
)
|
||||||
|
|
||||||
if symbols and get_option_value(self.multiworld, self.player, "puzzle_randomization") != 1:
|
dog_check.place_locked_item(self.create_item("Puzzle Skip"))
|
||||||
random_good_item = self.multiworld.random.choice(self.items.GOOD_ITEMS)
|
|
||||||
|
|
||||||
first_check = self.multiworld.get_location(
|
less_junk += 1
|
||||||
"Tutorial Gate Open", self.player
|
|
||||||
)
|
|
||||||
first_check.place_locked_item(items_by_name[random_good_item])
|
|
||||||
pool.remove(items_by_name[random_good_item])
|
|
||||||
|
|
||||||
less_junk = 1
|
for precol_item in self.multiworld.precollected_items[self.player]:
|
||||||
|
if precol_item.name in self.items_by_name: # if item is in the pool, remove 1 instance.
|
||||||
|
item_obj = self.items_by_name[precol_item.name]
|
||||||
|
|
||||||
|
if item_obj in pool:
|
||||||
|
pool.remove(item_obj) # remove one instance of this pre-collected item if it exists
|
||||||
|
|
||||||
for item in self.player_logic.STARTING_INVENTORY:
|
for item in self.player_logic.STARTING_INVENTORY:
|
||||||
self.multiworld.push_precollected(items_by_name[item])
|
self.multiworld.push_precollected(self.items_by_name[item])
|
||||||
pool.remove(items_by_name[item])
|
pool.remove(self.items_by_name[item])
|
||||||
|
|
||||||
for item in self.items.EXTRA_AMOUNTS:
|
for item in self.items.EXTRA_AMOUNTS:
|
||||||
for i in range(0, self.items.EXTRA_AMOUNTS[item]):
|
for i in range(0, self.items.EXTRA_AMOUNTS[item]):
|
||||||
|
@ -140,8 +152,25 @@ class WitnessWorld(World):
|
||||||
|
|
||||||
self.multiworld.itempool += pool
|
self.multiworld.itempool += pool
|
||||||
|
|
||||||
def create_regions(self):
|
def pre_fill(self):
|
||||||
self.regio.create_regions(self.multiworld, self.player, self.player_logic)
|
# Put good item on first check if there are any of the designated "good items" in the pool
|
||||||
|
good_items_in_the_game = []
|
||||||
|
|
||||||
|
for symbol in self.items.GOOD_ITEMS:
|
||||||
|
item = self.items_by_name[symbol]
|
||||||
|
if item in self.multiworld.itempool: # Only do this if the item is still in item pool (e.g. after plando)
|
||||||
|
good_items_in_the_game.append(symbol)
|
||||||
|
|
||||||
|
if good_items_in_the_game:
|
||||||
|
random_good_item = self.multiworld.random.choice(good_items_in_the_game)
|
||||||
|
|
||||||
|
first_check = self.multiworld.get_location(
|
||||||
|
"Tutorial Gate Open", self.player
|
||||||
|
)
|
||||||
|
item = self.items_by_name[random_good_item]
|
||||||
|
|
||||||
|
first_check.place_locked_item(item)
|
||||||
|
self.multiworld.itempool.remove(item)
|
||||||
|
|
||||||
def set_rules(self):
|
def set_rules(self):
|
||||||
set_rules(self.multiworld, self.player, self.player_logic, self.locat)
|
set_rules(self.multiworld, self.player, self.player_logic, self.locat)
|
||||||
|
@ -150,7 +179,9 @@ class WitnessWorld(World):
|
||||||
hint_amount = get_option_value(self.multiworld, self.player, "hint_amount")
|
hint_amount = get_option_value(self.multiworld, self.player, "hint_amount")
|
||||||
|
|
||||||
credits_hint = (
|
credits_hint = (
|
||||||
"This Randomizer", "is brought to you by", "NewSoupVi, Jarno, jbzdarkid, sigma144, IHNN, blastron", -1
|
"This Randomizer is brought to you by",
|
||||||
|
"NewSoupVi, Jarno, blastron,",
|
||||||
|
"jbzdarkid, sigma144, IHNN, oddGarrett.", -1
|
||||||
)
|
)
|
||||||
|
|
||||||
audio_logs = get_audio_logs().copy()
|
audio_logs = get_audio_logs().copy()
|
||||||
|
@ -158,12 +189,12 @@ class WitnessWorld(World):
|
||||||
if hint_amount != 0:
|
if hint_amount != 0:
|
||||||
generated_hints = make_hints(self.multiworld, self.player, hint_amount)
|
generated_hints = make_hints(self.multiworld, self.player, hint_amount)
|
||||||
|
|
||||||
self.multiworld.random.shuffle(audio_logs)
|
self.multiworld.slot_seeds[self.player].shuffle(audio_logs)
|
||||||
|
|
||||||
duplicates = len(audio_logs) // hint_amount
|
duplicates = len(audio_logs) // hint_amount
|
||||||
|
|
||||||
for _ in range(0, hint_amount):
|
for _ in range(0, hint_amount):
|
||||||
hint = generated_hints.pop()
|
hint = generated_hints.pop(0)
|
||||||
|
|
||||||
for _ in range(0, duplicates):
|
for _ in range(0, duplicates):
|
||||||
audio_log = audio_logs.pop()
|
audio_log = audio_logs.pop()
|
||||||
|
@ -173,7 +204,7 @@ class WitnessWorld(World):
|
||||||
audio_log = audio_logs.pop()
|
audio_log = audio_logs.pop()
|
||||||
self.log_ids_to_hints[int(audio_log, 16)] = credits_hint
|
self.log_ids_to_hints[int(audio_log, 16)] = credits_hint
|
||||||
|
|
||||||
joke_hints = generate_joke_hints(self.multiworld, len(audio_logs))
|
joke_hints = generate_joke_hints(self.multiworld, self.player, len(audio_logs))
|
||||||
|
|
||||||
while audio_logs:
|
while audio_logs:
|
||||||
audio_log = audio_logs.pop()
|
audio_log = audio_logs.pop()
|
||||||
|
@ -192,7 +223,7 @@ class WitnessWorld(World):
|
||||||
|
|
||||||
def create_item(self, name: str) -> Item:
|
def create_item(self, name: str) -> Item:
|
||||||
# this conditional is purely for unit tests, which need to be able to create an item before generate_early
|
# this conditional is purely for unit tests, which need to be able to create an item before generate_early
|
||||||
if hasattr(self, 'items'):
|
if hasattr(self, 'items') and name in self.items.ITEM_TABLE:
|
||||||
item = self.items.ITEM_TABLE[name]
|
item = self.items.ITEM_TABLE[name]
|
||||||
else:
|
else:
|
||||||
item = StaticWitnessItems.ALL_ITEM_TABLE[name]
|
item = StaticWitnessItems.ALL_ITEM_TABLE[name]
|
||||||
|
|
|
@ -35,4 +35,15 @@ Example: "Shipwreck Vault contains Triangles".
|
||||||
## The Jungle, Orchard, Forest and Color House aren't randomized. What gives?
|
## The Jungle, Orchard, Forest and Color House aren't randomized. What gives?
|
||||||
|
|
||||||
There are limitations to what can currently be randomized in The Witness.
|
There are limitations to what can currently be randomized in The Witness.
|
||||||
There is an option to turn these non-randomized panels off, called "disable_non_randomized" in your yaml file. This will also slightly change the activation requirement of certain panels, detailed [here](https://github.com/sigma144/witness-randomizer/wiki/Activation-Triggers).
|
There is an option to turn these non-randomized panels off, called "disable_non_randomized" in your yaml file. This will also slightly change the activation requirement of certain panels, detailed [here](https://github.com/sigma144/witness-randomizer/wiki/Activation-Triggers).
|
||||||
|
|
||||||
|
## A note on starting inventory and excluded locations
|
||||||
|
|
||||||
|
In this randomizer, items added to start_inventory will be removed from the item pool (as many copies as specified).
|
||||||
|
|
||||||
|
It is also possible to add items to the starting inventory that are not part of the mode you are playing.
|
||||||
|
In this case, the generator will make its best attempt to adjust logic accordingly.
|
||||||
|
One of the use cases of this could be to pre-open a specific door or pre-activate a single laser.
|
||||||
|
|
||||||
|
In "shuffle_EPs: obelisk_sides", any Environmental Puzzles in exclude_locations will be pre-completed and not considered for their Obelisk Side.
|
||||||
|
If every Environmental Puzzle on an Obelisk Side is pre-completed, that side disappears from the location pool entirely.
|
|
@ -17,7 +17,7 @@ joke_hints = [
|
||||||
("Have you tried ChecksFinder?", "If you like puzzles,", "you might enjoy it!"),
|
("Have you tried ChecksFinder?", "If you like puzzles,", "you might enjoy it!"),
|
||||||
("Have you tried Dark Souls III?", "A tough game like this", "feels better when friends are helping you!"),
|
("Have you tried Dark Souls III?", "A tough game like this", "feels better when friends are helping you!"),
|
||||||
("Have you tried Donkey Kong Country 3?", "A legendary game", "from a golden age of platformers!"),
|
("Have you tried Donkey Kong Country 3?", "A legendary game", "from a golden age of platformers!"),
|
||||||
("Have you tried Factorio?", "Alone in an unknown world.", "Sound familiar?"),
|
("Have you tried Factorio?", "Alone in an unknown multiworld.", "Sound familiar?"),
|
||||||
("Have you tried Final Fantasy?", "Experience a classic game", "improved to fit modern standards!"),
|
("Have you tried Final Fantasy?", "Experience a classic game", "improved to fit modern standards!"),
|
||||||
("Have you tried Hollow Knight?", "Another independent hit", "revolutionising a genre!"),
|
("Have you tried Hollow Knight?", "Another independent hit", "revolutionising a genre!"),
|
||||||
("Have you tried A Link to the Past?", "The Archipelago game", "that started it all!"),
|
("Have you tried A Link to the Past?", "The Archipelago game", "that started it all!"),
|
||||||
|
@ -95,17 +95,18 @@ joke_hints = [
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
def get_always_hint_items(world: MultiWorld, player: int):
|
def get_always_hint_items(multiworld: MultiWorld, player: int):
|
||||||
priority = [
|
priority = [
|
||||||
"Boat",
|
"Boat",
|
||||||
"Mountain Bottom Floor Final Room Entry (Door)",
|
"Mountain Bottom Floor Final Room Entry (Door)",
|
||||||
"Caves Mountain Shortcut (Door)",
|
"Caves Mountain Shortcut (Door)",
|
||||||
"Caves Swamp Shortcut (Door)",
|
"Caves Swamp Shortcut (Door)",
|
||||||
"Caves Exits to Main Island",
|
"Caves Exits to Main Island",
|
||||||
|
"Progressive Dots",
|
||||||
]
|
]
|
||||||
|
|
||||||
difficulty = get_option_value(world, player, "puzzle_randomization")
|
difficulty = get_option_value(multiworld, player, "puzzle_randomization")
|
||||||
discards = is_option_enabled(world, player, "shuffle_discards")
|
discards = is_option_enabled(multiworld, player, "shuffle_discarded_panels")
|
||||||
|
|
||||||
if discards:
|
if discards:
|
||||||
if difficulty == 1:
|
if difficulty == 1:
|
||||||
|
@ -116,16 +117,19 @@ def get_always_hint_items(world: MultiWorld, player: int):
|
||||||
return priority
|
return priority
|
||||||
|
|
||||||
|
|
||||||
def get_always_hint_locations(world: MultiWorld, player: int):
|
def get_always_hint_locations(multiworld: MultiWorld, player: int):
|
||||||
return {
|
return {
|
||||||
"Swamp Purple Underwater",
|
"Swamp Purple Underwater",
|
||||||
"Shipwreck Vault Box",
|
"Shipwreck Vault Box",
|
||||||
"Challenge Vault Box",
|
"Challenge Vault Box",
|
||||||
"Mountain Bottom Floor Discard",
|
"Mountain Bottom Floor Discard",
|
||||||
|
"Theater Eclipse EP",
|
||||||
|
"Shipwreck Couch EP",
|
||||||
|
"Mountainside Cloud Cycle EP",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def get_priority_hint_items(world: MultiWorld, player: int):
|
def get_priority_hint_items(multiworld: MultiWorld, player: int):
|
||||||
priority = {
|
priority = {
|
||||||
"Negative Shapers",
|
"Negative Shapers",
|
||||||
"Sound Dots",
|
"Sound Dots",
|
||||||
|
@ -135,7 +139,7 @@ def get_priority_hint_items(world: MultiWorld, player: int):
|
||||||
"Swamp Laser Shortcut (Door)",
|
"Swamp Laser Shortcut (Door)",
|
||||||
}
|
}
|
||||||
|
|
||||||
if is_option_enabled(world, player, "shuffle_lasers"):
|
if is_option_enabled(multiworld, player, "shuffle_lasers"):
|
||||||
lasers = {
|
lasers = {
|
||||||
"Symmetry Laser",
|
"Symmetry Laser",
|
||||||
"Desert Laser",
|
"Desert Laser",
|
||||||
|
@ -150,18 +154,18 @@ def get_priority_hint_items(world: MultiWorld, player: int):
|
||||||
"Shadows Laser",
|
"Shadows Laser",
|
||||||
}
|
}
|
||||||
|
|
||||||
if get_option_value(world, player, "doors") >= 2:
|
if get_option_value(multiworld, player, "doors") >= 2:
|
||||||
priority.add("Desert Laser")
|
priority.add("Desert Laser")
|
||||||
lasers.remove("Desert Laser")
|
lasers.remove("Desert Laser")
|
||||||
priority.update(world.random.sample(lasers, 2))
|
priority.update(multiworld.slot_seeds[player].sample(lasers, 2))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
priority.update(world.random.sample(lasers, 3))
|
priority.update(multiworld.slot_seeds[player].sample(lasers, 3))
|
||||||
|
|
||||||
return priority
|
return priority
|
||||||
|
|
||||||
|
|
||||||
def get_priority_hint_locations(world: MultiWorld, player: int):
|
def get_priority_hint_locations(multiworld: MultiWorld, player: int):
|
||||||
return {
|
return {
|
||||||
"Town RGB Room Left",
|
"Town RGB Room Left",
|
||||||
"Town RGB Room Right",
|
"Town RGB Room Right",
|
||||||
|
@ -171,75 +175,85 @@ def get_priority_hint_locations(world: MultiWorld, player: int):
|
||||||
"Desert Vault Box",
|
"Desert Vault Box",
|
||||||
"Mountainside Vault Box",
|
"Mountainside Vault Box",
|
||||||
"Mountainside Discard",
|
"Mountainside Discard",
|
||||||
|
"Tunnels Theater Flowers EP",
|
||||||
|
"Boat Shipwreck Green EP",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def make_hint_from_item(world: MultiWorld, player: int, item: str):
|
def make_hint_from_item(multiworld: MultiWorld, player: int, item: str):
|
||||||
location_obj = world.find_item(item, player).item.location
|
location_obj = multiworld.find_item(item, player).item.location
|
||||||
location_name = location_obj.name
|
location_name = location_obj.name
|
||||||
if location_obj.player != player:
|
if location_obj.player != player:
|
||||||
location_name += " (" + world.get_player_name(location_obj.player) + ")"
|
location_name += " (" + multiworld.get_player_name(location_obj.player) + ")"
|
||||||
|
|
||||||
return location_name, item, location_obj.address if(location_obj.player == player) else -1
|
return location_name, item, location_obj.address if(location_obj.player == player) else -1
|
||||||
|
|
||||||
|
|
||||||
def make_hint_from_location(world: MultiWorld, player: int, location: str):
|
def make_hint_from_location(multiworld: MultiWorld, player: int, location: str):
|
||||||
location_obj = world.get_location(location, player)
|
location_obj = multiworld.get_location(location, player)
|
||||||
item_obj = world.get_location(location, player).item
|
item_obj = multiworld.get_location(location, player).item
|
||||||
item_name = item_obj.name
|
item_name = item_obj.name
|
||||||
if item_obj.player != player:
|
if item_obj.player != player:
|
||||||
item_name += " (" + world.get_player_name(item_obj.player) + ")"
|
item_name += " (" + multiworld.get_player_name(item_obj.player) + ")"
|
||||||
|
|
||||||
return location, item_name, location_obj.address if(location_obj.player == player) else -1
|
return location, item_name, location_obj.address if(location_obj.player == player) else -1
|
||||||
|
|
||||||
|
|
||||||
def make_hints(world: MultiWorld, player: int, hint_amount: int):
|
def make_hints(multiworld: MultiWorld, player: int, hint_amount: int):
|
||||||
hints = list()
|
hints = list()
|
||||||
|
|
||||||
prog_items_in_this_world = {
|
prog_items_in_this_world = {
|
||||||
item.name for item in world.get_items()
|
item.name for item in multiworld.get_items()
|
||||||
if item.player == player and item.code and item.advancement
|
if item.player == player and item.code and item.advancement
|
||||||
}
|
}
|
||||||
loc_in_this_world = {
|
loc_in_this_world = {
|
||||||
location.name for location in world.get_locations()
|
location.name for location in multiworld.get_locations()
|
||||||
if location.player == player and not location.event
|
if location.player == player and location.address
|
||||||
}
|
}
|
||||||
|
|
||||||
always_locations = [
|
always_locations = [
|
||||||
location for location in get_always_hint_locations(world, player)
|
location for location in get_always_hint_locations(multiworld, player)
|
||||||
if location in loc_in_this_world
|
if location in loc_in_this_world
|
||||||
]
|
]
|
||||||
always_items = [
|
always_items = [
|
||||||
item for item in get_always_hint_items(world, player)
|
item for item in get_always_hint_items(multiworld, player)
|
||||||
if item in prog_items_in_this_world
|
if item in prog_items_in_this_world
|
||||||
]
|
]
|
||||||
priority_locations = [
|
priority_locations = [
|
||||||
location for location in get_priority_hint_locations(world, player)
|
location for location in get_priority_hint_locations(multiworld, player)
|
||||||
if location in loc_in_this_world
|
if location in loc_in_this_world
|
||||||
]
|
]
|
||||||
priority_items = [
|
priority_items = [
|
||||||
item for item in get_priority_hint_items(world, player)
|
item for item in get_priority_hint_items(multiworld, player)
|
||||||
if item in prog_items_in_this_world
|
if item in prog_items_in_this_world
|
||||||
]
|
]
|
||||||
|
|
||||||
always_hint_pairs = dict()
|
always_hint_pairs = dict()
|
||||||
|
|
||||||
for item in always_items:
|
for item in always_items:
|
||||||
hint_pair = make_hint_from_item(world, player, item)
|
hint_pair = make_hint_from_item(multiworld, player, item)
|
||||||
|
|
||||||
|
if hint_pair[2] == 158007: # Tutorial Gate Open
|
||||||
|
continue
|
||||||
|
|
||||||
always_hint_pairs[hint_pair[0]] = (hint_pair[1], True, hint_pair[2])
|
always_hint_pairs[hint_pair[0]] = (hint_pair[1], True, hint_pair[2])
|
||||||
|
|
||||||
for location in always_locations:
|
for location in always_locations:
|
||||||
hint_pair = make_hint_from_location(world, player, location)
|
hint_pair = make_hint_from_location(multiworld, player, location)
|
||||||
always_hint_pairs[hint_pair[0]] = (hint_pair[1], False, hint_pair[2])
|
always_hint_pairs[hint_pair[0]] = (hint_pair[1], False, hint_pair[2])
|
||||||
|
|
||||||
priority_hint_pairs = dict()
|
priority_hint_pairs = dict()
|
||||||
|
|
||||||
for item in priority_items:
|
for item in priority_items:
|
||||||
hint_pair = make_hint_from_item(world, player, item)
|
hint_pair = make_hint_from_item(multiworld, player, item)
|
||||||
|
|
||||||
|
if hint_pair[2] == 158007: # Tutorial Gate Open
|
||||||
|
continue
|
||||||
|
|
||||||
priority_hint_pairs[hint_pair[0]] = (hint_pair[1], True, hint_pair[2])
|
priority_hint_pairs[hint_pair[0]] = (hint_pair[1], True, hint_pair[2])
|
||||||
|
|
||||||
for location in priority_locations:
|
for location in priority_locations:
|
||||||
hint_pair = make_hint_from_location(world, player, location)
|
hint_pair = make_hint_from_location(multiworld, player, location)
|
||||||
priority_hint_pairs[hint_pair[0]] = (hint_pair[1], False, hint_pair[2])
|
priority_hint_pairs[hint_pair[0]] = (hint_pair[1], False, hint_pair[2])
|
||||||
|
|
||||||
for loc, item in always_hint_pairs.items():
|
for loc, item in always_hint_pairs.items():
|
||||||
|
@ -248,17 +262,19 @@ def make_hints(world: MultiWorld, player: int, hint_amount: int):
|
||||||
else:
|
else:
|
||||||
hints.append((loc, "contains", item[0], item[2]))
|
hints.append((loc, "contains", item[0], item[2]))
|
||||||
|
|
||||||
next_random_hint_is_item = world.random.randint(0, 2)
|
multiworld.slot_seeds[player].shuffle(hints) # shuffle always hint order in case of low hint amount
|
||||||
|
|
||||||
|
next_random_hint_is_item = multiworld.slot_seeds[player].randint(0, 2)
|
||||||
|
|
||||||
prog_items_in_this_world = sorted(list(prog_items_in_this_world))
|
prog_items_in_this_world = sorted(list(prog_items_in_this_world))
|
||||||
locations_in_this_world = sorted(list(loc_in_this_world))
|
locations_in_this_world = sorted(list(loc_in_this_world))
|
||||||
|
|
||||||
world.random.shuffle(prog_items_in_this_world)
|
multiworld.slot_seeds[player].shuffle(prog_items_in_this_world)
|
||||||
world.random.shuffle(locations_in_this_world)
|
multiworld.slot_seeds[player].shuffle(locations_in_this_world)
|
||||||
|
|
||||||
while len(hints) < hint_amount:
|
while len(hints) < hint_amount:
|
||||||
if priority_hint_pairs:
|
if priority_hint_pairs:
|
||||||
loc = world.random.choice(list(priority_hint_pairs.keys()))
|
loc = multiworld.slot_seeds[player].choice(list(priority_hint_pairs.keys()))
|
||||||
item = priority_hint_pairs[loc]
|
item = priority_hint_pairs[loc]
|
||||||
del priority_hint_pairs[loc]
|
del priority_hint_pairs[loc]
|
||||||
|
|
||||||
|
@ -273,10 +289,10 @@ def make_hints(world: MultiWorld, player: int, hint_amount: int):
|
||||||
next_random_hint_is_item = not next_random_hint_is_item
|
next_random_hint_is_item = not next_random_hint_is_item
|
||||||
continue
|
continue
|
||||||
|
|
||||||
hint = make_hint_from_item(world, player, prog_items_in_this_world.pop())
|
hint = make_hint_from_item(multiworld, player, prog_items_in_this_world.pop())
|
||||||
hints.append((hint[1], "can be found at", hint[0], hint[2]))
|
hints.append((hint[1], "can be found at", hint[0], hint[2]))
|
||||||
else:
|
else:
|
||||||
hint = make_hint_from_location(world, player, locations_in_this_world.pop())
|
hint = make_hint_from_location(multiworld, player, locations_in_this_world.pop())
|
||||||
hints.append((hint[0], "contains", hint[1], hint[2]))
|
hints.append((hint[0], "contains", hint[1], hint[2]))
|
||||||
|
|
||||||
next_random_hint_is_item = not next_random_hint_is_item
|
next_random_hint_is_item = not next_random_hint_is_item
|
||||||
|
@ -284,5 +300,5 @@ def make_hints(world: MultiWorld, player: int, hint_amount: int):
|
||||||
return hints
|
return hints
|
||||||
|
|
||||||
|
|
||||||
def generate_joke_hints(world: MultiWorld, amount: int):
|
def generate_joke_hints(multiworld: MultiWorld, player: int, amount: int):
|
||||||
return [(x, y, z, -1) for (x, y, z) in world.random.sample(joke_hints, amount)]
|
return [(x, y, z, -1) for (x, y, z) in multiworld.slot_seeds[player].sample(joke_hints, amount)]
|
||||||
|
|
|
@ -51,6 +51,8 @@ class StaticWitnessItems:
|
||||||
|
|
||||||
ALL_JUNK_ITEMS = set(BONUS_WEIGHTS.keys()) | set(TRAP_WEIGHTS.keys())
|
ALL_JUNK_ITEMS = set(BONUS_WEIGHTS.keys()) | set(TRAP_WEIGHTS.keys())
|
||||||
|
|
||||||
|
ITEM_ID_TO_DOOR_HEX_ALL = dict()
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
item_tab = dict()
|
item_tab = dict()
|
||||||
|
|
||||||
|
@ -62,6 +64,13 @@ class StaticWitnessItems:
|
||||||
|
|
||||||
self.ITEM_NAME_GROUPS.setdefault("Symbols", set()).add(item[0])
|
self.ITEM_NAME_GROUPS.setdefault("Symbols", set()).add(item[0])
|
||||||
|
|
||||||
|
for progressive, item_list in StaticWitnessLogic.PROGRESSIVE_TO_ITEMS.items():
|
||||||
|
if not item_list:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if item_list[0] in self.ITEM_NAME_GROUPS.setdefault("Symbols", set()):
|
||||||
|
self.ITEM_NAME_GROUPS.setdefault("Symbols", set()).add(progressive)
|
||||||
|
|
||||||
for item in StaticWitnessLogic.ALL_DOOR_ITEMS:
|
for item in StaticWitnessLogic.ALL_DOOR_ITEMS:
|
||||||
item_tab[item[0]] = ItemData(158000 + item[1], True, False)
|
item_tab[item[0]] = ItemData(158000 + item[1], True, False)
|
||||||
|
|
||||||
|
@ -91,6 +100,9 @@ class StaticWitnessItems:
|
||||||
for key, item in item_tab.items():
|
for key, item in item_tab.items():
|
||||||
self.ALL_ITEM_TABLE[key] = item
|
self.ALL_ITEM_TABLE[key] = item
|
||||||
|
|
||||||
|
for door in StaticWitnessLogic.ALL_DOOR_ITEMS:
|
||||||
|
self.ITEM_ID_TO_DOOR_HEX_ALL[door[1] + 158000] = {int(door_hex, 16) for door_hex in door[2]}
|
||||||
|
|
||||||
|
|
||||||
class WitnessPlayerItems:
|
class WitnessPlayerItems:
|
||||||
"""
|
"""
|
||||||
|
@ -101,10 +113,33 @@ class WitnessPlayerItems:
|
||||||
def code(item_name: str):
|
def code(item_name: str):
|
||||||
return StaticWitnessItems.ALL_ITEM_TABLE[item_name].code
|
return StaticWitnessItems.ALL_ITEM_TABLE[item_name].code
|
||||||
|
|
||||||
def __init__(self, locat: WitnessPlayerLocations, world: MultiWorld, player: int, player_logic: WitnessPlayerLogic):
|
@staticmethod
|
||||||
|
def is_progression(item_name: str, multiworld: MultiWorld, player: int):
|
||||||
|
useless_doors = {
|
||||||
|
"River Monastery Shortcut (Door)",
|
||||||
|
"Jungle & River Shortcuts",
|
||||||
|
"Monastery Shortcut (Door)",
|
||||||
|
"Orchard Second Gate (Door)",
|
||||||
|
}
|
||||||
|
|
||||||
|
if item_name in useless_doors:
|
||||||
|
return False
|
||||||
|
|
||||||
|
ep_doors = {
|
||||||
|
"Monastery Garden Entry (Door)",
|
||||||
|
"Monastery Shortcuts",
|
||||||
|
}
|
||||||
|
|
||||||
|
if item_name in ep_doors:
|
||||||
|
return get_option_value(multiworld, player, "shuffle_EPs") != 0
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
def __init__(self, locat: WitnessPlayerLocations, multiworld: MultiWorld, player: int, logic: WitnessPlayerLogic):
|
||||||
"""Adds event items after logic changes due to options"""
|
"""Adds event items after logic changes due to options"""
|
||||||
self.EVENT_ITEM_TABLE = dict()
|
self.EVENT_ITEM_TABLE = dict()
|
||||||
self.ITEM_TABLE = copy.copy(StaticWitnessItems.ALL_ITEM_TABLE)
|
self.ITEM_TABLE = copy.copy(StaticWitnessItems.ALL_ITEM_TABLE)
|
||||||
|
|
||||||
self.PROGRESSION_TABLE = dict()
|
self.PROGRESSION_TABLE = dict()
|
||||||
|
|
||||||
self.ITEM_ID_TO_DOOR_HEX = dict()
|
self.ITEM_ID_TO_DOOR_HEX = dict()
|
||||||
|
@ -116,27 +151,31 @@ class WitnessPlayerItems:
|
||||||
|
|
||||||
self.EXTRA_AMOUNTS = {
|
self.EXTRA_AMOUNTS = {
|
||||||
"Functioning Brain": 1,
|
"Functioning Brain": 1,
|
||||||
"Puzzle Skip": get_option_value(world, player, "puzzle_skip_amount")
|
"Puzzle Skip": get_option_value(multiworld, player, "puzzle_skip_amount")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v in self.ITEM_TABLE.items():
|
||||||
|
if v.progression and not self.is_progression(k, multiworld, player):
|
||||||
|
self.ITEM_TABLE[k] = ItemData(v.code, False, False, never_exclude=True)
|
||||||
|
|
||||||
for item in StaticWitnessLogic.ALL_SYMBOL_ITEMS.union(StaticWitnessLogic.ALL_DOOR_ITEMS):
|
for item in StaticWitnessLogic.ALL_SYMBOL_ITEMS.union(StaticWitnessLogic.ALL_DOOR_ITEMS):
|
||||||
if item[0] not in player_logic.PROG_ITEMS_ACTUALLY_IN_THE_GAME:
|
if item[0] not in logic.PROG_ITEMS_ACTUALLY_IN_THE_GAME:
|
||||||
del self.ITEM_TABLE[item[0]]
|
del self.ITEM_TABLE[item[0]]
|
||||||
if item in StaticWitnessLogic.ALL_SYMBOL_ITEMS:
|
if item in StaticWitnessLogic.ALL_SYMBOL_ITEMS:
|
||||||
self.SYMBOLS_NOT_IN_THE_GAME.add(StaticWitnessItems.ALL_ITEM_TABLE[item[0]].code)
|
self.SYMBOLS_NOT_IN_THE_GAME.add(StaticWitnessItems.ALL_ITEM_TABLE[item[0]].code)
|
||||||
else:
|
else:
|
||||||
if item[0] in StaticWitnessLogic.PROGRESSIVE_TO_ITEMS:
|
if item[0] in StaticWitnessLogic.PROGRESSIVE_TO_ITEMS:
|
||||||
self.PROG_ITEM_AMOUNTS[item[0]] = len(player_logic.MULTI_LISTS[item[0]])
|
self.PROG_ITEM_AMOUNTS[item[0]] = len(logic.MULTI_LISTS[item[0]])
|
||||||
|
|
||||||
self.PROGRESSION_TABLE[item[0]] = self.ITEM_TABLE[item[0]]
|
self.PROGRESSION_TABLE[item[0]] = self.ITEM_TABLE[item[0]]
|
||||||
|
|
||||||
self.MULTI_LISTS_BY_CODE = dict()
|
self.MULTI_LISTS_BY_CODE = dict()
|
||||||
|
|
||||||
for item in self.PROG_ITEM_AMOUNTS:
|
for item in self.PROG_ITEM_AMOUNTS:
|
||||||
multi_list = player_logic.MULTI_LISTS[item]
|
multi_list = logic.MULTI_LISTS[item]
|
||||||
self.MULTI_LISTS_BY_CODE[self.code(item)] = [self.code(single_item) for single_item in multi_list]
|
self.MULTI_LISTS_BY_CODE[self.code(item)] = [self.code(single_item) for single_item in multi_list]
|
||||||
|
|
||||||
for entity_hex, items in player_logic.DOOR_ITEMS_BY_ID.items():
|
for entity_hex, items in logic.DOOR_ITEMS_BY_ID.items():
|
||||||
entity_hex_int = int(entity_hex, 16)
|
entity_hex_int = int(entity_hex, 16)
|
||||||
|
|
||||||
self.DOORS.add(entity_hex_int)
|
self.DOORS.add(entity_hex_int)
|
||||||
|
@ -145,26 +184,33 @@ class WitnessPlayerItems:
|
||||||
item_id = StaticWitnessItems.ALL_ITEM_TABLE[item].code
|
item_id = StaticWitnessItems.ALL_ITEM_TABLE[item].code
|
||||||
self.ITEM_ID_TO_DOOR_HEX.setdefault(item_id, set()).add(entity_hex_int)
|
self.ITEM_ID_TO_DOOR_HEX.setdefault(item_id, set()).add(entity_hex_int)
|
||||||
|
|
||||||
symbols = is_option_enabled(world, player, "shuffle_symbols")
|
symbols = is_option_enabled(multiworld, player, "shuffle_symbols")
|
||||||
|
|
||||||
if "shuffle_symbols" not in the_witness_options.keys():
|
if "shuffle_symbols" not in the_witness_options.keys():
|
||||||
symbols = True
|
symbols = True
|
||||||
|
|
||||||
doors = get_option_value(world, player, "shuffle_doors")
|
doors = get_option_value(multiworld, player, "shuffle_doors")
|
||||||
|
|
||||||
if doors and symbols:
|
self.GOOD_ITEMS = []
|
||||||
|
|
||||||
|
if symbols:
|
||||||
self.GOOD_ITEMS = [
|
self.GOOD_ITEMS = [
|
||||||
"Progressive Dots", "Black/White Squares", "Symmetry"
|
"Dots", "Black/White Squares", "Stars",
|
||||||
]
|
|
||||||
elif symbols:
|
|
||||||
self.GOOD_ITEMS = [
|
|
||||||
"Progressive Dots", "Black/White Squares", "Progressive Stars",
|
|
||||||
"Shapers", "Symmetry"
|
"Shapers", "Symmetry"
|
||||||
]
|
]
|
||||||
|
|
||||||
if is_option_enabled(world, player, "shuffle_discarded_panels"):
|
if doors:
|
||||||
self.GOOD_ITEMS.append("Triangles")
|
self.GOOD_ITEMS = [
|
||||||
if not is_option_enabled(world, player, "disable_non_randomized_puzzles"):
|
"Dots", "Black/White Squares", "Symmetry"
|
||||||
|
]
|
||||||
|
|
||||||
|
if is_option_enabled(multiworld, player, "shuffle_discarded_panels"):
|
||||||
|
if is_option_enabled(multiworld, player, "shuffle_discarded_panels"):
|
||||||
|
if get_option_value(multiworld, player, "puzzle_randomization") == 1:
|
||||||
|
self.GOOD_ITEMS.append("Arrows")
|
||||||
|
else:
|
||||||
|
self.GOOD_ITEMS.append("Triangles")
|
||||||
|
if not is_option_enabled(multiworld, player, "disable_non_randomized_puzzles"):
|
||||||
self.GOOD_ITEMS.append("Colored Squares")
|
self.GOOD_ITEMS.append("Colored Squares")
|
||||||
|
|
||||||
self.GOOD_ITEMS = [
|
self.GOOD_ITEMS = [
|
||||||
|
@ -172,11 +218,11 @@ class WitnessPlayerItems:
|
||||||
]
|
]
|
||||||
|
|
||||||
for event_location in locat.EVENT_LOCATION_TABLE:
|
for event_location in locat.EVENT_LOCATION_TABLE:
|
||||||
location = player_logic.EVENT_ITEM_PAIRS[event_location]
|
location = logic.EVENT_ITEM_PAIRS[event_location]
|
||||||
self.EVENT_ITEM_TABLE[location] = ItemData(None, True, True)
|
self.EVENT_ITEM_TABLE[location] = ItemData(None, True, True)
|
||||||
self.ITEM_TABLE[location] = ItemData(None, True, True)
|
self.ITEM_TABLE[location] = ItemData(None, True, True)
|
||||||
|
|
||||||
trap_percentage = get_option_value(world, player, "trap_percentage")
|
trap_percentage = get_option_value(multiworld, player, "trap_percentage")
|
||||||
|
|
||||||
self.JUNK_WEIGHTS = dict()
|
self.JUNK_WEIGHTS = dict()
|
||||||
|
|
||||||
|
|
|
@ -13,13 +13,6 @@ class StaticWitnessLocations:
|
||||||
"""
|
"""
|
||||||
ID_START = 158000
|
ID_START = 158000
|
||||||
|
|
||||||
TYPE_OFFSETS = {
|
|
||||||
"General": 0,
|
|
||||||
"Discard": 600,
|
|
||||||
"Vault": 650,
|
|
||||||
"Laser": 700,
|
|
||||||
}
|
|
||||||
|
|
||||||
EXTRA_LOCATIONS = {
|
EXTRA_LOCATIONS = {
|
||||||
"Tutorial Front Left",
|
"Tutorial Front Left",
|
||||||
"Tutorial Back Left",
|
"Tutorial Back Left",
|
||||||
|
@ -143,7 +136,214 @@ class StaticWitnessLocations:
|
||||||
"Theater Mountain Video",
|
"Theater Mountain Video",
|
||||||
"Town RGB Room Left",
|
"Town RGB Room Left",
|
||||||
"Town RGB Room Right",
|
"Town RGB Room Right",
|
||||||
|
"Town Sound Room Right",
|
||||||
"Swamp Purple Underwater",
|
"Swamp Purple Underwater",
|
||||||
|
|
||||||
|
"First Hallway EP",
|
||||||
|
"Tutorial Cloud EP",
|
||||||
|
"Tutorial Patio Flowers EP",
|
||||||
|
"Tutorial Gate EP",
|
||||||
|
"Outside Tutorial Garden EP",
|
||||||
|
"Outside Tutorial Town Sewer EP",
|
||||||
|
"Outside Tutorial Path EP",
|
||||||
|
"Outside Tutorial Tractor EP",
|
||||||
|
"Main Island Thundercloud EP",
|
||||||
|
"Glass Factory Vase EP",
|
||||||
|
"Symmetry Island Glass Factory Black Line Reflection EP",
|
||||||
|
"Symmetry Island Glass Factory Black Line EP",
|
||||||
|
"Desert Sand Snake EP",
|
||||||
|
"Desert Facade Right EP",
|
||||||
|
"Desert Facade Left EP",
|
||||||
|
"Desert Stairs Left EP",
|
||||||
|
"Desert Stairs Right EP",
|
||||||
|
"Desert Broken Wall Straight EP",
|
||||||
|
"Desert Broken Wall Bend EP",
|
||||||
|
"Desert Shore EP",
|
||||||
|
"Desert Island EP",
|
||||||
|
"Desert Pond Room Near Reflection EP",
|
||||||
|
"Desert Pond Room Far Reflection EP",
|
||||||
|
"Desert Flood Room EP",
|
||||||
|
"Desert Elevator EP",
|
||||||
|
"Quarry Shore EP",
|
||||||
|
"Quarry Entrance Pipe EP",
|
||||||
|
"Quarry Sand Pile EP",
|
||||||
|
"Quarry Rock Line EP",
|
||||||
|
"Quarry Rock Line Reflection EP",
|
||||||
|
"Quarry Railroad EP",
|
||||||
|
"Quarry Mill Ramp EP",
|
||||||
|
"Quarry Mill Lift EP",
|
||||||
|
"Quarry Boathouse Moving Ramp EP",
|
||||||
|
"Quarry Boathouse Hook EP",
|
||||||
|
"Shadows Quarry Mill Rooftop Vent EP",
|
||||||
|
"Treehouse Beach Rock Shadow EP",
|
||||||
|
"Treehouse Beach Sand Shadow EP",
|
||||||
|
"Treehouse Beach Both Orange Bridges EP",
|
||||||
|
"Keep Red Flowers EP",
|
||||||
|
"Keep Purple Flowers EP",
|
||||||
|
"Shipwreck Circle Near EP",
|
||||||
|
"Shipwreck Circle Left EP",
|
||||||
|
"Shipwreck Circle Far EP",
|
||||||
|
"Shipwreck Stern EP",
|
||||||
|
"Shipwreck Rope Inner EP",
|
||||||
|
"Shipwreck Rope Outer EP",
|
||||||
|
"Shipwreck Couch EP",
|
||||||
|
"Keep Pressure Plates 1 EP",
|
||||||
|
"Keep Pressure Plates 2 EP",
|
||||||
|
"Keep Pressure Plates 3 EP",
|
||||||
|
"Keep Pressure Plates 4 Left Exit EP",
|
||||||
|
"Keep Pressure Plates 4 Right Exit EP",
|
||||||
|
"Keep Path EP",
|
||||||
|
"Keep Hedges EP",
|
||||||
|
"Monastery Facade Left Near EP",
|
||||||
|
"Monastery Facade Left Far Short EP",
|
||||||
|
"Monastery Facade Left Far Long EP",
|
||||||
|
"Monastery Facade Right Near EP",
|
||||||
|
"Monastery Facade Left Stairs EP",
|
||||||
|
"Monastery Facade Right Stairs EP",
|
||||||
|
"Monastery Grass Stairs EP",
|
||||||
|
"Monastery Left Shutter EP",
|
||||||
|
"Monastery Middle Shutter EP",
|
||||||
|
"Monastery Right Shutter EP",
|
||||||
|
"Town Windmill First Blade EP",
|
||||||
|
"Town Windmill Second Blade EP",
|
||||||
|
"Town Windmill Third Blade EP",
|
||||||
|
"Town Tower Underside First EP",
|
||||||
|
"Town Tower Underside Second EP",
|
||||||
|
"Town Tower Underside Third EP",
|
||||||
|
"Town Tower Underside Fourth EP",
|
||||||
|
"Town RGB House Red EP",
|
||||||
|
"Town RGB House Green EP",
|
||||||
|
"Town Maze Bridge Underside EP",
|
||||||
|
"Town Black Line Redirect EP",
|
||||||
|
"Town Black Line Church EP",
|
||||||
|
"Town Brown Bridge EP",
|
||||||
|
"Town Black Line Tower EP",
|
||||||
|
"Theater Eclipse EP",
|
||||||
|
"Theater Window EP",
|
||||||
|
"Theater Door EP",
|
||||||
|
"Theater Church EP",
|
||||||
|
"Jungle Long Arch Moss EP",
|
||||||
|
"Jungle Straight Left Moss EP",
|
||||||
|
"Jungle Pop-up Wall Moss EP",
|
||||||
|
"Jungle Short Arch Moss EP",
|
||||||
|
"Jungle Entrance EP",
|
||||||
|
"Jungle Tree Halo EP",
|
||||||
|
"Jungle Bamboo CCW EP",
|
||||||
|
"Jungle Bamboo CW EP",
|
||||||
|
"River Green Leaf Moss EP",
|
||||||
|
"River Monastery Garden Left EP",
|
||||||
|
"River Monastery Garden Right EP",
|
||||||
|
"River Monastery Wall EP",
|
||||||
|
"Bunker Tinted Door EP",
|
||||||
|
"Bunker Green Room Flowers EP",
|
||||||
|
"Swamp Purple Sand Middle EP",
|
||||||
|
"Swamp Purple Sand Top EP",
|
||||||
|
"Swamp Purple Sand Bottom EP",
|
||||||
|
"Swamp Sliding Bridge Left EP",
|
||||||
|
"Swamp Sliding Bridge Right EP",
|
||||||
|
"Swamp Cyan Underwater Sliding Bridge EP",
|
||||||
|
"Swamp Rotating Bridge CCW EP",
|
||||||
|
"Swamp Rotating Bridge CW EP",
|
||||||
|
"Swamp Boat EP",
|
||||||
|
"Swamp Long Bridge Side EP",
|
||||||
|
"Swamp Purple Underwater Right EP",
|
||||||
|
"Swamp Purple Underwater Left EP",
|
||||||
|
"Treehouse Buoy EP",
|
||||||
|
"Treehouse Right Orange Bridge EP",
|
||||||
|
"Treehouse Burned House Beach EP",
|
||||||
|
"Mountainside Cloud Cycle EP",
|
||||||
|
"Mountainside Bush EP",
|
||||||
|
"Mountainside Apparent River EP",
|
||||||
|
"Mountaintop River Shape EP",
|
||||||
|
"Mountaintop Arch Black EP",
|
||||||
|
"Mountaintop Arch White Right EP",
|
||||||
|
"Mountaintop Arch White Left EP",
|
||||||
|
"Mountain Bottom Floor Yellow Bridge EP",
|
||||||
|
"Mountain Bottom Floor Blue Bridge EP",
|
||||||
|
"Mountain Floor 2 Pink Bridge EP",
|
||||||
|
"Caves Skylight EP",
|
||||||
|
"Challenge Water EP",
|
||||||
|
"Tunnels Theater Flowers EP",
|
||||||
|
"Boat Desert EP",
|
||||||
|
"Boat Shipwreck CCW Underside EP",
|
||||||
|
"Boat Shipwreck Green EP",
|
||||||
|
"Boat Shipwreck CW Underside EP",
|
||||||
|
"Boat Bunker Yellow Line EP",
|
||||||
|
"Boat Town Long Sewer EP",
|
||||||
|
"Boat Tutorial EP",
|
||||||
|
"Boat Tutorial Reflection EP",
|
||||||
|
"Boat Tutorial Moss EP",
|
||||||
|
"Boat Cargo Box EP",
|
||||||
|
|
||||||
|
"Desert Obelisk Side 1",
|
||||||
|
"Desert Obelisk Side 2",
|
||||||
|
"Desert Obelisk Side 3",
|
||||||
|
"Desert Obelisk Side 4",
|
||||||
|
"Desert Obelisk Side 5",
|
||||||
|
"Monastery Obelisk Side 1",
|
||||||
|
"Monastery Obelisk Side 2",
|
||||||
|
"Monastery Obelisk Side 3",
|
||||||
|
"Monastery Obelisk Side 4",
|
||||||
|
"Monastery Obelisk Side 5",
|
||||||
|
"Monastery Obelisk Side 6",
|
||||||
|
"Treehouse Obelisk Side 1",
|
||||||
|
"Treehouse Obelisk Side 2",
|
||||||
|
"Treehouse Obelisk Side 3",
|
||||||
|
"Treehouse Obelisk Side 4",
|
||||||
|
"Treehouse Obelisk Side 5",
|
||||||
|
"Treehouse Obelisk Side 6",
|
||||||
|
"River Obelisk Side 1",
|
||||||
|
"River Obelisk Side 2",
|
||||||
|
"River Obelisk Side 3",
|
||||||
|
"River Obelisk Side 4",
|
||||||
|
"River Obelisk Side 5",
|
||||||
|
"River Obelisk Side 6",
|
||||||
|
"Quarry Obelisk Side 1",
|
||||||
|
"Quarry Obelisk Side 2",
|
||||||
|
"Quarry Obelisk Side 3",
|
||||||
|
"Quarry Obelisk Side 4",
|
||||||
|
"Town Obelisk Side 1",
|
||||||
|
"Town Obelisk Side 2",
|
||||||
|
"Town Obelisk Side 3",
|
||||||
|
"Town Obelisk Side 4",
|
||||||
|
"Town Obelisk Side 5",
|
||||||
|
"Town Obelisk Side 6",
|
||||||
|
}
|
||||||
|
|
||||||
|
OBELISK_SIDES = {
|
||||||
|
"Desert Obelisk Side 1",
|
||||||
|
"Desert Obelisk Side 2",
|
||||||
|
"Desert Obelisk Side 3",
|
||||||
|
"Desert Obelisk Side 4",
|
||||||
|
"Desert Obelisk Side 5",
|
||||||
|
"Monastery Obelisk Side 1",
|
||||||
|
"Monastery Obelisk Side 2",
|
||||||
|
"Monastery Obelisk Side 3",
|
||||||
|
"Monastery Obelisk Side 4",
|
||||||
|
"Monastery Obelisk Side 5",
|
||||||
|
"Monastery Obelisk Side 6",
|
||||||
|
"Treehouse Obelisk Side 1",
|
||||||
|
"Treehouse Obelisk Side 2",
|
||||||
|
"Treehouse Obelisk Side 3",
|
||||||
|
"Treehouse Obelisk Side 4",
|
||||||
|
"Treehouse Obelisk Side 5",
|
||||||
|
"Treehouse Obelisk Side 6",
|
||||||
|
"River Obelisk Side 1",
|
||||||
|
"River Obelisk Side 2",
|
||||||
|
"River Obelisk Side 3",
|
||||||
|
"River Obelisk Side 4",
|
||||||
|
"River Obelisk Side 5",
|
||||||
|
"River Obelisk Side 6",
|
||||||
|
"Quarry Obelisk Side 1",
|
||||||
|
"Quarry Obelisk Side 2",
|
||||||
|
"Quarry Obelisk Side 3",
|
||||||
|
"Quarry Obelisk Side 4",
|
||||||
|
"Town Obelisk Side 1",
|
||||||
|
"Town Obelisk Side 2",
|
||||||
|
"Town Obelisk Side 3",
|
||||||
|
"Town Obelisk Side 4",
|
||||||
|
"Town Obelisk Side 5",
|
||||||
|
"Town Obelisk Side 6",
|
||||||
}
|
}
|
||||||
|
|
||||||
CAVES_LOCATIONS = {
|
CAVES_LOCATIONS = {
|
||||||
|
@ -170,8 +370,12 @@ class StaticWitnessLocations:
|
||||||
"Caves Left Upstairs Left Row 5",
|
"Caves Left Upstairs Left Row 5",
|
||||||
|
|
||||||
"Tunnels Vault Box",
|
"Tunnels Vault Box",
|
||||||
"Mountain Bottom Floor Discard",
|
|
||||||
"Theater Challenge Video",
|
"Theater Challenge Video",
|
||||||
|
|
||||||
|
"Caves Skylight EP",
|
||||||
|
"Challenge Water EP",
|
||||||
|
"Tunnels Theater Flowers EP",
|
||||||
|
"Tutorial Gate EP",
|
||||||
}
|
}
|
||||||
|
|
||||||
MOUNTAIN_UNREACHABLE_FROM_BEHIND = {
|
MOUNTAIN_UNREACHABLE_FROM_BEHIND = {
|
||||||
|
@ -183,6 +387,10 @@ class StaticWitnessLocations:
|
||||||
"Mountain Floor 1 Trash Pillar 2",
|
"Mountain Floor 1 Trash Pillar 2",
|
||||||
"Mountain Floor 2 Near Row 5",
|
"Mountain Floor 2 Near Row 5",
|
||||||
"Mountain Floor 2 Far Row 6",
|
"Mountain Floor 2 Far Row 6",
|
||||||
|
|
||||||
|
"Mountain Bottom Floor Yellow Bridge EP",
|
||||||
|
"Mountain Bottom Floor Blue Bridge EP",
|
||||||
|
"Mountain Floor 2 Pink Bridge EP",
|
||||||
}
|
}
|
||||||
|
|
||||||
MOUNTAIN_REACHABLE_FROM_BEHIND = {
|
MOUNTAIN_REACHABLE_FROM_BEHIND = {
|
||||||
|
@ -213,10 +421,11 @@ class StaticWitnessLocations:
|
||||||
def get_event_name(panel_hex):
|
def get_event_name(panel_hex):
|
||||||
"""
|
"""
|
||||||
Returns the event name of any given panel.
|
Returns the event name of any given panel.
|
||||||
Currently this is always "Panelname Solved"
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return StaticWitnessLogic.CHECKS_BY_HEX[panel_hex]["checkName"] + " Solved"
|
action = " Opened" if StaticWitnessLogic.CHECKS_BY_HEX[panel_hex]["panelType"] == "Door" else " Solved"
|
||||||
|
|
||||||
|
return StaticWitnessLogic.CHECKS_BY_HEX[panel_hex]["checkName"] + action
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
all_loc_to_id = {
|
all_loc_to_id = {
|
||||||
|
@ -286,11 +495,26 @@ class WitnessPlayerLocations:
|
||||||
if is_option_enabled(world, player, "shuffle_vault_boxes"):
|
if is_option_enabled(world, player, "shuffle_vault_boxes"):
|
||||||
self.PANEL_TYPES_TO_SHUFFLE.add("Vault")
|
self.PANEL_TYPES_TO_SHUFFLE.add("Vault")
|
||||||
|
|
||||||
|
if get_option_value(world, player, "shuffle_EPs") == 1:
|
||||||
|
self.PANEL_TYPES_TO_SHUFFLE.add("EP")
|
||||||
|
elif get_option_value(world, player, "shuffle_EPs") == 2:
|
||||||
|
self.PANEL_TYPES_TO_SHUFFLE.add("Obelisk Side")
|
||||||
|
|
||||||
|
for obelisk_loc in StaticWitnessLocations.OBELISK_SIDES:
|
||||||
|
obelisk_loc_hex = StaticWitnessLogic.CHECKS_BY_NAME[obelisk_loc]["checkHex"]
|
||||||
|
if player_logic.REQUIREMENTS_BY_HEX[obelisk_loc_hex] == frozenset({frozenset()}):
|
||||||
|
self.CHECK_LOCATIONS.discard(obelisk_loc)
|
||||||
|
|
||||||
self.CHECK_LOCATIONS = self.CHECK_LOCATIONS | player_logic.ADDED_CHECKS
|
self.CHECK_LOCATIONS = self.CHECK_LOCATIONS | player_logic.ADDED_CHECKS
|
||||||
|
|
||||||
if not is_option_enabled(world, player, "shuffle_postgame"):
|
if not is_option_enabled(world, player, "shuffle_postgame"):
|
||||||
self.CHECK_LOCATIONS -= postgame
|
self.CHECK_LOCATIONS -= postgame
|
||||||
|
|
||||||
|
self.CHECK_LOCATIONS -= {
|
||||||
|
StaticWitnessLogic.CHECKS_BY_HEX[panel]["checkName"]
|
||||||
|
for panel in player_logic.PRECOMPLETED_LOCATIONS
|
||||||
|
}
|
||||||
|
|
||||||
self.CHECK_LOCATIONS.discard(StaticWitnessLogic.CHECKS_BY_HEX[player_logic.VICTORY_LOCATION]["checkName"])
|
self.CHECK_LOCATIONS.discard(StaticWitnessLogic.CHECKS_BY_HEX[player_logic.VICTORY_LOCATION]["checkName"])
|
||||||
|
|
||||||
self.CHECK_LOCATIONS = self.CHECK_LOCATIONS - {
|
self.CHECK_LOCATIONS = self.CHECK_LOCATIONS - {
|
||||||
|
@ -301,8 +525,13 @@ class WitnessPlayerLocations:
|
||||||
self.CHECK_PANELHEX_TO_ID = {
|
self.CHECK_PANELHEX_TO_ID = {
|
||||||
StaticWitnessLogic.CHECKS_BY_NAME[ch]["checkHex"]: StaticWitnessLocations.ALL_LOCATIONS_TO_ID[ch]
|
StaticWitnessLogic.CHECKS_BY_NAME[ch]["checkHex"]: StaticWitnessLocations.ALL_LOCATIONS_TO_ID[ch]
|
||||||
for ch in self.CHECK_LOCATIONS
|
for ch in self.CHECK_LOCATIONS
|
||||||
|
if StaticWitnessLogic.CHECKS_BY_NAME[ch]["panelType"] in self.PANEL_TYPES_TO_SHUFFLE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dog_hex = StaticWitnessLogic.CHECKS_BY_NAME["Town Pet the Dog"]["checkHex"]
|
||||||
|
dog_id = StaticWitnessLocations.ALL_LOCATIONS_TO_ID["Town Pet the Dog"]
|
||||||
|
self.CHECK_PANELHEX_TO_ID[dog_hex] = dog_id
|
||||||
|
|
||||||
self.CHECK_PANELHEX_TO_ID = dict(
|
self.CHECK_PANELHEX_TO_ID = dict(
|
||||||
sorted(self.CHECK_PANELHEX_TO_ID.items(), key=lambda item: item[1])
|
sorted(self.CHECK_PANELHEX_TO_ID.items(), key=lambda item: item[1])
|
||||||
)
|
)
|
||||||
|
@ -317,9 +546,9 @@ class WitnessPlayerLocations:
|
||||||
}
|
}
|
||||||
|
|
||||||
check_dict = {
|
check_dict = {
|
||||||
location: StaticWitnessLocations.get_id(StaticWitnessLogic.CHECKS_BY_NAME[location]["checkHex"])
|
StaticWitnessLogic.CHECKS_BY_HEX[location]["checkName"]:
|
||||||
for location in self.CHECK_LOCATIONS
|
StaticWitnessLocations.get_id(StaticWitnessLogic.CHECKS_BY_HEX[location]["checkHex"])
|
||||||
if StaticWitnessLogic.CHECKS_BY_NAME[location]["panelType"] in self.PANEL_TYPES_TO_SHUFFLE
|
for location in self.CHECK_PANELHEX_TO_ID
|
||||||
}
|
}
|
||||||
|
|
||||||
self.CHECK_LOCATION_TABLE = {**self.EVENT_LOCATION_TABLE, **check_dict}
|
self.CHECK_LOCATION_TABLE = {**self.EVENT_LOCATION_TABLE, **check_dict}
|
||||||
|
|
|
@ -16,11 +16,15 @@ When the world has parsed its options, a second function is called to finalize t
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import copy
|
import copy
|
||||||
|
from typing import Set, Dict
|
||||||
|
from logging import warning
|
||||||
|
|
||||||
from BaseClasses import MultiWorld
|
from BaseClasses import MultiWorld
|
||||||
from .static_logic import StaticWitnessLogic
|
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_symbol_shuffle_list, get_door_panel_shuffle_list, get_doors_complex_list, get_doors_max_list, \
|
||||||
get_doors_simple_list, get_laser_shuffle
|
get_doors_simple_list, get_laser_shuffle, get_ep_all_individual, get_ep_obelisks, get_ep_easy, get_ep_no_eclipse, \
|
||||||
|
get_ep_no_caves, get_ep_no_mountain, get_ep_no_videos
|
||||||
from .Options import is_option_enabled, get_option_value, the_witness_options
|
from .Options import is_option_enabled, get_option_value, the_witness_options
|
||||||
|
|
||||||
|
|
||||||
|
@ -71,6 +75,8 @@ class WitnessPlayerLogic:
|
||||||
|
|
||||||
these_panels = self.DEPENDENT_REQUIREMENTS_BY_HEX[panel_hex]["panels"]
|
these_panels = self.DEPENDENT_REQUIREMENTS_BY_HEX[panel_hex]["panels"]
|
||||||
|
|
||||||
|
these_panels = frozenset({panels - self.PRECOMPLETED_LOCATIONS for panels in these_panels})
|
||||||
|
|
||||||
if these_panels == frozenset({frozenset()}):
|
if these_panels == frozenset({frozenset()}):
|
||||||
return these_items
|
return these_items
|
||||||
|
|
||||||
|
@ -84,7 +90,7 @@ class WitnessPlayerLogic:
|
||||||
|
|
||||||
if option_panel in self.COMPLETELY_DISABLED_CHECKS:
|
if option_panel in self.COMPLETELY_DISABLED_CHECKS:
|
||||||
new_items = frozenset()
|
new_items = frozenset()
|
||||||
elif option_panel in {"7 Lasers", "11 Lasers", "PP2 Weirdness"}:
|
elif option_panel in {"7 Lasers", "11 Lasers", "PP2 Weirdness", "Theater to Tunnels"}:
|
||||||
new_items = frozenset({frozenset([option_panel])})
|
new_items = frozenset({frozenset([option_panel])})
|
||||||
# If a panel turns on when a panel in a different region turns on,
|
# If a panel turns on when a panel in a different region turns on,
|
||||||
# the latter panel will be an "event panel", unless it ends up being
|
# the latter panel will be an "event panel", unless it ends up being
|
||||||
|
@ -207,8 +213,13 @@ class WitnessPlayerLogic:
|
||||||
return
|
return
|
||||||
|
|
||||||
if adj_type == "Added Locations":
|
if adj_type == "Added Locations":
|
||||||
|
if "0x" in line:
|
||||||
|
line = StaticWitnessLogic.CHECKS_BY_HEX[line]["checkName"]
|
||||||
self.ADDED_CHECKS.add(line)
|
self.ADDED_CHECKS.add(line)
|
||||||
|
|
||||||
|
if adj_type == "Precompleted Locations":
|
||||||
|
self.PRECOMPLETED_LOCATIONS.add(line)
|
||||||
|
|
||||||
def make_options_adjustments(self, world, player):
|
def make_options_adjustments(self, world, player):
|
||||||
"""Makes logic adjustments based on options"""
|
"""Makes logic adjustments based on options"""
|
||||||
adjustment_linesets_in_order = []
|
adjustment_linesets_in_order = []
|
||||||
|
@ -234,6 +245,29 @@ class WitnessPlayerLogic:
|
||||||
if is_option_enabled(world, player, "shuffle_symbols") or "shuffle_symbols" not in the_witness_options.keys():
|
if is_option_enabled(world, player, "shuffle_symbols") or "shuffle_symbols" not in the_witness_options.keys():
|
||||||
adjustment_linesets_in_order.append(get_symbol_shuffle_list())
|
adjustment_linesets_in_order.append(get_symbol_shuffle_list())
|
||||||
|
|
||||||
|
if get_option_value(world, player, "EP_difficulty") == 0:
|
||||||
|
adjustment_linesets_in_order.append(get_ep_easy())
|
||||||
|
elif get_option_value(world, player, "EP_difficulty") == 1:
|
||||||
|
adjustment_linesets_in_order.append(get_ep_no_eclipse())
|
||||||
|
|
||||||
|
if not is_option_enabled(world, player, "shuffle_vault_boxes"):
|
||||||
|
adjustment_linesets_in_order.append(get_ep_no_videos())
|
||||||
|
|
||||||
|
doors = get_option_value(world, player, "shuffle_doors") >= 2
|
||||||
|
earlyutm = is_option_enabled(world, player, "early_secret_area")
|
||||||
|
victory = get_option_value(world, player, "victory_condition")
|
||||||
|
mount_lasers = get_option_value(world, player, "mountain_lasers")
|
||||||
|
chal_lasers = get_option_value(world, player, "challenge_lasers")
|
||||||
|
|
||||||
|
excluse_postgame = not is_option_enabled(world, player, "shuffle_postgame")
|
||||||
|
|
||||||
|
if excluse_postgame and not (earlyutm or doors):
|
||||||
|
adjustment_linesets_in_order.append(get_ep_no_caves())
|
||||||
|
|
||||||
|
mountain_enterable_from_top = victory == 0 or victory == 1 or (victory == 3 and chal_lasers > mount_lasers)
|
||||||
|
if excluse_postgame and not mountain_enterable_from_top:
|
||||||
|
adjustment_linesets_in_order.append(get_ep_no_mountain())
|
||||||
|
|
||||||
if get_option_value(world, player, "shuffle_doors") == 1:
|
if get_option_value(world, player, "shuffle_doors") == 1:
|
||||||
adjustment_linesets_in_order.append(get_door_panel_shuffle_list())
|
adjustment_linesets_in_order.append(get_door_panel_shuffle_list())
|
||||||
|
|
||||||
|
@ -249,9 +283,35 @@ class WitnessPlayerLogic:
|
||||||
if is_option_enabled(world, player, "early_secret_area"):
|
if is_option_enabled(world, player, "early_secret_area"):
|
||||||
adjustment_linesets_in_order.append(get_early_utm_list())
|
adjustment_linesets_in_order.append(get_early_utm_list())
|
||||||
|
|
||||||
|
for item in self.YAML_ADDED_ITEMS:
|
||||||
|
adjustment_linesets_in_order.append(["Items:", item])
|
||||||
|
|
||||||
if is_option_enabled(world, player, "shuffle_lasers"):
|
if is_option_enabled(world, player, "shuffle_lasers"):
|
||||||
adjustment_linesets_in_order.append(get_laser_shuffle())
|
adjustment_linesets_in_order.append(get_laser_shuffle())
|
||||||
|
|
||||||
|
if get_option_value(world, player, "shuffle_EPs") == 0: # No EP Shuffle
|
||||||
|
adjustment_linesets_in_order.append(["Disabled Locations:"] + get_ep_all_individual()[1:])
|
||||||
|
adjustment_linesets_in_order.append(["Disabled Locations:"] + get_ep_obelisks()[1:])
|
||||||
|
|
||||||
|
elif get_option_value(world, player, "shuffle_EPs") == 1: # Individual EPs
|
||||||
|
adjustment_linesets_in_order.append(["Disabled Locations:"] + get_ep_obelisks()[1:])
|
||||||
|
|
||||||
|
else: # Obelisk Sides
|
||||||
|
yaml_disabled_eps = []
|
||||||
|
|
||||||
|
for yaml_disabled_location in self.YAML_DISABLED_LOCATIONS:
|
||||||
|
if yaml_disabled_location not in StaticWitnessLogic.CHECKS_BY_NAME:
|
||||||
|
continue
|
||||||
|
|
||||||
|
loc_obj = StaticWitnessLogic.CHECKS_BY_NAME[yaml_disabled_location]
|
||||||
|
|
||||||
|
if loc_obj["panelType"] != "EP":
|
||||||
|
continue
|
||||||
|
|
||||||
|
yaml_disabled_eps.append(loc_obj["checkHex"])
|
||||||
|
|
||||||
|
adjustment_linesets_in_order.append(["Precompleted Locations:"] + yaml_disabled_eps)
|
||||||
|
|
||||||
for adjustment_lineset in adjustment_linesets_in_order:
|
for adjustment_lineset in adjustment_linesets_in_order:
|
||||||
current_adjustment_type = None
|
current_adjustment_type = None
|
||||||
|
|
||||||
|
@ -290,7 +350,18 @@ class WitnessPlayerLogic:
|
||||||
"""
|
"""
|
||||||
Makes a pair of an event panel and its event item
|
Makes a pair of an event panel and its event item
|
||||||
"""
|
"""
|
||||||
name = self.REFERENCE_LOGIC.CHECKS_BY_HEX[panel]["checkName"] + " Solved"
|
action = " Opened" if StaticWitnessLogic.CHECKS_BY_HEX[panel]["panelType"] == "Door" else " Solved"
|
||||||
|
|
||||||
|
name = StaticWitnessLogic.CHECKS_BY_HEX[panel]["checkName"] + action
|
||||||
|
if panel not in self.EVENT_ITEM_NAMES:
|
||||||
|
if StaticWitnessLogic.CHECKS_BY_HEX[panel]["panelType"] == "EP":
|
||||||
|
obelisk = StaticWitnessLogic.CHECKS_BY_HEX[StaticWitnessLogic.EP_TO_OBELISK_SIDE[panel]]["checkName"]
|
||||||
|
|
||||||
|
self.EVENT_ITEM_NAMES[panel] = obelisk + " - " + StaticWitnessLogic.CHECKS_BY_HEX[panel]["checkName"]
|
||||||
|
|
||||||
|
else:
|
||||||
|
warning("Panel \"" + name + "\" does not have an associated event name.")
|
||||||
|
self.EVENT_ITEM_NAMES[panel] = name + " Event"
|
||||||
pair = (name, self.EVENT_ITEM_NAMES[panel])
|
pair = (name, self.EVENT_ITEM_NAMES[panel])
|
||||||
return pair
|
return pair
|
||||||
|
|
||||||
|
@ -323,7 +394,10 @@ class WitnessPlayerLogic:
|
||||||
pair = self.make_event_item_pair(panel)
|
pair = self.make_event_item_pair(panel)
|
||||||
self.EVENT_ITEM_PAIRS[pair[0]] = pair[1]
|
self.EVENT_ITEM_PAIRS[pair[0]] = pair[1]
|
||||||
|
|
||||||
def __init__(self, world: MultiWorld, player: int):
|
def __init__(self, world: MultiWorld, player: int, disabled_locations: Set[str], start_inv: Dict[str, int]):
|
||||||
|
self.YAML_DISABLED_LOCATIONS = disabled_locations
|
||||||
|
self.YAML_ADDED_ITEMS = start_inv
|
||||||
|
|
||||||
self.EVENT_PANELS_FROM_PANELS = set()
|
self.EVENT_PANELS_FROM_PANELS = set()
|
||||||
self.EVENT_PANELS_FROM_REGIONS = set()
|
self.EVENT_PANELS_FROM_REGIONS = set()
|
||||||
|
|
||||||
|
@ -342,6 +416,8 @@ class WitnessPlayerLogic:
|
||||||
self.REFERENCE_LOGIC = StaticWitnessLogic.sigma_normal
|
self.REFERENCE_LOGIC = StaticWitnessLogic.sigma_normal
|
||||||
elif self.DIFFICULTY == 1:
|
elif self.DIFFICULTY == 1:
|
||||||
self.REFERENCE_LOGIC = StaticWitnessLogic.sigma_expert
|
self.REFERENCE_LOGIC = StaticWitnessLogic.sigma_expert
|
||||||
|
elif self.DIFFICULTY == 2:
|
||||||
|
self.REFERENCE_LOGIC = StaticWitnessLogic.vanilla
|
||||||
|
|
||||||
self.CONNECTIONS_BY_REGION_NAME = copy.copy(self.REFERENCE_LOGIC.STATIC_CONNECTIONS_BY_REGION_NAME)
|
self.CONNECTIONS_BY_REGION_NAME = copy.copy(self.REFERENCE_LOGIC.STATIC_CONNECTIONS_BY_REGION_NAME)
|
||||||
self.DEPENDENT_REQUIREMENTS_BY_HEX = copy.copy(self.REFERENCE_LOGIC.STATIC_DEPENDENT_REQUIREMENTS_BY_HEX)
|
self.DEPENDENT_REQUIREMENTS_BY_HEX = copy.copy(self.REFERENCE_LOGIC.STATIC_DEPENDENT_REQUIREMENTS_BY_HEX)
|
||||||
|
@ -353,6 +429,7 @@ class WitnessPlayerLogic:
|
||||||
self.EVENT_ITEM_PAIRS = dict()
|
self.EVENT_ITEM_PAIRS = dict()
|
||||||
self.ALWAYS_EVENT_HEX_CODES = set()
|
self.ALWAYS_EVENT_HEX_CODES = set()
|
||||||
self.COMPLETELY_DISABLED_CHECKS = set()
|
self.COMPLETELY_DISABLED_CHECKS = set()
|
||||||
|
self.PRECOMPLETED_LOCATIONS = set()
|
||||||
self.ADDED_CHECKS = set()
|
self.ADDED_CHECKS = set()
|
||||||
self.VICTORY_LOCATION = "0x0356B"
|
self.VICTORY_LOCATION = "0x0356B"
|
||||||
self.EVENT_ITEM_NAMES = {
|
self.EVENT_ITEM_NAMES = {
|
||||||
|
@ -366,7 +443,7 @@ class WitnessPlayerLogic:
|
||||||
"0x019DC": "Keep Hedges 2 Knowledge",
|
"0x019DC": "Keep Hedges 2 Knowledge",
|
||||||
"0x019E7": "Keep Hedges 3 Knowledge",
|
"0x019E7": "Keep Hedges 3 Knowledge",
|
||||||
"0x01D3F": "Keep Laser Panel (Pressure Plates) Activates",
|
"0x01D3F": "Keep Laser Panel (Pressure Plates) Activates",
|
||||||
"0x01BE9": "Keep Laser Panel (Pressure Plates) Activates",
|
"0x01BE9": "Keep Laser Panel (Pressure Plates) Activates - Expert",
|
||||||
"0x09F7F": "Mountain Access",
|
"0x09F7F": "Mountain Access",
|
||||||
"0x0367C": "Quarry Laser Mill Requirement Met",
|
"0x0367C": "Quarry Laser Mill Requirement Met",
|
||||||
"0x009A1": "Swamp Between Bridges Far 1 Activates",
|
"0x009A1": "Swamp Between Bridges Far 1 Activates",
|
||||||
|
@ -385,6 +462,7 @@ class WitnessPlayerLogic:
|
||||||
"0x17CDF": "All Boat Panels Turn On",
|
"0x17CDF": "All Boat Panels Turn On",
|
||||||
"0x09DB8": "All Boat Panels Turn On",
|
"0x09DB8": "All Boat Panels Turn On",
|
||||||
"0x17C95": "All Boat Panels Turn On",
|
"0x17C95": "All Boat Panels Turn On",
|
||||||
|
"0x0A054": "Couch EP solvable",
|
||||||
"0x03BB0": "Town Church Lattice Vision From Outside",
|
"0x03BB0": "Town Church Lattice Vision From Outside",
|
||||||
"0x28AC1": "Town Wooden Rooftop Turns On",
|
"0x28AC1": "Town Wooden Rooftop Turns On",
|
||||||
"0x28A69": "Town Tower 1st Door Opens",
|
"0x28A69": "Town Tower 1st Door Opens",
|
||||||
|
@ -411,6 +489,24 @@ class WitnessPlayerLogic:
|
||||||
"0x03613": "Treehouse Orange Bridge 13 Turns On",
|
"0x03613": "Treehouse Orange Bridge 13 Turns On",
|
||||||
"0x17DEC": "Treehouse Laser House Access Requirement",
|
"0x17DEC": "Treehouse Laser House Access Requirement",
|
||||||
"0x03C08": "Town Church Entry Opens",
|
"0x03C08": "Town Church Entry Opens",
|
||||||
|
"0x17D02": "Windmill Blades Spinning",
|
||||||
|
"0x0A0C9": "Cargo Box EP completable",
|
||||||
|
"0x09E39": "Pink Light Bridge Extended",
|
||||||
|
"0x01CD3": "Pressure Plates 3 EP available",
|
||||||
|
"0x17CC4": "Rails EP available",
|
||||||
|
"0x2896A": "Bridge Underside EP available",
|
||||||
|
"0x00064": "First Tunnel EP visible",
|
||||||
|
"0x033EA": "Pressure Plates 1 EP available",
|
||||||
|
"0x03553": "Tutorial Video EPs availble",
|
||||||
|
"0x17C79": "Bunker Door EP available",
|
||||||
|
"0x275FF": "Mill Light EPs available",
|
||||||
|
"0x17E2B": "Remaining Purple Sand EPs available",
|
||||||
|
"0x03852": "Ramp EPs requirement",
|
||||||
|
"0x334D8": "RGB panels & EPs solvable",
|
||||||
|
"0x03750": "Left Garden EP available",
|
||||||
|
"0x03C0C": "RGB Flowers EP requirement",
|
||||||
|
"0x01CD5": "Pressure Plates 3 EP requirement",
|
||||||
|
"0x3865F": "Ramp EPs access requirement",
|
||||||
}
|
}
|
||||||
|
|
||||||
self.ALWAYS_EVENT_NAMES_BY_HEX = {
|
self.ALWAYS_EVENT_NAMES_BY_HEX = {
|
||||||
|
|
|
@ -6,7 +6,7 @@ and connects them with the proper requirements
|
||||||
from BaseClasses import MultiWorld, Entrance
|
from BaseClasses import MultiWorld, Entrance
|
||||||
from .static_logic import StaticWitnessLogic
|
from .static_logic import StaticWitnessLogic
|
||||||
from .Options import get_option_value
|
from .Options import get_option_value
|
||||||
from .locations import WitnessPlayerLocations
|
from .locations import WitnessPlayerLocations, StaticWitnessLocations
|
||||||
from .player_logic import WitnessPlayerLogic
|
from .player_logic import WitnessPlayerLogic
|
||||||
|
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ class WitnessRegions:
|
||||||
)
|
)
|
||||||
|
|
||||||
def connect(self, world: MultiWorld, player: int, source: str, target: str, player_logic: WitnessPlayerLogic,
|
def connect(self, world: MultiWorld, player: int, source: str, target: str, player_logic: WitnessPlayerLogic,
|
||||||
panel_hex_to_solve_set=None):
|
panel_hex_to_solve_set=frozenset({frozenset()})):
|
||||||
"""
|
"""
|
||||||
connect two regions and set the corresponding requirement
|
connect two regions and set the corresponding requirement
|
||||||
"""
|
"""
|
||||||
|
@ -63,8 +63,10 @@ class WitnessRegions:
|
||||||
|
|
||||||
if difficulty == 1:
|
if difficulty == 1:
|
||||||
reference_logic = StaticWitnessLogic.sigma_expert
|
reference_logic = StaticWitnessLogic.sigma_expert
|
||||||
else:
|
elif difficulty == 0:
|
||||||
reference_logic = StaticWitnessLogic.sigma_normal
|
reference_logic = StaticWitnessLogic.sigma_normal
|
||||||
|
else:
|
||||||
|
reference_logic = StaticWitnessLogic.vanilla
|
||||||
|
|
||||||
all_locations = set()
|
all_locations = set()
|
||||||
|
|
||||||
|
@ -74,8 +76,8 @@ class WitnessRegions:
|
||||||
if reference_logic.CHECKS_BY_HEX[panel]["checkName"] in self.locat.CHECK_LOCATION_TABLE
|
if reference_logic.CHECKS_BY_HEX[panel]["checkName"] in self.locat.CHECK_LOCATION_TABLE
|
||||||
]
|
]
|
||||||
locations_for_this_region += [
|
locations_for_this_region += [
|
||||||
reference_logic.CHECKS_BY_HEX[panel]["checkName"] + " Solved" for panel in region["panels"]
|
StaticWitnessLocations.get_event_name(panel) for panel in region["panels"]
|
||||||
if reference_logic.CHECKS_BY_HEX[panel]["checkName"] + " Solved" in self.locat.EVENT_LOCATION_TABLE
|
if StaticWitnessLocations.get_event_name(panel) in self.locat.EVENT_LOCATION_TABLE
|
||||||
]
|
]
|
||||||
|
|
||||||
all_locations = all_locations | set(locations_for_this_region)
|
all_locations = all_locations | set(locations_for_this_region)
|
||||||
|
@ -86,9 +88,6 @@ class WitnessRegions:
|
||||||
|
|
||||||
for region_name, region in reference_logic.ALL_REGIONS_BY_NAME.items():
|
for region_name, region in reference_logic.ALL_REGIONS_BY_NAME.items():
|
||||||
for connection in player_logic.CONNECTIONS_BY_REGION_NAME[region_name]:
|
for connection in player_logic.CONNECTIONS_BY_REGION_NAME[region_name]:
|
||||||
if connection[0] == "Entry":
|
|
||||||
continue
|
|
||||||
|
|
||||||
if connection[1] == frozenset({frozenset(["TrueOneWay"])}):
|
if connection[1] == frozenset({frozenset(["TrueOneWay"])}):
|
||||||
self.connect(world, player, region_name, connection[0], player_logic, frozenset({frozenset()}))
|
self.connect(world, player, region_name, connection[0], player_logic, frozenset({frozenset()}))
|
||||||
continue
|
continue
|
||||||
|
|
|
@ -20,35 +20,24 @@ class WitnessLogic(LogicMixin):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def _witness_has_lasers(self, world, player: int, amount: int) -> bool:
|
def _witness_has_lasers(self, world, player: int, amount: int) -> bool:
|
||||||
|
regular_lasers = not is_option_enabled(world, player, "shuffle_lasers")
|
||||||
|
|
||||||
lasers = 0
|
lasers = 0
|
||||||
|
|
||||||
if is_option_enabled(world, player, "shuffle_lasers"):
|
place_names = [
|
||||||
lasers += int(self.has("Symmetry Laser", player))
|
"Symmetry", "Desert", "Town", "Monastery", "Keep",
|
||||||
lasers += int(self.has("Desert Laser", player)
|
"Quarry", "Treehouse", "Jungle", "Bunker", "Swamp", "Shadows"
|
||||||
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))
|
for place in place_names:
|
||||||
lasers += int(self.has("Desert Laser Activation", player)
|
has_laser = self.has(place + " Laser", player)
|
||||||
and self.has("Desert Laser Redirection", player))
|
|
||||||
lasers += int(self.has("Town Laser Activation", player))
|
has_laser = has_laser or (regular_lasers and self.has(place + " Laser Activation", player))
|
||||||
lasers += int(self.has("Monastery Laser Activation", player))
|
|
||||||
lasers += int(self.has("Keep Laser Activation", player))
|
if place == "Desert":
|
||||||
lasers += int(self.has("Quarry Laser Activation", player))
|
has_laser = has_laser and self.has("Desert Laser Redirection", player)
|
||||||
lasers += int(self.has("Treehouse Laser Activation", player))
|
|
||||||
lasers += int(self.has("Jungle Laser Activation", player))
|
lasers += int(has_laser)
|
||||||
lasers += int(self.has("Bunker Laser Activation", player))
|
|
||||||
lasers += int(self.has("Swamp Laser Activation", player))
|
|
||||||
lasers += int(self.has("Shadows Laser Activation", player))
|
|
||||||
|
|
||||||
return lasers >= amount
|
return lasers >= amount
|
||||||
|
|
||||||
|
@ -84,11 +73,15 @@ class WitnessLogic(LogicMixin):
|
||||||
|
|
||||||
for item in option:
|
for item in option:
|
||||||
if item == "7 Lasers":
|
if item == "7 Lasers":
|
||||||
if not self._witness_has_lasers(world, player, get_option_value(world, player, "mountain_lasers")):
|
laser_req = get_option_value(world, player, "mountain_lasers")
|
||||||
|
|
||||||
|
if not self._witness_has_lasers(world, player, laser_req):
|
||||||
valid_option = False
|
valid_option = False
|
||||||
break
|
break
|
||||||
elif item == "11 Lasers":
|
elif item == "11 Lasers":
|
||||||
if not self._witness_has_lasers(world, player, get_option_value(world, player, "challenge_lasers")):
|
laser_req = get_option_value(world, player, "challenge_lasers")
|
||||||
|
|
||||||
|
if not self._witness_has_lasers(world, player, laser_req):
|
||||||
valid_option = False
|
valid_option = False
|
||||||
break
|
break
|
||||||
elif item == "PP2 Weirdness":
|
elif item == "PP2 Weirdness":
|
||||||
|
@ -142,6 +135,24 @@ class WitnessLogic(LogicMixin):
|
||||||
if not (front_access and backwards_access):
|
if not (front_access and backwards_access):
|
||||||
valid_option = False
|
valid_option = False
|
||||||
break
|
break
|
||||||
|
elif item == "Theater to Tunnels":
|
||||||
|
direct_access = (
|
||||||
|
self.can_reach("Tunnels to Windmill Interior", "Entrance", player)
|
||||||
|
and self.can_reach("Windmill Interior to Theater", "Entrance", player)
|
||||||
|
)
|
||||||
|
|
||||||
|
exit_to_town = self.can_reach("Theater to Town", "Entrance", player)
|
||||||
|
entrance_to_town = (
|
||||||
|
self.can_reach("Town to Windmill Interior", "Entrance", player)
|
||||||
|
and self.can_reach("Windmill Interior to Theater", "Entrance", player)
|
||||||
|
)
|
||||||
|
tunnels_to_town = self.can_reach("Tunnels to Town", "Entrance", player)
|
||||||
|
|
||||||
|
if not (direct_access or (exit_to_town or entrance_to_town) and tunnels_to_town):
|
||||||
|
valid_option = False
|
||||||
|
break
|
||||||
|
|
||||||
|
|
||||||
elif item in player_logic.EVENT_PANELS:
|
elif item in player_logic.EVENT_PANELS:
|
||||||
if not self._witness_can_solve_panel(item, world, player, player_logic, locat):
|
if not self._witness_can_solve_panel(item, world, player, player_logic, locat):
|
||||||
valid_option = False
|
valid_option = False
|
||||||
|
|
|
@ -111,6 +111,18 @@ Disabled Locations:
|
||||||
0x17E67 (Bunker UV Room 2)
|
0x17E67 (Bunker UV Room 2)
|
||||||
0x09DE0 (Bunker Laser)
|
0x09DE0 (Bunker Laser)
|
||||||
0x0A079 (Bunker Elevator Control)
|
0x0A079 (Bunker Elevator Control)
|
||||||
0x0042D (Mountaintop River Shape)
|
|
||||||
|
|
||||||
0x17CAA (River Garden Entry Panel)
|
0x17CAA (River Garden Entry Panel)
|
||||||
|
|
||||||
|
0x034A7 (Left Shutter EP)
|
||||||
|
0x034AD (Middle Shutter EP)
|
||||||
|
0x034AF (Right Shutter EP)
|
||||||
|
0x339B6 (Eclipse EP) - 0x03549 - True
|
||||||
|
0x33A29 (Window EP) - 0x03553 - True
|
||||||
|
0x33A2A (Door EP) - 0x03553 - True
|
||||||
|
0x33B06 (Church EP) - 0x0354E - True
|
||||||
|
0x3352F (Gate EP)
|
||||||
|
0x33600 (Patio Flowers EP)
|
||||||
|
0x035F5 (Tinted Door EP)
|
||||||
|
0x000D3 (Green Room Flowers EP)
|
||||||
|
0x33A20 (Theater Flowers EP)
|
|
@ -0,0 +1,136 @@
|
||||||
|
Added Locations:
|
||||||
|
0x0332B
|
||||||
|
0x03367
|
||||||
|
0x28B8A
|
||||||
|
0x037B6
|
||||||
|
0x037B2
|
||||||
|
0x000F7
|
||||||
|
0x3351D
|
||||||
|
0x0053C
|
||||||
|
0x00771
|
||||||
|
0x335C8
|
||||||
|
0x335C9
|
||||||
|
0x337F8
|
||||||
|
0x037BB
|
||||||
|
0x220E4
|
||||||
|
0x220E5
|
||||||
|
0x334B9
|
||||||
|
0x334BC
|
||||||
|
0x22106
|
||||||
|
0x0A14C
|
||||||
|
0x0A14D
|
||||||
|
0x03ABC
|
||||||
|
0x03ABE
|
||||||
|
0x03AC0
|
||||||
|
0x03AC4
|
||||||
|
0x03AC5
|
||||||
|
0x03BE2
|
||||||
|
0x03BE3
|
||||||
|
0x0A409
|
||||||
|
0x006E5
|
||||||
|
0x006E6
|
||||||
|
0x006E7
|
||||||
|
0x034A7
|
||||||
|
0x034AD
|
||||||
|
0x034AF
|
||||||
|
0x03DAB
|
||||||
|
0x03DAC
|
||||||
|
0x03DAD
|
||||||
|
0x03E01
|
||||||
|
0x289F4
|
||||||
|
0x289F5
|
||||||
|
0x0053D
|
||||||
|
0x0053E
|
||||||
|
0x00769
|
||||||
|
0x33721
|
||||||
|
0x220A7
|
||||||
|
0x220BD
|
||||||
|
0x03B22
|
||||||
|
0x03B23
|
||||||
|
0x03B24
|
||||||
|
0x03B25
|
||||||
|
0x03A79
|
||||||
|
0x28ABD
|
||||||
|
0x28ABE
|
||||||
|
0x3388F
|
||||||
|
0x28B29
|
||||||
|
0x28B2A
|
||||||
|
0x018B6
|
||||||
|
0x033BE
|
||||||
|
0x033BF
|
||||||
|
0x033DD
|
||||||
|
0x033E5
|
||||||
|
0x28AE9
|
||||||
|
0x3348F
|
||||||
|
0x001A3
|
||||||
|
0x335AE
|
||||||
|
0x000D3
|
||||||
|
0x035F5
|
||||||
|
0x09D5D
|
||||||
|
0x09D5E
|
||||||
|
0x09D63
|
||||||
|
0x3370E
|
||||||
|
0x035DE
|
||||||
|
0x03601
|
||||||
|
0x03603
|
||||||
|
0x03D0D
|
||||||
|
0x3369A
|
||||||
|
0x336C8
|
||||||
|
0x33505
|
||||||
|
0x03A9E
|
||||||
|
0x016B2
|
||||||
|
0x3365F
|
||||||
|
0x03731
|
||||||
|
0x036CE
|
||||||
|
0x03C07
|
||||||
|
0x03A93
|
||||||
|
0x03AA6
|
||||||
|
0x3397C
|
||||||
|
0x0105D
|
||||||
|
0x0A304
|
||||||
|
0x035CB
|
||||||
|
0x035CF
|
||||||
|
0x28A7B
|
||||||
|
0x005F6
|
||||||
|
0x00859
|
||||||
|
0x17CB9
|
||||||
|
0x28A4A
|
||||||
|
0x334B6
|
||||||
|
0x0069D
|
||||||
|
0x00614
|
||||||
|
0x28A4C
|
||||||
|
0x289CF
|
||||||
|
0x289D1
|
||||||
|
0x33692
|
||||||
|
0x03E77
|
||||||
|
0x03E7C
|
||||||
|
0x035C7
|
||||||
|
0x01848
|
||||||
|
0x03D06
|
||||||
|
0x33530
|
||||||
|
0x33600
|
||||||
|
0x28A2F
|
||||||
|
0x28A37
|
||||||
|
0x334A3
|
||||||
|
0x3352F
|
||||||
|
0x33857
|
||||||
|
0x33879
|
||||||
|
0x03C19
|
||||||
|
0x28B30
|
||||||
|
0x035C9
|
||||||
|
0x03335
|
||||||
|
0x03412
|
||||||
|
0x038A6
|
||||||
|
0x038AA
|
||||||
|
0x03E3F
|
||||||
|
0x03E40
|
||||||
|
0x28B8E
|
||||||
|
0x28B91
|
||||||
|
0x03BCE
|
||||||
|
0x03BCF
|
||||||
|
0x03BD1
|
||||||
|
0x339B6
|
||||||
|
0x33A20
|
||||||
|
0x33A29
|
||||||
|
0x33A2A
|
||||||
|
0x33B06
|
|
@ -0,0 +1,11 @@
|
||||||
|
Precompleted Locations:
|
||||||
|
0x335AE
|
||||||
|
0x3388F
|
||||||
|
0x33A20
|
||||||
|
0x037B2
|
||||||
|
0x000F7
|
||||||
|
0x28B29
|
||||||
|
0x33857
|
||||||
|
0x33879
|
||||||
|
0x016B2
|
||||||
|
0x036CE
|
|
@ -0,0 +1,5 @@
|
||||||
|
Precompleted Locations:
|
||||||
|
0x3397C
|
||||||
|
0x33A20
|
||||||
|
0x3352F
|
||||||
|
0x28B30
|
|
@ -0,0 +1,2 @@
|
||||||
|
Precompleted Locations:
|
||||||
|
0x339B6
|
|
@ -0,0 +1,4 @@
|
||||||
|
Precompleted Locations:
|
||||||
|
0x09D63
|
||||||
|
0x09D5D
|
||||||
|
0x09D5E
|
|
@ -0,0 +1,34 @@
|
||||||
|
Added Locations:
|
||||||
|
0xFFE00
|
||||||
|
0xFFE01
|
||||||
|
0xFFE02
|
||||||
|
0xFFE03
|
||||||
|
0xFFE04
|
||||||
|
0xFFE10
|
||||||
|
0xFFE11
|
||||||
|
0xFFE12
|
||||||
|
0xFFE13
|
||||||
|
0xFFE14
|
||||||
|
0xFFE15
|
||||||
|
0xFFE20
|
||||||
|
0xFFE21
|
||||||
|
0xFFE22
|
||||||
|
0xFFE23
|
||||||
|
0xFFE24
|
||||||
|
0xFFE25
|
||||||
|
0xFFE30
|
||||||
|
0xFFE31
|
||||||
|
0xFFE32
|
||||||
|
0xFFE33
|
||||||
|
0xFFE34
|
||||||
|
0xFFE35
|
||||||
|
0xFFE40
|
||||||
|
0xFFE41
|
||||||
|
0xFFE42
|
||||||
|
0xFFE43
|
||||||
|
0xFFE50
|
||||||
|
0xFFE51
|
||||||
|
0xFFE52
|
||||||
|
0xFFE53
|
||||||
|
0xFFE54
|
||||||
|
0xFFE55
|
|
@ -0,0 +1,6 @@
|
||||||
|
Precompleted Locations:
|
||||||
|
0x339B6
|
||||||
|
0x33A29
|
||||||
|
0x33A2A
|
||||||
|
0x33B06
|
||||||
|
0x33A20
|
|
@ -40,9 +40,11 @@ class StaticWitnessLogicObj:
|
||||||
|
|
||||||
required_panel_lambda = line_split.pop(0)
|
required_panel_lambda = line_split.pop(0)
|
||||||
|
|
||||||
|
full_check_name = current_region["shortName"] + " " + check_name
|
||||||
|
|
||||||
if location_id == "Door" or location_id == "Laser":
|
if location_id == "Door" or location_id == "Laser":
|
||||||
self.CHECKS_BY_HEX[check_hex] = {
|
self.CHECKS_BY_HEX[check_hex] = {
|
||||||
"checkName": current_region["shortName"] + " " + check_name,
|
"checkName": full_check_name,
|
||||||
"checkHex": check_hex,
|
"checkHex": check_hex,
|
||||||
"region": current_region,
|
"region": current_region,
|
||||||
"id": None,
|
"id": None,
|
||||||
|
@ -74,20 +76,38 @@ class StaticWitnessLogicObj:
|
||||||
location_type = "Vault"
|
location_type = "Vault"
|
||||||
elif check_name in laser_names:
|
elif check_name in laser_names:
|
||||||
location_type = "Laser"
|
location_type = "Laser"
|
||||||
|
elif "Obelisk Side" in check_name:
|
||||||
|
location_type = "Obelisk Side"
|
||||||
|
full_check_name = check_name
|
||||||
|
elif "EP" in check_name:
|
||||||
|
location_type = "EP"
|
||||||
|
|
||||||
|
self.EP_ID_TO_NAME[check_hex] = full_check_name
|
||||||
else:
|
else:
|
||||||
location_type = "General"
|
location_type = "General"
|
||||||
|
|
||||||
required_items = parse_lambda(required_item_lambda)
|
required_items = parse_lambda(required_item_lambda)
|
||||||
|
required_panels = parse_lambda(required_panel_lambda)
|
||||||
|
|
||||||
required_items = frozenset(required_items)
|
required_items = frozenset(required_items)
|
||||||
|
|
||||||
requirement = {
|
requirement = {
|
||||||
"panels": parse_lambda(required_panel_lambda),
|
"panels": required_panels,
|
||||||
"items": required_items
|
"items": required_items
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if location_type == "Obelisk Side":
|
||||||
|
eps = set(list(required_panels)[0])
|
||||||
|
eps -= {"Theater to Tunnels"}
|
||||||
|
|
||||||
|
eps_ints = {int(h, 16) for h in eps}
|
||||||
|
|
||||||
|
self.OBELISK_SIDE_ID_TO_EP_HEXES[int(check_hex, 16)] = eps_ints
|
||||||
|
for ep_hex in eps:
|
||||||
|
self.EP_TO_OBELISK_SIDE[ep_hex] = check_hex
|
||||||
|
|
||||||
self.CHECKS_BY_HEX[check_hex] = {
|
self.CHECKS_BY_HEX[check_hex] = {
|
||||||
"checkName": current_region["shortName"] + " " + check_name,
|
"checkName": full_check_name,
|
||||||
"checkHex": check_hex,
|
"checkHex": check_hex,
|
||||||
"region": current_region,
|
"region": current_region,
|
||||||
"id": int(location_id),
|
"id": int(location_id),
|
||||||
|
@ -108,6 +128,12 @@ class StaticWitnessLogicObj:
|
||||||
self.CHECKS_BY_NAME = dict()
|
self.CHECKS_BY_NAME = dict()
|
||||||
self.STATIC_DEPENDENT_REQUIREMENTS_BY_HEX = dict()
|
self.STATIC_DEPENDENT_REQUIREMENTS_BY_HEX = dict()
|
||||||
|
|
||||||
|
self.OBELISK_SIDE_ID_TO_EP_HEXES = dict()
|
||||||
|
|
||||||
|
self.EP_TO_OBELISK_SIDE = dict()
|
||||||
|
|
||||||
|
self.EP_ID_TO_NAME = dict()
|
||||||
|
|
||||||
self.read_logic_file(file_path)
|
self.read_logic_file(file_path)
|
||||||
|
|
||||||
|
|
||||||
|
@ -125,10 +151,16 @@ class StaticWitnessLogic:
|
||||||
ALL_REGIONS_BY_NAME = dict()
|
ALL_REGIONS_BY_NAME = dict()
|
||||||
STATIC_CONNECTIONS_BY_REGION_NAME = dict()
|
STATIC_CONNECTIONS_BY_REGION_NAME = dict()
|
||||||
|
|
||||||
|
OBELISK_SIDE_ID_TO_EP_HEXES = dict()
|
||||||
|
|
||||||
CHECKS_BY_HEX = dict()
|
CHECKS_BY_HEX = dict()
|
||||||
CHECKS_BY_NAME = dict()
|
CHECKS_BY_NAME = dict()
|
||||||
STATIC_DEPENDENT_REQUIREMENTS_BY_HEX = dict()
|
STATIC_DEPENDENT_REQUIREMENTS_BY_HEX = dict()
|
||||||
|
|
||||||
|
EP_TO_OBELISK_SIDE = dict()
|
||||||
|
|
||||||
|
EP_ID_TO_NAME = dict()
|
||||||
|
|
||||||
def parse_items(self):
|
def parse_items(self):
|
||||||
"""
|
"""
|
||||||
Parses currently defined items from WitnessItems.txt
|
Parses currently defined items from WitnessItems.txt
|
||||||
|
@ -185,6 +217,10 @@ class StaticWitnessLogic:
|
||||||
def sigma_normal(self) -> StaticWitnessLogicObj:
|
def sigma_normal(self) -> StaticWitnessLogicObj:
|
||||||
return StaticWitnessLogicObj("WitnessLogic.txt")
|
return StaticWitnessLogicObj("WitnessLogic.txt")
|
||||||
|
|
||||||
|
@lazy
|
||||||
|
def vanilla(self) -> StaticWitnessLogicObj:
|
||||||
|
return StaticWitnessLogicObj("WitnessLogicVanilla.txt")
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.parse_items()
|
self.parse_items()
|
||||||
|
|
||||||
|
@ -195,3 +231,8 @@ class StaticWitnessLogic:
|
||||||
self.CHECKS_BY_NAME.update(self.sigma_normal.CHECKS_BY_NAME)
|
self.CHECKS_BY_NAME.update(self.sigma_normal.CHECKS_BY_NAME)
|
||||||
self.STATIC_DEPENDENT_REQUIREMENTS_BY_HEX.update(self.sigma_normal.STATIC_DEPENDENT_REQUIREMENTS_BY_HEX)
|
self.STATIC_DEPENDENT_REQUIREMENTS_BY_HEX.update(self.sigma_normal.STATIC_DEPENDENT_REQUIREMENTS_BY_HEX)
|
||||||
|
|
||||||
|
self.OBELISK_SIDE_ID_TO_EP_HEXES.update(self.sigma_normal.OBELISK_SIDE_ID_TO_EP_HEXES)
|
||||||
|
|
||||||
|
self.EP_TO_OBELISK_SIDE.update(self.sigma_normal.EP_TO_OBELISK_SIDE)
|
||||||
|
|
||||||
|
self.EP_ID_TO_NAME.update(self.sigma_normal.EP_ID_TO_NAME)
|
|
@ -155,3 +155,38 @@ def get_laser_shuffle():
|
||||||
@cache_argsless
|
@cache_argsless
|
||||||
def get_audio_logs():
|
def get_audio_logs():
|
||||||
return get_adjustment_file("settings/Audio_Logs.txt")
|
return get_adjustment_file("settings/Audio_Logs.txt")
|
||||||
|
|
||||||
|
|
||||||
|
@cache_argsless
|
||||||
|
def get_ep_all_individual():
|
||||||
|
return get_adjustment_file("settings/EP_Shuffle/EP_All.txt")
|
||||||
|
|
||||||
|
|
||||||
|
@cache_argsless
|
||||||
|
def get_ep_obelisks():
|
||||||
|
return get_adjustment_file("settings/EP_Shuffle/EP_Sides.txt")
|
||||||
|
|
||||||
|
|
||||||
|
@cache_argsless
|
||||||
|
def get_ep_easy():
|
||||||
|
return get_adjustment_file("settings/EP_Shuffle/EP_Easy.txt")
|
||||||
|
|
||||||
|
|
||||||
|
@cache_argsless
|
||||||
|
def get_ep_no_eclipse():
|
||||||
|
return get_adjustment_file("settings/EP_Shuffle/EP_NoEclipse.txt")
|
||||||
|
|
||||||
|
|
||||||
|
@cache_argsless
|
||||||
|
def get_ep_no_caves():
|
||||||
|
return get_adjustment_file("settings/EP_Shuffle/EP_NoCavesEPs.txt")
|
||||||
|
|
||||||
|
|
||||||
|
@cache_argsless
|
||||||
|
def get_ep_no_mountain():
|
||||||
|
return get_adjustment_file("settings/EP_Shuffle/EP_NoMountainEPs.txt")
|
||||||
|
|
||||||
|
|
||||||
|
@cache_argsless
|
||||||
|
def get_ep_no_videos():
|
||||||
|
return get_adjustment_file("settings/EP_Shuffle/EP_Videos.txt")
|
Loading…
Reference in New Issue