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 worlds.AutoWorld import WebWorld, World
from .datatypes import Room, RoomEntrance
from .items import ALL_ITEM_TABLE, LingoItem
from .locations import ALL_LOCATION_TABLE
from .items import ALL_ITEM_TABLE, ITEMS_BY_GROUP, LingoItem
from .locations import ALL_LOCATION_TABLE, LOCATIONS_BY_GROUP
from .options import LingoOptions
from .player_logic import LingoPlayerLogic
from .regions import create_regions
@ -46,6 +46,8 @@ class LingoWorld(World):
location_name_to_id = {
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

View File

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

Binary file not shown.

View File

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

View File

@ -42,14 +42,16 @@ class LingoItem(Item):
ALL_ITEM_TABLE: Dict[str, ItemData] = {}
ITEMS_BY_GROUP: Dict[str, List[str]] = {}
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"]:
ALL_ITEM_TABLE[color] = ItemData(get_special_item_id(color), ItemClassification.progression,
"colors", [], [])
ITEMS_BY_GROUP.setdefault("Colors", []).append(color)
door_groups: Dict[str, List[str]] = {}
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:
continue
if door.group is None:
if door.door_group is None:
door_mode = "doors"
else:
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]:
door_mode = "special"
@ -70,10 +72,15 @@ def load_item_data():
ItemData(get_door_item_id(room_name, door_name),
ItemClassification.filler if door.junk_item else ItemClassification.progression, door_mode,
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():
ALL_ITEM_TABLE[group] = ItemData(get_door_group_item_id(group),
ItemClassification.progression, "door group", True, [])
ITEMS_BY_GROUP.setdefault("Doors", []).append(group)
special_items: Dict[str, ItemClassification] = {
":)": ItemClassification.filler,
@ -90,6 +97,11 @@ def load_item_data():
ALL_ITEM_TABLE[item_name] = ItemData(get_special_item_id(item_name), classification,
"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:
ALL_ITEM_TABLE[item_name] = ItemData(get_progressive_item_id(item_name),
ItemClassification.progression, "special", False, [])

View File

@ -30,10 +30,11 @@ class LingoLocation(Location):
ALL_LOCATION_TABLE: Dict[str, LocationData] = {}
LOCATIONS_BY_GROUP: Dict[str, List[str]] = {}
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 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,
[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 door_name, door in doors.items():
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 door_name, door_data in room_data.items():
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.
self.set_door_item(room_name, door_name, door_data.group)
self.set_door_item(room_name, door_name, door_data.door_group)
else:
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:
junk_item = False
if "group" in door_data:
group = door_data["group"]
if "door_group" in door_data:
door_group = door_data["door_group"]
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
# a dictionary specifying a panel in a different room.
@ -308,7 +313,7 @@ def process_door(room_name, door_name, door_data):
painting_ids = []
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

View File

@ -42,7 +42,7 @@ door_groups = {}
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"]
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"]
non_counting = 0