mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Merge branch 'timo-attack' into 'master'
Fix wolfs not attacking and adjust movement while attacking See merge request veloren/veloren!484
This commit is contained in:
commit
92c0edcb98
@ -65,6 +65,7 @@ impl<'a> System<'a> for Sys {
|
|||||||
}
|
}
|
||||||
Agent::Enemy { bearing, target } => {
|
Agent::Enemy { bearing, target } => {
|
||||||
const SIGHT_DIST: f32 = 30.0;
|
const SIGHT_DIST: f32 = 30.0;
|
||||||
|
const MIN_ATTACK_DIST: f32 = 3.5;
|
||||||
let mut choose_new = false;
|
let mut choose_new = false;
|
||||||
|
|
||||||
if let Some((Some(target_pos), Some(target_stats), Some(target_character))) =
|
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::<f32>::from(target_pos.0 - pos.0).magnitude();
|
let dist = Vec2::<f32>::from(target_pos.0 - pos.0).magnitude();
|
||||||
if target_stats.is_dead {
|
if target_stats.is_dead {
|
||||||
choose_new = true;
|
choose_new = true;
|
||||||
} else if dist < 6.0 {
|
} else if dist < MIN_ATTACK_DIST {
|
||||||
// Fight and slowly move closer
|
// Fight (and slowly move closer)
|
||||||
controller.move_dir =
|
controller.move_dir =
|
||||||
Vec2::<f32>::from(target_pos.0 - pos.0).normalized() * 0.5;
|
Vec2::<f32>::from(target_pos.0 - pos.0).normalized() * 0.01;
|
||||||
|
|
||||||
if rand::random::<f32>() < 0.05 {
|
|
||||||
controller.primary = true;
|
controller.primary = true;
|
||||||
} else {
|
|
||||||
controller.primary = false;
|
|
||||||
}
|
|
||||||
} else if dist < SIGHT_DIST {
|
} else if dist < SIGHT_DIST {
|
||||||
controller.move_dir =
|
controller.move_dir =
|
||||||
Vec2::<f32>::from(target_pos.0 - pos.0).normalized() * 0.96;
|
Vec2::<f32>::from(target_pos.0 - pos.0).normalized() * 0.96;
|
||||||
|
@ -114,7 +114,6 @@ impl<'a> System<'a> for Sys {
|
|||||||
|| character.movement == Run
|
|| character.movement == Run
|
||||||
|| character.movement == Jump)
|
|| character.movement == Jump)
|
||||||
{
|
{
|
||||||
// TODO: Check if wield ability exists
|
|
||||||
if let Wield { time_left } = character.action {
|
if let Wield { time_left } = character.action {
|
||||||
if time_left == Duration::default() {
|
if time_left == Duration::default() {
|
||||||
character.action = Attack {
|
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,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ impl AudioFrontend {
|
|||||||
pub fn no_audio() -> Self {
|
pub fn no_audio() -> Self {
|
||||||
Self {
|
Self {
|
||||||
device: "none".to_string(),
|
device: "none".to_string(),
|
||||||
device_list: list_devices(),
|
device_list: Vec::new(),
|
||||||
audio_device: None,
|
audio_device: None,
|
||||||
sound_cache: SoundCache::new(),
|
sound_cache: SoundCache::new(),
|
||||||
channels: Vec::new(),
|
channels: Vec::new(),
|
||||||
|
Loading…
Reference in New Issue
Block a user