Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The Witness: Big™ new™ content update™ #2114

Merged
merged 252 commits into from
Nov 24, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
252 commits
Select commit Hold shift + click to select a range
d521ca8
Reworked doors settings files
NewSoupVi Jul 14, 2023
602e100
More doors rework stuff
NewSoupVi Jul 14, 2023
c2d1ac0
Postgame rework: Now excludes door items
NewSoupVi Jul 15, 2023
ad9120e
Postgame refactor complete
NewSoupVi Jul 15, 2023
3dfd47a
Made it actually only trigger when it's supposed to
NewSoupVi Jul 15, 2023
7ba3e0e
fixed some mountain postgame thing
NewSoupVi Jul 15, 2023
e42cba8
Vi pls
NewSoupVi Jul 15, 2023
c3297fe
another fix
NewSoupVi Jul 15, 2023
f9080ef
fixed unit tests related to unreachable regions
NewSoupVi Jul 15, 2023
1252370
Forgot a region
NewSoupVi Jul 15, 2023
22f9bfa
Make some of the disable_non_randomized stuff logical again
NewSoupVi Jul 16, 2023
6e9c4e3
Discards and Vaults are disabled if they are not shuffled
NewSoupVi Jul 16, 2023
5086046
That's how I was supposed to do that
NewSoupVi Jul 16, 2023
7791de6
Excluded EPs are now removed from the location list
NewSoupVi Jul 16, 2023
2eb8f3c
Fixed disable non randomized not genning
NewSoupVi Jul 16, 2023
46304bb
Fix non-existing doors showing up in slot_data
NewSoupVi Jul 16, 2023
2d14278
Fix disable non randomized activation triggers
NewSoupVi Jul 16, 2023
8ddd725
make town tall hexagonal not a logical option anymore
NewSoupVi Jul 16, 2023
897207b
better disable non randomized explanation
NewSoupVi Jul 16, 2023
8512ec7
Add new doors lists
NewSoupVi Jul 18, 2023
c980c52
Doors rework finished apart from looking back over simple doors
NewSoupVi Jul 18, 2023
07f27ec
Fixed duplicated item ID
NewSoupVi Jul 19, 2023
e62447f
Added some more doors to the disabled list in unrandomized
NewSoupVi Jul 21, 2023
2cb097b
Added some disabled doors
NewSoupVi Jul 21, 2023
d8e1c8d
bump data version
NewSoupVi Jul 24, 2023
e0df03a
That elevator is in the caves, you dummy
NewSoupVi Jul 24, 2023
4b206b5
Treehouse laser Discard was missed
NewSoupVi Jul 24, 2023
3293371
Precomplete Gate EP in non vault shuffle
NewSoupVi Jul 24, 2023
52f34ca
Gate close as well
NewSoupVi Jul 24, 2023
2aa72bf
Monastery shutters control disable
NewSoupVi Jul 24, 2023
419a485
Remove the boathouse doors from panels (lol)
NewSoupVi Jul 25, 2023
a878314
Fixed wrongly referenced panel
NewSoupVi Jul 25, 2023
591eeef
Brought back Discards from the graveyard
NewSoupVi Jul 25, 2023
42eb2af
Remove 'Control' from non-control panels
NewSoupVi Jul 25, 2023
553d939
add missing locations
NewSoupVi Jul 25, 2023
f2075d0
Who would win in a fight 10 years of programming experience or one co…
NewSoupVi Jul 25, 2023
9820c0b
You're not control panels what are you doing in there
NewSoupVi Jul 25, 2023
df2e6c1
Merge remote-tracking branch 'upstream/main' into doors_rework
NewSoupVi Jul 25, 2023
5345f89
Get outta here, Monastery Laser Panel
NewSoupVi Jul 26, 2023
16eb0e4
Get outta here, Shadows Doors
NewSoupVi Jul 26, 2023
a6a36bf
Fixed Platform Shortcut Right not requiring Left
NewSoupVi Jul 26, 2023
43d6a2e
Fixed Monastery Laser still wanting Monastery LAser Panel
NewSoupVi Jul 27, 2023
21ac190
More renaming
NewSoupVi Jul 27, 2023
e0aa9bc
Another rename
NewSoupVi Jul 27, 2023
2738e5c
Halfway through the simple rework
NewSoupVi Jul 31, 2023
c3bf9a3
Merge remote-tracking branch 'upstream/main' into doors_rework
NewSoupVi Jul 31, 2023
83a239e
Doors Simple Rework
NewSoupVi Jul 31, 2023
bc195b1
Added more locations to caves
NewSoupVi Jul 31, 2023
09431d3
Mark more doors as non-progression
NewSoupVi Jul 31, 2023
490efdd
Lasers skip prog bal
NewSoupVi Jul 31, 2023
3fd061d
Disabled EPs are disabled now, notion of 'precompleted' has been removed
NewSoupVi Jul 31, 2023
5a5eda9
Outdated refs to panels are now entities
NewSoupVi Jul 31, 2023
d21bc23
check_name -> entity_name
NewSoupVi Jul 31, 2023
987f659
Seperated Caves doors into doors and shortcuts, renamed Caves Exits t…
NewSoupVi Jul 31, 2023
cc0bf7b
If it ain't broke, don't fix it
NewSoupVi Aug 3, 2023
0e1facc
Don't just disable every EP what
NewSoupVi Aug 4, 2023
21cfaf6
Oh, that's why I did that.
NewSoupVi Aug 4, 2023
0816352
Forgor an obelisk
NewSoupVi Aug 4, 2023
5e34952
!= to ==
NewSoupVi Aug 4, 2023
c0d51ca
add to update
NewSoupVi Aug 4, 2023
f0bf6e6
Fixed one-way logic for elevators and added elevators_come_to_you option
NewSoupVi Aug 4, 2023
831eb36
Purple Sand Bottom needs to no longer be sphere 1 in elevators_come_t…
NewSoupVi Aug 4, 2023
da38d61
Bunker Elevator connects back to Bunker Elevator Section via the cont…
NewSoupVi Aug 4, 2023
506c84b
Doing the same thing in three files is hard ok
NewSoupVi Aug 4, 2023
2483fa4
Those panel items are not lasers you fool
NewSoupVi Aug 4, 2023
65f09f1
Early Caves: 'add to pool' option
NewSoupVi Aug 5, 2023
5b91263
Better comment
NewSoupVi Aug 5, 2023
1ac8ffc
Downgrade some more panels from progression to useful in certain modes
NewSoupVi Aug 5, 2023
a6cc1df
Town Red Roof backwards to Maze Roof in Bridges Come To You. Will onl…
NewSoupVi Aug 5, 2023
6dc0a62
Option tooltip clarity
NewSoupVi Aug 5, 2023
db0f9f2
Option tooltip for hints
NewSoupVi Aug 5, 2023
aef4d29
Removed an old unnecessary line
NewSoupVi Aug 5, 2023
48687c3
Fixed some wrong item classifications
NewSoupVi Aug 5, 2023
5943d28
Fix for error in get_early_items when removing plandoed items.
blastron Jul 27, 2023
5f2e200
Fix for plando crashes.
blastron Aug 7, 2023
a76148a
Merge branch 'ArchipelagoMW:main' into main
blastron Aug 7, 2023
70a56c2
Merge branch 'main' into doors_rework
blastron Aug 7, 2023
a364b51
Added some more panels to panels
NewSoupVi Aug 10, 2023
b47d0fc
Merge branch 'doors_rework' of https://github.com/NewSoupVi/Archipela…
NewSoupVi Aug 10, 2023
3a1e2fb
Add player name to the warnings about itempool size
NewSoupVi Aug 10, 2023
da3ef63
bump required client version
NewSoupVi Aug 20, 2023
e87a5b8
Add Monastery Shortcut Door to disabled entities in disable non rando…
NewSoupVi Aug 20, 2023
2d87552
Fix Windmill Entry being in two regional groups
NewSoupVi Aug 20, 2023
09ed845
Got the wrong door
NewSoupVi Aug 20, 2023
e515377
Removed redundant door in disable_non_randomized exclusion list
NewSoupVi Aug 20, 2023
424ef83
More hopefully sensible renaming
NewSoupVi Aug 20, 2023
fef2c22
Added Cargo Box entry to doors: panels
NewSoupVi Aug 20, 2023
3bae972
Forgot some 'laser shortcut's
NewSoupVi Aug 20, 2023
abb0ab9
Forgot some 'laser shortcut's
NewSoupVi Aug 20, 2023
2135c8b
add extra sphere 1 locations if settings are really restrictive
NewSoupVi Sep 6, 2023
f383738
Merge remote-tracking branch 'upstream/main' into doors_rework
NewSoupVi Sep 6, 2023
e87659d
Wrong desert panel
NewSoupVi Sep 6, 2023
d46a551
Swap order of added Tutorial checks
NewSoupVi Sep 6, 2023
5025445
Move event creation earlier
NewSoupVi Sep 7, 2023
760c793
Sweep for events first to determine early locations size, not sphere …
NewSoupVi Sep 7, 2023
98d6015
Place Puzzle Skip and good item earlier
NewSoupVi Sep 7, 2023
281a376
Wrong Door²
NewSoupVi Sep 9, 2023
93f07b8
Fixed postgame problem with Caves Entry
NewSoupVi Sep 9, 2023
43ba2fb
Don't even know how to explain this one
NewSoupVi Sep 10, 2023
79bcce7
Added Theater Video Input to disable_non_randomized list
NewSoupVi Sep 11, 2023
d9f1125
Update EP_All.txt
Exempt-Medic Sep 11, 2023
c3e5f0b
Update EP_Easy.txt
Exempt-Medic Sep 11, 2023
c6363b4
Update EP_NoEclipse.txt
Exempt-Medic Sep 11, 2023
b518c66
Update EP_Sides.txt
Exempt-Medic Sep 11, 2023
f9f63bc
Update Disable_Unrandomized.txt
Exempt-Medic Sep 11, 2023
762e4f5
Update Discards.txt
Exempt-Medic Sep 11, 2023
a60e7b1
Update Vaults.txt
Exempt-Medic Sep 11, 2023
c477ed6
Update Disable_Unrandomized.txt
Exempt-Medic Sep 11, 2023
bd33194
Update Discards.txt
Exempt-Medic Sep 11, 2023
c3caa59
Update Vaults.txt
Exempt-Medic Sep 11, 2023
acc3799
Update Beyond_Challenge.txt
Exempt-Medic Sep 11, 2023
6422ee8
Update Bottom_Floor_Discard.txt
Exempt-Medic Sep 11, 2023
a1496f9
Update Caves.txt
Exempt-Medic Sep 11, 2023
f79f856
Update Challenge_Vault_Box.txt
Exempt-Medic Sep 11, 2023
e3f6d04
Update Mountain_Lower.txt
Exempt-Medic Sep 11, 2023
a489fc6
Update Path_To_Challenge.txt
Exempt-Medic Sep 11, 2023
b77dffd
Update Mountain_Upper.txt
Exempt-Medic Sep 11, 2023
8101c0b
Update Beyond_Challenge.txt
Exempt-Medic Sep 11, 2023
5d35214
Update Bottom_Floor_Discard_NonDoors.txt
Exempt-Medic Sep 11, 2023
049b6fe
Quarry Stoneworks logic fix + Add Obelisk IDs to Logic files
NewSoupVi Sep 11, 2023
01f828d
Merge remote-tracking branch 'upstream/main' into doors_rework
NewSoupVi Sep 11, 2023
1dfbd91
Stoneworks events and renaming/refactoring of disabled_locations into…
NewSoupVi Sep 15, 2023
6aa1bbf
No more duplicate hints, new hintable items
NewSoupVi Sep 15, 2023
9db5fda
Removed a non existent item from hints. Made it so the same item can …
NewSoupVi Sep 16, 2023
df783d5
Added Mountain Bottom Floor Doors to always
NewSoupVi Sep 16, 2023
67d94a6
Merge remote-tracking branch 'upstream/main' into doors_rework
NewSoupVi Sep 16, 2023
a3002f3
Small logic fix for Town Church Entry Panel
NewSoupVi Sep 16, 2023
81fe709
Changed unnecessarily restrictive logic detail
NewSoupVi Sep 18, 2023
1673440
Fix unnecessarily restrictive Expert RGB House Green EP logic
NewSoupVi Sep 19, 2023
8113395
Made it so Vaults and Discards can be properly excluded as well
NewSoupVi Sep 23, 2023
b5c2f6e
Taking Control out of some more non control panel names
NewSoupVi Sep 23, 2023
ffcac79
Merge pull request #12 from Exempt-Medic/doors_rework
NewSoupVi Sep 24, 2023
84e35c1
Don't read entire line for irrelevant locations, just the entity hex …
NewSoupVi Sep 27, 2023
a9fff12
Add Mountain Bridge EPs to EP normal exclusion list
NewSoupVi Sep 30, 2023
2ca6726
Fix Pink Bridge EP incorrect region connection
NewSoupVi Sep 30, 2023
45d4a3e
Changed some slightly wacky but not broken Symmetry Island logic
NewSoupVi Sep 30, 2023
d3d02b7
Removed completely unnecessary connection in Jungle
NewSoupVi Sep 30, 2023
5213e37
Removed duplicate connection in Bunker
NewSoupVi Sep 30, 2023
a0e2f0e
Added explicit vault regions (future-proofing)
NewSoupVi Sep 30, 2023
af6c204
comma
NewSoupVi Sep 30, 2023
914234f
Fix faulty region connection in Expert
NewSoupVi Sep 30, 2023
05d4458
Fixed faulty vault door name & added vault doors to vault shuffle exc…
NewSoupVi Sep 30, 2023
28aac32
Moved Blue&Yellow Bridge EPs to the correct region
NewSoupVi Sep 30, 2023
828888e
Technically correct is the best kind of correct
NewSoupVi Sep 30, 2023
e45151e
Added Challenge Vault Door to another Exclusion List it was missing from
NewSoupVi Sep 30, 2023
5783996
Expert: Fix wrong door id for Shipwreck Vault Door
NewSoupVi Oct 5, 2023
6c56c54
Vanilla: Fix wrong door id for Shipwreck Vault Door
NewSoupVi Oct 5, 2023
1106dd7
Vanilla: Fix reference to wrong panel on Shipwreck Vault
NewSoupVi Oct 5, 2023
d711768
Expert: Fixed reference to wrong panel on Shipwreck Vault
NewSoupVi Oct 5, 2023
fd67aad
Add player name to warning
NewSoupVi Oct 5, 2023
ede6f6a
Fix Mountain Floor 1 region logic in preparation for warps
NewSoupVi Oct 5, 2023
efe2973
Added some missing boat connections
NewSoupVi Oct 5, 2023
abc6fe3
Merge branch 'doors_rework' of https://github.com/NewSoupVi/Archipela…
NewSoupVi Oct 5, 2023
71c67ff
added another missing connection in preparation for warps
NewSoupVi Oct 5, 2023
c2cef7a
Merge remote-tracking branch 'upstream/main' into doors_rework
NewSoupVi Oct 5, 2023
213870e
added a slightly advanced connection in Swamp in preparation for warps
NewSoupVi Oct 5, 2023
6259694
Fixed TrueOneWay not being one-way in a 'new connection' adjustment
NewSoupVi Oct 5, 2023
9fc697b
Disable Discards if they are off AND none of their activation trigger…
NewSoupVi Oct 7, 2023
41a4c54
Actually, let's do that in a different place
NewSoupVi Oct 7, 2023
fd8a4c3
No, this is most sensible I think
NewSoupVi Oct 7, 2023
87a06a8
Add missing panel to disable_non_randomized exclusion list
NewSoupVi Oct 12, 2023
1bc7af5
Fixed inconsistent naming on Bridge control panels
NewSoupVi Oct 12, 2023
1c3c5bb
Fixed inconsistent pluralisation on multi-panel control panels
NewSoupVi Oct 12, 2023
4ecfb06
Fixed inconsistent use of & vs /, and spacing around those characters…
NewSoupVi Oct 12, 2023
a2806ae
Town Windmill & Theater Doors renamed to Windmill & Theater Doors
NewSoupVi Oct 12, 2023
df7f61a
Require Bunker Glass Room Entry to view solutions through the tinted …
NewSoupVi Oct 17, 2023
ea03b60
Merge branch 'main' into doors_rework
NewSoupVi Oct 18, 2023
23566f4
Move to self.options. Fix many world/multiworld confusions.
NewSoupVi Oct 18, 2023
2632dfd
More type hints
NewSoupVi Oct 18, 2023
c12476f
More type hints
NewSoupVi Oct 18, 2023
528e7fb
More cleanup
NewSoupVi Oct 18, 2023
0332d19
More cleanup
NewSoupVi Oct 18, 2023
8e5ea95
Import cleanup
NewSoupVi Oct 18, 2023
961d9dd
Find&Replace is one hell of a drug
NewSoupVi Oct 19, 2023
9fab284
Keep track of local itempool as to not have to use 'find' methods in …
NewSoupVi Oct 19, 2023
b75cfa4
Keep local references of locked items
NewSoupVi Oct 19, 2023
b0e3457
This line doesn't need to wrap anymore now
NewSoupVi Oct 19, 2023
3760189
Don't hint event items
NewSoupVi Oct 19, 2023
64d131f
Seperate Desert Laser & Desert Elevator. Bump required client version.
NewSoupVi Oct 19, 2023
0d45b6e
Made it so some unnecessary events aren't created, decluttering the s…
NewSoupVi Oct 20, 2023
ca71c20
Remove the last remaining traces of multiworld.per_slot_randoms
NewSoupVi Oct 21, 2023
6b4d5c6
Merge remote-tracking branch 'upstream/main' into doors_rework
NewSoupVi Oct 22, 2023
c768ad1
door_hexes_in_the_pool should not include disabled doors
NewSoupVi Oct 23, 2023
8bc25e2
Nevermind, I'm gonna address this client side
NewSoupVi Oct 23, 2023
7af1ed9
Fix plando from_pool crashing because of hints
NewSoupVi Oct 24, 2023
3ed4363
Get rid of a lot of region fetching from multiworld
NewSoupVi Oct 24, 2023
03632e3
Cache locations for set_rules. Make 'Menu' region explicit in Witness…
NewSoupVi Oct 24, 2023
749a40c
Improve caching further, with defaultdict
NewSoupVi Oct 25, 2023
937c508
Why is that in there
NewSoupVi Oct 25, 2023
16736f1
remove unnecessary requirement
NewSoupVi Oct 27, 2023
a480c69
Fix merge conflict
NewSoupVi Oct 30, 2023
ad6cde2
Merge branch 'main' into doors_rework
NewSoupVi Nov 3, 2023
1c60164
Revamped requirements / region system
NewSoupVi Nov 4, 2023
a9a7d14
Begone, LogicMixin
NewSoupVi Nov 4, 2023
6b0ad37
Begone, linter exception
NewSoupVi Nov 4, 2023
bf408cb
Don't define that over and over
NewSoupVi Nov 4, 2023
24aa392
Make the linter happy
NewSoupVi Nov 4, 2023
a8908cf
fix entrance checking
NewSoupVi Nov 4, 2023
75d7dd3
Mountain Longbox fix
NewSoupVi Nov 4, 2023
1b7f1ac
Caching go brr
NewSoupVi Nov 4, 2023
e3de0c8
Type checking
NewSoupVi Nov 5, 2023
7de73d0
Sorry Phar
NewSoupVi Nov 5, 2023
f28f422
Begone, get_option_value
NewSoupVi Nov 5, 2023
17e1a30
Fix slot_data
NewSoupVi Nov 5, 2023
1db3988
Missed a spot
NewSoupVi Nov 5, 2023
a9fb20e
Accurately describe two-sided doors now that the system supports it
NewSoupVi Nov 5, 2023
2e59f1b
Maybe don't break things
NewSoupVi Nov 5, 2023
729b1fb
That was the wrong panel
NewSoupVi Nov 5, 2023
430a209
Correct Shadows Laser Room logic in anticipation of warps
NewSoupVi Nov 5, 2023
0456364
600 Recursive function calls vs 1 cache-y boi
NewSoupVi Nov 5, 2023
025a5db
Bruh
NewSoupVi Nov 5, 2023
9f72683
Whut
NewSoupVi Nov 5, 2023
3952cf3
What if we kissed on the Bunker Laser Platform jk unless
NewSoupVi Nov 5, 2023
91b6a5e
Bruh
NewSoupVi Nov 5, 2023
bb5f370
Fix progressive items thinking they only ever need one copy
NewSoupVi Nov 5, 2023
3f1a004
Oops I broke expert
NewSoupVi Nov 5, 2023
60e78fa
remove redundant requirements
NewSoupVi Nov 5, 2023
6c687d3
small cleanups
NewSoupVi Nov 5, 2023
6bf3901
This is cleaner
NewSoupVi Nov 5, 2023
4c46661
Even cleaner
NewSoupVi Nov 5, 2023
b11a9b7
This function was now unused
NewSoupVi Nov 5, 2023
0b0f47f
Change the rule creation system so it's lambdas all the way down
NewSoupVi Nov 5, 2023
6cf527f
Bit more reorganising
NewSoupVi Nov 5, 2023
4afe4a2
Lengthy debugging vs one >= boi
NewSoupVi Nov 5, 2023
ef36f09
bruh
NewSoupVi Nov 5, 2023
cb7a384
Bunch more renaming
NewSoupVi Nov 5, 2023
8bd2d17
this line is short enough now
NewSoupVi Nov 5, 2023
1a41b04
Getting rid of useless import
NewSoupVi Nov 5, 2023
bbe3a1b
Another docstring
NewSoupVi Nov 5, 2023
e7156af
,
NewSoupVi Nov 5, 2023
c033666
Move TrueOneWay check to connect_if_possible
NewSoupVi Nov 5, 2023
51bc9c3
comment
NewSoupVi Nov 5, 2023
0788f87
oops
NewSoupVi Nov 5, 2023
a6235b9
Remove unused function
NewSoupVi Nov 5, 2023
bd009e8
Remove another instance of explicitly checking for TrueOneWay in a ba…
NewSoupVi Nov 5, 2023
24e2925
This connection is unnecessary now
NewSoupVi Nov 6, 2023
901f7da
Merge branch 'main' into doors_rework
NewSoupVi Nov 6, 2023
aac7af9
Changed some mentions of StaticWitnessLogic to reference_logic
NewSoupVi Nov 7, 2023
745f5f9
Merge branch 'doors_rework' of https://github.com/NewSoupVi/Archipela…
NewSoupVi Nov 7, 2023
5ae19b5
Merge remote-tracking branch 'upstream/main' into doors_rework
NewSoupVi Nov 8, 2023
d3161f9
Merge branch 'main' into doors_rework
NewSoupVi Nov 11, 2023
03a51e4
These need to be in here as bools
NewSoupVi Nov 15, 2023
7e43378
Merge branch 'doors_rework' of https://github.com/NewSoupVi/Archipela…
NewSoupVi Nov 15, 2023
0e74e19
remove unnecessary import
NewSoupVi Nov 15, 2023
ad8c9ac
remove caches that are taken care of by core now
NewSoupVi Nov 16, 2023
b97f14f
Fix some remaining instances of using the caches
NewSoupVi Nov 16, 2023
c5dfab5
Remove colored squares from Bunker Entry Panel
NewSoupVi Nov 20, 2023
185e790
Take care of unreachable regions ourselves
NewSoupVi Nov 22, 2023
93e4bdd
remove dat comma
NewSoupVi Nov 22, 2023
65f0b5f
Ok let's not be dumb
NewSoupVi Nov 22, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
126 changes: 68 additions & 58 deletions worlds/witness/Options.py
Original file line number Diff line number Diff line change
@@ -1,23 +1,25 @@
from typing import Dict, Union
from BaseClasses import MultiWorld
from Options import Toggle, DefaultOnToggle, Range, Choice
from dataclasses import dataclass
from Options import Toggle, DefaultOnToggle, Range, Choice, PerGameCommonOptions


