summaryrefslogtreecommitdiff
path: root/server/bot/src
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-08-12 16:14:17 +0200
committermetamuffin <metamuffin@disroot.org>2024-08-12 16:14:17 +0200
commit2a81c045deffa481d4021f3ef960e2fb706ff011 (patch)
treeba36fd75b82ec5196a9f8c6182458d00818a8dbd /server/bot/src
parent7aa0f026f6f0f72efc5513688ecec21a1e43ea74 (diff)
downloadhurrycurry-2a81c045deffa481d4021f3ef960e2fb706ff011.tar
hurrycurry-2a81c045deffa481d4021f3ef960e2fb706ff011.tar.bz2
hurrycurry-2a81c045deffa481d4021f3ef960e2fb706ff011.tar.zst
bot: idle waiter clears hand
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(())
}
}