Merge branch 'master' of ssh://cryps.gg:40022/~/cryps

This commit is contained in:
ntr 2019-03-21 18:23:31 +11:00
commit 5dab6f621b

View File

@ -61,8 +61,8 @@ impl Spec {
let i_min = 32; let i_min = 32;
let i_max = 64; let i_max = 64;
fn apply_bonus(colours: Vec<u8>, reqs: Vec<u8>, bonuses: Vec<u64>) -> u64 { fn apply_bonus(base: u64, colours: Vec<u8>, reqs: Vec<u8>, bonuses: Vec<u64>) -> u64 {
bonuses.iter().enumerate().fold(0, |acc, (i, b)| { base + bonuses.iter().enumerate().fold(0, |acc, (i, b)| {
acc + match (colours.iter().all(|colour| colour >= &reqs[i])) { acc + match (colours.iter().all(|colour| colour >= &reqs[i])) {
true => bonuses[i], true => bonuses[i],
false => 0 false => 0
@ -72,63 +72,57 @@ impl Spec {
match *self { match *self {
Spec::RedDamageI => modified + { Spec::RedDamageI => modified + {
let mut bonus = base.pct(5); apply_bonus(base.pct(5), vec![team_colours.red], vec![5, 10, 20],
bonus + apply_bonus(vec![team_colours.red], vec![5, 10, 20],
vec![base.pct(5), base.pct(10), base.pct(20)]) vec![base.pct(5), base.pct(10), base.pct(20)])
}, },
Spec::GreenDamageI => modified + { Spec::GreenDamageI => modified + {
let mut bonus = base.pct(5) as u64; apply_bonus(base.pct(5), vec![team_colours.green], vec![5, 10, 20],
bonus + apply_bonus(vec![team_colours.green], vec![5, 10, 20],
vec![base.pct(5), base.pct(10), base.pct(20)]) vec![base.pct(5), base.pct(10), base.pct(20)])
}, },
Spec::BlueDamageI => modified + { Spec::BlueDamageI => modified + {
let mut bonus = base.pct(5) as u64; apply_bonus(base.pct(5), vec![team_colours.blue], vec![5, 10, 20],
bonus + apply_bonus(vec![team_colours.blue], vec![5, 10, 20],
vec![base.pct(5), base.pct(10), base.pct(20)]) vec![base.pct(5), base.pct(10), base.pct(20)])
}, },
Spec::GRDI => modified + { Spec::GRDI => modified + {
let mut bonus = base.pct(5) as u64; apply_bonus(base.pct(5), vec![team_colours.green, team_colours.red],
bonus + apply_bonus(vec![team_colours.green, team_colours.red],
vec![2, 5, 10], vec![base.pct(5), base.pct(10), base.pct(20)]) vec![2, 5, 10], vec![base.pct(5), base.pct(10), base.pct(20)])
}, },
Spec::GBDI => modified + { Spec::GBDI => modified + {
let mut bonus = base.pct(5) as u64; apply_bonus(base.pct(5), vec![team_colours.green, team_colours.blue],
bonus + apply_bonus(vec![team_colours.green, team_colours.blue],
vec![2, 5, 10], vec![base.pct(5), base.pct(10), base.pct(20)]) vec![2, 5, 10], vec![base.pct(5), base.pct(10), base.pct(20)])
}, },
Spec::RBDI => modified + { Spec::RBDI => modified + {
let mut bonus = base.pct(5) as u64; apply_bonus(base.pct(5), vec![team_colours.red, team_colours.blue],
bonus + apply_bonus(vec![team_colours.red, team_colours.blue],
vec![2, 5, 10], vec![base.pct(5), base.pct(10), base.pct(20)]) vec![2, 5, 10], vec![base.pct(5), base.pct(10), base.pct(20)])
}, },
Spec::SpeedI => modified + base.pct(5), Spec::SpeedI => modified + base.pct(5),
Spec::LifeI => modified + { Spec::LifeI => modified + {
let mut bonus = 10 * team_colours.green as u64; let bonus = 10 * team_colours.green as u64;
bonus + apply_bonus(vec![team_colours.green], vec![5, 10, 20], vec![bonus, bonus * 2, bonus * 3]) apply_bonus(bonus, vec![team_colours.green], vec![5, 10, 20], vec![bonus, bonus * 2, bonus * 3])
}, },
Spec::RedShieldI => modified + { Spec::RedShieldI => modified + {
let mut bonus = 10 * team_colours.red as u64; let bonus = 10 * team_colours.red as u64;
bonus + apply_bonus(vec![team_colours.red], vec![5, 10, 20], vec![bonus, bonus * 2, bonus * 3]) apply_bonus(bonus, vec![team_colours.red], vec![5, 10, 20], vec![bonus, bonus * 2, bonus * 3])
}, },
Spec::BlueShieldI => modified + { Spec::BlueShieldI => modified + {
let mut bonus = 10 * team_colours.blue as u64; let bonus = 10 * team_colours.blue as u64;
bonus + apply_bonus(vec![team_colours.blue], vec![5, 10, 20], vec![bonus, bonus * 2, bonus * 3]) apply_bonus(bonus, vec![team_colours.blue], vec![5, 10, 20], vec![bonus, bonus * 2, bonus * 3])
}, },
Spec::LRSI => modified + { Spec::LRSI => modified + {
let mut bonus = 5 * (team_colours.green + team_colours.red) as u64; let bonus = 5 * (team_colours.green + team_colours.red) as u64;
bonus + apply_bonus(vec![team_colours.green, team_colours.red], apply_bonus(bonus, vec![team_colours.green, team_colours.red],
vec![2, 5, 10], vec![bonus, bonus * 2, bonus * 3]) vec![2, 5, 10], vec![bonus, bonus * 2, bonus * 3])
}, },
Spec::LBSI => modified + { Spec::LBSI => modified + {
let mut bonus = 5 * (team_colours.green + team_colours.blue) as u64; let bonus = 5 * (team_colours.green + team_colours.blue) as u64;
bonus + apply_bonus(vec![team_colours.green, team_colours.blue], apply_bonus(bonus, vec![team_colours.green, team_colours.blue],
vec![2, 5, 10], vec![bonus, bonus * 2, bonus * 3]) vec![2, 5, 10], vec![bonus, bonus * 2, bonus * 3])
}, },
Spec::RBSI => modified + { Spec::RBSI => modified + {
let mut bonus = 5 * (team_colours.red + team_colours.blue) as u64; let bonus = 5 * (team_colours.red + team_colours.blue) as u64;
bonus + apply_bonus(vec![team_colours.red, team_colours.blue], apply_bonus(bonus, vec![team_colours.red, team_colours.blue],
vec![2, 5, 10], vec![bonus, bonus * 2, bonus * 3]) vec![2, 5, 10], vec![bonus, bonus * 2, bonus * 3])
}, },
} }