Total keys fix for key logic
(Basic reductions do not affect amount of keys placed while crossed does)
This commit is contained in:
@@ -1071,6 +1071,7 @@ def assign_cross_keys(dungeon_builders, world, player):
|
|||||||
# Step 3: Initial valid combination find - reduce flex if needed
|
# Step 3: Initial valid combination find - reduce flex if needed
|
||||||
for name, builder in dungeon_builders.items():
|
for name, builder in dungeon_builders.items():
|
||||||
suggested = builder.key_doors_num - builder.key_drop_cnt
|
suggested = builder.key_doors_num - builder.key_drop_cnt
|
||||||
|
builder.total_keys = builder.key_doors_num
|
||||||
find_valid_combination(builder, start_regions_map[name], world, player)
|
find_valid_combination(builder, start_regions_map[name], world, player)
|
||||||
actual_chest_keys = builder.key_doors_num - builder.key_drop_cnt
|
actual_chest_keys = builder.key_doors_num - builder.key_drop_cnt
|
||||||
if actual_chest_keys < suggested:
|
if actual_chest_keys < suggested:
|
||||||
@@ -1087,6 +1088,7 @@ def assign_cross_keys(dungeon_builders, world, player):
|
|||||||
name = builder.name
|
name = builder.name
|
||||||
logger.debug('Cross Dungeon: Increasing key count by 1 for %s', name)
|
logger.debug('Cross Dungeon: Increasing key count by 1 for %s', name)
|
||||||
builder.key_doors_num += 1
|
builder.key_doors_num += 1
|
||||||
|
builder.total_keys = builder.key_doors_num
|
||||||
result = find_valid_combination(builder, start_regions_map[name], world, player, drop_keys=False)
|
result = find_valid_combination(builder, start_regions_map[name], world, player, drop_keys=False)
|
||||||
if result:
|
if result:
|
||||||
remaining -= 1
|
remaining -= 1
|
||||||
@@ -1380,7 +1382,7 @@ def shuffle_key_doors(builder, world, player):
|
|||||||
skips.append(world.get_door(dp.door_a, player))
|
skips.append(world.get_door(dp.door_a, player))
|
||||||
break
|
break
|
||||||
num_key_doors += 1
|
num_key_doors += 1
|
||||||
builder.key_doors_num = num_key_doors
|
builder.key_doors_num = builder.total_keys = num_key_doors
|
||||||
find_small_key_door_candidates(builder, start_regions, world, player)
|
find_small_key_door_candidates(builder, start_regions, world, player)
|
||||||
find_valid_combination(builder, start_regions, world, player)
|
find_valid_combination(builder, start_regions, world, player)
|
||||||
reassign_key_doors(builder, world, player)
|
reassign_key_doors(builder, world, player)
|
||||||
|
|||||||
@@ -1175,6 +1175,7 @@ class DungeonBuilder(object):
|
|||||||
self.pre_open_stonewalls = set() # used by stonewall system
|
self.pre_open_stonewalls = set() # used by stonewall system
|
||||||
|
|
||||||
self.candidates = None
|
self.candidates = None
|
||||||
|
self.total_keys = None
|
||||||
self.key_doors_num = None
|
self.key_doors_num = None
|
||||||
self.combo_size = None
|
self.combo_size = None
|
||||||
self.flex = 0
|
self.flex = 0
|
||||||
|
|||||||
@@ -1387,7 +1387,7 @@ def create_key_counters(key_layout, world, player):
|
|||||||
state.key_locations = default_key_counts[key_layout.sector.name]
|
state.key_locations = default_key_counts[key_layout.sector.name]
|
||||||
else:
|
else:
|
||||||
builder = world.dungeon_layouts[player][key_layout.sector.name]
|
builder = world.dungeon_layouts[player][key_layout.sector.name]
|
||||||
state.key_locations = builder.key_doors_num - builder.key_drop_cnt
|
state.key_locations = builder.total_keys - builder.key_drop_cnt
|
||||||
state.big_key_special, special_region = False, None
|
state.big_key_special, special_region = False, None
|
||||||
for region in key_layout.sector.regions:
|
for region in key_layout.sector.regions:
|
||||||
for location in region.locations:
|
for location in region.locations:
|
||||||
|
|||||||
Reference in New Issue
Block a user