diff options
Diffstat (limited to 'server')
-rw-r--r-- | server/src/entity/tutorial.rs | 18 |
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; } |