# class HardMode(Toggle):
# "Play the randomizer in hardmode"
# display_name = "Hard Mode"

class DisableNonRandomizedPuzzles(Toggle):
"""Disables puzzles that cannot be randomized.
This includes many puzzles that heavily involve the environment, such as Shadows, Monastery or Orchard.
The lasers for those areas will be activated as you solve optional puzzles throughout the island."""
The lasers for those areas will activate as you solve optional puzzles, such as Discarded Panels.
Additionally, the panels activating Monastery Laser and Jungle Popup Wall will be on from the start."""
display_name = "Disable non randomized puzzles"


class EarlySecretArea(Toggle):
"""Opens the Mountainside shortcut to the Caves from the start.
(Otherwise known as "UTM", "Caves" or the "Challenge Area")"""
class EarlyCaves(Choice):
"""Adds an item that opens the Caves Shortcuts to Swamp and Mountain,
allowing early access to the Caves even if you are not playing a remote Door Shuffle mode.
You can either add this item to the pool to be found on one of your randomized checks,
or you can outright start with it and have immediate access to the Caves.
If you choose "add_to_pool" and you are already playing a remote Door Shuffle mode, this setting will do nothing."""
display_name = "Early Caves"
option_off = 0
option_add_to_pool = 1
option_starting_inventory = 2


class ShuffleSymbols(DefaultOnToggle):
Expand All @@ -34,27 +36,41 @@ class ShuffleLasers(Toggle):


class ShuffleDoors(Choice):
"""If on, opening doors will require their respective "keys".
If set to "panels", those keys will unlock the panels on doors.
In "doors_simple" and "doors_complex", the doors will magically open by themselves upon receiving the key.
The last option, "max", is a combination of "doors_complex" and "panels"."""
"""If on, opening doors, moving bridges etc. will require a "key".
If set to "panels", the panel on the door will be locked until receiving its corresponding key.
If set to "doors", the door will open immediately upon receiving its key. Door panels are added as location checks.
"Mixed" includes all doors from "doors", and all control panels (bridges, elevators etc.) from "panels"."""
display_name = "Shuffle Doors"
option_none = 0
option_off = 0
option_panels = 1
option_doors_simple = 2
option_doors_complex = 3
option_max = 4
option_doors = 2
option_mixed = 3


class DoorGroupings(Choice):
"""If set to "none", there will be one key for every door, resulting in up to 120 keys being added to the item pool.
If set to "regional", all doors in the same general region will open at once with a single key,
reducing the amount of door items and complexity."""
display_name = "Door Groupings"
option_off = 0
option_regional = 1


class ShuffleBoat(DefaultOnToggle):
"""If set, adds a "Boat" item to the item pool. Before receiving this item, you will not be able to use the boat."""
display_name = "Shuffle Boat"


class ShuffleDiscardedPanels(Toggle):
"""Add Discarded Panels into the location pool.
Solving certain Discarded Panels may still be necessary to beat the game, even if this is off."""
Solving certain Discarded Panels may still be necessary to beat the game, even if this is off - The main example
of this being the alternate activation triggers in disable_non_randomized."""

