diff --git a/common/src/sys/agent.rs b/common/src/sys/agent.rs index 99ae500a01..b98c6f077e 100644 --- a/common/src/sys/agent.rs +++ b/common/src/sys/agent.rs @@ -65,6 +65,7 @@ impl<'a> System<'a> for Sys { } Agent::Enemy { bearing, target } => { const SIGHT_DIST: f32 = 30.0; + const MIN_ATTACK_DIST: f32 = 3.5; let mut choose_new = false; if let Some((Some(target_pos), Some(target_stats), Some(target_character))) = @@ -81,16 +82,11 @@ impl<'a> System<'a> for Sys { let dist = Vec2::::from(target_pos.0 - pos.0).magnitude(); if target_stats.is_dead { choose_new = true; - } else if dist < 6.0 { - // Fight and slowly move closer + } else if dist < MIN_ATTACK_DIST { + // Fight (and slowly move closer) controller.move_dir = - Vec2::::from(target_pos.0 - pos.0).normalized() * 0.5; - - if rand::random::() < 0.05 { - controller.primary = true; - } else { - controller.primary = false; - } + Vec2::::from(target_pos.0 - pos.0).normalized() * 0.01; + controller.primary = true; } else if dist < SIGHT_DIST { controller.move_dir = Vec2::::from(target_pos.0 - pos.0).normalized() * 0.96; diff --git a/common/src/sys/controller.rs b/common/src/sys/controller.rs index 98a210da7e..a130f2b458 100644 --- a/common/src/sys/controller.rs +++ b/common/src/sys/controller.rs @@ -114,7 +114,6 @@ impl<'a> System<'a> for Sys { || character.movement == Run || character.movement == Jump) { - // TODO: Check if wield ability exists if let Wield { time_left } = character.action { if time_left == Duration::default() { character.action = Attack { @@ -152,6 +151,20 @@ impl<'a> System<'a> for Sys { }); } } + None => { + // Attack + if controller.primary + && (character.movement == Stand + || character.movement == Run + || character.movement == Jump) + && !character.action.is_attack() + { + character.action = Attack { + time_left: ATTACK_DURATION, + applied: false, + }; + } + } _ => {} } diff --git a/voxygen/src/audio/mod.rs b/voxygen/src/audio/mod.rs index e723889319..931f71d9e5 100644 --- a/voxygen/src/audio/mod.rs +++ b/voxygen/src/audio/mod.rs @@ -60,7 +60,7 @@ impl AudioFrontend { pub fn no_audio() -> Self { Self { device: "none".to_string(), - device_list: list_devices(), + device_list: Vec::new(), audio_device: None, sound_cache: SoundCache::new(), channels: Vec::new(),