From 65dd08e5134a0817bfa05e35a45bc2f2de6d1977 Mon Sep 17 00:00:00 2001 From: Ehseezed <97066152+Ehseezed@users.noreply.github.com> Date: Sat, 5 Oct 2024 18:04:38 -0500 Subject: [PATCH] Getting logic done pt2 --- worlds/am2r/Portal regions/InnerA3.png | Bin 5065 -> 5134 bytes worlds/am2r/regions.py | 6 ++- worlds/am2r/rules.py | 69 ++++++++++++++----------- 3 files changed, 42 insertions(+), 33 deletions(-) diff --git a/worlds/am2r/Portal regions/InnerA3.png b/worlds/am2r/Portal regions/InnerA3.png index f34180cb6b184e6c46ed19a6f97920767fae3f8b..c91ca6995ec8ad674feb251e843f0c485534e647 100644 GIT binary patch literal 5134 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 MAL~4-P__;G7qhC_Jpcdz literal 5065 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 diff --git a/worlds/am2r/regions.py b/worlds/am2r/regions.py index 278a8c237d82..09c48e4a5acb 100644 --- a/worlds/am2r/regions.py +++ b/worlds/am2r/regions.py @@ -19,7 +19,8 @@ "Inner Hydro Station": set(), "Industrial Complex Nest": {"Pre Industrial Complex"}, "Pre Industrial Complex": {"Complex Sand", "Torizo Ascended"}, - "Complex Sand": {"Industrial Complex"}, # added sand region because of the new launchers option since beam only wont work to leave + "Complex Sand": {"Speed Industrial Complex"}, # added sand region because of the new launchers option since beam only wont work to leave + "Speed Industrial Complex": {"Industrial Complex"}, "Torizo Ascended": set(), "Industrial Complex": set(), "Mines": set(), @@ -38,7 +39,8 @@ "Serris": {"Ice Beam"}, "Ice Beam": set(), "Underwater Distro Connection": {}, - "Fast Travel": {"Golden Temple", "Complex Sand", "The Tower", "Gravity", "Underwater Distribution Center"}, + "Fast Travel": {"Golden Temple", "Complex Sand", "The Tower", "Pre Gravity", "Underwater Distribution Center"}, + "Pre Gravity": {"Gravity"}, "Gravity": {"Pipe Hell Outside"}, "Pipe Hell Outside": {"Pipe Hell R"}, "Screw Attack": set(), diff --git a/worlds/am2r/rules.py b/worlds/am2r/rules.py index 9edd8e59e29d..01b130d9056f 100644 --- a/worlds/am2r/rules.py +++ b/worlds/am2r/rules.py @@ -223,10 +223,13 @@ def set_region_rules(world: "AM2RWorld") -> None: or has_supers(state, player, options, 1)) and (state.has("Ice Beam", player) and has_ammo(state, player, options, 1))) - world.get_entrance("Lower Main Caves -> Deep Caves").access_rule = \ + world.get_entrance("Lower Main Caves -> Pre Deep Caves").access_rule = \ lambda state: (can_morph(state, player, options) and has_powerbombs(state, player, options, 1) or has_supers(state, player, options, 1)) + world.get_entrance("Pre Deep Caves -> Deep Caves").access_rule = \ + lambda state: state.has("Ice Beam", player) and red_door(state, player, options) and ((can_bomb(state, player, options, 1) and state.has("Screw Attack", player)) or has_powerbombs(state, player, options, 2)) + world.get_entrance("GFS Thoth -> Genesis").access_rule = \ lambda state: can_morph(state, player, options) and has_powerbombs(state, player, options, 2) @@ -347,9 +350,11 @@ def set_region_rules(world: "AM2RWorld") -> None: world.get_entrance("Fast Travel -> The Tower").access_rule = \ lambda state: can_morph(state, player, options) and state.has("Screw Attack", player) - world.get_entrance("Fast Travel -> Gravity").access_rule = \ - lambda state: can_morph(state, player, options) and ( - state.has("Gravity Suit", player) and state.has("Space Jump", player)) + world.get_entrance("Fast Travel -> Pre Gravity").access_rule = \ + lambda state: can_morph(state, player, options) + + world.get_entrance("Fast Travel -> Pre Gravity").access_rule = \ + lambda state: state.has("Gravity Suit", player) and state.has("Space Jump", player) world.get_entrance("Pipe Hell L -> Fast Travel").access_rule = \ lambda state: state.has("Screw Attack", player) @@ -977,100 +982,102 @@ def set_location_rules_normal(world: AM2RWorld) -> None: set_rule(multiworld.get_location("Industrial Complex: Skippy Reward", player), lambda state: can_bomb(state, player, options, 1) and can_morph_uppies(state, player, options) and - has_supers(state, player, options, 4)) + has_supers(state, player, options, 2)) set_rule(multiworld.get_location("GFS Thoth: Research Camp", player), lambda state: True) set_rule(multiworld.get_location("GFS Thoth: Hornoad Room", player), - lambda state: True) + lambda state: has_powerbombs(state, player, options, 1)) set_rule(multiworld.get_location("GFS Thoth: Outside the Front of the Ship", player), - lambda state: True) + lambda state: has_powerbombs(state, player, options, 1)) set_rule(multiworld.get_location("Genesis: Boss", player), lambda state: True) set_rule(multiworld.get_location("The Tower: Beside Hydro Pipe", player), - lambda state: True) + lambda state: state.has("Screw Attack", player)) set_rule(multiworld.get_location("The Tower: Right Side of Tower", player), lambda state: True) set_rule(multiworld.get_location("The Tower: In the Ceiling", player), - lambda state: True) + lambda state: can_spider(state, player, options) and can_bomb(state, player, options, 1)) set_rule(multiworld.get_location("The Tower: Dark Maze", player), - lambda state: True) + lambda state: has_spider(state, player, options) and can_bomb(state, player, options, 2)) set_rule(multiworld.get_location("The Tower: After Dark Maze", player), - lambda state: True) + lambda state: has_spider(state, player, options) and can_bomb(state, player, options, 2)) set_rule(multiworld.get_location("The Tower: Plasma Beam", player), - lambda state: True) + lambda state: state.has("Tower Activation", player)) set_rule(multiworld.get_location("The Tower: After Tester", player), - lambda state: True) + lambda state: state.has("Tower Activation", player) and has_powerbombs(state, player, options, 2)) set_rule(multiworld.get_location("The Tower: Outside Reactor", player), - lambda state: True) + lambda state: has_powerbombs(state, player, options, 1)) set_rule(multiworld.get_location("The Tower: Geothermal Reactor", player), - lambda state: True) + lambda state: state.has("Geothermal", player)) set_rule(multiworld.get_location("The Tower: Post Reactor Chozo", player), - lambda state: True) + lambda state: state.has("Geothermal", player)) set_rule(multiworld.get_location("The Tower: Post Reactor Shinespark", player), - lambda state: True) + lambda state: state.has("Geothermal", player) and + has_supers(state, player, options, 1) and state.has("Speed Booster", player)) set_rule(multiworld.get_location("Distribution Center: Main Room Shinespark", player), - lambda state: True) + lambda state: state.has("Gravity Suit", player) and state.has("Speed Booster", player)) set_rule(multiworld.get_location("Distribution Center: Underwater Speed Hallway", player), - lambda state: True) + lambda state: state.has("Gravity Suit", player) and state.has("Speed Booster", player)) set_rule(multiworld.get_location("Distribution Center: After EMP Activation", player), - lambda state: True) + lambda state: state.has("Screw Attack", player) and state.has("Speed Booster", player)) set_rule(multiworld.get_location("Distribution Center: Spider Ball Crumble Spiky \"Maze\"", player), - lambda state: True) + lambda state: state.has("Gravity Suit", player) and has_spider(state, player, options)) set_rule(multiworld.get_location("Distribution Center: Before Spiky Trial", player), lambda state: True) set_rule(multiworld.get_location("Distribution Center: Spiky Trial Shinespark", player), - lambda state: True) + lambda state: state.has("Gravity Suit", player) and state.has("Speed Booster", player)) set_rule(multiworld.get_location("Distribution Center: After Spiky Trial", player), - lambda state: True) + lambda state: state.has("Gravity Suit", player) and state.has("Space Jump", player)) set_rule(multiworld.get_location("Distribution Center: Screw Attack", player), lambda state: True) set_rule(multiworld.get_location("Distribution Center: Exterior Post-Gravity", player), - lambda state: True) + lambda state: has_powerbombs(state, player, options, 1) and (can_wall_jump(state, player, options) + or (can_schmove(state, player, options) and state.has("Gravity Suit", player)))) set_rule(multiworld.get_location("Distribution Center: Spectator Jail", player), - lambda state: True) + lambda state: has_powerbombs(state, player, options, 1) and state.has("Speed Booster", player)) set_rule(multiworld.get_location("Distribution Center: Before Gravity", player), - lambda state: True) + lambda state: can_bomb(state, player, options, 1)) set_rule(multiworld.get_location("Distribution Center: Gravity Suit", player), - lambda state: True) + lambda state: red_door(state, player, options) and can_bomb(state, player, options, 1)) set_rule(multiworld.get_location("Serris: Ice Beam", player), - lambda state: True) + lambda state: state.has("Ice Beam", player) and red_door(state, player, options)) set_rule(multiworld.get_location("Deep Caves: Drivel Ballspark", player), - lambda state: True) + lambda state: can_ballspark(state, player, options) and state.has("Gravity Suit", player)) set_rule(multiworld.get_location("Deep Caves: Ramulken Lava Pool", player), - lambda state: True) + lambda state: can_bomb(state, player, options, 1)) set_rule(multiworld.get_location("Deep Caves: After Omega", player), - lambda state: True) + lambda state: can_schmove(state, player, options)) set_rule(multiworld.get_location("The Forgotten Alpha", player), lambda state: True)