display_name = "Shuffle Discarded Panels"


class ShuffleVaultBoxes(Toggle):
"""Vault Boxes will have items on them."""
"""Add Vault Boxes to the location pool."""
display_name = "Shuffle Vault Boxes"


Expand Down Expand Up @@ -132,6 +148,12 @@ class ChallengeLasers(Range):
default = 11


class ElevatorsComeToYou(Toggle):
"""If true, the Quarry Elevator, Bunker Elevator and Swamp Long Bridge will "come to you" if you approach them.
This does actually affect logic as it allows unintended backwards / early access into these areas."""
display_name = "All Bridges & Elevators come to you"


class TrapPercentage(Range):
"""Replaces junk items with traps, at the specified rate."""
display_name = "Trap Percentage"
Expand All @@ -150,8 +172,8 @@ class PuzzleSkipAmount(Range):


class HintAmount(Range):
"""Adds hints to Audio Logs. Hints will have the same number of duplicates, as many as will fit. Remaining Audio
Logs will have junk hints."""
"""Adds hints to Audio Logs. If set to a low amount, up to 2 additional duplicates of each hint will be added.
Remaining Audio Logs will have junk hints."""
display_name = "Hints on Audio Logs"
range_start = 0
range_end = 49
Expand All @@ -164,38 +186,26 @@ class DeathLink(Toggle):
display_name = "Death Link"


