From f62c3e6767aff9d108d29a35c5dfbddb1fdad6b6 Mon Sep 17 00:00:00 2001 From: Mashy Date: Thu, 21 Mar 2019 16:45:16 +1000 Subject: [PATCH] Base as part of bonus calc --- server/src/spec.rs | 46 ++++++++++++++++++++-------------------------- 1 file changed, 20 insertions(+), 26 deletions(-) diff --git a/server/src/spec.rs b/server/src/spec.rs index ce55b96a..ceb0d7a4 100644 --- a/server/src/spec.rs +++ b/server/src/spec.rs @@ -61,8 +61,8 @@ impl Spec { let i_min = 32; let i_max = 64; - fn apply_bonus(colours: Vec, reqs: Vec, bonuses: Vec) -> u64 { - bonuses.iter().enumerate().fold(0, |acc, (i, b)| { + fn apply_bonus(base: u64, colours: Vec, reqs: Vec, bonuses: Vec) -> u64 { + base + bonuses.iter().enumerate().fold(0, |acc, (i, b)| { acc + match (colours.iter().all(|colour| colour >= &reqs[i])) { true => bonuses[i], false => 0 @@ -72,63 +72,57 @@ impl Spec { match *self { Spec::RedDamageI => modified + { - let mut bonus = base.pct(5); - bonus + apply_bonus(vec![team_colours.red], vec![5, 10, 20], + apply_bonus(base.pct(5), vec![team_colours.red], vec![5, 10, 20], vec![base.pct(5), base.pct(10), base.pct(20)]) }, Spec::GreenDamageI => modified + { - let mut bonus = base.pct(5) as u64; - bonus + apply_bonus(vec![team_colours.green], vec![5, 10, 20], + apply_bonus(base.pct(5), vec![team_colours.green], vec![5, 10, 20], vec![base.pct(5), base.pct(10), base.pct(20)]) }, Spec::BlueDamageI => modified + { - let mut bonus = base.pct(5) as u64; - bonus + apply_bonus(vec![team_colours.blue], vec![5, 10, 20], + apply_bonus(base.pct(5), vec![team_colours.blue], vec![5, 10, 20], vec![base.pct(5), base.pct(10), base.pct(20)]) }, Spec::GRDI => modified + { - let mut bonus = base.pct(5) as u64; - bonus + apply_bonus(vec![team_colours.green, team_colours.red], + apply_bonus(base.pct(5), vec![team_colours.green, team_colours.red], vec![2, 5, 10], vec![base.pct(5), base.pct(10), base.pct(20)]) }, Spec::GBDI => modified + { - let mut bonus = base.pct(5) as u64; - bonus + apply_bonus(vec![team_colours.green, team_colours.blue], + apply_bonus(base.pct(5), vec![team_colours.green, team_colours.blue], vec![2, 5, 10], vec![base.pct(5), base.pct(10), base.pct(20)]) }, Spec::RBDI => modified + { - let mut bonus = base.pct(5) as u64; - bonus + apply_bonus(vec![team_colours.red, team_colours.blue], + apply_bonus(base.pct(5), vec![team_colours.red, team_colours.blue], vec![2, 5, 10], vec![base.pct(5), base.pct(10), base.pct(20)]) }, Spec::SpeedI => modified + base.pct(5), Spec::LifeI => modified + { - let mut bonus = 10 * team_colours.green as u64; - bonus + apply_bonus(vec![team_colours.green], vec![5, 10, 20], vec![bonus, bonus * 2, bonus * 3]) + let bonus = 10 * team_colours.green as u64; + apply_bonus(bonus, vec![team_colours.green], vec![5, 10, 20], vec![bonus, bonus * 2, bonus * 3]) }, Spec::RedShieldI => modified + { - let mut bonus = 10 * team_colours.red as u64; - bonus + apply_bonus(vec![team_colours.red], vec![5, 10, 20], vec![bonus, bonus * 2, bonus * 3]) + let bonus = 10 * team_colours.red as u64; + apply_bonus(bonus, vec![team_colours.red], vec![5, 10, 20], vec![bonus, bonus * 2, bonus * 3]) }, Spec::BlueShieldI => modified + { - let mut bonus = 10 * team_colours.blue as u64; - bonus + apply_bonus(vec![team_colours.blue], vec![5, 10, 20], vec![bonus, bonus * 2, bonus * 3]) + let bonus = 10 * team_colours.blue as u64; + apply_bonus(bonus, vec![team_colours.blue], vec![5, 10, 20], vec![bonus, bonus * 2, bonus * 3]) }, Spec::LRSI => modified + { - let mut bonus = 5 * (team_colours.green + team_colours.red) as u64; - bonus + apply_bonus(vec![team_colours.green, team_colours.red], + let bonus = 5 * (team_colours.green + team_colours.red) as u64; + apply_bonus(bonus, vec![team_colours.green, team_colours.red], vec![2, 5, 10], vec![bonus, bonus * 2, bonus * 3]) }, Spec::LBSI => modified + { - let mut bonus = 5 * (team_colours.green + team_colours.blue) as u64; - bonus + apply_bonus(vec![team_colours.green, team_colours.blue], + let bonus = 5 * (team_colours.green + team_colours.blue) as u64; + apply_bonus(bonus, vec![team_colours.green, team_colours.blue], vec![2, 5, 10], vec![bonus, bonus * 2, bonus * 3]) }, Spec::RBSI => modified + { - let mut bonus = 5 * (team_colours.red + team_colours.blue) as u64; - bonus + apply_bonus(vec![team_colours.red, team_colours.blue], + let bonus = 5 * (team_colours.red + team_colours.blue) as u64; + apply_bonus(bonus, vec![team_colours.red, team_colours.blue], vec![2, 5, 10], vec![bonus, bonus * 2, bonus * 3]) }, }