about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2026-02-06 13:03:32 -0500
committerStar Rauchenberger <fefferburbia@gmail.com>2026-02-06 13:03:32 -0500
commit3b415b3f5f182238da9ed83e0b2b07fb07044e04 (patch)
tree116b996eb7345e1586f01e1e9b5cc8376951c53e
parent08e6332cea33d433a2677044a351bc4f0ca5f3ea (diff)
downloadlingo2-archipelago-3b415b3f5f182238da9ed83e0b2b07fb07044e04.tar.gz
lingo2-archipelago-3b415b3f5f182238da9ed83e0b2b07fb07044e04.tar.bz2
lingo2-archipelago-3b415b3f5f182238da9ed83e0b2b07fb07044e04.zip
Annotated RTE rooms for most maps
-rw-r--r--data/ids.yaml59
-rw-r--r--data/maps/control_center/metadata.txtpb1
-rw-r--r--data/maps/daedalus/metadata.txtpb1
-rw-r--r--data/maps/demo/metadata.txtpb2
-rw-r--r--data/maps/four_rooms/metadata.txtpb1
-rw-r--r--data/maps/icarus/metadata.txtpb1
-rw-r--r--data/maps/the_advanced/metadata.txtpb1
-rw-r--r--data/maps/the_ancient/metadata.txtpb1
-rw-r--r--data/maps/the_bearer/metadata.txtpb1
-rw-r--r--data/maps/the_between/metadata.txtpb1
-rw-r--r--data/maps/the_butterfly/metadata.txtpb1
-rw-r--r--data/maps/the_charismatic/metadata.txtpb1
-rw-r--r--data/maps/the_colorful/metadata.txtpb1
-rw-r--r--data/maps/the_congruent/metadata.txtpb1
-rw-r--r--data/maps/the_crystalline/metadata.txtpb1
-rw-r--r--data/maps/the_darkroom/metadata.txtpb1
-rw-r--r--data/maps/the_digital/metadata.txtpb1
-rw-r--r--data/maps/the_door/metadata.txtpb1
-rw-r--r--data/maps/the_double_sided/metadata.txtpb1
-rw-r--r--data/maps/the_entry/metadata.txtpb2
-rw-r--r--data/maps/the_extravagant/metadata.txtpb1
-rw-r--r--data/maps/the_fuzzy/metadata.txtpb1
-rw-r--r--data/maps/the_gallery/metadata.txtpb1
-rw-r--r--data/maps/the_gold/metadata.txtpb1
-rw-r--r--data/maps/the_graveyard/metadata.txtpb1
-rw-r--r--data/maps/the_great/metadata.txtpb1
-rw-r--r--data/maps/the_hinterlands/metadata.txtpb2
-rw-r--r--data/maps/the_hive/metadata.txtpb1
-rw-r--r--data/maps/the_impressive/metadata.txtpb1
-rw-r--r--data/maps/the_invisible/metadata.txtpb1
-rw-r--r--data/maps/the_jubilant/metadata.txtpb1
-rw-r--r--data/maps/the_keen/metadata.txtpb1
-rw-r--r--data/maps/the_liberated/metadata.txtpb1
-rw-r--r--data/maps/the_linear/metadata.txtpb1
-rw-r--r--data/maps/the_lionized/metadata.txtpb1
-rw-r--r--data/maps/the_literate/metadata.txtpb1
-rw-r--r--data/maps/the_lively/metadata.txtpb1
-rw-r--r--data/maps/the_nuanced/metadata.txtpb1
-rw-r--r--data/maps/the_orb/metadata.txtpb1
-rw-r--r--data/maps/the_owl/metadata.txtpb1
-rw-r--r--data/maps/the_parthenon/metadata.txtpb1
-rw-r--r--data/maps/the_partial/metadata.txtpb1
-rw-r--r--data/maps/the_perceptive/metadata.txtpb1
-rw-r--r--data/maps/the_plaza/metadata.txtpb1
-rw-r--r--data/maps/the_quiet/metadata.txtpb1
-rw-r--r--data/maps/the_relentless/metadata.txtpb1
-rw-r--r--data/maps/the_repetitive/metadata.txtpb1
-rw-r--r--data/maps/the_revitalized/metadata.txtpb1
-rw-r--r--data/maps/the_shop/metadata.txtpb1
-rw-r--r--data/maps/the_sirenic/metadata.txtpb1
-rw-r--r--data/maps/the_stellar/metadata.txtpb1
-rw-r--r--data/maps/the_stormy/metadata.txtpb1
-rw-r--r--data/maps/the_sturdy/metadata.txtpb1
-rw-r--r--data/maps/the_sun_temple/metadata.txtpb1
-rw-r--r--data/maps/the_sweet/metadata.txtpb1
-rw-r--r--data/maps/the_symbolic/metadata.txtpb1
-rw-r--r--data/maps/the_talented/metadata.txtpb1
-rw-r--r--data/maps/the_tenacious/metadata.txtpb1
-rw-r--r--data/maps/the_three_doors/metadata.txtpb1
-rw-r--r--data/maps/the_tower/metadata.txtpb1
-rw-r--r--data/maps/the_tree/metadata.txtpb1
-rw-r--r--data/maps/the_unkempt/metadata.txtpb1
-rw-r--r--data/maps/the_unyielding/metadata.txtpb1
-rw-r--r--data/maps/the_wise/metadata.txtpb1
-rw-r--r--data/maps/the_wondrous/metadata.txtpb1
-rw-r--r--data/maps/the_words/metadata.txtpb1
-rw-r--r--proto/data.proto1
-rw-r--r--proto/human.proto2
-rw-r--r--tools/assign_ids/main.cpp35
-rw-r--r--tools/datapacker/main.cpp5
-rw-r--r--tools/util/ids_yaml_format.cpp8
-rw-r--r--tools/validator/human_processor.cpp16
-rw-r--r--tools/validator/main.cpp4
-rw-r--r--tools/validator/structs.h4
-rw-r--r--tools/validator/validator.cpp21
75 files changed, 219 insertions, 4 deletions
diff --git a/data/ids.yaml b/data/ids.yaml index 0042899..f9c59aa 100644 --- a/data/ids.yaml +++ b/data/ids.yaml
@@ -86,6 +86,7 @@ maps:
86 Unkempt Door: 2712 86 Unkempt Door: 2712
87 Unyielding Door: 2720 87 Unyielding Door: 2720
88 X1 Door: 2711 88 X1 Door: 2711
89 rte: 3385
89 daedalus: 90 daedalus:
90 rooms: 91 rooms:
91 After Bee Room: 92 After Bee Room:
@@ -1228,6 +1229,7 @@ maps:
1228 Zoo Prize Door: 1599 1229 Zoo Prize Door: 1599
1229 Zoo South Entrance: 1596 1230 Zoo South Entrance: 1596
1230 Zoo West Entrance: 1594 1231 Zoo West Entrance: 1594
1232 rte: 3376
1231 demo: 1233 demo:
1232 rooms: 1234 rooms:
1233 Backside Area: 1235 Backside Area:
@@ -1370,6 +1372,7 @@ maps:
1370 Keyholder Door: 5 1372 Keyholder Door: 5
1371 Synonyms Door: 2 1373 Synonyms Door: 2
1372 Time Door: 3 1374 Time Door: 3
1375 rte: 3415
1373 icarus: 1376 icarus:
1374 rooms: 1377 rooms:
1375 Above Trans Rights: 1378 Above Trans Rights:
@@ -1499,6 +1502,7 @@ maps:
1499 These Door: 2874 1502 These Door: 2874
1500 Troupe Door: 2867 1503 Troupe Door: 2867
1501 Woman Door: 2859 1504 Woman Door: 2859
1505 rte: 3416
1502 the_advanced: 1506 the_advanced:
1503 rooms: 1507 rooms:
1504 CBA: 1508 CBA:
@@ -1543,6 +1547,7 @@ maps:
1543 MASTERY: 2969 1547 MASTERY: 2969
1544 doors: 1548 doors:
1545 Side Room Puzzles: 2934 1549 Side Room Puzzles: 2934
1550 rte: 3380
1546 the_ancient: 1551 the_ancient:
1547 rooms: 1552 rooms:
1548 Inside: 1553 Inside:
@@ -1554,6 +1559,7 @@ maps:
1554 doors: 1559 doors:
1555 Front Door: 41 1560 Front Door: 41
1556 Lavender Cubes: 43 1561 Lavender Cubes: 43
1562 rte: 3412
1557 the_bearer: 1563 the_bearer:
1558 rooms: 1564 rooms:
1559 Back Area: 1565 Back Area:
@@ -1641,6 +1647,7 @@ maps:
1641 Control Center Color Panel: 3303 1647 Control Center Color Panel: 3303
1642 Exit Door: 47 1648 Exit Door: 47
1643 Overlook Door: 46 1649 Overlook Door: 46
1650 rte: 3373
1644 the_between: 1651 the_between:
1645 rooms: 1652 rooms:
1646 Control Center Side: 1653 Control Center Side:
@@ -1696,6 +1703,7 @@ maps:
1696 Purple Puzzles: 87 1703 Purple Puzzles: 87
1697 Red Puzzles: 81 1704 Red Puzzles: 81
1698 Yellow Puzzles: 82 1705 Yellow Puzzles: 82
1706 rte: 3408
1699 the_butterfly: 1707 the_butterfly:
1700 rooms: 1708 rooms:
1701 Main Area: 1709 Main Area:
@@ -1723,6 +1731,7 @@ maps:
1723 Mastery: 1731 Mastery:
1724 masteries: 1732 masteries:
1725 MASTERY: 140 1733 MASTERY: 140
1734 rte: 3395
1726 the_charismatic: 1735 the_charismatic:
1727 rooms: 1736 rooms:
1728 Latitude Middle: 1737 Latitude Middle:
@@ -1760,6 +1769,7 @@ maps:
1760 Mastery: 1769 Mastery:
1761 masteries: 1770 masteries:
1762 MASTERY: 2988 1771 MASTERY: 2988
1772 rte: 3396
1763 the_colorful: 1773 the_colorful:
1764 rooms: 1774 rooms:
1765 Black Room: 1775 Black Room:
@@ -1826,6 +1836,7 @@ maps:
1826 White Door: 141 1836 White Door: 141
1827 Window Door: 152 1837 Window Door: 152
1828 Yellow Door: 146 1838 Yellow Door: 146
1839 rte: 3365
1829 the_congruent: 1840 the_congruent:
1830 rooms: 1841 rooms:
1831 Flipped Magenta Room: 1842 Flipped Magenta Room:
@@ -1885,6 +1896,7 @@ maps:
1885 Obverse Magenta Door: 173 1896 Obverse Magenta Door: 173
1886 Obverse Yellow Door: 178 1897 Obverse Yellow Door: 178
1887 Obverse Yellow Puzzles: 179 1898 Obverse Yellow Puzzles: 179
1899 rte: 3369
1888 the_crystalline: 1900 the_crystalline:
1889 rooms: 1901 rooms:
1890 Flip Area: 1902 Flip Area:
@@ -1902,6 +1914,7 @@ maps:
1902 MASTERY: 2993 1914 MASTERY: 2993
1903 doors: 1915 doors:
1904 Checkpoint Panels: 3307 1916 Checkpoint Panels: 3307
1917 rte: 3367
1905 the_darkroom: 1918 the_darkroom:
1906 rooms: 1919 rooms:
1907 Congruent Entrance: 1920 Congruent Entrance:
@@ -1956,6 +1969,7 @@ maps:
1956 Double Sided Entrance: 224 1969 Double Sided Entrance: 224
1957 Second Room Entrance: 219 1970 Second Room Entrance: 219
1958 Third Room Entrance: 220 1971 Third Room Entrance: 220
1972 rte: 3409
1959 the_digital: 1973 the_digital:
1960 rooms: 1974 rooms:
1961 Chamber: 1975 Chamber:
@@ -1995,6 +2009,7 @@ maps:
1995 Control Center Blue Panel: 3308 2009 Control Center Blue Panel: 3308
1996 Gallery Entrance: 245 2010 Gallery Entrance: 245
1997 Tree Entrance: 247 2011 Tree Entrance: 247
2012 rte: 3403
1998 the_door: 2013 the_door:
1999 rooms: 2014 rooms:
2000 Main Area: 2015 Main Area:
@@ -2062,6 +2077,7 @@ maps:
2062 10 Panels: 3310 2077 10 Panels: 3310
2063 15 Panels: 3311 2078 15 Panels: 3311
2064 5 Panels: 3309 2079 5 Panels: 3309
2080 rte: 3384
2065 the_entry: 2081 the_entry:
2066 rooms: 2082 rooms:
2067 Blue Alcove: 2083 Blue Alcove:
@@ -2312,6 +2328,7 @@ maps:
2312 panels: 2328 panels:
2313 CACTUS: 410 2329 CACTUS: 410
2314 TAIL: 411 2330 TAIL: 411
2331 rte: 3397
2315 the_fuzzy: 2332 the_fuzzy:
2316 rooms: 2333 rooms:
2317 Main Area: 2334 Main Area:
@@ -2339,6 +2356,7 @@ maps:
2339 doors: 2356 doors:
2340 Black Panels: 3021 2357 Black Panels: 3021
2341 Green Panels: 3321 2358 Green Panels: 3321
2359 rte: 3420
2342 the_gallery: 2360 the_gallery:
2343 rooms: 2361 rooms:
2344 Back Room: 2362 Back Room:
@@ -2373,6 +2391,7 @@ maps:
2373 Wise Painting: 416 2391 Wise Painting: 416
2374 Wondrous Painting: 422 2392 Wondrous Painting: 422
2375 Words Painting: 424 2393 Words Painting: 424
2394 rte: 3394
2376 the_gold: 2395 the_gold:
2377 rooms: 2396 rooms:
2378 The Whole Thing: 2397 The Whole Thing:
@@ -2391,6 +2410,7 @@ maps:
2391 SEVERE: 437 2410 SEVERE: 437
2392 doors: 2411 doors:
2393 Remember Panel: 3323 2412 Remember Panel: 3323
2413 rte: 3370
2394 the_great: 2414 the_great:
2395 rooms: 2415 rooms:
2396 Back Area: 2416 Back Area:
@@ -2698,6 +2718,7 @@ maps:
2698 West/East Divider: 443 2718 West/East Divider: 443
2699 Why Is It Not Red: 3325 2719 Why Is It Not Red: 3325
2700 Zero Room Panels: 470 2720 Zero Room Panels: 470
2721 rte: 3405
2701 the_hinterlands: 2722 the_hinterlands:
2702 rooms: 2723 rooms:
2703 Main Area: 2724 Main Area:
@@ -2764,6 +2785,7 @@ maps:
2764 WILDFLOWER: 670 2785 WILDFLOWER: 670
2765 doors: 2786 doors:
2766 Room 8 Door: 627 2787 Room 8 Door: 627
2788 rte: 3401
2767 the_impressive: 2789 the_impressive:
2768 rooms: 2790 rooms:
2769 Green Eye: 2791 Green Eye:
@@ -2793,6 +2815,7 @@ maps:
2793 Front Door: 671 2815 Front Door: 671
2794 Green Eye Panels: 3337 2816 Green Eye Panels: 3337
2795 Side Door: 672 2817 Side Door: 672
2818 rte: 3386
2796 the_invisible: 2819 the_invisible:
2797 rooms: 2820 rooms:
2798 Entrance: 2821 Entrance:
@@ -2807,6 +2830,7 @@ maps:
2807 ENTRY: 3215 2830 ENTRY: 3215
2808 doors: 2831 doors:
2809 Maze Entrance: 684 2832 Maze Entrance: 684
2833 rte: 3410
2810 the_jubilant: 2834 the_jubilant:
2811 rooms: 2835 rooms:
2812 Main Area: 2836 Main Area:
@@ -2838,6 +2862,7 @@ maps:
2838 doors: 2862 doors:
2839 Side Door: 687 2863 Side Door: 687
2840 Side Room Puzzles: 3339 2864 Side Room Puzzles: 3339
2865 rte: 3411
2841 the_keen: 2866 the_keen:
2842 rooms: 2867 rooms:
2843 Main Area: 2868 Main Area:
@@ -2855,6 +2880,7 @@ maps:
2855 GREAT: 3217 2880 GREAT: 3217
2856 doors: 2881 doors:
2857 All Panels: 707 2882 All Panels: 707
2883 rte: 3402
2858 the_liberated: 2884 the_liberated:
2859 rooms: 2885 rooms:
2860 Puzzle Room: 2886 Puzzle Room:
@@ -2871,6 +2897,7 @@ maps:
2871 ENTRY: 3218 2897 ENTRY: 3218
2872 doors: 2898 doors:
2873 Door: 718 2899 Door: 718
2900 rte: 3422
2874 the_linear: 2901 the_linear:
2875 rooms: 2902 rooms:
2876 Room: 2903 Room:
@@ -2887,6 +2914,7 @@ maps:
2887 GREAT: 3219 2914 GREAT: 3219
2888 doors: 2915 doors:
2889 Behind The Keen Gravestone: 727 2916 Behind The Keen Gravestone: 727
2917 rte: 3393
2890 the_lionized: 2918 the_lionized:
2891 rooms: 2919 rooms:
2892 Puzzle Room: 2920 Puzzle Room:
@@ -2901,6 +2929,7 @@ maps:
2901 ROCK: 740 2929 ROCK: 740
2902 ports: 2930 ports:
2903 ENTRY: 3220 2931 ENTRY: 3220
2932 rte: 3404
2904 the_literate: 2933 the_literate:
2905 rooms: 2934 rooms:
2906 Puzzle Room: 2935 Puzzle Room:
@@ -2917,6 +2946,7 @@ maps:
2917 ENTRY: 3221 2946 ENTRY: 3221
2918 doors: 2947 doors:
2919 Door: 745 2948 Door: 745
2949 rte: 3382
2920 the_lively: 2950 the_lively:
2921 rooms: 2951 rooms:
2922 Puzzle Room: 2952 Puzzle Room:
@@ -2931,6 +2961,7 @@ maps:
2931 SOPRANO: 757 2961 SOPRANO: 757
2932 ports: 2962 ports:
2933 BETWEEN: 3222 2963 BETWEEN: 3222
2964 rte: 3383
2934 the_nuanced: 2965 the_nuanced:
2935 rooms: 2966 rooms:
2936 Back Room: 2967 Back Room:
@@ -2968,6 +2999,7 @@ maps:
2968 Green Side Puzzles: 764 2999 Green Side Puzzles: 764
2969 Main Room Door: 2750 3000 Main Room Door: 2750
2970 Stores Panel: 3340 3001 Stores Panel: 3340
3002 rte: 3398
2971 the_orb: 3003 the_orb:
2972 rooms: 3004 rooms:
2973 B Room: 3005 B Room:
@@ -2992,6 +3024,7 @@ maps:
2992 Middle Room: 3024 Middle Room:
2993 ports: 3025 ports:
2994 MID: 3226 3026 MID: 3226
3027 rte: 3381
2995 the_owl: 3028 the_owl:
2996 rooms: 3029 rooms:
2997 Blue Room: 3030 Blue Room:
@@ -3075,6 +3108,7 @@ maps:
3075 Sky Owl: 813 3108 Sky Owl: 813
3076 Sky Top Doors: 805 3109 Sky Top Doors: 805
3077 White Owl: 816 3110 White Owl: 816
3111 rte: 3414
3078 the_parthenon: 3112 the_parthenon:
3079 rooms: 3113 rooms:
3080 Lavender Area: 3114 Lavender Area:
@@ -3100,6 +3134,7 @@ maps:
3100 doors: 3134 doors:
3101 K2 Door: 852 3135 K2 Door: 852
3102 Lavender Area Puzzles: 3351 3136 Lavender Area Puzzles: 3351
3137 rte: 3418
3103 the_partial: 3138 the_partial:
3104 rooms: 3139 rooms:
3105 Control Center Entrance: 3140 Control Center Entrance:
@@ -3139,11 +3174,13 @@ maps:
3139 L Entered: 2843 3174 L Entered: 2843
3140 Main Room Puzzles: 863 3175 Main Room Puzzles: 863
3141 P Door: 864 3176 P Door: 864
3177 rte: 3407
3142 the_perceptive: 3178 the_perceptive:
3143 rooms: 3179 rooms:
3144 Main Area: 3180 Main Area:
3145 ports: 3181 ports:
3146 CC: 3235 3182 CC: 3235
3183 rte: 3374
3147 the_plaza: 3184 the_plaza:
3148 rooms: 3185 rooms:
3149 Bottom Left Room: 3186 Bottom Left Room:
@@ -3263,6 +3300,7 @@ maps:
3263 Southwest Puzzles: 898 3300 Southwest Puzzles: 898
3264 Symbolic Entrance: 889 3301 Symbolic Entrance: 889
3265 Turtle Entrance: 891 3302 Turtle Entrance: 891
3303 rte: 3390
3266 the_quiet: 3304 the_quiet:
3267 rooms: 3305 rooms:
3268 Keyholder Room: 3306 Keyholder Room:
@@ -3286,6 +3324,7 @@ maps:
3286 DAEDALUS: 3242 3324 DAEDALUS: 3242
3287 doors: 3325 doors:
3288 Side Door: 970 3326 Side Door: 970
3327 rte: 3419
3289 the_relentless: 3328 the_relentless:
3290 rooms: 3329 rooms:
3291 All: 3330 All:
@@ -3481,6 +3520,7 @@ maps:
3481 Magenta Puzzles: 1033 3520 Magenta Puzzles: 1033
3482 Yellow Door: 1030 3521 Yellow Door: 1030
3483 Yellow Puzzles: 1034 3522 Yellow Puzzles: 1034
3523 rte: 3377
3484 the_revitalized: 3524 the_revitalized:
3485 rooms: 3525 rooms:
3486 Bye Room: 3526 Bye Room:
@@ -3508,6 +3548,7 @@ maps:
3508 WON: 1135 3548 WON: 1135
3509 doors: 3549 doors:
3510 Return Panel: 1128 3550 Return Panel: 1128
3551 rte: 3378
3511 the_shop: 3552 the_shop:
3512 rooms: 3553 rooms:
3513 Main Area: 3554 Main Area:
@@ -3542,6 +3583,7 @@ maps:
3542 Books Puzzles: 1136 3583 Books Puzzles: 1136
3543 Games Puzzles: 1137 3584 Games Puzzles: 1137
3544 N Entered: 2971 3585 N Entered: 2971
3586 rte: 3421
3545 the_sirenic: 3587 the_sirenic:
3546 rooms: 3588 rooms:
3547 Mastery: 3589 Mastery:
@@ -3572,6 +3614,7 @@ maps:
3572 PLAZA: 3248 3614 PLAZA: 3248
3573 doors: 3615 doors:
3574 Entrance: 1161 3616 Entrance: 1161
3617 rte: 3389
3575 the_stellar: 3618 the_stellar:
3576 rooms: 3619 rooms:
3577 Blue Panel: 3620 Blue Panel:
@@ -3624,6 +3667,7 @@ maps:
3624 Entrance: 2995 3667 Entrance: 2995
3625 Question Panels: 3017 3668 Question Panels: 3017
3626 Welcome Back Panels: 3359 3669 Welcome Back Panels: 3359
3670 rte: 3387
3627 the_stormy: 3671 the_stormy:
3628 rooms: 3672 rooms:
3629 Center: 3673 Center:
@@ -3654,6 +3698,7 @@ maps:
3654 panels: 3698 panels:
3655 RAIN: 1191 3699 RAIN: 1191
3656 SNOW: 1190 3700 SNOW: 1190
3701 rte: 3368
3657 the_sturdy: 3702 the_sturdy:
3658 rooms: 3703 rooms:
3659 Main Area: 3704 Main Area:
@@ -3672,6 +3717,7 @@ maps:
3672 S2 Area: 3717 S2 Area:
3673 panels: 3718 panels:
3674 COLORS: 1201 3719 COLORS: 1201
3720 rte: 3391
3675 the_sun_temple: 3721 the_sun_temple:
3676 rooms: 3722 rooms:
3677 Entrance: 3723 Entrance:
@@ -3693,6 +3739,7 @@ maps:
3693 LAWN: 1215 3739 LAWN: 1215
3694 doors: 3740 doors:
3695 Entrance: 1210 3741 Entrance: 1210
3742 rte: 3375
3696 the_sweet: 3743 the_sweet:
3697 rooms: 3744 rooms:
3698 Main Area: 3745 Main Area:
@@ -3728,6 +3775,7 @@ maps:
3728 ports: 3775 ports:
3729 EXIT1: 3254 3776 EXIT1: 3254
3730 EXIT2: 3255 3777 EXIT2: 3255
3778 rte: 3400
3731 the_symbolic: 3779 the_symbolic:
3732 rooms: 3780 rooms:
3733 Black Room: 3781 Black Room:
@@ -3924,6 +3972,7 @@ maps:
3924 Tutorial Door: 2754 3972 Tutorial Door: 2754
3925 Tutorial Panels: 2283 3973 Tutorial Panels: 2283
3926 Whirred Room Panels: 2284 3974 Whirred Room Panels: 2284
3975 rte: 3379
3927 the_talented: 3976 the_talented:
3928 rooms: 3977 rooms:
3929 Back Room: 3978 Back Room:
@@ -3961,6 +4010,7 @@ maps:
3961 Brown Side Panels: 2428 4010 Brown Side Panels: 2428
3962 Keyholder Hint Panel: 3360 4011 Keyholder Hint Panel: 3360
3963 Main Room Door: 2429 4012 Main Room Door: 2429
4013 rte: 3388
3964 the_tenacious: 4014 the_tenacious:
3965 rooms: 4015 rooms:
3966 Color Room: 4016 Color Room:
@@ -3989,6 +4039,7 @@ maps:
3989 doors: 4039 doors:
3990 K Entered: 2844 4040 K Entered: 2844
3991 Paintings Door: 2453 4041 Paintings Door: 2453
4042 rte: 3399
3992 the_three_doors: 4043 the_three_doors:
3993 rooms: 4044 rooms:
3994 Dead End Room: 4045 Dead End Room:
@@ -4032,6 +4083,7 @@ maps:
4032 NEXT: 3266 4083 NEXT: 3266
4033 doors: 4084 doors:
4034 The Three Doors Gravestone: 2460 4085 The Three Doors Gravestone: 2460
4086 rte: 3392
4035 the_tower: 4087 the_tower:
4036 rooms: 4088 rooms:
4037 First Floor: 4089 First Floor:
@@ -4111,6 +4163,7 @@ maps:
4111 Fourth Floor Puzzles: 2481 4163 Fourth Floor Puzzles: 2481
4112 Second Floor Puzzles: 2479 4164 Second Floor Puzzles: 2479
4113 Third Floor Puzzles: 2480 4165 Third Floor Puzzles: 2480
4166 rte: 3413
4114 the_tree: 4167 the_tree:
4115 rooms: 4168 rooms:
4116 Bearer Entrance: 4169 Bearer Entrance:
@@ -4156,6 +4209,7 @@ maps:
4156 doors: 4209 doors:
4157 Control Center Brown Door: 2548 4210 Control Center Brown Door: 2548
4158 The Tree Gravestone: 2549 4211 The Tree Gravestone: 2549
4212 rte: 3371
4159 the_unkempt: 4213 the_unkempt:
4160 rooms: 4214 rooms:
4161 Control Center Entrance: 4215 Control Center Entrance:
@@ -4277,6 +4331,7 @@ maps:
4277 Near Teal Door Panels: 3361 4331 Near Teal Door Panels: 3361
4278 Routine Out Chute: 2584 4332 Routine Out Chute: 2584
4279 W2 Room Door: 2581 4333 W2 Room Door: 2581
4334 rte: 3417
4280 the_unyielding: 4335 the_unyielding:
4281 rooms: 4336 rooms:
4282 Bearer Entrance: 4337 Bearer Entrance:
@@ -4539,6 +4594,7 @@ maps:
4539 Southwest Corner Behind: 1254 4594 Southwest Corner Behind: 1254
4540 Southwest Room: 1431 4595 Southwest Room: 1431
4541 Yellow Room Puzzles: 1250 4596 Yellow Room Puzzles: 1250
4597 rte: 3366
4542 the_wise: 4598 the_wise:
4543 rooms: 4599 rooms:
4544 Entry: 4600 Entry:
@@ -4571,6 +4627,7 @@ maps:
4571 WORDS: 2688 4627 WORDS: 2688
4572 doors: 4628 doors:
4573 Front Door: 2666 4629 Front Door: 2666
4630 rte: 3372
4574 the_wondrous: 4631 the_wondrous:
4575 rooms: 4632 rooms:
4576 Entry: 4633 Entry:
@@ -4593,6 +4650,7 @@ maps:
4593 SHRINK: 2699 4650 SHRINK: 2699
4594 doors: 4651 doors:
4595 Shrink Door: 2689 4652 Shrink Door: 2689
4653 rte: 3406
4596 the_words: 4654 the_words:
4597 rooms: 4655 rooms:
4598 Main Area: 4656 Main Area:
@@ -4607,6 +4665,7 @@ maps:
4607 TREE: 2705 4665 TREE: 2705
4608 ports: 4666 ports:
4609 ENTRY: 3283 4667 ENTRY: 3283
4668 rte: 3423
4610letters: 4669letters:
4611 a1: 596 4670 a1: 596
4612 a2: 6 4671 a2: 6
diff --git a/data/maps/control_center/metadata.txtpb b/data/maps/control_center/metadata.txtpb index bf89670..e56f7a9 100644 --- a/data/maps/control_center/metadata.txtpb +++ b/data/maps/control_center/metadata.txtpb
@@ -1 +1,2 @@
1display_name: "Control Center" 1display_name: "Control Center"
2rte_room: "Main Area"
diff --git a/data/maps/daedalus/metadata.txtpb b/data/maps/daedalus/metadata.txtpb index 6ad90e1..2f3da90 100644 --- a/data/maps/daedalus/metadata.txtpb +++ b/data/maps/daedalus/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "Daedalus" 1display_name: "Daedalus"
2rte_room: "Starting Room"
2daedalus_only_mode: DAED_ONLY_ALLOW 3daedalus_only_mode: DAED_ONLY_ALLOW
3# These paintings can't be shuffled because they are behind panels. 4# These paintings can't be shuffled because they are behind panels.
4excluded_nodes: "Components/Paintings/Group3/mouse" 5excluded_nodes: "Components/Paintings/Group3/mouse"
diff --git a/data/maps/demo/metadata.txtpb b/data/maps/demo/metadata.txtpb index 4f61386..acaf461 100644 --- a/data/maps/demo/metadata.txtpb +++ b/data/maps/demo/metadata.txtpb
@@ -1,5 +1,7 @@
1display_name: "Demo" 1display_name: "Demo"
2type: DEMO 2type: DEMO
3# No RTE because this is a secret map.
4
3# This painting is above a panel and can't be entered. 5# This painting is above a panel and can't be entered.
4excluded_nodes: "Meshes/owl" 6excluded_nodes: "Meshes/owl"
5# The map's mastery is created at runtime. 7# The map's mastery is created at runtime.
diff --git a/data/maps/four_rooms/metadata.txtpb b/data/maps/four_rooms/metadata.txtpb index ac4631d..ba66847 100644 --- a/data/maps/four_rooms/metadata.txtpb +++ b/data/maps/four_rooms/metadata.txtpb
@@ -1 +1,2 @@
1display_name: "Four Rooms" 1display_name: "Four Rooms"
2rte_room: "Synonyms Room"
diff --git a/data/maps/icarus/metadata.txtpb b/data/maps/icarus/metadata.txtpb index 8512d8e..c2a3656 100644 --- a/data/maps/icarus/metadata.txtpb +++ b/data/maps/icarus/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "Icarus" 1display_name: "Icarus"
2type: ICARUS 2type: ICARUS
3rte_room: "Welcome Spine (Obverse)"
3# The map's mastery is created at runtime. 4# The map's mastery is created at runtime.
4custom_nodes: "Components/Collectables/collectable" 5custom_nodes: "Components/Collectables/collectable"
diff --git a/data/maps/the_advanced/metadata.txtpb b/data/maps/the_advanced/metadata.txtpb index cee10b6..71d3925 100644 --- a/data/maps/the_advanced/metadata.txtpb +++ b/data/maps/the_advanced/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Advanced" 1display_name: "The Advanced"
2type: GIFT_MAP 2type: GIFT_MAP
3rte_room: "Main Area"
3# The map's mastery is created at runtime. 4# The map's mastery is created at runtime.
4custom_nodes: "Components/Collectables/collectable" 5custom_nodes: "Components/Collectables/collectable"
diff --git a/data/maps/the_ancient/metadata.txtpb b/data/maps/the_ancient/metadata.txtpb index cf6bce3..0f321dd 100644 --- a/data/maps/the_ancient/metadata.txtpb +++ b/data/maps/the_ancient/metadata.txtpb
@@ -1 +1,2 @@
1display_name: "The Ancient" 1display_name: "The Ancient"
2rte_room: "Outside"
diff --git a/data/maps/the_bearer/metadata.txtpb b/data/maps/the_bearer/metadata.txtpb index 584c71e..003473a 100644 --- a/data/maps/the_bearer/metadata.txtpb +++ b/data/maps/the_bearer/metadata.txtpb
@@ -1 +1,2 @@
1display_name: "The Bearer" 1display_name: "The Bearer"
2rte_room: "Entry"
diff --git a/data/maps/the_between/metadata.txtpb b/data/maps/the_between/metadata.txtpb index 33f96a1..6134447 100644 --- a/data/maps/the_between/metadata.txtpb +++ b/data/maps/the_between/metadata.txtpb
@@ -1 +1,2 @@
1display_name: "The Between" 1display_name: "The Between"
2rte_room: "Main Area"
diff --git a/data/maps/the_butterfly/metadata.txtpb b/data/maps/the_butterfly/metadata.txtpb index 5206dfe..5933359 100644 --- a/data/maps/the_butterfly/metadata.txtpb +++ b/data/maps/the_butterfly/metadata.txtpb
@@ -1 +1,2 @@
1display_name: "The Butterfly" 1display_name: "The Butterfly"
2rte_room: "Main Area"
diff --git a/data/maps/the_charismatic/metadata.txtpb b/data/maps/the_charismatic/metadata.txtpb index 8d26105..740c04a 100644 --- a/data/maps/the_charismatic/metadata.txtpb +++ b/data/maps/the_charismatic/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Charismatic" 1display_name: "The Charismatic"
2type: GIFT_MAP 2type: GIFT_MAP
3rte_room: "Main Area"
3# The map's mastery is created at runtime. 4# The map's mastery is created at runtime.
4custom_nodes: "Components/Collectables/collectable" 5custom_nodes: "Components/Collectables/collectable"
diff --git a/data/maps/the_colorful/metadata.txtpb b/data/maps/the_colorful/metadata.txtpb index 5e67428..1300c79 100644 --- a/data/maps/the_colorful/metadata.txtpb +++ b/data/maps/the_colorful/metadata.txtpb
@@ -1,3 +1,4 @@
1display_name: "The Colorful" 1display_name: "The Colorful"
2rte_room: "White Room"
2# This has something to do with the FISH/FISHES proxy. 3# This has something to do with the FISH/FISHES proxy.
3excluded_nodes: "Components/panel_fake" 4excluded_nodes: "Components/panel_fake"
diff --git a/data/maps/the_congruent/metadata.txtpb b/data/maps/the_congruent/metadata.txtpb index 6260ed4..038bbd6 100644 --- a/data/maps/the_congruent/metadata.txtpb +++ b/data/maps/the_congruent/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Congruent" 1display_name: "The Congruent"
2rte_room: "Main Area"
2worldport_entrance { 3worldport_entrance {
3 room: "Main Area" 4 room: "Main Area"
4 name: "DARKROOM" 5 name: "DARKROOM"
diff --git a/data/maps/the_crystalline/metadata.txtpb b/data/maps/the_crystalline/metadata.txtpb index 09b0f1d..2447af6 100644 --- a/data/maps/the_crystalline/metadata.txtpb +++ b/data/maps/the_crystalline/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Crystalline" 1display_name: "The Crystalline"
2type: GIFT_MAP 2type: GIFT_MAP
3rte_room: "Main Area"
3# The map's mastery is created at runtime. 4# The map's mastery is created at runtime.
4custom_nodes: "Components/Collectables/collectable" 5custom_nodes: "Components/Collectables/collectable"
diff --git a/data/maps/the_darkroom/metadata.txtpb b/data/maps/the_darkroom/metadata.txtpb index e4a1290..0b122e9 100644 --- a/data/maps/the_darkroom/metadata.txtpb +++ b/data/maps/the_darkroom/metadata.txtpb
@@ -1 +1,2 @@
1display_name: "The Darkroom" 1display_name: "The Darkroom"
2rte_room: "First Room"
diff --git a/data/maps/the_digital/metadata.txtpb b/data/maps/the_digital/metadata.txtpb index e505dcf..ce2f2c5 100644 --- a/data/maps/the_digital/metadata.txtpb +++ b/data/maps/the_digital/metadata.txtpb
@@ -1 +1,2 @@
1display_name: "The Digital" 1display_name: "The Digital"
2rte_room: "Main Area"
diff --git a/data/maps/the_door/metadata.txtpb b/data/maps/the_door/metadata.txtpb index 85dc340..a253d9f 100644 --- a/data/maps/the_door/metadata.txtpb +++ b/data/maps/the_door/metadata.txtpb
@@ -1 +1,2 @@
1display_name: "The Door" 1display_name: "The Door"
2# No RTE because it would make The Wondrous pointless.
diff --git a/data/maps/the_double_sided/metadata.txtpb b/data/maps/the_double_sided/metadata.txtpb index 6f56c63..1bcf6ac 100644 --- a/data/maps/the_double_sided/metadata.txtpb +++ b/data/maps/the_double_sided/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Double Sided" 1display_name: "The Double Sided"
2rte_room: "Start"
2worldport_entrance { 3worldport_entrance {
3 room: "Start" 4 room: "Start"
4 name: "DARKROOM" 5 name: "DARKROOM"
diff --git a/data/maps/the_entry/metadata.txtpb b/data/maps/the_entry/metadata.txtpb index da2194b..d20137c 100644 --- a/data/maps/the_entry/metadata.txtpb +++ b/data/maps/the_entry/metadata.txtpb
@@ -1,4 +1,6 @@
1display_name: "The Entry" 1display_name: "The Entry"
2# No RTE because this map is always an RTE.
3
2# This is a debug warp to The Ancient and as far as I can tell there is no way 4# This is a debug warp to The Ancient and as far as I can tell there is no way
3# to access it. 5# to access it.
4excluded_nodes: "Components/Warps/worldport-test" 6excluded_nodes: "Components/Warps/worldport-test"
diff --git a/data/maps/the_extravagant/metadata.txtpb b/data/maps/the_extravagant/metadata.txtpb index 0a35c90..77d3b4b 100644 --- a/data/maps/the_extravagant/metadata.txtpb +++ b/data/maps/the_extravagant/metadata.txtpb
@@ -1,3 +1,4 @@
1display_name: "The Extravagant" 1display_name: "The Extravagant"
2rte_room: "Y Minus First Floor"
2# This appears to be completely inaccessible. 3# This appears to be completely inaccessible.
3excluded_nodes: "Components/Warps/worldport" 4excluded_nodes: "Components/Warps/worldport"
diff --git a/data/maps/the_fuzzy/metadata.txtpb b/data/maps/the_fuzzy/metadata.txtpb index b4178c7..ded955b 100644 --- a/data/maps/the_fuzzy/metadata.txtpb +++ b/data/maps/the_fuzzy/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Fuzzy" 1display_name: "The Fuzzy"
2type: GIFT_MAP 2type: GIFT_MAP
3rte_room: "Main Area"
3# The map's mastery is created at runtime. 4# The map's mastery is created at runtime.
4custom_nodes: "Components/Collectables/collectable" 5custom_nodes: "Components/Collectables/collectable"
diff --git a/data/maps/the_gallery/metadata.txtpb b/data/maps/the_gallery/metadata.txtpb index 9d02a11..a1bbe25 100644 --- a/data/maps/the_gallery/metadata.txtpb +++ b/data/maps/the_gallery/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Gallery" 1display_name: "The Gallery"
2rte_room: "Main Area"
2daedalus_only_mode: DAED_ONLY_PARTIAL 3daedalus_only_mode: DAED_ONLY_PARTIAL
3# These are the eyes in the foyer, and aren't normal paintings. 4# These are the eyes in the foyer, and aren't normal paintings.
4excluded_nodes: "Components/Paintings/Starting/eye" 5excluded_nodes: "Components/Paintings/Starting/eye"
diff --git a/data/maps/the_gold/metadata.txtpb b/data/maps/the_gold/metadata.txtpb index c4a8b3b..7c20bae 100644 --- a/data/maps/the_gold/metadata.txtpb +++ b/data/maps/the_gold/metadata.txtpb
@@ -1,2 +1,3 @@
1display_name: "The Gold" 1display_name: "The Gold"
2daedalus_only_mode: DAED_ONLY_ALLOW 2daedalus_only_mode: DAED_ONLY_ALLOW
3# No RTE because it would trivialize Gold Ending.
diff --git a/data/maps/the_graveyard/metadata.txtpb b/data/maps/the_graveyard/metadata.txtpb index 0bac222..47a48e0 100644 --- a/data/maps/the_graveyard/metadata.txtpb +++ b/data/maps/the_graveyard/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Graveyard" 1display_name: "The Graveyard"
2rte_room: "Outside"
2# These really shouldn't be shuffled because it would make Black Ending trivial. 3# These really shouldn't be shuffled because it would make Black Ending trivial.
3excluded_nodes: "Components/Paintings/grave" 4excluded_nodes: "Components/Paintings/grave"
4excluded_nodes: "Components/Paintings/grave2" 5excluded_nodes: "Components/Paintings/grave2"
diff --git a/data/maps/the_great/metadata.txtpb b/data/maps/the_great/metadata.txtpb index b01faf7..7bbecd4 100644 --- a/data/maps/the_great/metadata.txtpb +++ b/data/maps/the_great/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Great" 1display_name: "The Great"
2rte_room: "Main Area"
2# This can't be shuffled because it is tilted. 3# This can't be shuffled because it is tilted.
3excluded_nodes: "Components/Paintings/u" 4excluded_nodes: "Components/Paintings/u"
4# This can't be shuffled because it is on the ground. 5# This can't be shuffled because it is on the ground.
diff --git a/data/maps/the_hinterlands/metadata.txtpb b/data/maps/the_hinterlands/metadata.txtpb index dd1e627..8148c2a 100644 --- a/data/maps/the_hinterlands/metadata.txtpb +++ b/data/maps/the_hinterlands/metadata.txtpb
@@ -1,4 +1,6 @@
1display_name: "The Hinterlands" 1display_name: "The Hinterlands"
2# No RTE because the map is not randomized.
3
2# I'm not currently planning on shuffling anything in here. 4# I'm not currently planning on shuffling anything in here.
3excluded_nodes: "Components/Paintings/C" 5excluded_nodes: "Components/Paintings/C"
4excluded_nodes: "Components/Paintings/E" 6excluded_nodes: "Components/Paintings/E"
diff --git a/data/maps/the_hive/metadata.txtpb b/data/maps/the_hive/metadata.txtpb index 8f3894c..7be7b9e 100644 --- a/data/maps/the_hive/metadata.txtpb +++ b/data/maps/the_hive/metadata.txtpb
@@ -1 +1,2 @@
1display_name: "The Hive" 1display_name: "The Hive"
2rte_room: "Main Area"
diff --git a/data/maps/the_impressive/metadata.txtpb b/data/maps/the_impressive/metadata.txtpb index 63929cb..7a0a052 100644 --- a/data/maps/the_impressive/metadata.txtpb +++ b/data/maps/the_impressive/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Impressive" 1display_name: "The Impressive"
2rte_room: "Lobby"
2# These are apparently little eyes on the Green Eye panel pedestals? I don't 3# These are apparently little eyes on the Green Eye panel pedestals? I don't
3# think they're ever visible in gameplay. 4# think they're ever visible in gameplay.
4excluded_nodes: "Meshes/eye" 5excluded_nodes: "Meshes/eye"
diff --git a/data/maps/the_invisible/metadata.txtpb b/data/maps/the_invisible/metadata.txtpb index 967bf19..e980466 100644 --- a/data/maps/the_invisible/metadata.txtpb +++ b/data/maps/the_invisible/metadata.txtpb
@@ -1 +1,2 @@
1display_name: "The Invisible" 1display_name: "The Invisible"
2rte_room: "Entrance"
diff --git a/data/maps/the_jubilant/metadata.txtpb b/data/maps/the_jubilant/metadata.txtpb index 4af1874..019b0b2 100644 --- a/data/maps/the_jubilant/metadata.txtpb +++ b/data/maps/the_jubilant/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Jubilant" 1display_name: "The Jubilant"
2rte_room: "Main Area"
2worldport_entrance { 3worldport_entrance {
3 room: "Main Area" 4 room: "Main Area"
4 name: "GREAT" 5 name: "GREAT"
diff --git a/data/maps/the_keen/metadata.txtpb b/data/maps/the_keen/metadata.txtpb index 909f420..8417c2e 100644 --- a/data/maps/the_keen/metadata.txtpb +++ b/data/maps/the_keen/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Keen" 1display_name: "The Keen"
2rte_room: "Main Area"
2worldport_entrance { 3worldport_entrance {
3 room: "Main Area" 4 room: "Main Area"
4 name: "GREAT" 5 name: "GREAT"
diff --git a/data/maps/the_liberated/metadata.txtpb b/data/maps/the_liberated/metadata.txtpb index b9b4321..ebedbec 100644 --- a/data/maps/the_liberated/metadata.txtpb +++ b/data/maps/the_liberated/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Liberated" 1display_name: "The Liberated"
2rte_room: "Puzzle Room"
2worldport_entrance { 3worldport_entrance {
3 room: "Puzzle Room" 4 room: "Puzzle Room"
4 name: "ENTRY" 5 name: "ENTRY"
diff --git a/data/maps/the_linear/metadata.txtpb b/data/maps/the_linear/metadata.txtpb index 838bb2b..cc9b4ce 100644 --- a/data/maps/the_linear/metadata.txtpb +++ b/data/maps/the_linear/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Linear" 1display_name: "The Linear"
2rte_room: "Room"
2worldport_entrance { 3worldport_entrance {
3 room: "Room" 4 room: "Room"
4 name: "GREAT" 5 name: "GREAT"
diff --git a/data/maps/the_lionized/metadata.txtpb b/data/maps/the_lionized/metadata.txtpb index 8d6168d..587143d 100644 --- a/data/maps/the_lionized/metadata.txtpb +++ b/data/maps/the_lionized/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Lionized" 1display_name: "The Lionized"
2rte_room: "Puzzle Room"
2worldport_entrance { 3worldport_entrance {
3 room: "Puzzle Room" 4 room: "Puzzle Room"
4 name: "ENTRY" 5 name: "ENTRY"
diff --git a/data/maps/the_literate/metadata.txtpb b/data/maps/the_literate/metadata.txtpb index 0e04306..28f5ccd 100644 --- a/data/maps/the_literate/metadata.txtpb +++ b/data/maps/the_literate/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Literate" 1display_name: "The Literate"
2rte_room: "Puzzle Room"
2worldport_entrance { 3worldport_entrance {
3 room: "Puzzle Room" 4 room: "Puzzle Room"
4 name: "ENTRY" 5 name: "ENTRY"
diff --git a/data/maps/the_lively/metadata.txtpb b/data/maps/the_lively/metadata.txtpb index acd1177..c088afe 100644 --- a/data/maps/the_lively/metadata.txtpb +++ b/data/maps/the_lively/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Lively" 1display_name: "The Lively"
2rte_room: "Puzzle Room"
2worldport_entrance { 3worldport_entrance {
3 room: "Puzzle Room" 4 room: "Puzzle Room"
4 name: "BETWEEN" 5 name: "BETWEEN"
diff --git a/data/maps/the_nuanced/metadata.txtpb b/data/maps/the_nuanced/metadata.txtpb index 4ac9b13..a3405ff 100644 --- a/data/maps/the_nuanced/metadata.txtpb +++ b/data/maps/the_nuanced/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Nuanced" 1display_name: "The Nuanced"
2rte_room: "Main Room"
2worldport_entrance { 3worldport_entrance {
3 room: "Main Room" 4 room: "Main Room"
4 name: "UNYIELDING" 5 name: "UNYIELDING"
diff --git a/data/maps/the_orb/metadata.txtpb b/data/maps/the_orb/metadata.txtpb index 0b25353..a33dbf6 100644 --- a/data/maps/the_orb/metadata.txtpb +++ b/data/maps/the_orb/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Orb" 1display_name: "The Orb"
2rte_room: "Main Area"
2# These are inaccessible, and were probably just copy pasted from the other 3# These are inaccessible, and were probably just copy pasted from the other
3# rooms. 4# rooms.
4excluded_nodes: "Components/Warps/worldport2" 5excluded_nodes: "Components/Warps/worldport2"
diff --git a/data/maps/the_owl/metadata.txtpb b/data/maps/the_owl/metadata.txtpb index a2004f8..11d79b0 100644 --- a/data/maps/the_owl/metadata.txtpb +++ b/data/maps/the_owl/metadata.txtpb
@@ -1 +1,2 @@
1display_name: "The Owl" 1display_name: "The Owl"
2rte_room: "R2C2 Bottom"
diff --git a/data/maps/the_parthenon/metadata.txtpb b/data/maps/the_parthenon/metadata.txtpb index 8696c33..203d712 100644 --- a/data/maps/the_parthenon/metadata.txtpb +++ b/data/maps/the_parthenon/metadata.txtpb
@@ -1 +1,2 @@
1display_name: "The Parthenon" 1display_name: "The Parthenon"
2rte_room: "Main Area"
diff --git a/data/maps/the_partial/metadata.txtpb b/data/maps/the_partial/metadata.txtpb index 48e9f42..9d5ad4a 100644 --- a/data/maps/the_partial/metadata.txtpb +++ b/data/maps/the_partial/metadata.txtpb
@@ -1 +1,2 @@
1display_name: "The Partial" 1display_name: "The Partial"
2rte_room: "Obverse Side"
diff --git a/data/maps/the_perceptive/metadata.txtpb b/data/maps/the_perceptive/metadata.txtpb index 6942cab..22eb1d5 100644 --- a/data/maps/the_perceptive/metadata.txtpb +++ b/data/maps/the_perceptive/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Perceptive" 1display_name: "The Perceptive"
2rte_room: "Main Area"
2worldport_entrance { 3worldport_entrance {
3 room: "Main Area" 4 room: "Main Area"
4 name: "CC" 5 name: "CC"
diff --git a/data/maps/the_plaza/metadata.txtpb b/data/maps/the_plaza/metadata.txtpb index 262fe99..6ff2e83 100644 --- a/data/maps/the_plaza/metadata.txtpb +++ b/data/maps/the_plaza/metadata.txtpb
@@ -1 +1,2 @@
1display_name: "The Plaza" 1display_name: "The Plaza"
2rte_room: "Main Area"
diff --git a/data/maps/the_quiet/metadata.txtpb b/data/maps/the_quiet/metadata.txtpb index d7fd0eb..9056fac 100644 --- a/data/maps/the_quiet/metadata.txtpb +++ b/data/maps/the_quiet/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Quiet" 1display_name: "The Quiet"
2rte_room: "Main Area"
2worldport_entrance { 3worldport_entrance {
3 room: "Main Area" 4 room: "Main Area"
4 name: "DAEDALUS" 5 name: "DAEDALUS"
diff --git a/data/maps/the_relentless/metadata.txtpb b/data/maps/the_relentless/metadata.txtpb index 9515145..313420d 100644 --- a/data/maps/the_relentless/metadata.txtpb +++ b/data/maps/the_relentless/metadata.txtpb
@@ -1 +1,2 @@
1display_name: "The Relentless" 1display_name: "The Relentless"
2# No RTE in order to preserve the gimmick of the map.
diff --git a/data/maps/the_repetitive/metadata.txtpb b/data/maps/the_repetitive/metadata.txtpb index 76a0f50..4924048 100644 --- a/data/maps/the_repetitive/metadata.txtpb +++ b/data/maps/the_repetitive/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Repetitive" 1display_name: "The Repetitive"
2rte_room: "Main Room"
2# These paintings are directly above/behind panels and thus can't be entered. 3# These paintings are directly above/behind panels and thus can't be entered.
3excluded_nodes: "Meshes/eyeRed3" 4excluded_nodes: "Meshes/eyeRed3"
4excluded_nodes: "Meshes/eyeRed4" 5excluded_nodes: "Meshes/eyeRed4"
diff --git a/data/maps/the_revitalized/metadata.txtpb b/data/maps/the_revitalized/metadata.txtpb index 7c4bf46..ab64625 100644 --- a/data/maps/the_revitalized/metadata.txtpb +++ b/data/maps/the_revitalized/metadata.txtpb
@@ -1,3 +1,4 @@
1display_name: "The Revitalized" 1display_name: "The Revitalized"
2rte_room: "Bye Room"
2# Let's not include the demo (for now). 3# Let's not include the demo (for now).
3excluded_nodes: "Components/panel_demo" 4excluded_nodes: "Components/panel_demo"
diff --git a/data/maps/the_shop/metadata.txtpb b/data/maps/the_shop/metadata.txtpb index 06f7fed..4a17985 100644 --- a/data/maps/the_shop/metadata.txtpb +++ b/data/maps/the_shop/metadata.txtpb
@@ -1 +1,2 @@
1display_name: "The Shop" 1display_name: "The Shop"
2rte_room: "Main Area"
diff --git a/data/maps/the_sirenic/metadata.txtpb b/data/maps/the_sirenic/metadata.txtpb index 80b1783..9e1e5e7 100644 --- a/data/maps/the_sirenic/metadata.txtpb +++ b/data/maps/the_sirenic/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Sirenic" 1display_name: "The Sirenic"
2rte_room: "Start"
2worldport_entrance { 3worldport_entrance {
3 room: "Start" 4 room: "Start"
4 name: "PLAZA" 5 name: "PLAZA"
diff --git a/data/maps/the_stellar/metadata.txtpb b/data/maps/the_stellar/metadata.txtpb index aaf6631..30b5ece 100644 --- a/data/maps/the_stellar/metadata.txtpb +++ b/data/maps/the_stellar/metadata.txtpb
@@ -1,5 +1,6 @@
1display_name: "The Stellar" 1display_name: "The Stellar"
2type: GIFT_MAP 2type: GIFT_MAP
3rte_room: "Starting Room"
3# This panel does not appear to be accessible without sniping. 4# This panel does not appear to be accessible without sniping.
4excluded_nodes: "Panels/Room_1/panel_2" 5excluded_nodes: "Panels/Room_1/panel_2"
5# The map's mastery is created at runtime. 6# The map's mastery is created at runtime.
diff --git a/data/maps/the_stormy/metadata.txtpb b/data/maps/the_stormy/metadata.txtpb index 42b1814..098218b 100644 --- a/data/maps/the_stormy/metadata.txtpb +++ b/data/maps/the_stormy/metadata.txtpb
@@ -1 +1,2 @@
1display_name: "The Stormy" 1display_name: "The Stormy"
2rte_room: "Center"
diff --git a/data/maps/the_sturdy/metadata.txtpb b/data/maps/the_sturdy/metadata.txtpb index bdc5a94..e6d997f 100644 --- a/data/maps/the_sturdy/metadata.txtpb +++ b/data/maps/the_sturdy/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Sturdy" 1display_name: "The Sturdy"
2rte_room: "Main Area"
2# Let's ignore the second half of the rainbows for now. 3# Let's ignore the second half of the rainbows for now.
3#excluded_nodes: "Components/Doors/Rainbow2/Hinge/rainbowMirrored" 4#excluded_nodes: "Components/Doors/Rainbow2/Hinge/rainbowMirrored"
4#excluded_nodes: "Components/Doors/Rainbow/Hinge/rainbowMirrored" 5#excluded_nodes: "Components/Doors/Rainbow/Hinge/rainbowMirrored"
diff --git a/data/maps/the_sun_temple/metadata.txtpb b/data/maps/the_sun_temple/metadata.txtpb index 25ed636..c64162e 100644 --- a/data/maps/the_sun_temple/metadata.txtpb +++ b/data/maps/the_sun_temple/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Sun Temple" 1display_name: "The Sun Temple"
2rte_room: "Entrance"
2worldport_entrance { 3worldport_entrance {
3 room: "Entrance" 4 room: "Entrance"
4 name: "UNKEMPT" 5 name: "UNKEMPT"
diff --git a/data/maps/the_sweet/metadata.txtpb b/data/maps/the_sweet/metadata.txtpb index 95f2209..9c3e7f5 100644 --- a/data/maps/the_sweet/metadata.txtpb +++ b/data/maps/the_sweet/metadata.txtpb
@@ -1 +1,2 @@
1display_name: "The Sweet" 1display_name: "The Sweet"
2rte_room: "Main Area"
diff --git a/data/maps/the_symbolic/metadata.txtpb b/data/maps/the_symbolic/metadata.txtpb index 2b37985..d57fca2 100644 --- a/data/maps/the_symbolic/metadata.txtpb +++ b/data/maps/the_symbolic/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Symbolic" 1display_name: "The Symbolic"
2rte_room: "White Room"
2worldport_entrance { 3worldport_entrance {
3 room: "White Room" 4 room: "White Room"
4 name: "PLAZA" 5 name: "PLAZA"
diff --git a/data/maps/the_talented/metadata.txtpb b/data/maps/the_talented/metadata.txtpb index 943bc69..0e68b9e 100644 --- a/data/maps/the_talented/metadata.txtpb +++ b/data/maps/the_talented/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Talented" 1display_name: "The Talented"
2rte_room: "Main Area"
2worldport_entrance { 3worldport_entrance {
3 room: "Main Area" 4 room: "Main Area"
4 name: "GREAT" 5 name: "GREAT"
diff --git a/data/maps/the_tenacious/metadata.txtpb b/data/maps/the_tenacious/metadata.txtpb index 58b3919..86ed1c5 100644 --- a/data/maps/the_tenacious/metadata.txtpb +++ b/data/maps/the_tenacious/metadata.txtpb
@@ -1,2 +1,3 @@
1display_name: "The Tenacious" 1display_name: "The Tenacious"
2rte_room: "Control Center Entrance"
2daedalus_only_mode: DAED_ONLY_ALLOW 3daedalus_only_mode: DAED_ONLY_ALLOW
diff --git a/data/maps/the_three_doors/metadata.txtpb b/data/maps/the_three_doors/metadata.txtpb index 0c6052a..bed023f 100644 --- a/data/maps/the_three_doors/metadata.txtpb +++ b/data/maps/the_three_doors/metadata.txtpb
@@ -1 +1,2 @@
1display_name: "The Three Doors" 1display_name: "The Three Doors"
2rte_room: "First Second Room"
diff --git a/data/maps/the_tower/metadata.txtpb b/data/maps/the_tower/metadata.txtpb index 3876206..9d4fe0b 100644 --- a/data/maps/the_tower/metadata.txtpb +++ b/data/maps/the_tower/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Tower" 1display_name: "The Tower"
2rte_room: "First Floor"
2worldport_entrance { 3worldport_entrance {
3 room: "First Floor" 4 room: "First Floor"
4 name: "GREAT" 5 name: "GREAT"
diff --git a/data/maps/the_tree/metadata.txtpb b/data/maps/the_tree/metadata.txtpb index 6090384..c52b946 100644 --- a/data/maps/the_tree/metadata.txtpb +++ b/data/maps/the_tree/metadata.txtpb
@@ -1 +1,2 @@
1display_name: "The Tree" 1display_name: "The Tree"
2rte_room: "Main Area"
diff --git a/data/maps/the_unkempt/metadata.txtpb b/data/maps/the_unkempt/metadata.txtpb index f2862bc..eaa821f 100644 --- a/data/maps/the_unkempt/metadata.txtpb +++ b/data/maps/the_unkempt/metadata.txtpb
@@ -1 +1,2 @@
1display_name: "The Unkempt" 1display_name: "The Unkempt"
2rte_room: "Main Area"
diff --git a/data/maps/the_unyielding/metadata.txtpb b/data/maps/the_unyielding/metadata.txtpb index d674150..311a966 100644 --- a/data/maps/the_unyielding/metadata.txtpb +++ b/data/maps/the_unyielding/metadata.txtpb
@@ -1 +1,2 @@
1display_name: "The Unyielding" 1display_name: "The Unyielding"
2rte_room: "Digital Entrance"
diff --git a/data/maps/the_wise/metadata.txtpb b/data/maps/the_wise/metadata.txtpb index 91af34e..282ebe9 100644 --- a/data/maps/the_wise/metadata.txtpb +++ b/data/maps/the_wise/metadata.txtpb
@@ -1,3 +1,4 @@
1display_name: "The Wise" 1display_name: "The Wise"
2rte_room: "Entry"
2# This port is out of bounds. 3# This port is out of bounds.
3excluded_nodes: "Components/Warps/worldport" 4excluded_nodes: "Components/Warps/worldport"
diff --git a/data/maps/the_wondrous/metadata.txtpb b/data/maps/the_wondrous/metadata.txtpb index 1c8e04c..88ca318 100644 --- a/data/maps/the_wondrous/metadata.txtpb +++ b/data/maps/the_wondrous/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Wondrous" 1display_name: "The Wondrous"
2rte_room: "Entry"
2worldport_entrance { 3worldport_entrance {
3 room: "Entry" 4 room: "Entry"
4 name: "DAEDALUS" 5 name: "DAEDALUS"
diff --git a/data/maps/the_words/metadata.txtpb b/data/maps/the_words/metadata.txtpb index 2dadcae..b016db0 100644 --- a/data/maps/the_words/metadata.txtpb +++ b/data/maps/the_words/metadata.txtpb
@@ -1,4 +1,5 @@
1display_name: "The Words" 1display_name: "The Words"
2rte_room: "Main Area"
2# These are old proxies of the main room's panels that are not linked up 3# These are old proxies of the main room's panels that are not linked up
3# anymore. 4# anymore.
4excluded_nodes: "Panels/Proxies/panel_3" 5excluded_nodes: "Panels/Proxies/panel_3"
diff --git a/proto/data.proto b/proto/data.proto index d7538da..6c846a3 100644 --- a/proto/data.proto +++ b/proto/data.proto
@@ -287,6 +287,7 @@ message Map {
287 optional string display_name = 3; 287 optional string display_name = 3;
288 optional DaedalusOnlyMode daedalus_only_mode = 6; 288 optional DaedalusOnlyMode daedalus_only_mode = 6;
289 optional uint64 worldport_entrance = 4; 289 optional uint64 worldport_entrance = 4;
290 optional uint64 rte_room = 7;
290 optional MapType type = 5; 291 optional MapType type = 5;
291} 292}
292 293
diff --git a/proto/human.proto b/proto/human.proto index 39625d5..484369e 100644 --- a/proto/human.proto +++ b/proto/human.proto
@@ -238,6 +238,7 @@ message HumanMap {
238 optional DaedalusOnlyMode daedalus_only_mode = 6; 238 optional DaedalusOnlyMode daedalus_only_mode = 6;
239 239
240 optional PortIdentifier worldport_entrance = 3; 240 optional PortIdentifier worldport_entrance = 3;
241 optional string rte_room = 7;
241 242
242 // These two fields are used by the validator and nothing else. excluded_nodes 243 // These two fields are used by the validator and nothing else. excluded_nodes
243 // are objects in the tscn that are intentionally not mentioned in the txtpb. 244 // are objects in the tscn that are intentionally not mentioned in the txtpb.
@@ -286,6 +287,7 @@ message IdMappings {
286 message MapIds { 287 message MapIds {
287 map<string, uint64> doors = 1; 288 map<string, uint64> doors = 1;
288 map<string, RoomIds> rooms = 2; 289 map<string, RoomIds> rooms = 2;
290 optional uint64 rte = 3;
289 } 291 }
290 292
291 map<string, MapIds> maps = 1; 293 map<string, MapIds> maps = 1;
diff --git a/tools/assign_ids/main.cpp b/tools/assign_ids/main.cpp index 4cf7c3f..4a48b86 100644 --- a/tools/assign_ids/main.cpp +++ b/tools/assign_ids/main.cpp
@@ -67,6 +67,10 @@ class AssignIds {
67 UpdateNextId(room.keyholders()); 67 UpdateNextId(room.keyholders());
68 UpdateNextId(room.ports()); 68 UpdateNextId(room.ports());
69 } 69 }
70
71 if (map.has_rte()) {
72 UpdateNextId(map.rte());
73 }
70 } 74 }
71 75
72 UpdateNextId(id_mappings_.special()); 76 UpdateNextId(id_mappings_.special());
@@ -93,10 +97,31 @@ class AssignIds {
93 void ProcessMap(std::filesystem::path path) { 97 void ProcessMap(std::filesystem::path path) {
94 std::string map_name = path.filename().string(); 98 std::string map_name = path.filename().string();
95 99
100 ProcessMapMetadata(path / "metadata.txtpb", map_name);
96 ProcessDoorsFile(path / "doors.txtpb", map_name); 101 ProcessDoorsFile(path / "doors.txtpb", map_name);
97 ProcessRooms(path / "rooms", map_name); 102 ProcessRooms(path / "rooms", map_name);
98 } 103 }
99 104
105 void ProcessMapMetadata(std::filesystem::path path,
106 const std::string& current_map_name) {
107 if (!std::filesystem::exists(path)) {
108 return;
109 }
110
111 auto metadata = ReadMessageFromFile<HumanMap>(path.string());
112 auto& maps = *output_.mutable_maps();
113
114 if (metadata.has_rte_room()) {
115 if (!id_mappings_.maps().contains(current_map_name) ||
116 !id_mappings_.maps().at(current_map_name).has_rte()) {
117 maps[current_map_name].set_rte(next_id_++);
118 } else {
119 maps[current_map_name].set_rte(
120 id_mappings_.maps().at(current_map_name).rte());
121 }
122 }
123 }
124
100 void ProcessDoorsFile(std::filesystem::path path, 125 void ProcessDoorsFile(std::filesystem::path path,
101 const std::string& current_map_name) { 126 const std::string& current_map_name) {
102 if (!std::filesystem::exists(path)) { 127 if (!std::filesystem::exists(path)) {
@@ -342,9 +367,13 @@ class AssignIds {
342 private: 367 private:
343 void UpdateNextId(const google::protobuf::Map<std::string, uint64_t>& ids) { 368 void UpdateNextId(const google::protobuf::Map<std::string, uint64_t>& ids) {
344 for (const auto& [_, id] : ids) { 369 for (const auto& [_, id] : ids) {
345 if (id > next_id_) { 370 UpdateNextId(id);
346 next_id_ = id; 371 }
347 } 372 }
373
374 void UpdateNextId(uint64_t id) {
375 if (id > next_id_) {
376 next_id_ = id;
348 } 377 }
349 } 378 }
350 379
diff --git a/tools/datapacker/main.cpp b/tools/datapacker/main.cpp index 953821f..4b74217 100644 --- a/tools/datapacker/main.cpp +++ b/tools/datapacker/main.cpp
@@ -100,6 +100,11 @@ class DataPacker {
100 map_name, metadata.worldport_entrance().room(), 100 map_name, metadata.worldport_entrance().room(),
101 metadata.worldport_entrance().name(), std::nullopt, std::nullopt)); 101 metadata.worldport_entrance().name(), std::nullopt, std::nullopt));
102 } 102 }
103
104 if (metadata.has_rte_room()) {
105 map.set_rte_room(container_.FindOrAddRoom(map_name, metadata.rte_room(),
106 std::nullopt));
107 }
103 } 108 }
104 109
105 void ProcessRooms(std::filesystem::path path, 110 void ProcessRooms(std::filesystem::path path,
diff --git a/tools/util/ids_yaml_format.cpp b/tools/util/ids_yaml_format.cpp index 5b9113b..c23c66b 100644 --- a/tools/util/ids_yaml_format.cpp +++ b/tools/util/ids_yaml_format.cpp
@@ -80,6 +80,10 @@ IdMappings ReadIdsFromYaml(const std::string& filename) {
80 door_it.second.as<uint64_t>(); 80 door_it.second.as<uint64_t>();
81 } 81 }
82 } 82 }
83
84 if (map_it.second["rte"]) {
85 map_ids.set_rte(map_it.second["rte"].as<uint64_t>());
86 }
83 } 87 }
84 } 88 }
85 89
@@ -168,6 +172,10 @@ void WriteIdsAsYaml(const IdMappings& ids, const std::string& filename) {
168 map_node["doors"][door_name] = door_id; 172 map_node["doors"][door_name] = door_id;
169 }); 173 });
170 174
175 if (map_ids.has_rte()) {
176 map_node["rte"] = map_ids.rte();
177 }
178
171 result["maps"][map_name] = std::move(map_node); 179 result["maps"][map_name] = std::move(map_node);
172 }); 180 });
173 181
diff --git a/tools/validator/human_processor.cpp b/tools/validator/human_processor.cpp index ffa9765..d6fcfa6 100644 --- a/tools/validator/human_processor.cpp +++ b/tools/validator/human_processor.cpp
@@ -74,6 +74,8 @@ class HumanProcessor {
74 MapInfo& map_info = info_.maps[current_map_name]; 74 MapInfo& map_info = info_.maps[current_map_name];
75 75
76 auto metadata = ReadMessageFromFile<HumanMap>(path.string()); 76 auto metadata = ReadMessageFromFile<HumanMap>(path.string());
77 map_info.definitions.push_back(metadata);
78
77 for (const std::string& path : metadata.excluded_nodes()) { 79 for (const std::string& path : metadata.excluded_nodes()) {
78 map_info.game_nodes[path].uses++; 80 map_info.game_nodes[path].uses++;
79 } 81 }
@@ -92,6 +94,15 @@ class HumanProcessor {
92 map_info.malformed_worldport_entrance = metadata.worldport_entrance(); 94 map_info.malformed_worldport_entrance = metadata.worldport_entrance();
93 } 95 }
94 } 96 }
97
98 if (metadata.has_rte_room()) {
99 RoomIdentifier room_identifier;
100 room_identifier.set_map(current_map_name);
101 room_identifier.set_name(metadata.rte_room());
102
103 RoomInfo& room_info = info_.rooms[room_identifier];
104 room_info.map_rtes_referenced_by.push_back(current_map_name);
105 }
95 } 106 }
96 107
97 void ProcessRooms(std::filesystem::path path, 108 void ProcessRooms(std::filesystem::path path,
@@ -617,6 +628,11 @@ class HumanProcessor {
617 port_info.has_id = true; 628 port_info.has_id = true;
618 } 629 }
619 } 630 }
631
632 if (map.has_rte()) {
633 MapInfo& map_info = info_.maps[map_name];
634 map_info.has_rte_id = true;
635 }
620 } 636 }
621 637
622 for (const auto& [tag, id] : ids.special()) { 638 for (const auto& [tag, id] : ids.special()) {
diff --git a/tools/validator/main.cpp b/tools/validator/main.cpp index 1a72e9a..6139e95 100644 --- a/tools/validator/main.cpp +++ b/tools/validator/main.cpp
@@ -21,7 +21,9 @@ void Run(const std::string& mapdir, const std::string& repodir) {
21int main(int argc, char** argv) { 21int main(int argc, char** argv) {
22 if (argc != 3) { 22 if (argc != 3) {
23 std::cout << "Incorrect argument count." << std::endl; 23 std::cout << "Incorrect argument count." << std::endl;
24 std::cout << "Usage: validator [path to map directory] [path to Lingo 2 repository]" << std::endl; 24 std::cout << "Usage: validator [path to map directory] [path to Lingo 2 "
25 "repository]"
26 << std::endl;
25 return 1; 27 return 1;
26 } 28 }
27 29
diff --git a/tools/validator/structs.h b/tools/validator/structs.h index 62974a8..81a0e8f 100644 --- a/tools/validator/structs.h +++ b/tools/validator/structs.h
@@ -28,6 +28,9 @@ struct GameNodeInfo {
28struct MapInfo { 28struct MapInfo {
29 std::map<std::string, GameNodeInfo> game_nodes; 29 std::map<std::string, GameNodeInfo> game_nodes;
30 30
31 std::vector<HumanMap> definitions;
32 bool has_rte_id = false;
33
31 std::optional<PortIdentifier> malformed_worldport_entrance; 34 std::optional<PortIdentifier> malformed_worldport_entrance;
32}; 35};
33 36
@@ -37,6 +40,7 @@ struct RoomInfo {
37 std::vector<DoorIdentifier> doors_referenced_by; 40 std::vector<DoorIdentifier> doors_referenced_by;
38 std::vector<PanelIdentifier> panels_referenced_by; 41 std::vector<PanelIdentifier> panels_referenced_by;
39 std::vector<HumanConnection> connections_referenced_by; 42 std::vector<HumanConnection> connections_referenced_by;
43 std::vector<std::string> map_rtes_referenced_by;
40}; 44};
41 45
42struct DoorInfo { 46struct DoorInfo {
diff --git a/tools/validator/validator.cpp b/tools/validator/validator.cpp index fe36be7..e9fbb74 100644 --- a/tools/validator/validator.cpp +++ b/tools/validator/validator.cpp
@@ -1,5 +1,6 @@
1#include "validator.h" 1#include "validator.h"
2 2
3#include <algorithm>
3#include <iostream> 4#include <iostream>
4 5
5#include "proto/human.pb.h" 6#include "proto/human.pb.h"
@@ -74,6 +75,22 @@ class Validator {
74 std::cout << "The worldport entrance for map " << map_name 75 std::cout << "The worldport entrance for map " << map_name
75 << " is malformed." << std::endl; 76 << " is malformed." << std::endl;
76 } 77 }
78
79 if (map_info.has_rte_id) {
80 if (!std::any_of(
81 map_info.definitions.begin(), map_info.definitions.end(),
82 [](const HumanMap& h_map) { return h_map.has_rte_room(); })) {
83 std::cout << "Map " << map_name << " has an RTE ID but no RTE room."
84 << std::endl;
85 }
86 } else {
87 if (std::any_of(
88 map_info.definitions.begin(), map_info.definitions.end(),
89 [](const HumanMap& h_map) { return h_map.has_rte_room(); })) {
90 std::cout << "Map " << map_name << " has an RTE room but no RTE ID."
91 << std::endl;
92 }
93 }
77 } 94 }
78 95
79 void ValidateRoom(const RoomIdentifier& room_identifier, 96 void ValidateRoom(const RoomIdentifier& room_identifier,
@@ -99,6 +116,10 @@ class Validator {
99 std::cout << " CONNECTION " << connection.ShortDebugString() 116 std::cout << " CONNECTION " << connection.ShortDebugString()
100 << std::endl; 117 << std::endl;
101 } 118 }
119
120 for (const std::string& map_name : room_info.map_rtes_referenced_by) {
121 std::cout << " MAP RTE " << map_name << std::endl;
122 }
102 } else if (room_info.definitions.size() > 1) { 123 } else if (room_info.definitions.size() > 1) {
103 std::cout << "Room " << room_identifier.ShortDebugString() 124 std::cout << "Room " << room_identifier.ShortDebugString()
104 << " was defined multiple times." << std::endl; 125 << " was defined multiple times." << std::endl;