Lingo: Add item/location groups (#2789)

This commit is contained in:
Star Rauchenberger 2024-03-21 10:46:53 -05:00 committed by GitHub
parent f4b7c28a33
commit 30a0aa2c85
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 157 additions and 89 deletions

View File

@ -6,8 +6,8 @@ from logging import warning
from BaseClasses import Item, ItemClassification, Tutorial from BaseClasses import Item, ItemClassification, Tutorial
from worlds.AutoWorld import WebWorld, World from worlds.AutoWorld import WebWorld, World
from .datatypes import Room, RoomEntrance from .datatypes import Room, RoomEntrance
from .items import ALL_ITEM_TABLE, LingoItem from .items import ALL_ITEM_TABLE, ITEMS_BY_GROUP, LingoItem
from .locations import ALL_LOCATION_TABLE from .locations import ALL_LOCATION_TABLE, LOCATIONS_BY_GROUP
from .options import LingoOptions from .options import LingoOptions
from .player_logic import LingoPlayerLogic from .player_logic import LingoPlayerLogic
from .regions import create_regions from .regions import create_regions
@ -46,6 +46,8 @@ class LingoWorld(World):
location_name_to_id = { location_name_to_id = {
name: data.code for name, data in ALL_LOCATION_TABLE.items() name: data.code for name, data in ALL_LOCATION_TABLE.items()
} }
item_name_groups = ITEMS_BY_GROUP
location_name_groups = LOCATIONS_BY_GROUP
player_logic: LingoPlayerLogic player_logic: LingoPlayerLogic

View File

@ -63,12 +63,13 @@
# - item_name: Overrides the name of the item generated for this door. # - item_name: Overrides the name of the item generated for this door.
# If not specified, the item name will be generated from # If not specified, the item name will be generated from
# the room name and the door name. # the room name and the door name.
# - item_group: If set, this item will be in the specified item group.
# - location_name: Overrides the name of the location generated for this # - location_name: Overrides the name of the location generated for this
# door. If not specified, the location name will be # door. If not specified, the location name will be
# generated using the names of the panels. # generated using the names of the panels.
# - skip_location: If true, no location is generated for this door. # - skip_location: If true, no location is generated for this door.
# - skip_item: If true, no item is generated for this door. # - skip_item: If true, no item is generated for this door.
# - group: When simple doors is used, all doors with the same group # - door_group: When simple doors is used, all doors with the same group
# will be covered by a single item. # will be covered by a single item.
# - include_reduce: Door checks are assumed to be EXCLUDED when reduce checks # - include_reduce: Door checks are assumed to be EXCLUDED when reduce checks
# is on. This option includes the check anyway. # is on. This option includes the check anyway.
@ -144,7 +145,7 @@
- Palindrome Room Area Doors/Door_racecar_racecar_2 - Palindrome Room Area Doors/Door_racecar_racecar_2
- Palindrome Room Area Doors/Door_solos_solos_2 - Palindrome Room Area Doors/Door_solos_solos_2
skip_location: True skip_location: True
group: Rhyme Room Doors door_group: Rhyme Room Doors
panels: panels:
- room: The Tenacious - room: The Tenacious
panel: LEVEL (Black) panel: LEVEL (Black)
@ -231,7 +232,7 @@
Dead End Door: Dead End Door:
id: Appendix Room Area Doors/Door_rat_tar_2 id: Appendix Room Area Doors/Door_rat_tar_2
skip_location: true skip_location: true
group: Dead End Area Access door_group: Dead End Area Access
panels: panels:
- room: Hub Room - room: Hub Room
panel: RAT panel: RAT
@ -244,6 +245,7 @@
Seeker Entrance: Seeker Entrance:
id: Entry Room Area Doors/Door_entrance_entrance id: Entry Room Area Doors/Door_entrance_entrance
item_name: The Seeker - Entrance item_name: The Seeker - Entrance
item_group: Achievement Room Entrances
panels: panels:
- OPEN - OPEN
Rhyme Room Entrance: Rhyme Room Entrance:
@ -251,7 +253,7 @@
- Appendix Room Area Doors/Door_rat_tar_3 - Appendix Room Area Doors/Door_rat_tar_3
- Double Room Area Doors/Door_room_entry_stairs - Double Room Area Doors/Door_room_entry_stairs
skip_location: True skip_location: True
group: Rhyme Room Doors door_group: Rhyme Room Doors
panels: panels:
- room: The Tenacious - room: The Tenacious
panel: LEVEL (Black) panel: LEVEL (Black)
@ -466,25 +468,27 @@
- ORDER - ORDER
Tenacious Entrance: Tenacious Entrance:
id: Palindrome Room Area Doors/Door_slaughter_laughter id: Palindrome Room Area Doors/Door_slaughter_laughter
group: Entrances to The Tenacious door_group: Entrances to The Tenacious
item_group: Achievement Room Entrances
panels: panels:
- SLAUGHTER - SLAUGHTER
Shortcut to Hedge Maze: Shortcut to Hedge Maze:
id: Maze Area Doors/Door_trace_trace id: Maze Area Doors/Door_trace_trace
group: Hedge Maze Doors door_group: Hedge Maze Doors
panels: panels:
- TRACE - TRACE
Near RAT Door: Near RAT Door:
id: Appendix Room Area Doors/Door_deadend_deadened id: Appendix Room Area Doors/Door_deadend_deadened
skip_location: True skip_location: True
group: Dead End Area Access door_group: Dead End Area Access
panels: panels:
- room: Hidden Room - room: Hidden Room
panel: DEAD END panel: DEAD END
Traveled Entrance: Traveled Entrance:
id: Appendix Room Area Doors/Door_open_open id: Appendix Room Area Doors/Door_open_open
item_name: The Traveled - Entrance item_name: The Traveled - Entrance
group: Entrance to The Traveled door_group: Entrance to The Traveled
item_group: Achievement Room Entrances
panels: panels:
- OPEN - OPEN
Lost Door: Lost Door:
@ -546,6 +550,7 @@
doors: doors:
Sun Painting: Sun Painting:
item_name: Pilgrim Room - Sun Painting item_name: Pilgrim Room - Sun Painting
item_group: Paintings
location_name: Pilgrim Room - HOT CRUST location_name: Pilgrim Room - HOT CRUST
painting_id: pilgrim_painting2 painting_id: pilgrim_painting2
panels: panels:
@ -715,12 +720,14 @@
doors: doors:
Tenacious Entrance: Tenacious Entrance:
id: Palindrome Room Area Doors/Door_decay_day id: Palindrome Room Area Doors/Door_decay_day
group: Entrances to The Tenacious door_group: Entrances to The Tenacious
item_group: Achievement Room Entrances
panels: panels:
- DECAY - DECAY
Discerning Entrance: Discerning Entrance:
id: Shuffle Room Area Doors/Door_nope_open id: Shuffle Room Area Doors/Door_nope_open
item_name: The Discerning - Entrance item_name: The Discerning - Entrance
item_group: Achievement Room Entrances
panels: panels:
- NOPE - NOPE
Tower Entrance: Tower Entrance:
@ -729,13 +736,13 @@
- Shuffle Room Area Doors/Door_tower2 - Shuffle Room Area Doors/Door_tower2
- Shuffle Room Area Doors/Door_tower3 - Shuffle Room Area Doors/Door_tower3
- Shuffle Room Area Doors/Door_tower4 - Shuffle Room Area Doors/Door_tower4
group: Crossroads - Tower Entrances door_group: Crossroads - Tower Entrances
panels: panels:
- WE ROT - WE ROT
Tower Back Entrance: Tower Back Entrance:
id: Shuffle Room Area Doors/Door_runt id: Shuffle Room Area Doors/Door_runt
location_name: Crossroads - TURN/RUNT location_name: Crossroads - TURN/RUNT
group: Crossroads - Tower Entrances door_group: Crossroads - Tower Entrances
panels: panels:
- TURN - TURN
- room: Orange Tower Fourth Floor - room: Orange Tower Fourth Floor
@ -744,20 +751,20 @@
id: id:
- Shuffle Room Area Doors/Door_words_shuffle_3 - Shuffle Room Area Doors/Door_words_shuffle_3
- Shuffle Room Area Doors/Door_words_shuffle_4 - Shuffle Room Area Doors/Door_words_shuffle_4
group: Crossroads Doors door_group: Crossroads Doors
panels: panels:
- WORDS - WORDS
- SWORD - SWORD
Eye Wall: Eye Wall:
id: Shuffle Room Area Doors/Door_behind id: Shuffle Room Area Doors/Door_behind
junk_item: True junk_item: True
group: Crossroads Doors door_group: Crossroads Doors
panels: panels:
- BEND HI - BEND HI
Hollow Hallway: Hollow Hallway:
id: Shuffle Room Area Doors/Door_crossroads6 id: Shuffle Room Area Doors/Door_crossroads6
skip_location: True skip_location: True
group: Crossroads Doors door_group: Crossroads Doors
panels: panels:
- BEND HI - BEND HI
Roof Access: Roof Access:
@ -934,7 +941,7 @@
- Palindrome Room Area Doors/Door_racecar_racecar_1 - Palindrome Room Area Doors/Door_racecar_racecar_1
- Palindrome Room Area Doors/Door_solos_solos_1 - Palindrome Room Area Doors/Door_solos_solos_1
location_name: The Tenacious - Palindromes location_name: The Tenacious - Palindromes
group: Entrances to The Tenacious door_group: Entrances to The Tenacious
panels: panels:
- LEVEL (Black) - LEVEL (Black)
- RACECAR (Black) - RACECAR (Black)
@ -965,7 +972,7 @@
id: id:
- Symmetry Room Area Doors/Door_near_far - Symmetry Room Area Doors/Door_near_far
- Symmetry Room Area Doors/Door_far_near - Symmetry Room Area Doors/Door_far_near
group: Symmetry Doors door_group: Symmetry Doors
item_name: Symmetry Room - Near Far Door item_name: Symmetry Room - Near Far Door
location_name: Symmetry Room - NEAR, FAR location_name: Symmetry Room - NEAR, FAR
panels: panels:
@ -992,7 +999,7 @@
id: id:
- Symmetry Room Area Doors/Door_warts_straw - Symmetry Room Area Doors/Door_warts_straw
- Symmetry Room Area Doors/Door_straw_warts - Symmetry Room Area Doors/Door_straw_warts
group: Symmetry Doors door_group: Symmetry Doors
item_name: Symmetry Room - Warts Straw Door item_name: Symmetry Room - Warts Straw Door
location_name: Symmetry Room - WARTS, STRAW location_name: Symmetry Room - WARTS, STRAW
panels: panels:
@ -1019,7 +1026,7 @@
id: id:
- Symmetry Room Area Doors/Door_leaf_feel - Symmetry Room Area Doors/Door_leaf_feel
- Symmetry Room Area Doors/Door_feel_leaf - Symmetry Room Area Doors/Door_feel_leaf
group: Symmetry Doors door_group: Symmetry Doors
item_name: Symmetry Room - Leaf Feel Door item_name: Symmetry Room - Leaf Feel Door
location_name: Symmetry Room - LEAF, FEEL location_name: Symmetry Room - LEAF, FEEL
panels: panels:
@ -1156,34 +1163,37 @@
doors: doors:
Tenacious Entrance: Tenacious Entrance:
id: Palindrome Room Area Doors/Door_massacred_sacred id: Palindrome Room Area Doors/Door_massacred_sacred
group: Entrances to The Tenacious door_group: Entrances to The Tenacious
item_group: Achievement Room Entrances
panels: panels:
- MASSACRED - MASSACRED
Black Door: Black Door:
id: Symmetry Room Area Doors/Door_black_white id: Symmetry Room Area Doors/Door_black_white
group: Entrances to The Tenacious door_group: Entrances to The Tenacious
panels: panels:
- BLACK - BLACK
Agreeable Entrance: Agreeable Entrance:
id: Symmetry Room Area Doors/Door_close_open id: Symmetry Room Area Doors/Door_close_open
item_name: The Agreeable - Entrance item_name: The Agreeable - Entrance
item_group: Achievement Room Entrances
panels: panels:
- CLOSE - CLOSE
Painting Shortcut: Painting Shortcut:
item_name: Starting Room - Street Painting item_name: Starting Room - Street Painting
item_group: Paintings
painting_id: eyes_yellow_painting2 painting_id: eyes_yellow_painting2
panels: panels:
- RIGHT - RIGHT
Purple Barrier: Purple Barrier:
id: Color Arrow Room Doors/Door_purple_3 id: Color Arrow Room Doors/Door_purple_3
group: Color Hunt Barriers door_group: Color Hunt Barriers
skip_location: True skip_location: True
panels: panels:
- room: Color Hunt - room: Color Hunt
panel: PURPLE panel: PURPLE
Hallway Door: Hallway Door:
id: Red Blue Purple Room Area Doors/Door_room_2 id: Red Blue Purple Room Area Doors/Door_room_2
group: Hallway Room Doors door_group: Hallway Room Doors
location_name: Hallway Room - First Room location_name: Hallway Room - First Room
panels: panels:
- WALL - WALL
@ -1229,7 +1239,8 @@
doors: doors:
Tenacious Entrance: Tenacious Entrance:
id: Palindrome Room Area Doors/Door_dread_dead id: Palindrome Room Area Doors/Door_dread_dead
group: Entrances to The Tenacious door_group: Entrances to The Tenacious
item_group: Achievement Room Entrances
panels: panels:
- DREAD - DREAD
The Agreeable: The Agreeable:
@ -1298,7 +1309,8 @@
doors: doors:
Shortcut to Hedge Maze: Shortcut to Hedge Maze:
id: Symmetry Room Area Doors/Door_bye_hi id: Symmetry Room Area Doors/Door_bye_hi
group: Hedge Maze Doors item_group: Achievement Room Entrances
door_group: Hedge Maze Doors
panels: panels:
- BYE - BYE
Hedge Maze: Hedge Maze:
@ -1391,12 +1403,14 @@
Perceptive Entrance: Perceptive Entrance:
id: Maze Area Doors/Door_maze_maze id: Maze Area Doors/Door_maze_maze
item_name: The Perceptive - Entrance item_name: The Perceptive - Entrance
group: Hedge Maze Doors door_group: Hedge Maze Doors
item_group: Achievement Room Entrances
panels: panels:
- DOWN - DOWN
Painting Shortcut: Painting Shortcut:
painting_id: garden_painting_tower2 painting_id: garden_painting_tower2
item_name: Starting Room - Hedge Maze Painting item_name: Starting Room - Hedge Maze Painting
item_group: Paintings
skip_location: True skip_location: True
panels: panels:
- DOWN - DOWN
@ -1407,7 +1421,8 @@
- Maze Area Doors/Door_look_room_3 - Maze Area Doors/Door_look_room_3
skip_location: True skip_location: True
item_name: The Observant - Entrance item_name: The Observant - Entrance
group: Observant Doors door_group: Observant Doors
item_group: Achievement Room Entrances
panels: panels:
- room: The Perceptive - room: The Perceptive
panel: GAZE panel: GAZE
@ -1473,7 +1488,7 @@
Second Floor: Second Floor:
id: Naps Room Doors/Door_hider_5 id: Naps Room Doors/Door_hider_5
location_name: The Fearless - First Floor Puzzles location_name: The Fearless - First Floor Puzzles
group: Fearless Doors door_group: Fearless Doors
panels: panels:
- SPAN - SPAN
- TEAM - TEAM
@ -1525,7 +1540,7 @@
- Naps Room Doors/Door_hider_1b2 - Naps Room Doors/Door_hider_1b2
- Naps Room Doors/Door_hider_new1 - Naps Room Doors/Door_hider_new1
location_name: The Fearless - Second Floor Puzzles location_name: The Fearless - Second Floor Puzzles
group: Fearless Doors door_group: Fearless Doors
panels: panels:
- NONE - NONE
- SUM - SUM
@ -1680,13 +1695,13 @@
doors: doors:
Backside Door: Backside Door:
id: Maze Area Doors/Door_backside id: Maze Area Doors/Door_backside
group: Backside Doors door_group: Backside Doors
panels: panels:
- FOUR (1) - FOUR (1)
- FOUR (2) - FOUR (2)
Stairs: Stairs:
id: Maze Area Doors/Door_stairs id: Maze Area Doors/Door_stairs
group: Observant Doors door_group: Observant Doors
panels: panels:
- SIX - SIX
The Incomparable: The Incomparable:
@ -1764,7 +1779,7 @@
Eight Door: Eight Door:
id: Red Blue Purple Room Area Doors/Door_a_strands id: Red Blue Purple Room Area Doors/Door_a_strands
location_name: Giant Sevens location_name: Giant Sevens
group: Observant Doors door_group: Observant Doors
panels: panels:
- I (Seven) - I (Seven)
- room: Courtyard - room: Courtyard
@ -1915,13 +1930,13 @@
doors: doors:
Shortcut to Hub Room: Shortcut to Hub Room:
id: Shuffle Room Area Doors/Door_secret_secret id: Shuffle Room Area Doors/Door_secret_secret
group: Orange Tower First Floor - Shortcuts door_group: Orange Tower First Floor - Shortcuts
panels: panels:
- SECRET - SECRET
Salt Pepper Door: Salt Pepper Door:
id: Count Up Room Area Doors/Door_salt_pepper id: Count Up Room Area Doors/Door_salt_pepper
location_name: Orange Tower First Floor - Salt Pepper Door location_name: Orange Tower First Floor - Salt Pepper Door
group: Orange Tower First Floor - Shortcuts door_group: Orange Tower First Floor - Shortcuts
panels: panels:
- SALT - SALT
- room: Directional Gallery - room: Directional Gallery
@ -1967,7 +1982,7 @@
doors: doors:
Red Barrier: Red Barrier:
id: Color Arrow Room Doors/Door_red_6 id: Color Arrow Room Doors/Door_red_6
group: Color Hunt Barriers door_group: Color Hunt Barriers
skip_location: True skip_location: True
panels: panels:
- room: Color Hunt - room: Color Hunt
@ -1975,7 +1990,7 @@
Rhyme Room Entrance: Rhyme Room Entrance:
id: Double Room Area Doors/Door_room_entry_stairs2 id: Double Room Area Doors/Door_room_entry_stairs2
skip_location: True skip_location: True
group: Rhyme Room Doors door_group: Rhyme Room Doors
panels: panels:
- room: The Tenacious - room: The Tenacious
panel: LEVEL (Black) panel: LEVEL (Black)
@ -1989,7 +2004,7 @@
- Color Arrow Room Doors/Door_orange_hider_2 - Color Arrow Room Doors/Door_orange_hider_2
- Color Arrow Room Doors/Door_orange_hider_3 - Color Arrow Room Doors/Door_orange_hider_3
location_name: Color Barriers - RED and YELLOW location_name: Color Barriers - RED and YELLOW
group: Color Hunt Barriers door_group: Color Hunt Barriers
item_name: Color Hunt - Orange Barrier item_name: Color Hunt - Orange Barrier
panels: panels:
- RED - RED
@ -2150,7 +2165,7 @@
doors: doors:
Welcome Back: Welcome Back:
id: Entry Room Area Doors/Door_sizes id: Entry Room Area Doors/Door_sizes
group: Welcome Back Doors door_group: Welcome Back Doors
panels: panels:
- SIZE (Small) - SIZE (Small)
- SIZE (Big) - SIZE (Big)
@ -2404,6 +2419,7 @@
Painting Shortcut: Painting Shortcut:
painting_id: flower_painting_8 painting_id: flower_painting_8
item_name: Starting Room - Flower Painting item_name: Starting Room - Flower Painting
item_group: Paintings
skip_location: True skip_location: True
panels: panels:
- room: First Second Third Fourth - room: First Second Third Fourth
@ -2416,7 +2432,7 @@
panel: FOURTH panel: FOURTH
Green Barrier: Green Barrier:
id: Color Arrow Room Doors/Door_green_5 id: Color Arrow Room Doors/Door_green_5
group: Color Hunt Barriers door_group: Color Hunt Barriers
skip_location: True skip_location: True
panels: panels:
- room: Color Hunt - room: Color Hunt
@ -2470,7 +2486,7 @@
doors: doors:
Backside Door: Backside Door:
id: Count Up Room Area Doors/Door_yellow_backside id: Count Up Room Area Doors/Door_yellow_backside
group: Backside Doors door_group: Backside Doors
location_name: Courtyard - FIRST, SECOND, THIRD, FOURTH location_name: Courtyard - FIRST, SECOND, THIRD, FOURTH
item_name: Courtyard - Backside Door item_name: Courtyard - Backside Door
panels: panels:
@ -2491,7 +2507,7 @@
Progress Door: Progress Door:
id: Doorway Room Doors/Door_white id: Doorway Room Doors/Door_white
item_name: The Colorful - White Door item_name: The Colorful - White Door
group: Colorful Doors door_group: Colorful Doors
location_name: The Colorful - White location_name: The Colorful - White
panels: panels:
- BEGIN - BEGIN
@ -2512,7 +2528,7 @@
id: Doorway Room Doors/Door_black id: Doorway Room Doors/Door_black
item_name: The Colorful - Black Door item_name: The Colorful - Black Door
location_name: The Colorful - Black location_name: The Colorful - Black
group: Colorful Doors door_group: Colorful Doors
panels: panels:
- FOUND - FOUND
The Colorful (Red): The Colorful (Red):
@ -2532,7 +2548,7 @@
id: Doorway Room Doors/Door_red id: Doorway Room Doors/Door_red
item_name: The Colorful - Red Door item_name: The Colorful - Red Door
location_name: The Colorful - Red location_name: The Colorful - Red
group: Colorful Doors door_group: Colorful Doors
panels: panels:
- LOAF - LOAF
The Colorful (Yellow): The Colorful (Yellow):
@ -2552,7 +2568,7 @@
id: Doorway Room Doors/Door_yellow id: Doorway Room Doors/Door_yellow
item_name: The Colorful - Yellow Door item_name: The Colorful - Yellow Door
location_name: The Colorful - Yellow location_name: The Colorful - Yellow
group: Colorful Doors door_group: Colorful Doors
panels: panels:
- CREAM - CREAM
The Colorful (Blue): The Colorful (Blue):
@ -2572,7 +2588,7 @@
id: Doorway Room Doors/Door_blue id: Doorway Room Doors/Door_blue
item_name: The Colorful - Blue Door item_name: The Colorful - Blue Door
location_name: The Colorful - Blue location_name: The Colorful - Blue
group: Colorful Doors door_group: Colorful Doors
panels: panels:
- SUN - SUN
The Colorful (Purple): The Colorful (Purple):
@ -2592,7 +2608,7 @@
id: Doorway Room Doors/Door_purple id: Doorway Room Doors/Door_purple
item_name: The Colorful - Purple Door item_name: The Colorful - Purple Door
location_name: The Colorful - Purple location_name: The Colorful - Purple
group: Colorful Doors door_group: Colorful Doors
panels: panels:
- SPOON - SPOON
The Colorful (Orange): The Colorful (Orange):
@ -2612,7 +2628,7 @@
id: Doorway Room Doors/Door_orange id: Doorway Room Doors/Door_orange
item_name: The Colorful - Orange Door item_name: The Colorful - Orange Door
location_name: The Colorful - Orange location_name: The Colorful - Orange
group: Colorful Doors door_group: Colorful Doors
panels: panels:
- LETTERS - LETTERS
The Colorful (Green): The Colorful (Green):
@ -2632,7 +2648,7 @@
id: Doorway Room Doors/Door_green id: Doorway Room Doors/Door_green
item_name: The Colorful - Green Door item_name: The Colorful - Green Door
location_name: The Colorful - Green location_name: The Colorful - Green
group: Colorful Doors door_group: Colorful Doors
panels: panels:
- WALLS - WALLS
The Colorful (Brown): The Colorful (Brown):
@ -2652,7 +2668,7 @@
id: Doorway Room Doors/Door_brown id: Doorway Room Doors/Door_brown
item_name: The Colorful - Brown Door item_name: The Colorful - Brown Door
location_name: The Colorful - Brown location_name: The Colorful - Brown
group: Colorful Doors door_group: Colorful Doors
panels: panels:
- IRON - IRON
The Colorful (Gray): The Colorful (Gray):
@ -2672,7 +2688,7 @@
id: Doorway Room Doors/Door_gray id: Doorway Room Doors/Door_gray
item_name: The Colorful - Gray Door item_name: The Colorful - Gray Door
location_name: The Colorful - Gray location_name: The Colorful - Gray
group: Colorful Doors door_group: Colorful Doors
panels: panels:
- OBSTACLE - OBSTACLE
The Colorful: The Colorful:
@ -2768,7 +2784,7 @@
doors: doors:
Shortcut to Starting Room: Shortcut to Starting Room:
id: Entry Room Area Doors/Door_return_return id: Entry Room Area Doors/Door_return_return
group: Welcome Back Doors door_group: Welcome Back Doors
include_reduce: True include_reduce: True
panels: panels:
- WELCOME BACK - WELCOME BACK
@ -2793,7 +2809,7 @@
doors: doors:
Shortcut to Hedge Maze: Shortcut to Hedge Maze:
id: Maze Area Doors/Door_strays_maze id: Maze Area Doors/Door_strays_maze
group: Hedge Maze Doors door_group: Hedge Maze Doors
panels: panels:
- STRAYS - STRAYS
paintings: paintings:
@ -2916,14 +2932,14 @@
- UNCOVER - UNCOVER
Blue Barrier: Blue Barrier:
id: Color Arrow Room Doors/Door_blue_3 id: Color Arrow Room Doors/Door_blue_3
group: Color Hunt Barriers door_group: Color Hunt Barriers
skip_location: True skip_location: True
panels: panels:
- room: Color Hunt - room: Color Hunt
panel: BLUE panel: BLUE
Orange Barrier: Orange Barrier:
id: Color Arrow Room Doors/Door_orange_3 id: Color Arrow Room Doors/Door_orange_3
group: Color Hunt Barriers door_group: Color Hunt Barriers
skip_location: True skip_location: True
panels: panels:
- room: Color Hunt - room: Color Hunt
@ -2931,6 +2947,7 @@
Initiated Entrance: Initiated Entrance:
id: Red Blue Purple Room Area Doors/Door_locked_knocked id: Red Blue Purple Room Area Doors/Door_locked_knocked
item_name: The Initiated - Entrance item_name: The Initiated - Entrance
item_group: Achievement Room Entrances
panels: panels:
- OXEN - OXEN
# These would be more appropriate in Champion's Rest, but as currently # These would be more appropriate in Champion's Rest, but as currently
@ -2940,7 +2957,7 @@
id: Color Arrow Room Doors/Door_green_hider_1 id: Color Arrow Room Doors/Door_green_hider_1
location_name: Color Barriers - BLUE and YELLOW location_name: Color Barriers - BLUE and YELLOW
item_name: Color Hunt - Green Barrier item_name: Color Hunt - Green Barrier
group: Color Hunt Barriers door_group: Color Hunt Barriers
panels: panels:
- BLUE - BLUE
- room: Directional Gallery - room: Directional Gallery
@ -2952,7 +2969,7 @@
- Color Arrow Room Doors/Door_purple_hider_3 - Color Arrow Room Doors/Door_purple_hider_3
location_name: Color Barriers - RED and BLUE location_name: Color Barriers - RED and BLUE
item_name: Color Hunt - Purple Barrier item_name: Color Hunt - Purple Barrier
group: Color Hunt Barriers door_group: Color Hunt Barriers
panels: panels:
- BLUE - BLUE
- room: Orange Tower Third Floor - room: Orange Tower Third Floor
@ -2972,6 +2989,7 @@
panel: PURPLE panel: PURPLE
Eight Door: Eight Door:
id: Red Blue Purple Room Area Doors/Door_a_strands2 id: Red Blue Purple Room Area Doors/Door_a_strands2
item_group: Achievement Room Entrances
skip_location: True skip_location: True
panels: panels:
- room: The Incomparable - room: The Incomparable
@ -3189,7 +3207,8 @@
doors: doors:
Color Hallways Entrance: Color Hallways Entrance:
id: Appendix Room Area Doors/Door_hello_hi id: Appendix Room Area Doors/Door_hello_hi
group: Entrance to The Traveled door_group: Entrance to The Traveled
item_group: Achievement Room Entrances
panels: panels:
- HELLO - HELLO
Color Hallways: Color Hallways:
@ -3305,17 +3324,20 @@
Bold Entrance: Bold Entrance:
id: Red Blue Purple Room Area Doors/Door_unopened_open id: Red Blue Purple Room Area Doors/Door_unopened_open
item_name: The Bold - Entrance item_name: The Bold - Entrance
item_group: Achievement Room Entrances
panels: panels:
- UNOPEN - UNOPEN
Painting Shortcut: Painting Shortcut:
painting_id: pencil_painting6 painting_id: pencil_painting6
skip_location: True skip_location: True
item_name: Starting Room - Pencil Painting item_name: Starting Room - Pencil Painting
item_group: Paintings
panels: panels:
- UNOPEN - UNOPEN
Steady Entrance: Steady Entrance:
id: Rock Room Doors/Door_2 id: Rock Room Doors/Door_2
item_name: The Steady - Entrance item_name: The Steady - Entrance
item_group: Achievement Room Entrances
panels: panels:
- BEGIN - BEGIN
Lilac Entrance: Lilac Entrance:
@ -3536,6 +3558,7 @@
Undeterred Entrance: Undeterred Entrance:
id: Red Blue Purple Room Area Doors/Door_pen_open id: Red Blue Purple Room Area Doors/Door_pen_open
item_name: The Undeterred - Entrance item_name: The Undeterred - Entrance
item_group: Achievement Room Entrances
panels: panels:
- PEN - PEN
Painting Shortcut: Painting Shortcut:
@ -3544,11 +3567,13 @@
- arrows_painting3 - arrows_painting3
skip_location: True skip_location: True
item_name: Starting Room - Blue Painting item_name: Starting Room - Blue Painting
item_group: Paintings
panels: panels:
- PEN - PEN
Green Painting: Green Painting:
painting_id: maze_painting_3 painting_id: maze_painting_3
skip_location: True skip_location: True
item_group: Paintings
panels: panels:
- FOUR - FOUR
Twos: Twos:
@ -3556,6 +3581,7 @@
- Count Up Room Area Doors/Door_two_hider - Count Up Room Area Doors/Door_two_hider
- Count Up Room Area Doors/Door_two_hider_2 - Count Up Room Area Doors/Door_two_hider_2
include_reduce: True include_reduce: True
item_group: Numbers
panels: panels:
- ONE - ONE
Threes: Threes:
@ -3565,6 +3591,7 @@
- Count Up Room Area Doors/Door_three_hider_3 - Count Up Room Area Doors/Door_three_hider_3
location_name: Twos location_name: Twos
include_reduce: True include_reduce: True
item_group: Numbers
panels: panels:
- TWO (1) - TWO (1)
- TWO (2) - TWO (2)
@ -3583,6 +3610,7 @@
- Count Up Room Area Doors/Door_four_hider_3 - Count Up Room Area Doors/Door_four_hider_3
- Count Up Room Area Doors/Door_four_hider_4 - Count Up Room Area Doors/Door_four_hider_4
skip_location: True skip_location: True
item_group: Numbers
panels: panels:
- THREE (1) - THREE (1)
- THREE (2) - THREE (2)
@ -3594,6 +3622,7 @@
- Count Up Room Area Doors/Door_five_hider_5 - Count Up Room Area Doors/Door_five_hider_5
location_name: Fours location_name: Fours
item_name: Number Hunt - Fives item_name: Number Hunt - Fives
item_group: Numbers
include_reduce: True include_reduce: True
panels: panels:
- FOUR - FOUR
@ -3606,6 +3635,7 @@
Challenge Entrance: Challenge Entrance:
id: Count Up Room Area Doors/Door_zero_unlocked id: Count Up Room Area Doors/Door_zero_unlocked
item_name: Number Hunt - Challenge Entrance item_name: Number Hunt - Challenge Entrance
item_group: Achievement Room Entrances
panels: panels:
- ZERO - ZERO
paintings: paintings:
@ -3752,7 +3782,7 @@
doors: doors:
Door to Directional Gallery: Door to Directional Gallery:
id: Count Up Room Area Doors/Door_five_unlocked id: Count Up Room Area Doors/Door_five_unlocked
group: Directional Gallery Doors door_group: Directional Gallery Doors
skip_location: True skip_location: True
panels: panels:
- FIVE - FIVE
@ -3766,6 +3796,7 @@
- Count Up Room Area Doors/Door_six_hider_6 - Count Up Room Area Doors/Door_six_hider_6
painting_id: pencil_painting3 # See note in Outside The Bold painting_id: pencil_painting3 # See note in Outside The Bold
location_name: Fives location_name: Fives
item_group: Numbers
include_reduce: True include_reduce: True
panels: panels:
- FIVE - FIVE
@ -3788,6 +3819,7 @@
- Count Up Room Area Doors/Door_seven_hider_6 - Count Up Room Area Doors/Door_seven_hider_6
- Count Up Room Area Doors/Door_seven_hider_7 - Count Up Room Area Doors/Door_seven_hider_7
location_name: Sixes location_name: Sixes
item_group: Numbers
include_reduce: True include_reduce: True
panels: panels:
- SIX - SIX
@ -3813,6 +3845,7 @@
- Count Up Room Area Doors/Door_eight_hider_7 - Count Up Room Area Doors/Door_eight_hider_7
- Count Up Room Area Doors/Door_eight_hider_8 - Count Up Room Area Doors/Door_eight_hider_8
location_name: Sevens location_name: Sevens
item_group: Numbers
include_reduce: True include_reduce: True
panels: panels:
- SEVEN - SEVEN
@ -3840,6 +3873,7 @@
- Count Up Room Area Doors/Door_nine_hider_8 - Count Up Room Area Doors/Door_nine_hider_8
- Count Up Room Area Doors/Door_nine_hider_9 - Count Up Room Area Doors/Door_nine_hider_9
location_name: Eights location_name: Eights
item_group: Numbers
include_reduce: True include_reduce: True
panels: panels:
- EIGHT - EIGHT
@ -3862,6 +3896,7 @@
id: Count Up Room Area Doors/Door_zero_hider_2 id: Count Up Room Area Doors/Door_zero_hider_2
location_name: Nines location_name: Nines
item_name: Outside The Undeterred - Zero Door item_name: Outside The Undeterred - Zero Door
item_group: Numbers
include_reduce: True include_reduce: True
panels: panels:
- NINE - NINE
@ -4030,13 +4065,13 @@
doors: doors:
Shortcut to The Undeterred: Shortcut to The Undeterred:
id: Count Up Room Area Doors/Door_return_double id: Count Up Room Area Doors/Door_return_double
group: Directional Gallery Doors door_group: Directional Gallery Doors
panels: panels:
- TURN - TURN
- LEARN - LEARN
Yellow Barrier: Yellow Barrier:
id: Color Arrow Room Doors/Door_yellow_4 id: Color Arrow Room Doors/Door_yellow_4
group: Color Hunt Barriers door_group: Color Hunt Barriers
skip_location: True skip_location: True
panels: panels:
- room: Color Hunt - room: Color Hunt
@ -4231,11 +4266,12 @@
doors: doors:
Entrance: Entrance:
id: Red Blue Purple Room Area Doors/Door_middle_middle id: Red Blue Purple Room Area Doors/Door_middle_middle
item_group: Achievement Room Entrances
panels: panels:
- MIDDLE - MIDDLE
Backside Door: Backside Door:
id: Red Blue Purple Room Area Doors/Door_locked_knocked2 # yeah... id: Red Blue Purple Room Area Doors/Door_locked_knocked2 # yeah...
group: Backside Doors door_group: Backside Doors
panels: panels:
- FARTHER - FARTHER
East Entrance: East Entrance:
@ -5223,7 +5259,7 @@
- Ceiling Room Doors/Door_blue - Ceiling Room Doors/Door_blue
- Ceiling Room Doors/Door_blue2 - Ceiling Room Doors/Door_blue2
location_name: The Artistic - Smiley and Panda location_name: The Artistic - Smiley and Panda
group: Artistic Doors door_group: Artistic Doors
panels: panels:
- FINE - FINE
- BLADE - BLADE
@ -5333,7 +5369,7 @@
- Ceiling Room Doors/Door_red - Ceiling Room Doors/Door_red
- Ceiling Room Doors/Door_red2 - Ceiling Room Doors/Door_red2
location_name: The Artistic - Panda and Lattice location_name: The Artistic - Panda and Lattice
group: Artistic Doors door_group: Artistic Doors
panels: panels:
- EYE (Top) - EYE (Top)
- EYE (Bottom) - EYE (Bottom)
@ -5444,7 +5480,7 @@
- Ceiling Room Doors/Door_black - Ceiling Room Doors/Door_black
- Ceiling Room Doors/Door_black2 - Ceiling Room Doors/Door_black2
location_name: The Artistic - Lattice and Apple location_name: The Artistic - Lattice and Apple
group: Artistic Doors door_group: Artistic Doors
panels: panels:
- POSH - POSH
- MALL - MALL
@ -5557,7 +5593,7 @@
- Ceiling Room Doors/Door_yellow - Ceiling Room Doors/Door_yellow
- Ceiling Room Doors/Door_yellow2 - Ceiling Room Doors/Door_yellow2
location_name: The Artistic - Apple and Smiley location_name: The Artistic - Apple and Smiley
group: Artistic Doors door_group: Artistic Doors
panels: panels:
- SPRIG - SPRIG
- RELEASES - RELEASES
@ -5721,7 +5757,7 @@
doors: doors:
Exit: Exit:
id: Count Up Room Area Doors/Door_near_near id: Count Up Room Area Doors/Door_near_near
group: Crossroads Doors door_group: Crossroads Doors
panels: panels:
- NEAR - NEAR
paintings: paintings:
@ -5762,6 +5798,7 @@
Wondrous Entrance: Wondrous Entrance:
id: Red Blue Purple Room Area Doors/Door_wonderland id: Red Blue Purple Room Area Doors/Door_wonderland
item_name: The Wondrous - Entrance item_name: The Wondrous - Entrance
item_group: Achievement Room Entrances
panels: panels:
- SHRINK - SHRINK
The Wondrous (Doorknob): The Wondrous (Doorknob):
@ -5782,6 +5819,7 @@
- arrows_painting2 - arrows_painting2
skip_location: True skip_location: True
item_name: Starting Room - Symmetry Painting item_name: Starting Room - Symmetry Painting
item_group: Paintings
panels: panels:
- room: Outside The Wondrous - room: Outside The Wondrous
panel: SHRINK panel: SHRINK
@ -5886,6 +5924,7 @@
doors: doors:
Exit: Exit:
id: Red Blue Purple Room Area Doors/Door_wonderland_exit id: Red Blue Purple Room Area Doors/Door_wonderland_exit
item_group: Paintings
painting_id: arrows_painting_9 painting_id: arrows_painting_9
include_reduce: True include_reduce: True
panels: panels:
@ -5955,7 +5994,7 @@
Exit: Exit:
id: Red Blue Purple Room Area Doors/Door_room_3 id: Red Blue Purple Room Area Doors/Door_room_3
location_name: Hallway Room - Second Room location_name: Hallway Room - Second Room
group: Hallway Room Doors door_group: Hallway Room Doors
panels: panels:
- WISE - WISE
- CLOCK - CLOCK
@ -5992,7 +6031,7 @@
Exit: Exit:
id: Red Blue Purple Room Area Doors/Door_room_4 id: Red Blue Purple Room Area Doors/Door_room_4
location_name: Hallway Room - Third Room location_name: Hallway Room - Third Room
group: Hallway Room Doors door_group: Hallway Room Doors
panels: panels:
- TRANCE - TRANCE
- FORM - FORM
@ -6014,7 +6053,7 @@
id: id:
- Red Blue Purple Room Area Doors/Door_room_5 - Red Blue Purple Room Area Doors/Door_room_5
- Red Blue Purple Room Area Doors/Door_room_6 # this is the connection to The Artistic - Red Blue Purple Room Area Doors/Door_room_6 # this is the connection to The Artistic
group: Hallway Room Doors door_group: Hallway Room Doors
location_name: Hallway Room - Fourth Room location_name: Hallway Room - Fourth Room
panels: panels:
- WHEEL - WHEEL
@ -6082,6 +6121,7 @@
Wanderer Entrance: Wanderer Entrance:
id: Tower Room Area Doors/Door_wanderer_entrance id: Tower Room Area Doors/Door_wanderer_entrance
item_name: The Wanderer - Entrance item_name: The Wanderer - Entrance
item_group: Achievement Room Entrances
panels: panels:
- WANDERLUST - WANDERLUST
Tower Entrance: Tower Entrance:
@ -6222,6 +6262,7 @@
id: Tower Room Area Doors/Door_painting_exit id: Tower Room Area Doors/Door_painting_exit
include_reduce: True include_reduce: True
item_name: Orange Tower Fifth Floor - Quadruple Intersection item_name: Orange Tower Fifth Floor - Quadruple Intersection
item_group: Achievement Room Entrances
panels: panels:
- ORDER - ORDER
paintings: paintings:
@ -6417,7 +6458,7 @@
- Double Room Area Doors/Door_room_3a - Double Room Area Doors/Door_room_3a
- Double Room Area Doors/Door_room_3bc - Double Room Area Doors/Door_room_3bc
skip_location: True skip_location: True
group: Rhyme Room Doors door_group: Rhyme Room Doors
panels: panels:
- SCHEME - SCHEME
- FANTASY - FANTASY
@ -6518,7 +6559,7 @@
Exit: Exit:
id: Double Room Area Doors/Door_room_exit id: Double Room Area Doors/Door_room_exit
location_name: Rhyme Room (Cross) - Exit Puzzles location_name: Rhyme Room (Cross) - Exit Puzzles
group: Rhyme Room Doors door_group: Rhyme Room Doors
panels: panels:
- PLUMP - PLUMP
- BOUNCE - BOUNCE
@ -6581,7 +6622,7 @@
- Double Room Area Doors/Door_room_2b - Double Room Area Doors/Door_room_2b
- Double Room Area Doors/Door_room_3b - Double Room Area Doors/Door_room_3b
location_name: Rhyme Room - Circle/Smiley Wall location_name: Rhyme Room - Circle/Smiley Wall
group: Rhyme Room Doors door_group: Rhyme Room Doors
panels: panels:
- BIRD - BIRD
- LETTER - LETTER
@ -6664,7 +6705,7 @@
- Double Room Area Doors/Door_room_2a - Double Room Area Doors/Door_room_2a
- Double Room Area Doors/Door_room_1c - Double Room Area Doors/Door_room_1c
location_name: Rhyme Room - Circle/Looped Square Wall location_name: Rhyme Room - Circle/Looped Square Wall
group: Rhyme Room Doors door_group: Rhyme Room Doors
panels: panels:
- WALKED - WALKED
- OBSTRUCTED - OBSTRUCTED
@ -6683,7 +6724,7 @@
- Double Room Area Doors/Door_room_1a - Double Room Area Doors/Door_room_1a
- Double Room Area Doors/Door_room_5a - Double Room Area Doors/Door_room_5a
location_name: Rhyme Room - Cross/Looped Square Wall location_name: Rhyme Room - Cross/Looped Square Wall
group: Rhyme Room Doors door_group: Rhyme Room Doors
panels: panels:
- SKIES - SKIES
- SWELL - SWELL
@ -6702,7 +6743,7 @@
- Double Room Area Doors/Door_room_1b - Double Room Area Doors/Door_room_1b
- Double Room Area Doors/Door_room_4b - Double Room Area Doors/Door_room_4b
location_name: Rhyme Room - Target/Looped Square Wall location_name: Rhyme Room - Target/Looped Square Wall
group: Rhyme Room Doors door_group: Rhyme Room Doors
panels: panels:
- PENNED - PENNED
- CLIMB - CLIMB
@ -6765,7 +6806,7 @@
Door to Cross: Door to Cross:
id: Double Room Area Doors/Door_room_4a id: Double Room Area Doors/Door_room_4a
location_name: Rhyme Room (Target) - Puzzles Toward Cross location_name: Rhyme Room (Target) - Puzzles Toward Cross
group: Rhyme Room Doors door_group: Rhyme Room Doors
panels: panels:
- PISTOL - PISTOL
- GEM - GEM
@ -7016,6 +7057,7 @@
Wise Entrance: Wise Entrance:
id: Clock Room Area Doors/Door_time_start id: Clock Room Area Doors/Door_time_start
item_name: The Wise - Entrance item_name: The Wise - Entrance
item_group: Achievement Room Entrances
panels: panels:
- KITTEN - KITTEN
- CAT - CAT
@ -7269,6 +7311,7 @@
Scientific Entrance: Scientific Entrance:
id: Red Blue Purple Room Area Doors/Door_chemistry_lab id: Red Blue Purple Room Area Doors/Door_chemistry_lab
item_name: The Scientific - Entrance item_name: The Scientific - Entrance
item_group: Achievement Room Entrances
panels: panels:
- OPEN - OPEN
The Scientific: The Scientific:
@ -7704,5 +7747,6 @@
doors: doors:
Welcome Door: Welcome Door:
id: Entry Room Area Doors/Door_challenge_challenge id: Entry Room Area Doors/Door_challenge_challenge
item_group: Achievement Room Entrances
panels: panels:
- WELCOME - WELCOME

Binary file not shown.

View File

@ -32,9 +32,10 @@ class Door(NamedTuple):
has_doors: bool has_doors: bool
painting_ids: List[str] painting_ids: List[str]
event: bool event: bool
group: Optional[str] door_group: Optional[str]
include_reduce: bool include_reduce: bool
junk_item: bool junk_item: bool
item_group: Optional[str]
class Panel(NamedTuple): class Panel(NamedTuple):

View File

@ -42,14 +42,16 @@ class LingoItem(Item):
ALL_ITEM_TABLE: Dict[str, ItemData] = {} ALL_ITEM_TABLE: Dict[str, ItemData] = {}
ITEMS_BY_GROUP: Dict[str, List[str]] = {}
def load_item_data(): def load_item_data():
global ALL_ITEM_TABLE global ALL_ITEM_TABLE, ITEMS_BY_GROUP
for color in ["Black", "Red", "Blue", "Yellow", "Green", "Orange", "Gray", "Brown", "Purple"]: for color in ["Black", "Red", "Blue", "Yellow", "Green", "Orange", "Gray", "Brown", "Purple"]:
ALL_ITEM_TABLE[color] = ItemData(get_special_item_id(color), ItemClassification.progression, ALL_ITEM_TABLE[color] = ItemData(get_special_item_id(color), ItemClassification.progression,
"colors", [], []) "colors", [], [])
ITEMS_BY_GROUP.setdefault("Colors", []).append(color)
door_groups: Dict[str, List[str]] = {} door_groups: Dict[str, List[str]] = {}
for room_name, doors in DOORS_BY_ROOM.items(): for room_name, doors in DOORS_BY_ROOM.items():
@ -57,11 +59,11 @@ def load_item_data():
if door.skip_item is True or door.event is True: if door.skip_item is True or door.event is True:
continue continue
if door.group is None: if door.door_group is None:
door_mode = "doors" door_mode = "doors"
else: else:
door_mode = "complex door" door_mode = "complex door"
door_groups.setdefault(door.group, []) door_groups.setdefault(door.door_group, [])
if room_name in PROGRESSION_BY_ROOM and door_name in PROGRESSION_BY_ROOM[room_name]: if room_name in PROGRESSION_BY_ROOM and door_name in PROGRESSION_BY_ROOM[room_name]:
door_mode = "special" door_mode = "special"
@ -70,10 +72,15 @@ def load_item_data():
ItemData(get_door_item_id(room_name, door_name), ItemData(get_door_item_id(room_name, door_name),
ItemClassification.filler if door.junk_item else ItemClassification.progression, door_mode, ItemClassification.filler if door.junk_item else ItemClassification.progression, door_mode,
door.has_doors, door.painting_ids) door.has_doors, door.painting_ids)
ITEMS_BY_GROUP.setdefault("Doors", []).append(door.item_name)
if door.item_group is not None:
ITEMS_BY_GROUP.setdefault(door.item_group, []).append(door.item_name)
for group, group_door_ids in door_groups.items(): for group, group_door_ids in door_groups.items():
ALL_ITEM_TABLE[group] = ItemData(get_door_group_item_id(group), ALL_ITEM_TABLE[group] = ItemData(get_door_group_item_id(group),
ItemClassification.progression, "door group", True, []) ItemClassification.progression, "door group", True, [])
ITEMS_BY_GROUP.setdefault("Doors", []).append(group)
special_items: Dict[str, ItemClassification] = { special_items: Dict[str, ItemClassification] = {
":)": ItemClassification.filler, ":)": ItemClassification.filler,
@ -90,6 +97,11 @@ def load_item_data():
ALL_ITEM_TABLE[item_name] = ItemData(get_special_item_id(item_name), classification, ALL_ITEM_TABLE[item_name] = ItemData(get_special_item_id(item_name), classification,
"special", False, []) "special", False, [])
if classification == ItemClassification.filler:
ITEMS_BY_GROUP.setdefault("Junk", []).append(item_name)
elif classification == ItemClassification.trap:
ITEMS_BY_GROUP.setdefault("Traps", []).append(item_name)
for item_name in PROGRESSIVE_ITEMS: for item_name in PROGRESSIVE_ITEMS:
ALL_ITEM_TABLE[item_name] = ItemData(get_progressive_item_id(item_name), ALL_ITEM_TABLE[item_name] = ItemData(get_progressive_item_id(item_name),
ItemClassification.progression, "special", False, []) ItemClassification.progression, "special", False, [])

View File

@ -30,10 +30,11 @@ class LingoLocation(Location):
ALL_LOCATION_TABLE: Dict[str, LocationData] = {} ALL_LOCATION_TABLE: Dict[str, LocationData] = {}
LOCATIONS_BY_GROUP: Dict[str, List[str]] = {}
def load_location_data(): def load_location_data():
global ALL_LOCATION_TABLE global ALL_LOCATION_TABLE, LOCATIONS_BY_GROUP
for room_name, panels in PANELS_BY_ROOM.items(): for room_name, panels in PANELS_BY_ROOM.items():
for panel_name, panel in panels.items(): for panel_name, panel in panels.items():
@ -50,6 +51,9 @@ def load_location_data():
LocationData(get_panel_location_id(room_name, panel_name), room_name, LocationData(get_panel_location_id(room_name, panel_name), room_name,
[RoomAndPanel(None, panel_name)], classification) [RoomAndPanel(None, panel_name)], classification)
if panel.achievement:
LOCATIONS_BY_GROUP.setdefault("Achievements", []).append(location_name)
for room_name, doors in DOORS_BY_ROOM.items(): for room_name, doors in DOORS_BY_ROOM.items():
for door_name, door in doors.items(): for door_name, door in doors.items():
if door.skip_location or door.event or door.panels is None: if door.skip_location or door.event or door.panels is None:

View File

@ -150,9 +150,9 @@ class LingoPlayerLogic:
for room_name, room_data in DOORS_BY_ROOM.items(): for room_name, room_data in DOORS_BY_ROOM.items():
for door_name, door_data in room_data.items(): for door_name, door_data in room_data.items():
if door_data.skip_item is False and door_data.event is False: if door_data.skip_item is False and door_data.event is False:
if door_data.group is not None and door_shuffle == ShuffleDoors.option_simple: if door_data.door_group is not None and door_shuffle == ShuffleDoors.option_simple:
# Grouped doors are handled differently if shuffle doors is on simple. # Grouped doors are handled differently if shuffle doors is on simple.
self.set_door_item(room_name, door_name, door_data.group) self.set_door_item(room_name, door_name, door_data.door_group)
else: else:
self.handle_non_grouped_door(room_name, door_data, world) self.handle_non_grouped_door(room_name, door_data, world)

View File

@ -255,10 +255,15 @@ def process_door(room_name, door_name, door_data):
else: else:
junk_item = False junk_item = False
if "group" in door_data: if "door_group" in door_data:
group = door_data["group"] door_group = door_data["door_group"]
else: else:
group = None door_group = None
if "item_group" in door_data:
item_group = door_data["item_group"]
else:
item_group = None
# panels is a list of panels. Each panel can either be a simple string (the name of a panel in the current room) or # panels is a list of panels. Each panel can either be a simple string (the name of a panel in the current room) or
# a dictionary specifying a panel in a different room. # a dictionary specifying a panel in a different room.
@ -308,7 +313,7 @@ def process_door(room_name, door_name, door_data):
painting_ids = [] painting_ids = []
door_obj = Door(door_name, item_name, location_name, panels, skip_location, skip_item, has_doors, door_obj = Door(door_name, item_name, location_name, panels, skip_location, skip_item, has_doors,
painting_ids, event, group, include_reduce, junk_item) painting_ids, event, door_group, include_reduce, junk_item, item_group)
DOORS_BY_ROOM[room_name][door_name] = door_obj DOORS_BY_ROOM[room_name][door_name] = door_obj

View File

@ -42,7 +42,7 @@ door_groups = {}
directives = Set["entrances", "panels", "doors", "paintings", "progression"] directives = Set["entrances", "panels", "doors", "paintings", "progression"]
panel_directives = Set["id", "required_room", "required_door", "required_panel", "colors", "check", "exclude_reduce", "tag", "link", "subtag", "achievement", "copy_to_sign", "non_counting", "hunt"] panel_directives = Set["id", "required_room", "required_door", "required_panel", "colors", "check", "exclude_reduce", "tag", "link", "subtag", "achievement", "copy_to_sign", "non_counting", "hunt"]
door_directives = Set["id", "painting_id", "panels", "item_name", "location_name", "skip_location", "skip_item", "group", "include_reduce", "junk_item", "event"] door_directives = Set["id", "painting_id", "panels", "item_name", "item_group", "location_name", "skip_location", "skip_item", "door_group", "include_reduce", "junk_item", "event"]
painting_directives = Set["id", "enter_only", "exit_only", "orientation", "required_door", "required", "required_when_no_doors", "move", "req_blocked", "req_blocked_when_no_doors"] painting_directives = Set["id", "enter_only", "exit_only", "orientation", "required_door", "required", "required_when_no_doors", "move", "req_blocked", "req_blocked_when_no_doors"]
non_counting = 0 non_counting = 0