diff --git a/RELEASENOTES.md b/RELEASENOTES.md index b38e23e8..c875b8ab 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -141,6 +141,12 @@ These are now independent of retro mode and have three options: None, Random, an # Bug Fixes and Notes +* 1.3.0.5v + * Hud/Map Counter: Collecting a keys for this dungeon of a bonk torch no longer increments the counter twice and immediately updates the hud. + * Enemizer: Hera basement item counting twice fixed by banning wallmasters on the tile. + * Enemizer: Statues banned offscreen for pull switches + * Enemizer: Several sprite producing enemies have been limited on crowded tiles. Offenders: Hinox, Sluggula, Bomb Guard, Beamos, Gibo, Wall Cannons, Probe using Guards. Others do not spam as many projectiles. + * Enemizer: More enemy bans (mostly Wizzrobes near walls where they won't spawn, couple missed firebar spots) * 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 diff --git a/Rom.py b/Rom.py index 42d39e04..4995784b 100644 --- a/Rom.py +++ b/Rom.py @@ -40,7 +40,7 @@ from source.enemizer.Enemizer import write_enemy_shuffle_settings JAP10HASH = '03a63945398191337e896e5771f77173' -RANDOMIZERBASEHASH = '4935e770465a9fa00a1d642a657e43a8' +RANDOMIZERBASEHASH = 'cafcf71aefe71fc6cd8ab8fef06794b0' class JsonRom(object): diff --git a/data/base2current.bps b/data/base2current.bps index e6b5fa48..85192376 100644 Binary files a/data/base2current.bps and b/data/base2current.bps differ diff --git a/source/dungeon/EnemyList.py b/source/dungeon/EnemyList.py index 7735c635..d69a0a88 100644 --- a/source/dungeon/EnemyList.py +++ b/source/dungeon/EnemyList.py @@ -181,7 +181,7 @@ class EnemySprite(FastEnum): Gibdo = 0x8b Arrghus = 0x8c Arrghi = 0x8d - Terrorpin = 0x8e + Terrorpin = 0x8e Blob = 0x8f Wallmaster = 0x90 StalfosKnight = 0x91 diff --git a/source/enemizer/Enemizer.py b/source/enemizer/Enemizer.py index 539591d1..411011a8 100644 --- a/source/enemizer/Enemizer.py +++ b/source/enemizer/Enemizer.py @@ -268,6 +268,21 @@ def get_randomize_able_sprites_ow(area_id, data_tables): sprite_limiter = { EnemySprite.Debirando: 2, EnemySprite.DebirandoPit: 2, + EnemySprite.Hinox: 2, + EnemySprite.Sluggula: 2, + EnemySprite.BombGuard: 2, + EnemySprite.Beamos: 2, + EnemySprite.Gibo: 2, + # EnemySprite.CannonTrooper: 2, ?? + EnemySprite.WallCannonHorzTop: 2, + EnemySprite.WallCannonHorzBottom: 2, + EnemySprite.WallCannonVertLeft: 2, + EnemySprite.WallCannonVertRight: 2, + EnemySprite.BlueArcher: 2, + EnemySprite.BlueGuard: 2, + EnemySprite.GreenGuard: 2, + EnemySprite.RedSpearGuard: 2, + EnemySprite.RedJavelinGuard: 2, EnemySprite.AntiFairyCircle: 4 } @@ -300,7 +315,8 @@ def randomize_underworld_rooms(data_tables, world, player, custom_uw): data_tables.room_headers[room_id].sprite_sheet = chosen_sheet.id - 0x40 candidate_sprites = get_possible_enemy_sprites(room_id, chosen_sheet, uw_candidates, data_tables) randomized = True - wallmaster_chosen = room_id in {0x0039, 0x0049, 0x0056, 0x0057, 0x0068, 0x008d} + # wallmaster in hera basement throws off hera basement key code + wallmaster_chosen = room_id in {0x0039, 0x0049, 0x0056, 0x0057, 0x0068, 0x0087, 0x008d} for i, sprite in randomizeable_sprites.items(): if room_id in custom_uw and i in custom_uw[room_id]: sprite.kind = sprite_translation[custom_uw[room_id][i]] diff --git a/source/enemizer/enemy_deny.yaml b/source/enemizer/enemy_deny.yaml index 0af02b7c..b0b1854b 100644 --- a/source/enemizer/enemy_deny.yaml +++ b/source/enemizer/enemy_deny.yaml @@ -1,10 +1,16 @@ UwGeneralDeny: - - [ 0x0002, 0, [ "RollerVerticalDown" ] ] #"Sewers - Rat Pots - Rat 1" - - [ 0x0002, 1, [ "RollerVerticalDown" ] ] #"Sewers - Rat Pots - Rat 2" - - [ 0x0002, 2, [ "RollerVerticalUp" ] ] #"Sewers - Rat Pots - Rat 3" - - [ 0x0002, 3, [ "RollerVerticalUp" ] ] #"Sewers - Rat Pots - Rat 4" + - [ 0x0002, 0, [ "RollerVerticalDown", "Statue" ] ] #"Sewers - Rat Pots - Rat 1" + - [ 0x0002, 1, [ "RollerVerticalDown", "Statue" ] ] #"Sewers - Rat Pots - Rat 2" + - [ 0x0002, 2, [ "RollerVerticalUp", "Statue" ] ] #"Sewers - Rat Pots - Rat 3" + - [ 0x0002, 3, [ "RollerVerticalUp", "Statue" ] ] #"Sewers - Rat Pots - Rat 4" + - [ 0x0002, 4, [ "Statue" ] ] #"Sewers - Rat Pots - Rat 5" - [ 0x0002, 15, [ "RollerVerticalDown", "RollerVerticalUp", "RollerHorizontalRight", "RollerHorizontalLeft" ] ] #"Sewers - Rat Pots - Rat 6" - [ 0x0002, 16, [ "RollerVerticalDown", "RollerVerticalUp", "RollerHorizontalRight", "RollerHorizontalLeft" ] ] #"Sewers - Rat Pots - Rat 7" + - [ 0x0004, 1, ["Statue"]] + - [ 0x0004, 2, ["Statue"]] + - [ 0x0004, 3, ["Statue"]] + - [ 0x0004, 4, ["Statue"]] + - [ 0x0004, 15, ["Statue"]] - [ 0x000a, 0, [ "RollerVerticalDown", "RollerVerticalUp" ] ] #"Palace of Darkness - Basement Ledge - Terrorpin 1" - [ 0x000a, 1, [ "RollerHorizontalRight", "RollerHorizontalLeft" ] ] #"Palace of Darkness - Basement Ledge - Terrorpin 2" - [ 0x000b, 1, [ "RollerVerticalDown", "RollerHorizontalRight", "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Palace of Darkness - Callback - Terrorpin 1" @@ -73,9 +79,9 @@ UwGeneralDeny: - [ 0x003d, 10, [ "RollerVerticalUp", "RollerVerticalDown", "RollerHorizontalLeft", "RollerHorizontalRight", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Ganon's Tower - Torches 2 - Spark (Clockwise) 1" - [ 0x003d, 12, [ "AntiFairyCircle", "Bumper" ] ] #"Ganon's Tower - Torches 2 - Bunny Beam" - [ 0x003d, 13, [ "AntiFairyCircle", "Bumper" ] ] #"Ganon's Tower - Torches 2 - Antifairy" - - [ 0x003f, 1, [ "RollerHorizontalLeft", "RollerHorizontalRight", "AntiFairyCircle", "BigSpike", "FirebarCW", "FirebarCCW", "SpikeBlock", "Bumper" ] ] #"Ice Palace - P Room - Stalfos Knight 1" - - [ 0x003f, 3, [ "RollerVerticalUp", "RollerVerticalDown", "RollerHorizontalLeft", "RollerHorizontalRight", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Ice Palace - P Room - Stalfos Knight 2" - - [ 0x003f, 4, [ "Wizzrobe" ] ] # Wizzrobes can't spawn on pots + - [ 0x003f, 1, [ "RollerHorizontalLeft", "RollerHorizontalRight", "AntiFairyCircle", "BigSpike", "FirebarCW", "FirebarCCW", "SpikeBlock", "Bumper", "Statue"] ] #"Ice Palace - P Room - Stalfos Knight 1" + - [ 0x003f, 3, [ "RollerVerticalUp", "RollerVerticalDown", "RollerHorizontalLeft", "RollerHorizontalRight", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper", "Statue"] ] #"Ice Palace - P Room - Stalfos Knight 2" + - [ 0x003f, 4, [ "Wizzrobe", "Statue"] ] # Wizzrobes can't spawn on pots - [ 0x0040, 0, [ "RollerVerticalUp", "RollerVerticalDown", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] # Agahnims Tower - Bridge - Blue Guard 1 - [ 0x0040, 1, [ "Statue", "RollerVerticalUp", "RollerVerticalDown", "Beamos", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] # Agahnims Tower - Bridge - Blue Guard 2 - [ 0x0041, 0, [ "RollerHorizontalLeft" ] ] #"Sewers - Dark Cactus - Rat 1" @@ -124,6 +130,14 @@ UwGeneralDeny: - [ 0x0057, 12, [ "RollerVerticalUp", "RollerVerticalDown", "Beamos", "AntiFairyCircle", "Bumper", "BigSpike", "SpikeBlock"]] #"Skull Woods - Big Key Room - Gibdo 6" - [ 0x0057, 13, [ "RollerVerticalDown", "Beamos", "AntiFairyCircle", "Bumper" ] ] #"Skull Woods - Big Key Room - Blue Bari 1" - [ 0x0057, 14, [ "RollerVerticalDown", "Beamos", "AntiFairyCircle", "Bumper" ] ] #"Skull Woods - Big Key Room - Blue Bari 2" + - [ 0x0058, 0, ["Statue"]] + - [ 0x0058, 1, ["Statue"]] + - [ 0x0058, 2, ["Statue"]] + - [ 0x0058, 3, ["Statue"]] + - [ 0x0058, 4, ["Statue"]] + - [ 0x0058, 6, ["Statue"]] + - [ 0x0058, 7, ["Statue"]] + - [ 0x0058, 8, ["Statue"]] - [ 0x0058, 7, [ "RollerHorizontalLeft" ] ] #"Skull Woods - Lever Room - Hardhat Beetle 2" - [ 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" @@ -466,21 +480,37 @@ UwEnemyDrop: - [0x00c6, 6, ["HardhatBeetle", "Wizzrobe", "MiniHelmasaur", "BlueGuard", "GreenGuard", "RedSpearGuard", "BluesainBolt", "UsainBolt", "BlueArcher", "GreenBushGuard", "RedJavelinGuard", "RedBushGuard", "BombGuard", "GreenKnifeGuard", "Stal", "GreenMimic", "RedMimic", "StalfosKnight", "Geldman", "Blob"]] - - [0x00e6, 6, ["HardhatBeetle", "Wizzrobe", "MiniHelmasaur", "BlueGuard", "GreenGuard", "RedSpearGuard", + - [0x00e6, 0, ["HardhatBeetle", "Wizzrobe", "MiniHelmasaur", "BlueGuard", "GreenGuard", "RedSpearGuard", "BluesainBolt", "UsainBolt", "BlueArcher", "GreenBushGuard", "RedJavelinGuard", "RedBushGuard", "BombGuard", "GreenKnifeGuard", "Stal", "GreenMimic", "RedMimic", "StalfosKnight", "Geldman", "Blob"]] # wizzrobe despawn issues - on pots/blocks - too close to some object + - [0x0013, 3, ["Wizzrobe"]] - [0x0016, 0, ["Wizzrobe"]] - [0x0016, 1, ["Wizzrobe"]] - [0x0016, 2, ["Wizzrobe"]] - [0x0016, 3, ["Wizzrobe"]] + - [0x0017, 5, ["Wizzrobe", "Stal"]] - [0x0019, 2, ["Wizzrobe"]] - [0x0019, 3, ["Wizzrobe"]] + - [0x001e, 1, ["Wizzrobe"]] + - [0x001e, 2, ["Wizzrobe"]] + - [0x0027, 5, ["Wizzrobe"]] + - [0x0027, 6, ["Wizzrobe"]] - [0x002a, 3, ["Wizzrobe"]] - [0x002a, 7, ["Wizzrobe"]] + - [0x002e, 4, ["Wizzrobe"]] - [0x0035, 5, ["Wizzrobe"]] - [0x0036, 8, ["Wizzrobe"]] + - [0x003b, 0, ["Wizzrobe"]] + - [0x003b, 2, ["Wizzrobe"]] + - [0x003b, 4, ["Wizzrobe"]] + - [0x003b, 6, ["Wizzrobe"]] - [0x003c, 1, ["Wizzrobe"]] + - [0x003d, 9, ["Wizzrobe"]] + - [0x003d, 10, ["Wizzrobe"]] + - [0x003d, 11, ["Wizzrobe"]] + - [0x003d, 12, ["Wizzrobe"]] + - [0x003d, 13, ["Wizzrobe"]] - [0x004b, 2, ["Wizzrobe"]] - [0x004b, 6, ["Wizzrobe"]] - [0x004b, 7, ["Wizzrobe"]] @@ -488,6 +518,7 @@ UwEnemyDrop: - [0x0054, 3, ["Wizzrobe", "Stal"]] - [0x0055, 2, ["Wizzrobe"]] # slightly on wall - [0x005e, 4, ["Wizzrobe", "Stal"]] + - [0x0065, 3, ["Wizzrobe"]] - [0x0067, 5, ["Wizzrobe"]] - [0x0067, 6, ["Wizzrobe"]] - [0x0067, 7, ["Wizzrobe", "Stal"]] @@ -501,23 +532,29 @@ UwEnemyDrop: - [0x008b, 6, ["Wizzrobe", "Stal"]] - [0x008b, 7, ["Wizzrobe", "Stal"]] - [0x008d, 9, ["Wizzrobe", "Stal"]] + - [0x0096, 0, ["Wizzrobe", "Stal"]] + - [0x009b, 11, ["Wizzrobe"]] - [0x009f, 5, ["Wizzrobe", "Stal"]] - [0x00a1, 1, ["Wizzrobe"]] + - [0x00aa, 5, ["Wizzrobe"]] - [0x00af, 0, ["Wizzrobe", "Stal"]] + - [0x00b0, 1, ["Wizzrobe"]] + - [0x00b0, 2, ["Wizzrobe"]] - [0x00b2, 4, ["Wizzrobe"]] + - [0x00b8, 2, ["Wizzrobe"]] - [0x00bf, 1, ["Wizzrobe"]] - [0x00c1, 3, ["Wizzrobe", "Stal"]] - [0x00c2, 0, ["Wizzrobe"]] - [0x00c2, 3, ["Wizzrobe"]] - [0x00c2, 7, ["Wizzrobe"]] + - [0x00ce, 4, ["Wizzrobe", "Leever", "BlueGuard", "GreenGuard", "RedSpearGuard", "BluesainBolt", "UsainBolt", + "BlueArcher", "RedJavelinGuard", "GreenKnifeGuard", "GreenMimic", "RedMimic"]] - [0x00ce, 5, ["Wizzrobe", "Leever", "BlueGuard", "GreenGuard", "RedSpearGuard", "BluesainBolt", "UsainBolt", "BlueArcher", "RedJavelinGuard", "GreenKnifeGuard", "GreenMimic", "RedMimic"]] - [0x00ce, 6, ["Wizzrobe", "Leever", "BlueGuard", "GreenGuard", "RedSpearGuard", "BluesainBolt", "UsainBolt", "BlueArcher", "RedJavelinGuard", "GreenKnifeGuard", "GreenMimic", "RedMimic"]] - [0x00ce, 7, ["Wizzrobe", "Leever", "BlueGuard", "GreenGuard", "RedSpearGuard", "BluesainBolt", "UsainBolt", "BlueArcher", "RedJavelinGuard", "GreenKnifeGuard", "GreenMimic", "RedMimic"]] - - [0x00ce, 8, ["Wizzrobe", "Leever", "BlueGuard", "GreenGuard", "RedSpearGuard", "BluesainBolt", "UsainBolt", - "BlueArcher", "RedJavelinGuard", "GreenKnifeGuard", "GreenMimic", "RedMimic"]] - [0x00d0, 0, ["Wizzrobe"]] - [0x00d0, 2, ["Wizzrobe"]] - [0x00d0, 4, ["Wizzrobe"]] @@ -599,25 +636,35 @@ UwEnemyDrop: # the following are all slightly in the wall on spawn - not too applicable right now, these don't drop anyway - [0x0064, 0, ["Leever"]] - - [0x00e5, 4, ["Leever"]] - - [0x00e5, 5, ["Leever"]] + - [0x00e5, 3, ["Wizzrobe"]] + - [0x00e5, 4, ["Leever", "Wizzrobe"]] + - [0x00e5, 5, ["Leever", "Wizzrobe"]] # the pit one in 0xe6 room is in the pit section - - [0x00e6, 1, ["Leever"]] - - [0x00e6, 2, ["Leever"]] - - [0x00e6, 3, ["Leever"]] - - [0x00e6, 4, ["Leever"]] + - [0x00e6, 1, ["Leever", "Wizzrobe"]] + - [0x00e6, 2, ["Leever", "Wizzrobe"]] + - [0x00e6, 3, ["Leever", "Wizzrobe"]] + - [0x00e6, 4, ["Leever", "Wizzrobe"]] + - [0x00e7, 0, ["Wizzrobe"]] + - [0x00e7, 1, ["Wizzrobe"]] + - [0x00e7, 2, ["Wizzrobe"]] - [0x00e7, 3, ["Leever"]] - - [0x00e7, 4, ["Leever"]] + - [0x00e7, 4, ["Leever", "Wizzrobe"]] + - [0x00e7, 5, ["Leever", "Wizzrobe"]] + - [0x00e7, 6, ["Wizzrobe"]] - [0x00f0, 2, ["Leever"]] # clipped away - [0x00f0, 3, ["Leever"]] - [0x00f0, 4, ["Leever"]] - [0x00f0, 5, ["Leever"]] - [0x00f0, 6, ["Leever"]] - [0x00f0, 8, ["Leever"]] - - [0x00f1, 0, ["Leever"]] - - [0x00f1, 1, ["Leever"]] - - [0x00f1, 6, ["Leever"]] - - [0x00f1, 7, ["Leever"]] - - [0x00f1, 8, ["Leever"]] - - [0x00f1, 9, ["Leever"]] + - [0x00f1, 0, ["Leever", "Wizzrobe"]] + - [0x00f1, 1, ["Leever", "Wizzrobe"]] + - [0x00f1, 2, ["Wizzrobe"]] + - [0x00f1, 3, ["Wizzrobe"]] + - [0x00f1, 4, ["Wizzrobe"]] + - [0x00f1, 5, ["Wizzrobe"]] + - [0x00f1, 6, ["Leever", "Wizzrobe"]] + - [0x00f1, 7, ["Leever", "Wizzrobe"]] + - [0x00f1, 8, ["Leever", "Wizzrobe"]] + - [0x00f1, 9, ["Leever", "Wizzrobe"]] diff --git a/test/customizer/test.yaml b/test/customizer/test.yaml index 7d6381a7..64529753 100644 --- a/test/customizer/test.yaml +++ b/test/customizer/test.yaml @@ -1,12 +1,12 @@ meta: players: 1 - seed: 96 + seed: 94 settings: 1: # mode: standard - boss_shuffle: random - dropshuffle: underworld +# boss_shuffle: random +# dropshuffle: underworld enemy_shuffle: shuffled door_shuffle: crossed intensity: 3 @@ -15,10 +15,12 @@ settings: doors: 1: lobbies: - Hyrule Castle South: GT Bob's Room SE -bosses: + Hyrule Castle South: Hyrule Castle Lobby S + doors: + Hyrule Castle Lobby W: Desert Sandworm Corner E Edge +placements: 1: - Ganons Tower (bottom): Armos Knights + Desert Palace - Torch: Small Key (Escape) # keyshuffle: wild @@ -28,9 +30,9 @@ bosses: # '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 +start_inventory: + 1: + - Pegasus Boots # - Progressive Sword # - Ocarina (Activated) # - Hookshot