LttP: move some simple Toggle options over to new system part 2
This commit is contained in:
parent
033adceb6f
commit
c1c92647ca
100
BaseClasses.py
100
BaseClasses.py
|
@ -10,6 +10,8 @@ from typing import List, Dict, Optional, Set, Iterable, Union, Any, Tuple
|
||||||
import secrets
|
import secrets
|
||||||
import random
|
import random
|
||||||
|
|
||||||
|
import Utils
|
||||||
|
|
||||||
|
|
||||||
class MultiWorld():
|
class MultiWorld():
|
||||||
debug_types = False
|
debug_types = False
|
||||||
|
@ -82,8 +84,6 @@ class MultiWorld():
|
||||||
set_player_attr('timer', False)
|
set_player_attr('timer', False)
|
||||||
set_player_attr('goal', 'ganon')
|
set_player_attr('goal', 'ganon')
|
||||||
set_player_attr('accessibility', 'items')
|
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('required_medallions', ['Ether', 'Quake'])
|
||||||
set_player_attr('swamp_patch_required', False)
|
set_player_attr('swamp_patch_required', False)
|
||||||
set_player_attr('powder_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('fix_fake_world', True)
|
||||||
set_player_attr('difficulty_requirements', None)
|
set_player_attr('difficulty_requirements', None)
|
||||||
set_player_attr('boss_shuffle', 'none')
|
set_player_attr('boss_shuffle', 'none')
|
||||||
set_player_attr('enemy_shuffle', False)
|
|
||||||
set_player_attr('enemy_health', 'default')
|
set_player_attr('enemy_health', 'default')
|
||||||
set_player_attr('enemy_damage', '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('beemizer', 0)
|
||||||
set_player_attr('escape_assist', [])
|
set_player_attr('escape_assist', [])
|
||||||
set_player_attr('open_pyramid', False)
|
set_player_attr('open_pyramid', False)
|
||||||
|
@ -122,7 +118,6 @@ class MultiWorld():
|
||||||
set_player_attr('shuffle_prizes', "g")
|
set_player_attr('shuffle_prizes', "g")
|
||||||
set_player_attr('sprite_pool', [])
|
set_player_attr('sprite_pool', [])
|
||||||
set_player_attr('dark_room_logic', "lamp")
|
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_items', [])
|
||||||
set_player_attr('plando_texts', {})
|
set_player_attr('plando_texts', {})
|
||||||
set_player_attr('plando_connections', [])
|
set_player_attr('plando_connections', [])
|
||||||
|
@ -1011,7 +1006,6 @@ class Spoiler():
|
||||||
self.startinventory = []
|
self.startinventory = []
|
||||||
self.locations = {}
|
self.locations = {}
|
||||||
self.paths = {}
|
self.paths = {}
|
||||||
self.metadata = {}
|
|
||||||
self.shops = []
|
self.shops = []
|
||||||
self.bosses = OrderedDict()
|
self.bosses = OrderedDict()
|
||||||
|
|
||||||
|
@ -1104,41 +1098,6 @@ class Spoiler():
|
||||||
self.bosses[str(player)]["Ganons Tower"] = "Agahnim 2"
|
self.bosses[str(player)]["Ganons Tower"] = "Agahnim 2"
|
||||||
self.bosses[str(player)]["Ganon"] = "Ganon"
|
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):
|
def to_json(self):
|
||||||
self.parse_data()
|
self.parse_data()
|
||||||
out = OrderedDict()
|
out = OrderedDict()
|
||||||
|
@ -1153,7 +1112,6 @@ class Spoiler():
|
||||||
out['playthrough'] = self.playthrough
|
out['playthrough'] = self.playthrough
|
||||||
out['paths'] = self.paths
|
out['paths'] = self.paths
|
||||||
out['Bosses'] = self.bosses
|
out['Bosses'] = self.bosses
|
||||||
out['meta'] = self.metadata
|
|
||||||
|
|
||||||
return json.dumps(out)
|
return json.dumps(out)
|
||||||
|
|
||||||
|
@ -1168,7 +1126,7 @@ class Spoiler():
|
||||||
with open(filename, 'w', encoding="utf-8-sig") as outfile:
|
with open(filename, 'w', encoding="utf-8-sig") as outfile:
|
||||||
outfile.write(
|
outfile.write(
|
||||||
'Archipelago Version %s - Seed: %s\n\n' % (
|
'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('Filling Algorithm: %s\n' % self.world.algorithm)
|
||||||
outfile.write('Players: %d\n' % self.world.players)
|
outfile.write('Players: %d\n' % self.world.players)
|
||||||
|
|
||||||
|
@ -1178,8 +1136,8 @@ class Spoiler():
|
||||||
outfile.write('Game: %s\n' % self.world.game[player])
|
outfile.write('Game: %s\n' % self.world.game[player])
|
||||||
if self.world.players > 1:
|
if self.world.players > 1:
|
||||||
outfile.write('Progression Balanced: %s\n' % (
|
outfile.write('Progression Balanced: %s\n' % (
|
||||||
'Yes' if self.metadata['progression_balancing'][player] else 'No'))
|
'Yes' if self.world.progression_balancing[player] else 'No'))
|
||||||
outfile.write('Accessibility: %s\n' % self.metadata['accessibility'][player])
|
outfile.write('Accessibility: %s\n' % self.world.accessibility[player])
|
||||||
options = self.world.worlds[player].options
|
options = self.world.worlds[player].options
|
||||||
if options:
|
if options:
|
||||||
for f_option, option in options.items():
|
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"):
|
if player in self.world.get_game_players("A Link to the Past"):
|
||||||
outfile.write('%s%s\n' % ('Hash: ', self.hashes[player]))
|
outfile.write('%s%s\n' % ('Hash: ', self.hashes[player]))
|
||||||
|
|
||||||
outfile.write('Logic: %s\n' % self.metadata['logic'][player])
|
outfile.write('Logic: %s\n' % self.world.logic[player])
|
||||||
outfile.write('Dark Room Logic: %s\n' % self.metadata['dark_room_logic'][player])
|
outfile.write('Dark Room Logic: %s\n' % self.world.dark_room_logic[player])
|
||||||
outfile.write('Mode: %s\n' % self.metadata['mode'][player])
|
outfile.write('Mode: %s\n' % self.world.mode[player])
|
||||||
outfile.write('Goal: %s\n' % self.metadata['goal'][player])
|
outfile.write('Goal: %s\n' % self.world.goal[player])
|
||||||
if "triforce" in self.metadata["goal"][player]: # triforce hunt
|
if "triforce" in self.world.goal[player]: # triforce hunt
|
||||||
outfile.write("Pieces available for Triforce: %s\n" %
|
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" %
|
outfile.write("Pieces required for Triforce: %s\n" %
|
||||||
self.metadata["triforce_pieces_required"][player])
|
self.world.triforce_pieces_required[player])
|
||||||
outfile.write('Difficulty: %s\n' % self.metadata['item_pool'][player])
|
outfile.write('Difficulty: %s\n' % self.world.item_pool[player])
|
||||||
outfile.write('Item Functionality: %s\n' % self.metadata['item_functionality'][player])
|
outfile.write('Item Functionality: %s\n' % self.world.item_functionality[player])
|
||||||
outfile.write('Entrance Shuffle: %s\n' % self.metadata['shuffle'][player])
|
outfile.write('Entrance Shuffle: %s\n' % self.world.shuffle[player])
|
||||||
if self.metadata['shuffle'][player] != "vanilla":
|
if self.world.shuffle[player] != "vanilla":
|
||||||
outfile.write('Entrance Shuffle Seed %s\n' % self.metadata['er_seeds'][player])
|
outfile.write('Entrance Shuffle Seed %s\n' % self.world.er_seeds[player])
|
||||||
outfile.write('Pyramid hole pre-opened: %s\n' % (
|
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' %
|
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' %
|
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' %
|
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' %
|
outfile.write('New Shop inventory: %s\n' %
|
||||||
bool_to_text("g" in self.metadata["shop_shuffle"][player] or
|
bool_to_text("g" in self.world.shop_shuffle[player] or
|
||||||
"f" in self.metadata["shop_shuffle"][player]))
|
"f" in self.world.shop_shuffle[player]))
|
||||||
outfile.write('Custom Potion Shop: %s\n' %
|
outfile.write('Custom Potion Shop: %s\n' %
|
||||||
bool_to_text("w" in self.metadata["shop_shuffle"][player]))
|
bool_to_text("w" in self.world.shop_shuffle[player]))
|
||||||
outfile.write('Boss shuffle: %s\n' % self.metadata['boss_shuffle'][player])
|
outfile.write('Boss shuffle: %s\n' % self.world.boss_shuffle[player])
|
||||||
outfile.write('Enemy health: %s\n' % self.metadata['enemy_health'][player])
|
outfile.write('Enemy health: %s\n' % self.world.enemy_health[player])
|
||||||
outfile.write('Enemy damage: %s\n' % self.metadata['enemy_damage'][player])
|
outfile.write('Enemy damage: %s\n' % self.world.enemy_damage[player])
|
||||||
outfile.write('Beemizer: %s\n' % self.metadata['beemizer'][player])
|
outfile.write('Beemizer: %s\n' % self.world.beemizer[player])
|
||||||
outfile.write('Prize shuffle %s\n' %
|
outfile.write('Prize shuffle %s\n' %
|
||||||
self.metadata['shuffle_prizes'][player])
|
self.world.shuffle_prizes[player])
|
||||||
if self.entrances:
|
if self.entrances:
|
||||||
outfile.write('\n\nEntrances:\n\n')
|
outfile.write('\n\nEntrances:\n\n')
|
||||||
outfile.write('\n'.join(['%s%s %s %s' % (f'{self.world.get_player_name(entry["player"])}: '
|
outfile.write('\n'.join(['%s%s %s %s' % (f'{self.world.get_player_name(entry["player"])}: '
|
||||||
|
|
|
@ -280,6 +280,7 @@ alttp_options: typing.Dict[str, type(Option)] = {
|
||||||
"map_shuffle": map_shuffle,
|
"map_shuffle": map_shuffle,
|
||||||
"progressive": Progressive,
|
"progressive": Progressive,
|
||||||
"swordless": Swordless,
|
"swordless": Swordless,
|
||||||
|
"retro": Retro,
|
||||||
"hints": Hints,
|
"hints": Hints,
|
||||||
"restrict_dungeon_item_on_boss": RestrictBossItem,
|
"restrict_dungeon_item_on_boss": RestrictBossItem,
|
||||||
"pot_shuffle": PotShuffle,
|
"pot_shuffle": PotShuffle,
|
||||||
|
@ -287,6 +288,7 @@ alttp_options: typing.Dict[str, type(Option)] = {
|
||||||
"killable_thieves": KillableThieves,
|
"killable_thieves": KillableThieves,
|
||||||
"bush_shuffle": BushShuffle,
|
"bush_shuffle": BushShuffle,
|
||||||
"shop_item_slots": ShopItemSlots,
|
"shop_item_slots": ShopItemSlots,
|
||||||
|
"tile_shuffle": TileShuffle,
|
||||||
"ow_palettes": OWPalette,
|
"ow_palettes": OWPalette,
|
||||||
"uw_palettes": UWPalette,
|
"uw_palettes": UWPalette,
|
||||||
"hud_palettes": HUDPalette,
|
"hud_palettes": HUDPalette,
|
||||||
|
|
Loading…
Reference in New Issue