Freeze fairy abyss/beam dash enemies

Fix original key drops on split supertiles (pokey 1)
Fix mystery/customizer boolean issue
Enemy bans
This commit is contained in:
aerinon
2023-10-06 10:47:22 -06:00
parent 7d371b9952
commit 1434911727
16 changed files with 2192 additions and 48 deletions

View File

@@ -2,6 +2,7 @@ import logging
import RaceRandom as random
from BaseClasses import Boss, FillError
from source.enemizer.Bossmizer import boss_adjust
def BossFactory(boss, player):
@@ -238,6 +239,7 @@ def place_bosses(world, player):
raise FillError('Could not place boss for location %s' % loc_text)
place_boss(boss, level, loc, loc_text, world, player)
boss_adjust(world, player)
def place_boss(boss, level, loc, loc_text, world, player):

View File

@@ -61,8 +61,8 @@ item_table = {'Bow': (True, False, None, 0x0B, 200, 'You have\nchosen the\narche
'Progressive Glove': (True, False, None, 0x61, 150, 'A way to lift\nheavier things', 'and the lift upgrade', 'body-building kid', 'some glove for sale', 'fungus for gloves', 'body-building boy lifts again', 'a glove'),
'Silver Arrows': (True, False, None, 0x58, 100, 'Do you fancy\nsilver tipped\narrows?', 'and the ganonsbane', 'ganon-killing kid', 'ganon doom for sale', 'fungus for pork', 'archer boy shines again', 'the silver arrows'),
'Green Pendant': (True, False, 'Crystal', [0x04, 0x38, 0x62, 0x00, 0x69, 0x37, 0x08], 999, None, None, None, None, None, None, None),
'Blue Pendant': (True, False, 'Crystal', [0x02, 0x34, 0x60, 0x00, 0x69, 0x38, 0x09], 999, None, None, None, None, None, None, None),
'Red Pendant': (True, False, 'Crystal', [0x01, 0x32, 0x60, 0x00, 0x69, 0x39, 0x0a], 999, None, None, None, None, None, None, None),
'Red Pendant': (True, False, 'Crystal', [0x02, 0x34, 0x60, 0x00, 0x69, 0x38, 0x09], 999, None, None, None, None, None, None, None),
'Blue Pendant': (True, False, 'Crystal', [0x01, 0x32, 0x60, 0x00, 0x69, 0x39, 0x0a], 999, None, None, None, None, None, None, None),
'Triforce': (True, False, None, 0x6A, 777, '\n YOU WIN!', 'and the triforce', 'victorious kid', 'victory for sale', 'fungus for the win', 'greedy boy wins game again', 'the Triforce'),
'Power Star': (True, False, None, 0x6B, 100, 'A small victory', 'and the power star', 'star-struck kid', 'star for sale', 'see stars with shroom', 'mario powers up again', 'a Power Star'),
'Triforce Piece': (True, False, None, 0x6C, 100, 'A small victory', 'and the thirdforce', 'triangular kid', 'triangle for sale', 'fungus for triangle', 'wise boy has triangle again', 'a Triforce piece'),

View File

@@ -37,7 +37,7 @@ from source.enemizer.DamageTables import DamageTable
from source.enemizer.Enemizer import randomize_enemies
from source.rom.DataTables import init_data_tables
version_number = '1.3.0.3'
version_number = '1.3.0.4'
version_branch = '-v'
__version__ = f'{version_number}{version_branch}'
@@ -213,9 +213,9 @@ def main(args, seed=None, fish=None):
create_dungeons(world, player)
world.damage_table[player] = DamageTable()
world.data_tables[player] = init_data_tables(world, player)
place_bosses(world, player)
randomize_enemies(world, player)
adjust_locations(world, player)
place_bosses(world, player)
if world.customizer and world.customizer.get_start_inventory():
for p, inv_list in world.customizer.get_start_inventory().items():

View File

@@ -1034,6 +1034,8 @@ key_drop_data = {
'Ganons Tower - Mini Helmasaur Key Drop': ['Drop', (0x09DDC4, 0x3D, 2), "dropped atop Ganon's Tower", 'Small Key (Ganons Tower)']
}
key_drop_special = {(data[1][1], data[1][2]): name for name, data in key_drop_data.items() if data[0] == 'Drop'}
class PotSecretTable(object):
def __init__(self):

View File

@@ -141,6 +141,11 @@ These are now independent of retro mode and have three options: None, Random, an
# Bug Fixes and Notes
* 1.3.0.4v
* Enemizer: The bunny beam near Lanmo 2 and the 4 fairies near Ice Armos are not shuffled anymore. This is due to how bosses shuffle works and since it cannot be guaranteed to work within the current system, they are vanilla. (Vitreous still overwrites the fairies and Arrghus only lets two spawn, etc.)
* Dropshuffle: Pokey 1 has been fixed to drop his item
* Mystery/Customizer: true/false and on/off in yaml files should behave the same.
* More enemy bans as have been reported
* 1.3.0.3v
* Faeries now part of the enemy shuffle pool. Take note, this will increase enemy drop locations to include fairy pools both in dungeons and in caves.
* Enemy drop indicator (blue square) now works in caves based on entrance used

2
Rom.py
View File

@@ -40,7 +40,7 @@ from source.enemizer.Enemizer import write_enemy_shuffle_settings
JAP10HASH = '03a63945398191337e896e5771f77173'
RANDOMIZERBASEHASH = '8f9863c742096d16cae181fe314be3d7'
RANDOMIZERBASEHASH = '4935e770465a9fa00a1d642a657e43a8'
class JsonRom(object):

View File

@@ -1211,7 +1211,7 @@ std_kill_rooms = {
'Eastern Single Eyegore':
(['Eastern Single Eyegore NE'], ['Eastern Single Eyegore ES'], 0xd8, [8, 9, 10]),
'Eastern Duo Eyegores':
(['Eastern Duo Eyegores NE'], ['Eastern Duo Eyegores S'], 0xd8, [0, 1, 2, 3, 4, 5, 6, 7]),
(['Eastern Duo Eyegores NE'], ['Eastern Duo Eyegores SE'], 0xd8, [0, 1, 2, 3, 4, 5, 6, 7]),
'Desert Compass Room': # Three popos (beamos)
(['Desert Compass NE'], ['Desert Compass Key Door WN'], 0x085, [2, 3, 4, 5]),
'Desert Four Statues': # Four popos (beamos)

Binary file not shown.

View File

@@ -13,6 +13,7 @@ import RaceRandom as random
from BaseClasses import Location, LocationType, RegionType
from EntranceShuffle import door_addresses
from Items import ItemFactory
from PotShuffle import key_drop_special
from Utils import snes_to_pc, pc_to_snes, int16_as_bytes
@@ -750,10 +751,10 @@ def init_vanilla_sprites():
create_sprite(0x001c, EnemySprite.ArmosKnight, 0x00, 0, 0x07, 0x08)
create_sprite(0x001c, EnemySprite.ArmosKnight, 0x00, 0, 0x04, 0x08)
create_sprite(0x001c, 0x19, SpriteType.Overlord, 0, 0x07, 0x08)
create_sprite(0x001c, EnemySprite.Faerie, 0x00, 0, 0x07, 0x07, 'GT Fairy Abyss')
create_sprite(0x001c, EnemySprite.Faerie, 0x00, 0, 0x08, 0x07, 'GT Fairy Abyss')
create_sprite(0x001c, EnemySprite.Faerie, 0x00, 0, 0x07, 0x08, 'GT Fairy Abyss')
create_sprite(0x001c, EnemySprite.Faerie, 0x00, 0, 0x08, 0x08, 'GT Fairy Abyss')
create_sprite(0x001c, EnemySprite.Faerie, 0x00, 0, 0x07, 0x07, 'GT Fairy Abyss', fix=True)
create_sprite(0x001c, EnemySprite.Faerie, 0x00, 0, 0x08, 0x07, 'GT Fairy Abyss', fix=True)
create_sprite(0x001c, EnemySprite.Faerie, 0x00, 0, 0x07, 0x08, 'GT Fairy Abyss', fix=True)
create_sprite(0x001c, EnemySprite.Faerie, 0x00, 0, 0x08, 0x08, 'GT Fairy Abyss', fix=True)
create_sprite(0x001e, EnemySprite.CrystalSwitch, 0x00, 0, 0x1a, 0x09)
create_sprite(0x001e, EnemySprite.RedBari, 0x00, 0, 0x16, 0x05, 'Ice Bomb Drop - Top')
create_sprite(0x001e, EnemySprite.RedBari, 0x00, 0, 0x19, 0x05, 'Ice Bomb Drop - Top')
@@ -2199,7 +2200,10 @@ def setup_enemy_dungeon_tables(world, player):
if super_tile in splittable_supertiles:
idx_adj = 0
for index, sprite in enumerate(enemy_list):
loc_name = f'{sprite.region} Enemy #{index+1}'
if (super_tile, index) in key_drop_special:
loc_name = key_drop_special[(super_tile, index)]
else:
loc_name = f'{sprite.region} Enemy #{index+1}'
loc = world.get_location_unsafe(loc_name, player)
if sprite.sub_type == 0x07: # overlord
idx_adj += 1

View File

@@ -110,7 +110,8 @@ def add_kholdstare_to_list(sprite_list, room_id):
def add_vitreous_to_list(sprite_list, room_id):
sprite_list.insert(0, create_sprite(room_id, EnemySprite.Vitreous, 0x00, 0, 0x07, 0x05))
sprite_list.clear() # vitreous does not play nice which other sprites on the tile, just kill them
sprite_list.append(create_sprite(room_id, EnemySprite.Vitreous, 0x00, 0, 0x07, 0x05))
def add_trinexx_to_list(sprite_list, room_id):
@@ -119,14 +120,8 @@ def add_trinexx_to_list(sprite_list, room_id):
sprite_list.insert(2, create_sprite(room_id, EnemySprite.TrinexxIceHead, 0x00, 0, 0x07, 0x05))
def boss_writes(world, player, rom):
rom.write_byte(snes_to_pc(0x368107), 1) # centralize drops
eye_number = random.randint(0, 8) # randomize moldorm eyes (var + 1)
rom.write_byte(snes_to_pc(0x368102), eye_number) # enemizer flag
rom.write_byte(snes_to_pc(0x1DDBB3), eye_number) # loop variable
def boss_adjust(world, player):
data_tables = world.data_tables[player]
arrghus_can_swim = True
water_tiles_on = True
for dungeon in world.get_dungeons(player):
for level, boss in dungeon.bosses.items():
if not boss or boss.name in ['Agahnim', 'Agahnim2']:
@@ -143,6 +138,22 @@ def boss_writes(world, player, rom):
if len(sprite_list) > 16:
del sprite_list[16:]
data_tables.room_headers[room_id].sprite_sheet = required_boss_sheets[sprite_type]
def boss_writes(world, player, rom):
rom.write_byte(snes_to_pc(0x368107), 1) # centralize drops
eye_number = random.randint(0, 8) # randomize moldorm eyes (var + 1)
rom.write_byte(snes_to_pc(0x368102), eye_number) # enemizer flag
rom.write_byte(snes_to_pc(0x1DDBB3), eye_number) # loop variable
data_tables = world.data_tables[player]
arrghus_can_swim = True
water_tiles_on = True
for dungeon in world.get_dungeons(player):
for level, boss in dungeon.bosses.items():
if not boss or boss.name in ['Agahnim', 'Agahnim2']:
continue
room_data = get_dungeon_boss_room(dungeon.name, level)
room_id = room_data[0]
# room changes
if boss.name == 'Arrghus' and (dungeon.name != 'Swamp Palace' or level is not None):
rom.write_byte(snes_to_pc(0x0DB6BE), 0) # arrghus can stand on ground

View File

@@ -142,6 +142,7 @@ UwGeneralDeny:
- [ 0x0065, 2, [ "Beamos", "AntiFairyCircle", "Bumper" ] ] #"Thieves' Town - Attic Window - Rat 3"
- [ 0x0066, 0, [ "Beamos", "AntiFairyCircle", "BigSpike", "Bumper" ] ] #"Swamp Palace - Waterfall Room - Hover 1"
- [ 0x0067, 1, [ "RollerVerticalUp", "RollerVerticalDown" ] ] #"Skull Woods - Firebar Pits - Blue Bari 1"
- [ 0x0067, 2, ["Bumper"]] #"Skull Woods - Firebar Pits - Blue Bari 2"
- [ 0x0067, 3, [ "RollerVerticalUp", "RollerVerticalDown" ] ] #"Skull Woods - Firebar Pits - Hardhat Beetle 1"
- [ 0x0067, 5, [ "RollerVerticalDown" ] ] #"Skull Woods - Firebar Pits - Hardhat Beetle 3"
- [ 0x0067, 6, [ "RollerVerticalDown" ] ] #"Skull Woods - Firebar Pits - Hardhat Beetle 4"
@@ -293,10 +294,13 @@ UwGeneralDeny:
- [ 0x00ce, 4, [ "RollerVerticalDown", "RollerVerticalUp", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Beamos", "Bumper", "FirebarCW", "FirebarCCW"]]
- [ 0x00ce, 5, [ "RollerVerticalDown", "RollerVerticalUp", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Beamos", "Bumper", "FirebarCW", "FirebarCCW"]]
- [ 0x00ce, 6, [ "RollerVerticalDown", "RollerVerticalUp", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Beamos", "Bumper", "FirebarCW", "FirebarCCW"]]
- [ 0x00ce, 7, [ "RollerVerticalDown", "RollerVerticalUp", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Beamos", "Bumper", "FirebarCW", "FirebarCCW"]]
- [ 0x00d0, 0, [ "Statue", "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper"]]
- [ 0x00d0, 1, [ "AntiFairyCircle", "BigSpike", "Bumper"]]
- [ 0x00d0, 4, [ "Statue", "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper"]]
- [ 0x00d0, 5, [ "Statue", "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper"]]
- [ 0x00ce, 7, [ "RollerVerticalDown", "RollerVerticalUp", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Beamos", "Bumper", "FirebarCW", "FirebarCCW"]]
- [ 0x00d0, 6, [ "Statue", "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper"]]
- [ 0x00d0, 7, [ "Statue", "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper"]]
- [ 0x00d0, 9, [ "AntiFairyCircle", "BigSpike", "Bumper"]]
- [ 0x00d0, 6, [ "Statue", "RollerVerticalUp", "RollerVerticalDown", "RollerHorizontalLeft", "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] # Agahnims Tower - Dark Maze - Blue Guard 2
- [ 0x00d2, 8, [ "RollerVerticalDown", "RollerHorizontalLeft", "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Misery Mire - Mire 2 - Popo BL"
@@ -347,14 +351,18 @@ UwGeneralDeny:
- [ 0x0107, 2, ["Beamos", "Bumper", "BigSpike", "AntiFairyCircle"]]
OwGeneralDeny:
- [0x1e, 3, ["Beamos", "Bumper", "BigSpike", "AntiFairyCircle"]] # forbid a beamos here
- [0x40, 0, ["Beamos", "Bumper", "BigSpike", "AntiFairyCircle"]]
- [0x40, 7, ["Beamos", "Bumper", "BigSpike", "AntiFairyCircle"]]
- [0x40, 13, ["Beamos", "Bumper", "BigSpike", "AntiFairyCircle"]]
- [0x40, 14, ["Beamos", "Bumper", "BigSpike", "AntiFairyCircle"]]
- [0x40, 0, ["Beamos", "Bumper", "BigSpike", "AntiFairyCircle", "Thief"]]
- [0x40, 7, ["Beamos", "Bumper", "BigSpike", "AntiFairyCircle", "Thief"]]
- [0x40, 13, ["Beamos", "Bumper", "BigSpike", "AntiFairyCircle", "Thief"]]
- [0x40, 14, ["Beamos", "Bumper", "BigSpike", "AntiFairyCircle", "Thief"]]
- [0x5e, 4, ["RollerVerticalUp", "Gibo"]] # forbid that one roller for kiki pod, and the kiki eating Gibo
- [0x5e, 5, ["Gibo"]] # kiki eating Gibo
UwEnemyDrop:
- [0x0085, 9, ["Babasu"]] # ran off the edge and didn't return
- [0x00cb, 3, ["Zoro"]] # layer issues
- [0x00cb, 5, ["Zoro"]] # layer issues
- [0x00cb, 9, ["Zoro"]] # layer issues
- [0x00cb, 10, ["Zoro"]] # layer issues
- [0x00cc, 5, ["Babasu"]] # little hard to see and kill appropriately
# the following are behind rails or otherwise unactivate-able
- [0x0077, 4, ["StalfosKnight", "Geldman", "Blob", "Stal", "Wizzrobe"]] # can't activate here

View File

@@ -53,7 +53,7 @@ UW: # Total 94431
Kyameron: 237 # 0.42147% raw:398 3.52212%
Landmine: 19 # 5.40077% raw:5100 45.13274%
Leever: 154 # 0.65127% raw:615 5.44248%
Lynel: 500 # 0.17897% raw:169 1.49558%
Lynel: 400 # 0.17897% raw:169 1.49558%
MiniHelmasaur: 109 # 0.91495% raw:864 7.64602%
MiniMoldorm: 109 # 0.91495% raw:864 7.64602%
Moblin: 367 # 0.27216% raw:257 2.27434%

View File

@@ -357,7 +357,7 @@ def determine_major_items(world, player):
major_item_set.add('Single Arrow')
if world.keyshuffle[player] == 'universal':
major_item_set.add('Small Key (Universal)')
if world.goal[player] in {'triforcehunt', 'ganonhunt'}:
if world.goal[player] in {'triforcehunt', 'ganonhunt', 'trinity'}:
major_item_set.add('Triforce Piece')
if world.bombbag[player]:
major_item_set.add('Bomb Upgrade (+10)')

View File

@@ -33,6 +33,22 @@ def roll_settings(weights):
return default
return choice
def get_choice_bool(option, root=weights):
choice = get_choice(option, root)
if choice is True or choice == 'on':
return True
if choice is False or choice == 'off':
return False
if choice is None:
return choice
raise Exception("This fields needs to be true/false or off/on")
def get_choice_bool_default(option, root=weights, default=None):
choice = get_choice_bool(option, root)
if choice is None and default is not None:
return default
return choice
while True:
subweights = weights.get('subweights', {})
if len(subweights) == 0:
@@ -62,8 +78,8 @@ def roll_settings(weights):
dungeon_items = get_choice('dungeon_items')
dungeon_items = '' if dungeon_items == 'standard' or dungeon_items is None else dungeon_items
dungeon_items = 'mcsb' if dungeon_items == 'full' else dungeon_items
ret.mapshuffle = get_choice('map_shuffle') == 'on' if 'map_shuffle' in weights else 'm' in dungeon_items
ret.compassshuffle = get_choice('compass_shuffle') == 'on' if 'compass_shuffle' in weights else 'c' in dungeon_items
ret.mapshuffle = get_choice_bool('map_shuffle') if 'map_shuffle' in weights else 'm' in dungeon_items
ret.compassshuffle = get_choice_bool('compass_shuffle') if 'compass_shuffle' in weights else 'c' in dungeon_items
if 'smallkey_shuffle' in weights:
ret.keyshuffle = get_choice('smallkey_shuffle')
else:
@@ -71,7 +87,7 @@ def roll_settings(weights):
ret.keyshuffle = 'wild'
if 'u' in dungeon_items:
ret.keyshuffle = 'universal'
ret.bigkeyshuffle = get_choice('bigkey_shuffle') == 'on' if 'bigkey_shuffle' in weights else 'b' in dungeon_items
ret.bigkeyshuffle = get_choice_bool('bigkey_shuffle') if 'bigkey_shuffle' in weights else 'b' in dungeon_items
ret.accessibility = get_choice('accessibility')
ret.restrict_boss_items = get_choice('restrict_boss_items')
@@ -86,26 +102,26 @@ def roll_settings(weights):
ret.door_type_mode = get_choice('door_type_mode')
ret.trap_door_mode = get_choice('trap_door_mode')
ret.key_logic_algorithm = get_choice('key_logic_algorithm')
ret.decoupledoors = get_choice('decoupledoors')
ret.door_self_loops = get_choice('door_self_loops')
ret.experimental = get_choice('experimental')
ret.collection_rate = get_choice('collection_rate')
ret.decoupledoors = get_choice_bool('decoupledoors')
ret.door_self_loops = get_choice_bool('door_self_loops')
ret.experimental = get_choice_bool('experimental')
ret.collection_rate = get_choice_bool('collection_rate')
ret.dungeon_counters = get_choice('dungeon_counters') if 'dungeon_counters' in weights else 'default'
if ret.dungeon_counters == 'default':
ret.dungeon_counters = 'pickup' if ret.door_shuffle != 'vanilla' or ret.compassshuffle == 'on' else 'off'
ret.shufflelinks = get_choice('shufflelinks')
ret.shuffletavern = get_choice('shuffletavern')
ret.pseudoboots = get_choice('pseudoboots')
ret.shopsanity = get_choice('shopsanity')
keydropshuffle = get_choice('keydropshuffle')
ret.shufflelinks = get_choice_bool('shufflelinks')
ret.shuffletavern = get_choice_bool('shuffletavern')
ret.pseudoboots = get_choice_bool('pseudoboots')
ret.shopsanity = get_choice_bool('shopsanity')
keydropshuffle = get_choice_bool('keydropshuffle')
ret.dropshuffle = get_choice('dropshuffle') if 'dropshuffle' in weights else 'none'
ret.dropshuffle = 'keys' if ret.dropshuffle == 'none' and keydropshuffle else ret.dropshuffle
ret.pottery = get_choice('pottery') if 'pottery' in weights else 'none'
ret.pottery = 'keys' if ret.pottery == 'none' and keydropshuffle else ret.pottery
ret.colorizepots = get_choice_default('colorizepots', default=True)
ret.shufflepots = get_choice('pot_shuffle')
ret.colorizepots = get_choice_bool_default('colorizepots', default=True)
ret.shufflepots = get_choice_bool('pot_shuffle')
ret.mixed_travel = get_choice('mixed_travel') if 'mixed_travel' in weights else 'prevent'
ret.standardize_palettes = (get_choice('standardize_palettes') if 'standardize_palettes' in weights
else 'standardize')
@@ -140,12 +156,12 @@ def roll_settings(weights):
if ret.mode == 'retro':
ret.mode = 'open'
ret.retro = True
ret.retro = get_choice('retro') # this overrides world_state if used
ret.retro = get_choice_bool('retro') # this overrides world_state if used
ret.take_any = get_choice_default('take_any', default='none')
ret.bombbag = get_choice('bombbag')
ret.bombbag = get_choice_bool('bombbag')
ret.hints = get_choice('hints')
ret.hints = get_choice_bool('hints')
swords = get_choice('weapons')
if swords is not None:
@@ -198,15 +214,15 @@ def roll_settings(weights):
if 'rom' in weights:
romweights = weights['rom']
ret.sprite = get_choice('sprite', romweights)
ret.disablemusic = get_choice('disablemusic', romweights)
ret.quickswap = get_choice('quickswap', romweights)
ret.reduce_flashing = get_choice('reduce_flashing', romweights)
ret.disablemusic = get_choice_bool('disablemusic', romweights)
ret.quickswap = get_choice_bool('quickswap', romweights)
ret.reduce_flashing = get_choice_bool('reduce_flashing', romweights)
ret.fastmenu = get_choice('menuspeed', romweights)
ret.heartcolor = get_choice('heartcolor', romweights)
ret.heartbeep = get_choice('heartbeep', romweights)
ret.ow_palettes = get_choice('ow_palettes', romweights)
ret.uw_palettes = get_choice('uw_palettes', romweights)
ret.shuffle_sfx = get_choice('shuffle_sfx', romweights)
ret.msu_resume = get_choice('msu_resume', romweights)
ret.shuffle_sfx = get_choice_bool('shuffle_sfx', romweights)
ret.msu_resume = get_choice_bool('msu_resume', romweights)
return ret

File diff suppressed because it is too large Load Diff

38
test/customizer/test.yaml Normal file
View File

@@ -0,0 +1,38 @@
meta:
players: 1
seed: 96
settings:
1:
# mode: standard
boss_shuffle: random
dropshuffle: underworld
enemy_shuffle: shuffled
door_shuffle: crossed
intensity: 3
dungeon_counters: 'on'
doors:
1:
lobbies:
Hyrule Castle South: GT Bob's Room SE
bosses:
1:
Ganons Tower (bottom): Armos Knights
# keyshuffle: wild
#placements:
# 1:
# 'Hera Basement Cage Enemy #4': Small Key (Palace of Darkness)
# 'Hera Basement Cage Enemy #9': Small Key (Tower of Hera)
# 'Hera Basement Cage Enemy #11': Fire Rod
# Tower of Hera - Basement Cage: Small Key (Turtle Rock)
#start_inventory:
# 1:
# - Lamp
# - Progressive Sword
# - Ocarina (Activated)
# - Hookshot