the_witness_options: Dict[str, type] = {
"puzzle_randomization": PuzzleRandomization,
"shuffle_symbols": ShuffleSymbols,
"shuffle_doors": ShuffleDoors,
"shuffle_lasers": ShuffleLasers,
"disable_non_randomized_puzzles": DisableNonRandomizedPuzzles,
"shuffle_discarded_panels": ShuffleDiscardedPanels,
"shuffle_vault_boxes": ShuffleVaultBoxes,
"shuffle_EPs": ShuffleEnvironmentalPuzzles,
"EP_difficulty": EnvironmentalPuzzlesDifficulty,
"shuffle_postgame": ShufflePostgame,
"victory_condition": VictoryCondition,
"mountain_lasers": MountainLasers,
"challenge_lasers": ChallengeLasers,
"early_secret_area": EarlySecretArea,
"trap_percentage": TrapPercentage,
"puzzle_skip_amount": PuzzleSkipAmount,
"hint_amount": HintAmount,
"death_link": DeathLink,
}


def is_option_enabled(world: MultiWorld, player: int, name: str) -> bool:
return get_option_value(world, player, name) > 0


def get_option_value(world: MultiWorld, player: int, name: str) -> Union[bool, int]:
option = getattr(world, name, None)

if option is None:
return 0

