From 265578dca5b9fb284d1e517fabd0f443a0bbe6ff Mon Sep 17 00:00:00 2001 From: theclearmouse <105736589+theclearmouse@users.noreply.github.com> Date: Sun, 19 Jan 2025 22:41:55 -0500 Subject: [PATCH 1/7] display mirror scroll icon on start screen if enabled --- InitialSram.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/InitialSram.py b/InitialSram.py index 742e4fe3..d3c2e6e0 100644 --- a/InitialSram.py +++ b/InitialSram.py @@ -228,7 +228,7 @@ class InitialSram: equip[0x343] = min(starting_bombs, equip[0x370]) equip[0x377] = min(starting_arrows, equip[0x371]) - if not startingstate.has('Magic Mirror', player) and world.doorShuffle[player] != 'vanilla': + if not startingstate.has('Magic Mirror', player) and (world.doorShuffle[player] != 'vanilla' or world.mirrorscroll[player]): equip[0x353] = 1 # Assertion and copy equip to initial_sram_bytes From 7cba411e45522e660226fc098eea2c509b63160c Mon Sep 17 00:00:00 2001 From: Kris Davie Date: Sun, 16 Mar 2025 07:30:41 +0100 Subject: [PATCH 2/7] More glitched fixes --- ItemList.py | 12 +++++++++++- Rom.py | 7 +++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/ItemList.py b/ItemList.py index 5889e4d0..3dce2da3 100644 --- a/ItemList.py +++ b/ItemList.py @@ -368,7 +368,17 @@ def generate_itempool(world, player): or (item.map and world.mapshuffle[player]) or (item.compass and world.compassshuffle[player]))]) - + if world.logic[player] == 'hybridglitches' and world.pottery[player] not in ['none', 'cave']: + keys_to_remove = 2 + to_remove = [] + for wix, wi in enumerate(world.itempool): + if wi.name == 'Small Key (Swamp Palace)' and wi.player == player: + to_remove.append(wix) + if keys_to_remove == len(to_remove): + break + for wix in reversed(to_remove): + del world.itempool[wix] + # logic has some branches where having 4 hearts is one possible requirement (of several alternatives) # rather than making all hearts/heart pieces progression items (which slows down generation considerably) # We mark one random heart container as an advancement item (or 4 heart pieces in expert mode) diff --git a/Rom.py b/Rom.py index 4fd43122..984ac066 100644 --- a/Rom.py +++ b/Rom.py @@ -463,6 +463,13 @@ def patch_rom(world, rom, player, team, is_mystery=False): rom.write_byte(location.player_address, location.item.player) else: itemid = 0x5A + + if not location.locked and ((location.item.smallkey and world.keyshuffle[player] == 'none') or ( + location.item.bigkey and world.bigkeyshuffle[player] == 'none') or ( + location.item.map and world.mapshuffle[player] == 'none') or ( + location.item.compass and world.compassshuffle[player] == 'none')): + itemid = handle_native_dungeon(location, itemid) + rom.write_byte(location.address, itemid) else: # crystals From 966bd8d05e8d830ca28a9026ee91c50693ead0ec Mon Sep 17 00:00:00 2001 From: aerinon Date: Fri, 21 Mar 2025 11:07:09 -0600 Subject: [PATCH 3/7] fix: prevent big key door modification while door shuffle is vanilla --- CHANGELOG.md | 15 +++++++++++++++ Main.py | 2 +- RELEASENOTES.md | 19 ++++--------------- Rom.py | 2 +- 4 files changed, 21 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c9f2520..cb0b711a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,21 @@ Changelog archive +* 1.4.8.1 + - Fixed broken doors generation + - Fixed bomb/arrow upgrade ignoring custom pricing + - Extended `money_balance` to apply to price balancing for non-custom shops. +* 1.4.8 + - New option: Mirror Scroll - to add the item to the starting inventory in non-doors modes (Thanks Telethar!) + - Customizer: Ability to customize shop prices and control money balancing. `money_balance` is a percentage betwen 0 and 100 that attempts to ensure you have that much percentage of money available for purchases. (100 is default, 0 essentially ignores money considerations) + - Fixed a key logic bug with decoupled doors when a big key door leads to a small key door (the small key door was missing appropriate logic) + - Fixed an ER bug where Bonk Fairy could be used for a mandatory connector in standard mode (boots could allow escape to be skipped) + - Fixed an issue with flute activation in rain mode. (thanks Codemann!) + - Fixed an issue with enemies in TR Dark Ride room not requiring Somaria. (Refactored the room for decoupled logic better) + - More HMG fixes by Muffins + - Fixed an issue with multi-player HMG + - Fixed an issue limiting number of items specified in the item pool on the GUI + - Minor documentation fixes (thanks Codemann!) * 1.4.7.2 - Fixed an issue with shuffle_ganon/fix_gtower_exit causing a generation failure - More HMG fixes by Muffins diff --git a/Main.py b/Main.py index be7f74ef..fa45699e 100644 --- a/Main.py +++ b/Main.py @@ -38,7 +38,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.4.8.1' +version_number = '1.4.9' version_branch = '-u' __version__ = f'{version_number}{version_branch}' diff --git a/RELEASENOTES.md b/RELEASENOTES.md index b912e4f6..04825999 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -1,17 +1,6 @@ # Patch Notes -* 1.4.8.1 - - Fixed broken doors generation - - Fixed bomb/arrow upgrade ignoring custom pricing - - Extended `money_balance` to apply to price balancing for non-custom shops. -* 1.4.8 - - New option: Mirror Scroll - to add the item to the starting inventory in non-doors modes (Thanks Telethar!) - - Customizer: Ability to customize shop prices and control money balancing. `money_balance` is a percentage betwen 0 and 100 that attempts to ensure you have that much percentage of money available for purchases. (100 is default, 0 essentially ignores money considerations) - - Fixed a key logic bug with decoupled doors when a big key door leads to a small key door (the small key door was missing appropriate logic) - - Fixed an ER bug where Bonk Fairy could be used for a mandatory connector in standard mode (boots could allow escape to be skipped) - - Fixed an issue with flute activation in rain mode. (thanks Codemann!) - - Fixed an issue with enemies in TR Dark Ride room not requiring Somaria. (Refactored the room for decoupled logic better) - - More HMG fixes by Muffins - - Fixed an issue with multi-player HMG - - Fixed an issue limiting number of items specified in the item pool on the GUI - - Minor documentation fixes (thanks Codemann!) +* 1.4.9 + * Mirror scroll will show up on file start screen if enabled (thanks Clearmouse!) + * Fixes for HMG by Muffins + * Vanilla door shuffle prevents big key doors changes from door_type_mode diff --git a/Rom.py b/Rom.py index 984ac066..04b08fb2 100644 --- a/Rom.py +++ b/Rom.py @@ -583,7 +583,7 @@ def patch_rom(world, rom, player, team, is_mystery=False): dr_flags |= DROptions.DarkWorld_Spawns # no longer experimental if world.logic[player] not in ['owglitches', 'hybridglitches', 'nologic']: dr_flags |= DROptions.Fix_EG - if world.door_type_mode[player] in ['big', 'all', 'chaos']: + if world.door_type_mode[player] in ['big', 'all', 'chaos'] and world.doorShuffle[player] != 'vanilla': dr_flags |= DROptions.BigKeyDoor_Shuffle if world.dropshuffle[player] in ['underworld']: dr_flags |= DROptions.EnemyDropIndicator From fe0cfe8b3aac9b27a41f1a8276432bef34fa6147 Mon Sep 17 00:00:00 2001 From: codemann8 Date: Sat, 5 Apr 2025 07:34:56 -0500 Subject: [PATCH 4/7] fix: various Enemizer fixes Fixed enemizer sprite gfx for soldier enemies falling down pits Remove unnecessary sprite sheet subgroup for somaria platforms Freeing up unnecessary sprite sheet subgroups for old man screens Fix paradox cave and kakariko shop gfx in enemizer Fix swamp drain gfx in enemizer Fix bat crash sprite gfx in enemizer Remove unused subgroups and consolidate purple chest/frog sprite sheets Remove invalid OW IDs from sprite sheets --- RELEASENOTES.md | 1 + source/enemizer/SpriteSheets.py | 43 ++++++++++++++++++--------------- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 04825999..02cfeef6 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -3,4 +3,5 @@ * 1.4.9 * Mirror scroll will show up on file start screen if enabled (thanks Clearmouse!) * Fixes for HMG by Muffins + * Various fixes for Enemizer by Codemann (gfx fixes, more randomization options) * Vanilla door shuffle prevents big key doors changes from door_type_mode diff --git a/source/enemizer/SpriteSheets.py b/source/enemizer/SpriteSheets.py index bb021088..3dd8cb29 100644 --- a/source/enemizer/SpriteSheets.py +++ b/source/enemizer/SpriteSheets.py @@ -123,6 +123,9 @@ LenientTrapsForTesting = {0x16, 0x26, 0x3f, 0x40, 0x42, 0x46, 0x49, 0x4e, 0x57, 0x65, 0x6a, 0x74, 0x76, 0x7d, 0x98, 0x9e, 0xaf, 0xba, 0xc6, 0xcb, 0xce, 0xd2, 0xd5, 0xd8, 0xdf, 0xe4, 0xe7, 0xee, 0xfd, 0x10c} +PitRooms = {0x17, 0x1a, 0x2a, 0x31, 0x3c, 0x3d, 0x40, 0x44, 0x49, 0x4e, 0x56, 0x58, 0x5c, 0x67, 0x72, + 0x7b, 0x7c, 0x7d, 0x7f, 0x82, 0x8b, 0x8d, 0x95, 0x96, 0x9b, 0x9c, 0x9d, 0x9e, 0xa0, 0xa5, + 0xaf, 0xbc, 0xc0, 0xc5, 0xc6, 0xd1, 0xd5, 0xe7, 0xe8, 0xee, 0xf0, 0xf1, 0xfb, 0x123} # wallmasters must not be on tiles near spiral staircases. Unknown if other stairs have issues WallmasterInvalidRooms = { @@ -222,9 +225,12 @@ def init_sprite_requirements(): SpriteRequirement(EnemySprite.Hoarder2).sub_group(3, 0x11).exclude({0x10c}), SpriteRequirement(EnemySprite.TutorialGuard).affix(), SpriteRequirement(EnemySprite.LightningGate).affix().sub_group(3, 0x3f), - SpriteRequirement(EnemySprite.BlueGuard).aquaphobia().sub_group(1, [0xd, 0x49]), - SpriteRequirement(EnemySprite.GreenGuard).aquaphobia().sub_group(1, 0x49), - SpriteRequirement(EnemySprite.RedSpearGuard).aquaphobia().sub_group(1, [0xd, 0x49]), + SpriteRequirement(EnemySprite.BlueGuard).aquaphobia().sub_group(1, [0xd, 0x49]).exclude(PitRooms), + SpriteRequirement(EnemySprite.BlueGuard).aquaphobia().sub_group(1, [0xd, 0x49]).sub_group(2, [0x29, 0x13]), + SpriteRequirement(EnemySprite.GreenGuard).aquaphobia().sub_group(1, 0x49).exclude(PitRooms), + SpriteRequirement(EnemySprite.GreenGuard).aquaphobia().sub_group(1, 0x49).sub_group(2, 0x13), + SpriteRequirement(EnemySprite.RedSpearGuard).aquaphobia().sub_group(1, [0xd, 0x49]).exclude(PitRooms), + SpriteRequirement(EnemySprite.RedSpearGuard).aquaphobia().sub_group(1, [0xd, 0x49]).sub_group(2, [0x29, 0x13]), SpriteRequirement(EnemySprite.BluesainBolt).aquaphobia().sub_group(0, 0x46).sub_group(1, [0xd, 0x49]), SpriteRequirement(EnemySprite.UsainBolt).aquaphobia().sub_group(1, [0xd, 0x49]), SpriteRequirement(EnemySprite.BlueArcher).sub_group(0, 0x48).sub_group(1, 0x49), @@ -325,7 +331,7 @@ def init_sprite_requirements(): SpriteRequirement(EnemySprite.BlueZirro).no_drop().sub_group(3, 0x1b).exclude(NoFlyingRooms), SpriteRequirement(EnemySprite.Pikit).sub_group(3, 0x1b), SpriteRequirement(EnemySprite.CrystalMaiden).affix(), - SpriteRequirement(EnemySprite.OldMan).affix().sub_group(0, 0x46).sub_group(1, 0x49).sub_group(2, 0x1c), + SpriteRequirement(EnemySprite.OldMan).affix().sub_group(2, 0x1c), SpriteRequirement(EnemySprite.PipeDown).affix(), SpriteRequirement(EnemySprite.PipeUp).affix(), SpriteRequirement(EnemySprite.PipeRight).affix(), @@ -525,9 +531,9 @@ def init_sprite_sheets(requirements): def setup_required_dungeon_groups(sheets, data_tables): - sheets[did(1)].add_sprite_to_sheet([70, 73, 28, 82], {0xe4, 0xf0}) # old man + sheets[did(1)].add_sprite_to_sheet([None, None, 28, None], {0xe4, 0xf0}) # old man # various npcs - sheets[did(5)].add_sprite_to_sheet([75, 77, 74, 90], {0xf3, 0x109, 0x10e, 0x10f, 0x110, 0x111, 0x112, + sheets[did(5)].add_sprite_to_sheet([75, 77, 74, 90], {0xf3, 0xff, 0x109, 0x10e, 0x10f, 0x110, 0x111, 0x112, 0x11a, 0x11c, 0x11f, 0x122}) sheets[did(7)].add_sprite_to_sheet([75, 77, 57, 54], {0x8, 0x2c, 0x114, 0x115, 0x116}) # big fairies sheets[did(13)].add_sprite_to_sheet([81, None, None, None], {0x55, 0x102, 0x104}) # uncle, sick kid @@ -542,15 +548,13 @@ def setup_required_dungeon_groups(sheets, data_tables): sheets[did(3)].add_sprite_to_sheet([93, None, None, None], {0x51}) # mantle sheets[did(42)].add_sprite_to_sheet([21, None, None, None], {0x11e}) # hype cave sheets[did(10)].add_sprite_to_sheet([47, None, 46, None], {0x5c, 0x75, 0xb9, 0xd9}) # cannonballs - sheets[did(37)].add_sprite_to_sheet([31, None, 39, 82], {0x24, 0xb4, 0xb5, 0xc6, 0xc7, 0xd6}) # somaria platforms - # not sure 31 is needed above + sheets[did(37)].add_sprite_to_sheet([None, None, 39, 82], {0x24, 0xb4, 0xb5, 0xc6, 0xc7, 0xd6}) # somaria platforms free_sheet_reqs = [ - ([75, None, None, None], [0xff, 0x11f]), # shopkeepers ([None, 77, None, 21], [0x121]), # smithy ([None, None, None, 80], [0x108]), # chicken house ([14, 30, None, None], [0x123]), # mini moldorm (shutter door) - ([None, None, 34, None], [0x36, 0x46, 0x66, 0x76]), # pirogusu spawners + ([None, None, 34, None], [0x36, 0x46, 0x66]), # pirogusu spawners ([None, 32, None, None], [0x9f]), # babasu spawners ([31, None, None, None], [0x7f]), # force baris ([None, None, 35, None], [0x39, 0x49]), # wallmasters @@ -570,7 +574,7 @@ def setup_required_dungeon_groups(sheets, data_tables): ([None, None, (28, 36), 82], [0x2, 0x64]), # pull switches (snakes) ([None, None, None, 82], [0x1a, 0x3d, 0x44, 0x5e, 0x7c, 0x95, 0xc3]), # collapsing bridges ([None, None, None, 83], [0x3f, 0xce]), # pull tongue - ([None, None, None, 83], [0x35, 0x37, 0x76]), # swamp drains + ([None, None, None, 83], [0x35, 0x37]), # swamp drains ([None, None, 34, None], [0x28]), # tektike forced? - spawn chest ([None, None, 37, None], [0x97]), # wizzrobe spawner - in middle of room... @@ -701,17 +705,18 @@ def setup_required_overworld_groups(sheets): sheets[6].add_sprite_to_sheet([0x4F, 0x49, 0x4A, 0x50], {0x18, 0x22, 0x28, 0xA8, 0xB2, 0xB8}) sheets[8].add_sprite_to_sheet([None, None, 18, None], {0x30, 0xC0}) # Desert (pre/post-Aga) sheets[10].add_sprite_to_sheet([None, None, None, 17], {0x3A, 0xCA}) # M-rock (pre/post-Aga) - sheets[22].add_sprite_to_sheet([None, None, 24, None], {0x4F, 0xDF}) # Catfish (pre/post-Aga) - sheets[21].add_sprite_to_sheet([21, None, None, 21], {0x62, 0xF2}) # Smith DW (pre/post-Aga) - sheets[27].add_sprite_to_sheet([None, 42, None, None], {0x68, 0xF8}) # Dig Game (pre/post-Aga) + sheets[22].add_sprite_to_sheet([None, None, 24, None], {0x4F}) # Catfish + sheets[21].add_sprite_to_sheet([None, None, None, 21], {0x62, 0x69}) # Smith DW/VoO South + sheets[27].add_sprite_to_sheet([None, 42, None, None], {0x68}) # Dig Game sheets[13].add_sprite_to_sheet([None, None, 76, None], {0x16, 0xA6}) # Witch hut (pre/post-Aga) - sheets[29].add_sprite_to_sheet([None, 77, None, 21], {0x69, 0xF9}) # VoO South (pre/post-Aga) + #sheets[29].add_sprite_to_sheet([None, 77, None, 21], {0x69}) # VoO South sheets[15].add_sprite_to_sheet([None, None, 78, None], {0x2A, 0xBA}) # Haunted Grove (pre/post-Aga) - sheets[17].add_sprite_to_sheet([None, None, None, 76], {0x6A, 0xFA}) # Stumpy (pre/post-Aga) - sheets[12].add_sprite_to_sheet([None, None, 55, 54], {0x80, 0x110}) # Specials (pre/post-Aga) - sheets[14].add_sprite_to_sheet([None, None, 12, 68], {0x81, 0x111}) # Zora's Domain (pre/post-Aga) + sheets[17].add_sprite_to_sheet([None, None, None, 76], {0x6A}) # Stumpy + sheets[12].add_sprite_to_sheet([None, None, 55, 54], {0x80}) # Specials + sheets[14].add_sprite_to_sheet([None, None, 12, 68], {0x81}) # Zora's Domain sheets[26].add_sprite_to_sheet([15, None, None, None], {0x92}) # Lumberjacks post-Aga - sheets[23].add_sprite_to_sheet([None, None, None, 25], {0x5E, 0xEE}) # PoD pre/post-Aga + sheets[23].add_sprite_to_sheet([None, None, None, 25], {0x5E}) # PoD + sheets[19].add_sprite_to_sheet([None, 26, None, None], {0x5B}) # Pyramid post-Aga2 bat crash free_sheet_reqs = [ [None, None, None, 0x14], # bully+pink ball needs this From 2c1ecd70ff101efc86138162a0f048e508e6d945 Mon Sep 17 00:00:00 2001 From: aerinon Date: Fri, 18 Apr 2025 12:51:00 -0600 Subject: [PATCH 5/7] fix: various Enemizer fixes --- RELEASENOTES.md | 1 + source/enemizer/enemy_deny.yaml | 58 ++++++++++++++++++--------------- 2 files changed, 32 insertions(+), 27 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 02cfeef6..3fbbb257 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -5,3 +5,4 @@ * Fixes for HMG by Muffins * Various fixes for Enemizer by Codemann (gfx fixes, more randomization options) * Vanilla door shuffle prevents big key doors changes from door_type_mode + * Various enemizer bans for blocked paths (thanks to all the reports, Q1 2025) diff --git a/source/enemizer/enemy_deny.yaml b/source/enemizer/enemy_deny.yaml index 069bb668..ea92264d 100644 --- a/source/enemizer/enemy_deny.yaml +++ b/source/enemizer/enemy_deny.yaml @@ -31,8 +31,8 @@ UwGeneralDeny: - [ 0x001a, 7, [ "RollerHorizontalRight", "RollerHorizontalLeft" ]] # Too long - [ 0x001b, 3, [ "Beamos", "AntiFairyCircle", "Bumper" ] ] #"Palace of Darkness - Mimics 2 - Red Eyegore" - [ 0x001b, 4, [ "RollerVerticalUp" ] ] #"Palace of Darkness - Mimics 2 - Green Eyegore L" - - [ 0x001e, 3, [ "RollerVerticalDown", "RollerVerticalUp", "RollerHorizontalRight", "RollerHorizontalLeft", "BigSpike", "Bumper" ] ] #"Ice Palace - Blob Ambush - Red Bari 3" - - [ 0x001e, 4, [ "RollerVerticalDown", "RollerVerticalUp", "RollerHorizontalRight", "RollerHorizontalLeft", "BigSpike", "Bumper" ] ] #"Ice Palace - Blob Ambush - Red Bari 4" + - [ 0x001e, 3, [ "RollerVerticalDown", "RollerVerticalUp", "RollerHorizontalRight", "RollerHorizontalLeft", "BigSpike", "Bumper", "AntiFairyCircle" ] ] #"Ice Palace - Blob Ambush - Red Bari 3" + - [ 0x001e, 4, [ "RollerVerticalDown", "RollerVerticalUp", "RollerHorizontalRight", "RollerHorizontalLeft", "BigSpike", "Bumper", "AntiFairyCircle" ] ] #"Ice Palace - Blob Ambush - Red Bari 4" - [ 0x001e, 5, [ "SparkCW", "SparkCCW", "RollerVerticalDown", "RollerHorizontalRight", "Beamos", "AntiFairyCircle", "BigSpike", "Bumper" ] ] #"Ice Palace - Blob Ambush - Zol 1" - [ 0x001e, 6, [ "SparkCW", "SparkCCW", "RollerVerticalDown", "RollerVerticalUp", "RollerHorizontalRight", "RollerHorizontalLeft", "Beamos", "AntiFairyCircle", "BigSpike", "Bumper" ] ] #"Ice Palace - Blob Ambush - Zol 2" - [0x001f, 0, ["RollerHorizontalRight", "RollerHorizontalLeft"]] #"Ice Palace - Big Key View - Pengator 1" @@ -82,10 +82,10 @@ UwGeneralDeny: - [ 0x0038, 4, [ "RollerHorizontalRight" ] ] #"Swamp Palace - Long Hall - Kyameron 2" - [ 0x0039, 3, [ "RollerVerticalUp", "RollerHorizontalLeft" ] ] #"Skull Woods - Play Pen - Mini Helmasaur" - [ 0x0039, 4, [ "RollerVerticalUp", "RollerVerticalDown", "RollerHorizontalLeft", "RollerHorizontalRight", "FirebarCW", "FirebarCCW" ] ] #"Skull Woods - Play Pen - Spike Trap 1" - - [0x0039, 5, ["RollerVerticalUp", "RollerVerticalDown", "RollerHorizontalLeft", "Bumper"]] #"Skull Woods - Play Pen - Hardhat Beetle" + - [0x0039, 5, ["RollerVerticalUp", "RollerVerticalDown", "RollerHorizontalLeft", "Bumper", "AntiFairyCircle"]] #"Skull Woods - Play Pen - Hardhat Beetle" - [ 0x0039, 6, [ "RollerVerticalUp", "RollerVerticalDown", "RollerHorizontalLeft", "RollerHorizontalRight", "FirebarCW", "FirebarCCW" ] ] #"Skull Woods - Play Pen - Spike Trap 2" - [0x003a, 1, ["RollerVerticalUp"]] - - [ 0x003b, 1, [ "Bumper" ]] + - [ 0x003b, 1, [ "Bumper", "AntiFairyCircle" ]] - [ 0x003b, 4, ["RollerVerticalUp", "RollerVerticalDown"]] - [ 0x003c, 0, ["BigSpike"]] - [ 0x003c, 1, [ "SparkCW", "SparkCCW", "RollerVerticalUp", "RollerVerticalDown", "RollerHorizontalLeft", "RollerHorizontalRight", "Beamos", "AntiFairyCircle", "BigSpike", "Bumper" ] ] #"Hookshot Cave - Blue Bari 1" @@ -129,8 +129,8 @@ UwGeneralDeny: - [0x004b, 0, ["Beamos", "AntiFairyCircle", "Bumper", "BigSpike"]] #"Palace of Darkness - Mimics 1 - Red Eyegore" - [ 0x004b, 1, [ "RollerHorizontalRight" ] ] #"Palace of Darkness - Warp Hint - Antifairy 1" - [ 0x004b, 5, [ "RollerHorizontalLeft", "RollerHorizontalRight", "AntiFairyCircle", "BigSpike", "Bumper" ] ] #"Palace of Darkness - Jelly Hall - Blue Bari 1" - - [ 0x004b, 6, [ "AntiFairyCircle", "BigSpike" ] ] #"Palace of Darkness - Jelly Hall - Blue Bari 2" - - [ 0x004b, 7, [ "AntiFairyCircle", "BigSpike" ] ] #"Palace of Darkness - Jelly Hall - Blue Bari 3" + - [ 0x004b, 6, [ "AntiFairyCircle", "BigSpike", "Bumper" ] ] #"Palace of Darkness - Jelly Hall - Blue Bari 2" + - [ 0x004b, 7, [ "AntiFairyCircle", "BigSpike", "Bumper" ] ] #"Palace of Darkness - Jelly Hall - Blue Bari 3" - [ 0x004e, 0, [ "RollerHorizontalLeft", "RollerHorizontalRight", "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Ice Palace - Blob Alley - Zol 1" - [ 0x004e, 1, [ "RollerHorizontalLeft", "RollerHorizontalRight", "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Ice Palace - Blob Alley - Zol 2" - [ 0x004e, 2, [ "RollerHorizontalLeft", "RollerHorizontalRight", "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Ice Palace - Blob Alley - Zol 3" @@ -138,9 +138,9 @@ UwGeneralDeny: - [ 0x0050, 1, [ "RollerVerticalUp", "RollerVerticalDown" ] ] #"Hyrule Castle - North West Passage - Green Knife Guard 1" - [ 0x0050, 2, [ "RollerVerticalUp", "RollerVerticalDown" ] ] #"Hyrule Castle - North West Passage - Green Knife Guard 2" - [0x0051, 2, ["Zoro"]] # Zoro clips off and doesn't return - - [ 0x0052, 0, [ "RollerVerticalUp", "RollerVerticalDown", "AntiFairyCircle", "Bumper" ] ] #"Hyrule Castle - North East Passage - Green Guard" - - [ 0x0052, 1, [ "RollerVerticalUp", "RollerVerticalDown", "AntiFairyCircle", "Bumper" ] ] #"Hyrule Castle - North East Passage - Green Knife Guard 1" - - [ 0x0052, 2, [ "RollerVerticalUp", "RollerVerticalDown", "AntiFairyCircle", "Bumper" ] ] #"Hyrule Castle - North East Passage - Green Knife Guard 2" + - [ 0x0052, 0, [ "RollerVerticalUp", "RollerVerticalDown", "AntiFairyCircle", "Bumper", "Zoro"]] #"Hyrule Castle - North East Passage - Green Guard" + - [ 0x0052, 1, [ "RollerVerticalUp", "RollerVerticalDown", "AntiFairyCircle", "Bumper", "Zoro"]] #"Hyrule Castle - North East Passage - Green Knife Guard 1" + - [ 0x0052, 2, [ "RollerVerticalUp", "RollerVerticalDown", "AntiFairyCircle", "Bumper", "Zoro"]] #"Hyrule Castle - North East Passage - Green Knife Guard 2" - [ 0x0053, 1, [ "AntiFairyCircle", "Bumper" ] ] #"Desert Palace - Bridge - Beamos 1" - [ 0x0053, 5, [ "RollerVerticalDown" ] ] #"Desert Palace - Popo Genocide - Popo TL" - [ 0x0053, 7, ["Beamos", "AntiFairyCircle", "Bumper", "RollerVerticalUp", "RollerVerticalDown"]] #"Desert Palace - Bridge - Popo 5" @@ -166,7 +166,7 @@ UwGeneralDeny: - [ 0x0058, 4, ["Statue"]] - [ 0x0058, 6, ["Statue"]] - [ 0x0058, 7, [ "RollerHorizontalLeft", "Statue" ] ] #"Skull Woods - Lever Room - Hardhat Beetle 2" - - [ 0x0058, 8, ["Statue"]] + - [ 0x0058, 8, ["Statue", "AntiFairyCircle", "Bumper"]] - [ 0x0059, 0, [ "RollerVerticalUp", "RollerVerticalDown", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Skull Woods - Bridge Room - Mini Moldorm 1" - [ 0x0059, 1, [ "RollerVerticalUp", "RollerVerticalDown", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Skull Woods - Bridge Room - Mini Moldorm 2" - [0x0059, 5, ["RollerVerticalUp", "RollerVerticalDown", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper"]] @@ -177,7 +177,7 @@ UwGeneralDeny: - [ 0x005f, 1, [ "RollerVerticalDown", "RollerHorizontalRight" ] ] #"Ice Palace - Bari University - Blue Bari 2" - [ 0x0060, 0, [ "RollerVerticalUp", "RollerHorizontalLeft", "AntiFairyCircle", "BigSpike", "Bumper", "Beamos", "SpikeBlock" ] ] #"Hyrule Castle - West - Blue Guard" - [ 0x0062, 0, [ "RollerVerticalUp", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Hyrule Castle - East - Blue Guard" - - [ 0x0064, 2, [ "Bumper" , "Beamos" ] ] #"Thieves' Town - Attic Hall Left - Keese 2" + - [ 0x0064, 2, [ "Bumper", "AntiFairyCircle", "Beamos" ] ] #"Thieves' Town - Attic Hall Left - Keese 2" - [ 0x0064, 3, [ "Wizzrobe", "Statue" ] ] # Wizzrobes can't spawn on pots - [ 0x0064, 4, [ "RollerHorizontalLeft", "RollerHorizontalRight" ] ] #"Thieves' Town - Attic Hall Left - Rat 1" - [ 0x0065, 0, [ "RollerVerticalUp", "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Thieves' Town - Attic Window - Rat 1" @@ -186,9 +186,9 @@ UwGeneralDeny: - [ 0x0066, 0, [ "Beamos", "AntiFairyCircle", "BigSpike", "Bumper" ] ] #"Swamp Palace - Waterfall Room - Hover 1" - [ 0x0066, 2, [ "AntiFairyCircle", "Bumper"]] - [ 0x0067, 1, [ "RollerVerticalUp", "RollerVerticalDown", "AntiFairyCircle", "Bumper"]] #"Skull Woods - Firebar Pits - Blue Bari 1" - - [ 0x0067, 2, ["Bumper"]] #"Skull Woods - Firebar Pits - Blue Bari 2" + - [ 0x0067, 2, ["Bumper", "AntiFairyCircle"]] #"Skull Woods - Firebar Pits - Blue Bari 2" - [ 0x0067, 3, [ "RollerVerticalUp", "RollerVerticalDown" ] ] #"Skull Woods - Firebar Pits - Hardhat Beetle 1" - - [ 0x0067, 4, [ "AntiFairyCircle", "Bumper" ]] + - [0x0067, 4, [ "AntiFairyCircle", "Bumper", "RollerVerticalUp"]] - [ 0x0067, 5, ["RollerVerticalDown", "Beamos"]] #"Skull Woods - Firebar Pits - Hardhat Beetle 3" - [ 0x0067, 6, [ "RollerVerticalDown" ] ] #"Skull Woods - Firebar Pits - Hardhat Beetle 4" - [ 0x0067, 7, [ "Beamos", "AntiFairyCircle", "Bumper", "BunnyBeam" ] ] #"Skull Woods - Firebar Pits - Fire Bar (Clockwise)" @@ -209,6 +209,7 @@ UwGeneralDeny: - [ 0x0076, 3, [ "RollerVerticalUp", "RollerVerticalDown", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Swamp Palace - Toilet Left - Hover 2" - [ 0x0076, 4, [ "RollerVerticalUp", "RollerVerticalDown", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Swamp Palace - Toilet Left - Zol" - [ 0x0076, 6, [ "RollerVerticalDown", "RollerHorizontalRight", "Beamos", "AntiFairyCircle", "BigSpike", "Bumper" ] ] #"Swamp Palace - Toilet Left - Blue Bari" + - [0x0077, 0, [ "AntiFairyCircle", "Bumper"]] - [ 0x007b, 0, [ "RollerHorizontalLeft", "RollerHorizontalRight", "AntiFairyCircle", "BigSpike", "Bumper" ] ] #"Ganon's Tower - DMs Room - Blue Bari 1" - [ 0x007b, 1, [ "AntiFairyCircle", "BigSpike", "Bumper" ] ] #"Ganon's Tower - DMs Room - Blue Bari 2" - [ 0x007b, 6, [ "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Ganon's Tower - DMs Room - Statue" @@ -239,6 +240,7 @@ UwGeneralDeny: - [ 0x0084, 1, [ "RollerVerticalUp", "RollerVerticalDown", "RollerHorizontalRight", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Desert Palace - Main Room - Left - Leever 2" - [ 0x0085, 2, [ "RollerHorizontalRight" ] ] #"Desert Palace - Compass Room - Popo TL" - [ 0x0085, 7, [ "RollerVerticalUp", "RollerVerticalDown", "RollerHorizontalLeft", "RollerHorizontalRight", "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Desert Palace - Right Hallway - Leever 2" + - [0x0087, 0, ["RollerHorizontalLeft"]] # First moldorm in Tri-dorm room - [ 0x008b, 3, ["RollerHorizontalRight"]] - [ 0x008b, 4, [ "Statue", "RollerVerticalUp", "RollerVerticalDown", "Beamos", "AntiFairyCircle", "Bumper", "BigSpike"]] #"Ganon's Tower - Map Room - Spike Trap" - [ 0x008b, 6, [ "Beamos", "AntiFairyCircle", "BigSpike", "Bumper" ] ] #"Ganon's Tower - Map Room - Fire Bar (Clockwise)" @@ -254,10 +256,10 @@ UwGeneralDeny: - [ 0x0092, 8, [ "RollerVerticalUp", "Beamos", "AntiFairyCircle", "Bumper" ] ] #"Misery Mire - Dark Weave - Spike Trap" - [ 0x0092, 9, [ "RollerHorizontalRight" ] ] #"Misery Mire - Dark Weave - Antifairy 3" - [ 0x0092, 10, [ "RollerHorizontalLeft" ] ] #"Misery Mire - Dark Weave - Stalfos" - - [ 0x0095, 0, [ "RollerVerticalUp", "RollerVerticalDown", "RollerHorizontalRight", "AntiFairyCircle", "BigSpike", "SpikeBlock" ] ] #"Ganon's Tower - Conveyer Falling Bridge - Red Spear Guard 1" + - [ 0x0095, 0, [ "RollerVerticalUp", "RollerVerticalDown", "RollerHorizontalRight", "AntiFairyCircle", "Bumper", "BigSpike", "SpikeBlock" ] ] #"Ganon's Tower - Conveyer Falling Bridge - Red Spear Guard 1" - [ 0x0095, 1, [ "Statue", "RollerVerticalUp", "RollerVerticalDown", "RollerHorizontalRight", "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Ganon's Tower - Conveyer Falling Bridge - Red Spear Guard 2" - [ 0x0095, 2, [ "Statue", "RollerVerticalUp", "RollerVerticalDown", "RollerHorizontalLeft", "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Ganon's Tower - Conveyer Falling Bridge - Red Spear Guard 3" - - [ 0x0095, 3, [ "RollerVerticalUp", "RollerVerticalDown", "RollerHorizontalLeft", "AntiFairyCircle", "BigSpike", "SpikeBlock" ] ] #"Ganon's Tower - Conveyer Falling Bridge - Red Spear Guard 4" + - [ 0x0095, 3, [ "RollerVerticalUp", "RollerVerticalDown", "RollerHorizontalLeft", "AntiFairyCircle", "Bumper", "BigSpike", "SpikeBlock" ] ] #"Ganon's Tower - Conveyer Falling Bridge - Red Spear Guard 4" - [ 0x0096, 0, [ "RollerVerticalUp", "RollerVerticalDown", "RollerHorizontalLeft", "RollerHorizontalRight", "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Ganon's Tower - Torches 1 - Fire Bar (Clockwise)" - [ 0x0098, 0, [ "RollerVerticalUp", "RollerVerticalDown", "RollerHorizontalLeft", "RollerHorizontalRight", "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Misery Mire - Entrance - Zol 1" - [ 0x0098, 1, [ "RollerVerticalUp", "RollerVerticalDown", "RollerHorizontalLeft", "RollerHorizontalRight", "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Misery Mire - Entrance - Zol 2" @@ -278,7 +280,7 @@ UwGeneralDeny: - [ 0x009c, 4, [ "RollerVerticalUp", "RollerVerticalDown", "RollerHorizontalLeft", "RollerHorizontalRight", "AntiFairyCircle", "BigSpike", "Bumper" ] ] #"Ganon's Tower - Invisible Floor Maze - Hardhat Beetle 4" - [ 0x009c, 5, [ "RollerVerticalUp", "AntiFairyCircle", "BigSpike", "Bumper" ] ] #"Ganon's Tower - Invisible Floor Maze - Hardhat Beetle 5" - [0x009c, 6, ["AntiFairyCircle", "Bumper"]] - - [0x009d, 2, ["AntiFairyCircle"]] + - [0x009d, 2, ["AntiFairyCircle", "Bumper"]] - [ 0x009d, 3, [ "RollerVerticalUp", "RollerVerticalDown", "RollerHorizontalLeft", "RollerHorizontalRight", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Ganon's Tower - Compass Room - Gibdo 2" - [ 0x009d, 6, [ "RollerHorizontalLeft", "RollerHorizontalRight" ] ] #"Ganon's Tower - Compass Room - Blue Bari 1" - [ 0x009d, 7, [ "RollerHorizontalLeft", "RollerHorizontalRight", "AntiFairyCircle", "BigSpike", "Bumper" ] ] #"Ganon's Tower - Compass Room - Blue Bari 2" @@ -305,7 +307,7 @@ UwGeneralDeny: - [0x00b0, 8, [ "StalfosKnight", "Blob", "Stal", "Wizzrobe"]] # blocked, but Geldmen are probably okay - [ 0x00b1, 2, [ "RollerVerticalUp", "RollerVerticalDown" ] ] #"Misery Mire - Hourglass - Spike Trap 1" - [ 0x00b1, 3, [ "RollerVerticalUp", "RollerVerticalDown" ] ] #"Misery Mire - Hourglass - Spike Trap 2" - - [ 0x00b1, 4, ["Bumper", "BigSpike", "AntiFairyCircle" ]] + - [0x00b1, 4, ["Bumper", "BigSpike", "AntiFairyCircle", "Statue"]] # Wizzrobe near door - [ 0x00b2, 1, [ "Wizzrobe", "Statue" ] ] # Wizzrobes can't spawn on pots - [ 0x00b2, 3, [ "Wizzrobe", "Statue" ] ] # Wizzrobes can't spawn on pots - [ 0x00b2, 6, [ "RollerVerticalUp", "RollerHorizontalLeft" ] ] #"Misery Mire - Sluggula Cross - Sluggula TR" @@ -332,12 +334,12 @@ UwGeneralDeny: - [ 0x00bc, 7, [ "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Thieves' Town - Toilet - Stalfos 3" - [ 0x00bc, 8, [ "RollerVerticalUp", "RollerVerticalDown" ] ] #"Thieves' Town - Toilet - Stalfos 4" - [ 0x00bf, 0, [ "Wizzrobe", "Statue" ] ] # Wizzrobes can't spawn on collision - - [ 0x00c1, 3, [ "RollerVerticalUp", "RollerHorizontalLeft", "Bumper" ] ] #"Misery Mire - 4 Rails - Stalfos 1" + - [ 0x00c1, 3, [ "RollerVerticalUp", "RollerHorizontalLeft", "Bumper", "AntiFairyCircle" ] ] #"Misery Mire - 4 Rails - Stalfos 1" - [ 0x00c2, 0, [ "RollerHorizontalLeft", "RollerHorizontalRight" ] ] #"Misery Mire - Main Lobby - blue - Fire Snake 1" - [ 0x00c2, 5, [ "Wizzrobe", "Statue" ] ] # Wizzrobes can't spawn on pots - [ 0x00c5, 6, [ "RollerVerticalUp", "RollerVerticalDown", "RollerHorizontalLeft", "RollerHorizontalRight", "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Turtle Rock - Catwalk - Mini Helmasaur" - [ 0x00c5, 7, [ "Statue" ] ] #"Turtle Rock - Catwalk - Laser Eye (Left) 4" - - [0x00c6, 5, ["Bumper"]] + - [0x00c6, 5, ["Bumper", "AntiFairyCircle"]] - [ 0x00cb, 0, [ "Wizzrobe", "Statue" ] ] # Wizzrobes can't spawn on pots - [ 0x00cb, 3, [ "RollerVerticalUp", "RollerVerticalDown", "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Thieves' Town - Grand Room NW - Zol 1" - [ 0x00cb, 5, [ "RollerVerticalUp", "RollerVerticalDown", "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Thieves' Town - Grand Room NW - Zol 2" @@ -385,11 +387,11 @@ UwGeneralDeny: - [ 0x00d8, 8, [ "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Eastern Palace - Kill Room 1 - Red Eyegore" - [ 0x00d9, 1, [ "RollerHorizontalRight" ] ] #"Eastern Palace - Dodgeball - Green Eyegore 1" - [ 0x00db, 0, [ "Wizzrobe", "Statue" ] ] # Wizzrobes can't spawn on pots - - [ 0x00db, 3, [ "Bumper" ] ] # Okay in vanilla + - [ 0x00db, 3, [ "Bumper", "AntiFairyCircle" ] ] # Okay in vanilla - [ 0x00dc, 2, [ "AntiFairyCircle", "BigSpike", "Bumper" ] ] - [ 0x00dc, 9, [ "RollerVerticalDown", "RollerHorizontalLeft", "RollerHorizontalRight", "Beamos", "AntiFairyCircle", "BigSpike", "Bumper" ] ] #"Thieves' Town - Grand Room SE - Fire Snake 2" - [ 0x00df, 0, [ "RollerVerticalDown", "RollerHorizontalRight", "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Paradox Cave - Top - Mini Moldorm 1" - - [ 0x00df, 1, [ "RollerVerticalDown", "RollerHorizontalRight", "AntiFairyCircle" ] ] #"Paradox Cave - Top - Mini Moldorm 2" + - [ 0x00df, 1, [ "RollerVerticalDown", "RollerHorizontalRight", "AntiFairyCircle", "Bumper" ] ] #"Paradox Cave - Top - Mini Moldorm 2" - [ 0x00e4, 0, [ "RollerHorizontalLeft", "RollerHorizontalRight", "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Old Man Home - Keese 1" - [ 0x00e4, 1, [ "RollerHorizontalLeft", "RollerHorizontalRight", "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Old Man Home - Keese 2" - [ 0x00e4, 2, [ "RollerHorizontalLeft", "RollerHorizontalRight", "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Old Man Home - Keese 3" @@ -420,8 +422,8 @@ UwGeneralDeny: - [0x0107, 1, ["Beamos", "Bumper", "BigSpike", "AntiFairyCircle"]] - [0x0107, 2, ["Beamos", "Bumper", "BigSpike", "AntiFairyCircle"]] - [0x010b, 6, ["RollerHorizontalRight"]] - - [0x010c, 4, ["AntiFairyCircle"]] - - [0x010c, 5, ["AntiFairyCircle"]] + - [0x010c, 4, ["AntiFairyCircle", "Bumper"]] + - [0x010c, 5, ["AntiFairyCircle", "Bumper"]] - [0x010c, 6, ["StalfosKnight", "Geldman", "Blob", "Stal", "Wizzrobe"]] - [0x010c, 7, ["StalfosKnight", "Geldman", "Blob", "Stal", "Wizzrobe"]] - [0x011e, 0, ["RollerVerticalDown"]] @@ -450,6 +452,7 @@ OwGeneralDeny: - [0x40, 16, ["RollerVerticalUp", "RollerVerticalDown"]] # Ropa near back hole is really large as a roller - [0x55, 6, ["BigSpike"]] - [0x57, 5, ["RollerVerticalUp", "RollerVerticalDown"]] + - [0x5b, 0, ["AntiFairyCircle", "Bumper"]] # ropa on pyramid - [0x5e, 0, ["Gibo"]] # kiki eating Gibo - [0x5e, 1, ["Gibo", "RollerVerticalUp", "RollerVerticalDown"]] # kiki eating Gibo - [0x5e, 2, ["Gibo"]] # kiki eating Gibo @@ -473,9 +476,9 @@ OwGeneralDeny: - [0x5e, 20, ["Gibo"]] # kiki eating Gibo - [0x62, 1, ["RollerVerticalUp", "RollerVerticalDown"]] # hard to avoid roller around hammer pegs - [0x62, 3, ["RollerVerticalUp", "RollerVerticalDown"]] # hard to avoid roller around hammer pegs - - [0x6d, 3, ["Bumper"]] # can block path with multiple bumpers - - [0x77, 1, ["Bumper"]] # soft-lock potential near ladder - - [0x7f, 1, ["Bumper"]] # soft-lock potential near ladder + - [0x6d, 3, ["Bumper", "AntiFairyCircle"]] # can block path with multiple bumpers + - [0x77, 1, ["Bumper", "AntiFairyCircle"]] # soft-lock potential near ladder + - [0x7f, 1, ["Bumper", "AntiFairyCircle"]] # soft-lock potential near ladder UwEnemyDrop: - [0x0085, 9, ["Babasu"]] # ran off the edge and didn't return - [0x00cb, 3, ["Zoro"]] # layer issues @@ -576,7 +579,7 @@ UwEnemyDrop: "BombGuard", "GreenKnifeGuard", "Stal", "GreenMimic", "RedMimic", "StalfosKnight", "Geldman", "Blob"]] - [0x00c6, 5, ["HardhatBeetle", "Wizzrobe", "MiniHelmasaur", "BlueGuard", "GreenGuard", "RedSpearGuard", "Hover", "BluesainBolt", "UsainBolt", "BlueArcher", "GreenBushGuard", "RedJavelinGuard", "RedBushGuard", - "BombGuard", "GreenKnifeGuard", "Bumper", "Stal", "GreenMimic", "RedMimic", "StalfosKnight", "Geldman", "Blob"]] + "BombGuard", "GreenKnifeGuard", "Bumper", "AntiFairyCircle", "Stal", "GreenMimic", "RedMimic", "StalfosKnight", "Geldman", "Blob"]] - [0x00c6, 6, ["HardhatBeetle", "Wizzrobe", "MiniHelmasaur", "BlueGuard", "GreenGuard", "RedSpearGuard", "Hover", "BluesainBolt", "UsainBolt", "BlueArcher", "GreenBushGuard", "RedJavelinGuard", "RedBushGuard", "BombGuard", "GreenKnifeGuard", "Stal", "GreenMimic", "RedMimic", "StalfosKnight", "Geldman", "Blob"]] @@ -621,6 +624,7 @@ UwEnemyDrop: - [0x0067, 6, ["Wizzrobe"]] - [0x0067, 7, ["Wizzrobe", "Stal"]] - [0x0067, 8, ["Wizzrobe", "Stal"]] + - [0x006b, 4, ["Wizzrobe"]] # crystal switch interaction? - [0x0074, 5, ["Wizzrobe"]] - [0x007c, 1, ["Wizzrobe", "Stal"]] - [0x007c, 3, ["Wizzrobe", "Stal"]] From f3b774ad7f67411fe6781da9c184f39119651433 Mon Sep 17 00:00:00 2001 From: aerinon Date: Mon, 28 Apr 2025 12:34:19 -0600 Subject: [PATCH 6/7] fix: attempt at fixing moth conveyor room timing --- RELEASENOTES.md | 1 + Rom.py | 2 +- data/base2current.bps | Bin 117954 -> 117959 bytes source/enemizer/Bossmizer.py | 4 ++-- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 3fbbb257..fc754596 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -1,6 +1,7 @@ # Patch Notes * 1.4.9 + * Attempted fix for Moth conveyor room timing. THank for many people's input. Unsure if Helmacopter is still acceptable. * Mirror scroll will show up on file start screen if enabled (thanks Clearmouse!) * Fixes for HMG by Muffins * Various fixes for Enemizer by Codemann (gfx fixes, more randomization options) diff --git a/Rom.py b/Rom.py index 04b08fb2..0961df7c 100644 --- a/Rom.py +++ b/Rom.py @@ -42,7 +42,7 @@ from source.enemizer.Enemizer import write_enemy_shuffle_settings JAP10HASH = '03a63945398191337e896e5771f77173' -RANDOMIZERBASEHASH = '403d349584246fd845c3a9c78a55b3d4' +RANDOMIZERBASEHASH = '54eaa40cc69c54b9d790b9c4ea107f4d' class JsonRom(object): diff --git a/data/base2current.bps b/data/base2current.bps index 0292d6f7bd5188d22f912d6816b65e3388782b64..d0cdd7d679a902d0d1b30607297ef54cbdf0ebed 100644 GIT binary patch delta 1291 zcmWNNYfO`87>1t*YALqVic~7dp$Nh_h?Q9nsKA(rb0```L;_53tH-MI00GAP0Ts&p z5cpPK0in?{h*pBJLC`9Na{NFC`fKxtbD43D7{L&xZfMtk_jTv`ap$(zyA9X7-Ewgi zocfOyScI+u1OxEC$pa$-A$bFpTRLi4r+VahE(|ojX^Hfnd%EhQY$4-kz6}t(aa4p(Y zd}^81nq4r$a`jY@00%7tXRo_pQrYo>uHyxGAQ5Njj+u`tYq z7~)_9gn?c57bja>-sZLWZO4{4AXFlzslDipAym_g2R(|?M(Zj&s`T&)+KTDZUR>dp z>>(jWaWP%chXtsn`aV=)F17aI<#3x|bKH#C9@t~mG+%?f|S#ydCI zs|`RP0alt8(qcR6Fq69W<8~~hyZUjN=k_li+WnLDb@PhOGiy!TNTZxq^y5Ld`O%9= zA~{B9`f;r+-p7j=3r=0u%c9;Lit=1|@RaL)KGoR3e!~e8i z;PR-?Ao}@dYtx8<0XsYd`-Qq=1%}!LC;fb5S%|wS_8_S7F3(E>C`aB zxUUEs*DGLyC4okaU^#}xzZ+t!rzQexYlDJAyAc{e%t3>wMfCM=>ycvSinpAZw8 z?}V(?3GMbE!l`I0kJ*dT_T6J8;1Bj11GvEtz?$|_#VCG-c{FzvqnG&# zy@@^>9Ij0I?#09&8eUbm?iA0=aN#z#AIiY!5lTBpv1rGxC{JRqw))<^C~Lb>!|mC> zm>3o6A=Vpw!M69X)tD0~Ax$&z0e*#7V9Rw9^*SmhmqJ!q4IiNp-o3xHUhzkxtFvnq zC@2|2xp09x#c9#TF^s?%Iy{DJwqzaYW=c3MF&AEGy=-#d7fskt-~hT?U4Q#0P9l?& zi@{d9wVat73;D9DOTDp52Vh&GkrEnwP)eGW-<36FO?%VL5AlpB#@5xWvRQ-w2RxPx AH2?qr delta 1290 zcmWNPdrXsO7{#BbR4!7Wa%%;-qacb>QA8Ahp#hv2G>QV7#0!ET)C(#I!uxU2mRUr; zl~+LMMjcKncCk?ywOoo^3OdlmWLp+=(M&W(Fbu^_{nr1^?<6OAa-K6(Z)L2v`iW=3 zkLG$nXKBF~_qJWXNKW{l$#t>^p{!HiS>5G`6 zTjLdGX>&$)=T!~n__A#N;=A~al`L6_FLnEtsOMuRJ5Lgf{cNaYHQv-^N!D+~QTD1d z34hhiN;N$6*L{E7myg}Ld#A4RFseMSup_S!_s8NJ`tU9uTkt2ChBf?hWeS>>j=QQ@ z15GiY_jctTG~F2YP+d@JkqMg?wCwx3y6Me~pzJM}EcL%D{LwU_p$a*eu4?8KmS|d} z47=kA9BPU)(o( z#>;Ex6`y0m)nAfED|(?HGpveNIFVSAPUreDT)4{3nW%D(-5#v&h{(RJ4yDoe@Sgjb z%$LnJF5j>LQXf)P)o-6QpU{}>cdZxLWa>459=M%G4xq>~ydar0?xU##=!aWr$p8l7 zQhI#=4=+#6=#m3OHRfEY%P-Pa3Iuhfxwo6wxohjP9T-W~DWv69hUiA792789b zxsblu*`w2Qb5}k-TJagd+~zC2SNR`>)#~l^pCJsj@eUl5i(!KTiUsK*Fy!DN~>f-C*(EJZ|~ z4x9zEWv44K1_V{rt~+jGX4s$}ML(2-s&onM8o}c1O~H=DSgm*e`J(VzTMZkR=1NrJ zut9|g+@WW8wqCWv+q~-;_yE7bB=qbu6SX{IOX?P{(knkf5xk$PixB_ScrwS9G@cTf z51xQ}uwo-fv(v$=7yZxG%G4N^Xb#cuMsXP~ruRp2ZCp}LCsWEwiKggE>t%J(o|Q!L z+5BX>GpzpBw`_@n3%Tg8rwJ9z$5GLys*b?Os!D(!+bnxRT{G-SvrlGu!`|soy5&Be Pv|j!E)~3fT`40aB&|e%t diff --git a/source/enemizer/Bossmizer.py b/source/enemizer/Bossmizer.py index 85b8a3c2..6c262e38 100644 --- a/source/enemizer/Bossmizer.py +++ b/source/enemizer/Bossmizer.py @@ -110,8 +110,8 @@ def add_kholdstare_to_list(sprite_list, room_id): def add_vitreous_to_list(sprite_list, room_id): - 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)) + sprite_list[:] = [x for x in sprite_list if x.sub_type == SpriteType.Overlord] # vitreous does not play nice which other sprites on the tile, just kill them + sprite_list.insert(0, create_sprite(room_id, EnemySprite.Vitreous, 0x00, 0, 0x07, 0x05)) def add_trinexx_to_list(sprite_list, room_id): From 4657aaf0b68e92a464bbc916083b2f188d957d06 Mon Sep 17 00:00:00 2001 From: aerinon Date: Mon, 28 Apr 2025 14:16:31 -0600 Subject: [PATCH 7/7] fix: some customizer generation issues --- DoorShuffle.py | 5 ++++- DungeonGenerator.py | 9 +++++---- RELEASENOTES.md | 1 + 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/DoorShuffle.py b/DoorShuffle.py index 0369ff5c..e2e25390 100644 --- a/DoorShuffle.py +++ b/DoorShuffle.py @@ -1062,8 +1062,11 @@ def handle_split_dungeons(dungeon_builders, recombinant_builders, entrances_map, for name, split_list in split_dungeon_entrances.items(): builder = dungeon_builders.pop(name) - recombinant_builders[name] = builder + if all(len(sector.outstanding_doors) <= 0 for sector in builder.sectors): + dungeon_builders[name] = builder + continue + recombinant_builders[name] = builder split_builders = split_dungeon_builder(builder, split_list, builder_info) dungeon_builders.update(split_builders) for sub_name, split_entrances in split_list.items(): diff --git a/DungeonGenerator.py b/DungeonGenerator.py index 2cae4254..58b86adf 100644 --- a/DungeonGenerator.py +++ b/DungeonGenerator.py @@ -1342,10 +1342,6 @@ def create_dungeon_builders(all_sectors, connections_tuple, world, player, dunge if not sector: sector = find_sector(r_name, all_sectors) reverse_d_map[sector] = key - if world.mode[player] == 'standard': - if 'Hyrule Castle' in dungeon_map: - current_dungeon = dungeon_map['Hyrule Castle'] - standard_stair_check(dungeon_map, current_dungeon, candidate_sectors, global_pole) complete_dungeons = {x: y for x, y in dungeon_map.items() if sum(len(sector.outstanding_doors) for sector in y.sectors) <= 0} [dungeon_map.pop(key) for key in complete_dungeons.keys()] @@ -1354,6 +1350,11 @@ def create_dungeon_builders(all_sectors, connections_tuple, world, player, dunge dungeon_map.update(complete_dungeons) return dungeon_map + if world.mode[player] == 'standard': + if 'Hyrule Castle' in dungeon_map: + current_dungeon = dungeon_map['Hyrule Castle'] + standard_stair_check(dungeon_map, current_dungeon, candidate_sectors, global_pole) + # categorize sectors identify_destination_sectors(accessible_sectors, reverse_d_map, dungeon_map, connections, dungeon_entrances, split_dungeon_entrances) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index fc754596..a0e3ee1c 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -6,4 +6,5 @@ * Fixes for HMG by Muffins * Various fixes for Enemizer by Codemann (gfx fixes, more randomization options) * Vanilla door shuffle prevents big key doors changes from door_type_mode + * Couple of minor fixes to custom generation. Deals with a complete specification of all dungeons * Various enemizer bans for blocked paths (thanks to all the reports, Q1 2025)