summaryrefslogtreecommitdiff
path: root/server/bot/src
diff options
context:
space:
mode:
Diffstat (limited to 'server/bot/src')
-rw-r--r--server/bot/src/algos/waiter.rs14
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(())
}
}