if issubclass(the_witness_options[name], Toggle) or issubclass(the_witness_options[name], DefaultOnToggle):
return bool(option[player].value)
return option[player].value
@dataclass
class TheWitnessOptions(PerGameCommonOptions):
puzzle_randomization: PuzzleRandomization
shuffle_symbols: ShuffleSymbols
shuffle_doors: ShuffleDoors
door_groupings: DoorGroupings
shuffle_boat: ShuffleBoat
shuffle_lasers: ShuffleLasers
disable_non_randomized_puzzles: DisableNonRandomizedPuzzles
shuffle_discarded_panels: ShuffleDiscardedPanels
shuffle_vault_boxes: ShuffleVaultBoxes
shuffle_EPs: ShuffleEnvironmentalPuzzles
EP_difficulty: EnvironmentalPuzzlesDifficulty
shuffle_postgame: ShufflePostgame
victory_condition: VictoryCondition
mountain_lasers: MountainLasers
challenge_lasers: ChallengeLasers
early_caves: EarlyCaves
elevators_come_to_you: ElevatorsComeToYou
trap_percentage: TrapPercentage
puzzle_skip_amount: PuzzleSkipAmount
hint_amount: HintAmount
death_link: DeathLink
115 changes: 90 additions & 25 deletions worlds/witness/WitnessItems.txt
Original file line number Diff line number Diff line change
Expand Up @@ -37,22 +37,42 @@ Jokes:

