Trash ditching method rebalanced for lots of triforce pieces

Added a few places Links House shouldn't go when shuffled
Ped goal + vanilla sword = random sword in pool
This commit is contained in:
aerinon
2022-02-24 14:39:07 -07:00
parent b7e307f4c1
commit dd18f13930
4 changed files with 20 additions and 40 deletions

View File

@@ -2557,10 +2557,10 @@ Isolated_LH_Doors_Open = ['Mimic Cave',
'Desert Palace Entrance (South)', 'Desert Palace Entrance (South)',
'Desert Palace Entrance (North)', 'Desert Palace Entrance (North)',
'Capacity Upgrade', 'Capacity Upgrade',
'Ice Palace', 'Ice Palace', 'Dark World Shop', 'Dark World Potion Shop',
'Skull Woods Final Section', 'Skull Woods Final Section', 'Skull Woods Second Section Door (West)',
'Dark World Hammer Peg Cave', 'Dark World Hammer Peg Cave', 'Dark Death Mountain Ledge (West)',
'Turtle Rock Isolated Ledge Entrance'] 'Turtle Rock Isolated Ledge Entrance', 'Dark Death Mountain Ledge (East)']
DW_Single_Cave_Doors = ['Bonk Fairy (Dark)', DW_Single_Cave_Doors = ['Bonk Fairy (Dark)',
'Dark Sanctuary Hint', 'Dark Sanctuary Hint',
@@ -3033,10 +3033,10 @@ Isolated_LH_Doors = ['Kings Grave',
'Desert Palace Entrance (South)', 'Desert Palace Entrance (South)',
'Desert Palace Entrance (North)', 'Desert Palace Entrance (North)',
'Capacity Upgrade', 'Capacity Upgrade',
'Ice Palace', 'Ice Palace', 'Dark World Shop', 'Dark World Potion Shop',
'Skull Woods Final Section', 'Skull Woods Final Section', 'Skull Woods Second Section Door (West)',
'Dark World Hammer Peg Cave', 'Dark World Hammer Peg Cave', 'Dark Death Mountain Ledge (West)',
'Turtle Rock Isolated Ledge Entrance'] 'Turtle Rock Isolated Ledge Entrance', 'Dark Death Mountain Ledge (East)']
# Entrances that cannot be used to access a must_exit entrance - symmetrical to allow reverse lookups # Entrances that cannot be used to access a must_exit entrance - symmetrical to allow reverse lookups
Must_Exit_Invalid_Connections = defaultdict(set, { Must_Exit_Invalid_Connections = defaultdict(set, {

View File

@@ -796,7 +796,7 @@ def get_pool_core(progressive, shuffle, difficulty, treasure_hunt_total, timer,
lamps_needed_for_dark_rooms = 1 lamps_needed_for_dark_rooms = 1
# insanity shuffle doesn't have fake LW/DW logic so for now guaranteed Mirror and Moon Pearl at the start # insanity shuffle doesn't have fake LW/DW logic so for now guaranteed Mirror and Moon Pearl at the start
if shuffle == 'insanity_legacy': if shuffle == 'insanity_legacy':
place_item('Link\'s House', 'Magic Mirror') place_item('Link\'s House', 'Magic Mirror')
place_item('Sanctuary', 'Moon Pearl') place_item('Sanctuary', 'Moon Pearl')
else: else:
@@ -854,6 +854,7 @@ def get_pool_core(progressive, shuffle, difficulty, treasure_hunt_total, timer,
place_item('Master Sword Pedestal', swords_to_use.pop()) place_item('Master Sword Pedestal', swords_to_use.pop())
else: else:
place_item('Master Sword Pedestal', 'Triforce') place_item('Master Sword Pedestal', 'Triforce')
pool.append(swords_to_use.pop())
else: else:
pool.extend(diff.progressivesword if want_progressives() else diff.basicsword) pool.extend(diff.progressivesword if want_progressives() else diff.basicsword)
if swords == 'assured': if swords == 'assured':
@@ -865,26 +866,19 @@ def get_pool_core(progressive, shuffle, difficulty, treasure_hunt_total, timer,
pool.remove('Fighter Sword') pool.remove('Fighter Sword')
pool.extend(['Rupees (50)']) pool.extend(['Rupees (50)'])
extraitems = total_items_to_place - len(pool) - len(placed_items)
if timer in ['timed', 'timed-countdown']: if timer in ['timed', 'timed-countdown']:
pool.extend(diff.timedother) pool.extend(diff.timedother)
extraitems -= len(diff.timedother)
clock_mode = 'stopwatch' if timer == 'timed' else 'countdown' clock_mode = 'stopwatch' if timer == 'timed' else 'countdown'
elif timer == 'timed-ohko': elif timer == 'timed-ohko':
pool.extend(diff.timedohko) pool.extend(diff.timedohko)
extraitems -= len(diff.timedohko)
clock_mode = 'countdown-ohko' clock_mode = 'countdown-ohko'
if goal == 'triforcehunt': if goal == 'triforcehunt':
pool.extend(triforcepool) pool.extend(triforcepool)
extraitems -= len(triforcepool)
for extra in diff.extras: for extra in diff.extras:
if extraitems > 0: pool.extend(extra)
if len(extra) > extraitems:
extra = random.choices(extra, k=extraitems) # note: massage item pool now handles shrinking the pool appropriately
pool.extend(extra)
extraitems -= len(extra)
if goal == 'pedestal' and swords != 'vanilla': if goal == 'pedestal' and swords != 'vanilla':
place_item('Master Sword Pedestal', 'Triforce') place_item('Master Sword Pedestal', 'Triforce')

View File

@@ -151,6 +151,9 @@ Same as above but both small keys and bigs keys of the dungeon are not allowed o
* Expanded Mystery logic options (e.g. owglitches) * Expanded Mystery logic options (e.g. owglitches)
* Allowed Mystery.py to create BPS patches * Allowed Mystery.py to create BPS patches
* Allow creation of BPS and SFC files (no longer mutually exclusive) * Allow creation of BPS and SFC files (no longer mutually exclusive)
* Pedestal goal + vanilla swords places a random sword in the pool
* Rebalanced trash ditching algo for seeds with lots of triforce pieces
* Added a few more places Links House shouldn't go when shuffled
* Fixed a bug with shopsanity + district algorithm where pre-placed potions messed up the placeholder count * Fixed a bug with shopsanity + district algorithm where pre-placed potions messed up the placeholder count
* Fixed usestartinventory flag (can be use on a per player basis) * Fixed usestartinventory flag (can be use on a per player basis)
* Fix for map indicators on keysanity menu not showing up * Fix for map indicators on keysanity menu not showing up

View File

@@ -829,28 +829,11 @@ vanilla_swords = {"Link's Uncle", 'Master Sword Pedestal', 'Blacksmith', 'Pyrami
trash_items = { trash_items = {
'Nothing': -1, 'Nothing': -1,
'Bee Trap': 0, 'Bee Trap': 0,
'Rupee (1)': 1, 'Rupee (1)': 1, 'Rupees (5)': 1, 'Small Heart': 1, 'Bee': 1, 'Arrows (5)': 1, 'Chicken': 1, 'Single Bomb': 1,
'Rupees (5)': 1, 'Rupees (20)': 2, 'Small Magic': 2,
'Rupees (20)': 1, 'Bombs (3)': 3, 'Arrows (10)': 3, 'Bombs (10)': 3,
'Big Magic': 4, 'Red Potion': 4, 'Blue Shield': 4, 'Rupees (50)': 4, 'Rupees (100)': 4,
'Small Heart': 2,
'Bee': 2,
'Arrows (5)': 2,
'Chicken': 2,
'Single Bomb': 2,
'Bombs (3)': 3,
'Arrows (10)': 3,
'Bombs (10)': 3,
'Small Magic': 3,
'Big Magic': 4,
'Red Potion': 4,
'Blue Shield': 4,
'Rupees (50)': 4,
'Rupees (100)': 4,
'Rupees (300)': 5, 'Rupees (300)': 5,
'Piece of Heart': 17 'Piece of Heart': 17
} }