remove spec multi

This commit is contained in:
Mashy 2019-09-23 15:31:05 +10:00
parent b57a076ac1
commit 58ff97a071
2 changed files with 67 additions and 76 deletions

View File

@ -145,7 +145,7 @@ impl ConstructStat {
// self.recalculate(specs)
// }
pub fn recalculate(&mut self, specs: &Vec<Spec>, construct_colours: &Colours, player_colours: &Colours) -> &mut ConstructStat {
pub fn recalculate(&mut self, specs: &Vec<Spec>, player_colours: &Colours) -> &mut ConstructStat {
let specs = specs
.iter()
.filter(|s| s.affects().contains(&self.stat))
@ -154,7 +154,7 @@ impl ConstructStat {
// applied with fold because it can be zeroed or multiplied
// but still needs access to the base amount
let value = specs.iter().fold(self.base, |acc, s| s.apply(acc, self.base, construct_colours, player_colours));
let value = specs.iter().fold(self.base, |acc, s| s.apply(acc, self.base, player_colours));
self.value = value;
self.max = value;
@ -325,14 +325,14 @@ impl Construct {
pub fn apply_modifiers(&mut self, player_colours: &Colours) -> &mut Construct {
self.specs.sort_unstable();
self.red_power.recalculate(&self.specs, &self.colours, player_colours);
self.red_life.recalculate(&self.specs, &self.colours, player_colours);
self.blue_power.recalculate(&self.specs, &self.colours, player_colours);
self.blue_life.recalculate(&self.specs, &self.colours, player_colours);
self.red_power.recalculate(&self.specs, player_colours);
self.red_life.recalculate(&self.specs, player_colours);
self.blue_power.recalculate(&self.specs, player_colours);
self.blue_life.recalculate(&self.specs, player_colours);
// self.evasion.recalculate(&self.specs, &self.colours, player_colours);
self.speed.recalculate(&self.specs, &self.colours, player_colours);
self.green_power.recalculate(&self.specs, &self.colours, player_colours);
self.green_life.recalculate(&self.specs, &self.colours, player_colours);
self.speed.recalculate(&self.specs, player_colours);
self.green_power.recalculate(&self.specs, player_colours);
self.green_life.recalculate(&self.specs, player_colours);
self
}

View File

@ -19,7 +19,6 @@ impl SpecBonus {
#[derive(Debug,Clone,Serialize,Deserialize)]
pub struct SpecValues {
pub base: u64,
pub multi: u64,
pub bonuses: Vec<SpecBonus>,
}
@ -31,12 +30,6 @@ impl SpecValues {
pub fn base (self) -> u64 {
self.base
}
/*
pub fn calc_multi (&self, c: &Colours) -> u64 {
self.multi * (c.red + c.green + c.blue) as u64
}
*/
}
@ -149,8 +142,6 @@ impl Spec {
Spec::SpeedGBPlusPlus => vec![Stat::Speed],
Spec::SpeedRBPlusPlus => vec![Stat::Speed],
Spec::Life => vec![Stat::GreenLife],
Spec::LifeRR => vec![Stat::RedLife],
Spec::LifeBB => vec![Stat::BlueLife],
@ -176,12 +167,12 @@ impl Spec {
pub fn values(&self) -> SpecValues {
match *self {
Spec::Power => SpecValues {
multi: 0, base: 10,
base: 10,
bonuses: vec![]
},
Spec::PowerRR=> SpecValues {
multi: 10, base: 25,
base: 25,
bonuses: vec![
SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 25 },
SpecBonus { req: Colours { red: 10, green: 0, blue: 0 }, bonus: 25 },
@ -190,7 +181,7 @@ impl Spec {
},
Spec::PowerGG=> SpecValues {
multi: 10, base: 25,
base: 25,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 25 },
SpecBonus { req: Colours { red: 0, green: 10, blue: 0 }, bonus: 25 },
@ -199,7 +190,7 @@ impl Spec {
},
Spec::PowerBB=> SpecValues {
multi: 10, base: 25,
base: 25,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 25 },
SpecBonus { req: Colours { red: 0, green: 0, blue: 10 }, bonus: 25 },
@ -208,7 +199,7 @@ impl Spec {
},
Spec::PowerRG=> SpecValues {
multi: 5, base: 15,
base: 15,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 2, blue: 0 }, bonus: 15 },
SpecBonus { req: Colours { red: 5, green: 5, blue: 0 }, bonus: 15 },
@ -217,7 +208,7 @@ impl Spec {
},
Spec::PowerGB=> SpecValues {
multi: 5, base: 15,
base: 15,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 2, blue: 2 }, bonus: 15 },
SpecBonus { req: Colours { red: 0, green: 5, blue: 5 }, bonus: 15 },
@ -226,7 +217,7 @@ impl Spec {
},
Spec::PowerRB=> SpecValues {
multi: 5, base: 15,
base: 15,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 0, blue: 2 }, bonus: 15 },
SpecBonus { req: Colours { red: 5, green: 0, blue: 5 }, bonus: 15 },
@ -235,7 +226,7 @@ impl Spec {
},
Spec::PowerRRPlus => SpecValues {
multi: 10, base: 40,
base: 40,
bonuses: vec![
SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 40 },
SpecBonus { req: Colours { red: 10, green: 0, blue: 0 }, bonus: 40 },
@ -244,7 +235,7 @@ impl Spec {
},
Spec::PowerGGPlus => SpecValues {
multi: 10, base: 40,
base: 40,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 40 },
SpecBonus { req: Colours { red: 0, green: 10, blue: 0 }, bonus: 40 },
@ -253,7 +244,7 @@ impl Spec {
},
Spec::PowerBBPlus => SpecValues {
multi: 10, base: 40,
base: 40,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 40 },
SpecBonus { req: Colours { red: 0, green: 0, blue: 10 }, bonus: 40 },
@ -262,7 +253,7 @@ impl Spec {
},
Spec::PowerRGPlus => SpecValues {
multi: 7, base: 25,
base: 25,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 2, blue: 0 }, bonus: 25 },
SpecBonus { req: Colours { red: 5, green: 5, blue: 0 }, bonus: 25 },
@ -271,7 +262,7 @@ impl Spec {
},
Spec::PowerGBPlus => SpecValues {
multi: 7, base: 25,
base: 25,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 2, blue: 2 }, bonus: 25 },
SpecBonus { req: Colours { red: 0, green: 5, blue: 5 }, bonus: 25 },
@ -280,7 +271,7 @@ impl Spec {
},
Spec::PowerRBPlus => SpecValues {
multi: 7, base: 25,
base: 25,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 0, blue: 2 }, bonus: 25 },
SpecBonus { req: Colours { red: 5, green: 0, blue: 5 }, bonus: 25 },
@ -288,7 +279,7 @@ impl Spec {
],
},
Spec::PowerRRPlusPlus => SpecValues {
multi: 20, base: 60,
base: 60,
bonuses: vec![
SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 60 },
SpecBonus { req: Colours { red: 10, green: 0, blue: 0 }, bonus: 60 },
@ -297,7 +288,7 @@ impl Spec {
},
Spec::PowerGGPlusPlus => SpecValues {
multi: 20, base: 60,
base: 60,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 60 },
SpecBonus { req: Colours { red: 0, green: 10, blue: 0 }, bonus: 60 },
@ -306,7 +297,7 @@ impl Spec {
},
Spec::PowerBBPlusPlus => SpecValues {
multi: 20, base: 60,
base: 60,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 60 },
SpecBonus { req: Colours { red: 0, green: 0, blue: 10 }, bonus: 60 },
@ -315,7 +306,7 @@ impl Spec {
},
Spec::PowerRGPlusPlus => SpecValues {
multi: 20, base: 40,
base: 40,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 2, blue: 0 }, bonus: 40 },
SpecBonus { req: Colours { red: 5, green: 5, blue: 0 }, bonus: 40 },
@ -324,7 +315,7 @@ impl Spec {
},
Spec::PowerGBPlusPlus => SpecValues {
multi: 20, base: 40,
base: 40,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 2, blue: 2 }, bonus: 25 },
SpecBonus { req: Colours { red: 0, green: 5, blue: 5 }, bonus: 25 },
@ -333,7 +324,7 @@ impl Spec {
},
Spec::PowerRBPlusPlus => SpecValues {
multi: 20, base: 40,
base: 40,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 0, blue: 2 }, bonus: 25 },
SpecBonus { req: Colours { red: 5, green: 0, blue: 5 }, bonus: 25 },
@ -342,12 +333,12 @@ impl Spec {
},
Spec::Speed => SpecValues {
multi: 0, base: 40,
base: 40,
bonuses: vec![]
},
Spec::SpeedRR=> SpecValues {
multi: 20, base: 80,
base: 80,
bonuses: vec![
SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 80 },
SpecBonus { req: Colours { red: 10, green: 0, blue: 0 }, bonus: 80 },
@ -356,7 +347,7 @@ impl Spec {
},
Spec::SpeedGG=> SpecValues {
multi: 20, base: 80,
base: 80,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 80 },
SpecBonus { req: Colours { red: 0, green: 10, blue: 0 }, bonus: 80 },
@ -365,7 +356,7 @@ impl Spec {
},
Spec::SpeedBB=> SpecValues {
multi: 20, base: 80,
base: 80,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 80 },
SpecBonus { req: Colours { red: 0, green: 0, blue: 10 }, bonus: 80 },
@ -374,7 +365,7 @@ impl Spec {
},
Spec::SpeedRG=> SpecValues {
multi: 15, base: 60,
base: 60,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 2, blue: 0 }, bonus: 60 },
SpecBonus { req: Colours { red: 5, green: 5, blue: 0 }, bonus: 60 },
@ -383,7 +374,7 @@ impl Spec {
},
Spec::SpeedGB=> SpecValues {
multi: 15, base: 60,
base: 60,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 2, blue: 2 }, bonus: 60 },
SpecBonus { req: Colours { red: 0, green: 5, blue: 5 }, bonus: 60 },
@ -392,7 +383,7 @@ impl Spec {
},
Spec::SpeedRB=> SpecValues {
multi: 15, base: 60,
base: 60,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 0, blue: 2 }, bonus: 60 },
SpecBonus { req: Colours { red: 5, green: 0, blue: 5 }, bonus: 60 },
@ -401,7 +392,7 @@ impl Spec {
},
Spec::SpeedRRPlus => SpecValues {
multi: 20, base: 120,
base: 120,
bonuses: vec![
SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 120 },
SpecBonus { req: Colours { red: 10, green: 0, blue: 0 }, bonus: 120 },
@ -410,7 +401,7 @@ impl Spec {
},
Spec::SpeedGGPlus => SpecValues {
multi: 20, base: 120,
base: 120,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 120 },
SpecBonus { req: Colours { red: 0, green: 10, blue: 0 }, bonus: 120 },
@ -419,7 +410,7 @@ impl Spec {
},
Spec::SpeedBBPlus => SpecValues {
multi: 20, base: 120,
base: 120,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 120 },
SpecBonus { req: Colours { red: 0, green: 0, blue: 10 }, bonus: 120 },
@ -428,7 +419,7 @@ impl Spec {
},
Spec::SpeedRGPlus => SpecValues {
multi: 15, base: 80,
base: 80,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 2, blue: 0 }, bonus: 80 },
SpecBonus { req: Colours { red: 5, green: 5, blue: 0 }, bonus: 80 },
@ -437,7 +428,7 @@ impl Spec {
},
Spec::SpeedGBPlus => SpecValues {
multi: 15, base: 80,
base: 80,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 2, blue: 2 }, bonus: 80 },
SpecBonus { req: Colours { red: 0, green: 5, blue: 5 }, bonus: 80 },
@ -446,7 +437,7 @@ impl Spec {
},
Spec::SpeedRBPlus => SpecValues {
multi: 15, base: 80,
base: 80,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 0, blue: 2 }, bonus: 80 },
SpecBonus { req: Colours { red: 5, green: 0, blue: 5 }, bonus: 80 },
@ -455,7 +446,7 @@ impl Spec {
},
Spec::SpeedRRPlusPlus => SpecValues {
multi: 20, base: 160,
base: 160,
bonuses: vec![
SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 160 },
SpecBonus { req: Colours { red: 10, green: 0, blue: 0 }, bonus: 160 },
@ -464,7 +455,7 @@ impl Spec {
},
Spec::SpeedGGPlusPlus => SpecValues {
multi: 20, base: 160,
base: 160,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 160 },
SpecBonus { req: Colours { red: 0, green: 10, blue: 0 }, bonus: 160 },
@ -473,7 +464,7 @@ impl Spec {
},
Spec::SpeedBBPlusPlus => SpecValues {
multi: 20, base: 160,
base: 160,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 160 },
SpecBonus { req: Colours { red: 0, green: 0, blue: 10 }, bonus: 160 },
@ -482,7 +473,7 @@ impl Spec {
},
Spec::SpeedRGPlusPlus => SpecValues {
multi: 15, base: 120,
base: 120,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 2, blue: 0 }, bonus: 120 },
SpecBonus { req: Colours { red: 5, green: 5, blue: 0 }, bonus: 120 },
@ -491,7 +482,7 @@ impl Spec {
},
Spec::SpeedGBPlusPlus => SpecValues {
multi: 15, base: 120,
base: 120,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 2, blue: 2 }, bonus: 120 },
SpecBonus { req: Colours { red: 0, green: 5, blue: 5 }, bonus: 120 },
@ -500,7 +491,7 @@ impl Spec {
},
Spec::SpeedRBPlusPlus => SpecValues {
multi: 15, base: 120,
base: 120,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 0, blue: 2 }, bonus: 120 },
SpecBonus { req: Colours { red: 5, green: 0, blue: 5 }, bonus: 120 },
@ -509,11 +500,11 @@ impl Spec {
},
Spec::Life => SpecValues {
multi: 0, base: 100,
base: 100,
bonuses: vec![]},
Spec::LifeRR=> SpecValues {
multi: 50, base: 200,
base: 200,
bonuses: vec![
SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 100 },
SpecBonus { req: Colours { red: 10, green: 0, blue: 0 }, bonus: 100 },
@ -522,7 +513,7 @@ impl Spec {
},
Spec::LifeGG=> SpecValues {
multi: 50, base: 200,
base: 200,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 100 },
SpecBonus { req: Colours { red: 0, green: 10, blue: 0 }, bonus: 100 },
@ -531,7 +522,7 @@ impl Spec {
},
Spec::LifeBB=> SpecValues {
multi: 50, base: 200,
base: 200,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 100 },
SpecBonus { req: Colours { red: 0, green: 0, blue: 10 }, bonus: 100 },
@ -540,7 +531,7 @@ impl Spec {
},
Spec::LifeRG=> SpecValues {
multi: 40, base: 150,
base: 150,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 2, blue: 0 }, bonus: 75 },
SpecBonus { req: Colours { red: 5, green: 5, blue: 0 }, bonus: 75 },
@ -549,7 +540,7 @@ impl Spec {
},
Spec::LifeGB=> SpecValues {
multi: 40, base: 150,
base: 150,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 2, blue: 2 }, bonus: 75 },
SpecBonus { req: Colours { red: 0, green: 5, blue: 5 }, bonus: 75 },
@ -558,7 +549,7 @@ impl Spec {
},
Spec::LifeRB=> SpecValues {
multi: 40, base: 150,
base: 150,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 0, blue: 2 }, bonus: 75 },
SpecBonus { req: Colours { red: 5, green: 0, blue: 5 }, bonus: 75 },
@ -567,7 +558,7 @@ impl Spec {
},
Spec::LifeRRPlus => SpecValues {
multi: 50, base: 300,
base: 300,
bonuses: vec![
SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 150 },
SpecBonus { req: Colours { red: 10, green: 0, blue: 0 }, bonus: 150 },
@ -576,7 +567,7 @@ impl Spec {
},
Spec::LifeGGPlus => SpecValues {
multi: 50, base: 300,
base: 300,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 150 },
SpecBonus { req: Colours { red: 0, green: 10, blue: 0 }, bonus: 150 },
@ -585,7 +576,7 @@ impl Spec {
},
Spec::LifeBBPlus => SpecValues {
multi: 50, base: 300,
base: 300,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 150 },
SpecBonus { req: Colours { red: 0, green: 0, blue: 10 }, bonus: 150 },
@ -594,7 +585,7 @@ impl Spec {
},
Spec::LifeRGPlus => SpecValues {
multi: 40, base: 200,
base: 200,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 2, blue: 0 }, bonus: 100 },
SpecBonus { req: Colours { red: 5, green: 5, blue: 0 }, bonus: 100 },
@ -603,7 +594,7 @@ impl Spec {
},
Spec::LifeGBPlus => SpecValues {
multi: 40, base: 200,
base: 200,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 2, blue: 2 }, bonus: 100 },
SpecBonus { req: Colours { red: 0, green: 5, blue: 5 }, bonus: 100 },
@ -612,7 +603,7 @@ impl Spec {
},
Spec::LifeRBPlus => SpecValues {
multi: 40, base: 200,
base: 200,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 0, blue: 2 }, bonus: 100 },
SpecBonus { req: Colours { red: 5, green: 0, blue: 5 }, bonus: 100 },
@ -620,7 +611,7 @@ impl Spec {
],
},
Spec::LifeRRPlusPlus => SpecValues {
multi: 40, base: 300,
base: 300,
bonuses: vec![
SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 300 },
SpecBonus { req: Colours { red: 10, green: 0, blue: 0 }, bonus: 300 },
@ -629,7 +620,7 @@ impl Spec {
},
Spec::LifeGGPlusPlus => SpecValues {
multi: 40, base: 300,
base: 300,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 300 },
SpecBonus { req: Colours { red: 0, green: 10, blue: 0 }, bonus: 300 },
@ -638,7 +629,7 @@ impl Spec {
},
Spec::LifeBBPlusPlus => SpecValues {
multi: 40, base: 300,
base: 300,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 300 },
SpecBonus { req: Colours { red: 0, green: 0, blue: 10 }, bonus: 300 },
@ -647,7 +638,7 @@ impl Spec {
},
Spec::LifeRGPlusPlus => SpecValues {
multi: 40, base: 200,
base: 200,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 2, blue: 0 }, bonus: 200 },
SpecBonus { req: Colours { red: 5, green: 5, blue: 0 }, bonus: 200 },
@ -656,7 +647,7 @@ impl Spec {
},
Spec::LifeGBPlusPlus => SpecValues {
multi: 40, base: 200,
base: 200,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 2, blue: 2 }, bonus: 200 },
SpecBonus { req: Colours { red: 0, green: 5, blue: 5 }, bonus: 200 },
@ -665,7 +656,7 @@ impl Spec {
},
Spec::LifeRBPlusPlus => SpecValues {
multi: 40, base: 200,
base: 200,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 0, blue: 2 }, bonus: 200 },
SpecBonus { req: Colours { red: 5, green: 0, blue: 5 }, bonus: 200 },
@ -675,7 +666,7 @@ impl Spec {
}
}
pub fn apply(&self, modified: u64, base: u64, construct_colours: &Colours, player_colours: &Colours) -> u64 {
pub fn apply(&self, modified: u64, base: u64, player_colours: &Colours) -> u64 {
match *self {
// Percentage multipliers based on base value
Spec::Power |