diff --git a/.gitignore b/.gitignore index 1b54572f2f..ecd316cb75 100644 --- a/.gitignore +++ b/.gitignore @@ -30,5 +30,3 @@ weights/ _persistent_storage.yaml mystery_result_*.yaml /db.db3 -*-errors.txt -success.txt diff --git a/Adjuster.py b/Adjuster.py index 661381a95d..49b4259d76 100755 --- a/Adjuster.py +++ b/Adjuster.py @@ -6,7 +6,7 @@ import textwrap import sys from AdjusterMain import adjust -from Rom import Sprite +from Rom import get_sprite_from_name class ArgumentDefaultsHelpFormatter(argparse.RawTextHelpFormatter): @@ -55,7 +55,7 @@ def main(): input( 'Could not find valid rom for patching at expected path %s. Please run with -h to see help for further information. \nPress Enter to exit.' % args.rom) sys.exit(1) - if args.sprite is not None and not os.path.isfile(args.sprite) and not Sprite.get_sprite_from_name(args.sprite): + if args.sprite is not None and not os.path.isfile(args.sprite) and not get_sprite_from_name(args.sprite): input('Could not find link sprite sheet at given location. \nPress Enter to exit.') sys.exit(1) @@ -65,10 +65,7 @@ def main(): logging.basicConfig(format='%(message)s', level=loglevel) args, path = adjust(args=args) from Utils import persistent_store - from Rom import Sprite - if isinstance(args.sprite, Sprite): - args.sprite = args.sprite.name - persistent_store("adjuster", "last_settings_3", args) + persistent_store("adjuster", "last_settings", args) if __name__ == '__main__': main() diff --git a/AdjusterMain.py b/AdjusterMain.py index f26c669b69..28a72d9cae 100644 --- a/AdjusterMain.py +++ b/AdjusterMain.py @@ -27,7 +27,7 @@ def adjust(args): palettes_options['hud']=args.hud_palettes palettes_options['sword']=args.sword_palettes palettes_options['shield']=args.shield_palettes - # palettes_options['link']=args.link_palettesvera + palettes_options['link']=args.link_palettes apply_rom_settings(rom, args.heartbeep, args.heartcolor, args.quickswap, args.fastmenu, args.disablemusic, args.sprite, palettes_options) diff --git a/BaseClasses.py b/BaseClasses.py index eb5a47413d..49563d4c4c 100644 --- a/BaseClasses.py +++ b/BaseClasses.py @@ -119,19 +119,13 @@ class World(object): set_player_attr('treasure_hunt_icon', 'Triforce Piece') set_player_attr('treasure_hunt_count', 0) set_player_attr('clock_mode', False) - set_player_attr('countdown_start_time', 10) - set_player_attr('red_clock_time', -2) - set_player_attr('blue_clock_time', 2) - set_player_attr('green_clock_time', 4) set_player_attr('can_take_damage', True) set_player_attr('glitch_boots', True) set_player_attr('progression_balancing', True) set_player_attr('local_items', set()) - set_player_attr('non_local_items', set()) set_player_attr('triforce_pieces_available', 30) set_player_attr('triforce_pieces_required', 20) set_player_attr('shop_shuffle', 'off') - set_player_attr('shop_shuffle_slots', 0) set_player_attr('shuffle_prizes', "g") set_player_attr('sprite_pool', []) set_player_attr('dark_room_logic', "lamp") @@ -341,27 +335,6 @@ class World(object): if collect: self.state.collect(item, location.event, location) - # TODO: Prevents fast_filling certain items. Move this to a proper filter. - if location.parent_region.shop is not None and location.name != 'Potion Shop': # includes potion shop slots but not potion shop powder - slot_num = int(location.name[-1]) - 1 - my_item = location.parent_region.shop.inventory[slot_num] - if (my_item is not None and my_item['item'] == item.name) or 'Rupee' in item.name or ('Bee' in item.name and 'Trap' not in item.name): - # this will filter items that match the item in the shop or Rupees, or single bees - # really not a way for the player to know a renewable item from a player pool item - # bombs can be sitting on top of arrows or a potion refill, but dunno if that's a big deal - logging.debug('skipping item shop {}'.format(item.name)) - else: - if my_item is None: - location.parent_region.shop.add_inventory(slot_num, 'None', 0) - my_item = location.parent_region.shop.inventory[slot_num] - else: - my_item['replacement'] = my_item['item'] - my_item['replacement_price'] = my_item['price'] - my_item['item'] = item.name - my_item['price'] = self.random.randrange(1, 61) * 5 # can probably replace this with a price chart - my_item['max'] = 1 - my_item['player'] = item.player if item.player != location.player else 0 - logging.debug('Placed %s at %s', item, location) else: raise RuntimeError('Cannot assign item %s to location %s.' % (item, location)) @@ -1162,8 +1135,7 @@ class Shop(): 'max': max, 'replacement': replacement, 'replacement_price': replacement_price, - 'create_location': create_location, - 'player': 0 + 'create_location': create_location } def push_inventory(self, slot: int, item: str, price: int, max: int = 1): @@ -1176,8 +1148,7 @@ class Shop(): 'max': max, 'replacement': self.inventory[slot]["item"], 'replacement_price': self.inventory[slot]["price"], - 'create_location': self.inventory[slot]["create_location"], - 'player': self.inventory[slot]["player"] + 'create_location': self.inventory[slot]["create_location"] } @@ -1263,10 +1234,6 @@ class Spoiler(object): if item is None: continue shopdata['item_{}'.format(index)] = "{} — {}".format(item['item'], item['price']) if item['price'] else item['item'] - - if item['player'] > 0: - shopdata['item_{}'.format(index)] = shopdata['item_{}'.format(index)].replace('—', '(Player {}) — '.format(item['player'])) - if item['max'] == 0: continue shopdata['item_{}'.format(index)] += " x {}".format(item['max']) @@ -1340,7 +1307,6 @@ class Spoiler(object): 'triforce_pieces_available': self.world.triforce_pieces_available, 'triforce_pieces_required': self.world.triforce_pieces_required, 'shop_shuffle': self.world.shop_shuffle, - 'shop_shuffle_slots': self.world.shop_shuffle_slots, 'shuffle_prizes': self.world.shuffle_prizes, 'sprite_pool': self.world.sprite_pool, 'restrict_dungeon_item_on_boss': self.world.restrict_dungeon_item_on_boss diff --git a/EntranceRandomizer.py b/EntranceRandomizer.py index b94ed0db49..042d54bc93 100755 --- a/EntranceRandomizer.py +++ b/EntranceRandomizer.py @@ -8,7 +8,7 @@ import shlex import sys from Main import main, get_seed -from Rom import Sprite +from Rom import get_sprite_from_name from Utils import is_bundled, close_console @@ -129,14 +129,6 @@ def parse_arguments(argv, no_defaults=False): Timed mode. If time runs out, you lose (but can still keep playing). ''') - parser.add_argument('--countdown_start_time', default=defval(10), type=int, - help='''Set amount of time, in minutes, to start with in Timed Countdown and Timed OHKO modes''') - parser.add_argument('--red_clock_time', default=defval(-2), type=int, - help='''Set amount of time, in minutes, to add from picking up red clocks; negative removes time instead''') - parser.add_argument('--blue_clock_time', default=defval(2), type=int, - help='''Set amount of time, in minutes, to add from picking up blue clocks; negative removes time instead''') - parser.add_argument('--green_clock_time', default=defval(4), type=int, - help='''Set amount of time, in minutes, to add from picking up green clocks; negative removes time instead''') parser.add_argument('--dungeon_counters', default=defval('default'), const='default', nargs='?', choices=['default', 'on', 'pickup', 'off'], help='''\ Select dungeon counter display settings. (default: %(default)s) @@ -181,7 +173,7 @@ def parse_arguments(argv, no_defaults=False): slightly biased to placing progression items with less restrictions. ''') - parser.add_argument('--shuffle', default=defval('vanilla'), const='vanilla', nargs='?', choices=['vanilla', 'simple', 'restricted', 'full', 'crossed', 'insanity', 'restricted_legacy', 'full_legacy', 'madness_legacy', 'insanity_legacy', 'dungeonsfull', 'dungeonssimple'], + parser.add_argument('--shuffle', default=defval('full'), const='full', nargs='?', choices=['vanilla', 'simple', 'restricted', 'full', 'crossed', 'insanity', 'restricted_legacy', 'full_legacy', 'madness_legacy', 'insanity_legacy', 'dungeonsfull', 'dungeonssimple'], help='''\ Select Entrance Shuffling Algorithm. (default: %(default)s) Full: Mix cave and dungeon entrances freely while limiting @@ -266,8 +258,6 @@ def parse_arguments(argv, no_defaults=False): help='Specifies a list of items that will be in your starting inventory (separated by commas)') parser.add_argument('--local_items', default=defval(''), help='Specifies a list of items that will not spread across the multiworld (separated by commas)') - parser.add_argument('--non_local_items', default=defval(''), - help='Specifies a list of items that will spread across the multiworld (separated by commas)') parser.add_argument('--custom', default=defval(False), help='Not supported.') parser.add_argument('--customitemarray', default=defval(False), help='Not supported.') parser.add_argument('--accessibility', default=defval('items'), const='items', nargs='?', choices=['items', 'locations', 'none'], help='''\ @@ -330,11 +320,6 @@ def parse_arguments(argv, no_defaults=False): p: randomize the prices of the items in shop inventories u: shuffle capacity upgrades into the item pool ''') - parser.add_argument('--shop_shuffle_slots', default=defval(0), - type=lambda value: min(max(int(value), 1), 96), - help=''' - Maximum amount of shop slots able to be filled by items from the item pool. - ''') parser.add_argument('--shuffle_prizes', default=defval('g'), choices=['', 'g', 'b', 'gb']) parser.add_argument('--sprite_pool', help='''\ Specifies a colon separated list of sprites used for random/randomonevent. If not specified, the full sprite pool is used.''') @@ -381,16 +366,14 @@ def parse_arguments(argv, no_defaults=False): for name in ['logic', 'mode', 'swords', 'goal', 'difficulty', 'item_functionality', 'shuffle', 'crystals_ganon', 'crystals_gt', 'open_pyramid', 'timer', - 'countdown_start_time', 'red_clock_time', 'blue_clock_time', 'green_clock_time', 'mapshuffle', 'compassshuffle', 'keyshuffle', 'bigkeyshuffle', 'startinventory', - 'local_items', 'non_local_items', 'retro', 'accessibility', 'hints', 'beemizer', + 'local_items', 'retro', 'accessibility', 'hints', 'beemizer', 'shufflebosses', 'enemy_shuffle', 'enemy_health', 'enemy_damage', 'shufflepots', 'ow_palettes', 'uw_palettes', 'sprite', 'disablemusic', 'quickswap', 'fastmenu', 'heartcolor', 'heartbeep', "skip_progression_balancing", "triforce_pieces_available", - "triforce_pieces_required", "shop_shuffle", "shop_shuffle_slots", + "triforce_pieces_required", "shop_shuffle", 'remote_items', 'progressive', 'dungeon_counters', 'glitch_boots', 'killable_thieves', - 'tile_shuffle', 'bush_shuffle', 'shuffle_prizes', 'sprite_pool', 'dark_room_logic', 'restrict_dungeon_item_on_boss', - 'hud_palettes', 'sword_palettes', 'shield_palettes', 'link_palettes']: + 'tile_shuffle', 'bush_shuffle', 'shuffle_prizes', 'sprite_pool', 'dark_room_logic', 'restrict_dungeon_item_on_boss']: value = getattr(defaults, name) if getattr(playerargs, name) is None else getattr(playerargs, name) if player == 1: setattr(ret, name, {1: value}) @@ -417,7 +400,7 @@ def start(): input( 'Could not find valid base rom for patching at expected path %s. Please run with -h to see help for further information. \nPress Enter to exit.' % args.rom) sys.exit(1) - if any([sprite is not None and not os.path.isfile(sprite) and not Sprite.get_sprite_from_name(sprite) for sprite in + if any([sprite is not None and not os.path.isfile(sprite) and not get_sprite_from_name(sprite) for sprite in args.sprite.values()]): input('Could not find link sprite sheet at given location. \nPress Enter to exit.') sys.exit(1) diff --git a/Fill.py b/Fill.py index 1212f6e066..9051f93a2b 100644 --- a/Fill.py +++ b/Fill.py @@ -54,9 +54,8 @@ def fill_restrictive(world, base_state: CollectionState, locations, itempool, si for location in region.locations: if location.item and not location.event: placements.append(location) - raise FillError(f'No more spots to place {item_to_place}, locations {locations} are invalid. ' - f'Already placed {len(placements)}: {", ".join(str(place) for place in placements)}') + f'Already placed {len(placements)}: {", ".join(placements)}') world.push_item(spot_to_fill, item_to_place, False) locations.remove(spot_to_fill) diff --git a/GuiUtils.py b/GuiUtils.py index c054207691..0bebfda619 100644 --- a/GuiUtils.py +++ b/GuiUtils.py @@ -14,12 +14,12 @@ def set_icon(window): # some which may be platform specific, or depend on if the TCL library was compiled without # multithreading support. Therefore I will assume it is not thread safe to avoid any possible problems class BackgroundTask(object): - def __init__(self, window, code_to_run, *args): + def __init__(self, window, code_to_run): self.window = window self.queue = queue.Queue() self.running = True self.process_queue() - self.task = threading.Thread(target=code_to_run, args=(self, *args)) + self.task = threading.Thread(target=code_to_run, args=(self,)) self.task.start() def stop(self): @@ -45,7 +45,7 @@ class BackgroundTask(object): self.window.after(100, self.process_queue) class BackgroundTaskProgress(BackgroundTask): - def __init__(self, parent, code_to_run, title, *args): + def __init__(self, parent, code_to_run, title): self.parent = parent self.window = tk.Toplevel(parent) self.window['padx'] = 5 @@ -65,7 +65,7 @@ class BackgroundTaskProgress(BackgroundTask): set_icon(self.window) self.window.focus() - super().__init__(self.window, code_to_run, *args) + super().__init__(self.window, code_to_run) #safe to call from worker thread def update_status(self, text): diff --git a/Main.py b/Main.py index e66e21816a..e96b4bbc76 100644 --- a/Main.py +++ b/Main.py @@ -10,7 +10,7 @@ import zlib import concurrent.futures from BaseClasses import World, CollectionState, Item, Region, Location, Shop -from Items import ItemFactory, item_table +from Items import ItemFactory from Regions import create_regions, create_shops, mark_light_world_regions, lookup_vanilla_location_to_entrance from InvertedRegions import create_inverted_regions, mark_dark_world_regions from EntranceShuffle import link_entrances, link_inverted_entrances @@ -72,10 +72,6 @@ def main(args, seed=None): world.tile_shuffle = args.tile_shuffle.copy() world.beemizer = args.beemizer.copy() world.timer = args.timer.copy() - world.countdown_start_time = args.countdown_start_time.copy() - world.red_clock_time = args.red_clock_time.copy() - world.blue_clock_time = args.blue_clock_time.copy() - world.green_clock_time = args.green_clock_time.copy() world.shufflepots = args.shufflepots.copy() world.progressive = args.progressive.copy() world.dungeon_counters = args.dungeon_counters.copy() @@ -83,7 +79,6 @@ def main(args, seed=None): world.triforce_pieces_available = args.triforce_pieces_available.copy() world.triforce_pieces_required = args.triforce_pieces_required.copy() world.shop_shuffle = args.shop_shuffle.copy() - world.shop_shuffle_slots = args.shop_shuffle_slots.copy() world.progression_balancing = {player: not balance for player, balance in args.skip_progression_balancing.items()} world.shuffle_prizes = args.shuffle_prizes.copy() world.sprite_pool = args.sprite_pool.copy() @@ -111,13 +106,7 @@ def main(args, seed=None): item = ItemFactory(tok.strip(), player) if item: world.push_precollected(item) - # item in item_table gets checked in mystery, but not CLI - so we double-check here - world.local_items[player] = {item.strip() for item in args.local_items[player].split(',') if - item.strip() in item_table} - world.non_local_items[player] = {item.strip() for item in args.non_local_items[player].split(',') if - item.strip() in item_table} - # items can't be both local and non-local, prefer local - world.non_local_items[player] -= world.local_items[player] + world.local_items[player] = {item.strip() for item in args.local_items[player].split(',')} world.triforce_pieces_available[player] = max(world.triforce_pieces_available[player], world.triforce_pieces_required[player]) @@ -308,30 +297,6 @@ def main(args, seed=None): if lookup_vanilla_location_to_entrance[location.address] != main_entrance.name: er_hint_data[region.player][location.address] = main_entrance.name - ordered_areas = ('Light World', 'Dark World', 'Hyrule Castle', 'Agahnims Tower', 'Eastern Palace', 'Desert Palace', - 'Tower of Hera', 'Palace of Darkness', 'Swamp Palace', 'Skull Woods', 'Thieves Town', 'Ice Palace', - 'Misery Mire', 'Turtle Rock', 'Ganons Tower', "Total") - - checks_in_area = {player: {area: list() for area in ordered_areas} - for player in range(1, world.players + 1)} - - for player in range(1, world.players + 1): - checks_in_area[player]["Total"] = 0 - - for location in [loc for loc in world.get_filled_locations() if type(loc.address) is int]: - main_entrance = get_entrance_to_region(location.parent_region) - if location.parent_region.dungeon: - dungeonname = {'Inverted Agahnims Tower': 'Agahnims Tower', - 'Inverted Ganons Tower': 'Ganons Tower'}\ - .get(location.parent_region.dungeon.name, location.parent_region.dungeon.name) - checks_in_area[location.player][dungeonname].append(location.address) - elif main_entrance.parent_region.type == RegionType.LightWorld: - checks_in_area[location.player]["Light World"].append(location.address) - elif main_entrance.parent_region.type == RegionType.DarkWorld: - checks_in_area[location.player]["Dark World"].append(location.address) - checks_in_area[location.player]["Total"] += 1 - - precollected_items = [[] for player in range(world.players)] for item in world.precollected_items: precollected_items[item.player - 1].append(item.code) @@ -358,7 +323,6 @@ def main(args, seed=None): (location.item.code, location.item.player)) for location in world.get_filled_locations() if type(location.address) is int], - "checks_in_area": checks_in_area, "server_options": get_options()["server_options"], "er_hint_data": er_hint_data, "precollected_items": precollected_items, diff --git a/Mystery.py b/Mystery.py index c8261f035c..aebc38e71f 100644 --- a/Mystery.py +++ b/Mystery.py @@ -11,7 +11,7 @@ import ModuleUpdate ModuleUpdate.update() from Utils import parse_yaml -from Rom import Sprite +from Rom import get_sprite_from_name from EntranceRandomizer import parse_arguments from Main import main as ERmain from Main import get_seed, seeddigits @@ -167,7 +167,7 @@ def main(args=None, callback=ERmain): if path: try: settings = settings_cache[path] if settings_cache[path] else roll_settings(weights_cache[path]) - if settings.sprite and not os.path.isfile(settings.sprite) and not Sprite.get_sprite_from_name( + if settings.sprite and not os.path.isfile(settings.sprite) and not get_sprite_from_name( settings.sprite): logging.warning( f"Warning: The chosen sprite, \"{settings.sprite}\", for yaml \"{path}\", does not exist.") @@ -238,8 +238,6 @@ def convert_to_on_off(value): def get_choice(option, root, value=None) -> typing.Any: if option not in root: return value - if type(root[option]) is list: - return interpret_on_off(random.choices(root[option])[0]) if type(root[option]) is not dict: return interpret_on_off(root[option]) if not root[option]: @@ -362,8 +360,6 @@ def roll_settings(weights): # change minimum to required pieces to avoid problems ret.triforce_pieces_available = min(max(ret.triforce_pieces_required, int(ret.triforce_pieces_available)), 90) - ret.shop_shuffle_slots = int(get_choice('shop_shuffle_slots', weights, '0')) - ret.shop_shuffle = get_choice('shop_shuffle', weights, '') if not ret.shop_shuffle: ret.shop_shuffle = '' @@ -452,11 +448,6 @@ def roll_settings(weights): 'timed_countdown': 'timed-countdown', 'display': 'display'}[get_choice('timer', weights, False)] - ret.countdown_start_time = int(get_choice('countdown_start_time', weights, 10)) - ret.red_clock_time = int(get_choice('red_clock_time', weights, -2)) - ret.blue_clock_time = int(get_choice('blue_clock_time', weights, 2)) - ret.green_clock_time = int(get_choice('green_clock_time', weights, 4)) - ret.dungeon_counters = get_choice('dungeon_counters', weights, 'default') ret.progressive = convert_to_on_off(get_choice('progressive', weights, 'on')) @@ -496,17 +487,6 @@ def roll_settings(weights): ret.local_items = ",".join(ret.local_items) - ret.non_local_items = set() - for item_name in weights.get('non_local_items', []): - items = item_name_groups.get(item_name, {item_name}) - for item in items: - if item in item_table: - ret.non_local_items.add(item) - else: - raise Exception(f"Could not force item {item} to be world-non-local, as it was not recognized.") - - ret.non_local_items = ",".join(ret.non_local_items) - if 'rom' in weights: romweights = weights['rom'] diff --git a/Regions.py b/Regions.py index 11968766f8..58049039f5 100644 --- a/Regions.py +++ b/Regions.py @@ -368,17 +368,7 @@ def create_shops(world, player: int): cls_mapping = {ShopType.UpgradeShop: UpgradeShop, ShopType.Shop: Shop, ShopType.TakeAny: TakeAny} - option = world.shop_shuffle[player] - my_shop_table = dict(shop_table) - - num_slots = int(world.shop_shuffle_slots[player]) - - my_shop_slots = ([True] * num_slots + [False] * (len(shop_table) * 3))[:len(shop_table)*3 - 2] - - world.random.shuffle(my_shop_slots) - - from Items import ItemFactory - for region_name, (room_id, type, shopkeeper, custom, locked, inventory) in my_shop_table.items(): + for region_name, (room_id, type, shopkeeper, custom, locked, inventory) in shop_table.items(): if world.mode[player] == 'inverted' and region_name == 'Dark Lake Hylia Shop': locked = True inventory = [('Blue Potion', 160), ('Blue Shield', 50), ('Bombs (10)', 50)] @@ -388,19 +378,6 @@ def create_shops(world, player: int): world.shops.append(shop) for index, item in enumerate(inventory): shop.add_inventory(index, *item) - if region_name == 'Potion Shop': - pass - elif region_name == 'Capacity Upgrade': - pass - else: - if my_shop_slots.pop(): - additional_item = world.random.choice(['Rupees (20)', 'Rupees (50)', 'Rupees (100)']) - world.itempool.append(ItemFactory(additional_item, player)) - loc = Location(player, "{} Slot Item {}".format(shop.region.name, index+1), parent=shop.region) - shop.region.locations.append(loc) - world.dynamic_locations.append(loc) - - world.clear_location_cache() # (type, room_id, shopkeeper, custom, locked, [items]) # item = (item, price, max=0, replacement=None, replacement_price=0) @@ -416,63 +393,10 @@ shop_table = { 'Light World Death Mountain Shop': (0x00FF, ShopType.Shop, 0xA0, True, False, _basic_shop_defaults), 'Kakariko Shop': (0x011F, ShopType.Shop, 0xA0, True, False, _basic_shop_defaults), 'Cave Shop (Lake Hylia)': (0x0112, ShopType.Shop, 0xA0, True, False, _basic_shop_defaults), - 'Potion Shop': (0x0109, ShopType.Shop, 0xA0, True, False, [('Red Potion', 120), ('Green Potion', 60), ('Blue Potion', 160)]), + 'Potion Shop': (0x0109, ShopType.Shop, 0xFF, False, True, [('Red Potion', 120), ('Green Potion', 60), ('Blue Potion', 160)]), 'Capacity Upgrade': (0x0115, ShopType.UpgradeShop, 0x04, True, True, [('Bomb Upgrade (+5)', 100, 7), ('Arrow Upgrade (+5)', 100, 7)]) } -old_location_address_to_new_location_address = { - 0x2eb18: 0x18001b, # Bottle Merchant - 0x33d68: 0x18001a, # Purple Chest - 0x2df45: 0x18001d, # Link's Uncle - 0x2f1fc: 0x180008, # Sahasrahla - 0x18002a: 0x18001c, # Black Smith - 0x339cf: 0x180009, # Sick Kid - 0x33e7d: 0x180019, # Hobo - 0x180160: 0x18000b, # Desert Palace - Desert Torch - 0x289b0: 0x180018, # Master Sword Pedestal - 0xf69fa: 0x180007, # Old Man - 0x180162: 0x18000d, # Tower of Hera - Basement Cage - 0x330c7: 0x18000a, # Stumpy - 0x180161: 0x18000c # Ganons Tower - Bob's Torch -} - - -key_drop_data = { - 'Hyrule Castle - Map Guard Key Drop': [0x140036, 0x140037], - 'Hyrule Castle - Boomerang Guard Key Drop': [0x140033, 0x140034], - 'Hyrule Castle - Key Rat Key Drop': [0x14000c, 0x14000d], - 'Hyrule Castle - Big Key Drop': [0x14003c, 0x14003d], - 'Eastern Palace - Dark Square Pot Key': [0x14005a, 0x14005b], - 'Eastern Palace - Dark Eyegore Key Drop': [0x140048, 0x140049], - 'Desert Palace - Desert Tiles 1 Pot Key': [0x140030, 0x140031], - 'Desert Palace - Beamos Hall Pot Key': [0x14002a, 0x14002b], - 'Desert Palace - Desert Tiles 2 Pot Key': [0x140027, 0x140028], - 'Castle Tower - Dark Archer Key Drop': [0x140060, 0x140061], - 'Castle Tower - Circle of Pots Key Drop': [0x140051, 0x140052], - 'Swamp Palace - Pot Row Pot Key': [0x140018, 0x140019], - 'Swamp Palace - Trench 1 Pot Key': [0x140015, 0x140016], - 'Swamp Palace - Hookshot Pot Key': [0x140012, 0x140013], - 'Swamp Palace - Trench 2 Pot Key': [0x14000f, 0x140010], - 'Swamp Palace - Waterway Pot Key': [0x140009, 0x14000a], - 'Skull Woods - West Lobby Pot Key': [0x14002d, 0x14002e], - 'Skull Woods - Spike Corner Key Drop': [0x14001b, 0x14001c], - 'Thieves\' Town - Hallway Pot Key': [0x14005d, 0x14005e], - 'Thieves\' Town - Spike Switch Pot Key': [0x14004e, 0x14004f], - 'Ice Palace - Jelly Key Drop': [0x140003, 0x140004], - 'Ice Palace - Conveyor Key Drop': [0x140021, 0x140022], - 'Ice Palace - Hammer Block Key Drop': [0x140024, 0x140025], - 'Ice Palace - Many Pots Pot Key': [0x140045, 0x140046], - 'Misery Mire - Spikes Pot Key': [0x140054, 0x140055], - 'Misery Mire - Fishbone Pot Key': [0x14004b, 0x14004c], - 'Misery Mire - Conveyor Crystal Key Drop': [0x140063, 0x140064], - 'Turtle Rock - Pokey 1 Key Drop': [0x140057, 0x140058], - 'Turtle Rock - Pokey 2 Key Drop': [0x140006, 0x140007], - 'Ganons Tower - Conveyor Cross Pot Key': [0x14003f, 0x140040], - 'Ganons Tower - Double Switch Pot Key': [0x140042, 0x140043], - 'Ganons Tower - Conveyor Star Pits Pot Key': [0x140039, 0x14003a], - 'Ganons Tower - Mini Helmasaur Key Drop': [0x14001e, 0x14001f] -} - location_table = {'Mushroom': (0x180013, 0x186338, False, 'in the woods'), 'Bottle Merchant': (0x2eb18, 0x186339, False, 'with a merchant'), 'Flute Spot': (0x18014a, 0x18633d, False, 'underground'), @@ -716,9 +640,7 @@ location_table = {'Mushroom': (0x180013, 0x186338, False, 'in the woods'), [0x120A7, 0x53F24, 0x53F25, 0x18005C, 0x180079, 0xC708], None, True, 'Turtle Rock')} lookup_id_to_name = {data[0]: name for name, data in location_table.items() if type(data[0]) == int} -lookup_id_to_name = {**lookup_id_to_name, **{data[1]: name for name, data in key_drop_data.items()}, -1: "cheat console"} -lookup_name_to_id = {name: data[0] for name, data in location_table.items() if type(data[0]) == int} -lookup_name_to_id = {**lookup_name_to_id, **{name: data[1] for name, data in key_drop_data.items()}, "cheat console": -1} +lookup_id_to_name[-1] = "cheat console" lookup_vanilla_location_to_entrance = {1572883: 'Kings Grave Inner Rocks', 191256: 'Kings Grave Inner Rocks', 1573194: 'Kings Grave Inner Rocks', 1573189: 'Kings Grave Inner Rocks', @@ -823,28 +745,7 @@ lookup_vanilla_location_to_entrance = {1572883: 'Kings Grave Inner Rocks', 19125 60103: 'Ganons Tower', 60106: 'Ganons Tower', 60109: 'Ganons Tower', 60127: 'Ganons Tower', 60118: 'Ganons Tower', 60148: 'Ganons Tower', 60151: 'Ganons Tower', 60145: 'Ganons Tower', 60157: 'Ganons Tower', - 60160: 'Ganons Tower', 60163: 'Ganons Tower', 60166: 'Ganons Tower', - 0x140037: 'Hyrule Castle Entrance (South)', - 0x140034: 'Hyrule Castle Entrance (South)', - 0x14000d: 'Hyrule Castle Entrance (South)', - 0x14003d: 'Hyrule Castle Entrance (South)', - 0x14005b: 'Eastern Palace', 0x140049: 'Eastern Palace', - 0x140031: 'Desert Palace Entrance (North)', - 0x14002b: 'Desert Palace Entrance (North)', - 0x140028: 'Desert Palace Entrance (North)', - 0x140061: 'Agahnims Tower', 0x140052: 'Agahnims Tower', - 0x140019: 'Swamp Palace', 0x140016: 'Swamp Palace', 0x140013: 'Swamp Palace', - 0x140010: 'Swamp Palace', 0x14000a: 'Swamp Palace', - 0x14002e: 'Skull Woods Second Section Door (East)', - 0x14001c: 'Skull Woods Final Section', - 0x14005e: 'Thieves Town', 0x14004f: 'Thieves Town', - 0x140004: 'Ice Palace', 0x140022: 'Ice Palace', - 0x140025: 'Ice Palace', 0x140046: 'Ice Palace', - 0x140055: 'Misery Mire', 0x14004c: 'Misery Mire', - 0x140064: 'Misery Mire', - 0x140058: 'Turtle Rock', 0x140007: 'Dark Death Mountain Ledge (West)', - 0x140040: 'Ganons Tower', 0x140043: 'Ganons Tower', - 0x14003a: 'Ganons Tower', 0x14001f: 'Ganons Tower'} + 60160: 'Ganons Tower', 60163: 'Ganons Tower', 60166: 'Ganons Tower'} lookup_prizes = {location for location in location_table if location.endswith(" - Prize")} lookup_boss_drops = {location for location in location_table if location.endswith(" - Boss")} \ No newline at end of file diff --git a/Rules.py b/Rules.py index 3c12d9b302..3fb96c9a0c 100644 --- a/Rules.py +++ b/Rules.py @@ -104,7 +104,7 @@ def mirrorless_path_to_castle_courtyard(world, player): else: queue.append((entrance.connected_region, new_path)) - raise Exception(f"Could not find mirrorless path to castle courtyard for Player {player} ({world.get_player_names(player)})") + raise Exception(f"Could not find mirrorless path to castle courtyard for Player {player}") def set_rule(spot, rule): spot.access_rule = rule @@ -179,10 +179,6 @@ def locality_rules(world, player): for location in world.get_locations(): if location.player != player: forbid_items_for_player(location, world.local_items[player], player) - if world.non_local_items[player]: - for location in world.get_locations(): - if location.player == player: - forbid_items_for_player(location, world.non_local_items[player], player) non_crossover_items = (item_name_groups["Small Keys"] | item_name_groups["Big Keys"] | progression_items) - { diff --git a/Text.py b/Text.py index 4c723afb7d..83a7400b05 100644 --- a/Text.py +++ b/Text.py @@ -266,7 +266,7 @@ junk_texts = [ "{C:GREEN}\n>Secret power\nis said to be\nin the arrow.", "{C:GREEN}\nAim at the\neyes of Gohma.\n >", "{C:GREEN}\nGrumble,\ngrumble…\n >", - # "{C:GREEN}\n10th enemy\nhas the bomb.\n >", removed as people may assume it applies to this game + "{C:GREEN}\n10th enemy\nhas the bomb.\n >", "{C:GREEN}\nGo to the\nnext room.\n >", "{C:GREEN}\n>Thanks, @\nYou’re the\nhero of Hyrule", "{C:GREEN}\nThere’s always\nmoney in the\nBanana Stand>", @@ -1228,8 +1228,7 @@ class GoldCreditMapper(CharTextMapper): class GreenCreditMapper(CharTextMapper): char_map = {' ': 0x9F, - '·': 0x52, - '.': 0x52} + '·': 0x52} alpha_offset = -0x29 class RedCreditMapper(CharTextMapper): diff --git a/WebHostLib/__init__.py b/WebHostLib/__init__.py index c392990bac..98d3aea43f 100644 --- a/WebHostLib/__init__.py +++ b/WebHostLib/__init__.py @@ -47,8 +47,6 @@ app.config["PONY"] = { } app.config["MAX_ROLL"] = 20 app.config["CACHE_TYPE"] = "simple" -app.config["JSON_AS_ASCII"] = False - app.autoversion = True av = Autoversion(app) cache = Cache(app) diff --git a/WebHostLib/downloads.py b/WebHostLib/downloads.py index e8c32b8347..5dc717889f 100644 --- a/WebHostLib/downloads.py +++ b/WebHostLib/downloads.py @@ -37,10 +37,9 @@ def download_raw_patch(seed_id, player_id): return "Patch not found" else: import io - if patch.seed.multidata: - pname = patch.seed.multidata["names"][0][patch.player - 1] - else: - pname = "unknown" + + pname = patch.seed.multidata["names"][0][patch.player - 1] + patch_data = update_patch_data(patch.data, server="") patch_data = io.BytesIO(patch_data) diff --git a/WebHostLib/models.py b/WebHostLib/models.py index 77bd6f2fed..d5e0f2b807 100644 --- a/WebHostLib/models.py +++ b/WebHostLib/models.py @@ -50,5 +50,5 @@ class Generation(db.Entity): id = PrimaryKey(UUID, default=uuid4) owner = Required(UUID) options = Required(bytes, lazy=True) # these didn't work as JSON on mariaDB, so they're getting pickled now - meta = Required(bytes, lazy=True) # if state is -1 (error) this will contain an utf-8 encoded error message + meta = Required(bytes, lazy=True) state = Required(int, default=0, index=True) diff --git a/WebHostLib/requirements.txt b/WebHostLib/requirements.txt index f7a97f6567..fc34a2dd69 100644 --- a/WebHostLib/requirements.txt +++ b/WebHostLib/requirements.txt @@ -3,5 +3,5 @@ pony>=0.7.14 waitress>=1.4.4 flask-caching>=1.9.0 Flask-Autoversion>=0.2.0 -Flask-Compress>=1.8.0 +Flask-Compress>=1.7.0 Flask-Limiter>=1.4 diff --git a/WebHostLib/static/static/weightedSettings.yaml b/WebHostLib/static/static/weightedSettings.yaml index b6e7747fc6..ddd2171469 100644 --- a/WebHostLib/static/static/weightedSettings.yaml +++ b/WebHostLib/static/static/weightedSettings.yaml @@ -165,6 +165,7 @@ item_pool: normal: 50 # Item availability remains unchanged from vanilla game hard: 0 # Reduced upgrade availability (max: 14 hearts, blue mail, tempered sword, fire shield, no silvers unless swordless) expert: 0 # Minimum upgrade availability (max: 8 hearts, green mail, master sword, fighter shield, no silvers unless swordless) + crowd_control: 0 # Sets up the item pool for the crowd control extension. Do not use it without crowd control item_functionality: easy: 0 # Allow Hammer to damage ganon, Allow Hammer tablet collection, Allow swordless medallion use everywhere. normal: 50 # Vanilla item functionality @@ -231,22 +232,6 @@ timer: ohko: 0 # Timer always at zero. Permanent OHKO. timed_countdown: 0 # Starts the clock with forty minutes. Same clocks as timed mode, but if the clock hits zero you lose. You can still keep playing, though. display: 0 # Displays a timer, but otherwise does not affect gameplay or the item pool. -countdown_start_time: # For timed_ohko and timed_countdown timer modes, the amount of time in minutes to start with - 0: 0 # For timed_ohko, starts in OHKO mode when starting the game - 10: 50 - 20: 0 - 30: 0 - 60: 0 -red_clock_time: # For all timer modes, the amount of time in minutes to gain or lose when picking up a red clock - -2: 50 - 1: 0 -blue_clock_time: # For all timer modes, the amount of time in minutes to gain or lose when picking up a blue clock - 1: 0 - 2: 50 -green_clock_time: # For all timer modes, the amount of time in minutes to gain or lose when picking up a green clock - 4: 50 - 10: 0 - 15: 0 # Can be uncommented to use it # local_items: # Force certain items to appear in your world only, not across the multiworld. Recognizes some group names, like "Swords" # - "Moon Pearl" @@ -304,9 +289,6 @@ intensity: # Only available if the host uses the doors branch, it is ignored oth 2: 0 # And shuffles open edges and straight staircases 3: 0 # And shuffles dungeon lobbies random: 0 # Picks one of those at random -key_drop_shuffle: # Only available if the host uses the doors branch, it is ignored otherwise - on: 0 # Enables the small keys dropped by enemies or under pots, and the big key dropped by the Ball & Chain guard to be shuffled into the pool. This extends the number of checks to 249. - off: 50 experimental: # Only available if the host uses the doors branch, it is ignored otherwise on: 0 # Enables experimental features. Currently, this is just the dungeon keys in chest counter. off: 50 @@ -409,3 +391,13 @@ rom: dizzy: 0 sick: 0 puke: 0 + uw_palettes: # Change the colors of shields + default: 50 # No changes + random: 0 # Shuffle the colors + blackout: 0 # Never use this + grayscale: 0 + negative: 0 + classic: 0 + dizzy: 0 + sick: 0 + puke: 0 \ No newline at end of file diff --git a/WebHostLib/templates/tracker.html b/WebHostLib/templates/tracker.html index 3a528c1679..27211edef9 100644 --- a/WebHostLib/templates/tracker.html +++ b/WebHostLib/templates/tracker.html @@ -124,7 +124,7 @@ {{ player_names[(team, loop.index)]|e }} {%- for area in ordered_areas -%} {%- set checks_done = checks[area] -%} - {%- set checks_total = checks_in_area[player][area] -%} + {%- set checks_total = checks_in_area[area] -%} {%- if checks_done == checks_total -%} {{ checks_done }}/{{ checks_total }} diff --git a/WebHostLib/tracker.py b/WebHostLib/tracker.py index e068cf157d..14cb0657eb 100644 --- a/WebHostLib/tracker.py +++ b/WebHostLib/tracker.py @@ -180,25 +180,6 @@ default_locations = { 60121, 60124, 60127, 1573217, 60130, 60133, 60136, 60139, 60142, 60145, 60148, 60151, 60157}, 'Total': set()} -key_only_locations = { - 'Light World': set(), - 'Dark World': set(), - 'Desert Palace': {0x140031, 0x14002b, 0x140061, 0x140028}, - 'Eastern Palace': {0x14005b, 0x140049}, - 'Hyrule Castle': {0x140037, 0x140034, 0x14000d, 0x14003d}, - 'Agahnims Tower': {0x140061, 0x140052}, - 'Tower of Hera': set(), - 'Swamp Palace': {0x140019, 0x140016, 0x140013, 0x140010, 0x14000a}, - 'Thieves Town': {0x14005e, 0x14004f}, - 'Skull Woods': {0x14002e, 0x14001c}, - 'Ice Palace': {0x140004, 0x140022, 0x140025, 0x140046}, - 'Misery Mire': {0x140055, 0x14004c, 0x140064}, - 'Turtle Rock': {0x140058, 0x140007}, - 'Palace of Darkness': set(), - 'Ganons Tower': {0x140040, 0x140043, 0x14003a, 0x14001f}, - 'Total': set() -} - key_locations = {"Desert Palace", "Eastern Palace", "Hyrule Castle", "Agahnims Tower", "Tower of Hera", "Swamp Palace", "Thieves Town", "Skull Woods", "Ice Palace", "Misery Mire", "Turtle Rock", "Palace of Darkness", "Ganons Tower"} @@ -210,10 +191,6 @@ for area, locations in default_locations.items(): for location in locations: location_to_area[location] = area -for area, locations in key_only_locations.items(): - for location in locations: - location_to_area[location] = area - checks_in_area = {area: len(checks) for area, checks in default_locations.items()} checks_in_area["Total"] = 216 @@ -258,14 +235,6 @@ def render_timedelta(delta: datetime.timedelta): _multidata_cache = {} -def get_location_table(checks_table: dict) -> dict: - loc_to_area = {} - for area, locations in checks_table.items(): - if area == "Total": - continue - for location in locations: - loc_to_area[location] = area - return loc_to_area def get_static_room_data(room: Room): result = _multidata_cache.get(room.seed.id, None) @@ -275,30 +244,11 @@ def get_static_room_data(room: Room): # in > 100 players this can take a bit of time and is the main reason for the cache locations = {tuple(k): tuple(v) for k, v in multidata['locations']} names = multidata["names"] - seed_checks_in_area = checks_in_area.copy() use_door_tracker = False if "tags" in multidata: use_door_tracker = "DR" in multidata["tags"] - if use_door_tracker: - for area, checks in key_only_locations.items(): - seed_checks_in_area[area] += len(checks) - seed_checks_in_area["Total"] = 249 - if "checks_in_area" not in multidata: - player_checks_in_area = {playernumber: (seed_checks_in_area if use_door_tracker and - (0x140031, playernumber) in locations else checks_in_area) - for playernumber in range(1, len(names[0]) + 1)} - player_location_to_area = {playernumber: location_to_area - for playernumber in range(1, len(names[0]) + 1)} - - else: - player_checks_in_area = {playernumber: {areaname: len(multidata["checks_in_area"][f'{playernumber}'][areaname]) - if areaname != "Total" else multidata["checks_in_area"][f'{playernumber}']["Total"] - for areaname in ordered_areas} - for playernumber in range(1, len(names[0]) + 1)} - player_location_to_area = {playernumber: get_location_table(multidata["checks_in_area"][f'{playernumber}']) - for playernumber in range(1, len(names[0]) + 1)} - result = locations, names, use_door_tracker, player_checks_in_area, player_location_to_area + result = locations, names, use_door_tracker _multidata_cache[room.seed.id] = result return result @@ -309,7 +259,7 @@ def getTracker(tracker: UUID): room = Room.get(tracker=tracker) if not room: abort(404) - locations, names, use_door_tracker, seed_checks_in_area, player_location_to_area = get_static_room_data(room) + locations, names, use_door_tracker = get_static_room_data(room) inventory = {teamnumber: {playernumber: collections.Counter() for playernumber in range(1, len(team) + 1)} for teamnumber, team in enumerate(names)} @@ -330,12 +280,9 @@ def getTracker(tracker: UUID): for item_id in precollected: attribute_item(inventory, team, player, item_id) for location in locations_checked: - if (location, player) not in locations or location not in player_location_to_area[player]: - continue - item, recipient = locations[location, player] attribute_item(inventory, team, recipient, item) - checks_done[team][player][player_location_to_area[player][location]] += 1 + checks_done[team][player][location_to_area[location]] += 1 checks_done[team][player]["Total"] += 1 for (team, player), game_state in room.multisave.get("client_game_state", []): @@ -364,7 +311,7 @@ def getTracker(tracker: UUID): lookup_id_to_name=Items.lookup_id_to_name, player_names=player_names, tracking_names=tracking_names, tracking_ids=tracking_ids, room=room, icons=icons, multi_items=multi_items, checks_done=checks_done, ordered_areas=ordered_areas, - checks_in_area=seed_checks_in_area, activity_timers=activity_timers, + checks_in_area=checks_in_area, activity_timers=activity_timers, key_locations=key_locations, small_key_ids=small_key_ids, big_key_ids=big_key_ids, video=video, big_key_locations=key_locations if use_door_tracker else big_key_locations, hints=hints, long_player_names = long_player_names) diff --git a/data/sprites/alttpr/.gitignore b/data/sprites/alttpr/.gitignore deleted file mode 100644 index d6b7ef32c8..0000000000 --- a/data/sprites/alttpr/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/data/sprites/alttpr/001.link.1.zspr b/data/sprites/alttpr/001.link.1.zspr new file mode 100644 index 0000000000..4537afa84b Binary files /dev/null and b/data/sprites/alttpr/001.link.1.zspr differ diff --git a/data/sprites/alttpr/4slink-armors.1.zspr b/data/sprites/alttpr/4slink-armors.1.zspr new file mode 100644 index 0000000000..7a94411333 Binary files /dev/null and b/data/sprites/alttpr/4slink-armors.1.zspr differ diff --git a/data/sprites/alttpr/abigail.1.zspr b/data/sprites/alttpr/abigail.1.zspr new file mode 100644 index 0000000000..526990c5ef Binary files /dev/null and b/data/sprites/alttpr/abigail.1.zspr differ diff --git a/data/sprites/alttpr/adol.1.zspr b/data/sprites/alttpr/adol.1.zspr new file mode 100644 index 0000000000..da8210a956 Binary files /dev/null and b/data/sprites/alttpr/adol.1.zspr differ diff --git a/data/sprites/alttpr/aggretsuko.1.zspr b/data/sprites/alttpr/aggretsuko.1.zspr new file mode 100644 index 0000000000..c23d9d8316 Binary files /dev/null and b/data/sprites/alttpr/aggretsuko.1.zspr differ diff --git a/data/sprites/alttpr/alice.1.zspr b/data/sprites/alttpr/alice.1.zspr new file mode 100644 index 0000000000..4c673acd71 Binary files /dev/null and b/data/sprites/alttpr/alice.1.zspr differ diff --git a/data/sprites/alttpr/angry-video-game-nerd.1.zspr b/data/sprites/alttpr/angry-video-game-nerd.1.zspr new file mode 100644 index 0000000000..79aee561cf Binary files /dev/null and b/data/sprites/alttpr/angry-video-game-nerd.1.zspr differ diff --git a/data/sprites/alttpr/arcane.1.zspr b/data/sprites/alttpr/arcane.1.zspr new file mode 100644 index 0000000000..b0fd476050 Binary files /dev/null and b/data/sprites/alttpr/arcane.1.zspr differ diff --git a/data/sprites/alttpr/ark.2.zspr b/data/sprites/alttpr/ark.2.zspr new file mode 100644 index 0000000000..916b036aa3 Binary files /dev/null and b/data/sprites/alttpr/ark.2.zspr differ diff --git a/data/sprites/alttpr/arrghus.2.zspr b/data/sprites/alttpr/arrghus.2.zspr new file mode 100644 index 0000000000..2064009d3c Binary files /dev/null and b/data/sprites/alttpr/arrghus.2.zspr differ diff --git a/data/sprites/alttpr/astronaut.1.zspr b/data/sprites/alttpr/astronaut.1.zspr new file mode 100644 index 0000000000..a4db3020a3 Binary files /dev/null and b/data/sprites/alttpr/astronaut.1.zspr differ diff --git a/data/sprites/alttpr/badeline.1.zspr b/data/sprites/alttpr/badeline.1.zspr new file mode 100644 index 0000000000..b9fb134606 Binary files /dev/null and b/data/sprites/alttpr/badeline.1.zspr differ diff --git a/data/sprites/alttpr/bananas-in-pyjamas.1.zspr b/data/sprites/alttpr/bananas-in-pyjamas.1.zspr new file mode 100644 index 0000000000..f75af2b219 Binary files /dev/null and b/data/sprites/alttpr/bananas-in-pyjamas.1.zspr differ diff --git a/data/sprites/alttpr/bandit.1.zspr b/data/sprites/alttpr/bandit.1.zspr new file mode 100644 index 0000000000..5b3288f80d Binary files /dev/null and b/data/sprites/alttpr/bandit.1.zspr differ diff --git a/data/sprites/alttpr/batman.1.zspr b/data/sprites/alttpr/batman.1.zspr new file mode 100644 index 0000000000..a4a1e9c0ef Binary files /dev/null and b/data/sprites/alttpr/batman.1.zspr differ diff --git a/data/sprites/alttpr/beau.1.zspr b/data/sprites/alttpr/beau.1.zspr new file mode 100644 index 0000000000..8d8d2079bf Binary files /dev/null and b/data/sprites/alttpr/beau.1.zspr differ diff --git a/data/sprites/alttpr/bewp.1.zspr b/data/sprites/alttpr/bewp.1.zspr new file mode 100644 index 0000000000..265d2e1a61 Binary files /dev/null and b/data/sprites/alttpr/bewp.1.zspr differ diff --git a/data/sprites/alttpr/bigkey.1.zspr b/data/sprites/alttpr/bigkey.1.zspr new file mode 100644 index 0000000000..eab4854e38 Binary files /dev/null and b/data/sprites/alttpr/bigkey.1.zspr differ diff --git a/data/sprites/alttpr/birb.1.zspr b/data/sprites/alttpr/birb.1.zspr new file mode 100644 index 0000000000..d6d86bb688 Binary files /dev/null and b/data/sprites/alttpr/birb.1.zspr differ diff --git a/data/sprites/alttpr/birdo.1.zspr b/data/sprites/alttpr/birdo.1.zspr new file mode 100644 index 0000000000..54c49747ca Binary files /dev/null and b/data/sprites/alttpr/birdo.1.zspr differ diff --git a/data/sprites/alttpr/blackmage.1.zspr b/data/sprites/alttpr/blackmage.1.zspr new file mode 100644 index 0000000000..d9b5628852 Binary files /dev/null and b/data/sprites/alttpr/blackmage.1.zspr differ diff --git a/data/sprites/alttpr/blacksmithlink.1.zspr b/data/sprites/alttpr/blacksmithlink.1.zspr new file mode 100644 index 0000000000..e9aeb31aa3 Binary files /dev/null and b/data/sprites/alttpr/blacksmithlink.1.zspr differ diff --git a/data/sprites/alttpr/blossom.1.zspr b/data/sprites/alttpr/blossom.1.zspr new file mode 100644 index 0000000000..57f4918c55 Binary files /dev/null and b/data/sprites/alttpr/blossom.1.zspr differ diff --git a/data/sprites/alttpr/bob.1.zspr b/data/sprites/alttpr/bob.1.zspr new file mode 100644 index 0000000000..25fc041084 Binary files /dev/null and b/data/sprites/alttpr/bob.1.zspr differ diff --git a/data/sprites/alttpr/boo-two.1.zspr b/data/sprites/alttpr/boo-two.1.zspr new file mode 100644 index 0000000000..a5c5463c23 Binary files /dev/null and b/data/sprites/alttpr/boo-two.1.zspr differ diff --git a/data/sprites/alttpr/boo.2.zspr b/data/sprites/alttpr/boo.2.zspr new file mode 100644 index 0000000000..24c74bde23 Binary files /dev/null and b/data/sprites/alttpr/boo.2.zspr differ diff --git a/data/sprites/alttpr/bottle_o_goo.1.zspr b/data/sprites/alttpr/bottle_o_goo.1.zspr new file mode 100644 index 0000000000..28ca1f9b69 Binary files /dev/null and b/data/sprites/alttpr/bottle_o_goo.1.zspr differ diff --git a/data/sprites/alttpr/botw-zelda.1.zspr b/data/sprites/alttpr/botw-zelda.1.zspr new file mode 100644 index 0000000000..630adfa622 Binary files /dev/null and b/data/sprites/alttpr/botw-zelda.1.zspr differ diff --git a/data/sprites/alttpr/bowser.1.zspr b/data/sprites/alttpr/bowser.1.zspr new file mode 100644 index 0000000000..1cc256d8c3 Binary files /dev/null and b/data/sprites/alttpr/bowser.1.zspr differ diff --git a/data/sprites/alttpr/branch.1.zspr b/data/sprites/alttpr/branch.1.zspr new file mode 100644 index 0000000000..b79264183b Binary files /dev/null and b/data/sprites/alttpr/branch.1.zspr differ diff --git a/data/sprites/alttpr/brian.1.zspr b/data/sprites/alttpr/brian.1.zspr new file mode 100644 index 0000000000..013a220794 Binary files /dev/null and b/data/sprites/alttpr/brian.1.zspr differ diff --git a/data/sprites/alttpr/broccoli.1.zspr b/data/sprites/alttpr/broccoli.1.zspr new file mode 100644 index 0000000000..e335df01e4 Binary files /dev/null and b/data/sprites/alttpr/broccoli.1.zspr differ diff --git a/data/sprites/alttpr/bronzor.1.zspr b/data/sprites/alttpr/bronzor.1.zspr new file mode 100644 index 0000000000..d1afd11701 Binary files /dev/null and b/data/sprites/alttpr/bronzor.1.zspr differ diff --git a/data/sprites/alttpr/bsboy.1.zspr b/data/sprites/alttpr/bsboy.1.zspr new file mode 100644 index 0000000000..7d00be7451 Binary files /dev/null and b/data/sprites/alttpr/bsboy.1.zspr differ diff --git a/data/sprites/alttpr/bsgirl.1.zspr b/data/sprites/alttpr/bsgirl.1.zspr new file mode 100644 index 0000000000..829237518c Binary files /dev/null and b/data/sprites/alttpr/bsgirl.1.zspr differ diff --git a/data/sprites/alttpr/bubbles.1.zspr b/data/sprites/alttpr/bubbles.1.zspr new file mode 100644 index 0000000000..bbba3b7546 Binary files /dev/null and b/data/sprites/alttpr/bubbles.1.zspr differ diff --git a/data/sprites/alttpr/bullet_bill.1.zspr b/data/sprites/alttpr/bullet_bill.1.zspr new file mode 100644 index 0000000000..5b561b9eee Binary files /dev/null and b/data/sprites/alttpr/bullet_bill.1.zspr differ diff --git a/data/sprites/alttpr/buttercup.1.zspr b/data/sprites/alttpr/buttercup.1.zspr new file mode 100644 index 0000000000..bd066c2743 Binary files /dev/null and b/data/sprites/alttpr/buttercup.1.zspr differ diff --git a/data/sprites/alttpr/cactuar.1.zspr b/data/sprites/alttpr/cactuar.1.zspr new file mode 100644 index 0000000000..51c3289362 Binary files /dev/null and b/data/sprites/alttpr/cactuar.1.zspr differ diff --git a/data/sprites/alttpr/cadence.1.zspr b/data/sprites/alttpr/cadence.1.zspr new file mode 100644 index 0000000000..05f174f7cf Binary files /dev/null and b/data/sprites/alttpr/cadence.1.zspr differ diff --git a/data/sprites/alttpr/carlsagan42.1.zspr b/data/sprites/alttpr/carlsagan42.1.zspr new file mode 100644 index 0000000000..2632cb6f1b Binary files /dev/null and b/data/sprites/alttpr/carlsagan42.1.zspr differ diff --git a/data/sprites/alttpr/casual-zelda.1.zspr b/data/sprites/alttpr/casual-zelda.1.zspr new file mode 100644 index 0000000000..80257f11a3 Binary files /dev/null and b/data/sprites/alttpr/casual-zelda.1.zspr differ diff --git a/data/sprites/alttpr/cat.3.zspr b/data/sprites/alttpr/cat.3.zspr new file mode 100644 index 0000000000..69946d73f8 Binary files /dev/null and b/data/sprites/alttpr/cat.3.zspr differ diff --git a/data/sprites/alttpr/catboo.1.zspr b/data/sprites/alttpr/catboo.1.zspr new file mode 100644 index 0000000000..45a4fa8103 Binary files /dev/null and b/data/sprites/alttpr/catboo.1.zspr differ diff --git a/data/sprites/alttpr/cdilink.1.zspr b/data/sprites/alttpr/cdilink.1.zspr new file mode 100644 index 0000000000..3236f7999b Binary files /dev/null and b/data/sprites/alttpr/cdilink.1.zspr differ diff --git a/data/sprites/alttpr/celes.1.zspr b/data/sprites/alttpr/celes.1.zspr new file mode 100644 index 0000000000..ac0c122695 Binary files /dev/null and b/data/sprites/alttpr/celes.1.zspr differ diff --git a/data/sprites/alttpr/charizard.1.zspr b/data/sprites/alttpr/charizard.1.zspr new file mode 100644 index 0000000000..babed51157 Binary files /dev/null and b/data/sprites/alttpr/charizard.1.zspr differ diff --git a/data/sprites/alttpr/cheepcheep.1.zspr b/data/sprites/alttpr/cheepcheep.1.zspr new file mode 100644 index 0000000000..a49545f208 Binary files /dev/null and b/data/sprites/alttpr/cheepcheep.1.zspr differ diff --git a/data/sprites/alttpr/chibity.1.zspr b/data/sprites/alttpr/chibity.1.zspr new file mode 100644 index 0000000000..949dbe2eaf Binary files /dev/null and b/data/sprites/alttpr/chibity.1.zspr differ diff --git a/data/sprites/alttpr/cirno.1.zspr b/data/sprites/alttpr/cirno.1.zspr new file mode 100644 index 0000000000..75de8ab69e Binary files /dev/null and b/data/sprites/alttpr/cirno.1.zspr differ diff --git a/data/sprites/alttpr/clifford.1.zspr b/data/sprites/alttpr/clifford.1.zspr new file mode 100644 index 0000000000..73f848c16e Binary files /dev/null and b/data/sprites/alttpr/clifford.1.zspr differ diff --git a/data/sprites/alttpr/clyde.1.zspr b/data/sprites/alttpr/clyde.1.zspr new file mode 100644 index 0000000000..b590a2ef91 Binary files /dev/null and b/data/sprites/alttpr/clyde.1.zspr differ diff --git a/data/sprites/alttpr/conker.1.zspr b/data/sprites/alttpr/conker.1.zspr new file mode 100644 index 0000000000..121d523330 Binary files /dev/null and b/data/sprites/alttpr/conker.1.zspr differ diff --git a/data/sprites/alttpr/cornelius.1.zspr b/data/sprites/alttpr/cornelius.1.zspr new file mode 100644 index 0000000000..4c58f35610 Binary files /dev/null and b/data/sprites/alttpr/cornelius.1.zspr differ diff --git a/data/sprites/alttpr/corona.1.zspr b/data/sprites/alttpr/corona.1.zspr new file mode 100644 index 0000000000..2ed39a78eb Binary files /dev/null and b/data/sprites/alttpr/corona.1.zspr differ diff --git a/data/sprites/alttpr/cucco.1.zspr b/data/sprites/alttpr/cucco.1.zspr new file mode 100644 index 0000000000..f237de4ab0 Binary files /dev/null and b/data/sprites/alttpr/cucco.1.zspr differ diff --git a/data/sprites/alttpr/cursor.1.zspr b/data/sprites/alttpr/cursor.1.zspr new file mode 100644 index 0000000000..45bc973919 Binary files /dev/null and b/data/sprites/alttpr/cursor.1.zspr differ diff --git a/data/sprites/alttpr/d_owls.1.zspr b/data/sprites/alttpr/d_owls.1.zspr new file mode 100644 index 0000000000..147283ea84 Binary files /dev/null and b/data/sprites/alttpr/d_owls.1.zspr differ diff --git a/data/sprites/alttpr/dark-panda.1.zspr b/data/sprites/alttpr/dark-panda.1.zspr new file mode 100644 index 0000000000..1b39b74712 Binary files /dev/null and b/data/sprites/alttpr/dark-panda.1.zspr differ diff --git a/data/sprites/alttpr/darkboy.1.zspr b/data/sprites/alttpr/darkboy.1.zspr new file mode 100644 index 0000000000..de55ebbe36 Binary files /dev/null and b/data/sprites/alttpr/darkboy.1.zspr differ diff --git a/data/sprites/alttpr/darkgirl.1.zspr b/data/sprites/alttpr/darkgirl.1.zspr new file mode 100644 index 0000000000..8fd848fd9f Binary files /dev/null and b/data/sprites/alttpr/darkgirl.1.zspr differ diff --git a/data/sprites/alttpr/darklink-tunic.1.zspr b/data/sprites/alttpr/darklink-tunic.1.zspr new file mode 100644 index 0000000000..fe41730884 Binary files /dev/null and b/data/sprites/alttpr/darklink-tunic.1.zspr differ diff --git a/data/sprites/alttpr/darklink.1.zspr b/data/sprites/alttpr/darklink.1.zspr new file mode 100644 index 0000000000..b0d9a95f47 Binary files /dev/null and b/data/sprites/alttpr/darklink.1.zspr differ diff --git a/data/sprites/alttpr/darkswatchy.1.zspr b/data/sprites/alttpr/darkswatchy.1.zspr new file mode 100644 index 0000000000..88677425b6 Binary files /dev/null and b/data/sprites/alttpr/darkswatchy.1.zspr differ diff --git a/data/sprites/alttpr/darkzelda.1.zspr b/data/sprites/alttpr/darkzelda.1.zspr new file mode 100644 index 0000000000..519c278a1a Binary files /dev/null and b/data/sprites/alttpr/darkzelda.1.zspr differ diff --git a/data/sprites/alttpr/darkzora.2.zspr b/data/sprites/alttpr/darkzora.2.zspr new file mode 100644 index 0000000000..fbb15c69f9 Binary files /dev/null and b/data/sprites/alttpr/darkzora.2.zspr differ diff --git a/data/sprites/alttpr/deadpool-mythic.1.zspr b/data/sprites/alttpr/deadpool-mythic.1.zspr new file mode 100644 index 0000000000..abcda92659 Binary files /dev/null and b/data/sprites/alttpr/deadpool-mythic.1.zspr differ diff --git a/data/sprites/alttpr/deadpool.1.zspr b/data/sprites/alttpr/deadpool.1.zspr new file mode 100644 index 0000000000..3d2e87f741 Binary files /dev/null and b/data/sprites/alttpr/deadpool.1.zspr differ diff --git a/data/sprites/alttpr/deadrock.1.zspr b/data/sprites/alttpr/deadrock.1.zspr new file mode 100644 index 0000000000..cc28cd7902 Binary files /dev/null and b/data/sprites/alttpr/deadrock.1.zspr differ diff --git a/data/sprites/alttpr/decidueye.1.zspr b/data/sprites/alttpr/decidueye.1.zspr new file mode 100644 index 0000000000..1c769e6229 Binary files /dev/null and b/data/sprites/alttpr/decidueye.1.zspr differ diff --git a/data/sprites/alttpr/demonlink.1.zspr b/data/sprites/alttpr/demonlink.1.zspr new file mode 100644 index 0000000000..2daf73593d Binary files /dev/null and b/data/sprites/alttpr/demonlink.1.zspr differ diff --git a/data/sprites/alttpr/dragonite.2.zspr b/data/sprites/alttpr/dragonite.2.zspr new file mode 100644 index 0000000000..37d95ad0a5 Binary files /dev/null and b/data/sprites/alttpr/dragonite.2.zspr differ diff --git a/data/sprites/alttpr/drake.1.zspr b/data/sprites/alttpr/drake.1.zspr new file mode 100644 index 0000000000..1be94a7567 Binary files /dev/null and b/data/sprites/alttpr/drake.1.zspr differ diff --git a/data/sprites/alttpr/eggplant.1.zspr b/data/sprites/alttpr/eggplant.1.zspr new file mode 100644 index 0000000000..c33c200896 Binary files /dev/null and b/data/sprites/alttpr/eggplant.1.zspr differ diff --git a/data/sprites/alttpr/emosaru.1.zspr b/data/sprites/alttpr/emosaru.1.zspr new file mode 100644 index 0000000000..a636dad950 Binary files /dev/null and b/data/sprites/alttpr/emosaru.1.zspr differ diff --git a/data/sprites/alttpr/ezlo.1.zspr b/data/sprites/alttpr/ezlo.1.zspr new file mode 100644 index 0000000000..54596847db Binary files /dev/null and b/data/sprites/alttpr/ezlo.1.zspr differ diff --git a/data/sprites/alttpr/fierce-deity-link.1.zspr b/data/sprites/alttpr/fierce-deity-link.1.zspr new file mode 100644 index 0000000000..770b89de7a Binary files /dev/null and b/data/sprites/alttpr/fierce-deity-link.1.zspr differ diff --git a/data/sprites/alttpr/finn.3.zspr b/data/sprites/alttpr/finn.3.zspr new file mode 100644 index 0000000000..265b197cd6 Binary files /dev/null and b/data/sprites/alttpr/finn.3.zspr differ diff --git a/data/sprites/alttpr/finny_bear.1.zspr b/data/sprites/alttpr/finny_bear.1.zspr new file mode 100644 index 0000000000..9c3a530b10 Binary files /dev/null and b/data/sprites/alttpr/finny_bear.1.zspr differ diff --git a/data/sprites/alttpr/fish_floodgate.1.zspr b/data/sprites/alttpr/fish_floodgate.1.zspr new file mode 100644 index 0000000000..86684e7d8e Binary files /dev/null and b/data/sprites/alttpr/fish_floodgate.1.zspr differ diff --git a/data/sprites/alttpr/flavor_guy.1.zspr b/data/sprites/alttpr/flavor_guy.1.zspr new file mode 100644 index 0000000000..5e1df365b3 Binary files /dev/null and b/data/sprites/alttpr/flavor_guy.1.zspr differ diff --git a/data/sprites/alttpr/foxlink.1.zspr b/data/sprites/alttpr/foxlink.1.zspr new file mode 100644 index 0000000000..d6eaf4337f Binary files /dev/null and b/data/sprites/alttpr/foxlink.1.zspr differ diff --git a/data/sprites/alttpr/freya.1.zspr b/data/sprites/alttpr/freya.1.zspr new file mode 100644 index 0000000000..b43338d577 Binary files /dev/null and b/data/sprites/alttpr/freya.1.zspr differ diff --git a/data/sprites/alttpr/frisk.1.zspr b/data/sprites/alttpr/frisk.1.zspr new file mode 100644 index 0000000000..d521cae391 Binary files /dev/null and b/data/sprites/alttpr/frisk.1.zspr differ diff --git a/data/sprites/alttpr/froglink.3.zspr b/data/sprites/alttpr/froglink.3.zspr new file mode 100644 index 0000000000..f5c46d8294 Binary files /dev/null and b/data/sprites/alttpr/froglink.3.zspr differ diff --git a/data/sprites/alttpr/fujin.2.zspr b/data/sprites/alttpr/fujin.2.zspr new file mode 100644 index 0000000000..9254ff7b1e Binary files /dev/null and b/data/sprites/alttpr/fujin.2.zspr differ diff --git a/data/sprites/alttpr/future_trunks.1.zspr b/data/sprites/alttpr/future_trunks.1.zspr new file mode 100644 index 0000000000..456e64c786 Binary files /dev/null and b/data/sprites/alttpr/future_trunks.1.zspr differ diff --git a/data/sprites/alttpr/gamer.1.zspr b/data/sprites/alttpr/gamer.1.zspr new file mode 100644 index 0000000000..9f78d894f7 Binary files /dev/null and b/data/sprites/alttpr/gamer.1.zspr differ diff --git a/data/sprites/alttpr/ganon.1.zspr b/data/sprites/alttpr/ganon.1.zspr new file mode 100644 index 0000000000..a6adda4332 Binary files /dev/null and b/data/sprites/alttpr/ganon.1.zspr differ diff --git a/data/sprites/alttpr/ganondorf.1.zspr b/data/sprites/alttpr/ganondorf.1.zspr new file mode 100644 index 0000000000..5bb6f54833 Binary files /dev/null and b/data/sprites/alttpr/ganondorf.1.zspr differ diff --git a/data/sprites/alttpr/garfield.2.zspr b/data/sprites/alttpr/garfield.2.zspr new file mode 100644 index 0000000000..6ca890e850 Binary files /dev/null and b/data/sprites/alttpr/garfield.2.zspr differ diff --git a/data/sprites/alttpr/garnet.1.zspr b/data/sprites/alttpr/garnet.1.zspr new file mode 100644 index 0000000000..858497c76f Binary files /dev/null and b/data/sprites/alttpr/garnet.1.zspr differ diff --git a/data/sprites/alttpr/garomaster.1.zspr b/data/sprites/alttpr/garomaster.1.zspr new file mode 100644 index 0000000000..65b9959d47 Binary files /dev/null and b/data/sprites/alttpr/garomaster.1.zspr differ diff --git a/data/sprites/alttpr/gbc-link.1.zspr b/data/sprites/alttpr/gbc-link.1.zspr new file mode 100644 index 0000000000..e98a6d08de Binary files /dev/null and b/data/sprites/alttpr/gbc-link.1.zspr differ diff --git a/data/sprites/alttpr/geno.1.zspr b/data/sprites/alttpr/geno.1.zspr new file mode 100644 index 0000000000..3d747a2ae7 Binary files /dev/null and b/data/sprites/alttpr/geno.1.zspr differ diff --git a/data/sprites/alttpr/gobli.1.zspr b/data/sprites/alttpr/gobli.1.zspr new file mode 100644 index 0000000000..51dd119269 Binary files /dev/null and b/data/sprites/alttpr/gobli.1.zspr differ diff --git a/data/sprites/alttpr/goomba.1.zspr b/data/sprites/alttpr/goomba.1.zspr new file mode 100644 index 0000000000..0438682fe0 Binary files /dev/null and b/data/sprites/alttpr/goomba.1.zspr differ diff --git a/data/sprites/alttpr/goose.1.zspr b/data/sprites/alttpr/goose.1.zspr new file mode 100644 index 0000000000..d2ffb5ba65 Binary files /dev/null and b/data/sprites/alttpr/goose.1.zspr differ diff --git a/data/sprites/alttpr/grandpoobear.2.zspr b/data/sprites/alttpr/grandpoobear.2.zspr new file mode 100644 index 0000000000..7266368034 Binary files /dev/null and b/data/sprites/alttpr/grandpoobear.2.zspr differ diff --git a/data/sprites/alttpr/grunclestan.1.zspr b/data/sprites/alttpr/grunclestan.1.zspr new file mode 100644 index 0000000000..cf371839f5 Binary files /dev/null and b/data/sprites/alttpr/grunclestan.1.zspr differ diff --git a/data/sprites/alttpr/guiz.1.zspr b/data/sprites/alttpr/guiz.1.zspr new file mode 100644 index 0000000000..995c08ade7 Binary files /dev/null and b/data/sprites/alttpr/guiz.1.zspr differ diff --git a/data/sprites/alttpr/hardhat_beetle.1.zspr b/data/sprites/alttpr/hardhat_beetle.1.zspr new file mode 100644 index 0000000000..80b63af16f Binary files /dev/null and b/data/sprites/alttpr/hardhat_beetle.1.zspr differ diff --git a/data/sprites/alttpr/hat-kid.1.zspr b/data/sprites/alttpr/hat-kid.1.zspr new file mode 100644 index 0000000000..d03410602c Binary files /dev/null and b/data/sprites/alttpr/hat-kid.1.zspr differ diff --git a/data/sprites/alttpr/headlesslink.1.zspr b/data/sprites/alttpr/headlesslink.1.zspr new file mode 100644 index 0000000000..8a9b3ce426 Binary files /dev/null and b/data/sprites/alttpr/headlesslink.1.zspr differ diff --git a/data/sprites/alttpr/hello_kitty.1.zspr b/data/sprites/alttpr/hello_kitty.1.zspr new file mode 100644 index 0000000000..a2f5df063a Binary files /dev/null and b/data/sprites/alttpr/hello_kitty.1.zspr differ diff --git a/data/sprites/alttpr/hidari.1.zspr b/data/sprites/alttpr/hidari.1.zspr new file mode 100644 index 0000000000..54a4d0dace Binary files /dev/null and b/data/sprites/alttpr/hidari.1.zspr differ diff --git a/data/sprites/alttpr/hint_tile.1.zspr b/data/sprites/alttpr/hint_tile.1.zspr new file mode 100644 index 0000000000..9cfd7e90ce Binary files /dev/null and b/data/sprites/alttpr/hint_tile.1.zspr differ diff --git a/data/sprites/alttpr/hitsuyan.1.zspr b/data/sprites/alttpr/hitsuyan.1.zspr new file mode 100644 index 0000000000..0661577b9b Binary files /dev/null and b/data/sprites/alttpr/hitsuyan.1.zspr differ diff --git a/data/sprites/alttpr/hoarder-bush.1.zspr b/data/sprites/alttpr/hoarder-bush.1.zspr new file mode 100644 index 0000000000..d2adb22751 Binary files /dev/null and b/data/sprites/alttpr/hoarder-bush.1.zspr differ diff --git a/data/sprites/alttpr/hoarder-pot.1.zspr b/data/sprites/alttpr/hoarder-pot.1.zspr new file mode 100644 index 0000000000..717e419991 Binary files /dev/null and b/data/sprites/alttpr/hoarder-pot.1.zspr differ diff --git a/data/sprites/alttpr/hoarder-rock.1.zspr b/data/sprites/alttpr/hoarder-rock.1.zspr new file mode 100644 index 0000000000..a93fd1c458 Binary files /dev/null and b/data/sprites/alttpr/hoarder-rock.1.zspr differ diff --git a/data/sprites/alttpr/homer.1.zspr b/data/sprites/alttpr/homer.1.zspr new file mode 100644 index 0000000000..ee8b5f5f51 Binary files /dev/null and b/data/sprites/alttpr/homer.1.zspr differ diff --git a/data/sprites/alttpr/hyruleknight.1.zspr b/data/sprites/alttpr/hyruleknight.1.zspr new file mode 100644 index 0000000000..a8815bc373 Binary files /dev/null and b/data/sprites/alttpr/hyruleknight.1.zspr differ diff --git a/data/sprites/alttpr/ibazly.1.zspr b/data/sprites/alttpr/ibazly.1.zspr new file mode 100644 index 0000000000..01114c9e01 Binary files /dev/null and b/data/sprites/alttpr/ibazly.1.zspr differ diff --git a/data/sprites/alttpr/ignignokt.2.zspr b/data/sprites/alttpr/ignignokt.2.zspr new file mode 100644 index 0000000000..f06d07cc61 Binary files /dev/null and b/data/sprites/alttpr/ignignokt.2.zspr differ diff --git a/data/sprites/alttpr/informant_woman.1.zspr b/data/sprites/alttpr/informant_woman.1.zspr new file mode 100644 index 0000000000..6465a0e9f3 Binary files /dev/null and b/data/sprites/alttpr/informant_woman.1.zspr differ diff --git a/data/sprites/alttpr/inkling.1.zspr b/data/sprites/alttpr/inkling.1.zspr new file mode 100644 index 0000000000..6b39e4a77b Binary files /dev/null and b/data/sprites/alttpr/inkling.1.zspr differ diff --git a/data/sprites/alttpr/invisibleman.1.zspr b/data/sprites/alttpr/invisibleman.1.zspr new file mode 100644 index 0000000000..7993c500c9 Binary files /dev/null and b/data/sprites/alttpr/invisibleman.1.zspr differ diff --git a/data/sprites/alttpr/jack-frost.1.zspr b/data/sprites/alttpr/jack-frost.1.zspr new file mode 100644 index 0000000000..12dd417a5f Binary files /dev/null and b/data/sprites/alttpr/jack-frost.1.zspr differ diff --git a/data/sprites/alttpr/jason_frudnick.1.zspr b/data/sprites/alttpr/jason_frudnick.1.zspr new file mode 100644 index 0000000000..2411759c2a Binary files /dev/null and b/data/sprites/alttpr/jason_frudnick.1.zspr differ diff --git a/data/sprites/alttpr/jasp.1.zspr b/data/sprites/alttpr/jasp.1.zspr new file mode 100644 index 0000000000..6dc7449618 Binary files /dev/null and b/data/sprites/alttpr/jasp.1.zspr differ diff --git a/data/sprites/alttpr/jogurt.1.zspr b/data/sprites/alttpr/jogurt.1.zspr new file mode 100644 index 0000000000..b229060c69 Binary files /dev/null and b/data/sprites/alttpr/jogurt.1.zspr differ diff --git a/data/sprites/alttpr/katsura.1.zspr b/data/sprites/alttpr/katsura.1.zspr new file mode 100644 index 0000000000..422a0fafae Binary files /dev/null and b/data/sprites/alttpr/katsura.1.zspr differ diff --git a/data/sprites/alttpr/kecleon.1.zspr b/data/sprites/alttpr/kecleon.1.zspr new file mode 100644 index 0000000000..5e1786ba55 Binary files /dev/null and b/data/sprites/alttpr/kecleon.1.zspr differ diff --git a/data/sprites/alttpr/kenny_mccormick.1.zspr b/data/sprites/alttpr/kenny_mccormick.1.zspr new file mode 100644 index 0000000000..c66a74a586 Binary files /dev/null and b/data/sprites/alttpr/kenny_mccormick.1.zspr differ diff --git a/data/sprites/alttpr/ketchup.1.zspr b/data/sprites/alttpr/ketchup.1.zspr new file mode 100644 index 0000000000..9dbb326c9e Binary files /dev/null and b/data/sprites/alttpr/ketchup.1.zspr differ diff --git a/data/sprites/alttpr/kholdstare.1.zspr b/data/sprites/alttpr/kholdstare.1.zspr new file mode 100644 index 0000000000..393a491d25 Binary files /dev/null and b/data/sprites/alttpr/kholdstare.1.zspr differ diff --git a/data/sprites/alttpr/king_gothalion.1.zspr b/data/sprites/alttpr/king_gothalion.1.zspr new file mode 100644 index 0000000000..65c73f04d4 Binary files /dev/null and b/data/sprites/alttpr/king_gothalion.1.zspr differ diff --git a/data/sprites/alttpr/king_graham.1.zspr b/data/sprites/alttpr/king_graham.1.zspr new file mode 100644 index 0000000000..28b75cf1a9 Binary files /dev/null and b/data/sprites/alttpr/king_graham.1.zspr differ diff --git a/data/sprites/alttpr/kirby-meta.1.zspr b/data/sprites/alttpr/kirby-meta.1.zspr new file mode 100644 index 0000000000..9cb132b358 Binary files /dev/null and b/data/sprites/alttpr/kirby-meta.1.zspr differ diff --git a/data/sprites/alttpr/kore8.1.zspr b/data/sprites/alttpr/kore8.1.zspr new file mode 100644 index 0000000000..a1db104ac9 Binary files /dev/null and b/data/sprites/alttpr/kore8.1.zspr differ diff --git a/data/sprites/alttpr/lakitu.1.zspr b/data/sprites/alttpr/lakitu.1.zspr new file mode 100644 index 0000000000..24d0f12ee2 Binary files /dev/null and b/data/sprites/alttpr/lakitu.1.zspr differ diff --git a/data/sprites/alttpr/lapras.1.zspr b/data/sprites/alttpr/lapras.1.zspr new file mode 100644 index 0000000000..bcec01b2fe Binary files /dev/null and b/data/sprites/alttpr/lapras.1.zspr differ diff --git a/data/sprites/alttpr/lest.1.zspr b/data/sprites/alttpr/lest.1.zspr new file mode 100644 index 0000000000..9976492478 Binary files /dev/null and b/data/sprites/alttpr/lest.1.zspr differ diff --git a/data/sprites/alttpr/lily.1.zspr b/data/sprites/alttpr/lily.1.zspr new file mode 100644 index 0000000000..5cb5d2aa9a Binary files /dev/null and b/data/sprites/alttpr/lily.1.zspr differ diff --git a/data/sprites/alttpr/linja.1.zspr b/data/sprites/alttpr/linja.1.zspr new file mode 100644 index 0000000000..414efaf74f Binary files /dev/null and b/data/sprites/alttpr/linja.1.zspr differ diff --git a/data/sprites/alttpr/linkhatcolor.1.zspr b/data/sprites/alttpr/linkhatcolor.1.zspr new file mode 100644 index 0000000000..af53898dbc Binary files /dev/null and b/data/sprites/alttpr/linkhatcolor.1.zspr differ diff --git a/data/sprites/alttpr/linktuniccolor.1.zspr b/data/sprites/alttpr/linktuniccolor.1.zspr new file mode 100644 index 0000000000..305a9f8f9d Binary files /dev/null and b/data/sprites/alttpr/linktuniccolor.1.zspr differ diff --git a/data/sprites/alttpr/littlepony.1.zspr b/data/sprites/alttpr/littlepony.1.zspr new file mode 100644 index 0000000000..0ed4b1b1e8 Binary files /dev/null and b/data/sprites/alttpr/littlepony.1.zspr differ diff --git a/data/sprites/alttpr/locke_merchant.1.zspr b/data/sprites/alttpr/locke_merchant.1.zspr new file mode 100644 index 0000000000..bfd87c7da6 Binary files /dev/null and b/data/sprites/alttpr/locke_merchant.1.zspr differ diff --git a/data/sprites/alttpr/lucario.1.zspr b/data/sprites/alttpr/lucario.1.zspr new file mode 100644 index 0000000000..44ce395e48 Binary files /dev/null and b/data/sprites/alttpr/lucario.1.zspr differ diff --git a/data/sprites/alttpr/luigi.1.zspr b/data/sprites/alttpr/luigi.1.zspr new file mode 100644 index 0000000000..1a1dc55241 Binary files /dev/null and b/data/sprites/alttpr/luigi.1.zspr differ diff --git a/data/sprites/alttpr/madeline.1.zspr b/data/sprites/alttpr/madeline.1.zspr new file mode 100644 index 0000000000..8256e6a3b8 Binary files /dev/null and b/data/sprites/alttpr/madeline.1.zspr differ diff --git a/data/sprites/alttpr/magus.1.zspr b/data/sprites/alttpr/magus.1.zspr new file mode 100644 index 0000000000..171980ef38 Binary files /dev/null and b/data/sprites/alttpr/magus.1.zspr differ diff --git a/data/sprites/alttpr/maiden.1.zspr b/data/sprites/alttpr/maiden.1.zspr new file mode 100644 index 0000000000..e0297901d7 Binary files /dev/null and b/data/sprites/alttpr/maiden.1.zspr differ diff --git a/data/sprites/alttpr/mallow-cat.1.zspr b/data/sprites/alttpr/mallow-cat.1.zspr new file mode 100644 index 0000000000..395684b2bd Binary files /dev/null and b/data/sprites/alttpr/mallow-cat.1.zspr differ diff --git a/data/sprites/alttpr/mangalink.1.zspr b/data/sprites/alttpr/mangalink.1.zspr new file mode 100644 index 0000000000..adb57b9991 Binary files /dev/null and b/data/sprites/alttpr/mangalink.1.zspr differ diff --git a/data/sprites/alttpr/maplequeen.2.zspr b/data/sprites/alttpr/maplequeen.2.zspr new file mode 100644 index 0000000000..35b7deeca8 Binary files /dev/null and b/data/sprites/alttpr/maplequeen.2.zspr differ diff --git a/data/sprites/alttpr/marin.2.zspr b/data/sprites/alttpr/marin.2.zspr new file mode 100644 index 0000000000..72a06ecf8b Binary files /dev/null and b/data/sprites/alttpr/marin.2.zspr differ diff --git a/data/sprites/alttpr/mario-classic.2.zspr b/data/sprites/alttpr/mario-classic.2.zspr new file mode 100644 index 0000000000..6443e32749 Binary files /dev/null and b/data/sprites/alttpr/mario-classic.2.zspr differ diff --git a/data/sprites/alttpr/mario_tanooki.1.zspr b/data/sprites/alttpr/mario_tanooki.1.zspr new file mode 100644 index 0000000000..255350dd8c Binary files /dev/null and b/data/sprites/alttpr/mario_tanooki.1.zspr differ diff --git a/data/sprites/alttpr/mariocappy.1.zspr b/data/sprites/alttpr/mariocappy.1.zspr new file mode 100644 index 0000000000..b888396d2f Binary files /dev/null and b/data/sprites/alttpr/mariocappy.1.zspr differ diff --git a/data/sprites/alttpr/marisa.1.zspr b/data/sprites/alttpr/marisa.1.zspr new file mode 100644 index 0000000000..16b2a803f4 Binary files /dev/null and b/data/sprites/alttpr/marisa.1.zspr differ diff --git a/data/sprites/alttpr/matthias.1.zspr b/data/sprites/alttpr/matthias.1.zspr new file mode 100644 index 0000000000..062dae6d8c Binary files /dev/null and b/data/sprites/alttpr/matthias.1.zspr differ diff --git a/data/sprites/alttpr/meatwad.1.zspr b/data/sprites/alttpr/meatwad.1.zspr new file mode 100644 index 0000000000..a09a4adf2e Binary files /dev/null and b/data/sprites/alttpr/meatwad.1.zspr differ diff --git a/data/sprites/alttpr/medallions.1.zspr b/data/sprites/alttpr/medallions.1.zspr new file mode 100644 index 0000000000..dc4b04d170 Binary files /dev/null and b/data/sprites/alttpr/medallions.1.zspr differ diff --git a/data/sprites/alttpr/medli.1.zspr b/data/sprites/alttpr/medli.1.zspr new file mode 100644 index 0000000000..59284a366d Binary files /dev/null and b/data/sprites/alttpr/medli.1.zspr differ diff --git a/data/sprites/alttpr/megaman-x.2.zspr b/data/sprites/alttpr/megaman-x.2.zspr new file mode 100644 index 0000000000..ffe75595ab Binary files /dev/null and b/data/sprites/alttpr/megaman-x.2.zspr differ diff --git a/data/sprites/alttpr/metroid.1.zspr b/data/sprites/alttpr/metroid.1.zspr new file mode 100644 index 0000000000..d81187cb69 Binary files /dev/null and b/data/sprites/alttpr/metroid.1.zspr differ diff --git a/data/sprites/alttpr/mew.1.zspr b/data/sprites/alttpr/mew.1.zspr new file mode 100644 index 0000000000..a06dc8d6df Binary files /dev/null and b/data/sprites/alttpr/mew.1.zspr differ diff --git a/data/sprites/alttpr/mike-jones.2.zspr b/data/sprites/alttpr/mike-jones.2.zspr new file mode 100644 index 0000000000..550fb213d1 Binary files /dev/null and b/data/sprites/alttpr/mike-jones.2.zspr differ diff --git a/data/sprites/alttpr/minish_link.1.zspr b/data/sprites/alttpr/minish_link.1.zspr new file mode 100644 index 0000000000..4b342c1acb Binary files /dev/null and b/data/sprites/alttpr/minish_link.1.zspr differ diff --git a/data/sprites/alttpr/minishcaplink.2.zspr b/data/sprites/alttpr/minishcaplink.2.zspr new file mode 100644 index 0000000000..aaca256bdc Binary files /dev/null and b/data/sprites/alttpr/minishcaplink.2.zspr differ diff --git a/data/sprites/alttpr/missingno.1.zspr b/data/sprites/alttpr/missingno.1.zspr new file mode 100644 index 0000000000..68e61b9b02 Binary files /dev/null and b/data/sprites/alttpr/missingno.1.zspr differ diff --git a/data/sprites/alttpr/modernlink.1.zspr b/data/sprites/alttpr/modernlink.1.zspr new file mode 100644 index 0000000000..6d5e68a4a5 Binary files /dev/null and b/data/sprites/alttpr/modernlink.1.zspr differ diff --git a/data/sprites/alttpr/mog.2.zspr b/data/sprites/alttpr/mog.2.zspr new file mode 100644 index 0000000000..a6ed2225ec Binary files /dev/null and b/data/sprites/alttpr/mog.2.zspr differ diff --git a/data/sprites/alttpr/momiji.1.zspr b/data/sprites/alttpr/momiji.1.zspr new file mode 100644 index 0000000000..86a18586e3 Binary files /dev/null and b/data/sprites/alttpr/momiji.1.zspr differ diff --git a/data/sprites/alttpr/moosh.1.zspr b/data/sprites/alttpr/moosh.1.zspr new file mode 100644 index 0000000000..0a1e167ae2 Binary files /dev/null and b/data/sprites/alttpr/moosh.1.zspr differ diff --git a/data/sprites/alttpr/mouse.1.zspr b/data/sprites/alttpr/mouse.1.zspr new file mode 100644 index 0000000000..16ba884d92 Binary files /dev/null and b/data/sprites/alttpr/mouse.1.zspr differ diff --git a/data/sprites/alttpr/ms-paintdog.1.zspr b/data/sprites/alttpr/ms-paintdog.1.zspr new file mode 100644 index 0000000000..75f5f54127 Binary files /dev/null and b/data/sprites/alttpr/ms-paintdog.1.zspr differ diff --git a/data/sprites/alttpr/mushy.1.zspr b/data/sprites/alttpr/mushy.1.zspr new file mode 100644 index 0000000000..a6c924a50f Binary files /dev/null and b/data/sprites/alttpr/mushy.1.zspr differ diff --git a/data/sprites/alttpr/naturelink.1.zspr b/data/sprites/alttpr/naturelink.1.zspr new file mode 100644 index 0000000000..bdfd0efb95 Binary files /dev/null and b/data/sprites/alttpr/naturelink.1.zspr differ diff --git a/data/sprites/alttpr/navi.1.zspr b/data/sprites/alttpr/navi.1.zspr new file mode 100644 index 0000000000..4621bf4a04 Binary files /dev/null and b/data/sprites/alttpr/navi.1.zspr differ diff --git a/data/sprites/alttpr/navirou.1.zspr b/data/sprites/alttpr/navirou.1.zspr new file mode 100644 index 0000000000..9da7e76ed2 Binary files /dev/null and b/data/sprites/alttpr/navirou.1.zspr differ diff --git a/data/sprites/alttpr/ned-flanders.1.zspr b/data/sprites/alttpr/ned-flanders.1.zspr new file mode 100644 index 0000000000..78ed5bc40c Binary files /dev/null and b/data/sprites/alttpr/ned-flanders.1.zspr differ diff --git a/data/sprites/alttpr/negativelink.1.zspr b/data/sprites/alttpr/negativelink.1.zspr new file mode 100644 index 0000000000..a3dd15668b Binary files /dev/null and b/data/sprites/alttpr/negativelink.1.zspr differ diff --git a/data/sprites/alttpr/neosad.1.zspr b/data/sprites/alttpr/neosad.1.zspr new file mode 100644 index 0000000000..7e95d7f72c Binary files /dev/null and b/data/sprites/alttpr/neosad.1.zspr differ diff --git a/data/sprites/alttpr/neslink.1.zspr b/data/sprites/alttpr/neslink.1.zspr new file mode 100644 index 0000000000..805b316263 Binary files /dev/null and b/data/sprites/alttpr/neslink.1.zspr differ diff --git a/data/sprites/alttpr/ness.1.zspr b/data/sprites/alttpr/ness.1.zspr new file mode 100644 index 0000000000..b8b3de81e2 Binary files /dev/null and b/data/sprites/alttpr/ness.1.zspr differ diff --git a/data/sprites/alttpr/nia.1.zspr b/data/sprites/alttpr/nia.1.zspr new file mode 100644 index 0000000000..5d01ba4bd8 Binary files /dev/null and b/data/sprites/alttpr/nia.1.zspr differ diff --git a/data/sprites/alttpr/niko.1.zspr b/data/sprites/alttpr/niko.1.zspr new file mode 100644 index 0000000000..5d39e6bbaa Binary files /dev/null and b/data/sprites/alttpr/niko.1.zspr differ diff --git a/data/sprites/alttpr/oldman.2.zspr b/data/sprites/alttpr/oldman.2.zspr new file mode 100644 index 0000000000..1d47cdacc9 Binary files /dev/null and b/data/sprites/alttpr/oldman.2.zspr differ diff --git a/data/sprites/alttpr/ori.2.zspr b/data/sprites/alttpr/ori.2.zspr new file mode 100644 index 0000000000..10c1e462c6 Binary files /dev/null and b/data/sprites/alttpr/ori.2.zspr differ diff --git a/data/sprites/alttpr/outlinelink.1.zspr b/data/sprites/alttpr/outlinelink.1.zspr new file mode 100644 index 0000000000..50ae98bca3 Binary files /dev/null and b/data/sprites/alttpr/outlinelink.1.zspr differ diff --git a/data/sprites/alttpr/parallelworldslink.1.zspr b/data/sprites/alttpr/parallelworldslink.1.zspr new file mode 100644 index 0000000000..71a9bdc1d4 Binary files /dev/null and b/data/sprites/alttpr/parallelworldslink.1.zspr differ diff --git a/data/sprites/alttpr/paula.1.zspr b/data/sprites/alttpr/paula.1.zspr new file mode 100644 index 0000000000..657752ea29 Binary files /dev/null and b/data/sprites/alttpr/paula.1.zspr differ diff --git a/data/sprites/alttpr/peach.1.zspr b/data/sprites/alttpr/peach.1.zspr new file mode 100644 index 0000000000..7973f95299 Binary files /dev/null and b/data/sprites/alttpr/peach.1.zspr differ diff --git a/data/sprites/alttpr/penguinlink.1.zspr b/data/sprites/alttpr/penguinlink.1.zspr new file mode 100644 index 0000000000..2fe01e49ff Binary files /dev/null and b/data/sprites/alttpr/penguinlink.1.zspr differ diff --git a/data/sprites/alttpr/pete.1.zspr b/data/sprites/alttpr/pete.1.zspr new file mode 100644 index 0000000000..a3135615bb Binary files /dev/null and b/data/sprites/alttpr/pete.1.zspr differ diff --git a/data/sprites/alttpr/phoenix-wright.1.zspr b/data/sprites/alttpr/phoenix-wright.1.zspr new file mode 100644 index 0000000000..d7cb0be2ee Binary files /dev/null and b/data/sprites/alttpr/phoenix-wright.1.zspr differ diff --git a/data/sprites/alttpr/pikachu.1.zspr b/data/sprites/alttpr/pikachu.1.zspr new file mode 100644 index 0000000000..0b8a88c48b Binary files /dev/null and b/data/sprites/alttpr/pikachu.1.zspr differ diff --git a/data/sprites/alttpr/pinkribbonlink.2.zspr b/data/sprites/alttpr/pinkribbonlink.2.zspr new file mode 100644 index 0000000000..ba516f1854 Binary files /dev/null and b/data/sprites/alttpr/pinkribbonlink.2.zspr differ diff --git a/data/sprites/alttpr/piranha_plant.1.zspr b/data/sprites/alttpr/piranha_plant.1.zspr new file mode 100644 index 0000000000..59bf4d0d48 Binary files /dev/null and b/data/sprites/alttpr/piranha_plant.1.zspr differ diff --git a/data/sprites/alttpr/plagueknight.1.zspr b/data/sprites/alttpr/plagueknight.1.zspr new file mode 100644 index 0000000000..258bed7b80 Binary files /dev/null and b/data/sprites/alttpr/plagueknight.1.zspr differ diff --git a/data/sprites/alttpr/pokey.1.zspr b/data/sprites/alttpr/pokey.1.zspr new file mode 100644 index 0000000000..4de17faf53 Binary files /dev/null and b/data/sprites/alttpr/pokey.1.zspr differ diff --git a/data/sprites/alttpr/popoi.1.zspr b/data/sprites/alttpr/popoi.1.zspr new file mode 100644 index 0000000000..663d4dc147 Binary files /dev/null and b/data/sprites/alttpr/popoi.1.zspr differ diff --git a/data/sprites/alttpr/poppy.1.zspr b/data/sprites/alttpr/poppy.1.zspr new file mode 100644 index 0000000000..80d4ca69ef Binary files /dev/null and b/data/sprites/alttpr/poppy.1.zspr differ diff --git a/data/sprites/alttpr/porg_knight.1.zspr b/data/sprites/alttpr/porg_knight.1.zspr new file mode 100644 index 0000000000..4d6f96351a Binary files /dev/null and b/data/sprites/alttpr/porg_knight.1.zspr differ diff --git a/data/sprites/alttpr/powerpuff_girl.1.zspr b/data/sprites/alttpr/powerpuff_girl.1.zspr new file mode 100644 index 0000000000..fbf3c69467 Binary files /dev/null and b/data/sprites/alttpr/powerpuff_girl.1.zspr differ diff --git a/data/sprites/alttpr/pridelink.2.zspr b/data/sprites/alttpr/pridelink.2.zspr new file mode 100644 index 0000000000..662310133a Binary files /dev/null and b/data/sprites/alttpr/pridelink.2.zspr differ diff --git a/data/sprites/alttpr/primm.1.zspr b/data/sprites/alttpr/primm.1.zspr new file mode 100644 index 0000000000..e9ff2d0566 Binary files /dev/null and b/data/sprites/alttpr/primm.1.zspr differ diff --git a/data/sprites/alttpr/princess_bubblegum.1.zspr b/data/sprites/alttpr/princess_bubblegum.1.zspr new file mode 100644 index 0000000000..c46dcc0fa2 Binary files /dev/null and b/data/sprites/alttpr/princess_bubblegum.1.zspr differ diff --git a/data/sprites/alttpr/psyduck.2.zspr b/data/sprites/alttpr/psyduck.2.zspr new file mode 100644 index 0000000000..c9e17117d4 Binary files /dev/null and b/data/sprites/alttpr/psyduck.2.zspr differ diff --git a/data/sprites/alttpr/pug.1.zspr b/data/sprites/alttpr/pug.1.zspr new file mode 100644 index 0000000000..60692711d1 Binary files /dev/null and b/data/sprites/alttpr/pug.1.zspr differ diff --git a/data/sprites/alttpr/purplechest-bottle.1.zspr b/data/sprites/alttpr/purplechest-bottle.1.zspr new file mode 100644 index 0000000000..8daed4d68f Binary files /dev/null and b/data/sprites/alttpr/purplechest-bottle.1.zspr differ diff --git a/data/sprites/alttpr/pyro.1.zspr b/data/sprites/alttpr/pyro.1.zspr new file mode 100644 index 0000000000..9037c8e452 Binary files /dev/null and b/data/sprites/alttpr/pyro.1.zspr differ diff --git a/data/sprites/alttpr/rainbowlink.1.zspr b/data/sprites/alttpr/rainbowlink.1.zspr new file mode 100644 index 0000000000..bc8443f9d7 Binary files /dev/null and b/data/sprites/alttpr/rainbowlink.1.zspr differ diff --git a/data/sprites/alttpr/remeer.1.zspr b/data/sprites/alttpr/remeer.1.zspr new file mode 100644 index 0000000000..8d7f245aa9 Binary files /dev/null and b/data/sprites/alttpr/remeer.1.zspr differ diff --git a/data/sprites/alttpr/rick.1.zspr b/data/sprites/alttpr/rick.1.zspr new file mode 100644 index 0000000000..93a163f669 Binary files /dev/null and b/data/sprites/alttpr/rick.1.zspr differ diff --git a/data/sprites/alttpr/robotlink.1.zspr b/data/sprites/alttpr/robotlink.1.zspr new file mode 100644 index 0000000000..8a1eed43f6 Binary files /dev/null and b/data/sprites/alttpr/robotlink.1.zspr differ diff --git a/data/sprites/alttpr/rocko.1.zspr b/data/sprites/alttpr/rocko.1.zspr new file mode 100644 index 0000000000..ab34f63576 Binary files /dev/null and b/data/sprites/alttpr/rocko.1.zspr differ diff --git a/data/sprites/alttpr/rottytops.1.zspr b/data/sprites/alttpr/rottytops.1.zspr new file mode 100644 index 0000000000..d4007ffbd5 Binary files /dev/null and b/data/sprites/alttpr/rottytops.1.zspr differ diff --git a/data/sprites/alttpr/roykoopa.1.zspr b/data/sprites/alttpr/roykoopa.1.zspr new file mode 100644 index 0000000000..e1f9699ff1 Binary files /dev/null and b/data/sprites/alttpr/roykoopa.1.zspr differ diff --git a/data/sprites/alttpr/rumia.1.zspr b/data/sprites/alttpr/rumia.1.zspr new file mode 100644 index 0000000000..dc037ae201 Binary files /dev/null and b/data/sprites/alttpr/rumia.1.zspr differ diff --git a/data/sprites/alttpr/rydia.1.zspr b/data/sprites/alttpr/rydia.1.zspr new file mode 100644 index 0000000000..ff98ab5617 Binary files /dev/null and b/data/sprites/alttpr/rydia.1.zspr differ diff --git a/data/sprites/alttpr/ryu.1.zspr b/data/sprites/alttpr/ryu.1.zspr new file mode 100644 index 0000000000..5c6d541156 Binary files /dev/null and b/data/sprites/alttpr/ryu.1.zspr differ diff --git a/data/sprites/alttpr/sailormoon.1.zspr b/data/sprites/alttpr/sailormoon.1.zspr new file mode 100644 index 0000000000..1120d3f42b Binary files /dev/null and b/data/sprites/alttpr/sailormoon.1.zspr differ diff --git a/data/sprites/alttpr/saitama.1.zspr b/data/sprites/alttpr/saitama.1.zspr new file mode 100644 index 0000000000..acd9170d09 Binary files /dev/null and b/data/sprites/alttpr/saitama.1.zspr differ diff --git a/data/sprites/alttpr/samus-sm.1.zspr b/data/sprites/alttpr/samus-sm.1.zspr new file mode 100644 index 0000000000..c8fde01b21 Binary files /dev/null and b/data/sprites/alttpr/samus-sm.1.zspr differ diff --git a/data/sprites/alttpr/samus.2.zspr b/data/sprites/alttpr/samus.2.zspr new file mode 100644 index 0000000000..81b0912fa9 Binary files /dev/null and b/data/sprites/alttpr/samus.2.zspr differ diff --git a/data/sprites/alttpr/samus_classic.1.zspr b/data/sprites/alttpr/samus_classic.1.zspr new file mode 100644 index 0000000000..6559e25ce6 Binary files /dev/null and b/data/sprites/alttpr/samus_classic.1.zspr differ diff --git a/data/sprites/alttpr/santalink.2.zspr b/data/sprites/alttpr/santalink.2.zspr new file mode 100644 index 0000000000..0e78fedb34 Binary files /dev/null and b/data/sprites/alttpr/santalink.2.zspr differ diff --git a/data/sprites/alttpr/scholar.1.zspr b/data/sprites/alttpr/scholar.1.zspr new file mode 100644 index 0000000000..bf697f16f4 Binary files /dev/null and b/data/sprites/alttpr/scholar.1.zspr differ diff --git a/data/sprites/alttpr/selan.1.zspr b/data/sprites/alttpr/selan.1.zspr new file mode 100644 index 0000000000..eb3b0318d3 Binary files /dev/null and b/data/sprites/alttpr/selan.1.zspr differ diff --git a/data/sprites/alttpr/sevens1ns.1.zspr b/data/sprites/alttpr/sevens1ns.1.zspr new file mode 100644 index 0000000000..d59a1b529f Binary files /dev/null and b/data/sprites/alttpr/sevens1ns.1.zspr differ diff --git a/data/sprites/alttpr/shadow.1.zspr b/data/sprites/alttpr/shadow.1.zspr new file mode 100644 index 0000000000..fcd0d49b60 Binary files /dev/null and b/data/sprites/alttpr/shadow.1.zspr differ diff --git a/data/sprites/alttpr/shadowsaku.2.zspr b/data/sprites/alttpr/shadowsaku.2.zspr new file mode 100644 index 0000000000..8972f9f266 Binary files /dev/null and b/data/sprites/alttpr/shadowsaku.2.zspr differ diff --git a/data/sprites/alttpr/shantae.1.zspr b/data/sprites/alttpr/shantae.1.zspr new file mode 100644 index 0000000000..03a1c7b9a7 Binary files /dev/null and b/data/sprites/alttpr/shantae.1.zspr differ diff --git a/data/sprites/alttpr/shuppet.1.zspr b/data/sprites/alttpr/shuppet.1.zspr new file mode 100644 index 0000000000..55a51ae994 Binary files /dev/null and b/data/sprites/alttpr/shuppet.1.zspr differ diff --git a/data/sprites/alttpr/shy-gal.1.zspr b/data/sprites/alttpr/shy-gal.1.zspr new file mode 100644 index 0000000000..b86b27bc19 Binary files /dev/null and b/data/sprites/alttpr/shy-gal.1.zspr differ diff --git a/data/sprites/alttpr/shy-guy.1.zspr b/data/sprites/alttpr/shy-guy.1.zspr new file mode 100644 index 0000000000..43ee0fe47c Binary files /dev/null and b/data/sprites/alttpr/shy-guy.1.zspr differ diff --git a/data/sprites/alttpr/sighn_waive.1.zspr b/data/sprites/alttpr/sighn_waive.1.zspr new file mode 100644 index 0000000000..d961dc4d56 Binary files /dev/null and b/data/sprites/alttpr/sighn_waive.1.zspr differ diff --git a/data/sprites/alttpr/snes-controller.1.zspr b/data/sprites/alttpr/snes-controller.1.zspr new file mode 100644 index 0000000000..5dd70f3943 Binary files /dev/null and b/data/sprites/alttpr/snes-controller.1.zspr differ diff --git a/data/sprites/alttpr/sodacan.1.zspr b/data/sprites/alttpr/sodacan.1.zspr new file mode 100644 index 0000000000..93e6fb1ec2 Binary files /dev/null and b/data/sprites/alttpr/sodacan.1.zspr differ diff --git a/data/sprites/alttpr/solaire.1.zspr b/data/sprites/alttpr/solaire.1.zspr new file mode 100644 index 0000000000..e216a7d922 Binary files /dev/null and b/data/sprites/alttpr/solaire.1.zspr differ diff --git a/data/sprites/alttpr/soldiersprite.1.zspr b/data/sprites/alttpr/soldiersprite.1.zspr new file mode 100644 index 0000000000..d5e8ee356d Binary files /dev/null and b/data/sprites/alttpr/soldiersprite.1.zspr differ diff --git a/data/sprites/alttpr/sonic.1.zspr b/data/sprites/alttpr/sonic.1.zspr new file mode 100644 index 0000000000..557242192c Binary files /dev/null and b/data/sprites/alttpr/sonic.1.zspr differ diff --git a/data/sprites/alttpr/sora.1.zspr b/data/sprites/alttpr/sora.1.zspr new file mode 100644 index 0000000000..c8d656fd06 Binary files /dev/null and b/data/sprites/alttpr/sora.1.zspr differ diff --git a/data/sprites/alttpr/sora_kh1.1.zspr b/data/sprites/alttpr/sora_kh1.1.zspr new file mode 100644 index 0000000000..e77c922d20 Binary files /dev/null and b/data/sprites/alttpr/sora_kh1.1.zspr differ diff --git a/data/sprites/alttpr/squall.1.zspr b/data/sprites/alttpr/squall.1.zspr new file mode 100644 index 0000000000..b9cd9556b6 Binary files /dev/null and b/data/sprites/alttpr/squall.1.zspr differ diff --git a/data/sprites/alttpr/squirrel.1.zspr b/data/sprites/alttpr/squirrel.1.zspr new file mode 100644 index 0000000000..64e399a127 Binary files /dev/null and b/data/sprites/alttpr/squirrel.1.zspr differ diff --git a/data/sprites/alttpr/squirtle.1.zspr b/data/sprites/alttpr/squirtle.1.zspr new file mode 100644 index 0000000000..274bf1c760 Binary files /dev/null and b/data/sprites/alttpr/squirtle.1.zspr differ diff --git a/data/sprites/alttpr/stalfos.1.zspr b/data/sprites/alttpr/stalfos.1.zspr new file mode 100644 index 0000000000..d4787a3b03 Binary files /dev/null and b/data/sprites/alttpr/stalfos.1.zspr differ diff --git a/data/sprites/alttpr/stan.1.zspr b/data/sprites/alttpr/stan.1.zspr new file mode 100644 index 0000000000..5fd3eb1183 Binary files /dev/null and b/data/sprites/alttpr/stan.1.zspr differ diff --git a/data/sprites/alttpr/staticlink.1.zspr b/data/sprites/alttpr/staticlink.1.zspr new file mode 100644 index 0000000000..d0f1bc0686 Binary files /dev/null and b/data/sprites/alttpr/staticlink.1.zspr differ diff --git a/data/sprites/alttpr/stick_man.1.zspr b/data/sprites/alttpr/stick_man.1.zspr new file mode 100644 index 0000000000..b891586f4b Binary files /dev/null and b/data/sprites/alttpr/stick_man.1.zspr differ diff --git a/data/sprites/alttpr/superbomb.1.zspr b/data/sprites/alttpr/superbomb.1.zspr new file mode 100644 index 0000000000..1ed38ae3ec Binary files /dev/null and b/data/sprites/alttpr/superbomb.1.zspr differ diff --git a/data/sprites/alttpr/superbunny.2.zspr b/data/sprites/alttpr/superbunny.2.zspr new file mode 100644 index 0000000000..b842d1c35f Binary files /dev/null and b/data/sprites/alttpr/superbunny.2.zspr differ diff --git a/data/sprites/alttpr/supermeatboy.1.zspr b/data/sprites/alttpr/supermeatboy.1.zspr new file mode 100644 index 0000000000..ad4368bb5f Binary files /dev/null and b/data/sprites/alttpr/supermeatboy.1.zspr differ diff --git a/data/sprites/alttpr/swatchy.1.zspr b/data/sprites/alttpr/swatchy.1.zspr new file mode 100644 index 0000000000..46795e9b6b Binary files /dev/null and b/data/sprites/alttpr/swatchy.1.zspr differ diff --git a/data/sprites/alttpr/tasbot.1.zspr b/data/sprites/alttpr/tasbot.1.zspr new file mode 100644 index 0000000000..b7278587ed Binary files /dev/null and b/data/sprites/alttpr/tasbot.1.zspr differ diff --git a/data/sprites/alttpr/teatime.1.zspr b/data/sprites/alttpr/teatime.1.zspr new file mode 100644 index 0000000000..8953bc79b8 Binary files /dev/null and b/data/sprites/alttpr/teatime.1.zspr differ diff --git a/data/sprites/alttpr/terra.1.zspr b/data/sprites/alttpr/terra.1.zspr new file mode 100644 index 0000000000..e24ca87aad Binary files /dev/null and b/data/sprites/alttpr/terra.1.zspr differ diff --git a/data/sprites/alttpr/tetra.1.zspr b/data/sprites/alttpr/tetra.1.zspr new file mode 100644 index 0000000000..77525f08a9 Binary files /dev/null and b/data/sprites/alttpr/tetra.1.zspr differ diff --git a/data/sprites/alttpr/tgh.1.zspr b/data/sprites/alttpr/tgh.1.zspr new file mode 100644 index 0000000000..929b87051f Binary files /dev/null and b/data/sprites/alttpr/tgh.1.zspr differ diff --git a/data/sprites/alttpr/thief.1.zspr b/data/sprites/alttpr/thief.1.zspr new file mode 100644 index 0000000000..b6b0ffefc1 Binary files /dev/null and b/data/sprites/alttpr/thief.1.zspr differ diff --git a/data/sprites/alttpr/thomcrow.1.zspr b/data/sprites/alttpr/thomcrow.1.zspr new file mode 100644 index 0000000000..81bba95df1 Binary files /dev/null and b/data/sprites/alttpr/thomcrow.1.zspr differ diff --git a/data/sprites/alttpr/tile.2.zspr b/data/sprites/alttpr/tile.2.zspr new file mode 100644 index 0000000000..38332bb06f Binary files /dev/null and b/data/sprites/alttpr/tile.2.zspr differ diff --git a/data/sprites/alttpr/tingle.1.zspr b/data/sprites/alttpr/tingle.1.zspr new file mode 100644 index 0000000000..9a53f8d21e Binary files /dev/null and b/data/sprites/alttpr/tingle.1.zspr differ diff --git a/data/sprites/alttpr/tmnt.1.zspr b/data/sprites/alttpr/tmnt.1.zspr new file mode 100644 index 0000000000..8f01c1db46 Binary files /dev/null and b/data/sprites/alttpr/tmnt.1.zspr differ diff --git a/data/sprites/alttpr/toad.2.zspr b/data/sprites/alttpr/toad.2.zspr new file mode 100644 index 0000000000..6abca2d71e Binary files /dev/null and b/data/sprites/alttpr/toad.2.zspr differ diff --git a/data/sprites/alttpr/toadette.2.zspr b/data/sprites/alttpr/toadette.2.zspr new file mode 100644 index 0000000000..8c6498b2d7 Binary files /dev/null and b/data/sprites/alttpr/toadette.2.zspr differ diff --git a/data/sprites/alttpr/toadette_captain.1.zspr b/data/sprites/alttpr/toadette_captain.1.zspr new file mode 100644 index 0000000000..e69f74a71c Binary files /dev/null and b/data/sprites/alttpr/toadette_captain.1.zspr differ diff --git a/data/sprites/alttpr/totem-links.1.zspr b/data/sprites/alttpr/totem-links.1.zspr new file mode 100644 index 0000000000..e4ac6abcc5 Binary files /dev/null and b/data/sprites/alttpr/totem-links.1.zspr differ diff --git a/data/sprites/alttpr/trogdor.1.zspr b/data/sprites/alttpr/trogdor.1.zspr new file mode 100644 index 0000000000..b37191acc3 Binary files /dev/null and b/data/sprites/alttpr/trogdor.1.zspr differ diff --git a/data/sprites/alttpr/twilightprincesszelda.2.zspr b/data/sprites/alttpr/twilightprincesszelda.2.zspr new file mode 100644 index 0000000000..2487f44a5d Binary files /dev/null and b/data/sprites/alttpr/twilightprincesszelda.2.zspr differ diff --git a/data/sprites/alttpr/two_faced.1.zspr b/data/sprites/alttpr/two_faced.1.zspr new file mode 100644 index 0000000000..d504c321ad Binary files /dev/null and b/data/sprites/alttpr/two_faced.1.zspr differ diff --git a/data/sprites/alttpr/ty.1.zspr b/data/sprites/alttpr/ty.1.zspr new file mode 100644 index 0000000000..1091b298d3 Binary files /dev/null and b/data/sprites/alttpr/ty.1.zspr differ diff --git a/data/sprites/alttpr/ultros.1.zspr b/data/sprites/alttpr/ultros.1.zspr new file mode 100644 index 0000000000..bd312843f7 Binary files /dev/null and b/data/sprites/alttpr/ultros.1.zspr differ diff --git a/data/sprites/alttpr/valeera.1.zspr b/data/sprites/alttpr/valeera.1.zspr new file mode 100644 index 0000000000..090a6631e2 Binary files /dev/null and b/data/sprites/alttpr/valeera.1.zspr differ diff --git a/data/sprites/alttpr/vanillalink.1.zspr b/data/sprites/alttpr/vanillalink.1.zspr new file mode 100644 index 0000000000..409171fab1 Binary files /dev/null and b/data/sprites/alttpr/vanillalink.1.zspr differ diff --git a/data/sprites/alttpr/vaporeon.1.zspr b/data/sprites/alttpr/vaporeon.1.zspr new file mode 100644 index 0000000000..5537272271 Binary files /dev/null and b/data/sprites/alttpr/vaporeon.1.zspr differ diff --git a/data/sprites/alttpr/vegeta.1.zspr b/data/sprites/alttpr/vegeta.1.zspr new file mode 100644 index 0000000000..b4f4601935 Binary files /dev/null and b/data/sprites/alttpr/vegeta.1.zspr differ diff --git a/data/sprites/alttpr/vera.1.zspr b/data/sprites/alttpr/vera.1.zspr new file mode 100644 index 0000000000..b891436506 Binary files /dev/null and b/data/sprites/alttpr/vera.1.zspr differ diff --git a/data/sprites/alttpr/vitreous.1.zspr b/data/sprites/alttpr/vitreous.1.zspr new file mode 100644 index 0000000000..947eff3017 Binary files /dev/null and b/data/sprites/alttpr/vitreous.1.zspr differ diff --git a/data/sprites/alttpr/vivi.1.zspr b/data/sprites/alttpr/vivi.1.zspr new file mode 100644 index 0000000000..a7ad1a5f84 Binary files /dev/null and b/data/sprites/alttpr/vivi.1.zspr differ diff --git a/data/sprites/alttpr/vivian.1.zspr b/data/sprites/alttpr/vivian.1.zspr new file mode 100644 index 0000000000..9de1061f87 Binary files /dev/null and b/data/sprites/alttpr/vivian.1.zspr differ diff --git a/data/sprites/alttpr/wario.1.zspr b/data/sprites/alttpr/wario.1.zspr new file mode 100644 index 0000000000..f1a5aab774 Binary files /dev/null and b/data/sprites/alttpr/wario.1.zspr differ diff --git a/data/sprites/alttpr/will.1.zspr b/data/sprites/alttpr/will.1.zspr new file mode 100644 index 0000000000..d379496958 Binary files /dev/null and b/data/sprites/alttpr/will.1.zspr differ diff --git a/data/sprites/alttpr/wizzrobe.2.zspr b/data/sprites/alttpr/wizzrobe.2.zspr new file mode 100644 index 0000000000..f79195d239 Binary files /dev/null and b/data/sprites/alttpr/wizzrobe.2.zspr differ diff --git a/data/sprites/alttpr/wolf_link.1.zspr b/data/sprites/alttpr/wolf_link.1.zspr new file mode 100644 index 0000000000..5ee07dcb19 Binary files /dev/null and b/data/sprites/alttpr/wolf_link.1.zspr differ diff --git a/data/sprites/alttpr/wolf_link_tp.1.zspr b/data/sprites/alttpr/wolf_link_tp.1.zspr new file mode 100644 index 0000000000..9627cd73d4 Binary files /dev/null and b/data/sprites/alttpr/wolf_link_tp.1.zspr differ diff --git a/data/sprites/alttpr/yoshi.1.zspr b/data/sprites/alttpr/yoshi.1.zspr new file mode 100644 index 0000000000..189ea3901d Binary files /dev/null and b/data/sprites/alttpr/yoshi.1.zspr differ diff --git a/data/sprites/alttpr/yunica.1.zspr b/data/sprites/alttpr/yunica.1.zspr new file mode 100644 index 0000000000..57f1f4169c Binary files /dev/null and b/data/sprites/alttpr/yunica.1.zspr differ diff --git a/data/sprites/alttpr/zandra.1.zspr b/data/sprites/alttpr/zandra.1.zspr new file mode 100644 index 0000000000..d7e5012c8b Binary files /dev/null and b/data/sprites/alttpr/zandra.1.zspr differ diff --git a/data/sprites/alttpr/zebraunicorn.1.zspr b/data/sprites/alttpr/zebraunicorn.1.zspr new file mode 100644 index 0000000000..c06130ff7a Binary files /dev/null and b/data/sprites/alttpr/zebraunicorn.1.zspr differ diff --git a/data/sprites/alttpr/zeck.1.zspr b/data/sprites/alttpr/zeck.1.zspr new file mode 100644 index 0000000000..630acd1ac0 Binary files /dev/null and b/data/sprites/alttpr/zeck.1.zspr differ diff --git a/data/sprites/alttpr/zelda.1.zspr b/data/sprites/alttpr/zelda.1.zspr new file mode 100644 index 0000000000..26ba1a05f9 Binary files /dev/null and b/data/sprites/alttpr/zelda.1.zspr differ diff --git a/data/sprites/alttpr/zerosuitsamus.2.zspr b/data/sprites/alttpr/zerosuitsamus.2.zspr new file mode 100644 index 0000000000..0e5a7d1790 Binary files /dev/null and b/data/sprites/alttpr/zerosuitsamus.2.zspr differ diff --git a/data/sprites/alttpr/zora.2.zspr b/data/sprites/alttpr/zora.2.zspr new file mode 100644 index 0000000000..1ca568e113 Binary files /dev/null and b/data/sprites/alttpr/zora.2.zspr differ diff --git a/host.yaml b/host.yaml index 4968083c18..265d31afb6 100644 --- a/host.yaml +++ b/host.yaml @@ -55,15 +55,10 @@ multi_mystery_options: # Teams # Note that there is currently no way to supply names for teams 2+ through MultiMystery teams: 1 - # Location of your Enemizer CLI, available here: https://github.com/Ijwu/Enemizer/releases + # Location of your Enemizer CLI, available here: https://github.com/Bonta0/Enemizer/releases enemizer_path: "EnemizerCLI/EnemizerCLI.Core.exe" # Folder from which the player yaml files are pulled from player_files_path: "Players" - #amount of players, 0 to infer from player files - players: 0 - # general weights file, within the stated player_files_path location - # gets used if players is higher than the amount of per-player files found to fill remaining slots - weights_file_path: "weights.yaml" # Meta file name, within the stated player_files_path location meta_file_path: "meta.yaml" # Automatically launches {player_name}.yaml's ROM file using the OS's default program once generation completes. (likely your emulator) @@ -97,5 +92,5 @@ multi_mystery_options: # 2 -> 7z is recommended for roms. All of them get the job done. # 3 -> bz2 zip_format: 1 - # Create encrypted race roms + # Create roms flagged as race roms race: 0 diff --git a/inno_setup.iss b/inno_setup.iss index 7f8d6b7d2b..fd83782625 100644 --- a/inno_setup.iss +++ b/inno_setup.iss @@ -11,7 +11,6 @@ AppName={#MyAppName} AppVerName={#MyAppName} DefaultDirName={commonappdata}\{#MyAppName} DisableProgramGroupPage=yes -DefaultGroupName=Berserker's Multiworld OutputDir=setups OutputBaseFilename=Setup {#MyAppName} Compression=lzma2 @@ -40,7 +39,7 @@ NAME: "{app}"; Flags: setntfscompression; Permissions: everyone-modify users-mod [Files] Source: "{code:GetROMPath}"; DestDir: "{app}"; DestName: "Zelda no Densetsu - Kamigami no Triforce (Japan).sfc"; Flags: external -Source: "{#sourcepath}*"; Excludes: "*.sfc, *.log, data\sprites\alttpr"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs +Source: "{#sourcepath}*"; Excludes: "*.key, *.log, *.hpkey"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs Source: "vc_redist.x64.exe"; DestDir: {tmp}; Flags: deleteafterinstall ; NOTE: Don't use "Flags: ignoreversion" on any shared system files @@ -52,7 +51,6 @@ Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: [Run] Filename: "{tmp}\vc_redist.x64.exe"; Parameters: "/passive /norestart"; Check: IsVCRedist64BitNeeded; StatusMsg: "Installing VC++ redistributable..." -Filename: "{app}\BerserkerMultiCreator"; Parameters: "update_sprites"; StatusMsg: "Updating Sprite Library..." [UninstallDelete] Type: dirifempty; Name: "{app}" diff --git a/meta.yaml b/meta.yaml index 6642402b4a..3f1afb5693 100644 --- a/meta.yaml +++ b/meta.yaml @@ -21,10 +21,9 @@ goals: dungeons: 50 # Defeat the boss of all dungeons, including Agahnim's tower and GT (Aga 2) pedestal: 100 # Pull the Triforce from the Master Sword pedestal triforce-hunt: 5 # Collect 20 of 30 Triforce pieces spread throughout the worlds, then turn them in to Murahadala in front of Hyrule Castle - local_triforce_hunt: 5 # Collect 20 of 30 Triforce pieces spread throughout your world, then turn them in to Murahadala in front of Hyrule Castle - ganon_triforce_hunt: 10 # Collect 20 of 30 Triforce pieces spread throughout the worlds, then kill Ganon - local_ganon_triforce_hunt: 10 # Collect 20 of 30 Triforce pieces spread throughout your world, then kill Ganon - ganon_pedestal: 10 # Pull the Master Sword pedestal, then kill Ganon + local_triforce_hunt: 10 # Collect 20 of 30 Triforce pieces spread throughout your world, then turn them in to Murahadala in front of Hyrule Castle + ganon_triforce_hunt: 5 # Collect 20 of 30 Triforce pieces spread throughout the worlds, then kill Ganon + local_ganon_triforce_hunt: 20 # Collect 20 of 30 Triforce pieces spread throughout your world, then kill Ganon null: 0 # Maintain individual goals mode: standard: 10 @@ -51,14 +50,4 @@ ganon_open: '6': 9 '7': 10 random: 5 # This will mean differing completion times. But leaving it for that surprise effect -triforce_pieces_mode: #Determine how to calculate the extra available triforce pieces. - extra: 0 # available = triforce_pieces_extra + triforce_pieces_required - percentage: 0 # available = (triforce_pieces_percentage /100) * triforce_pieces_required - available: 50 # available = triforce_pieces_available -triforce_pieces_available: # Set to how many triforces pieces are available to collect in the world. Default is 30. Max is 90, Min is 1 - # Format "pieces: chance" - 30: 50 -triforce_pieces_required: # Set to how many out of X triforce pieces you need to win the game in a triforce hunt. Default is 20. Max is 90, Min is 1 - # Format "pieces: chance" - 25: 50 # Do not use meta rom options at this time \ No newline at end of file diff --git a/playerSettings.yaml b/playerSettings.yaml index 13f7a4728d..b6caabf97d 100644 --- a/playerSettings.yaml +++ b/playerSettings.yaml @@ -107,7 +107,7 @@ triforce_pieces_extra: # Set to how many extra triforces pieces are available to 10: 50 15: 0 20: 0 -triforce_pieces_percentage: # Set to how many triforce pieces according to a percentage of the required ones, are available to collect in the world. +triforce_pieces_percentage: # Set to how many extra triforces pieces according to a percentage of the required ones, are available to collect in the world. # Format "pieces: chance" 100: 0 #No extra 150: 50 #Half the required will be added as extra @@ -165,6 +165,7 @@ item_pool: normal: 50 # Item availability remains unchanged from vanilla game hard: 0 # Reduced upgrade availability (max: 14 hearts, blue mail, tempered sword, fire shield, no silvers unless swordless) expert: 0 # Minimum upgrade availability (max: 8 hearts, green mail, master sword, fighter shield, no silvers unless swordless) + crowd_control: 0 # Sets up the item pool for the crowd control extension. Do not use it without crowd control item_functionality: easy: 0 # Allow Hammer to damage ganon, Allow Hammer tablet collection, Allow swordless medallion use everywhere. normal: 50 # Vanilla item functionality @@ -211,15 +212,9 @@ beemizer: # Remove items from the global item pool and replace them with single 2: 0 # 60% of the non-essential item pool is replaced with bee traps, of which 20% could be single bees 3: 0 # 100% of the non-essential item pool is replaced with bee traps, of which 50% could be single bees 4: 0 # 100% of the non-essential item pool is replaced with bee traps -### Item Shuffle (shop) -shop_shuffle_slots: # Maximum amount of allowed shop slots to place item pool items - 0: 50 - 5: 0 - 15: 0 - 999: 0 shop_shuffle: none: 50 - i: 0 # Shuffle default inventories of the shops around + i: 0 # Shuffle the inventories of the shops around p: 0 # Randomize the prices of the items in shop inventories u: 0 # Shuffle capacity upgrades into the item pool (and allow them to traverse the multiworld) ip: 0 # Shuffle inventories and randomize prices @@ -237,22 +232,6 @@ timer: ohko: 0 # Timer always at zero. Permanent OHKO. timed_countdown: 0 # Starts the clock with forty minutes. Same clocks as timed mode, but if the clock hits zero you lose. You can still keep playing, though. display: 0 # Displays a timer, but otherwise does not affect gameplay or the item pool. -countdown_start_time: # For timed_ohko and timed_countdown timer modes, the amount of time in minutes to start with - 0: 0 # For timed_ohko, starts in OHKO mode when starting the game - 10: 50 - 20: 0 - 30: 0 - 60: 0 -red_clock_time: # For all timer modes, the amount of time in minutes to gain or lose when picking up a red clock - -2: 50 - 1: 0 -blue_clock_time: # For all timer modes, the amount of time in minutes to gain or lose when picking up a blue clock - 1: 0 - 2: 50 -green_clock_time: # For all timer modes, the amount of time in minutes to gain or lose when picking up a green clock - 4: 50 - 10: 0 - 15: 0 # Can be uncommented to use it # local_items: # Force certain items to appear in your world only, not across the multiworld. Recognizes some group names, like "Swords" # - "Moon Pearl" @@ -310,11 +289,8 @@ intensity: # Only available if the host uses the doors branch, it is ignored oth 2: 0 # And shuffles open edges and straight staircases 3: 0 # And shuffles dungeon lobbies random: 0 # Picks one of those at random -key_drop_shuffle: # Only available if the host uses the doors branch, it is ignored otherwise - on: 0 # Enables the small keys dropped by enemies or under pots, and the big key dropped by the Ball & Chain guard to be shuffled into the pool. This extends the number of checks to 249. - off: 50 experimental: # Only available if the host uses the doors branch, it is ignored otherwise - on: 0 # Enables experimental features. + on: 0 # Enables experimental features. Currently, this is just the dungeon keys in chest counter. off: 50 debug: # Only available if the host uses the doors branch, it is ignored otherwise on: 0 # Enables debugging features. Currently, these are the Item collection counter. (overwrites total triforce pieces) and Castle Gate closed indicator. @@ -391,8 +367,8 @@ rom: off: 0 ow_palettes: # Change the colors of the overworld default: 50 # No changes - random: 0 # Shuffle the colors, with harmony in mind - blackout: 0 # everything black / blind mode + random: 0 # Shuffle the colors + blackout: 0 # Never use this grayscale: 0 negative: 0 classic: 0 @@ -401,8 +377,8 @@ rom: puke: 0 uw_palettes: # Change the colors of caves and dungeons default: 50 # No changes - random: 0 # Shuffle the colors, with harmony in mind - blackout: 0 # everything black / blind mode + random: 0 # Shuffle the colors + blackout: 0 # Never use this grayscale: 0 negative: 0 classic: 0 @@ -411,8 +387,8 @@ rom: puke: 0 hud_palettes: # Change the colors of the hud default: 50 # No changes - random: 0 # Shuffle the colors, with harmony in mind - blackout: 0 # everything black / blind mode + random: 0 # Shuffle the colors + blackout: 0 # Never use this grayscale: 0 negative: 0 classic: 0 @@ -421,18 +397,18 @@ rom: puke: 0 sword_palettes: # Change the colors of swords default: 50 # No changes - random: 0 # Shuffle the colors, with harmony in mind - blackout: 0 # everything black / blind mode + random: 0 # Shuffle the colors + blackout: 0 # Never use this grayscale: 0 negative: 0 classic: 0 dizzy: 0 sick: 0 puke: 0 - shield_palettes: # Change the colors of shields + uw_palettes: # Change the colors of shields default: 50 # No changes - random: 0 # Shuffle the colors, with harmony in mind - blackout: 0 # everything black / blind mode + random: 0 # Shuffle the colors + blackout: 0 # Never use this grayscale: 0 negative: 0 classic: 0 diff --git a/setup.py b/setup.py index 80ad9064c0..f2cf42c56d 100644 --- a/setup.py +++ b/setup.py @@ -128,9 +128,6 @@ else: qusb2sneslog = buildfolder / "QUsb2Snes" / "log.txt" if os.path.exists(qusb2sneslog): os.remove(qusb2sneslog) -qusb2snesconfig = buildfolder / "QUsb2Snes" / "config.ini" -if os.path.exists(qusb2snesconfig): - os.remove(qusb2snesconfig) if signtool: for exe in exes: