From fee711611e3219d3b4d911b6cd6e49da0aefcb7d Mon Sep 17 00:00:00 2001 From: dotzo Date: Wed, 16 Jul 2025 23:22:09 -0400 Subject: [PATCH 1/6] mq fix 1 --- data/Glitched World/Bottom of the Well MQ.json | 1 + data/Glitched World/Water Temple MQ.json | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/data/Glitched World/Bottom of the Well MQ.json b/data/Glitched World/Bottom of the Well MQ.json index 7cbdcb8207..e566f39ba7 100644 --- a/data/Glitched World/Bottom of the Well MQ.json +++ b/data/Glitched World/Bottom of the Well MQ.json @@ -40,6 +40,7 @@ or (can_gdv and can_isg)) ) or can_use(Boomerang)", + "Bottom of the Well MQ GS Basement": "can_child_attack or is_adult", "Bottom of the Well MQ GS Coffin Room": " (Small_Key_Bottom_of_the_Well, 2) and (can_child_attack or is_adult)", "Wall Fairy": "has_bottle and can_use(Slingshot)", diff --git a/data/Glitched World/Water Temple MQ.json b/data/Glitched World/Water Temple MQ.json index 171d79e0e9..860352d5c9 100644 --- a/data/Glitched World/Water Temple MQ.json +++ b/data/Glitched World/Water Temple MQ.json @@ -97,7 +97,6 @@ "locations": {}, "exits": { "Water Temple East Column": "True", - "Water Temple Storage Room": "True", "Water Temple South Basement": "glitch_water_south_basement_clip or (Zora_Tunic and Iron_Boots)", "Water Temple North Basement": " (glitch_water_bk_area_antigrav and can_live_dmg(0.5)) From 219fa1fe4bd586b279dbe7ab899483d95368d5b2 Mon Sep 17 00:00:00 2001 From: dotzo Date: Fri, 15 Aug 2025 00:29:01 -0400 Subject: [PATCH 2/6] IGC Light Trial bugfix --- data/Glitched World/Ganons Castle MQ.json | 3 ++- data/Glitched World/Ganons Castle.json | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/data/Glitched World/Ganons Castle MQ.json b/data/Glitched World/Ganons Castle MQ.json index 93d991bdfb..c6f66920eb 100644 --- a/data/Glitched World/Ganons Castle MQ.json +++ b/data/Glitched World/Ganons Castle MQ.json @@ -23,7 +23,8 @@ "Ganons Castle Shadow Trial": "True", "Ganons Castle Fire Trial": "logic_fewer_tunic_requirements or can_use(Goron_Tunic)", "Ganons Castle Light Trial": "can_use(Golden_Gauntlets) or - (has_explosives and can_live_dmg(0.5,False) and is_adult)", + (is_adult and glitch_clipping and has_explosives and can_live_dmg(0.5,False)) + or (glitch_clipping and can_superslide and has_bombs)", "Ganons Castle Spirit Trial": "True", "Ganons Castle Deku Scrubs": "logic_lens_castle_mq or can_use(Lens_of_Truth)", "Ganons Castle Tower": "(glitch_igc_trials_skip and can_hover) or ( diff --git a/data/Glitched World/Ganons Castle.json b/data/Glitched World/Ganons Castle.json index c2cd3bc7a9..8468b992d1 100644 --- a/data/Glitched World/Ganons Castle.json +++ b/data/Glitched World/Ganons Castle.json @@ -18,7 +18,8 @@ "Ganons Castle Shadow Trial": "True", "Ganons Castle Fire Trial": "logic_fewer_tunic_requirements or can_use(Goron_Tunic)", "Ganons Castle Light Trial": "can_use(Golden_Gauntlets) or - (has_explosives and can_live_dmg(0.5,False) and is_adult)", + (is_adult and glitch_clipping and has_explosives and can_live_dmg(0.5,False)) + or (glitch_clipping and can_superslide and has_bombs)", "Ganons Castle Spirit Trial": "True", "Ganons Castle Deku Scrubs": "logic_lens_castle or can_use(Lens_of_Truth)", "Ganons Castle Tower": "(glitch_igc_trials_skip and can_hover) or ( @@ -227,7 +228,7 @@ "Ganons Castle Light Trial Boulder Pot": "True", "Ganons Castle Light Trial Silver Rupee Right Alcove": "True", "Ganons Castle Light Trial Silver Rupee Left Alcove": "True", - "Ganons Castle Light Trial Silver Rupee Center Top": "Hookshot", + "Ganons Castle Light Trial Silver Rupee Center Top": "can_use(Hookshot)", "Ganons Castle Light Trial Silver Rupee Center Right": "True", "Ganons Castle Light Trial Silver Rupee Center Left": "True" }, From 47d911b152a858aed8cdc896b361ed737ab06888 Mon Sep 17 00:00:00 2001 From: dotzo Date: Tue, 19 Aug 2025 12:07:07 -0400 Subject: [PATCH 3/6] Remove a redundant entrance and massage ER one-ways for advanced --- EntranceShuffle.py | 40 +++++++++++++++++++++++++++++- data/Glitched World/Overworld.json | 2 -- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/EntranceShuffle.py b/EntranceShuffle.py index b65b7dcdaa..07200a2762 100644 --- a/EntranceShuffle.py +++ b/EntranceShuffle.py @@ -472,8 +472,9 @@ def shuffle_random_entrances(worlds: list[World]) -> None: if worlds[0].settings.warp_songs: one_way_entrance_pools['WarpSong'] = world.get_shufflable_entrances(type='WarpSong') - if worlds[0].settings.reachable_locations != 'beatable' and worlds[0].settings.logic_rules == 'glitchless': + if worlds[0].settings.reachable_locations != 'beatable' and worlds[0].settings.logic_rules != 'none': # In glitchless, there aren't any other ways to access these areas + # This also applies in Advanced logic when specific tricks aren't enabled wincons = {worlds[0].settings.bridge, worlds[0].settings.shuffle_ganon_bosskey} if worlds[0].settings.shuffle_ganon_bosskey == 'on_lacs': wincons.add(worlds[0].settings.lacs_condition) @@ -482,19 +483,56 @@ def shuffle_random_entrances(worlds: list[World]) -> None: or worlds[0].mixed_pools_bosses ): wincons -= {'dungeons', 'stones', 'medallions'} + if ( worlds[0].settings.reachable_locations == 'all' or ('tokens' in wincons and worlds[0].settings.tokensanity in ('off', 'dungeons')) ): one_way_priorities['Bolero'] = priority_entrance_table['Bolero'] + if ( + worlds[0].settings.logic_rules == 'glitchless' + or ( + worlds[0].settings.logic_rules == 'advanced' + and not ( + 'glitch_isg' in worlds[0].settings.advanced_allowed_tricks + and ( + ( + 'glitch_graveyard_shadow_early_hover' in worlds[0].settings.advanced_allowed_tricks + and 'glitch_hovering' in worlds[0].settings.advanced_allowed_tricks + ) + or + 'glitch_graveyard_shadow_early_hookshot' in worlds[0].settings.advanced_allowed_tricks + ) + ) + ) + ) and ( worlds[0].settings.reachable_locations == 'all' or 'dungeons' in wincons or ('stones' in wincons and 'medallions' in wincons) or ('tokens' in wincons and worlds[0].settings.tokensanity in ('off', 'overworld')) ): one_way_priorities['Nocturne'] = priority_entrance_table['Nocturne'] + if ( + worlds[0].settings.logic_rules == 'glitchless' + or ( + worlds[0].settings.logic_rules == 'advanced' + and not ( + 'logic_wasteland_crossing' in worlds[0].settings.allowed_tricks + and ( + ( + 'glitch_isg' in worlds[0].settings.advanced_allowed_tricks + and 'glitch_hovering' in worlds[0].settings.advanced_allowed_tricks + ) + or + 'adv_cucco_jump' in worlds[0].settings.advanced_allowed_tricks + or + 'glitch_megaflip' in worlds[0].settings.advanced_allowed_tricks + ) + ) + ) + ) and ( not worlds[0].shuffle_dungeon_entrances and not worlds[0].settings.shuffle_overworld_entrances and not worlds[0].shuffle_special_interior_entrances diff --git a/data/Glitched World/Overworld.json b/data/Glitched World/Overworld.json index 880db61a18..f9503b6a48 100644 --- a/data/Glitched World/Overworld.json +++ b/data/Glitched World/Overworld.json @@ -2236,8 +2236,6 @@ "Graveyard Dampes Grave": "is_adult", "Graveyard Dampes House": "is_adult or at_dampe_time", "Kakariko Village": "True", - "Graveyard Warp Pad Region": "(is_adult and glitch_graveyard_shadow_early_hookshot and Hookshot - and can_isg) or (glitch_graveyard_shadow_early_hover and can_hover)", "Shadow Temple Entryway": "(is_adult and glitch_graveyard_shadow_early_hookshot and Hookshot and can_isg) or (glitch_graveyard_shadow_early_hover and can_hover)" } From 10af06ae7dad009d3e50979f855f5e6e620a6879 Mon Sep 17 00:00:00 2001 From: dotzo Date: Tue, 19 Aug 2025 13:28:40 -0400 Subject: [PATCH 4/6] More ER fixes --- data/Glitched World/Overworld.json | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/data/Glitched World/Overworld.json b/data/Glitched World/Overworld.json index f9503b6a48..fd6c57b02d 100644 --- a/data/Glitched World/Overworld.json +++ b/data/Glitched World/Overworld.json @@ -206,8 +206,7 @@ or can_mega or can_superslide or can_hess or can_hover", "Lost Woods": "True", "LW Bridge From Forest": "can_leave_forest", - "KF Storms Grotto": "can_open_storm_grotto", - "Deku Tree Lobby": "can_hover or (can_use(Hover_Boots) and (can_megajump or can_superslide or can_hess))" + "KF Storms Grotto": "can_open_storm_grotto" } }, { @@ -234,7 +233,8 @@ is_child or (shuffle_dungeon_entrances and (open_forest == 'open' or 'Showed Mido Sword & Shield')) or (glitch_moustache_clip) - or (can_hess and can_use(Hover_Boots))", + or (can_hess and can_use(Hover_Boots)) + or at('Kokiri Forest', can_hover or (can_use(Hover_Boots) and (can_megajump or can_superslide or can_hess)))", "Kokiri Forest": "is_adult or open_forest == 'open' or 'Showed Mido Sword & Shield' or can_hess or can_superslide or can_mega" } @@ -868,7 +868,10 @@ or (is_child and (glitch_gtg_child_groundclip and can_jumpslash) - )", + ) + or at('Gerudo Fortress Archery Range', adv_gf_unload) + or at('GF Kitchen Roof Access', glitch_ledge_clip and is_adult) + ", "GF Balcony": "can_use(Hookshot) and glitch_clipping", "GF Kitchen Roof Access": "can_use(Longshot) and can_weirdshot" } @@ -911,7 +914,6 @@ }, "exits": { "GF Kitchen Roof Access": "can_use(Longshot) and Gerudo_Membership_Card", - "Gerudo Training Ground Lobby": "adv_gf_unload", "GF Outside Gate": "adv_gf_unload" } }, @@ -940,8 +942,7 @@ # child can damage boost from the GS alcove, but it's really precise # got it once, will have to find a setup "GF Break Room Entrance": "can_hover or can_mega or (is_adult and (logic_gf_break_room_jump or Hover_Boots))", - "Gerudo Fortress Archery Range": "adv_gf_archery_no_card", - "Gerudo Training Ground Lobby": "glitch_ledge_clip and is_adult" + "Gerudo Fortress Archery Range": "adv_gf_archery_no_card" } }, { @@ -2236,7 +2237,7 @@ "Graveyard Dampes Grave": "is_adult", "Graveyard Dampes House": "is_adult or at_dampe_time", "Kakariko Village": "True", - "Shadow Temple Entryway": "(is_adult and glitch_graveyard_shadow_early_hookshot and Hookshot + "Graveyard Warp Pad Region": "(is_adult and glitch_graveyard_shadow_early_hookshot and Hookshot and can_isg) or (glitch_graveyard_shadow_early_hover and can_hover)" } }, @@ -2351,7 +2352,10 @@ "Shadow Temple Entryway": " can_use(Dins_Fire) or (logic_shadow_fire_arrow_entry and can_use(Fire_Arrows)) or can_gdv or (is_adult and glitch_graveyard_shadow_early_bomb_push and Bombs and can_shield) - or (is_adult and glitch_ledge_clip)" + or (is_adult and glitch_ledge_clip) + or at('Graveyard', (is_adult and glitch_graveyard_shadow_early_hookshot and Hookshot + and can_isg) or (glitch_graveyard_shadow_early_hover and can_hover)) + " } }, { From a6a7b60856e0d828003c0eb4f37eb61012f6d6a4 Mon Sep 17 00:00:00 2001 From: shirosoluna Date: Tue, 19 Aug 2025 14:23:23 -0400 Subject: [PATCH 5/6] trailing whitespaces --- EntranceShuffle.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/EntranceShuffle.py b/EntranceShuffle.py index 07200a2762..e9ebcd5d69 100644 --- a/EntranceShuffle.py +++ b/EntranceShuffle.py @@ -483,13 +483,13 @@ def shuffle_random_entrances(worlds: list[World]) -> None: or worlds[0].mixed_pools_bosses ): wincons -= {'dungeons', 'stones', 'medallions'} - + if ( worlds[0].settings.reachable_locations == 'all' or ('tokens' in wincons and worlds[0].settings.tokensanity in ('off', 'dungeons')) ): one_way_priorities['Bolero'] = priority_entrance_table['Bolero'] - + if ( worlds[0].settings.logic_rules == 'glitchless' or ( @@ -513,7 +513,7 @@ def shuffle_random_entrances(worlds: list[World]) -> None: or ('tokens' in wincons and worlds[0].settings.tokensanity in ('off', 'overworld')) ): one_way_priorities['Nocturne'] = priority_entrance_table['Nocturne'] - + if ( worlds[0].settings.logic_rules == 'glitchless' or ( From ff8c4dbaf44130c88475ae5c788046d6ecb945ac Mon Sep 17 00:00:00 2001 From: shirosoluna Date: Tue, 19 Aug 2025 14:53:18 -0400 Subject: [PATCH 6/6] bombs /= has bombs --- data/Glitched World/Ganons Castle MQ.json | 2 +- data/Glitched World/Ganons Castle.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/Glitched World/Ganons Castle MQ.json b/data/Glitched World/Ganons Castle MQ.json index c6f66920eb..032522bd43 100644 --- a/data/Glitched World/Ganons Castle MQ.json +++ b/data/Glitched World/Ganons Castle MQ.json @@ -24,7 +24,7 @@ "Ganons Castle Fire Trial": "logic_fewer_tunic_requirements or can_use(Goron_Tunic)", "Ganons Castle Light Trial": "can_use(Golden_Gauntlets) or (is_adult and glitch_clipping and has_explosives and can_live_dmg(0.5,False)) - or (glitch_clipping and can_superslide and has_bombs)", + or (glitch_clipping and can_superslide and Bombs)", "Ganons Castle Spirit Trial": "True", "Ganons Castle Deku Scrubs": "logic_lens_castle_mq or can_use(Lens_of_Truth)", "Ganons Castle Tower": "(glitch_igc_trials_skip and can_hover) or ( diff --git a/data/Glitched World/Ganons Castle.json b/data/Glitched World/Ganons Castle.json index 8468b992d1..fc818277ba 100644 --- a/data/Glitched World/Ganons Castle.json +++ b/data/Glitched World/Ganons Castle.json @@ -19,7 +19,7 @@ "Ganons Castle Fire Trial": "logic_fewer_tunic_requirements or can_use(Goron_Tunic)", "Ganons Castle Light Trial": "can_use(Golden_Gauntlets) or (is_adult and glitch_clipping and has_explosives and can_live_dmg(0.5,False)) - or (glitch_clipping and can_superslide and has_bombs)", + or (glitch_clipping and can_superslide and Bombs)", "Ganons Castle Spirit Trial": "True", "Ganons Castle Deku Scrubs": "logic_lens_castle or can_use(Lens_of_Truth)", "Ganons Castle Tower": "(glitch_igc_trials_skip and can_hover) or (