aboutsummaryrefslogtreecommitdiff
path: root/server/src/entity/tutorial.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-09-20 12:09:11 +0200
committermetamuffin <metamuffin@disroot.org>2024-09-20 12:09:11 +0200
commit9853cd599f6e84333d8688edc324861b67c86bbb (patch)
tree996972a71188036fbbc95a9361b5027dffc8c508 /server/src/entity/tutorial.rs
parentcc79cea77b81cfee21bb84eb2b4cda59ac42143b (diff)
downloadhurrycurry-9853cd599f6e84333d8688edc324861b67c86bbb.tar
hurrycurry-9853cd599f6e84333d8688edc324861b67c86bbb.tar.bz2
hurrycurry-9853cd599f6e84333d8688edc324861b67c86bbb.tar.zst
prevent burning in tutorial. also fixes #138
Diffstat (limited to 'server/src/entity/tutorial.rs')
-rw-r--r--server/src/entity/tutorial.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/server/src/entity/tutorial.rs b/server/src/entity/tutorial.rs
index 39f761bc..33a2397c 100644
--- a/server/src/entity/tutorial.rs
+++ b/server/src/entity/tutorial.rs
@@ -170,8 +170,26 @@ impl<'a> StepContext<'a> {
self.aquire_item(item)?;
Err((None, trm!("s.tutorial.put_away")))
}
+ fn prevent_burning(&self) -> Result<(), (Option<IVec2>, Message)> {
+ if let Some((pos, tile)) = self.ent.game.tiles.iter().find(|(_, t)| {
+ t.item.as_ref().map_or(false, |t| {
+ t.active.as_ref().map_or(false, |i| i.warn && i.speed > 0.)
+ })
+ }) {
+ Err((
+ Some(*pos),
+ match self.ent.game.data.tile_name(tile.kind).as_str() {
+ "stove" | "oven" => trm!("s.tutorial.prevent_burning"),
+ _ => trm!("s.tutorial.take_now"),
+ },
+ ))
+ } else {
+ Ok(())
+ }
+ }
fn fulfil_demand(&mut self, item: ItemIndex) -> Result<(), (Option<IVec2>, Message)> {
if !*self.had_aquired_target {
+ self.prevent_burning()?;
self.aquire_item(item)?;
*self.had_aquired_target = true;
}