diff options
Diffstat (limited to 'server/src/entity/tutorial.rs')
-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))); } |