Doors:
1100 - Glass Factory Entry (Panel) - 0x01A54
1101 - Tutorial Outpost Entry (Panel) - 0x0A171
1102 - Tutorial Outpost Exit (Panel) - 0x04CA4
1105 - Symmetry Island Lower (Panel) - 0x000B0
1107 - Symmetry Island Upper (Panel) - 0x1C349
1110 - Desert Light Room Entry (Panel) - 0x0C339
1111 - Desert Flood Controls (Panel) - 0x1C2DF,0x1831E,0x1C260,0x1831C,0x1C2F3,0x1831D,0x1C2B1,0x1831B
1112 - Desert Light Control (Panel) - 0x09FAA
1113 - Desert Flood Room Entry (Panel) - 0x0A249
1115 - Quarry Elevator Control (Panel) - 0x17CC4
1117 - Quarry Entry 1 (Panel) - 0x09E57
1118 - Quarry Entry 2 (Panel) - 0x17C09
1119 - Quarry Stoneworks Entry (Panel) - 0x01E5A,0x01E59
1120 - Quarry Stoneworks Ramp Controls (Panel) - 0x03678,0x03676
1122 - Quarry Stoneworks Lift Controls (Panel) - 0x03679,0x03675
1125 - Quarry Boathouse Ramp Height Control (Panel) - 0x03852
1127 - Quarry Boathouse Ramp Horizontal Control (Panel) - 0x03858
1129 - Quarry Boathouse Hook Control (Panel) - 0x275FA
1131 - Shadows Door Timer (Panel) - 0x334DB,0x334DC
1140 - Keep Hedge Maze 1 (Panel) - 0x00139
1142 - Keep Hedge Maze 2 (Panel) - 0x019DC
1144 - Keep Hedge Maze 3 (Panel) - 0x019E7
1146 - Keep Hedge Maze 4 (Panel) - 0x01A0F
1150 - Monastery Entry Left (Panel) - 0x00B10
1151 - Monastery Entry Right (Panel) - 0x00C92
1162 - Town Tinted Glass Door (Panel) - 0x28998
1156 - Monastery Shutters Control (Panel) - 0x09D9B
1162 - Town RGB House Entry (Panel) - 0x28998
1163 - Town Church Entry (Panel) - 0x28A0D
1166 - Town Maze Panel (Drop-Down Staircase) (Panel) - 0x28A79
1169 - Windmill Entry (Panel) - 0x17F5F
1164 - Town RGB Control (Panel) - 0x334D8
1166 - Town Maze Stairs (Panel) - 0x28A79
1167 - Town Maze Rooftop Bridge (Panel) - 0x2896A
1169 - Town Windmill Entry (Panel) - 0x17F5F
1172 - Town Cargo Box Entry (Panel) - 0x0A0C8
1182 - Windmill Turn Control (Panel) - 0x17D02
1184 - Theater Entry (Panel) - 0x17F89
1185 - Theater Video Input (Panel) - 0x00815
1189 - Theater Exit (Panel) - 0x0A168,0x33AB2
1200 - Treehouse First & Second Doors (Panel) - 0x0288C,0x02886
1202 - Treehouse Third Door (Panel) - 0x0A182
1205 - Treehouse Laser House Door Timer (Panel) - 0x2700B,0x17CBC
Expand All @@ -61,10 +81,24 @@ Doors:
1180 - Bunker Entry (Panel) - 0x17C2E
1183 - Bunker Tinted Glass Door (Panel) - 0x0A099
1186 - Bunker Elevator Control (Panel) - 0x0A079
1188 - Bunker Drop-Down Door Controls (Panel) - 0x34BC5,0x34BC6
1190 - Swamp Entry (Panel) - 0x0056E
1192 - Swamp Sliding Bridge (Panel) - 0x00609,0x18488
1194 - Swamp Platform Shortcut (Panel) - 0x17C0D
1195 - Swamp Rotating Bridge (Panel) - 0x181F5
1197 - Swamp Maze Control (Panel) - 0x17C0A,0x17E07
1196 - Swamp Long Bridge (Panel) - 0x17E2B
1197 - Swamp Maze Controls (Panel) - 0x17C0A,0x17E07
1220 - Mountain Floor 1 Light Bridge (Panel) - 0x09E39
1225 - Mountain Floor 2 Light Bridge Near (Panel) - 0x09E86
1230 - Mountain Floor 2 Light Bridge Far (Panel) - 0x09ED8
1235 - Mountain Floor 2 Elevator Control (Panel) - 0x09EEB
1240 - Caves Entry (Panel) - 0x00FF8
1242 - Caves Elevator Controls (Panel) - 0x335AB,0x335AC,0x3369D
1245 - Challenge Entry (Panel) - 0x0A16E
1250 - Tunnels Entry (Panel) - 0x039B4
1255 - Tunnels Town Shortcut (Panel) - 0x09E85


