@@ -149,6 +149,7 @@ def process_keyvalue(k, v, metadata):
149149 "type" , # validated by schema in 'resourceAvailable', 'resourceCapacity'
150150 "position" , # validated by schema
151151 "environment" , # validated by schema
152+ "bypassesDoorShell" , # validated by schema
152153 ]
153154
154155 # check if it's a key we want to check
@@ -290,11 +291,11 @@ def find_door_unlocked_nodes(strat, node_subtype, nodes_without_implicit_unlocks
290291 nodes = find_door_unlocked_nodes_rec (strat ["requires" ])
291292 from_node = strat ["link" ][0 ]
292293 to_node = strat ["link" ][1 ]
293- if "exitCondition" in strat and strat .get ("bypassesDoorShell" ) == False and node_subtype not in ["elevator" , "doorway" , "sandpit" , "passage" ]:
294+ if "exitCondition" in strat and strat .get ("bypassesDoorShell" ) not in [ True , "free" ] and node_subtype not in ["elevator" , "doorway" , "sandpit" , "passage" ]:
294295 nodes .add (to_node )
295296 if "entranceCondition" not in strat and from_node in nodes :
296297 nodes .remove (from_node )
297- if to_node in nodes_without_implicit_unlocks and strat .get ("bypassesDoorShell" ) == False and "gModeRegainMobility" not in strat :
298+ if to_node in nodes_without_implicit_unlocks and strat .get ("bypassesDoorShell" ) not in [ True , "free" ] and "gModeRegainMobility" not in strat :
298299 nodes .add (to_node )
299300 return nodes
300301
@@ -1082,7 +1083,7 @@ def strat_err_fn(msg):
10821083 # Regain mobility strats also take place entirely in G-mode.
10831084 pass
10841085 elif "comeInWithGrappleTeleport" in strat .get ("entranceCondition" , []) and \
1085- strat .get ("bypassesDoorShell" ) is not False :
1086+ strat .get ("bypassesDoorShell" ) is in [ True , "free" ] :
10861087 # Strats that use a grapple teleport to bypass a door lock can be done without heat damage,
10871088 # since the door transition is touched immediately.
10881089 pass
@@ -1204,7 +1205,7 @@ def speed_err_fn(msg):
12041205 msg = f"🔴ERROR: Door unlocked requirement for node { node } , type { t } , is not covered in `unlocksDoors`:{ stratRef } "
12051206 messages ["reds" ].append (msg )
12061207 messages ["counts" ]["reds" ] += 1
1207- if strat .get ("bypassesDoorShell" ) != False :
1208+ if strat .get ("bypassesDoorShell" ) in [ True , "free" ] :
12081209 if node_lookup [toNode ]["nodeType" ] != "door" :
12091210 msg = f"🔴ERROR: Strat has bypassesDoorShell but To Node is not door:{ stratRef } "
12101211 messages ["reds" ].append (msg )
0 commit comments