summary refs log tree commit diff stats
path: root/items.py
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2024-07-26 04:53:11 -0400
committerGitHub <noreply@github.com>2024-07-26 10:53:11 +0200
commit7641d9590110fa7b4901c7f7ca0384392ef24375 (patch)
tree8efdfa5be3a88879a690a4a7351eb7b635989dc7 /items.py
parent00c16023c45301224400a06f31f637fdedba00ee (diff)
downloadlingo-apworld-7641d9590110fa7b4901c7f7ca0384392ef24375.tar.gz
lingo-apworld-7641d9590110fa7b4901c7f7ca0384392ef24375.tar.bz2
lingo-apworld-7641d9590110fa7b4901c7f7ca0384392ef24375.zip
Lingo: Add panels mode door shuffle (#3163)
* Created panels mode door shuffle

* Added some panel door item names

* Remove RUNT TURN panel door

Not really useful.

* Fix logic with First SIX related stuff

* Add group_doors to slot data

* Fix LEVEL 2 behavior with panels mode

* Fixed unit tests

* Fixed duplicate IDs from merge

* Just regenerated new IDs

* Fixed duplication of color and door group items

* Removed unnecessary unit test option

* Fix The Seeker being achievable without entrance door

* Fix The Observant being achievable without locked panels

* Added some more panel doors

* Added Progressive Suits Area

* Lingo: Fix Basement access with THE MASTER

* Added indirect conditions for MASTER-blocked entrances

* Fixed Incomparable achievement access

* Fix STAIRS panel logic

* Fix merge error with good items

* Is this clearer?

* DREAD and TURN LEARN

* Allow a weird edge case for reduced locations

Panels mode door shuffle + grouped doors + color shuffle + pilgrimage enabled is exactly the right number of items for reduced locations. Removing color shuffle also allows for disabling pilgrimage, adding sunwarp locking, or both, with a couple of locations left over.

* Prevent small sphere one on panels mode

* Added shuffle_doors aliases for old options

* Fixed a unit test

* Updated datafile

* Tweaked requirements for reduced locations

* Added player name to OptionError messages

* Update generated.dat
Diffstat (limited to 'items.py')
-rw-r--r--items.py17
1 files changed, 16 insertions, 1 deletions
diff --git a/items.py b/items.py index 67eacea..78b288e 100644 --- a/items.py +++ b/items.py
@@ -3,7 +3,7 @@ from typing import Dict, List, NamedTuple, Set
3 3
4from BaseClasses import Item, ItemClassification 4from BaseClasses import Item, ItemClassification
5from .static_logic import DOORS_BY_ROOM, PROGRESSIVE_ITEMS, get_door_group_item_id, get_door_item_id, \ 5from .static_logic import DOORS_BY_ROOM, PROGRESSIVE_ITEMS, get_door_group_item_id, get_door_item_id, \
6 get_progressive_item_id, get_special_item_id 6 get_progressive_item_id, get_special_item_id, PANEL_DOORS_BY_ROOM, get_panel_door_item_id, get_panel_group_item_id
7 7
8 8
9class ItemType(Enum): 9class ItemType(Enum):
@@ -65,6 +65,21 @@ def load_item_data():
65 ItemClassification.progression, ItemType.NORMAL, True, []) 65 ItemClassification.progression, ItemType.NORMAL, True, [])
66 ITEMS_BY_GROUP.setdefault("Doors", []).append(group) 66 ITEMS_BY_GROUP.setdefault("Doors", []).append(group)
67 67
68 panel_groups: Set[str] = set()
69 for room_name, panel_doors in PANEL_DOORS_BY_ROOM.items():
70 for panel_door_name, panel_door in panel_doors.items():
71 if panel_door.panel_group is not None:
72 panel_groups.add(panel_door.panel_group)
73
74 ALL_ITEM_TABLE[panel_door.item_name] = ItemData(get_panel_door_item_id(room_name, panel_door_name),
75 ItemClassification.progression, ItemType.NORMAL, False, [])
76 ITEMS_BY_GROUP.setdefault("Panels", []).append(panel_door.item_name)
77
78 for group in panel_groups:
79 ALL_ITEM_TABLE[group] = ItemData(get_panel_group_item_id(group), ItemClassification.progression,
80 ItemType.NORMAL, False, [])
81 ITEMS_BY_GROUP.setdefault("Panels", []).append(group)
82
68 special_items: Dict[str, ItemClassification] = { 83 special_items: Dict[str, ItemClassification] = {
69 ":)": ItemClassification.filler, 84 ":)": ItemClassification.filler,
70 "The Feeling of Being Lost": ItemClassification.filler, 85 "The Feeling of Being Lost": ItemClassification.filler,