aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--server/src/entity/tutorial.rs16
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)));
}