1310 - Boat - 0x17CDF,0x17CC8,0x17CA6,0x09DB8,0x17C95,0x0A054

1400 - Caves Mountain Shortcut (Door) - 0x2D73F
Expand All @@ -82,6 +116,7 @@ Doors:
1624 - Desert Pond Room Entry (Door) - 0x0C2C3
1627 - Desert Flood Room Entry (Door) - 0x0A24B
1630 - Desert Elevator Room Entry (Door) - 0x0C316
1631 - Desert Elevator (Door) - 0x01317
1633 - Quarry Entry 1 (Door) - 0x09D6F
1636 - Quarry Entry 2 (Door) - 0x17C07
1639 - Quarry Stoneworks Entry (Door) - 0x02010
Expand Down Expand Up @@ -109,13 +144,13 @@ Doors:
1699 - Keep Pressure Plates 4 Exit (Door) - 0x01D40
1702 - Keep Shadows Shortcut (Door) - 0x09E3D
1705 - Keep Tower Shortcut (Door) - 0x04F8F
1708 - Monastery Shortcut (Door) - 0x0364E
1708 - Monastery Laser Shortcut (Door) - 0x0364E
1711 - Monastery Entry Inner (Door) - 0x0C128
1714 - Monastery Entry Outer (Door) - 0x0C153
1717 - Monastery Garden Entry (Door) - 0x03750
1718 - Town Cargo Box Entry (Door) - 0x0A0C9
1720 - Town Wooden Roof Stairs (Door) - 0x034F5
1723 - Town Tinted Glass Door - 0x28A61
1723 - Town RGB House Entry (Door) - 0x28A61
1726 - Town Church Entry (Door) - 0x03BB0
1729 - Town Maze Stairs (Door) - 0x28AA2
1732 - Town Windmill Entry (Door) - 0x1845B
Expand All @@ -129,7 +164,7 @@ Doors:
1756 - Theater Exit Right (Door) - 0x3CCDF
1759 - Jungle Bamboo Laser Shortcut (Door) - 0x3873B
1760 - Jungle Popup Wall (Door) - 0x1475B
1762 - River Monastery Shortcut (Door) - 0x0CF2A
1762 - River Monastery Garden Shortcut (Door) - 0x0CF2A
1765 - Bunker Entry (Door) - 0x0C2A4
1768 - Bunker Tinted Glass Door - 0x17C79
1771 - Bunker UV Room Entry (Door) - 0x0C2A3
Expand Down Expand Up @@ -166,36 +201,66 @@ Doors:
1870 - Tunnels Town Shortcut (Door) - 0x09E87

