diff --git a/common/systems/src/melee.rs b/common/systems/src/melee.rs index 81e3a3b076..2d44f5e4af 100644 --- a/common/systems/src/melee.rs +++ b/common/systems/src/melee.rs @@ -220,8 +220,12 @@ impl<'a> System<'a> for Sys { target, ); - let precision_from_flank = - combat::precision_mult_from_flank(*ori.look_dir(), target_ori); + // Note: Don't use ori.look_vec() here, it leads to incorrect results for wide + // angle melee attacks + let precision_from_flank = combat::precision_mult_from_flank( + (pos_b.0 - pos.0).try_normalized().unwrap_or(ori.look_vec()), + target_ori, + ); let precision_from_poise = { if let Some(CharacterState::Stunned(data)) = target_char_state {