From 5360b6bb3727505ce5987b1e1dff316f4d792574 Mon Sep 17 00:00:00 2001 From: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com> Date: Mon, 30 Mar 2026 23:31:05 +0100 Subject: [PATCH] The Witness: (Unbeatable seed) Ensure Desert Laser Redirection is required when the box is rotated (#5889) * Unbeatable seed: 11 lasers + redirect when the box is rotated * naming --- worlds/witness/player_logic.py | 4 ++-- worlds/witness/test/test_lasers.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/worlds/witness/player_logic.py b/worlds/witness/player_logic.py index aed6d3da66..b24434732f 100644 --- a/worlds/witness/player_logic.py +++ b/worlds/witness/player_logic.py @@ -527,7 +527,7 @@ class WitnessPlayerLogic: if chal_lasers > 7: postgame_adjustments.append([ "Requirement Changes:", - "0xFFF00 - 11 Lasers - True", + "0xFFF00 - 11 Lasers + Redirect - True", ]) if disable_challenge_lasers: @@ -640,7 +640,7 @@ class WitnessPlayerLogic: if chal_lasers <= 7 or mnt_lasers > 7: adjustment_linesets_in_order.append([ "Requirement Changes:", - "0xFFF00 - 11 Lasers - True", + "0xFFF00 - 11 Lasers + Redirect - True", ]) if world.options.disable_non_randomized_puzzles: diff --git a/worlds/witness/test/test_lasers.py b/worlds/witness/test/test_lasers.py index 5681757161..4a71c0d433 100644 --- a/worlds/witness/test/test_lasers.py +++ b/worlds/witness/test/test_lasers.py @@ -216,3 +216,32 @@ class TestDoorsRequiredToWinElevator(WitnessTestBase): } self.assert_can_beat_with_minimally(exact_requirement) + + +class LongBoxNeedsAllLasersWhenBoxIsRotated(WitnessTestBase): + options = { + "puzzle_randomization": "sigma_expert", + "shuffle_symbols": True, + "shuffle_doors": "mixed", + "door_groupings": "off", + "shuffle_boat": True, + "shuffle_lasers": "anywhere", + "disable_non_randomized_puzzles": False, + "shuffle_discarded_panels": True, + "shuffle_vault_boxes": True, + "obelisk_keys": True, + "shuffle_EPs": "individual", + "EP_difficulty": "eclipse", + "shuffle_postgame": False, + "victory_condition": "elevator", + "mountain_lasers": 11, + "challenge_lasers": 11, + "early_caves": "off", + "elevators_come_to_you": {"Quarry Elevator"}, + } + + run_default_tests = False + + def test_long_box_needs_all_lasers_when_box_is_rotated(self): + long_box_location = self.world.get_location("Mountaintop Box Long Solved") + self.assert_dependency_on_event_item(long_box_location, "+1 Laser (Redirected)")