Door Types in Spoiler

Some fixes for rooms with ToggleFlag "doors"
This commit is contained in:
aerinon
2019-10-09 14:26:18 -06:00
parent 2ced48c691
commit dc6791da08
4 changed files with 29 additions and 6 deletions

View File

@@ -94,9 +94,6 @@ def create_door_spoiler(world, player):
logger.debug('Door not found in queue: %s connected to %s', door_b.name, door_a.name)
else:
logger.warning('Door not connected: %s', door_a.name)
for room in world.rooms:
if room.modified:
logger.debug('Room %s changed (p%d)', room.index, player)
for dp in world.paired_doors[player]:
if dp.pair:
logger.debug('Paired Doors: %s with %s (p%d)', dp.door_a, dp.door_b, player)
@@ -925,7 +922,7 @@ def find_key_door_candidates(region, checked, world, player):
room_b = world.get_room(d2.roomIndex, player)
pos_b, kind_b = room_b.doorList[d2.doorListPos]
okay_normals = [DoorKind.Normal, DoorKind.SmallKey, DoorKind.Bombable,
DoorKind.Dashable, DoorKind.Warp, DoorKind.DungeonChanger]
DoorKind.Dashable, DoorKind.DungeonChanger]
valid = kind in okay_normals and kind_b in okay_normals
else:
valid = True
@@ -1009,6 +1006,8 @@ def validate_key_layout(sector, start_regions, key_door_proposal, world, player)
def validate_key_layout_r(state, flat_proposal, world, player):
# improvements: remove recursion to make this iterative
# store a cache of various states of opened door to increase speed of checks - many are repetitive
while len(state.avail_doors) > 0:
door = state.avail_doors.pop()
connect_region = world.get_entrance(door.name, player).connected_region
@@ -1117,6 +1116,7 @@ def reassign_key_doors(current_doors, proposal, world, player):
world.paired_doors[player].append(PairedDoor(d1.name, d2.name))
change_door_to_small_key(d1, world, player)
change_door_to_small_key(d2, world, player)
world.spoiler.set_door_type(d1.name+' <-> '+d2.name, 'Key Door', player)
else:
d = obj
if d.type is DoorType.Interior:
@@ -1125,6 +1125,7 @@ def reassign_key_doors(current_doors, proposal, world, player):
pass # we don't have spiral stairs candidates yet that aren't already key doors
elif d.type is DoorType.Normal:
change_door_to_small_key(d, world, player)
world.spoiler.set_door_type(d.name, 'Key Door', player)
def change_door_to_small_key(d, world, player):