From 06111ac6cf30de7d8cfdf52f1f96baea9da7e9ea Mon Sep 17 00:00:00 2001 From: justinspatz <164453633+justinspatz@users.noreply.github.com> Date: Mon, 10 Mar 2025 12:39:45 -0400 Subject: [PATCH] OOT: Have beehives that only appear as a child not be in logic if only adult can break beehives (#4646) * Change the logic for the 3 Zora's Domain Beehives to support new rule Implement new logic changes to these 3 locations * Update LogicHelpers.json with new rule for beehives that only appear for child link Added below the "can_break_upper_beehive" a new helper called "can_break_upper_beehive_child" which removes the requirement for hookshot to avoid a logic error in the Zora Domain Beehives where it checks whether child or adult can break beehives, even though these beehives do not appear as an adult. * Update LogicHelpers.json moving the call for is_child As is_child is already called for can_use (Boomerang), it's a bit redundant to include the check for using the Boomerang, so it's being moved to be with the Bombchu check to ensure that it's not expected if the Bombchu Logic Rule is turned on that Adult can use bombchus to break the beehives. This effectively does the same thing, but should be better on performance. --- worlds/oot/data/LogicHelpers.json | 1 + worlds/oot/data/World/Overworld.json | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/worlds/oot/data/LogicHelpers.json b/worlds/oot/data/LogicHelpers.json index 7f364106..a05fe660 100644 --- a/worlds/oot/data/LogicHelpers.json +++ b/worlds/oot/data/LogicHelpers.json @@ -66,6 +66,7 @@ "can_break_heated_crate": "deadly_bonks != 'ohko' or (Fairy and (can_use(Goron_Tunic) or damage_multiplier != 'ohko')) or can_use(Nayrus_Love) or can_blast_or_smash", "can_break_lower_beehive": "can_use(Boomerang) or can_use(Hookshot) or Bombs or (logic_beehives_bombchus and has_bombchus)", "can_break_upper_beehive": "can_use(Boomerang) or can_use(Hookshot) or (logic_beehives_bombchus and has_bombchus)", + "can_break_upper_beehive_child": "can_use(Boomerang) or (logic_beehives_bombchus and has_bombchus and is_child)", # can_use and helpers # The parser reduces this to smallest form based on item category. # Note that can_use(item) is False for any item not covered here. diff --git a/worlds/oot/data/World/Overworld.json b/worlds/oot/data/World/Overworld.json index de2b4a61..87b24a6e 100644 --- a/worlds/oot/data/World/Overworld.json +++ b/worlds/oot/data/World/Overworld.json @@ -2233,8 +2233,8 @@ "ZD Pot 3": "True", "ZD Pot 4": "True", "ZD Pot 5": "True", - "ZD In Front of King Zora Beehive 1": "is_child and can_break_upper_beehive", - "ZD In Front of King Zora Beehive 2": "is_child and can_break_upper_beehive", + "ZD In Front of King Zora Beehive 1": "can_break_upper_beehive_child", + "ZD In Front of King Zora Beehive 2": "can_break_upper_beehive_child", "ZD GS Frozen Waterfall": " is_adult and at_night and (Hookshot or Bow or Magic_Meter or logic_domain_gs)", @@ -2259,7 +2259,7 @@ "scene": "Zoras Domain", "hint": "ZORAS_DOMAIN", "locations": { - "ZD Behind King Zora Beehive": "is_child and can_break_upper_beehive" + "ZD Behind King Zora Beehive": "can_break_upper_beehive_child" }, "exits": { "Zoras Domain": "