Merge branch 'pfau/fix-animals' into 'master'

Fix animals not attacking

See merge request veloren/veloren!960
This commit is contained in:
Monty Marz 2020-05-04 16:59:33 +00:00
commit 522e3493c5
5 changed files with 46 additions and 14 deletions

View File

@ -0,0 +1,10 @@
Item(
name: "Empty",
description: "",
kind: Tool (
(
kind: Empty,
equip_time_millis: 200,
)
),
)

View File

@ -283,7 +283,14 @@ impl Tool {
projectile_gravity: None,
}],
},
Empty => vec![],
Empty => vec![BasicMelee {
energy_cost: 0,
buildup_duration: Duration::from_millis(0),
recover_duration: Duration::from_millis(1000),
base_healthchange: -2,
range: 3.5,
max_angle: 45.0,
}],
}
}
}

View File

@ -256,10 +256,10 @@ impl<'a> System<'a> for Sys {
let dist_sqrd = pos.0.distance_squared(tgt_pos.0);
if dist_sqrd < (MIN_ATTACK_DIST * scale).powf(2.0) {
// Close-range attack
inputs.move_dir = Vec2::from(tgt_pos.0 - pos.0)
.try_normalized()
.unwrap_or(Vec2::unit_y())
* 0.7;
/*inputs.move_dir = Vec2::from(tgt_pos.0 - pos.0)
.try_normalized()
.unwrap_or(Vec2::unit_y())
* 0.7;*/
match tactic {
Tactic::Melee | Tactic::Staff => inputs.primary.set_state(true),

View File

@ -2,7 +2,7 @@ use super::SysTimer;
use crate::{chunk_generator::ChunkGenerator, client::Client, Tick};
use common::{
assets,
comp::{self, item, CharacterAbility, Item, ItemConfig, Player, Pos},
comp::{self, item, CharacterAbility, ItemConfig, Player, Pos},
event::{EventBus, ServerEvent},
generation::get_npc_name,
msg::ServerMsg,
@ -110,8 +110,9 @@ impl<'a> System<'a> for Sys {
let name = entity.name.unwrap_or("Unnamed".to_string());
let alignment = entity.alignment;
let main_tool = entity.main_tool;
let mut stats = comp::Stats::new(name, body);
// let damage = stats.level.level() as i32; TODO: Make NPC base damage
// non-linearly depend on their level
let active_item =
if let Some(item::ItemKind::Tool(tool)) = main_tool.as_ref().map(|i| &i.kind) {
@ -129,12 +130,12 @@ impl<'a> System<'a> for Sys {
} else {
Some(ItemConfig {
// We need the empty item so npcs can attack
item: Item::empty(),
item: assets::load_expect_cloned("common.items.weapons.empty"),
ability1: Some(CharacterAbility::BasicMelee {
energy_cost: 0,
buildup_duration: Duration::from_millis(0),
recover_duration: Duration::from_millis(400),
base_healthchange: -4,
base_healthchange: -2,
range: 3.5,
max_angle: 60.0,
}),
@ -213,7 +214,21 @@ impl<'a> System<'a> for Sys {
tabard: None,
},
_ => comp::Loadout {
active_item,
active_item: Some(comp::ItemConfig {
item: assets::load_expect_cloned("common.items.weapons.empty"),
ability1: Some(CharacterAbility::BasicMelee {
energy_cost: 10,
buildup_duration: Duration::from_millis(800),
recover_duration: Duration::from_millis(200),
base_healthchange: -2,
range: 3.5,
max_angle: 60.0,
}),
ability2: None,
ability3: None,
block_ability: None,
dodge_ability: None,
}),
second_item: None,
shoulder: None,
chest: None,
@ -258,7 +273,7 @@ impl<'a> System<'a> for Sys {
energy_cost: 0,
buildup_duration: Duration::from_millis(800),
recover_duration: Duration::from_millis(200),
base_healthchange: -13,
base_healthchange: -10,
range: 3.5,
max_angle: 60.0,
}),

View File

@ -813,15 +813,15 @@ impl Settlement {
})
.do_if(rng.gen(), |entity| {
entity.with_main_tool(assets::load_expect_cloned(
match rng.gen_range(0, 8) {
match rng.gen_range(0, 7) {
0 => "common.items.weapons.tool.broom",
1 => "common.items.weapons.tool.hoe",
2 => "common.items.weapons.tool.pickaxe",
3 => "common.items.weapons.tool.pitchfork",
4 => "common.items.weapons.tool.rake",
5 => "common.items.weapons.tool.shovel-0",
6 => "common.items.weapons.tool.shovel-1",
_ => "common.items.weapons.bow.starter_bow",
_ => "common.items.weapons.tool.shovel-1",
//_ => "common.items.weapons.bow.starter_bow", TODO: Re-Add this when we have a better way of distributing weapons here
},
))
})