From 26c26acd6e3cc6052b65fb9383c3238ad8f54991 Mon Sep 17 00:00:00 2001 From: aerinon Date: Thu, 14 Sep 2023 08:51:29 -0600 Subject: [PATCH] Fix item duping and disappearing Fix mutliworld crash Fix assured sword + start inventory New bans on enemy placement --- BaseClasses.py | 2 +- ItemList.py | 27 +++++++++++++-------------- Main.py | 2 +- RELEASENOTES.md | 8 ++++++++ Rom.py | 2 +- data/base2current.bps | Bin 117379 -> 117381 bytes source/enemizer/Enemizer.py | 5 +++++ source/enemizer/SpriteSheets.py | 7 ++++++- source/enemizer/enemy_deny.yaml | 32 +++++++++++++++++--------------- 9 files changed, 52 insertions(+), 33 deletions(-) diff --git a/BaseClasses.py b/BaseClasses.py index bc168cb4..c5338757 100644 --- a/BaseClasses.py +++ b/BaseClasses.py @@ -3095,7 +3095,7 @@ class Settings(object): args.intensity[p] = "random" if intensity == 0 else intensity args.shuffletavern[p] = True if settings[4] & 0x80 else False - args.dropshuffle[p] = r(drop_shuffle_mode)[settings[4] & 0x70] + args.dropshuffle[p] = r(drop_shuffle_mode)[(settings[4] & 0x70) >> 4] args.pottery[p] = r(pottery_mode)[settings[4] & 0x0F] args.dungeon_counters[p] = r(counter_mode)[(settings[5] & 0x6) >> 1] diff --git a/ItemList.py b/ItemList.py index a5c895c2..7a20c7a0 100644 --- a/ItemList.py +++ b/ItemList.py @@ -1164,20 +1164,19 @@ def make_custom_item_pool(world, player, progressive, shuffle, difficulty, timer pool.extend(['Nothing'] * nothings) start_inventory = [x for x in world.precollected_items if x.player == player] - if not start_inventory: - if world.logic[player] in ['owglitches', 'nologic']: - precollected_items.append('Pegasus Boots') - if 'Pegasus Boots' in pool: - pool.remove('Pegasus Boots') - pool.append('Rupees (20)') - if world.swords[player] == 'assured': - precollected_items.append('Progressive Sword') - if 'Progressive Sword' in pool: - pool.remove('Progressive Sword') - pool.append('Rupees (50)') - elif 'Fighter Sword' in pool: - pool.remove('Fighter Sword') - pool.append('Rupees (50)') + if world.logic[player] in ['owglitches', 'nologic'] and all(x !=' Pegasus Boots' for x in start_inventory): + precollected_items.append('Pegasus Boots') + if 'Pegasus Boots' in pool: + pool.remove('Pegasus Boots') + pool.append('Rupees (20)') + if world.swords[player] == 'assured' and all(' Sword' not in x for x in start_inventory): + precollected_items.append('Progressive Sword') + if 'Progressive Sword' in pool: + pool.remove('Progressive Sword') + pool.append('Rupees (50)') + elif 'Fighter Sword' in pool: + pool.remove('Fighter Sword') + pool.append('Rupees (50)') return (pool, placed_items, precollected_items, clock_mode, treasure_hunt_count, treasure_hunt_icon, lamps_needed_for_dark_rooms) diff --git a/Main.py b/Main.py index eaba8769..b159eac3 100644 --- a/Main.py +++ b/Main.py @@ -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.0' +version_number = '1.3.0.1' version_branch = '-v' __version__ = f'{version_number}{version_branch}' diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 391ec6a4..60b9a8e5 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -141,6 +141,14 @@ These are now independent of retro mode and have three options: None, Random, an # Bug Fixes and Notes +* 1.3.0.1v + * Fixed bugs with item duping and disappearing drops + * Fixed multiworld crash + * Fixed assured sword missing when using start inventory (via GUI/CLI) + * Forbid extra statues in Swamp Push Statue room + * Forbid bumpers on OW waterr + * Forbid Stal on pits + * Text fix on sprite author (thanks Synack) * 1.2.0.19u * Added min/max for triforce pool, goal, and difference for CLI and Customizer. (Thanks Catobat) * Fixed a bug with dungeon generation diff --git a/Rom.py b/Rom.py index 53094d0b..bcbadd1b 100644 --- a/Rom.py +++ b/Rom.py @@ -40,7 +40,7 @@ from source.enemizer.Enemizer import write_enemy_shuffle_settings JAP10HASH = '03a63945398191337e896e5771f77173' -RANDOMIZERBASEHASH = 'c8b9a36f11cb3cd070f83f31219f5cba' +RANDOMIZERBASEHASH = '3302050481ab0c324fb6da95c8f3f099' class JsonRom(object): diff --git a/data/base2current.bps b/data/base2current.bps index a77da83b747d1a26e581131ea0200b90a8fcd1ca..54d6688c330e8e4f4a8baf3759a05ab02f77b1d3 100644 GIT binary patch delta 1465 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