diff --git a/BaseClasses.py b/BaseClasses.py index d34e0b67..a7170779 100644 --- a/BaseClasses.py +++ b/BaseClasses.py @@ -3010,7 +3010,7 @@ class Settings(object): | (counter_mode[w.dungeon_counters[p]] << 1) | (1 if w.experimental[p] else 0), ((8 if w.crystals_ganon_orig[p] == "random" else int(w.crystals_ganon_orig[p])) << 3) - | (0x4 if w.is_pyramid_open[p] else 0) | access_mode[w.accessibility[p]], + | (0x4 if w.is_pyramid_open(p) else 0) | access_mode[w.accessibility[p]], (0x80 if w.bigkeyshuffle[p] else 0) | (0x20 if w.mapshuffle[p] else 0) | (0x10 if w.compassshuffle[p] else 0) diff --git a/Main.py b/Main.py index fa6b7a2f..2894194e 100644 --- a/Main.py +++ b/Main.py @@ -34,7 +34,7 @@ from source.overworld.EntranceShuffle2 import link_entrances_new from source.tools.BPS import create_bps_from_data from source.classes.CustomSettings import CustomSettings -version_number = '1.2.0.13' +version_number = '1.2.0.14' version_branch = '-u' __version__ = f'{version_number}{version_branch}' diff --git a/RELEASENOTES.md b/RELEASENOTES.md index e2c23a11..e91b6ef4 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -109,6 +109,15 @@ These are now independent of retro mode and have three options: None, Random, an # Bug Fixes and Notes +* 1.2.0.14u + * GUI reorganization + * Auto option for pyramid open (trinity or ER + crystals goal) + * World model refactor (combining inverted and normal world models) + * Partitioned fix for lamp logic and links house + * Fix starting flute logic + * Reduced universal keys in pool slightly for non-vanilla dungeons + * Fake world fix finally + * Some extra restrictions on links house placement for lite/lean * 1.2.0.13u * Allow green/blue potion refills to be customized * OW Map showing dungeon entrance at Snitch Lady (West) fixed (instead of @ HC Courtyard) diff --git a/source/gui/widgets.py b/source/gui/widgets.py index 0198a43a..4723a526 100644 --- a/source/gui/widgets.py +++ b/source/gui/widgets.py @@ -266,13 +266,24 @@ def widget_command(widget, command=""): elif command == "keydropshuffle": if widget.storageVar.get() > 0: temp_widget = root.pages["randomizer"].pages["item"].widgets["pottery"] - text_output += f'\n {temp_widget.label.cget("text")}' if temp_widget.storageVar.get() == 'none': + text_output += f'\n {temp_widget.label.cget("text")}' temp_widget.storageVar.set('keys') temp_widget = root.pages["randomizer"].pages["item"].widgets["dropshuffle"] - temp_widget.storageVar.set(1) - text_output += f'\n {temp_widget.checkbox.cget("text")}' - - widget.storageVar.set(0) - messagebox.showinfo('', f'The following settings were changed:{text_output}') + if temp_widget.storageVar.get() == 0: + temp_widget.storageVar.set(1) + text_output += f'\n {temp_widget.checkbox.cget("text")}' + if text_output: + messagebox.showinfo('', f'The following settings were changed:{text_output}') + else: + temp_widget = root.pages["randomizer"].pages["item"].widgets["pottery"] + if temp_widget.storageVar.get() == 'keys': + text_output += f'\n {temp_widget.label.cget("text")}' + temp_widget.storageVar.set('none') + temp_widget = root.pages["randomizer"].pages["item"].widgets["dropshuffle"] + if temp_widget.storageVar.get() == 1: + temp_widget.storageVar.set(0) + text_output += f'\n {temp_widget.checkbox.cget("text")}' + if text_output: + messagebox.showinfo('', f'The following settings were changed:{text_output}') diff --git a/source/overworld/EntranceShuffle2.py b/source/overworld/EntranceShuffle2.py index f696df01..77790bda 100644 --- a/source/overworld/EntranceShuffle2.py +++ b/source/overworld/EntranceShuffle2.py @@ -425,10 +425,11 @@ def do_links_house(entrances, exits, avail, cross_world): if not avail.world.shufflelinks[avail.player]: links_house = 'Big Bomb Shop' if avail.inverted else 'Links House' else: - forbidden = list(Isolated_LH_Doors_Inv + Inverted_Dark_Sanctuary_Doors + forbidden = list((Isolated_LH_Doors_Inv + Inverted_Dark_Sanctuary_Doors) if avail.inverted else Isolated_LH_Doors_Open) + shuffle_mode = avail.world.shuffle[avail.player] # simple shuffle - - if avail.world.shuffle[avail.player] == 'simple': + if shuffle_mode == 'simple': avail.links_on_mountain = True # taken care of by the logic below if avail.inverted: # in inverted, links house cannot be on the mountain forbidden.extend(['Spike Cave', 'Dark Death Mountain Fairy', 'Hookshot Fairy']) @@ -441,10 +442,11 @@ def do_links_house(entrances, exits, avail, cross_world): # can't have links house on eddm in restricted because Inverted Aga Tower isn't available # todo: inverted full may have the same problem if both links house and a mandatory connector is chosen # from the 3 inverted options - if avail.world.shuffle[avail.player] in ['restricted'] and avail.inverted: + if shuffle_mode in ['restricted'] and avail.inverted: avail.links_on_mountain = True forbidden.extend(['Spike Cave', 'Dark Death Mountain Fairy']) - + if shuffle_mode in ['lite', 'lean']: + forbidden.extend(['Spike Cave', 'Mire Shed']) # lobby shuffle means you ought to keep links house in the same world sanc_spawn_can_be_dark = (not avail.inverted and avail.world.doorShuffle[avail.player] in ['partitioned', 'crossed'] and avail.world.intensity[avail.player] >= 3)