summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--data/LL1.yaml296
-rw-r--r--data/ids.yaml124
-rw-r--r--player_logic.py2
-rw-r--r--test/TestProgressive.py24
-rw-r--r--utils/validate_config.rb29
5 files changed, 273 insertions, 202 deletions
diff --git a/data/LL1.yaml b/data/LL1.yaml index 2e18766..23afb2b 100644 --- a/data/LL1.yaml +++ b/data/LL1.yaml
@@ -278,10 +278,10 @@
278 tag: forbid 278 tag: forbid
279 check: True 279 check: True
280 achievement: The Seeker 280 achievement: The Seeker
281 BEAR: 281 BEAR (1):
282 id: Heteronym Room/Panel_bear_bear 282 id: Heteronym Room/Panel_bear_bear
283 tag: midwhite 283 tag: midwhite
284 MINE: 284 MINE (1):
285 id: Heteronym Room/Panel_mine_mine 285 id: Heteronym Room/Panel_mine_mine
286 tag: double midwhite 286 tag: double midwhite
287 subtag: left 287 subtag: left
@@ -297,7 +297,7 @@
297 DOES: 297 DOES:
298 id: Heteronym Room/Panel_does_does 298 id: Heteronym Room/Panel_does_does
299 tag: midwhite 299 tag: midwhite
300 MOBILE: 300 MOBILE (1):
301 id: Heteronym Room/Panel_mobile_mobile 301 id: Heteronym Room/Panel_mobile_mobile
302 tag: double midwhite 302 tag: double midwhite
303 subtag: left 303 subtag: left
@@ -399,8 +399,7 @@
399 door: Crossroads Entrance 399 door: Crossroads Entrance
400 The Tenacious: 400 The Tenacious:
401 door: Tenacious Entrance 401 door: Tenacious Entrance
402 Warts Straw Area: 402 Near Far Area: True
403 door: Symmetry Door
404 Hedge Maze: 403 Hedge Maze:
405 door: Shortcut to Hedge Maze 404 door: Shortcut to Hedge Maze
406 Orange Tower First Floor: 405 Orange Tower First Floor:
@@ -427,14 +426,6 @@
427 id: Palindrome Room/Panel_slaughter_laughter 426 id: Palindrome Room/Panel_slaughter_laughter
428 colors: red 427 colors: red
429 tag: midred 428 tag: midred
430 NEAR:
431 id: Symmetry Room/Panel_near_far
432 colors: black
433 tag: botblack
434 FAR:
435 id: Symmetry Room/Panel_far_near
436 colors: black
437 tag: botblack
438 TRACE: 429 TRACE:
439 id: Maze Room/Panel_trace_trace 430 id: Maze Room/Panel_trace_trace
440 tag: midwhite 431 tag: midwhite
@@ -477,14 +468,6 @@
477 group: Entrances to The Tenacious 468 group: Entrances to The Tenacious
478 panels: 469 panels:
479 - SLAUGHTER 470 - SLAUGHTER
480 Symmetry Door:
481 id:
482 - Symmetry Room Area Doors/Door_near_far
483 - Symmetry Room Area Doors/Door_far_near
484 group: Symmetry Doors
485 panels:
486 - NEAR
487 - FAR
488 Shortcut to Hedge Maze: 471 Shortcut to Hedge Maze:
489 id: Maze Area Doors/Door_trace_trace 472 id: Maze Area Doors/Door_trace_trace
490 group: Hedge Maze Doors 473 group: Hedge Maze Doors
@@ -548,7 +531,7 @@
548 id: Lingo Room/Panel_shortcut 531 id: Lingo Room/Panel_shortcut
549 colors: yellow 532 colors: yellow
550 tag: midyellow 533 tag: midyellow
551 PILGRIMAGE: 534 PILGRIM:
552 id: Lingo Room/Panel_pilgrim 535 id: Lingo Room/Panel_pilgrim
553 colors: blue 536 colors: blue
554 tag: midblue 537 tag: midblue
@@ -569,7 +552,7 @@
569 Exit: 552 Exit:
570 event: True 553 event: True
571 panels: 554 panels:
572 - PILGRIMAGE 555 - PILGRIM
573 Pilgrim Room: 556 Pilgrim Room:
574 entrances: 557 entrances:
575 The Seeker: 558 The Seeker:
@@ -755,7 +738,7 @@
755 panels: 738 panels:
756 - TURN 739 - TURN
757 - room: Orange Tower Fourth Floor 740 - room: Orange Tower Fourth Floor
758 panel: RUNT 741 panel: RUNT (1)
759 Words Sword Door: 742 Words Sword Door:
760 id: 743 id:
761 - Shuffle Room Area Doors/Door_words_shuffle_3 744 - Shuffle Room Area Doors/Door_words_shuffle_3
@@ -962,11 +945,36 @@
962 - LEVEL (White) 945 - LEVEL (White)
963 - RACECAR (White) 946 - RACECAR (White)
964 - SOLOS (White) 947 - SOLOS (White)
948 Near Far Area:
949 entrances:
950 Hub Room: True
951 Warts Straw Area:
952 door: Door
953 panels:
954 NEAR:
955 id: Symmetry Room/Panel_near_far
956 colors: black
957 tag: botblack
958 FAR:
959 id: Symmetry Room/Panel_far_near
960 colors: black
961 tag: botblack
962 doors:
963 Door:
964 id:
965 - Symmetry Room Area Doors/Door_near_far
966 - Symmetry Room Area Doors/Door_far_near
967 group: Symmetry Doors
968 item_name: Symmetry Room - Near Far Door
969 location_name: Symmetry Room - NEAR, FAR
970 panels:
971 - NEAR
972 - FAR
965 Warts Straw Area: 973 Warts Straw Area:
966 entrances: 974 entrances:
967 Hub Room: 975 Near Far Area:
968 room: Hub Room 976 room: Near Far Area
969 door: Symmetry Door 977 door: Door
970 Leaf Feel Area: 978 Leaf Feel Area:
971 door: Door 979 door: Door
972 panels: 980 panels:
@@ -984,6 +992,8 @@
984 - Symmetry Room Area Doors/Door_warts_straw 992 - Symmetry Room Area Doors/Door_warts_straw
985 - Symmetry Room Area Doors/Door_straw_warts 993 - Symmetry Room Area Doors/Door_straw_warts
986 group: Symmetry Doors 994 group: Symmetry Doors
995 item_name: Symmetry Room - Warts Straw Door
996 location_name: Symmetry Room - WARTS, STRAW
987 panels: 997 panels:
988 - WARTS 998 - WARTS
989 - STRAW 999 - STRAW
@@ -1009,6 +1019,8 @@
1009 - Symmetry Room Area Doors/Door_leaf_feel 1019 - Symmetry Room Area Doors/Door_leaf_feel
1010 - Symmetry Room Area Doors/Door_feel_leaf 1020 - Symmetry Room Area Doors/Door_feel_leaf
1011 group: Symmetry Doors 1021 group: Symmetry Doors
1022 item_name: Symmetry Room - Leaf Feel Door
1023 location_name: Symmetry Room - LEAF, FEEL
1012 panels: 1024 panels:
1013 - LEAF 1025 - LEAF
1014 - FEEL 1026 - FEEL
@@ -1120,7 +1132,7 @@
1120 tag: forbid 1132 tag: forbid
1121 required_panel: 1133 required_panel:
1122 - room: Outside The Bold 1134 - room: Outside The Bold
1123 panel: MOUTH 1135 panel: SOUND
1124 - room: Outside The Bold 1136 - room: Outside The Bold
1125 panel: YEAST 1137 panel: YEAST
1126 - room: Outside The Bold 1138 - room: Outside The Bold
@@ -1436,7 +1448,7 @@
1436 entrances: 1448 entrances:
1437 The Perceptive: True 1449 The Perceptive: True
1438 panels: 1450 panels:
1439 NAPS: 1451 SPAN:
1440 id: Naps Room/Panel_naps_span 1452 id: Naps Room/Panel_naps_span
1441 colors: black 1453 colors: black
1442 tag: midblack 1454 tag: midblack
@@ -1462,7 +1474,7 @@
1462 location_name: The Fearless - First Floor Puzzles 1474 location_name: The Fearless - First Floor Puzzles
1463 group: Fearless Doors 1475 group: Fearless Doors
1464 panels: 1476 panels:
1465 - NAPS 1477 - SPAN
1466 - TEAM 1478 - TEAM
1467 - TEEM 1479 - TEEM
1468 - IMPATIENT 1480 - IMPATIENT
@@ -1564,11 +1576,11 @@
1564 required_door: 1576 required_door:
1565 door: Stairs 1577 door: Stairs
1566 achievement: The Observant 1578 achievement: The Observant
1567 BACK: 1579 FOUR (1):
1568 id: Look Room/Panel_four_back 1580 id: Look Room/Panel_four_back
1569 colors: green 1581 colors: green
1570 tag: forbid 1582 tag: forbid
1571 SIDE: 1583 FOUR (2):
1572 id: Look Room/Panel_four_side 1584 id: Look Room/Panel_four_side
1573 colors: green 1585 colors: green
1574 tag: forbid 1586 tag: forbid
@@ -1578,87 +1590,87 @@
1578 hunt: True 1590 hunt: True
1579 required_door: 1591 required_door:
1580 door: Backside Door 1592 door: Backside Door
1581 STAIRS: 1593 SIX:
1582 id: Look Room/Panel_six_stairs 1594 id: Look Room/Panel_six_stairs
1583 colors: green 1595 colors: green
1584 tag: forbid 1596 tag: forbid
1585 WAYS: 1597 FOUR (3):
1586 id: Look Room/Panel_four_ways 1598 id: Look Room/Panel_four_ways
1587 colors: green 1599 colors: green
1588 tag: forbid 1600 tag: forbid
1589 "ON": 1601 TWO (1):
1590 id: Look Room/Panel_two_on 1602 id: Look Room/Panel_two_on
1591 colors: green 1603 colors: green
1592 tag: forbid 1604 tag: forbid
1593 UP: 1605 TWO (2):
1594 id: Look Room/Panel_two_up 1606 id: Look Room/Panel_two_up
1595 colors: green 1607 colors: green
1596 tag: forbid 1608 tag: forbid
1597 SWIMS: 1609 FIVE:
1598 id: Look Room/Panel_five_swims 1610 id: Look Room/Panel_five_swims
1599 colors: green 1611 colors: green
1600 tag: forbid 1612 tag: forbid
1601 UPSTAIRS: 1613 BELOW (1):
1602 id: Look Room/Panel_eight_upstairs 1614 id: Look Room/Panel_eight_upstairs
1603 colors: green 1615 colors: green
1604 tag: forbid 1616 tag: forbid
1605 required_door: 1617 required_door:
1606 door: Stairs 1618 door: Stairs
1607 TOIL: 1619 BLUE:
1608 id: Look Room/Panel_blue_toil 1620 id: Look Room/Panel_blue_toil
1609 colors: green 1621 colors: green
1610 tag: forbid 1622 tag: forbid
1611 required_door: 1623 required_door:
1612 door: Stairs 1624 door: Stairs
1613 STOP: 1625 BELOW (2):
1614 id: Look Room/Panel_four_stop 1626 id: Look Room/Panel_four_stop
1615 colors: green 1627 colors: green
1616 tag: forbid 1628 tag: forbid
1617 required_door: 1629 required_door:
1618 door: Stairs 1630 door: Stairs
1619 TOP: 1631 MINT (1):
1620 id: Look Room/Panel_aqua_top 1632 id: Look Room/Panel_aqua_top
1621 colors: green 1633 colors: green
1622 tag: forbid 1634 tag: forbid
1623 required_door: 1635 required_door:
1624 door: Stairs 1636 door: Stairs
1625 HI: 1637 ESACREWOL:
1626 id: Look Room/Panel_blue_hi 1638 id: Look Room/Panel_blue_hi
1627 colors: green 1639 colors: green
1628 tag: forbid 1640 tag: forbid
1629 required_door: 1641 required_door:
1630 door: Stairs 1642 door: Stairs
1631 HI (2): 1643 EULB:
1632 id: Look Room/Panel_blue_hi2 1644 id: Look Room/Panel_blue_hi2
1633 colors: green 1645 colors: green
1634 tag: forbid 1646 tag: forbid
1635 required_door: 1647 required_door:
1636 door: Stairs 1648 door: Stairs
1637 "31": 1649 NUMBERS (1):
1638 id: Look Room/Panel_numbers_31 1650 id: Look Room/Panel_numbers_31
1639 colors: green 1651 colors: green
1640 tag: forbid 1652 tag: forbid
1641 required_door: 1653 required_door:
1642 door: Stairs 1654 door: Stairs
1643 "52": 1655 NUMBERS (2):
1644 id: Look Room/Panel_numbers_52 1656 id: Look Room/Panel_numbers_52
1645 colors: green 1657 colors: green
1646 tag: forbid 1658 tag: forbid
1647 required_door: 1659 required_door:
1648 door: Stairs 1660 door: Stairs
1649 OIL: 1661 MINT (2):
1650 id: Look Room/Panel_aqua_oil 1662 id: Look Room/Panel_aqua_oil
1651 colors: green 1663 colors: green
1652 tag: forbid 1664 tag: forbid
1653 required_door: 1665 required_door:
1654 door: Stairs 1666 door: Stairs
1655 BACKSIDE (GREEN): 1667 GREEN (1):
1656 id: Look Room/Panel_eight_backside 1668 id: Look Room/Panel_eight_backside
1657 colors: green 1669 colors: green
1658 tag: forbid 1670 tag: forbid
1659 required_door: 1671 required_door:
1660 door: Stairs 1672 door: Stairs
1661 SIDEWAYS: 1673 GREEN (2):
1662 id: Look Room/Panel_eight_sideways 1674 id: Look Room/Panel_eight_sideways
1663 colors: green 1675 colors: green
1664 tag: forbid 1676 tag: forbid
@@ -1669,13 +1681,13 @@
1669 id: Maze Area Doors/Door_backside 1681 id: Maze Area Doors/Door_backside
1670 group: Backside Doors 1682 group: Backside Doors
1671 panels: 1683 panels:
1672 - BACK 1684 - FOUR (1)
1673 - SIDE 1685 - FOUR (2)
1674 Stairs: 1686 Stairs:
1675 id: Maze Area Doors/Door_stairs 1687 id: Maze Area Doors/Door_stairs
1676 group: Observant Doors 1688 group: Observant Doors
1677 panels: 1689 panels:
1678 - STAIRS 1690 - SIX
1679 The Incomparable: 1691 The Incomparable:
1680 entrances: 1692 entrances:
1681 The Observant: True # Assuming that access to The Observant includes access to the right entrance 1693 The Observant: True # Assuming that access to The Observant includes access to the right entrance
@@ -2005,7 +2017,7 @@
2005 Courtyard: True 2017 Courtyard: True
2006 Roof: True # through the sunwarp 2018 Roof: True # through the sunwarp
2007 panels: 2019 panels:
2008 RUNT: 2020 RUNT (1):
2009 id: Shuffle Room/Panel_turn_runt2 2021 id: Shuffle Room/Panel_turn_runt2
2010 colors: yellow 2022 colors: yellow
2011 tag: midyellow 2023 tag: midyellow
@@ -2219,6 +2231,7 @@
2219 - Master Room Doors/Door_master_down 2231 - Master Room Doors/Door_master_down
2220 - Master Room Doors/Door_master_down2 2232 - Master Room Doors/Door_master_down2
2221 skip_location: True 2233 skip_location: True
2234 item_name: Mastery
2222 panels: 2235 panels:
2223 - THE MASTER 2236 - THE MASTER
2224 Mastery Panels: 2237 Mastery Panels:
@@ -2235,25 +2248,25 @@
2235 panel: MASTERY 2248 panel: MASTERY
2236 - room: Hedge Maze 2249 - room: Hedge Maze
2237 panel: MASTERY (1) 2250 panel: MASTERY (1)
2238 - room: Roof 2251 - room: Behind A Smile
2239 panel: MASTERY (1) 2252 panel: MASTERY
2240 - room: Roof 2253 - room: Sixteen Colorful Squares
2241 panel: MASTERY (2) 2254 panel: MASTERY
2242 - MASTERY 2255 - MASTERY
2243 - room: Hedge Maze 2256 - room: Hedge Maze
2244 panel: MASTERY (2) 2257 panel: MASTERY (2)
2245 - room: Roof 2258 - room: Among Treetops
2246 panel: MASTERY (3) 2259 panel: MASTERY
2247 - room: Roof 2260 - room: Horizon's Edge
2248 panel: MASTERY (4) 2261 panel: MASTERY
2249 - room: Roof 2262 - room: Beneath The Lookout
2250 panel: MASTERY (5) 2263 panel: MASTERY
2251 - room: Elements Area 2264 - room: Elements Area
2252 panel: MASTERY 2265 panel: MASTERY
2253 - room: Pilgrim Antechamber 2266 - room: Pilgrim Antechamber
2254 panel: MASTERY 2267 panel: MASTERY
2255 - room: Roof 2268 - room: Rooftop Staircase
2256 panel: MASTERY (6) 2269 panel: MASTERY
2257 paintings: 2270 paintings:
2258 - id: map_painting2 2271 - id: map_painting2
2259 orientation: north 2272 orientation: north
@@ -2265,52 +2278,75 @@
2265 Crossroads: 2278 Crossroads:
2266 room: Crossroads 2279 room: Crossroads
2267 door: Roof Access 2280 door: Roof Access
2281 Behind A Smile:
2282 entrances:
2283 Roof: True
2268 panels: 2284 panels:
2269 MASTERY (1): 2285 MASTERY:
2270 id: Master Room/Panel_mastery_mastery6 2286 id: Master Room/Panel_mastery_mastery6
2271 tag: midwhite 2287 tag: midwhite
2272 hunt: True 2288 hunt: True
2273 required_door: 2289 required_door:
2274 room: Orange Tower Seventh Floor 2290 room: Orange Tower Seventh Floor
2275 door: Mastery 2291 door: Mastery
2276 MASTERY (2): 2292 STAIRCASE:
2293 id: Open Areas/Panel_staircase
2294 tag: midwhite
2295 Sixteen Colorful Squares:
2296 entrances:
2297 Roof: True
2298 panels:
2299 MASTERY:
2277 id: Master Room/Panel_mastery_mastery7 2300 id: Master Room/Panel_mastery_mastery7
2278 tag: midwhite 2301 tag: midwhite
2279 hunt: True 2302 hunt: True
2280 required_door: 2303 required_door:
2281 room: Orange Tower Seventh Floor 2304 room: Orange Tower Seventh Floor
2282 door: Mastery 2305 door: Mastery
2283 MASTERY (3): 2306 Among Treetops:
2307 entrances:
2308 Roof: True
2309 panels:
2310 MASTERY:
2284 id: Master Room/Panel_mastery_mastery10 2311 id: Master Room/Panel_mastery_mastery10
2285 tag: midwhite 2312 tag: midwhite
2286 hunt: True 2313 hunt: True
2287 required_door: 2314 required_door:
2288 room: Orange Tower Seventh Floor 2315 room: Orange Tower Seventh Floor
2289 door: Mastery 2316 door: Mastery
2290 MASTERY (4): 2317 Horizon's Edge:
2318 entrances:
2319 Roof: True
2320 panels:
2321 MASTERY:
2291 id: Master Room/Panel_mastery_mastery11 2322 id: Master Room/Panel_mastery_mastery11
2292 tag: midwhite 2323 tag: midwhite
2293 hunt: True 2324 hunt: True
2294 required_door: 2325 required_door:
2295 room: Orange Tower Seventh Floor 2326 room: Orange Tower Seventh Floor
2296 door: Mastery 2327 door: Mastery
2297 MASTERY (5): 2328 Beneath The Lookout:
2329 entrances:
2330 Roof: True
2331 panels:
2332 MASTERY:
2298 id: Master Room/Panel_mastery_mastery12 2333 id: Master Room/Panel_mastery_mastery12
2299 tag: midwhite 2334 tag: midwhite
2300 hunt: True 2335 hunt: True
2301 required_door: 2336 required_door:
2302 room: Orange Tower Seventh Floor 2337 room: Orange Tower Seventh Floor
2303 door: Mastery 2338 door: Mastery
2304 MASTERY (6): 2339 Rooftop Staircase:
2340 entrances:
2341 Roof: True
2342 panels:
2343 MASTERY:
2305 id: Master Room/Panel_mastery_mastery15 2344 id: Master Room/Panel_mastery_mastery15
2306 tag: midwhite 2345 tag: midwhite
2307 hunt: True 2346 hunt: True
2308 required_door: 2347 required_door:
2309 room: Orange Tower Seventh Floor 2348 room: Orange Tower Seventh Floor
2310 door: Mastery 2349 door: Mastery
2311 STAIRCASE:
2312 id: Open Areas/Panel_staircase
2313 tag: midwhite
2314 Orange Tower Basement: 2350 Orange Tower Basement:
2315 entrances: 2351 entrances:
2316 Orange Tower Sixth Floor: 2352 Orange Tower Sixth Floor:
@@ -2632,9 +2668,7 @@
2632 tag: forbid 2668 tag: forbid
2633 doors: 2669 doors:
2634 Progress Door: 2670 Progress Door:
2635 id: 2671 id: Doorway Room Doors/Door_gray
2636 - Doorway Room Doors/Door_gray
2637 - Doorway Room Doors/Door_gray2 # See comment below
2638 item_name: The Colorful - Gray Door 2672 item_name: The Colorful - Gray Door
2639 location_name: The Colorful - Gray 2673 location_name: The Colorful - Gray
2640 group: Colorful Doors 2674 group: Colorful Doors
@@ -2784,6 +2818,7 @@
2784 door: Exit 2818 door: Exit
2785 Eight Alcove: 2819 Eight Alcove:
2786 door: Eight Door 2820 door: Eight Door
2821 The Optimistic: True
2787 panels: 2822 panels:
2788 SEVEN (1): 2823 SEVEN (1):
2789 id: Backside Room/Panel_seven_seven_5 2824 id: Backside Room/Panel_seven_seven_5
@@ -2833,21 +2868,11 @@
2833 id: Rhyme Room/Panel_locked_knocked 2868 id: Rhyme Room/Panel_locked_knocked
2834 colors: purple 2869 colors: purple
2835 tag: midpurp 2870 tag: midpurp
2836 BACKSIDE: 2871 PAST (1):
2837 id: Backside Room/Panel_backside_1
2838 tag: midwhite
2839 The Optimistic:
2840 id: Countdown Panels/Panel_optimistic_optimistic
2841 check: True
2842 tag: forbid
2843 required_door:
2844 door: Backsides
2845 achievement: The Optimistic
2846 PAST:
2847 id: Shuffle Room/Panel_past_present 2872 id: Shuffle Room/Panel_past_present
2848 colors: brown 2873 colors: brown
2849 tag: botbrown 2874 tag: botbrown
2850 FUTURE: 2875 FUTURE (1):
2851 id: Shuffle Room/Panel_future_present 2876 id: Shuffle Room/Panel_future_present
2852 colors: 2877 colors:
2853 - brown 2878 - brown
@@ -2944,17 +2969,6 @@
2944 panel: GREEN 2969 panel: GREEN
2945 - room: Outside The Agreeable 2970 - room: Outside The Agreeable
2946 panel: PURPLE 2971 panel: PURPLE
2947 Backsides:
2948 event: True
2949 panels:
2950 - room: The Observant
2951 panel: BACKSIDE
2952 - room: Yellow Backside Area
2953 panel: BACKSIDE
2954 - room: Directional Gallery
2955 panel: BACKSIDE
2956 - room: The Bearer
2957 panel: BACKSIDE
2958 Eight Door: 2972 Eight Door:
2959 id: Red Blue Purple Room Area Doors/Door_a_strands2 2973 id: Red Blue Purple Room Area Doors/Door_a_strands2
2960 skip_location: True 2974 skip_location: True
@@ -3064,6 +3078,28 @@
3064 id: Rhyme Room/Panel_bed_dead 3078 id: Rhyme Room/Panel_bed_dead
3065 colors: purple 3079 colors: purple
3066 tag: toppurp 3080 tag: toppurp
3081 The Optimistic:
3082 entrances:
3083 Outside The Initiated: True
3084 panels:
3085 BACKSIDE:
3086 id: Backside Room/Panel_backside_1
3087 tag: midwhite
3088 Achievement:
3089 id: Countdown Panels/Panel_optimistic_optimistic
3090 check: True
3091 tag: forbid
3092 required_panel:
3093 - panel: BACKSIDE
3094 - room: The Observant
3095 panel: BACKSIDE
3096 - room: Yellow Backside Area
3097 panel: BACKSIDE
3098 - room: Directional Gallery
3099 panel: BACKSIDE
3100 - room: The Bearer
3101 panel: BACKSIDE
3102 achievement: The Optimistic
3067 The Traveled: 3103 The Traveled:
3068 entrances: 3104 entrances:
3069 Hub Room: 3105 Hub Room:
@@ -3164,7 +3200,7 @@
3164 Outside The Undeterred: True 3200 Outside The Undeterred: True
3165 Crossroads: True 3201 Crossroads: True
3166 Hedge Maze: True 3202 Hedge Maze: True
3167 Outside The Initiated: True # backside 3203 The Optimistic: True # backside
3168 Directional Gallery: True # backside 3204 Directional Gallery: True # backside
3169 Yellow Backside Area: True 3205 Yellow Backside Area: True
3170 The Bearer: 3206 The Bearer:
@@ -3181,7 +3217,7 @@
3181 door: Shortcut to The Steady 3217 door: Shortcut to The Steady
3182 The Bearer: 3218 The Bearer:
3183 room: The Bearer 3219 room: The Bearer
3184 door: Shortcut to The Bold 3220 door: Entrance
3185 Directional Gallery: 3221 Directional Gallery:
3186 # There is a painting warp here from the Directional Gallery, but it 3222 # There is a painting warp here from the Directional Gallery, but it
3187 # only appears when the sixes are revealed. It could be its own item if 3223 # only appears when the sixes are revealed. It could be its own item if
@@ -3252,7 +3288,7 @@
3252 tag: midwhite 3288 tag: midwhite
3253 required_door: 3289 required_door:
3254 door: Stargazer Door 3290 door: Stargazer Door
3255 MOUTH: 3291 SOUND:
3256 id: Cross Room/Panel_mouth_south 3292 id: Cross Room/Panel_mouth_south
3257 colors: purple 3293 colors: purple
3258 tag: midpurp 3294 tag: midpurp
@@ -3596,7 +3632,7 @@
3596 id: Blue Room/Panel_bone_skeleton 3632 id: Blue Room/Panel_bone_skeleton
3597 colors: blue 3633 colors: blue
3598 tag: botblue 3634 tag: botblue
3599 EYE: 3635 EYE (1):
3600 id: Blue Room/Panel_mouth_face 3636 id: Blue Room/Panel_mouth_face
3601 colors: blue 3637 colors: blue
3602 tag: double botblue 3638 tag: double botblue
@@ -4115,7 +4151,7 @@
4115 The Bearer: 4151 The Bearer:
4116 entrances: 4152 entrances:
4117 Outside The Bold: 4153 Outside The Bold:
4118 door: Shortcut to The Bold 4154 door: Entrance
4119 Orange Tower Fifth Floor: 4155 Orange Tower Fifth Floor:
4120 room: Art Gallery 4156 room: Art Gallery
4121 door: Exit 4157 door: Exit
@@ -4192,7 +4228,7 @@
4192 - yellow 4228 - yellow
4193 tag: mid red yellow 4229 tag: mid red yellow
4194 doors: 4230 doors:
4195 Shortcut to The Bold: 4231 Entrance:
4196 id: Red Blue Purple Room Area Doors/Door_middle_middle 4232 id: Red Blue Purple Room Area Doors/Door_middle_middle
4197 panels: 4233 panels:
4198 - MIDDLE 4234 - MIDDLE
@@ -4321,21 +4357,21 @@
4321 door: Side Area Shortcut 4357 door: Side Area Shortcut
4322 Roof: True 4358 Roof: True
4323 panels: 4359 panels:
4324 SNOW: 4360 SMILE:
4325 id: Cross Room/Panel_smile_lime 4361 id: Cross Room/Panel_smile_lime
4326 colors: 4362 colors:
4327 - red 4363 - red
4328 - yellow 4364 - yellow
4329 tag: mid yellow red 4365 tag: mid yellow red
4330 SMILE: 4366 required_panel:
4367 room: The Bearer (North)
4368 panel: WARTS
4369 SNOW:
4331 id: Cross Room/Panel_snow_won 4370 id: Cross Room/Panel_snow_won
4332 colors: 4371 colors:
4333 - red 4372 - red
4334 - yellow 4373 - yellow
4335 tag: mid red yellow 4374 tag: mid red yellow
4336 required_panel:
4337 room: The Bearer (North)
4338 panel: WARTS
4339 doors: 4375 doors:
4340 Side Area Shortcut: 4376 Side Area Shortcut:
4341 event: True 4377 event: True
@@ -4414,7 +4450,7 @@
4414 - room: The Bearer (West) 4450 - room: The Bearer (West)
4415 panel: SMILE 4451 panel: SMILE
4416 - room: Outside The Bold 4452 - room: Outside The Bold
4417 panel: MOUTH 4453 panel: SOUND
4418 - room: Outside The Bold 4454 - room: Outside The Bold
4419 panel: YEAST 4455 panel: YEAST
4420 - room: Outside The Bold 4456 - room: Outside The Bold
@@ -6129,7 +6165,7 @@
6129 id: Painting Room/Panel_our_four 6165 id: Painting Room/Panel_our_four
6130 colors: blue 6166 colors: blue
6131 tag: midblue 6167 tag: midblue
6132 ONE ROAD MANY TURNS: 6168 ORDER:
6133 id: Painting Room/Panel_order_onepathmanyturns 6169 id: Painting Room/Panel_order_onepathmanyturns
6134 tag: forbid 6170 tag: forbid
6135 colors: 6171 colors:
@@ -6186,7 +6222,7 @@
6186 include_reduce: True 6222 include_reduce: True
6187 item_name: Orange Tower Fifth Floor - Quadruple Intersection 6223 item_name: Orange Tower Fifth Floor - Quadruple Intersection
6188 panels: 6224 panels:
6189 - ONE ROAD MANY TURNS 6225 - ORDER
6190 paintings: 6226 paintings:
6191 - id: smile_painting_3 6227 - id: smile_painting_3
6192 orientation: west 6228 orientation: west
@@ -6678,7 +6714,7 @@
6678 - room: Rhyme Room (Target) 6714 - room: Rhyme Room (Target)
6679 panel: PISTOL 6715 panel: PISTOL
6680 - room: Rhyme Room (Target) 6716 - room: Rhyme Room (Target)
6681 panel: QUARTZ 6717 panel: GEM
6682 Rhyme Room (Target): 6718 Rhyme Room (Target):
6683 entrances: 6719 entrances:
6684 Rhyme Room (Smiley): # one-way 6720 Rhyme Room (Smiley): # one-way
@@ -6706,7 +6742,7 @@
6706 tag: syn rhyme 6742 tag: syn rhyme
6707 subtag: top 6743 subtag: top
6708 link: rhyme CRYSTAL 6744 link: rhyme CRYSTAL
6709 QUARTZ: 6745 GEM:
6710 id: Double Room/Panel_crystal_syn 6746 id: Double Room/Panel_crystal_syn
6711 colors: purple 6747 colors: purple
6712 tag: syn rhyme 6748 tag: syn rhyme
@@ -6731,7 +6767,7 @@
6731 group: Rhyme Room Doors 6767 group: Rhyme Room Doors
6732 panels: 6768 panels:
6733 - PISTOL 6769 - PISTOL
6734 - QUARTZ 6770 - GEM
6735 - INNOVATIVE (Top) 6771 - INNOVATIVE (Top)
6736 - INNOVATIVE (Bottom) 6772 - INNOVATIVE (Bottom)
6737 paintings: 6773 paintings:
@@ -6789,22 +6825,18 @@
6789 id: Panel Room/Panel_room_floor_5 6825 id: Panel Room/Panel_room_floor_5
6790 colors: gray 6826 colors: gray
6791 tag: forbid 6827 tag: forbid
6792 FLOOR (7): 6828 FLOOR (6):
6793 id: Panel Room/Panel_room_floor_7 6829 id: Panel Room/Panel_room_floor_7
6794 colors: gray 6830 colors: gray
6795 tag: forbid 6831 tag: forbid
6796 FLOOR (8): 6832 FLOOR (7):
6797 id: Panel Room/Panel_room_floor_8 6833 id: Panel Room/Panel_room_floor_8
6798 colors: gray 6834 colors: gray
6799 tag: forbid 6835 tag: forbid
6800 FLOOR (9): 6836 FLOOR (8):
6801 id: Panel Room/Panel_room_floor_9 6837 id: Panel Room/Panel_room_floor_9
6802 colors: gray 6838 colors: gray
6803 tag: forbid 6839 tag: forbid
6804 FLOOR (10):
6805 id: Panel Room/Panel_room_floor_10
6806 colors: gray
6807 tag: forbid
6808 CEILING (1): 6840 CEILING (1):
6809 id: Panel Room/Panel_room_ceiling_1 6841 id: Panel Room/Panel_room_ceiling_1
6810 colors: gray 6842 colors: gray
@@ -6825,6 +6857,10 @@
6825 id: Panel Room/Panel_room_ceiling_5 6857 id: Panel Room/Panel_room_ceiling_5
6826 colors: gray 6858 colors: gray
6827 tag: forbid 6859 tag: forbid
6860 CEILING (6):
6861 id: Panel Room/Panel_room_floor_10
6862 colors: gray
6863 tag: forbid
6828 WALL (1): 6864 WALL (1):
6829 id: Panel Room/Panel_room_wall_1 6865 id: Panel Room/Panel_room_wall_1
6830 colors: gray 6866 colors: gray
@@ -7083,7 +7119,7 @@
7083 id: Hangry Room/Panel_red_top_3 7119 id: Hangry Room/Panel_red_top_3
7084 colors: red 7120 colors: red
7085 tag: topred 7121 tag: topred
7086 FLUMMOXED: 7122 FLUSTERED:
7087 id: Hangry Room/Panel_red_top_4 7123 id: Hangry Room/Panel_red_top_4
7088 colors: red 7124 colors: red
7089 tag: topred 7125 tag: topred
@@ -7586,7 +7622,7 @@
7586 - black 7622 - black
7587 - blue 7623 - blue
7588 tag: chain mid black blue 7624 tag: chain mid black blue
7589 BREAD: 7625 CHEESE:
7590 id: Challenge Room/Panel_bread_mold 7626 id: Challenge Room/Panel_bread_mold
7591 colors: brown 7627 colors: brown
7592 tag: double botbrown 7628 tag: double botbrown
@@ -7633,7 +7669,7 @@
7633 id: Challenge Room/Panel_double_anagram_5 7669 id: Challenge Room/Panel_double_anagram_5
7634 colors: yellow 7670 colors: yellow
7635 tag: midyellow 7671 tag: midyellow
7636 FACTS: 7672 FACTS (Chain):
7637 id: Challenge Room/Panel_facts 7673 id: Challenge Room/Panel_facts
7638 colors: 7674 colors:
7639 - red 7675 - red
@@ -7643,18 +7679,18 @@
7643 id: Challenge Room/Panel_facts2 7679 id: Challenge Room/Panel_facts2
7644 colors: red 7680 colors: red
7645 tag: forbid 7681 tag: forbid
7646 FACTS (3): 7682 FACTS (2):
7647 id: Challenge Room/Panel_facts3 7683 id: Challenge Room/Panel_facts3
7648 tag: forbid 7684 tag: forbid
7649 FACTS (4): 7685 FACTS (3):
7650 id: Challenge Room/Panel_facts4 7686 id: Challenge Room/Panel_facts4
7651 colors: blue 7687 colors: blue
7652 tag: forbid 7688 tag: forbid
7653 FACTS (5): 7689 FACTS (4):
7654 id: Challenge Room/Panel_facts5 7690 id: Challenge Room/Panel_facts5
7655 colors: blue 7691 colors: blue
7656 tag: forbid 7692 tag: forbid
7657 FACTS (6): 7693 FACTS (5):
7658 id: Challenge Room/Panel_facts6 7694 id: Challenge Room/Panel_facts6
7659 colors: blue 7695 colors: blue
7660 tag: forbid 7696 tag: forbid
diff --git a/data/ids.yaml b/data/ids.yaml index 56c22ad..4cad948 100644 --- a/data/ids.yaml +++ b/data/ids.yaml
@@ -31,12 +31,12 @@ panels:
31 LIES: 444408 31 LIES: 444408
32 The Seeker: 32 The Seeker:
33 Achievement: 444409 33 Achievement: 444409
34 BEAR: 444410 34 BEAR (1): 444410
35 MINE: 444411 35 MINE (1): 444411
36 MINE (2): 444412 36 MINE (2): 444412
37 BOW: 444413 37 BOW: 444413
38 DOES: 444414 38 DOES: 444414
39 MOBILE: 444415 39 MOBILE (1): 444415
40 MOBILE (2): 444416 40 MOBILE (2): 444416
41 DESERT: 444417 41 DESERT: 444417
42 DESSERT: 444418 42 DESSERT: 444418
@@ -57,8 +57,6 @@ panels:
57 Hub Room: 57 Hub Room:
58 ORDER: 444432 58 ORDER: 444432
59 SLAUGHTER: 444433 59 SLAUGHTER: 444433
60 NEAR: 444434
61 FAR: 444435
62 TRACE: 444436 60 TRACE: 444436
63 RAT: 444437 61 RAT: 444437
64 OPEN: 444438 62 OPEN: 444438
@@ -72,7 +70,7 @@ panels:
72 EIGHT: 444445 70 EIGHT: 444445
73 Pilgrim Antechamber: 71 Pilgrim Antechamber:
74 HOT CRUST: 444446 72 HOT CRUST: 444446
75 PILGRIMAGE: 444447 73 PILGRIM: 444447
76 MASTERY: 444448 74 MASTERY: 444448
77 Pilgrim Room: 75 Pilgrim Room:
78 THIS: 444449 76 THIS: 444449
@@ -123,6 +121,9 @@ panels:
123 RACECAR (White): 444489 121 RACECAR (White): 444489
124 SOLOS (White): 444490 122 SOLOS (White): 444490
125 Achievement: 444491 123 Achievement: 444491
124 Near Far Area:
125 NEAR: 444434
126 FAR: 444435
126 Warts Straw Area: 127 Warts Straw Area:
127 WARTS: 444492 128 WARTS: 444492
128 STRAW: 444493 129 STRAW: 444493
@@ -187,7 +188,7 @@ panels:
187 Achievement: 444546 188 Achievement: 444546
188 GAZE: 444547 189 GAZE: 444547
189 The Fearless (First Floor): 190 The Fearless (First Floor):
190 NAPS: 444548 191 SPAN: 444548
191 TEAM: 444549 192 TEAM: 444549
192 TEEM: 444550 193 TEEM: 444550
193 IMPATIENT: 444551 194 IMPATIENT: 444551
@@ -208,25 +209,25 @@ panels:
208 EVEN: 444564 209 EVEN: 444564
209 The Observant: 210 The Observant:
210 Achievement: 444565 211 Achievement: 444565
211 BACK: 444566 212 FOUR (1): 444566
212 SIDE: 444567 213 FOUR (2): 444567
213 BACKSIDE: 444568 214 BACKSIDE: 444568
214 STAIRS: 444569 215 SIX: 444569
215 WAYS: 444570 216 FOUR (3): 444570
216 'ON': 444571 217 TWO (1): 444571
217 UP: 444572 218 TWO (2): 444572
218 SWIMS: 444573 219 FIVE: 444573
219 UPSTAIRS: 444574 220 BELOW (1): 444574
220 TOIL: 444575 221 BLUE: 444575
221 STOP: 444576 222 BELOW (2): 444576
222 TOP: 444577 223 MINT (1): 444577
223 HI: 444578 224 ESACREWOL: 444578
224 HI (2): 444579 225 EULB: 444579
225 '31': 444580 226 NUMBERS (1): 444580
226 '52': 444581 227 NUMBERS (2): 444581
227 OIL: 444582 228 MINT (2): 444582
228 BACKSIDE (GREEN): 444583 229 GREEN (1): 444583
229 SIDEWAYS: 444584 230 GREEN (2): 444584
230 The Incomparable: 231 The Incomparable:
231 Achievement: 444585 232 Achievement: 444585
232 A (One): 444586 233 A (One): 444586
@@ -254,7 +255,7 @@ panels:
254 RED: 444605 255 RED: 444605
255 DEER + WREN: 444606 256 DEER + WREN: 444606
256 Orange Tower Fourth Floor: 257 Orange Tower Fourth Floor:
257 RUNT: 444607 258 RUNT (1): 444607
258 RUNT (2): 444608 259 RUNT (2): 444608
259 LEARNS + UNSEW: 444609 260 LEARNS + UNSEW: 444609
260 HOT CRUSTS: 444610 261 HOT CRUSTS: 444610
@@ -279,14 +280,19 @@ panels:
279 THE END: 444620 280 THE END: 444620
280 THE MASTER: 444621 281 THE MASTER: 444621
281 MASTERY: 444622 282 MASTERY: 444622
282 Roof: 283 Behind A Smile:
283 MASTERY (1): 444623 284 MASTERY: 444623
284 MASTERY (2): 444624
285 MASTERY (3): 444625
286 MASTERY (4): 444626
287 MASTERY (5): 444627
288 MASTERY (6): 444628
289 STAIRCASE: 444629 285 STAIRCASE: 444629
286 Sixteen Colorful Squares:
287 MASTERY: 444624
288 Among Treetops:
289 MASTERY: 444625
290 Horizon's Edge:
291 MASTERY: 444626
292 Beneath The Lookout:
293 MASTERY: 444627
294 Rooftop Staircase:
295 MASTERY: 444628
290 Orange Tower Basement: 296 Orange Tower Basement:
291 MASTERY: 444630 297 MASTERY: 444630
292 THE LIBRARY: 444631 298 THE LIBRARY: 444631
@@ -341,16 +347,17 @@ panels:
341 ORANGE: 444663 347 ORANGE: 444663
342 UNCOVER: 444664 348 UNCOVER: 444664
343 OXEN: 444665 349 OXEN: 444665
344 BACKSIDE: 444666 350 PAST (1): 444668
345 The Optimistic: 444667 351 FUTURE (1): 444669
346 PAST: 444668
347 FUTURE: 444669
348 FUTURE (2): 444670 352 FUTURE (2): 444670
349 PAST (2): 444671 353 PAST (2): 444671
350 PRESENT: 444672 354 PRESENT: 444672
351 SMILE: 444673 355 SMILE: 444673
352 ANGERED: 444674 356 ANGERED: 444674
353 VOTE: 444675 357 VOTE: 444675
358 The Optimistic:
359 BACKSIDE: 444666
360 Achievement: 444667
354 The Initiated: 361 The Initiated:
355 Achievement: 444676 362 Achievement: 444676
356 DAUGHTER: 444677 363 DAUGHTER: 444677
@@ -400,7 +407,7 @@ panels:
400 ZEN: 444719 407 ZEN: 444719
401 SON: 444720 408 SON: 444720
402 STARGAZER: 444721 409 STARGAZER: 444721
403 MOUTH: 444722 410 SOUND: 444722
404 YEAST: 444723 411 YEAST: 444723
405 WET: 444724 412 WET: 444724
406 The Bold: 413 The Bold:
@@ -442,7 +449,7 @@ panels:
442 The Undeterred: 449 The Undeterred:
443 Achievement: 444759 450 Achievement: 444759
444 BONE: 444760 451 BONE: 444760
445 EYE: 444761 452 EYE (1): 444761
446 MOUTH: 444762 453 MOUTH: 444762
447 IRIS: 444763 454 IRIS: 444763
448 EYE (2): 444764 455 EYE (2): 444764
@@ -524,8 +531,8 @@ panels:
524 TENT: 444832 531 TENT: 444832
525 BOWL: 444833 532 BOWL: 444833
526 The Bearer (West): 533 The Bearer (West):
527 SNOW: 444834 534 SMILE: 444834
528 SMILE: 444835 535 SNOW: 444835
529 Bearer Side Area: 536 Bearer Side Area:
530 SHORTCUT: 444836 537 SHORTCUT: 444836
531 POTS: 444837 538 POTS: 444837
@@ -720,7 +727,7 @@ panels:
720 TRUSTWORTHY: 444978 727 TRUSTWORTHY: 444978
721 FREE: 444979 728 FREE: 444979
722 OUR: 444980 729 OUR: 444980
723 ONE ROAD MANY TURNS: 444981 730 ORDER: 444981
724 Art Gallery (Second Floor): 731 Art Gallery (Second Floor):
725 HOUSE: 444982 732 HOUSE: 444982
726 PATH: 444983 733 PATH: 444983
@@ -778,7 +785,7 @@ panels:
778 WILD: 445028 785 WILD: 445028
779 KID: 445029 786 KID: 445029
780 PISTOL: 445030 787 PISTOL: 445030
781 QUARTZ: 445031 788 GEM: 445031
782 INNOVATIVE (Top): 445032 789 INNOVATIVE (Top): 445032
783 INNOVATIVE (Bottom): 445033 790 INNOVATIVE (Bottom): 445033
784 Room Room: 791 Room Room:
@@ -792,15 +799,15 @@ panels:
792 FLOOR (3): 445041 799 FLOOR (3): 445041
793 FLOOR (4): 445042 800 FLOOR (4): 445042
794 FLOOR (5): 445043 801 FLOOR (5): 445043
795 FLOOR (7): 445044 802 FLOOR (6): 445044
796 FLOOR (8): 445045 803 FLOOR (7): 445045
797 FLOOR (9): 445046 804 FLOOR (8): 445046
798 FLOOR (10): 445047
799 CEILING (1): 445048 805 CEILING (1): 445048
800 CEILING (2): 445049 806 CEILING (2): 445049
801 CEILING (3): 445050 807 CEILING (3): 445050
802 CEILING (4): 445051 808 CEILING (4): 445051
803 CEILING (5): 445052 809 CEILING (5): 445052
810 CEILING (6): 445047
804 WALL (1): 445053 811 WALL (1): 445053
805 WALL (2): 445054 812 WALL (2): 445054
806 WALL (3): 445055 813 WALL (3): 445055
@@ -848,7 +855,7 @@ panels:
848 PANDEMIC (1): 445100 855 PANDEMIC (1): 445100
849 TRINITY: 445101 856 TRINITY: 445101
850 CHEMISTRY: 445102 857 CHEMISTRY: 445102
851 FLUMMOXED: 445103 858 FLUSTERED: 445103
852 PANDEMIC (2): 445104 859 PANDEMIC (2): 445104
853 COUNTERCLOCKWISE: 445105 860 COUNTERCLOCKWISE: 445105
854 FEARLESS: 445106 861 FEARLESS: 445106
@@ -934,7 +941,7 @@ panels:
934 CORNER: 445182 941 CORNER: 445182
935 STRAWBERRIES: 445183 942 STRAWBERRIES: 445183
936 GRUB: 445184 943 GRUB: 445184
937 BREAD: 445185 944 CHEESE: 445185
938 COLOR: 445186 945 COLOR: 445186
939 WRITER: 445187 946 WRITER: 445187
940 '02759': 445188 947 '02759': 445188
@@ -945,12 +952,12 @@ panels:
945 DUCK LOGO: 445193 952 DUCK LOGO: 445193
946 AVIAN GREEN: 445194 953 AVIAN GREEN: 445194
947 FEVER TEAR: 445195 954 FEVER TEAR: 445195
948 FACTS: 445196 955 FACTS (Chain): 445196
949 FACTS (1): 445197 956 FACTS (1): 445197
950 FACTS (3): 445198 957 FACTS (2): 445198
951 FACTS (4): 445199 958 FACTS (3): 445199
952 FACTS (5): 445200 959 FACTS (4): 445200
953 FACTS (6): 445201 960 FACTS (5): 445201
954 LAPEL SHEEP: 445202 961 LAPEL SHEEP: 445202
955doors: 962doors:
956 Starting Room: 963 Starting Room:
@@ -980,9 +987,6 @@ doors:
980 Tenacious Entrance: 987 Tenacious Entrance:
981 item: 444426 988 item: 444426
982 location: 444433 989 location: 444433
983 Symmetry Door:
984 item: 444428
985 location: 445204
986 Shortcut to Hedge Maze: 990 Shortcut to Hedge Maze:
987 item: 444430 991 item: 444430
988 location: 444436 992 location: 444436
@@ -1039,6 +1043,10 @@ doors:
1039 location: 445210 1043 location: 445210
1040 White Palindromes: 1044 White Palindromes:
1041 location: 445211 1045 location: 445211
1046 Near Far Area:
1047 Door:
1048 item: 444428
1049 location: 445204
1042 Warts Straw Area: 1050 Warts Straw Area:
1043 Door: 1051 Door:
1044 item: 444451 1052 item: 444451
@@ -1292,7 +1300,7 @@ doors:
1292 item: 444539 1300 item: 444539
1293 location: 444806 1301 location: 444806
1294 The Bearer: 1302 The Bearer:
1295 Shortcut to The Bold: 1303 Entrance:
1296 item: 444540 1304 item: 444540
1297 location: 444820 1305 location: 444820
1298 Backside Door: 1306 Backside Door:
diff --git a/player_logic.py b/player_logic.py index d87aa56..b2e5f77 100644 --- a/player_logic.py +++ b/player_logic.py
@@ -196,7 +196,7 @@ class LingoPlayerLogic:
196 ["Orange Tower Fourth Floor", "Hot Crusts Door"], ["Outside The Initiated", "Shortcut to Hub Room"], 196 ["Orange Tower Fourth Floor", "Hot Crusts Door"], ["Outside The Initiated", "Shortcut to Hub Room"],
197 ["Orange Tower First Floor", "Shortcut to Hub Room"], ["Directional Gallery", "Shortcut to The Undeterred"], 197 ["Orange Tower First Floor", "Shortcut to Hub Room"], ["Directional Gallery", "Shortcut to The Undeterred"],
198 ["Orange Tower First Floor", "Salt Pepper Door"], ["Hub Room", "Crossroads Entrance"], 198 ["Orange Tower First Floor", "Salt Pepper Door"], ["Hub Room", "Crossroads Entrance"],
199 ["Color Hunt", "Shortcut to The Steady"], ["The Bearer", "Shortcut to The Bold"], ["Art Gallery", "Exit"], 199 ["Color Hunt", "Shortcut to The Steady"], ["The Bearer", "Entrance"], ["Art Gallery", "Exit"],
200 ["The Tenacious", "Shortcut to Hub Room"], ["Outside The Agreeable", "Tenacious Entrance"] 200 ["The Tenacious", "Shortcut to Hub Room"], ["Outside The Agreeable", "Tenacious Entrance"]
201 ] 201 ]
202 pilgrimage_reqs = AccessRequirements() 202 pilgrimage_reqs = AccessRequirements()
diff --git a/test/TestProgressive.py b/test/TestProgressive.py index 0aaebe9..081d674 100644 --- a/test/TestProgressive.py +++ b/test/TestProgressive.py
@@ -96,7 +96,7 @@ class TestProgressiveArtGallery(LingoTestBase):
96 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Second Floor)", "Region", self.player)) 96 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Second Floor)", "Region", self.player))
97 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Third Floor)", "Region", self.player)) 97 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Third Floor)", "Region", self.player))
98 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Fourth Floor)", "Region", self.player)) 98 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Fourth Floor)", "Region", self.player))
99 self.assertFalse(self.can_reach_location("Art Gallery - ONE ROAD MANY TURNS")) 99 self.assertFalse(self.can_reach_location("Art Gallery - ORDER"))
100 self.assertFalse(self.multiworld.state.can_reach("Orange Tower Fifth Floor", "Region", self.player)) 100 self.assertFalse(self.multiworld.state.can_reach("Orange Tower Fifth Floor", "Region", self.player))
101 101
102 self.collect_by_name(["Second Room - Exit Door", "Crossroads - Tower Entrance", 102 self.collect_by_name(["Second Room - Exit Door", "Crossroads - Tower Entrance",
@@ -105,7 +105,7 @@ class TestProgressiveArtGallery(LingoTestBase):
105 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Second Floor)", "Region", self.player)) 105 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Second Floor)", "Region", self.player))
106 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Third Floor)", "Region", self.player)) 106 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Third Floor)", "Region", self.player))
107 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Fourth Floor)", "Region", self.player)) 107 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Fourth Floor)", "Region", self.player))
108 self.assertFalse(self.can_reach_location("Art Gallery - ONE ROAD MANY TURNS")) 108 self.assertFalse(self.can_reach_location("Art Gallery - ORDER"))
109 self.assertFalse(self.multiworld.state.can_reach("Orange Tower Fifth Floor", "Region", self.player)) 109 self.assertFalse(self.multiworld.state.can_reach("Orange Tower Fifth Floor", "Region", self.player))
110 110
111 progressive_gallery_room = self.get_items_by_name("Progressive Art Gallery") 111 progressive_gallery_room = self.get_items_by_name("Progressive Art Gallery")
@@ -115,7 +115,7 @@ class TestProgressiveArtGallery(LingoTestBase):
115 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Second Floor)", "Region", self.player)) 115 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Second Floor)", "Region", self.player))
116 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Third Floor)", "Region", self.player)) 116 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Third Floor)", "Region", self.player))
117 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Fourth Floor)", "Region", self.player)) 117 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Fourth Floor)", "Region", self.player))
118 self.assertFalse(self.can_reach_location("Art Gallery - ONE ROAD MANY TURNS")) 118 self.assertFalse(self.can_reach_location("Art Gallery - ORDER"))
119 self.assertFalse(self.multiworld.state.can_reach("Orange Tower Fifth Floor", "Region", self.player)) 119 self.assertFalse(self.multiworld.state.can_reach("Orange Tower Fifth Floor", "Region", self.player))
120 120
121 self.collect(progressive_gallery_room[1]) 121 self.collect(progressive_gallery_room[1])
@@ -123,7 +123,7 @@ class TestProgressiveArtGallery(LingoTestBase):
123 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Second Floor)", "Region", self.player)) 123 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Second Floor)", "Region", self.player))
124 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Third Floor)", "Region", self.player)) 124 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Third Floor)", "Region", self.player))
125 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Fourth Floor)", "Region", self.player)) 125 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Fourth Floor)", "Region", self.player))
126 self.assertFalse(self.can_reach_location("Art Gallery - ONE ROAD MANY TURNS")) 126 self.assertFalse(self.can_reach_location("Art Gallery - ORDER"))
127 self.assertFalse(self.multiworld.state.can_reach("Orange Tower Fifth Floor", "Region", self.player)) 127 self.assertFalse(self.multiworld.state.can_reach("Orange Tower Fifth Floor", "Region", self.player))
128 128
129 self.collect(progressive_gallery_room[2]) 129 self.collect(progressive_gallery_room[2])
@@ -131,7 +131,7 @@ class TestProgressiveArtGallery(LingoTestBase):
131 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Second Floor)", "Region", self.player)) 131 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Second Floor)", "Region", self.player))
132 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Third Floor)", "Region", self.player)) 132 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Third Floor)", "Region", self.player))
133 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Fourth Floor)", "Region", self.player)) 133 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Fourth Floor)", "Region", self.player))
134 self.assertFalse(self.can_reach_location("Art Gallery - ONE ROAD MANY TURNS")) 134 self.assertFalse(self.can_reach_location("Art Gallery - ORDER"))
135 self.assertFalse(self.multiworld.state.can_reach("Orange Tower Fifth Floor", "Region", self.player)) 135 self.assertFalse(self.multiworld.state.can_reach("Orange Tower Fifth Floor", "Region", self.player))
136 136
137 self.collect(progressive_gallery_room[3]) 137 self.collect(progressive_gallery_room[3])
@@ -139,7 +139,7 @@ class TestProgressiveArtGallery(LingoTestBase):
139 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Second Floor)", "Region", self.player)) 139 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Second Floor)", "Region", self.player))
140 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Third Floor)", "Region", self.player)) 140 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Third Floor)", "Region", self.player))
141 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Fourth Floor)", "Region", self.player)) 141 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Fourth Floor)", "Region", self.player))
142 self.assertTrue(self.can_reach_location("Art Gallery - ONE ROAD MANY TURNS")) 142 self.assertTrue(self.can_reach_location("Art Gallery - ORDER"))
143 self.assertFalse(self.multiworld.state.can_reach("Orange Tower Fifth Floor", "Region", self.player)) 143 self.assertFalse(self.multiworld.state.can_reach("Orange Tower Fifth Floor", "Region", self.player))
144 144
145 self.collect_by_name("Orange Tower Fifth Floor - Quadruple Intersection") 145 self.collect_by_name("Orange Tower Fifth Floor - Quadruple Intersection")
@@ -147,7 +147,7 @@ class TestProgressiveArtGallery(LingoTestBase):
147 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Second Floor)", "Region", self.player)) 147 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Second Floor)", "Region", self.player))
148 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Third Floor)", "Region", self.player)) 148 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Third Floor)", "Region", self.player))
149 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Fourth Floor)", "Region", self.player)) 149 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Fourth Floor)", "Region", self.player))
150 self.assertTrue(self.can_reach_location("Art Gallery - ONE ROAD MANY TURNS")) 150 self.assertTrue(self.can_reach_location("Art Gallery - ORDER"))
151 self.assertTrue(self.multiworld.state.can_reach("Orange Tower Fifth Floor", "Region", self.player)) 151 self.assertTrue(self.multiworld.state.can_reach("Orange Tower Fifth Floor", "Region", self.player))
152 152
153 153
@@ -162,7 +162,7 @@ class TestNoDoorsArtGallery(LingoTestBase):
162 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Second Floor)", "Region", self.player)) 162 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Second Floor)", "Region", self.player))
163 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Third Floor)", "Region", self.player)) 163 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Third Floor)", "Region", self.player))
164 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Fourth Floor)", "Region", self.player)) 164 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Fourth Floor)", "Region", self.player))
165 self.assertFalse(self.can_reach_location("Art Gallery - ONE ROAD MANY TURNS")) 165 self.assertFalse(self.can_reach_location("Art Gallery - ORDER"))
166 self.assertFalse(self.multiworld.state.can_reach("Orange Tower Fifth Floor", "Region", self.player)) 166 self.assertFalse(self.multiworld.state.can_reach("Orange Tower Fifth Floor", "Region", self.player))
167 167
168 self.collect_by_name("Yellow") 168 self.collect_by_name("Yellow")
@@ -170,7 +170,7 @@ class TestNoDoorsArtGallery(LingoTestBase):
170 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Second Floor)", "Region", self.player)) 170 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Second Floor)", "Region", self.player))
171 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Third Floor)", "Region", self.player)) 171 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Third Floor)", "Region", self.player))
172 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Fourth Floor)", "Region", self.player)) 172 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Fourth Floor)", "Region", self.player))
173 self.assertFalse(self.can_reach_location("Art Gallery - ONE ROAD MANY TURNS")) 173 self.assertFalse(self.can_reach_location("Art Gallery - ORDER"))
174 self.assertFalse(self.multiworld.state.can_reach("Orange Tower Fifth Floor", "Region", self.player)) 174 self.assertFalse(self.multiworld.state.can_reach("Orange Tower Fifth Floor", "Region", self.player))
175 175
176 self.collect_by_name("Brown") 176 self.collect_by_name("Brown")
@@ -178,7 +178,7 @@ class TestNoDoorsArtGallery(LingoTestBase):
178 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Second Floor)", "Region", self.player)) 178 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Second Floor)", "Region", self.player))
179 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Third Floor)", "Region", self.player)) 179 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Third Floor)", "Region", self.player))
180 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Fourth Floor)", "Region", self.player)) 180 self.assertFalse(self.multiworld.state.can_reach("Art Gallery (Fourth Floor)", "Region", self.player))
181 self.assertFalse(self.can_reach_location("Art Gallery - ONE ROAD MANY TURNS")) 181 self.assertFalse(self.can_reach_location("Art Gallery - ORDER"))
182 self.assertFalse(self.multiworld.state.can_reach("Orange Tower Fifth Floor", "Region", self.player)) 182 self.assertFalse(self.multiworld.state.can_reach("Orange Tower Fifth Floor", "Region", self.player))
183 183
184 self.collect_by_name("Blue") 184 self.collect_by_name("Blue")
@@ -186,7 +186,7 @@ class TestNoDoorsArtGallery(LingoTestBase):
186 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Second Floor)", "Region", self.player)) 186 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Second Floor)", "Region", self.player))
187 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Third Floor)", "Region", self.player)) 187 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Third Floor)", "Region", self.player))
188 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Fourth Floor)", "Region", self.player)) 188 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Fourth Floor)", "Region", self.player))
189 self.assertFalse(self.can_reach_location("Art Gallery - ONE ROAD MANY TURNS")) 189 self.assertFalse(self.can_reach_location("Art Gallery - ORDER"))
190 self.assertFalse(self.multiworld.state.can_reach("Orange Tower Fifth Floor", "Region", self.player)) 190 self.assertFalse(self.multiworld.state.can_reach("Orange Tower Fifth Floor", "Region", self.player))
191 191
192 self.collect_by_name(["Orange", "Gray"]) 192 self.collect_by_name(["Orange", "Gray"])
@@ -194,5 +194,5 @@ class TestNoDoorsArtGallery(LingoTestBase):
194 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Second Floor)", "Region", self.player)) 194 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Second Floor)", "Region", self.player))
195 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Third Floor)", "Region", self.player)) 195 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Third Floor)", "Region", self.player))
196 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Fourth Floor)", "Region", self.player)) 196 self.assertTrue(self.multiworld.state.can_reach("Art Gallery (Fourth Floor)", "Region", self.player))
197 self.assertTrue(self.can_reach_location("Art Gallery - ONE ROAD MANY TURNS")) 197 self.assertTrue(self.can_reach_location("Art Gallery - ORDER"))
198 self.assertTrue(self.multiworld.state.can_reach("Orange Tower Fifth Floor", "Region", self.player)) 198 self.assertTrue(self.multiworld.state.can_reach("Orange Tower Fifth Floor", "Region", self.player))
diff --git a/utils/validate_config.rb b/utils/validate_config.rb index 3ac49dc..96ed9fc 100644 --- a/utils/validate_config.rb +++ b/utils/validate_config.rb
@@ -8,7 +8,8 @@ require 'set'
8require 'yaml' 8require 'yaml'
9 9
10configpath = ARGV[0] 10configpath = ARGV[0]
11mappath = ARGV[1] 11idspath = ARGV[1]
12mappath = ARGV[2]
12 13
13panels = Set["Countdown Panels/Panel_1234567890_wanderlust"] 14panels = Set["Countdown Panels/Panel_1234567890_wanderlust"]
14doors = Set["Naps Room Doors/Door_hider_new1", "Tower Room Area Doors/Door_wanderer_entrance"] 15doors = Set["Naps Room Doors/Door_hider_new1", "Tower Room Area Doors/Door_wanderer_entrance"]
@@ -46,6 +47,8 @@ painting_directives = Set["id", "enter_only", "exit_only", "orientation", "requi
46 47
47non_counting = 0 48non_counting = 0
48 49
50ids = YAML.load_file(idspath)
51
49config = YAML.load_file(configpath) 52config = YAML.load_file(configpath)
50config.each do |room_name, room| 53config.each do |room_name, room|
51 configured_rooms.add(room_name) 54 configured_rooms.add(room_name)
@@ -162,6 +165,10 @@ config.each do |room_name, room|
162 unless bad_subdirectives.empty? then 165 unless bad_subdirectives.empty? then
163 puts "#{room_name} - #{panel_name} :::: Panel has the following invalid subdirectives: #{bad_subdirectives.join(", ")}" 166 puts "#{room_name} - #{panel_name} :::: Panel has the following invalid subdirectives: #{bad_subdirectives.join(", ")}"
164 end 167 end
168
169 unless ids.include?("panels") and ids["panels"].include?(room_name) and ids["panels"][room_name].include?(panel_name)
170 puts "#{room_name} - #{panel_name} :::: Panel is missing a location ID"
171 end
165 end 172 end
166 173
167 (room["doors"] || {}).each do |door_name, door| 174 (room["doors"] || {}).each do |door_name, door|
@@ -229,6 +236,18 @@ config.each do |room_name, room|
229 unless bad_subdirectives.empty? then 236 unless bad_subdirectives.empty? then
230 puts "#{room_name} - #{door_name} :::: Door has the following invalid subdirectives: #{bad_subdirectives.join(", ")}" 237 puts "#{room_name} - #{door_name} :::: Door has the following invalid subdirectives: #{bad_subdirectives.join(", ")}"
231 end 238 end
239
240 unless door["skip_item"] or door["event"]
241 unless ids.include?("doors") and ids["doors"].include?(room_name) and ids["doors"][room_name].include?(door_name) and ids["doors"][room_name][door_name].include?("item")
242 puts "#{room_name} - #{door_name} :::: Door is missing an item ID"
243 end
244 end
245
246 unless door["skip_location"] or door["event"]
247 unless ids.include?("doors") and ids["doors"].include?(room_name) and ids["doors"][room_name].include?(door_name) and ids["doors"][room_name][door_name].include?("location")
248 puts "#{room_name} - #{door_name} :::: Door is missing a location ID"
249 end
250 end
232 end 251 end
233 252
234 (room["paintings"] || []).each do |painting| 253 (room["paintings"] || []).each do |painting|
@@ -281,6 +300,10 @@ config.each do |room_name, room|
281 mentioned_doors.add("#{room_name} - #{door}") 300 mentioned_doors.add("#{room_name} - #{door}")
282 end 301 end
283 end 302 end
303
304 unless ids.include?("progression") and ids["progression"].include?(progression_name)
305 puts "#{room_name} - #{progression_name} :::: Progression is missing an item ID"
306 end
284 end 307 end
285end 308end
286 309
@@ -303,6 +326,10 @@ door_groups.each do |group,num|
303 if num == 1 then 326 if num == 1 then
304 puts "Door group \"#{group}\" only has one door in it" 327 puts "Door group \"#{group}\" only has one door in it"
305 end 328 end
329
330 unless ids.include?("door_groups") and ids["door_groups"].include?(group)
331 puts "#{group} :::: Door group is missing an item ID"
332 end
306end 333end
307 334
308slashed_rooms = configured_rooms.select do |room| 335slashed_rooms = configured_rooms.select do |room|