fix: make shuffleganon per player

This commit is contained in:
aerinon
2024-12-23 10:16:58 -07:00
parent fe2a01b384
commit d2f4271a87
6 changed files with 18 additions and 10 deletions

View File

@@ -61,7 +61,6 @@ class World(object):
self.fix_palaceofdarkness_exit = {} self.fix_palaceofdarkness_exit = {}
self.fix_trock_exit = {} self.fix_trock_exit = {}
self.shuffle_ganon = shuffle_ganon self.shuffle_ganon = shuffle_ganon
self.fix_gtower_exit = self.shuffle_ganon
self.custom = custom self.custom = custom
self.customitemarray = customitemarray self.customitemarray = customitemarray
self.can_take_damage = True self.can_take_damage = True
@@ -109,6 +108,7 @@ class World(object):
set_player_attr('fix_skullwoods_exit', self.shuffle[player] not in ['vanilla', 'simple', 'restricted', 'dungeonssimple'] or self.doorShuffle[player] not in ['vanilla']) set_player_attr('fix_skullwoods_exit', self.shuffle[player] not in ['vanilla', 'simple', 'restricted', 'dungeonssimple'] or self.doorShuffle[player] not in ['vanilla'])
set_player_attr('fix_palaceofdarkness_exit', self.shuffle[player] not in ['vanilla', 'simple', 'restricted', 'dungeonssimple']) set_player_attr('fix_palaceofdarkness_exit', self.shuffle[player] not in ['vanilla', 'simple', 'restricted', 'dungeonssimple'])
set_player_attr('fix_trock_exit', self.shuffle[player] not in ['vanilla', 'simple', 'restricted', 'dungeonssimple']) set_player_attr('fix_trock_exit', self.shuffle[player] not in ['vanilla', 'simple', 'restricted', 'dungeonssimple'])
set_player_attr('fix_gtower_exit', self.shuffle_ganon[player] > 0)
set_player_attr('can_access_trock_eyebridge', None) set_player_attr('can_access_trock_eyebridge', None)
set_player_attr('can_access_trock_front', None) set_player_attr('can_access_trock_front', None)
set_player_attr('can_access_trock_big_chest', None) set_player_attr('can_access_trock_big_chest', None)

4
CLI.py
View File

@@ -132,8 +132,8 @@ def parse_cli(argv, no_defaults=False):
'flute_mode', 'bow_mode', 'take_any', 'boots_hint', 'flute_mode', 'bow_mode', 'take_any', 'boots_hint',
'shuffle', 'door_shuffle', 'intensity', 'crystals_ganon', 'crystals_gt', 'openpyramid', 'shuffle', 'door_shuffle', 'intensity', 'crystals_ganon', 'crystals_gt', 'openpyramid',
'mapshuffle', 'compassshuffle', 'keyshuffle', 'bigkeyshuffle', 'startinventory', 'mapshuffle', 'compassshuffle', 'keyshuffle', 'bigkeyshuffle', 'startinventory',
'usestartinventory', 'bombbag', 'overworld_map', 'restrict_boss_items', 'triforce_max_difference', 'usestartinventory', 'bombbag', 'shuffleganon', 'overworld_map', 'restrict_boss_items',
'triforce_pool_min', 'triforce_pool_max', 'triforce_goal_min', 'triforce_goal_max', 'triforce_max_difference', 'triforce_pool_min', 'triforce_pool_max', 'triforce_goal_min', 'triforce_goal_max',
'triforce_min_difference', 'triforce_goal', 'triforce_pool', 'shufflelinks', 'shuffletavern', 'triforce_min_difference', 'triforce_goal', 'triforce_pool', 'shufflelinks', 'shuffletavern',
'skullwoods', 'linked_drops', 'skullwoods', 'linked_drops',
'pseudoboots', 'retro', 'accessibility', 'hints', 'beemizer', 'experimental', 'dungeon_counters', 'pseudoboots', 'retro', 'accessibility', 'hints', 'beemizer', 'experimental', 'dungeon_counters',

View File

@@ -38,7 +38,7 @@ from source.enemizer.DamageTables import DamageTable
from source.enemizer.Enemizer import randomize_enemies from source.enemizer.Enemizer import randomize_enemies
from source.rom.DataTables import init_data_tables from source.rom.DataTables import init_data_tables
version_number = '1.4.7.1' version_number = '1.4.7.2'
version_branch = '-u' version_branch = '-u'
__version__ = f'{version_number}{version_branch}' __version__ = f'{version_number}{version_branch}'

View File

@@ -1,5 +1,9 @@
# Patch Notes # Patch Notes
* 1.4.7.2
- Fixed an issue with shuffle_ganon/fix_gtower_exit causing a generation failure
* 1.4.7.1
- Fixed an issue with the repaired "beemizer" setting not being backwards compatible
* 1.4.7 * 1.4.7
- Fixed generation error with Big Key in starting inventory (thanks Cody!) - Fixed generation error with Big Key in starting inventory (thanks Cody!)
- HMG/NL logic fixes by Muffins - HMG/NL logic fixes by Muffins

View File

@@ -325,6 +325,10 @@ def update_deprecated_args(args):
if args: if args:
argVars = vars(args) argVars = vars(args)
truthy = [1, True, "True", "true"] truthy = [1, True, "True", "true"]
if "multi" in argVars:
players = int(args.multi)
else:
players = 1
# Hints default to FALSE # Hints default to FALSE
# Don't do: Yes # Don't do: Yes
# Do: No # Do: No
@@ -362,11 +366,11 @@ def update_deprecated_args(args):
# Don't do: Yes # Don't do: Yes
# Do: No # Do: No
if "no_shuffleganon" in argVars: if "no_shuffleganon" in argVars:
args.shuffleganon = not args.no_shuffleganon in truthy if isinstance(args.shuffleganon, dict):
# Don't do: No for player in range(1, players + 1):
# Do: Yes args.shuffleganon[player] = not args.no_shuffleganon in truthy
if "shuffleganon" in argVars: else:
args.no_shuffleganon = not args.shuffleganon in truthy args.shuffleganon = not args.no_shuffleganon in truthy
# Playthrough defaults to TRUE # Playthrough defaults to TRUE
# Don't do: Yes # Don't do: Yes

View File

@@ -181,7 +181,7 @@ def do_main_shuffle(entrances, exits, avail, mode_def):
avail.decoupled_entrances.extend(entrances) avail.decoupled_entrances.extend(entrances)
avail.decoupled_exits.extend(exits) avail.decoupled_exits.extend(exits)
if not avail.world.shuffle_ganon: if not avail.world.shuffle_ganon[avail.player]:
if avail.world.is_atgt_swapped(avail.player) and 'Agahnims Tower' in entrances: if avail.world.is_atgt_swapped(avail.player) and 'Agahnims Tower' in entrances:
connect_two_way('Agahnims Tower', 'Ganons Tower Exit', avail) connect_two_way('Agahnims Tower', 'Ganons Tower Exit', avail)
entrances.remove('Agahnims Tower') entrances.remove('Agahnims Tower')