Multiple: Followed a rabbit hole of moving LttP Rom generation to AutoWorld

Generator: Re-allow names with spaces (and see what breaks)
Generator: Removed teams (Note that teams are intended to move from a generation step feature to a server runtime feature, allowing dynamic creation of an already generated MW)
LttP: All Rom Options are now on the new system
LttP: palette option "random" is now called "good"
LttP: Roms are now created as part of the general output file creation step
LttP: disable Music is now Music, removing potential double negatives
LttP & Factorio: Progressive option random is now grouped_random
LttP: Enemy damage option random is now Enemy damage: chaos
This commit is contained in:
Fabian Dill
2021-08-09 09:15:41 +02:00
parent 01d88c362a
commit ba3bb201cd
23 changed files with 328 additions and 279 deletions

View File

@@ -13,7 +13,7 @@ def link_minecraft_structures(world, player):
try:
assert len(exits) == len(structs)
except AssertionError as e: # this should never happen
raise Exception(f"Could not obtain equal numbers of Minecraft exits and structures for player {player} ({world.player_names[player]})")
raise Exception(f"Could not obtain equal numbers of Minecraft exits and structures for player {player} ({world.player_name[player]})")
pairs = {}
@@ -23,7 +23,7 @@ def link_minecraft_structures(world, player):
exits.remove(exit)
structs.remove(struct)
else:
raise Exception(f"Invalid connection: {exit} => {struct} for player {player} ({world.player_names[player]})")
raise Exception(f"Invalid connection: {exit} => {struct} for player {player} ({world.player_name[player]})")
# Connect plando structures first
if world.plando_connections[player]:
@@ -38,7 +38,7 @@ def link_minecraft_structures(world, player):
try:
exit = world.random.choice([e for e in exits if e not in illegal_connections.get(struct, [])])
except IndexError:
raise Exception(f"No valid structure placements remaining for player {player} ({world.player_names[player]})")
raise Exception(f"No valid structure placements remaining for player {player} ({world.player_name[player]})")
set_pair(exit, struct)
else: # write remaining default connections
for (exit, struct) in default_connections:
@@ -49,7 +49,7 @@ def link_minecraft_structures(world, player):
try:
assert len(exits) == len(structs) == 0
except AssertionError:
raise Exception(f"Failed to connect all Minecraft structures for player {player} ({world.player_names[player]})")
raise Exception(f"Failed to connect all Minecraft structures for player {player} ({world.player_name[player]})")
for exit in exits_spoiler:
world.get_entrance(exit, player).connect(world.get_region(pairs[exit], player))

View File

@@ -43,7 +43,7 @@ class MinecraftLogic(LogicMixin):
# Difficulty-dependent functions
def _mc_combat_difficulty(self, player: int):
return self.world.combat_difficulty[player].get_current_option_name().lower()
return self.world.combat_difficulty[player].current_key
def _mc_can_adventure(self, player: int):
if self._mc_combat_difficulty(player) == 'easy':

View File

@@ -30,7 +30,7 @@ class MinecraftWorld(World):
return {
'world_seed': self.world.slot_seeds[self.player].getrandbits(32),
'seed_name': self.world.seed_name,
'player_name': self.world.get_player_names(self.player),
'player_name': self.world.get_player_name(self.player),
'player_id': self.player,
'client_version': client_version,
'structures': {exit: self.world.get_entrance(exit, self.player).connected_region.name for exit in exits},
@@ -95,7 +95,7 @@ class MinecraftWorld(World):
def generate_output(self, output_directory: str):
data = self._get_mc_data()
filename = f"AP_{self.world.seed_name}_P{self.player}_{self.world.get_player_names(self.player)}.apmc"
filename = f"AP_{self.world.seed_name}_P{self.player}_{self.world.get_player_name(self.player)}.apmc"
with open(os.path.join(output_directory, filename), 'wb') as f:
f.write(b64encode(bytes(json.dumps(data), 'utf-8')))