1903 - Outside Tutorial Outpost Doors - 0x03BA2,0x0A170,0x04CA3
1904 - Glass Factory Doors - 0x0D7ED,0x01A29
1906 - Symmetry Island Doors - 0x17F3E,0x18269
1909 - Orchard Gates - 0x03313,0x03307
1912 - Desert Doors - 0x09FEE,0x0C2C3,0x0A24B,0x0C316
1915 - Quarry Main Entry - 0x09D6F,0x17C07
1918 - Quarry Stoneworks Shortcuts - 0x17CE8,0x0368A,0x275FF
1921 - Quarry Boathouse Barriers - 0x17C50,0x3865F
1924 - Shadows Laser Room Door - 0x194B2,0x19665
1927 - Shadows Barriers - 0x19865,0x0A2DF,0x1855B,0x19ADE
1912 - Desert Doors & Elevator - 0x09FEE,0x0C2C3,0x0A24B,0x0C316,0x01317
1915 - Quarry Entry Doors - 0x09D6F,0x17C07
1918 - Quarry Stoneworks Doors - 0x02010,0x275FF,0x17CE8,0x0368A
1921 - Quarry Boathouse Doors - 0x17C50,0x3865F,0x2769B,0x27163
1924 - Shadows Laser Room Doors - 0x194B2,0x19665
1927 - Shadows Lower Doors - 0x19865,0x0A2DF,0x1855B,0x19ADE,0x19B24
1930 - Keep Hedge Maze Doors - 0x01954,0x018CE,0x019D8,0x019B5,0x019E6,0x0199A,0x01A0E
1933 - Keep Pressure Plates Doors - 0x01BEC,0x01BEA,0x01CD5,0x01D40
1936 - Keep Shortcuts - 0x09E3D,0x04F8F
1939 - Monastery Entry - 0x0C128,0x0C153
1942 - Monastery Shortcuts - 0x0364E,0x03750
1945 - Town Doors - 0x0A0C9,0x034F5,0x28A61,0x03BB0,0x28AA2,0x1845B,0x2897B
1939 - Monastery Entry Doors - 0x0C128,0x0C153
1942 - Monastery Shortcuts - 0x0364E,0x03750,0x0CF2A
1945 - Town Doors - 0x0A0C9,0x034F5,0x28A61,0x03BB0,0x28AA2,0x2897B
1948 - Town Tower Doors - 0x27798,0x27799,0x2779A,0x2779C
1951 - Theater Exit - 0x0A16D,0x3CCDF
1954 - Jungle & River Shortcuts - 0x3873B,0x0CF2A
1951 - Windmill & Theater Doors - 0x0A16D,0x3CCDF,0x1845B,0x17F88
1954 - Jungle Doors - 0x3873B,0x1475B
1957 - Bunker Doors - 0x0C2A4,0x17C79,0x0C2A3,0x0A08D
1960 - Swamp Doors - 0x00C1C,0x184B7,0x38AE6,0x18507
1960 - Swamp Doors - 0x00C1C,0x184B7,0x18507
1961 - Swamp Shortcuts - 0x38AE6,0x2D880
1963 - Swamp Water Pumps - 0x04B7F,0x183F2,0x305D5,0x18482,0x0A1D6
1966 - Treehouse Entry Doors - 0x0C309,0x0C310,0x0A181
1975 - Mountain Floor 2 Stairs & Doors - 0x09FFB,0x09EDD,0x09E07
1978 - Mountain Bottom Floor Doors to Caves - 0x17F33,0x2D77D
1981 - Caves Doors to Challenge - 0x019A5,0x0A19A
1984 - Caves Exits to Main Island - 0x2D859,0x2D73F
1987 - Tunnels Doors - 0x27739,0x27263,0x09E87
1969 - Treehouse Upper Doors - 0x0C323,0x0C32D
1975 - Mountain Floor 1 & 2 Doors - 0x09E54,0x09FFB,0x09EDD,0x09E07
1978 - Mountain Bottom Floor Doors - 0x0C141,0x17F33,0x09F89
1981 - Caves Doors - 0x019A5,0x0A19A,0x2D77D
1984 - Caves Shortcuts - 0x2D859,0x2D73F
1987 - Tunnels Doors - 0x27739,0x27263,0x09E87,0x0348A

2000 - Desert Control Panels - 0x09FAA,0x1C2DF,0x1831E,0x1C260,0x1831C,0x1C2F3,0x1831D,0x1C2B1,0x1831B
2005 - Quarry Stoneworks Control Panels - 0x03678,0x03676,0x03679,0x03675
2010 - Quarry Boathouse Control Panels - 0x03852,0x03858,0x275FA
2015 - Town Control Panels - 0x2896A,0x334D8
2020 - Windmill & Theater Control Panels - 0x17D02,0x00815
2025 - Bunker Control Panels - 0x34BC5,0x34BC6,0x0A079
2030 - Swamp Control Panels - 0x00609,0x18488,0x181F5,0x17E2B,0x17C0A,0x17E07
2035 - Mountain & Caves Control Panels - 0x09ED8,0x09E86,0x09E39,0x09EEB,0x335AB,0x335AC,0x3369D

2100 - Symmetry Island Panels - 0x1C349,0x000B0
2101 - Tutorial Outpost Panels - 0x0A171,0x04CA4
2105 - Desert Panels - 0x09FAA,0x1C2DF,0x1831E,0x1C260,0x1831C,0x1C2F3,0x1831D,0x1C2B1,0x1831B,0x0C339,0x0A249
2110 - Quarry Outside Panels - 0x17C09,0x09E57,0x17CC4
2115 - Quarry Stoneworks Panels - 0x01E5A,0x01E59,0x03678,0x03676,0x03679,0x03675
2120 - Quarry Boathouse Panels - 0x03852,0x03858,0x275FA
2122 - Keep Hedge Maze Panels - 0x00139,0x019DC,0x019E7,0x01A0F
2125 - Monastery Panels - 0x09D9B,0x00C92,0x00B10
2130 - Town Church & RGB House Panels - 0x28998,0x28A0D,0x334D8
2135 - Town Maze Panels - 0x2896A,0x28A79
2140 - Windmill & Theater Panels - 0x17D02,0x00815,0x17F5F,0x17F89,0x0A168,0x33AB2
2145 - Treehouse Panels - 0x0A182,0x0288C,0x02886,0x2700B,0x17CBC,0x037FF
2150 - Bunker Panels - 0x34BC5,0x34BC6,0x0A079,0x0A099,0x17C2E
2155 - Swamp Panels - 0x00609,0x18488,0x181F5,0x17E2B,0x17C0A,0x17E07,0x17C0D,0x0056E
2160 - Mountain Panels - 0x09ED8,0x09E86,0x09E39,0x09EEB
2165 - Caves Panels - 0x3369D,0x00FF8,0x0A16E,0x335AB,0x335AC
2170 - Tunnels Panels - 0x09E85,0x039B4

Lasers:
1500 - Symmetry Laser - 0x00509
1501 - Desert Laser - 0x012FB,0x01317
1501 - Desert Laser - 0x012FB
1502 - Quarry Laser - 0x01539
1503 - Shadows Laser - 0x181B3
1504 - Keep Laser - 0x014BB
Expand Down
Loading
Loading