Hack in Spanish

This commit is contained in:
Mike A. Trethewey
2020-03-09 02:25:25 -07:00
parent b25e46b160
commit ca7fc4d0f6
9 changed files with 186 additions and 37 deletions

View File

@@ -5,6 +5,9 @@ import operator as op
import time
from enum import unique, Flag
from source.classes.BabelFish import BabelFish
import CLI as cli
from functools import reduce
from BaseClasses import RegionType, Door, DoorType, Direction, Sector, CrystalBarrier
from Regions import key_only_locations
@@ -305,6 +308,9 @@ def pair_existing_key_doors(world, player, door_a, door_b):
# paired_door.pair = False
def within_dungeon(world, player):
settings = cli.get_settings()
fish = BabelFish(lang=settings["lang"] if "lang" in settings else "en")
fix_big_key_doors_with_ugly_smalls(world, player)
overworld_prep(world, player)
entrances_map, potentials, connections = determine_entrance_list(world, player)
@@ -326,7 +332,7 @@ def within_dungeon(world, player):
start = time.process_time()
for builder in world.dungeon_layouts[player].values():
shuffle_key_doors(builder, world, player)
logging.getLogger('').info('Key door shuffle time: %s', time.process_time()-start)
logging.getLogger('').info('%s: %s', fish.translate("cli","cli","keydoor.shuffle.time"), time.process_time()-start)
smooth_door_pairs(world, player)
@@ -347,6 +353,11 @@ def handle_split_dungeons(dungeon_builders, recombinant_builders, entrances_map)
def main_dungeon_generation(dungeon_builders, recombinant_builders, connections_tuple, world, player):
settings = cli.get_args_priority(None, None, None)
if "load" in settings:
settings = settings["load"]
fish = BabelFish(lang=settings["lang"] if "lang" in settings else "en")
entrances_map, potentials, connections = connections_tuple
enabled_entrances = {}
sector_queue = deque(dungeon_builders.values())
@@ -366,7 +377,7 @@ def main_dungeon_generation(dungeon_builders, recombinant_builders, connections_
sector_queue.append(builder)
last_key = builder.name
else:
logging.getLogger('').info('Generating dungeon: %s', builder.name)
logging.getLogger('').info('%s: %s', fish.translate("cli","cli","generating.dungeon"), builder.name)
ds = generate_dungeon(builder, origin_list_sans_drops, split_dungeon, world, player)
find_new_entrances(ds, connections, potentials, enabled_entrances, world, player)
ds.name = name
@@ -501,7 +512,7 @@ def shuffle_dungeon(world, player, start_region_names, dungeon_region_names):
for door in get_doors(world, world.get_region(name, player), player):
ugly_regions[door.name] = 0
available_doors.append(door)
# Loop until all available doors are used
while len(available_doors) > 0:
# Pick a random available door to connect, prioritizing ones that aren't blocked.
@@ -713,6 +724,9 @@ def cross_dungeon(world, player):
def assign_cross_keys(dungeon_builders, world, player):
settings = cli.get_settings()
fish = BabelFish(lang=settings["lang"] if "lang" in settings else "en")
start = time.process_time()
total_keys = remaining = 29
total_candidates = 0
@@ -792,7 +806,7 @@ def assign_cross_keys(dungeon_builders, world, player):
dungeon.small_keys = []
else:
dungeon.small_keys = [ItemFactory(dungeon_keys[name], player)] * actual_chest_keys
logging.getLogger('').info('Cross Dungeon: Key door shuffle time: %s', time.process_time()-start)
logging.getLogger('').info('%s: %s', fish.translate("cli","cli","keydoor.shuffle.time.crossed"), time.process_time()-start)
def reassign_boss(boss_region, boss_key, builder, gt, world, player):
@@ -948,15 +962,18 @@ def calc_used_dungeon_items(builder):
def find_valid_combination(builder, start_regions, world, player, drop_keys=True):
settings = cli.get_settings()
fish = BabelFish(lang=settings["lang"] if "lang" in settings else "en")
logger = logging.getLogger('')
logger.info('Shuffling Key doors for %s', builder.name)
logger.info('%s %s', fish.translate("cli","cli","shuffling.keydoors"), builder.name)
# find valid combination of candidates
if len(builder.candidates) < builder.key_doors_num:
if not drop_keys:
logger.info('No valid layouts for %s with %s doors', builder.name, builder.key_doors_num)
return False
builder.key_doors_num = len(builder.candidates) # reduce number of key doors
logger.info('Lowering key door count because not enough candidates: %s', builder.name)
logger.info('%s: %s', fish.translate("cli","cli","lowering.keys.candidates"), builder.name)
combinations = ncr(len(builder.candidates), builder.key_doors_num)
itr = 0
start = time.process_time()
@@ -976,7 +993,7 @@ def find_valid_combination(builder, start_regions, world, player, drop_keys=True
if not drop_keys:
logger.info('No valid layouts for %s with %s doors', builder.name, builder.key_doors_num)
return False
logger.info('Lowering key door count because no valid layouts: %s', builder.name)
logger.info('%s: %s', fish.translate("cli","cli","lowering.keys.layouts"), builder.name)
builder.key_doors_num -= 1
if builder.key_doors_num < 0:
raise Exception('Bad dungeon %s - 0 key doors not valid' % builder.name)