diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/controls.rs | 10 | ||||
| -rw-r--r-- | src/systems/attacking.rs | 4 |
2 files changed, 12 insertions, 2 deletions
diff --git a/src/controls.rs b/src/controls.rs index 8a10824..48d71ae 100644 --- a/src/controls.rs +++ b/src/controls.rs @@ -82,7 +82,15 @@ impl Control { )), "interact" => Some(Control::Interact( parse_directions(val.get(1)?)?, - val.get(2).map(|v| Some(v.as_str()?.to_string())).flatten() + if let Some(argument) = val.get(2) { + match argument { + Value::String(arg) => Some(arg.to_string()), + Value::Null => None, + _ => {return None} + } + } else { + None + } )), _ => None } diff --git a/src/systems/attacking.rs b/src/systems/attacking.rs index a202878..d9dc7ea 100644 --- a/src/systems/attacking.rs +++ b/src/systems/attacking.rs @@ -61,7 +61,9 @@ impl <'a> System<'a> for Attacking { let mut attackers = Vec::new(); let mut attacker_names = Vec::new(); for attack in attacked.messages.drain(..) { - let actor_name = attack.attacker.map(|ae| visibles.get(ae)).flatten().map(|v| v.name.as_str()).unwrap_or("?").to_string(); + let actor_name = ( + if let Some(Some(n)) = attack.attacker.map(|ae| visibles.get(ae).map(|v| v.name.as_str())) {n} else {"?"} + ).to_string(); match attack.typ { AttackType::Attack(strength) => { let damage = rand::thread_rng().gen_range(0, strength+1); |
