From c1c92647ca4712cecc7480f1521990f5bbf9a671 Mon Sep 17 00:00:00 2001 From: Fabian Dill Date: Mon, 13 Sep 2021 02:01:15 +0200 Subject: [PATCH] LttP: move some simple Toggle options over to new system part 2 --- BaseClasses.py | 100 ++++++++++++---------------------------- worlds/alttp/Options.py | 2 + 2 files changed, 31 insertions(+), 71 deletions(-) diff --git a/BaseClasses.py b/BaseClasses.py index 2532aaf8..e7235d30 100644 --- a/BaseClasses.py +++ b/BaseClasses.py @@ -10,6 +10,8 @@ from typing import List, Dict, Optional, Set, Iterable, Union, Any, Tuple import secrets import random +import Utils + class MultiWorld(): debug_types = False @@ -82,8 +84,6 @@ class MultiWorld(): set_player_attr('timer', False) set_player_attr('goal', 'ganon') set_player_attr('accessibility', 'items') - set_player_attr('retro', False) - set_player_attr('hints', True) set_player_attr('required_medallions', ['Ether', 'Quake']) set_player_attr('swamp_patch_required', False) set_player_attr('powder_patch_required', False) @@ -96,12 +96,8 @@ class MultiWorld(): set_player_attr('fix_fake_world', True) set_player_attr('difficulty_requirements', None) set_player_attr('boss_shuffle', 'none') - set_player_attr('enemy_shuffle', False) set_player_attr('enemy_health', 'default') set_player_attr('enemy_damage', 'default') - set_player_attr('killable_thieves', False) - set_player_attr('tile_shuffle', False) - set_player_attr('bush_shuffle', False) set_player_attr('beemizer', 0) set_player_attr('escape_assist', []) set_player_attr('open_pyramid', False) @@ -122,7 +118,6 @@ class MultiWorld(): set_player_attr('shuffle_prizes', "g") set_player_attr('sprite_pool', []) set_player_attr('dark_room_logic', "lamp") - set_player_attr('restrict_dungeon_item_on_boss', False) set_player_attr('plando_items', []) set_player_attr('plando_texts', {}) set_player_attr('plando_connections', []) @@ -1011,7 +1006,6 @@ class Spoiler(): self.startinventory = [] self.locations = {} self.paths = {} - self.metadata = {} self.shops = [] self.bosses = OrderedDict() @@ -1104,41 +1098,6 @@ class Spoiler(): self.bosses[str(player)]["Ganons Tower"] = "Agahnim 2" self.bosses[str(player)]["Ganon"] = "Ganon" - from Utils import __version__ as APVersion - self.metadata = {'version': APVersion, - 'logic': self.world.logic, - 'dark_room_logic': self.world.dark_room_logic, - 'mode': self.world.mode, - 'retro': self.world.retro, - 'swordless': self.world.swordless, - 'goal': self.world.goal, - 'shuffle': self.world.shuffle, - 'item_pool': self.world.difficulty, - 'item_functionality': self.world.item_functionality, - 'open_pyramid': self.world.open_pyramid, - 'accessibility': self.world.accessibility, - 'hints': self.world.hints, - 'boss_shuffle': self.world.boss_shuffle, - 'enemy_shuffle': self.world.enemy_shuffle, - 'enemy_health': self.world.enemy_health, - 'enemy_damage': self.world.enemy_damage, - 'killable_thieves': self.world.killable_thieves, - 'tile_shuffle': self.world.tile_shuffle, - 'bush_shuffle': self.world.bush_shuffle, - 'beemizer': self.world.beemizer, - 'pot_shuffle': self.world.pot_shuffle, - 'players': self.world.players, - 'progression_balancing': self.world.progression_balancing, - 'triforce_pieces_available': self.world.triforce_pieces_available, - 'triforce_pieces_required': self.world.triforce_pieces_required, - 'shop_shuffle': self.world.shop_shuffle, - 'shuffle_prizes': self.world.shuffle_prizes, - 'sprite_pool': self.world.sprite_pool, - 'restrict_dungeon_item_on_boss': self.world.restrict_dungeon_item_on_boss, - 'game': self.world.game, - 'er_seeds': self.world.er_seeds - } - def to_json(self): self.parse_data() out = OrderedDict() @@ -1153,7 +1112,6 @@ class Spoiler(): out['playthrough'] = self.playthrough out['paths'] = self.paths out['Bosses'] = self.bosses - out['meta'] = self.metadata return json.dumps(out) @@ -1168,7 +1126,7 @@ class Spoiler(): with open(filename, 'w', encoding="utf-8-sig") as outfile: outfile.write( 'Archipelago Version %s - Seed: %s\n\n' % ( - self.metadata['version'], self.world.seed)) + Utils.__version__, self.world.seed)) outfile.write('Filling Algorithm: %s\n' % self.world.algorithm) outfile.write('Players: %d\n' % self.world.players) @@ -1178,8 +1136,8 @@ class Spoiler(): outfile.write('Game: %s\n' % self.world.game[player]) if self.world.players > 1: outfile.write('Progression Balanced: %s\n' % ( - 'Yes' if self.metadata['progression_balancing'][player] else 'No')) - outfile.write('Accessibility: %s\n' % self.metadata['accessibility'][player]) + 'Yes' if self.world.progression_balancing[player] else 'No')) + outfile.write('Accessibility: %s\n' % self.world.accessibility[player]) options = self.world.worlds[player].options if options: for f_option, option in options.items(): @@ -1190,39 +1148,39 @@ class Spoiler(): if player in self.world.get_game_players("A Link to the Past"): outfile.write('%s%s\n' % ('Hash: ', self.hashes[player])) - outfile.write('Logic: %s\n' % self.metadata['logic'][player]) - outfile.write('Dark Room Logic: %s\n' % self.metadata['dark_room_logic'][player]) - outfile.write('Mode: %s\n' % self.metadata['mode'][player]) - outfile.write('Goal: %s\n' % self.metadata['goal'][player]) - if "triforce" in self.metadata["goal"][player]: # triforce hunt + outfile.write('Logic: %s\n' % self.world.logic[player]) + outfile.write('Dark Room Logic: %s\n' % self.world.dark_room_logic[player]) + outfile.write('Mode: %s\n' % self.world.mode[player]) + outfile.write('Goal: %s\n' % self.world.goal[player]) + if "triforce" in self.world.goal[player]: # triforce hunt outfile.write("Pieces available for Triforce: %s\n" % - self.metadata['triforce_pieces_available'][player]) + self.world.triforce_pieces_available[player]) outfile.write("Pieces required for Triforce: %s\n" % - self.metadata["triforce_pieces_required"][player]) - outfile.write('Difficulty: %s\n' % self.metadata['item_pool'][player]) - outfile.write('Item Functionality: %s\n' % self.metadata['item_functionality'][player]) - outfile.write('Entrance Shuffle: %s\n' % self.metadata['shuffle'][player]) - if self.metadata['shuffle'][player] != "vanilla": - outfile.write('Entrance Shuffle Seed %s\n' % self.metadata['er_seeds'][player]) + self.world.triforce_pieces_required[player]) + outfile.write('Difficulty: %s\n' % self.world.item_pool[player]) + outfile.write('Item Functionality: %s\n' % self.world.item_functionality[player]) + outfile.write('Entrance Shuffle: %s\n' % self.world.shuffle[player]) + if self.world.shuffle[player] != "vanilla": + outfile.write('Entrance Shuffle Seed %s\n' % self.world.er_seeds[player]) outfile.write('Pyramid hole pre-opened: %s\n' % ( - 'Yes' if self.metadata['open_pyramid'][player] else 'No')) + 'Yes' if self.world.open_pyramid[player] else 'No')) outfile.write('Shop inventory shuffle: %s\n' % - bool_to_text("i" in self.metadata["shop_shuffle"][player])) + bool_to_text("i" in self.world.shop_shuffle[player])) outfile.write('Shop price shuffle: %s\n' % - bool_to_text("p" in self.metadata["shop_shuffle"][player])) + bool_to_text("p" in self.world.shop_shuffle[player])) outfile.write('Shop upgrade shuffle: %s\n' % - bool_to_text("u" in self.metadata["shop_shuffle"][player])) + bool_to_text("u" in self.world.shop_shuffle[player])) outfile.write('New Shop inventory: %s\n' % - bool_to_text("g" in self.metadata["shop_shuffle"][player] or - "f" in self.metadata["shop_shuffle"][player])) + bool_to_text("g" in self.world.shop_shuffle[player] or + "f" in self.world.shop_shuffle[player])) outfile.write('Custom Potion Shop: %s\n' % - bool_to_text("w" in self.metadata["shop_shuffle"][player])) - outfile.write('Boss shuffle: %s\n' % self.metadata['boss_shuffle'][player]) - outfile.write('Enemy health: %s\n' % self.metadata['enemy_health'][player]) - outfile.write('Enemy damage: %s\n' % self.metadata['enemy_damage'][player]) - outfile.write('Beemizer: %s\n' % self.metadata['beemizer'][player]) + bool_to_text("w" in self.world.shop_shuffle[player])) + outfile.write('Boss shuffle: %s\n' % self.world.boss_shuffle[player]) + outfile.write('Enemy health: %s\n' % self.world.enemy_health[player]) + outfile.write('Enemy damage: %s\n' % self.world.enemy_damage[player]) + outfile.write('Beemizer: %s\n' % self.world.beemizer[player]) outfile.write('Prize shuffle %s\n' % - self.metadata['shuffle_prizes'][player]) + self.world.shuffle_prizes[player]) if self.entrances: outfile.write('\n\nEntrances:\n\n') outfile.write('\n'.join(['%s%s %s %s' % (f'{self.world.get_player_name(entry["player"])}: ' diff --git a/worlds/alttp/Options.py b/worlds/alttp/Options.py index c6a2f87b..22277625 100644 --- a/worlds/alttp/Options.py +++ b/worlds/alttp/Options.py @@ -280,6 +280,7 @@ alttp_options: typing.Dict[str, type(Option)] = { "map_shuffle": map_shuffle, "progressive": Progressive, "swordless": Swordless, + "retro": Retro, "hints": Hints, "restrict_dungeon_item_on_boss": RestrictBossItem, "pot_shuffle": PotShuffle, @@ -287,6 +288,7 @@ alttp_options: typing.Dict[str, type(Option)] = { "killable_thieves": KillableThieves, "bush_shuffle": BushShuffle, "shop_item_slots": ShopItemSlots, + "tile_shuffle": TileShuffle, "ow_palettes": OWPalette, "uw_palettes": UWPalette, "hud_palettes": HUDPalette,