From f6439dadeae84ed62640c98d8e45103f1d88893e Mon Sep 17 00:00:00 2001 From: Fabian Dill Date: Sun, 6 Sep 2020 17:19:34 +0200 Subject: [PATCH] Rename Progressive Armor to Progressive Mail to bring it in line with Red Mail and Blue Mail Also add some more item groups --- ItemPool.py | 18 ++++----- Items.py | 112 ++++++++++++++++++++++++++++++++++++++++------------ Mystery.py | 1 + Rom.py | 4 +- 4 files changed, 99 insertions(+), 36 deletions(-) diff --git a/ItemPool.py b/ItemPool.py index c7bfa760..240055e1 100644 --- a/ItemPool.py +++ b/ItemPool.py @@ -58,7 +58,7 @@ difficulties = { same_bottle=False, progressiveshield=['Progressive Shield'] * 6, basicshield=['Blue Shield', 'Red Shield', 'Mirror Shield'] * 2, - progressivearmor=['Progressive Armor'] * 4, + progressivearmor=['Progressive Mail'] * 4, basicarmor=['Blue Mail', 'Red Mail'] * 2, swordless=['Rupees (20)'] * 8, progressivemagic=['Magic Upgrade (1/2)'] * 2, @@ -86,7 +86,7 @@ difficulties = { same_bottle=False, progressiveshield=['Progressive Shield'] * 3, basicshield=['Blue Shield', 'Red Shield', 'Mirror Shield'], - progressivearmor=['Progressive Armor'] * 2, + progressivearmor=['Progressive Mail'] * 2, basicarmor=['Blue Mail', 'Red Mail'], swordless=['Rupees (20)'] * 4, progressivemagic=['Magic Upgrade (1/2)', 'Rupees (300)'], @@ -108,14 +108,14 @@ difficulties = { heart_piece_limit=24, ), 'hard': Difficulty( - baseitems = normalbaseitems, + baseitems=normalbaseitems, bottles=hardbottles, bottle_count=4, same_bottle=False, progressiveshield=['Progressive Shield'] * 3, basicshield=['Blue Shield', 'Red Shield', 'Red Shield'], - progressivearmor=['Progressive Armor'] * 2, - basicarmor=['Progressive Armor'] * 2, # neither will count + progressivearmor=['Progressive Mail'] * 2, + basicarmor=['Progressive Mail'] * 2, # neither will count swordless=['Rupees (20)'] * 4, progressivemagic=['Magic Upgrade (1/2)', 'Rupees (300)'], basicmagic=['Magic Upgrade (1/2)', 'Rupees (300)'], @@ -136,15 +136,15 @@ difficulties = { heart_piece_limit=16, ), 'expert': Difficulty( - baseitems = normalbaseitems, + baseitems=normalbaseitems, bottles=hardbottles, bottle_count=4, same_bottle=False, progressiveshield=['Progressive Shield'] * 3, basicshield=['Progressive Shield'] * 3, # only the first one will upgrade, making this equivalent to two blue shields - progressivearmor=['Progressive Armor'] * 2, # neither will count - basicarmor=['Progressive Armor'] * 2, # neither will count + progressivearmor=['Progressive Mail'] * 2, # neither will count + basicarmor=['Progressive Mail'] * 2, # neither will count swordless=['Rupees (20)'] * 4, progressivemagic=['Magic Upgrade (1/2)', 'Rupees (300)'], basicmagic=['Magic Upgrade (1/2)', 'Rupees (300)'], @@ -761,7 +761,7 @@ def make_custom_item_pool(world, player): pool.extend(['Progressive Shield'] * customitemarray[40]) pool.extend(['Blue Mail'] * customitemarray[41]) pool.extend(['Red Mail'] * customitemarray[42]) - pool.extend(['Progressive Armor'] * customitemarray[43]) + pool.extend(['Progressive Mail'] * customitemarray[43]) pool.extend(['Magic Upgrade (1/2)'] * customitemarray[44]) pool.extend(['Magic Upgrade (1/4)'] * customitemarray[45]) pool.extend(['Bomb Upgrade (+5)'] * customitemarray[46]) diff --git a/Items.py b/Items.py index e923759b..5e917f64 100644 --- a/Items.py +++ b/Items.py @@ -76,27 +76,78 @@ item_table = {'Bow': (True, False, None, 0x0B, 'You have\nchosen the\narcher cla 'Crystal 6': (True, False, 'Crystal', (0x01, 0x32, 0x64, 0x40, 0x6F, 0x06), None, None, None, None, None, None, None), 'Crystal 7': (True, False, 'Crystal', (0x08, 0x34, 0x64, 0x40, 0x7C, 0x06), None, None, None, None, None, None, None), 'Single Arrow': (False, False, None, 0x43, 'a lonely arrow\nsits here.', 'and the arrow', 'stick-collecting kid', 'sewing needle for sale', 'fungus for arrow', 'archer boy sews again', 'an arrow'), - 'Arrows (10)': (False, False, None, 0x44, 'This will give\nyou ten shots\nwith your bow!', 'and the arrow pack', 'stick-collecting kid', 'sewing kit for sale', 'fungus for arrows', 'archer boy sews again', 'ten arrows'), - 'Arrow Upgrade (+10)': (False, False, None, 0x54, 'increase arrow\nstorage, low\nlow price', 'and the quiver', 'quiver-enlarging kid', 'arrow boost for sale', 'witch and more skewers', 'upgrade boy sews more again', 'arrow capacity'), - 'Arrow Upgrade (+5)': (False, False, None, 0x53, 'increase arrow\nstorage, low\nlow price', 'and the quiver', 'quiver-enlarging kid', 'arrow boost for sale', 'witch and more skewers', 'upgrade boy sews more again', 'arrow capacity'), - 'Single Bomb': (False, False, None, 0x27, 'I make things\ngo BOOM! But\njust once.', 'and the explosion', 'the bomb-holding kid', 'firecracker for sale', 'blend fungus into bomb', '\'splosion boy explodes again', 'a bomb'), - 'Bombs (3)': (False, False, None, 0x28, 'I make things\ngo triple\nBOOM!!!', 'and the explosions', 'the bomb-holding kid', 'firecrackers for sale', 'blend fungus into bombs', '\'splosion boy explodes again', 'three bombs'), - 'Bombs (10)': (False, False, None, 0x31, 'I make things\ngo BOOM! Ten\ntimes!', 'and the explosions', 'the bomb-holding kid', 'firecrackers for sale', 'blend fungus into bombs', '\'splosion boy explodes again', 'ten bombs'), - 'Bomb Upgrade (+10)': (False, False, None, 0x52, 'increase bomb\nstorage, low\nlow price', 'and the bomb bag', 'boom-enlarging kid', 'bomb boost for sale', 'the shroom goes boom', 'upgrade boy explodes more again', 'bomb capacity'), - 'Bomb Upgrade (+5)': (False, False, None, 0x51, 'increase bomb\nstorage, low\nlow price', 'and the bomb bag', 'boom-enlarging kid', 'bomb boost for sale', 'the shroom goes boom', 'upgrade boy explodes more again', 'bomb capacity'), - 'Blue Mail': (False, True, None, 0x22, 'Now you\'re a\nblue elf!', 'and the banana hat', 'the protected kid', 'banana hat for sale', 'the clothing store', 'tailor boy banana hatted again', 'the Blue Mail'), - 'Red Mail': (False, True, None, 0x23, 'Now you\'re a\nred elf!', 'and the eggplant hat', 'well-protected kid', 'purple hat for sale', 'the nice clothing store', 'tailor boy fears nothing again', 'the Red Mail'), - 'Progressive Armor': (False, True, None, 0x60, 'time for a\nchange of\nclothes?', 'and the unknown hat', 'the protected kid', 'new hat for sale', 'the clothing store', 'tailor boy has threads again', 'some armor'), - 'Blue Boomerang': (True, False, None, 0x0C, 'No matter what\nyou do, blue\nreturns to you', 'and the bluemarang', 'the bat-throwing kid', 'bent stick for sale', 'fungus for puma-stick', 'throwing boy plays fetch again', 'the Blue Boomerang'), - 'Red Boomerang': (True, False, None, 0x2A, 'No matter what\nyou do, red\nreturns to you', 'and the badmarang', 'the bat-throwing kid', 'air foil for sale', 'fungus for return-stick', 'magical boy plays fetch again', 'the Red Boomerang'), - 'Blue Shield': (False, True, None, 0x04, 'Now you can\ndefend against\npebbles!', 'and the stone blocker', 'shield-wielding kid', 'shield for sale', 'fungus for shield', 'shield boy defends again', 'the Blue Shield'), - 'Red Shield': (False, True, None, 0x05, 'Now you can\ndefend against\nfireballs!', 'and the shot blocker', 'shield-wielding kid', 'fire shield for sale', 'fungus for fire shield', 'shield boy defends again', 'the Red Shield'), - 'Mirror Shield': (True, False, None, 0x06, 'Now you can\ndefend against\nlasers!', 'and the laser blocker', 'shield-wielding kid', 'face shield for sale', 'fungus for face shield', 'shield boy defends again', 'the Mirror Shield'), - 'Progressive Shield': (True, False, None, 0x5F, 'have a better\nblocker in\nfront of you', 'and the new shield', 'shield-wielding kid', 'shield for sale', 'fungus for shield', 'shield boy defends again', 'a shield'), - 'Bug Catching Net': (True, False, None, 0x21, 'Let\'s catch\nsome bees and\nfaeries!', 'and the bee catcher', 'the bug-catching kid', 'stick web for sale', 'fungus for butterflies', 'wrong boy catches bees again', 'the Bug Net'), - 'Cane of Byrna': (True, False, None, 0x18, 'Use this to\nbecome\ninvincible!', 'and the bad cane', 'the spark-making kid', 'spark stick for sale', 'spark-stick for trade', 'cane boy encircles again', 'the Blue Cane'), - 'Boss Heart Container': (False, False, None, 0x3E, 'Maximum health\nincreased!\nYeah!', 'and the full heart', 'the life-giving kid', 'love for sale', 'fungus for life', 'life boy feels love again', 'a heart'), - 'Sanctuary Heart Container': (False, False, None, 0x3F, 'Maximum health\nincreased!\nYeah!', 'and the full heart', 'the life-giving kid', 'love for sale', 'fungus for life', 'life boy feels love again', 'a heart'), + 'Arrows (10)': ( + False, False, None, 0x44, 'This will give\nyou ten shots\nwith your bow!', 'and the arrow pack', + 'stick-collecting kid', 'sewing kit for sale', 'fungus for arrows', 'archer boy sews again', + 'ten arrows'), + 'Arrow Upgrade (+10)': ( + False, False, None, 0x54, 'increase arrow\nstorage, low\nlow price', 'and the quiver', + 'quiver-enlarging kid', 'arrow boost for sale', 'witch and more skewers', 'upgrade boy sews more again', + 'arrow capacity'), + 'Arrow Upgrade (+5)': ( + False, False, None, 0x53, 'increase arrow\nstorage, low\nlow price', 'and the quiver', + 'quiver-enlarging kid', 'arrow boost for sale', 'witch and more skewers', 'upgrade boy sews more again', + 'arrow capacity'), + 'Single Bomb': (False, False, None, 0x27, 'I make things\ngo BOOM! But\njust once.', 'and the explosion', + 'the bomb-holding kid', 'firecracker for sale', 'blend fungus into bomb', + '\'splosion boy explodes again', 'a bomb'), + 'Bombs (3)': (False, False, None, 0x28, 'I make things\ngo triple\nBOOM!!!', 'and the explosions', + 'the bomb-holding kid', 'firecrackers for sale', 'blend fungus into bombs', + '\'splosion boy explodes again', 'three bombs'), + 'Bombs (10)': (False, False, None, 0x31, 'I make things\ngo BOOM! Ten\ntimes!', 'and the explosions', + 'the bomb-holding kid', 'firecrackers for sale', 'blend fungus into bombs', + '\'splosion boy explodes again', 'ten bombs'), + 'Bomb Upgrade (+10)': ( + False, False, None, 0x52, 'increase bomb\nstorage, low\nlow price', 'and the bomb bag', + 'boom-enlarging kid', 'bomb boost for sale', 'the shroom goes boom', 'upgrade boy explodes more again', + 'bomb capacity'), + 'Bomb Upgrade (+5)': ( + False, False, None, 0x51, 'increase bomb\nstorage, low\nlow price', 'and the bomb bag', + 'boom-enlarging kid', 'bomb boost for sale', 'the shroom goes boom', 'upgrade boy explodes more again', + 'bomb capacity'), + 'Blue Mail': ( + False, True, None, 0x22, 'Now you\'re a\nblue elf!', 'and the banana hat', 'the protected kid', + 'banana hat for sale', 'the clothing store', 'tailor boy banana hatted again', 'the Blue Mail'), + 'Red Mail': ( + False, True, None, 0x23, 'Now you\'re a\nred elf!', 'and the eggplant hat', 'well-protected kid', + 'purple hat for sale', 'the nice clothing store', 'tailor boy fears nothing again', 'the Red Mail'), + 'Progressive Mail': ( + False, True, None, 0x60, 'time for a\nchange of\nclothes?', 'and the unknown hat', 'the protected kid', + 'new hat for sale', 'the clothing store', 'tailor boy has threads again', 'some armor'), + 'Blue Boomerang': ( + True, False, None, 0x0C, 'No matter what\nyou do, blue\nreturns to you', 'and the bluemarang', + 'the bat-throwing kid', 'bent stick for sale', 'fungus for puma-stick', 'throwing boy plays fetch again', + 'the Blue Boomerang'), + 'Red Boomerang': ( + True, False, None, 0x2A, 'No matter what\nyou do, red\nreturns to you', 'and the badmarang', + 'the bat-throwing kid', 'air foil for sale', 'fungus for return-stick', 'magical boy plays fetch again', + 'the Red Boomerang'), + 'Blue Shield': (False, True, None, 0x04, 'Now you can\ndefend against\npebbles!', 'and the stone blocker', + 'shield-wielding kid', 'shield for sale', 'fungus for shield', 'shield boy defends again', + 'the Blue Shield'), + 'Red Shield': (False, True, None, 0x05, 'Now you can\ndefend against\nfireballs!', 'and the shot blocker', + 'shield-wielding kid', 'fire shield for sale', 'fungus for fire shield', + 'shield boy defends again', 'the Red Shield'), + 'Mirror Shield': ( + True, False, None, 0x06, 'Now you can\ndefend against\nlasers!', 'and the laser blocker', + 'shield-wielding kid', 'face shield for sale', 'fungus for face shield', 'shield boy defends again', + 'the Mirror Shield'), + 'Progressive Shield': ( + True, False, None, 0x5F, 'have a better\nblocker in\nfront of you', 'and the new shield', + 'shield-wielding kid', 'shield for sale', 'fungus for shield', 'shield boy defends again', 'a shield'), + 'Bug Catching Net': ( + True, False, None, 0x21, 'Let\'s catch\nsome bees and\nfaeries!', 'and the bee catcher', + 'the bug-catching kid', 'stick web for sale', 'fungus for butterflies', 'wrong boy catches bees again', + 'the Bug Net'), + 'Cane of Byrna': ( + True, False, None, 0x18, 'Use this to\nbecome\ninvincible!', 'and the bad cane', 'the spark-making kid', + 'spark stick for sale', 'spark-stick for trade', 'cane boy encircles again', 'the Blue Cane'), + 'Boss Heart Container': ( + False, False, None, 0x3E, 'Maximum health\nincreased!\nYeah!', 'and the full heart', + 'the life-giving kid', 'love for sale', 'fungus for life', 'life boy feels love again', 'a heart'), + 'Sanctuary Heart Container': ( + False, False, None, 0x3F, 'Maximum health\nincreased!\nYeah!', 'and the full heart', + 'the life-giving kid', 'love for sale', 'fungus for life', 'life boy feels love again', 'a heart'), 'Piece of Heart': (False, False, None, 0x17, 'Just a little\npiece of love!', 'and the broken heart', 'the life-giving kid', 'little love for sale', 'fungus for life', 'life boy feels some love again', 'a heart piece'), 'Rupee (1)': (False, False, None, 0x34, 'Just pocket\nchange. Move\nright along.', 'the pocket change', 'poverty-struck kid', 'life lesson for sale', 'buying cheap drugs', 'destitute boy has snack again', 'a green rupee'), 'Rupees (5)': (False, False, None, 0x35, 'Just pocket\nchange. Move\nright along.', 'the pocket change', 'poverty-struck kid', 'life lesson for sale', 'buying cheap drugs', 'destitute boy has snack again', 'a blue rupee'), @@ -186,11 +237,19 @@ lookup_id_to_name = {data[3]: name for name, data in item_table.items()} hint_blacklist = {"Triforce"} -item_name_groups = {"Bows": {"Bow", "Silver Arrows", "Silver Bow", "Progressive Bow (Alt)", "Progressive Bow"}, - "Gloves": {"Power Glove", "Progressive Glove", "Titans Mitts"}, - "Medallions": {"Ether", "Bombos", "Quake"}} +item_name_groups = {"Bows": + {"Bow", "Silver Arrows", "Silver Bow", "Progressive Bow (Alt)", "Progressive Bow"}, + "Gloves": + {"Power Glove", "Progressive Glove", "Titans Mitts"}, + "Medallions": + {"Ether", "Bombos", "Quake"}} # generic groups, (Name, substring) _simple_groups = {("Swords", "Sword"), + ("Shields", "Shield"), + ("Mails", "Mail"), + + ("Boomerangs", "Boomerang"), + ("Rods", "Rod"), ("Small Keys", "Small Key"), ("Big Keys", "Big Key"), @@ -200,7 +259,10 @@ _simple_groups = {("Swords", "Sword"), ("Bottles", "Bottle"), ("Potions", "Potion"), ("Rupees", "Rupee"), - ("Clocks", "Clock") + ("Clocks", "Clock"), + + ("Crystals", "Crystal"), + ("Pendants", "Pendant") } for basename, substring in _simple_groups: tempset = item_name_groups[basename] = set() diff --git a/Mystery.py b/Mystery.py index 0e07433d..2dba3fef 100644 --- a/Mystery.py +++ b/Mystery.py @@ -417,6 +417,7 @@ def roll_settings(weights): ret.remote_items = get_choice('remote_items', weights, False) if get_choice("local_keys", weights, "l" in dungeon_items): + # () important for ordering of commands, without them the Big Keys section is part of the Small Key else ret.local_items = (item_name_groups["Small Keys"] if "s" in dungeon_items else set()) \ | item_name_groups["Big Keys"] if "b" in dungeon_items else set() else: diff --git a/Rom.py b/Rom.py index 9611e68f..fac552fb 100644 --- a/Rom.py +++ b/Rom.py @@ -1063,7 +1063,7 @@ def patch_rom(world, rom, player, team, enemized): 'Titans Mitts', 'Power Glove', 'Progressive Glove', 'Golden Sword', 'Tempered Sword', 'Master Sword', 'Fighter Sword', 'Progressive Sword', 'Mirror Shield', 'Red Shield', 'Blue Shield', 'Progressive Shield', - 'Red Mail', 'Blue Mail', 'Progressive Armor', + 'Red Mail', 'Blue Mail', 'Progressive Mail', 'Magic Upgrade (1/4)', 'Magic Upgrade (1/2)'}: continue @@ -2418,7 +2418,7 @@ RelevantItems = ['Bow', 'Single Arrow', 'Blue Mail', 'Red Mail', - 'Progressive Armor', + 'Progressive Mail', 'Blue Boomerang', 'Red Boomerang', 'Blue Shield',