mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Used adjusted_by_skills to correctly calculate ability values
This commit is contained in:
@ -12,7 +12,7 @@ use common::{
|
|||||||
inventory::{item::ItemTag, slot::EquipSlot},
|
inventory::{item::ItemTag, slot::EquipSlot},
|
||||||
invite::{InviteKind, InviteResponse},
|
invite::{InviteKind, InviteResponse},
|
||||||
item::{
|
item::{
|
||||||
tool::{AbilitySpec, ToolKind},
|
tool::{AbilityMap, AbilitySpec, ToolKind},
|
||||||
ConsumableKind, Item, ItemDesc, ItemKind,
|
ConsumableKind, Item, ItemDesc, ItemKind,
|
||||||
},
|
},
|
||||||
skills::{AxeSkill, BowSkill, HammerSkill, SceptreSkill, Skill, StaffSkill, SwordSkill},
|
skills::{AxeSkill, BowSkill, HammerSkill, SceptreSkill, Skill, StaffSkill, SwordSkill},
|
||||||
@ -2443,16 +2443,26 @@ impl<'a> AgentData<'a> {
|
|||||||
tgt_data: &TargetData,
|
tgt_data: &TargetData,
|
||||||
read_data: &ReadData,
|
read_data: &ReadData,
|
||||||
) {
|
) {
|
||||||
//TODO: minimum energy values for skills and rolls are hard coded from
|
let ability_map = AbilityMap::default();
|
||||||
// approximate guesses
|
let ability_set = ability_map
|
||||||
let mut flamethrower_range = 20.0_f32;
|
.get_ability_set(&AbilitySpec::Tool(ToolKind::Staff))
|
||||||
if let Ok(Some(level)) = self.skill_set.skill_level(Skill::Staff(StaffSkill::FRange)) {
|
.unwrap()
|
||||||
flamethrower_range *= 1.25_f32.powi(level.into());
|
.clone();
|
||||||
}
|
let flamethrower = ability_set
|
||||||
let mut shockwave_cost = 600.0_f32;
|
.secondary
|
||||||
if let Ok(Some(level)) = self.skill_set.skill_level(Skill::Staff(StaffSkill::SCost)) {
|
.adjusted_by_skills(self.skill_set, Some(ToolKind::Staff));
|
||||||
shockwave_cost *= 0.8_f32.powi(level.into());
|
let flamethrower_range = match flamethrower {
|
||||||
}
|
CharacterAbility::BasicBeam { range, .. } => range,
|
||||||
|
_ => 20.0_f32,
|
||||||
|
};
|
||||||
|
let shockwave = ability_set.abilities[0]
|
||||||
|
.clone()
|
||||||
|
.1
|
||||||
|
.adjusted_by_skills(self.skill_set, Some(ToolKind::Staff));
|
||||||
|
let shockwave_cost = match shockwave {
|
||||||
|
CharacterAbility::Shockwave { energy_cost, .. } => energy_cost,
|
||||||
|
_ => 600.0_f32,
|
||||||
|
};
|
||||||
if self.body.map(|b| b.is_humanoid()).unwrap_or(false)
|
if self.body.map(|b| b.is_humanoid()).unwrap_or(false)
|
||||||
&& attack_data.in_min_range()
|
&& attack_data.in_min_range()
|
||||||
&& self.energy.current() > 100
|
&& self.energy.current() > 100
|
||||||
|
Reference in New Issue
Block a user