|
1 |
| -from typing import Tuple |
| 1 | +from typing import Dict, Set, Tuple |
2 | 2 |
|
3 | 3 | from ..enums import ZorkGrandInquisitorRegions as ZGIRegions
|
4 | 4 |
|
5 | 5 |
|
6 |
| -randomizable_entrances: Tuple[Tuple[ZGIRegions, ZGIRegions,]] = ( |
| 6 | +entrances_to_game_location_teleports: Dict[ |
| 7 | + Tuple[ZGIRegions, ZGIRegions], |
| 8 | + Tuple[str, str], |
| 9 | +] = { |
| 10 | + (ZGIRegions.BOTTOM_OF_THE_WELL, ZGIRegions.CROSSROADS): ("u c 1 0", "25"), |
| 11 | + (ZGIRegions.BOTTOM_OF_THE_WELL, ZGIRegions.OUTSIDE_PORT_FOOZLE_WELL): ("p c 1 0", "250"), |
| 12 | + (ZGIRegions.CROSSROADS, ZGIRegions.BOTTOM_OF_THE_WELL): ("u w 1 0", "30"), |
| 13 | + (ZGIRegions.CROSSROADS, ZGIRegions.DM_LAIR): ("d g 1 0", "1410"), |
| 14 | + (ZGIRegions.CROSSROADS, ZGIRegions.GUE_TECH_ENTRANCE): ("t e 1 0", "200"), |
| 15 | + (ZGIRegions.CROSSROADS, ZGIRegions.SUBWAY_CROSSROADS): ("u s 1 0", "1440"), |
| 16 | + (ZGIRegions.DM_LAIR, ZGIRegions.CROSSROADS): ("u c 3 0", "500"), |
| 17 | + (ZGIRegions.DM_LAIR, ZGIRegions.DM_LAIR_INTERIOR): ("d v 1 0", "1590"), |
| 18 | + (ZGIRegions.DM_LAIR_INTERIOR, ZGIRegions.DM_LAIR): ("d g 4 0", "120"), |
| 19 | + (ZGIRegions.DM_LAIR_INTERIOR, ZGIRegions.WALKING_CASTLE): ("d c 1 0", "1150"), |
| 20 | + (ZGIRegions.GUE_TECH, ZGIRegions.GUE_TECH_ENTRANCE): ("t e 3 0", "1010"), |
| 21 | + (ZGIRegions.GUE_TECH, ZGIRegions.GUE_TECH_OUTSIDE): ("t e 4 0", "1120"), |
| 22 | + (ZGIRegions.GUE_TECH_ENTRANCE, ZGIRegions.CROSSROADS): ("u c 4 0", "470"), |
| 23 | + (ZGIRegions.GUE_TECH_ENTRANCE, ZGIRegions.GUE_TECH): ("t r 1 0", "150"), |
| 24 | + (ZGIRegions.GUE_TECH_HALLWAY, ZGIRegions.SPELL_LAB_BRIDGE): ("t p 1 0", "1080"), |
| 25 | + (ZGIRegions.GUE_TECH_OUTSIDE, ZGIRegions.GUE_TECH): ("t r 1 0", "150"), |
| 26 | + (ZGIRegions.HADES, ZGIRegions.HADES_BEYOND_GATES): ("h p 6 0", "380"), |
| 27 | + (ZGIRegions.HADES, ZGIRegions.HADES_SHORE): ("h p 1 0", "1480"), |
| 28 | + (ZGIRegions.HADES_BEYOND_GATES, ZGIRegions.HADES): ("h p 5 0", "1350"), |
| 29 | + (ZGIRegions.HADES_SHORE, ZGIRegions.HADES): ("h p 4 0", "340"), |
| 30 | + (ZGIRegions.HADES_SHORE, ZGIRegions.SUBWAY_HADES): ("u h 1 0", "0"), |
| 31 | + (ZGIRegions.MONASTERY, ZGIRegions.MONASTERY_EXHIBIT): ("m e 2 0", "900"), |
| 32 | + (ZGIRegions.MONASTERY, ZGIRegions.SUBWAY_MONASTERY): ("u m 1 0", "1590"), |
| 33 | + (ZGIRegions.MONASTERY_EXHIBIT, ZGIRegions.MONASTERY): ("m t 3 0", "0"), |
| 34 | + (ZGIRegions.OUTSIDE_PORT_FOOZLE_INQUISITION_HQ, ZGIRegions.OUTSIDE_PORT_FOOZLE_SIGNPOST): ("p s 1 0", "680"), |
| 35 | + (ZGIRegions.OUTSIDE_PORT_FOOZLE_SIGNPOST, ZGIRegions.OUTSIDE_PORT_FOOZLE_INQUISITION_HQ): ("p x 1 0", "50"), |
| 36 | + (ZGIRegions.OUTSIDE_PORT_FOOZLE_SIGNPOST, ZGIRegions.OUTSIDE_PORT_FOOZLE_WELL): ("p s 2 0", "1360"), |
| 37 | + (ZGIRegions.OUTSIDE_PORT_FOOZLE_SIGNPOST, ZGIRegions.PORT_FOOZLE): ("p e 1 0", "210"), |
| 38 | + (ZGIRegions.OUTSIDE_PORT_FOOZLE_WELL, ZGIRegions.BOTTOM_OF_THE_WELL): ("u w 1 0", "0"), |
| 39 | + (ZGIRegions.OUTSIDE_PORT_FOOZLE_WELL, ZGIRegions.OUTSIDE_PORT_FOOZLE_SIGNPOST): ("p s 1 0", "170"), |
| 40 | + (ZGIRegions.PORT_FOOZLE, ZGIRegions.OUTSIDE_PORT_FOOZLE_SIGNPOST): ("p s 1 0", "1430"), |
| 41 | + (ZGIRegions.PORT_FOOZLE, ZGIRegions.PORT_FOOZLE_JACKS_SHOP): ("p p 1 0", "1130"), |
| 42 | + (ZGIRegions.PORT_FOOZLE_JACKS_SHOP, ZGIRegions.PORT_FOOZLE): ("p e 1 0", "1630"), |
| 43 | + (ZGIRegions.SPELL_LAB, ZGIRegions.SPELL_LAB_BRIDGE): ("t p 1 0", "140"), |
| 44 | + (ZGIRegions.SPELL_LAB_BRIDGE, ZGIRegions.GUE_TECH_HALLWAY): ("t h 3 0", "740"), |
| 45 | + (ZGIRegions.SPELL_LAB_BRIDGE, ZGIRegions.SPELL_LAB): ("t p 2 0", "1240"), |
| 46 | + (ZGIRegions.SUBWAY_CROSSROADS, ZGIRegions.CROSSROADS): ("u c 6 0", "1320"), |
| 47 | + (ZGIRegions.SUBWAY_CROSSROADS, ZGIRegions.SUBWAY_FLOOD_CONTROL_DAM): ("u e 2 0", "1030"), |
| 48 | + (ZGIRegions.SUBWAY_CROSSROADS, ZGIRegions.SUBWAY_HADES): ("u h 2 0", "1030"), |
| 49 | + (ZGIRegions.SUBWAY_CROSSROADS, ZGIRegions.SUBWAY_MONASTERY): ("u m 2 0", "1030"), |
| 50 | + (ZGIRegions.SUBWAY_FLOOD_CONTROL_DAM, ZGIRegions.SUBWAY_CROSSROADS): ("u s 2 0", "1030"), |
| 51 | + (ZGIRegions.SUBWAY_FLOOD_CONTROL_DAM, ZGIRegions.SUBWAY_HADES): ("u h 2 0", "1030"), |
| 52 | + (ZGIRegions.SUBWAY_FLOOD_CONTROL_DAM, ZGIRegions.SUBWAY_MONASTERY): ("u m 2 0", "1030"), |
| 53 | + (ZGIRegions.SUBWAY_HADES, ZGIRegions.HADES_SHORE): ("h p 1 0", "530"), |
| 54 | + (ZGIRegions.SUBWAY_HADES, ZGIRegions.SUBWAY_CROSSROADS): ("u s 2 0", "1030"), |
| 55 | + (ZGIRegions.SUBWAY_HADES, ZGIRegions.SUBWAY_FLOOD_CONTROL_DAM): ("u e 2 0", "1030"), |
| 56 | + (ZGIRegions.SUBWAY_HADES, ZGIRegions.SUBWAY_MONASTERY): ("u m 2 0", "1030"), |
| 57 | + (ZGIRegions.SUBWAY_MONASTERY, ZGIRegions.MONASTERY): ("m t 1 0", "1530"), |
| 58 | + (ZGIRegions.SUBWAY_MONASTERY, ZGIRegions.SUBWAY_CROSSROADS): ("u s 2 0", "1030"), |
| 59 | + (ZGIRegions.SUBWAY_MONASTERY, ZGIRegions.SUBWAY_FLOOD_CONTROL_DAM): ("u e 2 0", "1030"), |
| 60 | + (ZGIRegions.SUBWAY_MONASTERY, ZGIRegions.SUBWAY_HADES): ("u h 2 0", "1030"), |
| 61 | + (ZGIRegions.WALKING_CASTLE, ZGIRegions.DM_LAIR_INTERIOR): ("d v 1 0", "680"), |
| 62 | +} |
| 63 | + |
| 64 | +entrances_to_game_locations: Dict[ |
| 65 | + Tuple[Tuple[ZGIRegions, ZGIRegions]], |
| 66 | + Tuple[Tuple[str, str], ...], |
| 67 | +] = { |
| 68 | + (ZGIRegions.BOTTOM_OF_THE_WELL, ZGIRegions.CROSSROADS): (("uw1f", "uc10"),), |
| 69 | + (ZGIRegions.BOTTOM_OF_THE_WELL, ZGIRegions.OUTSIDE_PORT_FOOZLE_WELL): (("uw10", "pc10"),), |
| 70 | + (ZGIRegions.CROSSROADS, ZGIRegions.BOTTOM_OF_THE_WELL): (("uc10", "uw10"),), |
| 71 | + (ZGIRegions.CROSSROADS, ZGIRegions.DM_LAIR): (("uc30", "dg10"),), |
| 72 | + (ZGIRegions.CROSSROADS, ZGIRegions.GUE_TECH_ENTRANCE): (("uc40", "te10"),), |
| 73 | + (ZGIRegions.CROSSROADS, ZGIRegions.SUBWAY_CROSSROADS): (("uc60", "us10"),), |
| 74 | + (ZGIRegions.DM_LAIR, ZGIRegions.CROSSROADS): (("dg10", "uc30"),), |
| 75 | + (ZGIRegions.DM_LAIR, ZGIRegions.DM_LAIR_INTERIOR): (("dg40", "dv10"),), |
| 76 | + (ZGIRegions.DM_LAIR_INTERIOR, ZGIRegions.DM_LAIR): (("dv10", "dg40"),), |
| 77 | + (ZGIRegions.DM_LAIR_INTERIOR, ZGIRegions.WALKING_CASTLE): (("dv10", "dc10"),), |
| 78 | + (ZGIRegions.GUE_TECH, ZGIRegions.GUE_TECH_ENTRANCE): (("tr1g", "te30"),), |
| 79 | + (ZGIRegions.GUE_TECH, ZGIRegions.GUE_TECH_OUTSIDE): (("tr1k", "te40"),), |
| 80 | + (ZGIRegions.GUE_TECH_ENTRANCE, ZGIRegions.CROSSROADS): (("te10", "uc40"),), |
| 81 | + (ZGIRegions.GUE_TECH_ENTRANCE, ZGIRegions.GUE_TECH): (("te3e", "tr10"),), |
| 82 | + (ZGIRegions.GUE_TECH_HALLWAY, ZGIRegions.SPELL_LAB_BRIDGE): (("th30", "tp10"),), |
| 83 | + (ZGIRegions.GUE_TECH_OUTSIDE, ZGIRegions.GUE_TECH): (("te40", "tr10"),), |
| 84 | + (ZGIRegions.HADES, ZGIRegions.HADES_BEYOND_GATES): (("hp50", "hp60"),), |
| 85 | + (ZGIRegions.HADES, ZGIRegions.HADES_SHORE): (("hp4e", "hp10"),), |
| 86 | + (ZGIRegions.HADES_BEYOND_GATES, ZGIRegions.HADES): (("hp60", "hp50"),), |
| 87 | + (ZGIRegions.HADES_SHORE, ZGIRegions.HADES): (("hp1f", "hp40"),), |
| 88 | + (ZGIRegions.HADES_SHORE, ZGIRegions.SUBWAY_HADES): (("hp10", "uh10"),), |
| 89 | + (ZGIRegions.MONASTERY, ZGIRegions.MONASTERY_EXHIBIT): (("mt2e", "me20"), ("mt30", "me20")), |
| 90 | + (ZGIRegions.MONASTERY, ZGIRegions.SUBWAY_MONASTERY): (("mt1e", "um10"),), |
| 91 | + (ZGIRegions.MONASTERY_EXHIBIT, ZGIRegions.MONASTERY): (("me5f", "mt30"),), |
| 92 | + (ZGIRegions.OUTSIDE_PORT_FOOZLE_INQUISITION_HQ, ZGIRegions.OUTSIDE_PORT_FOOZLE_SIGNPOST): (("px10", "ps10"),), |
| 93 | + (ZGIRegions.OUTSIDE_PORT_FOOZLE_SIGNPOST, ZGIRegions.OUTSIDE_PORT_FOOZLE_INQUISITION_HQ): (("ps10", "px10"),), |
| 94 | + (ZGIRegions.OUTSIDE_PORT_FOOZLE_SIGNPOST, ZGIRegions.OUTSIDE_PORT_FOOZLE_WELL): (("ps10", "ps20"),), |
| 95 | + (ZGIRegions.OUTSIDE_PORT_FOOZLE_SIGNPOST, ZGIRegions.PORT_FOOZLE): (("ps10", "pe10"),), |
| 96 | + (ZGIRegions.OUTSIDE_PORT_FOOZLE_WELL, ZGIRegions.BOTTOM_OF_THE_WELL): (("pc1e", "uw10"),), |
| 97 | + (ZGIRegions.OUTSIDE_PORT_FOOZLE_WELL, ZGIRegions.OUTSIDE_PORT_FOOZLE_SIGNPOST): (("ps20", "ps10"),), |
| 98 | + (ZGIRegions.PORT_FOOZLE, ZGIRegions.OUTSIDE_PORT_FOOZLE_SIGNPOST): (("pe10", "ps10"),), |
| 99 | + (ZGIRegions.PORT_FOOZLE, ZGIRegions.PORT_FOOZLE_JACKS_SHOP): (("pe1e", "pp10"),), |
| 100 | + (ZGIRegions.PORT_FOOZLE_JACKS_SHOP, ZGIRegions.PORT_FOOZLE): (("pp10", "pe10"),), |
| 101 | + (ZGIRegions.SPELL_LAB, ZGIRegions.SPELL_LAB_BRIDGE): (("tp20", "tp50"),), |
| 102 | + (ZGIRegions.SPELL_LAB_BRIDGE, ZGIRegions.GUE_TECH_HALLWAY): (("tp10", "th30"),), |
| 103 | + (ZGIRegions.SPELL_LAB_BRIDGE, ZGIRegions.SPELL_LAB): (("tp10", "tp50"),), |
| 104 | + (ZGIRegions.SUBWAY_CROSSROADS, ZGIRegions.CROSSROADS): (("us1e", "uc60"),), |
| 105 | + (ZGIRegions.SUBWAY_CROSSROADS, ZGIRegions.SUBWAY_FLOOD_CONTROL_DAM): (("us2f", "ue2f"),), |
| 106 | + (ZGIRegions.SUBWAY_CROSSROADS, ZGIRegions.SUBWAY_HADES): (("us2f", "uh2f"),), |
| 107 | + (ZGIRegions.SUBWAY_CROSSROADS, ZGIRegions.SUBWAY_MONASTERY): (("us2f", "um2f"),), |
| 108 | + (ZGIRegions.SUBWAY_FLOOD_CONTROL_DAM, ZGIRegions.SUBWAY_CROSSROADS): (("ue2f", "us2f"),), |
| 109 | + (ZGIRegions.SUBWAY_FLOOD_CONTROL_DAM, ZGIRegions.SUBWAY_HADES): (("ue2f", "uh2f"),), |
| 110 | + (ZGIRegions.SUBWAY_FLOOD_CONTROL_DAM, ZGIRegions.SUBWAY_MONASTERY): (("ue2f", "um2f"),), |
| 111 | + (ZGIRegions.SUBWAY_HADES, ZGIRegions.HADES_SHORE): (("uh10", "hp10"),), |
| 112 | + (ZGIRegions.SUBWAY_HADES, ZGIRegions.SUBWAY_CROSSROADS): (("uh2f", "us2f"),), |
| 113 | + (ZGIRegions.SUBWAY_HADES, ZGIRegions.SUBWAY_FLOOD_CONTROL_DAM): (("uh2f", "ue2f"),), |
| 114 | + (ZGIRegions.SUBWAY_HADES, ZGIRegions.SUBWAY_MONASTERY): (("uh2f", "um2f"),), |
| 115 | + (ZGIRegions.SUBWAY_MONASTERY, ZGIRegions.MONASTERY): (("um10", "mt10"),), |
| 116 | + (ZGIRegions.SUBWAY_MONASTERY, ZGIRegions.SUBWAY_CROSSROADS): (("um2f", "us2f"),), |
| 117 | + (ZGIRegions.SUBWAY_MONASTERY, ZGIRegions.SUBWAY_FLOOD_CONTROL_DAM): (("um2f", "ue2f"),), |
| 118 | + (ZGIRegions.SUBWAY_MONASTERY, ZGIRegions.SUBWAY_HADES): (("um2f", "uh2f"),), |
| 119 | + (ZGIRegions.WALKING_CASTLE, ZGIRegions.DM_LAIR_INTERIOR): (("dc10", "dv10"),), |
| 120 | +} |
| 121 | + |
| 122 | +randomizable_entrances: Tuple[Tuple[ZGIRegions, ZGIRegions]] = ( |
7 | 123 | (ZGIRegions.BOTTOM_OF_THE_WELL, ZGIRegions.CROSSROADS),
|
8 | 124 | (ZGIRegions.BOTTOM_OF_THE_WELL, ZGIRegions.OUTSIDE_PORT_FOOZLE_WELL),
|
9 | 125 | (ZGIRegions.CROSSROADS, ZGIRegions.BOTTOM_OF_THE_WELL),
|
|
41 | 157 | (ZGIRegions.SPELL_LAB_BRIDGE, ZGIRegions.GUE_TECH_HALLWAY),
|
42 | 158 | (ZGIRegions.SPELL_LAB_BRIDGE, ZGIRegions.SPELL_LAB),
|
43 | 159 | (ZGIRegions.SUBWAY_CROSSROADS, ZGIRegions.CROSSROADS),
|
| 160 | + (ZGIRegions.SUBWAY_HADES, ZGIRegions.HADES_SHORE), |
| 161 | + (ZGIRegions.SUBWAY_MONASTERY, ZGIRegions.MONASTERY), |
| 162 | + (ZGIRegions.WALKING_CASTLE, ZGIRegions.DM_LAIR_INTERIOR), |
| 163 | +) |
| 164 | + |
| 165 | +randomizable_entrances_subway: Tuple[Tuple[ZGIRegions, ZGIRegions]] = ( |
44 | 166 | (ZGIRegions.SUBWAY_CROSSROADS, ZGIRegions.SUBWAY_FLOOD_CONTROL_DAM),
|
45 | 167 | (ZGIRegions.SUBWAY_CROSSROADS, ZGIRegions.SUBWAY_HADES),
|
46 | 168 | (ZGIRegions.SUBWAY_CROSSROADS, ZGIRegions.SUBWAY_MONASTERY),
|
47 | 169 | (ZGIRegions.SUBWAY_FLOOD_CONTROL_DAM, ZGIRegions.SUBWAY_CROSSROADS),
|
48 | 170 | (ZGIRegions.SUBWAY_FLOOD_CONTROL_DAM, ZGIRegions.SUBWAY_HADES),
|
49 | 171 | (ZGIRegions.SUBWAY_FLOOD_CONTROL_DAM, ZGIRegions.SUBWAY_MONASTERY),
|
50 |
| - (ZGIRegions.SUBWAY_HADES, ZGIRegions.HADES_SHORE), |
51 | 172 | (ZGIRegions.SUBWAY_HADES, ZGIRegions.SUBWAY_CROSSROADS),
|
52 | 173 | (ZGIRegions.SUBWAY_HADES, ZGIRegions.SUBWAY_FLOOD_CONTROL_DAM),
|
53 | 174 | (ZGIRegions.SUBWAY_HADES, ZGIRegions.SUBWAY_MONASTERY),
|
54 |
| - (ZGIRegions.SUBWAY_MONASTERY, ZGIRegions.MONASTERY), |
55 | 175 | (ZGIRegions.SUBWAY_MONASTERY, ZGIRegions.SUBWAY_CROSSROADS),
|
56 | 176 | (ZGIRegions.SUBWAY_MONASTERY, ZGIRegions.SUBWAY_FLOOD_CONTROL_DAM),
|
57 | 177 | (ZGIRegions.SUBWAY_MONASTERY, ZGIRegions.SUBWAY_HADES),
|
58 |
| - (ZGIRegions.WALKING_CASTLE, ZGIRegions.DM_LAIR_INTERIOR), |
59 | 178 | )
|
| 179 | + |
| 180 | +relevant_game_locations: Set[str] = set() |
| 181 | + |
| 182 | +entrance_pairs: Tuple[Tuple[str, str]] |
| 183 | +for entrance_pairs in entrances_to_game_locations.values(): |
| 184 | + entrance_from: str |
| 185 | + entrance_to: str |
| 186 | + for entrance_from, entrance_to in entrance_pairs: |
| 187 | + relevant_game_locations.add(entrance_from) |
| 188 | + relevant_game_locations.add(entrance_to) |
0 commit comments