summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-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;
}