back to sq 1
This commit is contained in:
parent
f62c3e6767
commit
3dcb0a3533
@ -56,74 +56,93 @@ impl Spec {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn apply(&self, modified: u64, base: u64, team_colours: &Colours) -> u64 {
|
pub fn apply(&self, modified: u64, base: u64, team_colours: &Colours) -> u64 {
|
||||||
let mut rng = thread_rng();
|
|
||||||
|
|
||||||
let i_min = 32;
|
|
||||||
let i_max = 64;
|
|
||||||
|
|
||||||
fn apply_bonus(base: u64, colours: Vec<u8>, reqs: Vec<u8>, bonuses: Vec<u64>) -> u64 {
|
|
||||||
base + bonuses.iter().enumerate().fold(0, |acc, (i, b)| {
|
|
||||||
acc + match (colours.iter().all(|colour| colour >= &reqs[i])) {
|
|
||||||
true => bonuses[i],
|
|
||||||
false => 0
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
match *self {
|
match *self {
|
||||||
Spec::RedDamageI => modified + {
|
Spec::RedDamageI => modified + {
|
||||||
apply_bonus(base.pct(5), vec![team_colours.red], vec![5, 10, 20],
|
let mut pct = 5;
|
||||||
vec![base.pct(5), base.pct(10), base.pct(20)])
|
if team_colours.red >= 5 { pct += 5 };
|
||||||
|
if team_colours.red >= 10 { pct += 10 };
|
||||||
|
if team_colours.red >= 20 { pct += 20 };
|
||||||
|
base.pct(pct)
|
||||||
},
|
},
|
||||||
Spec::GreenDamageI => modified + {
|
Spec::GreenDamageI => modified + {
|
||||||
apply_bonus(base.pct(5), vec![team_colours.green], vec![5, 10, 20],
|
let mut pct = 5;
|
||||||
vec![base.pct(5), base.pct(10), base.pct(20)])
|
if team_colours.green >= 5 { pct += 5 };
|
||||||
|
if team_colours.green >= 10 { pct += 10 };
|
||||||
|
if team_colours.green >= 20 { pct += 20 };
|
||||||
|
base.pct(pct)
|
||||||
},
|
},
|
||||||
Spec::BlueDamageI => modified + {
|
Spec::BlueDamageI => modified + {
|
||||||
apply_bonus(base.pct(5), vec![team_colours.blue], vec![5, 10, 20],
|
let mut pct = 5;
|
||||||
vec![base.pct(5), base.pct(10), base.pct(20)])
|
if team_colours.blue >= 5 { pct += 5 };
|
||||||
|
if team_colours.blue >= 10 { pct += 10 };
|
||||||
|
if team_colours.blue >= 20 { pct += 20 };
|
||||||
|
base.pct(pct)
|
||||||
},
|
},
|
||||||
Spec::GRDI => modified + {
|
Spec::GRDI => modified + {
|
||||||
apply_bonus(base.pct(5), vec![team_colours.green, team_colours.red],
|
let mut pct = 5;
|
||||||
vec![2, 5, 10], vec![base.pct(5), base.pct(10), base.pct(20)])
|
if team_colours.green >= 2 && team_colours.red >= 2 { pct += 5 };
|
||||||
|
if team_colours.green >= 5 && team_colours.red >= 5 { pct += 10 };
|
||||||
|
if team_colours.green >= 10 && team_colours.red >= 10 { pct += 20 };
|
||||||
|
base.pct(pct)
|
||||||
},
|
},
|
||||||
Spec::GBDI => modified + {
|
Spec::GBDI => modified + {
|
||||||
apply_bonus(base.pct(5), vec![team_colours.green, team_colours.blue],
|
let mut pct = 5;
|
||||||
vec![2, 5, 10], vec![base.pct(5), base.pct(10), base.pct(20)])
|
if team_colours.green >= 2 && team_colours.blue >= 2 { pct += 5 };
|
||||||
|
if team_colours.green >= 5 && team_colours.blue >= 5 { pct += 10 };
|
||||||
|
if team_colours.green >= 10 && team_colours.blue >= 10 { pct += 20 };
|
||||||
|
base.pct(pct)
|
||||||
},
|
},
|
||||||
Spec::RBDI => modified + {
|
Spec::RBDI => modified + {
|
||||||
apply_bonus(base.pct(5), vec![team_colours.red, team_colours.blue],
|
let mut pct = 5;
|
||||||
vec![2, 5, 10], vec![base.pct(5), base.pct(10), base.pct(20)])
|
if team_colours.blue >= 2 && team_colours.red >= 2 { pct += 5 };
|
||||||
|
if team_colours.blue >= 5 && team_colours.red >= 5 { pct += 10 };
|
||||||
|
if team_colours.blue >= 10 && team_colours.red >= 10 { pct += 20 };
|
||||||
|
base.pct(pct)
|
||||||
},
|
},
|
||||||
|
|
||||||
Spec::SpeedI => modified + base.pct(5),
|
Spec::SpeedI => modified + base.pct(5),
|
||||||
|
|
||||||
Spec::LifeI => modified + {
|
Spec::LifeI => modified + {
|
||||||
let bonus = 10 * team_colours.green as u64;
|
let mut mult = 10;
|
||||||
apply_bonus(bonus, vec![team_colours.green], vec![5, 10, 20], vec![bonus, bonus * 2, bonus * 3])
|
if team_colours.red >= 5 { mult += 20 };
|
||||||
|
if team_colours.red >= 10 { mult += 30 };
|
||||||
|
if team_colours.red >= 20 { mult += 50 };
|
||||||
|
mult * team_colours.green as u64
|
||||||
},
|
},
|
||||||
Spec::RedShieldI => modified + {
|
Spec::RedShieldI => modified + {
|
||||||
let bonus = 10 * team_colours.red as u64;
|
let mut mult = 10;
|
||||||
apply_bonus(bonus, vec![team_colours.red], vec![5, 10, 20], vec![bonus, bonus * 2, bonus * 3])
|
if team_colours.red >= 5 { mult += 20 };
|
||||||
|
if team_colours.red >= 10 { mult += 30 };
|
||||||
|
if team_colours.red >= 20 { mult += 50 };
|
||||||
|
mult * team_colours.red as u64
|
||||||
},
|
},
|
||||||
Spec::BlueShieldI => modified + {
|
Spec::BlueShieldI => modified + {
|
||||||
let bonus = 10 * team_colours.blue as u64;
|
let mut mult = 10;
|
||||||
apply_bonus(bonus, vec![team_colours.blue], vec![5, 10, 20], vec![bonus, bonus * 2, bonus * 3])
|
if team_colours.red >= 5 { mult += 20 };
|
||||||
|
if team_colours.red >= 10 { mult += 30 };
|
||||||
|
if team_colours.red >= 20 { mult += 50 };
|
||||||
|
(mult * team_colours.blue) as u64
|
||||||
},
|
},
|
||||||
Spec::LRSI => modified + {
|
Spec::LRSI => modified + {
|
||||||
let bonus = 5 * (team_colours.green + team_colours.red) as u64;
|
let mut mult = 5;
|
||||||
apply_bonus(bonus, vec![team_colours.green, team_colours.red],
|
if team_colours.green >= 2 && team_colours.red >= 2 { mult += 5 };
|
||||||
vec![2, 5, 10], vec![bonus, bonus * 2, bonus * 3])
|
if team_colours.green >= 5 && team_colours.red >= 5 { mult += 10 };
|
||||||
|
if team_colours.green >= 10 && team_colours.red >= 10 { mult += 20 };
|
||||||
|
mult * (team_colours.green + team_colours.red) as u64
|
||||||
},
|
},
|
||||||
Spec::LBSI => modified + {
|
Spec::LBSI => modified + {
|
||||||
let bonus = 5 * (team_colours.green + team_colours.blue) as u64;
|
let mut mult = 5;
|
||||||
apply_bonus(bonus, vec![team_colours.green, team_colours.blue],
|
if team_colours.green >= 2 && team_colours.red >= 2 { mult += 5 };
|
||||||
vec![2, 5, 10], vec![bonus, bonus * 2, bonus * 3])
|
if team_colours.green >= 5 && team_colours.red >= 5 { mult += 10 };
|
||||||
|
if team_colours.green >= 10 && team_colours.red >= 10 { mult += 20 };
|
||||||
|
mult * (team_colours.green + team_colours.red) as u64
|
||||||
},
|
},
|
||||||
Spec::RBSI => modified + {
|
Spec::RBSI => modified + {
|
||||||
let bonus = 5 * (team_colours.red + team_colours.blue) as u64;
|
let mut mult = 5;
|
||||||
apply_bonus(bonus, vec![team_colours.red, team_colours.blue],
|
if team_colours.blue >= 2 && team_colours.red >= 2 { mult += 5 };
|
||||||
vec![2, 5, 10], vec![bonus, bonus * 2, bonus * 3])
|
if team_colours.blue >= 5 && team_colours.red >= 5 { mult += 10 };
|
||||||
|
if team_colours.blue >= 10 && team_colours.red >= 10 { mult += 20 };
|
||||||
|
mult * (team_colours.blue + team_colours.red) as u64
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user