diff --git a/EntranceShuffle.py b/EntranceShuffle.py index b65b7dcdaa..e9ebcd5d69 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/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/Ganons Castle MQ.json b/data/Glitched World/Ganons Castle MQ.json index 93d991bdfb..032522bd43 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 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..fc818277ba 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 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" }, diff --git a/data/Glitched World/Overworld.json b/data/Glitched World/Overworld.json index 880db61a18..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" } }, { @@ -2237,8 +2238,6 @@ "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)" } }, @@ -2353,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)) + " } }, { 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))