Handle standard mode, vanilla door shuffle.
This commit is contained in:
@@ -118,17 +118,34 @@ def vanilla_key_logic(world, player):
|
|||||||
|
|
||||||
overworld_prep(world, player)
|
overworld_prep(world, player)
|
||||||
entrances_map, potentials, connections = determine_entrance_list(world, player)
|
entrances_map, potentials, connections = determine_entrance_list(world, player)
|
||||||
for builder in builders:
|
|
||||||
start_regions = convert_regions(entrances_map[builder.name], world, player)
|
enabled_entrances = {}
|
||||||
doors = convert_key_doors(default_small_key_doors[builder.name], world, player)
|
sector_queue = collections.deque(builders)
|
||||||
key_layout = build_key_layout(builder, start_regions, doors, world, player)
|
last_key = None
|
||||||
valid = validate_key_layout(key_layout, world, player)
|
while len(sector_queue) > 0:
|
||||||
if not valid:
|
builder = sector_queue.popleft()
|
||||||
raise Exception('Vanilla key layout not valid %s' % builder.name)
|
|
||||||
if player not in world.key_logic.keys():
|
origin_list = list(entrances_map[builder.name])
|
||||||
world.key_logic[player] = {}
|
find_enabled_origins(builder.sectors, enabled_entrances, origin_list, entrances_map, builder.name)
|
||||||
analyze_dungeon(key_layout, world, player)
|
origin_list_sans_drops = remove_drop_origins(origin_list)
|
||||||
world.key_logic[player][builder.name] = key_layout.key_logic
|
if len(origin_list_sans_drops) <= 0:
|
||||||
|
if last_key == builder.name:
|
||||||
|
raise Exception('Infinte loop detected %s' % builder.name)
|
||||||
|
sector_queue.append(builder)
|
||||||
|
last_key = builder.name
|
||||||
|
else:
|
||||||
|
find_new_entrances(builder.master_sector, connections, potentials, enabled_entrances, world, player)
|
||||||
|
start_regions = convert_regions(origin_list, world, player)
|
||||||
|
doors = convert_key_doors(default_small_key_doors[builder.name], world, player)
|
||||||
|
key_layout = build_key_layout(builder, start_regions, doors, world, player)
|
||||||
|
valid = validate_key_layout(key_layout, world, player)
|
||||||
|
if not valid:
|
||||||
|
raise Exception('Vanilla key layout not valid %s' % builder.name)
|
||||||
|
if player not in world.key_logic.keys():
|
||||||
|
world.key_logic[player] = {}
|
||||||
|
analyze_dungeon(key_layout, world, player)
|
||||||
|
world.key_logic[player][builder.name] = key_layout.key_logic
|
||||||
|
last_key = None
|
||||||
validate_vanilla_key_logic(world, player)
|
validate_vanilla_key_logic(world, player)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1000,12 +1000,16 @@ def validate_vanilla_key_logic(world, player):
|
|||||||
|
|
||||||
|
|
||||||
def val_hyrule(key_logic, world, player):
|
def val_hyrule(key_logic, world, player):
|
||||||
val_rule(key_logic.door_rules['Sewers Secret Room Key Door S'], 2)
|
if world.mode[player] == 'standard':
|
||||||
val_rule(key_logic.door_rules['Sewers Dark Cross Key Door N'], 2)
|
val_rule(key_logic.door_rules['Hyrule Dungeon Map Room Key Door S'], 1)
|
||||||
val_rule(key_logic.door_rules['Hyrule Dungeon Map Room Key Door S'], 2)
|
val_rule(key_logic.door_rules['Hyrule Dungeon Armory Interior Key Door N'], 2)
|
||||||
# why is allow_small actually false? - because chest key is forced elsewhere?
|
val_rule(key_logic.door_rules['Sewers Dark Cross Key Door N'], 3)
|
||||||
# val_rule(key_logic.door_rules['Hyrule Dungeon Armory Interior Key Door N'], 3, True, 'Hyrule Castle - Zelda\'s Chest')
|
val_rule(key_logic.door_rules['Sewers Key Rat Key Door N'], 4)
|
||||||
val_rule(key_logic.door_rules['Hyrule Dungeon Armory Interior Key Door N'], 4)
|
else:
|
||||||
|
val_rule(key_logic.door_rules['Sewers Secret Room Key Door S'], 2)
|
||||||
|
val_rule(key_logic.door_rules['Sewers Dark Cross Key Door N'], 2)
|
||||||
|
val_rule(key_logic.door_rules['Hyrule Dungeon Map Room Key Door S'], 2)
|
||||||
|
val_rule(key_logic.door_rules['Hyrule Dungeon Armory Interior Key Door N'], 4)
|
||||||
|
|
||||||
|
|
||||||
def val_eastern(key_logic, world, player):
|
def val_eastern(key_logic, world, player):
|
||||||
|
|||||||
@@ -846,7 +846,8 @@ dungeon_events = [
|
|||||||
'Attic Cracked Floor',
|
'Attic Cracked Floor',
|
||||||
'Suspicious Maiden',
|
'Suspicious Maiden',
|
||||||
'Revealing Light',
|
'Revealing Light',
|
||||||
'Ice Block Drop'
|
'Ice Block Drop',
|
||||||
|
'Zelda Pickup'
|
||||||
]
|
]
|
||||||
|
|
||||||
flooded_keys_reverse = {
|
flooded_keys_reverse = {
|
||||||
|
|||||||
Reference in New Issue
Block a user