diff options
author | metamuffin <metamuffin@disroot.org> | 2024-09-20 16:13:40 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-09-20 16:13:45 +0200 |
commit | b31d4b9fa1c8e1a17139e9aaf03d18c9c27e0c18 (patch) | |
tree | 61574c69286f482fcfbbb25b87f735524fa9d69a /server/src | |
parent | 6b93fb43e858e1b979d8539b9b9cde3edfbfa195 (diff) | |
download | hurrycurry-b31d4b9fa1c8e1a17139e9aaf03d18c9c27e0c18.tar hurrycurry-b31d4b9fa1c8e1a17139e9aaf03d18c9c27e0c18.tar.bz2 hurrycurry-b31d4b9fa1c8e1a17139e9aaf03d18c9c27e0c18.tar.zst |
find any recipe tile in tutorial; fixes #146
Diffstat (limited to 'server/src')
-rw-r--r-- | server/src/entity/tutorial.rs | 16 |
1 files changed, 10 insertions, 6 deletions
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))); } |