diff options
-rw-r--r-- | server/bot/src/algos/waiter.rs | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/server/bot/src/algos/waiter.rs b/server/bot/src/algos/waiter.rs index 125b5510..364f26c8 100644 --- a/server/bot/src/algos/waiter.rs +++ b/server/bot/src/algos/waiter.rs @@ -68,26 +68,28 @@ impl State for Waiter { } impl Context<'_, Waiter> { - fn aquire_item(&mut self, item: ItemIndex) -> LogicRes { + fn aquire_item(&mut self, item: ItemIndex) -> LogicRes<bool> { debug!("aquire item {:?}", self.game.data.item_names[item.0]); if self.is_hand_item(item) { - return Ok(()); + return Ok(true); } if let Some(pos) = self.find_item_on_map(item) { self.assert_hand_is_clear()?; self.interact_with(pos, 0.)?; - return Ok(()); + return Ok(true); } - Err(()) + Ok(false) } fn update(&mut self) -> LogicRes { if let Some(pos) = self.find_occupied_table_or_floor() { self.assert_tile_is_clear(pos)?; } if let Some((item, table)) = self.find_demand() { - self.aquire_item(item)?; - self.interact_with(table, 0.)?; + if self.aquire_item(item)? { + self.interact_with(table, 0.)?; + } } + self.assert_hand_is_clear()?; Ok(()) } } |