From 5eb04bc41f8a3e1c1af98a9b0b64c1e305560f46 Mon Sep 17 00:00:00 2001 From: codemann8 Date: Sun, 22 May 2022 15:53:13 -0500 Subject: [PATCH] Added bush crabs to rupee farm logic --- BaseClasses.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/BaseClasses.py b/BaseClasses.py index ad8675a3..983367fb 100644 --- a/BaseClasses.py +++ b/BaseClasses.py @@ -1089,6 +1089,10 @@ class CollectionState(object): rupee_farms = ['Archery Game', '50 Rupee Cave', '20 Rupee Cave'] + bush_crabs = ['Lost Woods East Area', 'Mountain Entry Area'] + pre_aga_bush_crabs = ['Lumberjack Area', 'South Pass Area'] + rock_crabs = ['Desert Pass Area'] + def can_reach_non_bunny(regionname): region = self.world.get_region(regionname, player) return region.can_reach(self) and ((self.world.mode[player] != 'inverted' and region.is_light_world) or (self.world.mode[player] == 'inverted' and region.is_dark_world) or self.has('Pearl', player)) @@ -1109,6 +1113,22 @@ class CollectionState(object): for region in post_aga_tree_pulls: if can_reach_non_bunny(region): return True + + # bush crabs (final item isn't considered) + if self.world.enemy_shuffle[player] != 'none': + if self.world.prizes[player]['crab'][0] in [0xda, 0xdb]: + for region in bush_crabs: + if can_reach_non_bunny(region): + return True + if not self.has('Beat Agahnim 1', player): + for region in pre_aga_bush_crabs: + if can_reach_non_bunny(region): + return True + if self.can_lift_rocks(player) and self.world.prizes[player]['crab'][0] in [0xda, 0xdb]: + for region in rock_crabs: + if can_reach_non_bunny(region): + return True + return False def can_farm_bombs(self, player):