The Witness: Small changes in response to beta tests (#801)

* Option order and better tooltip

* Logic fix: Hedge Laser requires access to all Hedges

* Add item groups: Lasers, Symbols, Doors

* Update worlds/witness/items.py

Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

* Comment for clarity

* Logic fix

* Another logic fix

Co-authored-by: metzner <unconfigured@null.spigotmc.org>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
This commit is contained in:
NewSoupVi 2022-07-23 12:42:14 +02:00 committed by GitHub
parent fe2c355739
commit cfc9d79c79
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 21 additions and 8 deletions

View File

@ -36,7 +36,8 @@ 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."""
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"."""
display_name = "Shuffle Doors"
option_none = 0
option_panels = 1
@ -124,10 +125,10 @@ the_witness_options: Dict[str, type] = {
"shuffle_uncommon": ShuffleUncommonLocations,
"shuffle_postgame": ShufflePostgame,
"victory_condition": VictoryCondition,
"trap_percentage": TrapPercentage,
"early_secret_area": EarlySecretArea,
"mountain_lasers": MountainLasers,
"challenge_lasers": ChallengeLasers,
"early_secret_area": EarlySecretArea,
"trap_percentage": TrapPercentage,
"puzzle_skip_amount": PuzzleSkipAmount,
}

View File

@ -173,8 +173,8 @@ Doors:
1906 - Symmetry Island Doors - 0x17F3E,0x18269
1909 - Orchard Gates - 0x03313,0x03307
1912 - Desert Doors - 0x09FEE,0x0C2C3,0x0A24B,0x0C316
1915 - Quarry Main Entry - 0x09D6F
1918 - Quarry Mill Shortcuts - 0x17C07,0x17CE8,0x0368A
1915 - Quarry Main Entry - 0x09D6F,0x17C07
1918 - Quarry Mill Shortcuts - 0x17CE8,0x0368A,0x275FF
1921 - Quarry Boathouse Barriers - 0x17C50,0x3865F
1924 - Shadows Laser Room Door - 0x194B2,0x19665
1927 - Shadows Barriers - 0x19865,0x0A2DF,0x1855B,0x19ADE

View File

@ -354,7 +354,7 @@ Shipwreck (Shipwreck) - Keep 3rd Pressure Plate - True:
Keep Tower (Keep) - Keep - 0x04F8F:
158206 - 0x0361B (Tower Shortcut to Keep Panel) - True - True
Door - 0x04F8F (Tower Shortcut to Keep) - 0x0361B
158704 - 0x0360E (Laser Panel Hedges) - 0x01A0F - Environment & Sound
158704 - 0x0360E (Laser Panel Hedges) - 0x01A0F & 0x019E7 & 0x019DC & 0x00139 - Environment & Sound
158705 - 0x03317 (Laser Panel Pressure Plates) - 0x01D3F - Shapers & Squares & Black/White Squares & Colored Squares & Stars & Stars + Same Colored Symbol & Dots
Laser - 0x014BB (Laser) - 0x0360E | 0x03317

View File

@ -47,6 +47,7 @@ class WitnessWorld(World):
name: data.code for name, data in static_items.ALL_ITEM_TABLE.items()
}
location_name_to_id = StaticWitnessLocations.ALL_LOCATIONS_TO_ID
item_name_groups = StaticWitnessItems.ITEM_NAME_GROUPS
def _get_slot_data(self):
return {

View File

@ -2,7 +2,7 @@
Defines progression, junk and event items for The Witness
"""
import copy
from typing import Dict, NamedTuple, Optional
from typing import Dict, NamedTuple, Optional, Set
from BaseClasses import Item, MultiWorld
from . import StaticWitnessLogic, WitnessPlayerLocations, WitnessPlayerLogic
@ -35,6 +35,8 @@ class StaticWitnessItems:
ALL_ITEM_TABLE: Dict[str, ItemData] = {}
ITEM_NAME_GROUPS: Dict[str, Set[str]] = dict()
# These should always add up to 1!!!
BONUS_WEIGHTS = {
"Speed Boost": Fraction(1, 1),
@ -57,9 +59,17 @@ class StaticWitnessItems:
item_tab[item[0]] = ItemData(158000 + item[1], True, False)
self.ITEM_NAME_GROUPS.setdefault("Symbols", set()).add(item[0])
for item in StaticWitnessLogic.ALL_DOOR_ITEMS:
item_tab[item[0]] = ItemData(158000 + item[1], True, False)
# 1500 - 1510 are the laser items, which are handled like doors but should be their own separate group.
if item[1] in range(1500, 1511):
self.ITEM_NAME_GROUPS.setdefault("Lasers", set()).add(item[0])
else:
self.ITEM_NAME_GROUPS.setdefault("Doors", set()).add(item[0])
for item in StaticWitnessLogic.ALL_TRAPS:
item_tab[item[0]] = ItemData(
158000 + item[1], False, False, True

View File

@ -82,7 +82,8 @@ Disabled Locations:
0x002C7 (Waves 7)
0x15ADD (River Rhombic Avoid Vault)
0x03702 (River Vault Box)
0x17C2E (Door to Bunker) - True - Squares & Black/White Squares
0x17CAA (Rhombic Avoid to Monastery Garden)
0x17C2E (Door to Bunker)
0x09F7D (Bunker Drawn Squares 1)
0x09FDC (Bunker Drawn Squares 2)
0x09FF7 (Bunker Drawn Squares 3)