all skills have item conversion, tidy spec calcs
This commit is contained in:
parent
50440a5452
commit
c32154e06e
@ -877,12 +877,42 @@ impl From<Skill> for Item {
|
||||
Skill::CorruptII => Item::CorruptII,
|
||||
Skill::CorruptIII => Item::CorruptIII,
|
||||
|
||||
// Convert subskills into parent skills
|
||||
Skill::CorruptionI => Item::CorruptI,
|
||||
Skill::CorruptionII => Item::CorruptII,
|
||||
Skill::CorruptionIII => Item::CorruptIII,
|
||||
Skill::CorruptionTickI => Item::CorruptI,
|
||||
Skill::CorruptionTickII => Item::CorruptII,
|
||||
Skill::CorruptionTickIII => Item::CorruptII,
|
||||
Skill::DecayTickI => Item::DecayI,
|
||||
Skill::DecayTickII => Item::DecayII,
|
||||
Skill::DecayTickIII => Item::DecayIII,
|
||||
Skill::HatredI => Item::HostilityI,
|
||||
Skill::HatredII => Item::HostilityII,
|
||||
Skill::HatredIII => Item::HostilityIII,
|
||||
Skill::HasteStrike => Item::HasteI,
|
||||
|
||||
Skill::ImpureBlast => Item::ImpurityI,
|
||||
Skill::RiposteI => Item::ParryI,
|
||||
Skill::RiposteII => Item::ParryII,
|
||||
Skill::RiposteIII => Item::ParryIII,
|
||||
Skill::SiphonTickI => Item::SiphonI,
|
||||
Skill::SiphonTickII => Item::SiphonII,
|
||||
Skill::SiphonTickIII => Item::SiphonIII,
|
||||
Skill::StrangleTickI => Item::StrangleI,
|
||||
Skill::StrangleTickII => Item::StrangleII,
|
||||
Skill::StrangleTickIII => Item::StrangleIII,
|
||||
Skill::TriageTickI => Item::TriageI,
|
||||
Skill::TriageTickII => Item::TriageII,
|
||||
Skill::TriageTickIII => Item::TriageIII,
|
||||
|
||||
Skill::TestAttack => Item::Attack,
|
||||
Skill::TestHeal => Item::HealI,
|
||||
Skill::TestTouch => Item::TestTouch,
|
||||
Skill::TestStun => Item::TestStun,
|
||||
Skill::TestBlock => Item::TestBlock,
|
||||
Skill::TestParry => Item::TestParry,
|
||||
Skill::TestSiphon => Item::TestSiphon,
|
||||
_ => panic!("{:?} not implemented with item conversion", skill),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -275,7 +275,7 @@ pub fn resolve(skill: Skill, source: &mut Construct, target: &mut Construct, mut
|
||||
|
||||
|
||||
// Not used
|
||||
Skill::Injure => injure(source, target, resolutions, skill),
|
||||
// Skill::Injure => injure(source, target, resolutions, skill),
|
||||
// -----------------
|
||||
// Test
|
||||
// -----------------
|
||||
@ -759,7 +759,7 @@ pub enum Skill {
|
||||
ImpurityI,
|
||||
ImpurityII,
|
||||
ImpurityIII,
|
||||
Injure,
|
||||
// Injure,
|
||||
|
||||
InvertI,
|
||||
InvertII,
|
||||
@ -1096,7 +1096,7 @@ impl Skill {
|
||||
Skill::TriageIII => vec![ConstructEffect {effect: Effect::Triage, duration: 4,
|
||||
meta: Some(EffectMeta::Skill(Skill::TriageTickIII)), tick: None}],
|
||||
//Unused
|
||||
Skill::Injure => vec![ConstructEffect {effect: Effect::Injured, duration: 2, meta: None, tick: None }],
|
||||
// Skill::Injure => vec![ConstructEffect {effect: Effect::Injured, duration: 2, meta: None, tick: None }],
|
||||
|
||||
_ => {
|
||||
panic!("{:?} no skill effect", self);
|
||||
@ -1223,7 +1223,7 @@ impl Skill {
|
||||
Skill::TauntI => Some(2),
|
||||
Skill::TauntII => Some(2),
|
||||
Skill::TauntIII => Some(2),
|
||||
Skill::Injure => Some(2),
|
||||
// Skill::Injure => Some(2),
|
||||
|
||||
Skill::CorruptI =>Some(1),
|
||||
Skill::CorruptII =>Some(1),
|
||||
@ -2042,7 +2042,7 @@ mod tests {
|
||||
};
|
||||
}
|
||||
|
||||
#[test]
|
||||
/* #[test]
|
||||
fn injure_test() {
|
||||
let mut x = Construct::new()
|
||||
.named(&"muji".to_string());
|
||||
@ -2054,7 +2054,7 @@ mod tests {
|
||||
assert!(y.immune(Skill::HealI).is_some());
|
||||
// resolutions = heal(&mut y.clone(), &mut y, resolutions);
|
||||
}
|
||||
|
||||
*/
|
||||
#[test]
|
||||
fn invert_test() {
|
||||
let mut x = Construct::new()
|
||||
|
||||
@ -22,6 +22,13 @@ pub struct SpecValues {
|
||||
pub bonuses: Vec<SpecBonus>,
|
||||
}
|
||||
|
||||
impl SpecValues {
|
||||
pub fn calc_value (&self, c: &Colours) -> u64 {
|
||||
self.bonuses.iter().fold(self.base, |acc, s| acc + s.get_bonus(c))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#[derive(Debug,Copy,Clone,Serialize,Deserialize,PartialEq,PartialOrd,Ord,Eq)]
|
||||
pub enum Spec {
|
||||
Speed,
|
||||
@ -31,8 +38,7 @@ pub enum Spec {
|
||||
SpeedRGI,
|
||||
SpeedGBI,
|
||||
SpeedRBI,
|
||||
// Pure redLife has to come first as it applies the base amount
|
||||
// that is multiplied
|
||||
|
||||
Life,
|
||||
LifeGGI,
|
||||
LifeRRI,
|
||||
@ -89,7 +95,7 @@ impl Spec {
|
||||
Spec::PowerRRI => SpecValues {
|
||||
base: 10,
|
||||
bonuses: vec![
|
||||
SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 10, green: 0, blue: 0 }, bonus: 20 },
|
||||
SpecBonus { req: Colours { red: 20, green: 0, blue: 0 }, bonus: 40 }
|
||||
],
|
||||
@ -98,7 +104,7 @@ impl Spec {
|
||||
Spec::PowerGGI => SpecValues {
|
||||
base: 10,
|
||||
bonuses: vec![
|
||||
SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 0, green: 10, blue: 0 }, bonus: 20 },
|
||||
SpecBonus { req: Colours { red: 0, green: 20, blue: 0 }, bonus: 40 }
|
||||
],
|
||||
@ -107,7 +113,7 @@ impl Spec {
|
||||
Spec::PowerBBI => SpecValues {
|
||||
base: 10,
|
||||
bonuses: vec![
|
||||
SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 0, green: 0, blue: 10 }, bonus: 20 },
|
||||
SpecBonus { req: Colours { red: 0, green: 0, blue: 20 }, bonus: 40 }
|
||||
],
|
||||
@ -116,7 +122,7 @@ impl Spec {
|
||||
Spec::PowerRGI => SpecValues {
|
||||
base: 5,
|
||||
bonuses: vec![
|
||||
SpecBonus { req: Colours { red: 2, green: 2, blue: 0 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 2, green: 2, blue: 0 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 5, green: 5, blue: 0 }, bonus: 15 },
|
||||
SpecBonus { req: Colours { red: 10, green: 10, blue: 0 }, bonus: 30 }
|
||||
],
|
||||
@ -125,7 +131,7 @@ impl Spec {
|
||||
Spec::PowerGBI => SpecValues {
|
||||
base: 5,
|
||||
bonuses: vec![
|
||||
SpecBonus { req: Colours { red: 0, green: 2, blue: 2 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 0, green: 2, blue: 2 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 0, green: 5, blue: 5 }, bonus: 15 },
|
||||
SpecBonus { req: Colours { red: 0, green: 10, blue: 10 }, bonus: 30 }
|
||||
],
|
||||
@ -134,7 +140,7 @@ impl Spec {
|
||||
Spec::PowerRBI => SpecValues {
|
||||
base: 5,
|
||||
bonuses: vec![
|
||||
SpecBonus { req: Colours { red: 2, green: 0, blue: 2 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 2, green: 0, blue: 2 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 5, green: 0, blue: 5 }, bonus: 15 },
|
||||
SpecBonus { req: Colours { red: 10, green: 0, blue: 10 }, bonus: 30 }
|
||||
],
|
||||
@ -148,7 +154,7 @@ impl Spec {
|
||||
Spec::SpeedRRI => SpecValues {
|
||||
base: 10,
|
||||
bonuses: vec![
|
||||
SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 10, green: 0, blue: 0 }, bonus: 20 },
|
||||
SpecBonus { req: Colours { red: 20, green: 0, blue: 0 }, bonus: 40 }
|
||||
],
|
||||
@ -157,7 +163,7 @@ impl Spec {
|
||||
Spec::SpeedGGI => SpecValues {
|
||||
base: 10,
|
||||
bonuses: vec![
|
||||
SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 0, green: 10, blue: 0 }, bonus: 20 },
|
||||
SpecBonus { req: Colours { red: 0, green: 20, blue: 0 }, bonus: 40 }
|
||||
],
|
||||
@ -166,7 +172,7 @@ impl Spec {
|
||||
Spec::SpeedBBI => SpecValues {
|
||||
base: 10,
|
||||
bonuses: vec![
|
||||
SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 0, green: 0, blue: 10 }, bonus: 20 },
|
||||
SpecBonus { req: Colours { red: 0, green: 0, blue: 20 }, bonus: 40 }
|
||||
],
|
||||
@ -175,7 +181,7 @@ impl Spec {
|
||||
Spec::SpeedRGI => SpecValues {
|
||||
base: 5,
|
||||
bonuses: vec![
|
||||
SpecBonus { req: Colours { red: 2, green: 2, blue: 0 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 2, green: 2, blue: 0 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 5, green: 5, blue: 0 }, bonus: 15 },
|
||||
SpecBonus { req: Colours { red: 10, green: 10, blue: 0 }, bonus: 30 }
|
||||
],
|
||||
@ -184,7 +190,7 @@ impl Spec {
|
||||
Spec::SpeedGBI => SpecValues {
|
||||
base: 5,
|
||||
bonuses: vec![
|
||||
SpecBonus { req: Colours { red: 0, green: 2, blue: 2 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 0, green: 2, blue: 2 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 0, green: 5, blue: 5 }, bonus: 15 },
|
||||
SpecBonus { req: Colours { red: 0, green: 10, blue: 10 }, bonus: 30 }
|
||||
],
|
||||
@ -193,7 +199,7 @@ impl Spec {
|
||||
Spec::SpeedRBI => SpecValues {
|
||||
base: 5,
|
||||
bonuses: vec![
|
||||
SpecBonus { req: Colours { red: 2, green: 0, blue: 2 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 2, green: 0, blue: 2 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 5, green: 0, blue: 5 }, bonus: 15 },
|
||||
SpecBonus { req: Colours { red: 10, green: 0, blue: 10 }, bonus: 30 }
|
||||
],
|
||||
@ -206,7 +212,7 @@ impl Spec {
|
||||
Spec::LifeRRI => SpecValues {
|
||||
base: 10,
|
||||
bonuses: vec![
|
||||
SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 10, green: 0, blue: 0 }, bonus: 20 },
|
||||
SpecBonus { req: Colours { red: 20, green: 0, blue: 0 }, bonus: 40 }
|
||||
],
|
||||
@ -215,7 +221,7 @@ impl Spec {
|
||||
Spec::LifeGGI => SpecValues {
|
||||
base: 10,
|
||||
bonuses: vec![
|
||||
SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 0, green: 10, blue: 0 }, bonus: 20 },
|
||||
SpecBonus { req: Colours { red: 0, green: 20, blue: 0 }, bonus: 40 }
|
||||
],
|
||||
@ -224,7 +230,7 @@ impl Spec {
|
||||
Spec::LifeBBI => SpecValues {
|
||||
base: 10,
|
||||
bonuses: vec![
|
||||
SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 0, green: 0, blue: 10 }, bonus: 20 },
|
||||
SpecBonus { req: Colours { red: 0, green: 0, blue: 20 }, bonus: 40 }
|
||||
],
|
||||
@ -233,7 +239,7 @@ impl Spec {
|
||||
Spec::LifeRGI => SpecValues {
|
||||
base: 5,
|
||||
bonuses: vec![
|
||||
SpecBonus { req: Colours { red: 2, green: 2, blue: 0 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 2, green: 2, blue: 0 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 5, green: 5, blue: 0 }, bonus: 15 },
|
||||
SpecBonus { req: Colours { red: 10, green: 10, blue: 0 }, bonus: 30 }
|
||||
],
|
||||
@ -243,7 +249,7 @@ impl Spec {
|
||||
Spec::LifeGBI => SpecValues {
|
||||
base: 5,
|
||||
bonuses: vec![
|
||||
SpecBonus { req: Colours { red: 0, green: 2, blue: 2 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 0, green: 2, blue: 2 }, bonus: 10 },
|
||||
SpecBonus { req: Colours { red: 0, green: 5, blue: 5 }, bonus: 15 },
|
||||
SpecBonus { req: Colours { red: 0, green: 10, blue: 10 }, bonus: 30 }
|
||||
],
|
||||
@ -278,9 +284,7 @@ impl Spec {
|
||||
Spec::SpeedRGI |
|
||||
Spec::SpeedGBI |
|
||||
Spec::SpeedRBI => modified + {
|
||||
let spec_values = self.values();
|
||||
base.pct(spec_values.bonuses.iter()
|
||||
.fold(spec_values.base, |acc, s| acc + s.get_bonus(player_colours)))
|
||||
base.pct(self.values().calc_value(player_colours))
|
||||
},
|
||||
|
||||
Spec::Life |
|
||||
@ -290,9 +294,7 @@ impl Spec {
|
||||
Spec::LifeRGI |
|
||||
Spec::LifeGBI |
|
||||
Spec::LifeRBI => modified + {
|
||||
let spec_values = self.values();
|
||||
construct_colour_total * (spec_values.bonuses.iter()
|
||||
.fold(spec_values.base, |acc, s| acc + s.get_bonus(player_colours)))
|
||||
construct_colour_total * self.values().calc_value(player_colours)
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user