diff options
-rw-r--r-- | locale/en.ini | 4 | ||||
-rw-r--r-- | server/src/entity/tutorial.rs | 18 |
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; } |