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:
NewSoupVi
2023-02-01 21:18:07 +01:00
committed by GitHub
parent 3cef39a387
commit 4de7ebd8b0
22 changed files with 2557 additions and 297 deletions

View File

@@ -58,6 +58,31 @@ class ShuffleVaultBoxes(Toggle):
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):
"""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
@@ -81,6 +106,7 @@ class PuzzleRandomization(Choice):
display_name = "Puzzle Randomization"
option_sigma_normal = 0
option_sigma_expert = 1
option_none = 2
class MountainLasers(Range):
@@ -133,6 +159,8 @@ the_witness_options: Dict[str, type] = {
"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,