From 837868a90165c1021cfe24ffd030344a459b1ba0 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Tue, 3 Jun 2025 21:16:38 +0200 Subject: fix dishwasher getting stuck; fix #277 --- server/bot/src/algos/dishwasher.rs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'server/bot/src') diff --git a/server/bot/src/algos/dishwasher.rs b/server/bot/src/algos/dishwasher.rs index 17698524..2bd1c9b2 100644 --- a/server/bot/src/algos/dishwasher.rs +++ b/server/bot/src/algos/dishwasher.rs @@ -95,16 +95,19 @@ impl State for DishWasher { impl Context<'_, DishWasher> { fn update(&mut self) -> LogicRes { - if let Some(pos) = self.find_item_on_map(self.state.dirty_plate.unwrap()) { - self.assert_tile_is_clear(pos)?; - } - if self.is_hand_item(self.state.dirty_plate.unwrap()) { - // TODO clear sink first but dont "steal" items from others working there - if let Some(sink) = self.find_empty_interactable_tile_by_name("sink") { + if let Some(sink) = self.find_empty_interactable_tile_by_name("sink") { + if let Some(pos) = self.find_item_on_map(self.state.dirty_plate.unwrap()) { + self.assert_tile_is_clear(pos)?; + } + if self.is_hand_item(self.state.dirty_plate.unwrap()) { + // TODO clear sink first but dont "steal" items from others working there self.interact_with(sink, 2.0)?; + } else { + self.assert_hand_is_clear()?; } + } else { + self.assert_hand_is_clear()?; } - self.assert_hand_is_clear()?; Ok(()) } } -- cgit v1.2.3-70-g09d2