Rename Progressive Armor to Progressive Mail to bring it in line with Red Mail and Blue Mail

Also add some more item groups
This commit is contained in:
Fabian Dill 2020-09-06 17:19:34 +02:00
parent 1ce4f55ea4
commit f6439dadea
4 changed files with 99 additions and 36 deletions

View File

@ -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])

112
Items.py
View File

@ -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()

View File

@ -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:

4
Rom.py
View File

@ -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',