diff options
| author | metamuffin <metamuffin@disroot.org> | 2024-09-20 12:09:11 +0200 | 
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2024-09-20 12:09:11 +0200 | 
| commit | 9853cd599f6e84333d8688edc324861b67c86bbb (patch) | |
| tree | 996972a71188036fbbc95a9361b5027dffc8c508 /server | |
| parent | cc79cea77b81cfee21bb84eb2b4cda59ac42143b (diff) | |
| download | hurrycurry-9853cd599f6e84333d8688edc324861b67c86bbb.tar hurrycurry-9853cd599f6e84333d8688edc324861b67c86bbb.tar.bz2 hurrycurry-9853cd599f6e84333d8688edc324861b67c86bbb.tar.zst | |
prevent burning in tutorial. also fixes #138
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;          } | 
