From b31d4b9fa1c8e1a17139e9aaf03d18c9c27e0c18 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Fri, 20 Sep 2024 16:13:40 +0200 Subject: find any recipe tile in tutorial; fixes #146 --- server/src/entity/tutorial.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'server/src/entity/tutorial.rs') diff --git a/server/src/entity/tutorial.rs b/server/src/entity/tutorial.rs index 33a2397c..a49c5993 100644 --- a/server/src/entity/tutorial.rs +++ b/server/src/entity/tutorial.rs @@ -247,12 +247,14 @@ impl<'a> StepContext<'a> { speed, .. } => { - if let Some(pos) = self.find_tile(*tile) { - if let Some(item) = &self.ent.game.tiles.get(&pos).unwrap().item { + for (pos, tile) in self.ent.game.tiles.iter().filter(|(_, t)| t.kind == *tile) { + if let Some(item) = &tile.item { if item.kind == *input { - return Err((Some(pos), trm!("s.tutorial.hold_interact"))); + return Err((Some(*pos), trm!("s.tutorial.hold_interact"))); } } + } + if let Some(pos) = self.find_tile(*tile) { self.aquire_item(*input)?; return Err(( Some(pos), @@ -265,12 +267,14 @@ impl<'a> StepContext<'a> { input, .. } => { - if let Some(pos) = self.find_tile(*tile) { - if let Some(item) = &self.ent.game.tiles.get(&pos).unwrap().item { + for (pos, tile) in self.ent.game.tiles.iter().filter(|(_, t)| t.kind == *tile) { + if let Some(item) = &tile.item { if item.kind == *input { - return Err((Some(pos), trm!("s.tutorial.wait_finish"))); + return Err((Some(*pos), trm!("s.tutorial.wait_finish"))); } } + } + if let Some(pos) = self.find_tile(*tile) { self.aquire_item(*input)?; return Err((Some(pos), trm!("s.tutorial.put_on", t = *tile))); } -- cgit v1.2.3-70-g09d2