summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--locale/en.ini4
-rw-r--r--server/src/entity/tutorial.rs18
2 files changed, 21 insertions, 1 deletions
diff --git a/locale/en.ini b/locale/en.ini
index f5eb0de6..e377d927 100644
--- a/locale/en.ini
+++ b/locale/en.ini
@@ -173,12 +173,14 @@ c.setup.user_signature.desc=Signature of the Employee:%n%n%n
s.bot.simple=Simple chef
s.bot.waiter=Waiter
s.bot.frank=Frank Miller
+s.tutorial.prevent_burning=Take this before it burns
+s.tutorial.take_now=Take this item quickly!
s.tutorial.active=Interact here for {0}s
s.tutorial.clear_tile=Clear this tile
s.tutorial.error=Tutorial code handle this recipe yet.
s.tutorial.finished=Tutorial finished!
s.tutorial.hold_interact=Hold interact
-s.tutorial.interact_empty=Interact with an empty tile
+s.tutorial.interact_empty=Interact with an empty counter
s.tutorial.interact=Interact here
s.tutorial.pickup=Take this item.
s.tutorial.put_away=Put away this item for later
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;
}