Merge branch 'develop' into core

This commit is contained in:
ntr
2019-12-04 15:36:32 +10:00
15 changed files with 674 additions and 361 deletions
+8 -8
View File
@@ -223,7 +223,7 @@ impl Construct {
red_life: ConstructStat { base: 125, value: 125, max: 125, stat: Stat::RedLife },
blue_power: ConstructStat { base: 320, value: 320, max: 320, stat: Stat::BluePower },
blue_life: ConstructStat { base: 125, value: 125, max: 125, stat: Stat::BlueLife },
green_power: ConstructStat { base: 300, value: 300, max: 300, stat: Stat::GreenPower },
green_power: ConstructStat { base: 320, value: 320, max: 320, stat: Stat::GreenPower },
green_life: ConstructStat { base: 800, value: 800, max: 800, stat: Stat::GreenLife },
speed: ConstructStat { base: 100, value: 100, max: 100, stat: Stat::Speed },
// evasion: ConstructStat { base: 0, value: 0, max: 0, stat: Stat::Evasion },
@@ -1031,9 +1031,9 @@ mod tests {
construct.apply_modifiers(&player_colours);
assert!(construct.red_power.value == construct.red_power.base + construct.red_power.base.pct(35));
assert!(construct.green_power.value == construct.green_power.base + construct.green_power.base.pct(50));
assert!(construct.blue_power.value == construct.blue_power.base + construct.blue_power.base.pct(70));
assert!(construct.red_power.value == construct.red_power.base + construct.red_power.base.pct(15));
assert!(construct.green_power.value == construct.green_power.base + construct.green_power.base.pct(24));
assert!(construct.blue_power.value == construct.blue_power.base + construct.blue_power.base.pct(37));
return;
}
@@ -1082,7 +1082,7 @@ mod tests {
let colours = Colours::from_construct(&construct);
assert!(colours.red == 4);
assert!(colours.blue == 20);
assert!(colours.blue == 10);
assert!(colours.green == 2);
}
@@ -1103,9 +1103,9 @@ mod tests {
construct.apply_modifiers(&player_colours);
assert!(construct.red_power.value == construct.red_power.base + construct.red_power.base.pct(35));
assert!(construct.green_power.value == construct.green_power.base + construct.green_power.base.pct(25));
assert!(construct.blue_power.value == construct.blue_power.base + construct.blue_power.base.pct(25));
assert!(construct.red_power.value == construct.red_power.base + construct.red_power.base.pct(15));
assert!(construct.green_power.value == construct.green_power.base + construct.green_power.base.pct(10));
assert!(construct.blue_power.value == construct.blue_power.base + construct.blue_power.base.pct(10));
return;
}
+131 -105
View File
@@ -959,37 +959,51 @@ impl Item {
Item::Amplify => vec![Item::Buff, Item::Red, Item::Blue],
Item::Haste => vec![Item::Buff, Item::Red, Item::Green],
Item::Hybrid => vec![Item::Buff, Item::Green, Item::Blue],
Item::InterceptPlus => vec![Item::Intercept, Item::Intercept, Item::Intercept],
Item::InterceptPlusPlus => vec![Item::InterceptPlus, Item::InterceptPlus, Item::InterceptPlus],
Item::TriagePlus => vec![Item::Triage, Item::Triage, Item::Triage],
Item::TriagePlusPlus => vec![Item::TriagePlus, Item::TriagePlus, Item::TriagePlus],
Item::HastePlus => vec![Item::Haste, Item::Haste, Item::Haste],
Item::HastePlusPlus => vec![Item::HastePlus, Item::HastePlus, Item::HastePlus],
Item::HybridPlus => vec![Item::Hybrid, Item::Hybrid, Item::Hybrid],
Item::HybridPlusPlus => vec![Item::HybridPlus, Item::HybridPlus, Item::HybridPlus],
Item::AbsorbPlus => vec![Item::Absorb, Item::Absorb, Item::Absorb],
Item::AbsorbPlusPlus => vec![Item::AbsorbPlus, Item::AbsorbPlus, Item::AbsorbPlus],
Item::AmplifyPlus => vec![Item::Amplify, Item::Amplify, Item::Amplify],
Item::AmplifyPlusPlus => vec![Item::AmplifyPlus, Item::AmplifyPlus, Item::AmplifyPlus],
Item::Purge => vec![Item::Debuff, Item::Green, Item::Green], // Needs flavour
Item::InterceptPlus => vec![Item::Intercept, Item::Intercept],
Item::InterceptPlusPlus => vec![Item::InterceptPlus, Item::InterceptPlus],
Item::TriagePlus => vec![Item::Triage, Item::Triage],
Item::TriagePlusPlus => vec![Item::TriagePlus, Item::TriagePlus],
Item::AbsorbPlus => vec![Item::Absorb, Item::Absorb],
Item::AbsorbPlusPlus => vec![Item::AbsorbPlus, Item::AbsorbPlus],
Item::AmplifyPlus => vec![Item::Amplify, Item::Amplify],
Item::AmplifyPlusPlus => vec![Item::AmplifyPlus, Item::AmplifyPlus],
Item::HastePlus => vec![Item::Haste, Item::Haste],
Item::HastePlusPlus => vec![Item::HastePlus, Item::HastePlus],
Item::HybridPlus => vec![Item::Hybrid, Item::Hybrid],
Item::HybridPlusPlus => vec![Item::HybridPlus, Item::HybridPlus],
Item::Purge => vec![Item::Debuff, Item::Green, Item::Green],
Item::Invert => vec![Item::Debuff, Item::Red, Item::Green],
Item::Restrict => vec![Item::Debuff, Item::Red, Item::Red],
Item::Silence => vec![Item::Debuff, Item::Blue, Item::Blue],
Item::Curse => vec![Item::Debuff, Item::Red, Item::Blue],
Item::Decay => vec![Item::Debuff, Item::Green, Item::Blue],
Item::RestrictPlus => vec![Item::Restrict, Item::Restrict, Item::Restrict],
Item::RestrictPlusPlus => vec![Item::RestrictPlus, Item::RestrictPlus, Item::RestrictPlus],
Item::PurgePlus => vec![Item::Purge, Item::Purge, Item::Purge], // Needs flavour
Item::PurgePlusPlus => vec![Item::PurgePlus, Item::PurgePlus, Item::PurgePlus], // Needs flavour
Item::SilencePlus => vec![Item::Silence, Item::Silence, Item::Silence],
Item::SilencePlusPlus => vec![Item::SilencePlus, Item::SilencePlus, Item::SilencePlus],
Item::CursePlus => vec![Item::Curse, Item::Curse, Item::Curse],
Item::CursePlusPlus => vec![Item::CursePlus, Item::CursePlus, Item::CursePlus],
Item::DecayPlus => vec![Item::Decay, Item::Decay, Item::Decay],
Item::DecayPlusPlus => vec![Item::DecayPlus, Item::DecayPlus, Item::DecayPlus],
Item::InvertPlus => vec![Item::Invert, Item::Invert, Item::Invert],
Item::InvertPlusPlus => vec![Item::InvertPlus, Item::InvertPlus, Item::InvertPlus],
Item::PurgePlus => vec![Item::Purge, Item::Purge],
Item::PurgePlusPlus => vec![Item::PurgePlus, Item::PurgePlus],
Item::InvertPlus => vec![Item::Invert, Item::Invert],
Item::InvertPlusPlus => vec![Item::InvertPlus, Item::InvertPlus],
Item::RestrictPlus => vec![Item::Restrict, Item::Restrict],
Item::RestrictPlusPlus => vec![Item::RestrictPlus, Item::RestrictPlus],
Item::SilencePlus => vec![Item::Silence, Item::Silence],
Item::SilencePlusPlus => vec![Item::SilencePlus, Item::SilencePlus],
Item::CursePlus => vec![Item::Curse, Item::Curse],
Item::CursePlusPlus => vec![Item::CursePlus, Item::CursePlus],
Item::DecayPlus => vec![Item::Decay, Item::Decay],
Item::DecayPlusPlus => vec![Item::DecayPlus, Item::DecayPlus],
Item::Counter => vec![Item::Block, Item::Red, Item::Red],
Item::Reflect => vec![Item::Block, Item::Green, Item::Blue],
@@ -997,18 +1011,24 @@ impl Item {
Item::Sustain => vec![Item::Block, Item::Red, Item::Green],
Item::Electrify => vec![Item::Block, Item::Blue, Item::Blue],
Item::Recharge => vec![Item::Block, Item::Red, Item::Blue],
Item::CounterPlus => vec![Item::Counter, Item::Counter, Item::Counter],
Item::CounterPlusPlus => vec![Item::CounterPlus, Item::CounterPlus, Item::CounterPlus], // Add red recharge
Item::PurifyPlus => vec![Item::Purify, Item::Purify, Item::Purify],
Item::PurifyPlusPlus => vec![Item::PurifyPlus, Item::PurifyPlus, Item::PurifyPlus],
Item::ElectrifyPlus => vec![Item::Electrify, Item::Electrify, Item::Electrify],
Item::ElectrifyPlusPlus => vec![Item::ElectrifyPlus, Item::ElectrifyPlus, Item::ElectrifyPlus],
Item::SustainPlus => vec![Item::Sustain, Item::Sustain, Item::Sustain],
Item::SustainPlusPlus => vec![Item::SustainPlus, Item::SustainPlus, Item::SustainPlus],
Item::ReflectPlus => vec![Item::Reflect, Item::Reflect, Item::Reflect],
Item::ReflectPlusPlus => vec![Item::ReflectPlus, Item::ReflectPlus, Item::ReflectPlus],
Item::RechargePlus => vec![Item::Recharge, Item::Recharge, Item::Recharge],
Item::RechargePlusPlus => vec![Item::RechargePlus, Item::RechargePlus, Item::RechargePlus],
Item::CounterPlus => vec![Item::Counter, Item::Counter],
Item::CounterPlusPlus => vec![Item::CounterPlus, Item::CounterPlus],
Item::PurifyPlus => vec![Item::Purify, Item::Purify],
Item::PurifyPlusPlus => vec![Item::PurifyPlus, Item::PurifyPlus],
Item::ElectrifyPlus => vec![Item::Electrify, Item::Electrify],
Item::ElectrifyPlusPlus => vec![Item::ElectrifyPlus, Item::ElectrifyPlus],
Item::SustainPlus => vec![Item::Sustain, Item::Sustain],
Item::SustainPlusPlus => vec![Item::SustainPlus, Item::SustainPlus],
Item::ReflectPlus => vec![Item::Reflect, Item::Reflect],
Item::ReflectPlusPlus => vec![Item::ReflectPlus, Item::ReflectPlus, ],
Item::RechargePlus => vec![Item::Recharge, Item::Recharge],
Item::RechargePlusPlus => vec![Item::RechargePlus, Item::RechargePlus],
Item::Bash => vec![Item::Stun, Item::Red, Item::Red],
Item::Sleep => vec![Item::Stun, Item::Green, Item::Green],
@@ -1016,18 +1036,25 @@ impl Item {
Item::Link => vec![Item::Stun, Item::Blue, Item::Green],
Item::Banish => vec![Item::Stun, Item::Red, Item::Blue],
Item::Break => vec![Item::Stun, Item::Red, Item::Green],
Item::BashPlus => vec![Item::Bash, Item::Bash, Item::Bash],
Item::BashPlusPlus => vec![Item::BashPlus, Item::BashPlus, Item::BashPlus],
Item::SleepPlus => vec![Item::Sleep, Item::Sleep, Item::Sleep],
Item::SleepPlusPlus => vec![Item::SleepPlus, Item::SleepPlus, Item::SleepPlus],
Item::RuinPlus => vec![Item::Ruin, Item::Ruin, Item::Ruin],
Item::RuinPlusPlus => vec![Item::RuinPlus, Item::RuinPlus, Item::RuinPlus],
Item::BreakPlus => vec![Item::Break, Item::Break, Item::Break],
Item::BreakPlusPlus => vec![Item::BreakPlus, Item::BreakPlus, Item::BreakPlus],
Item::LinkPlus => vec![Item::Link, Item::Link, Item::Link],
Item::LinkPlusPlus => vec![Item::LinkPlus, Item::LinkPlus, Item::LinkPlus],
Item::BanishPlus => vec![Item::Banish, Item::Banish, Item::Banish],
Item::BanishPlusPlus => vec![Item::BanishPlus, Item::BanishPlus, Item::BanishPlus],
Item::BashPlus => vec![Item::Bash, Item::Bash],
Item::BashPlusPlus => vec![Item::BashPlus, Item::BashPlus],
Item::SleepPlus => vec![Item::Sleep, Item::Sleep],
Item::SleepPlusPlus => vec![Item::SleepPlus, Item::SleepPlus,],
Item::RuinPlus => vec![Item::Ruin, Item::Ruin],
Item::RuinPlusPlus => vec![Item::RuinPlus, Item::RuinPlus],
Item::LinkPlus => vec![Item::Link, Item::Link],
Item::LinkPlusPlus => vec![Item::LinkPlus, Item::LinkPlus],
Item::BanishPlus => vec![Item::Banish, Item::Banish],
Item::BanishPlusPlus => vec![Item::BanishPlus, Item::BanishPlus],
Item::BreakPlus => vec![Item::Break, Item::Break],
Item::BreakPlusPlus => vec![Item::BreakPlus, Item::BreakPlus],
Item::Strike => vec![Item::Attack, Item::Red, Item::Red],
Item::Chaos => vec![Item::Attack, Item::Red, Item::Blue],
@@ -1035,18 +1062,24 @@ impl Item {
Item::Blast => vec![Item::Attack, Item::Blue, Item::Blue],
Item::Slay => vec![Item::Attack, Item::Red, Item::Green],
Item::Siphon => vec![Item::Attack, Item::Green, Item::Blue],
Item::StrikePlus => vec![Item::Strike, Item::Strike, Item::Strike],
Item::StrikePlusPlus => vec![Item::StrikePlus, Item::StrikePlus, Item::StrikePlus],
Item::HealPlus => vec![Item::Heal, Item::Heal, Item::Heal],
Item::HealPlusPlus => vec![Item::HealPlus, Item::HealPlus, Item::HealPlus],
Item::BlastPlus => vec![Item::Blast, Item::Blast, Item::Blast],
Item::BlastPlusPlus => vec![Item::BlastPlus, Item::BlastPlus, Item::BlastPlus],
Item::SlayPlus => vec![Item::Slay, Item::Slay, Item::Slay],
Item::SlayPlusPlus => vec![Item::SlayPlus, Item::SlayPlus, Item::SlayPlus],
Item::SiphonPlus => vec![Item::Siphon, Item::Siphon, Item::Siphon],
Item::SiphonPlusPlus => vec![Item::SiphonPlus, Item::SiphonPlus, Item::SiphonPlus],
Item::ChaosPlus => vec![Item::Chaos, Item::Chaos, Item::Chaos],
Item::ChaosPlusPlus => vec![Item::ChaosPlus, Item::ChaosPlus, Item::ChaosPlus],
Item::StrikePlus => vec![Item::Strike, Item::Strike],
Item::StrikePlusPlus => vec![Item::StrikePlus, Item::StrikePlus],
Item::ChaosPlus => vec![Item::Chaos, Item::Chaos],
Item::ChaosPlusPlus => vec![Item::ChaosPlus, Item::ChaosPlus],
Item::HealPlus => vec![Item::Heal, Item::Heal],
Item::HealPlusPlus => vec![Item::HealPlus, Item::HealPlus],
Item::BlastPlus => vec![Item::Blast, Item::Blast],
Item::BlastPlusPlus => vec![Item::BlastPlus, Item::BlastPlus],
Item::SlayPlus => vec![Item::Slay, Item::Slay],
Item::SlayPlusPlus => vec![Item::SlayPlus, Item::SlayPlus],
Item::SiphonPlus => vec![Item::Siphon, Item::Siphon],
Item::SiphonPlusPlus => vec![Item::SiphonPlus, Item::SiphonPlus],
Item::PowerRR => vec![Item::Power, Item::Red, Item::Red],
Item::PowerGG => vec![Item::Power, Item::Green, Item::Green],
@@ -1054,18 +1087,18 @@ impl Item {
Item::PowerRG => vec![Item::Power, Item::Red, Item::Green],
Item::PowerGB => vec![Item::Power, Item::Green, Item::Blue],
Item::PowerRB => vec![Item::Power, Item::Red, Item::Blue],
Item::PowerRRPlus => vec![Item::PowerRR, Item::PowerRR, Item::PowerRR],
Item::PowerGGPlus => vec![Item::PowerGG, Item::PowerGG, Item::PowerGG],
Item::PowerBBPlus => vec![Item::PowerBB, Item::PowerBB, Item::PowerBB],
Item::PowerRGPlus => vec![Item::PowerRG, Item::PowerRG, Item::PowerRG],
Item::PowerGBPlus => vec![Item::PowerGB, Item::PowerGB, Item::PowerGB],
Item::PowerRBPlus => vec![Item::PowerRB, Item::PowerRB, Item::PowerRB],
Item::PowerRRPlusPlus => vec![Item::PowerRRPlus, Item::PowerRRPlus, Item::PowerRRPlus],
Item::PowerGGPlusPlus => vec![Item::PowerGGPlus, Item::PowerGGPlus, Item::PowerGGPlus],
Item::PowerBBPlusPlus => vec![Item::PowerBBPlus, Item::PowerBBPlus, Item::PowerBBPlus],
Item::PowerRGPlusPlus => vec![Item::PowerRGPlus, Item::PowerRGPlus, Item::PowerRGPlus],
Item::PowerGBPlusPlus => vec![Item::PowerGBPlus, Item::PowerGBPlus, Item::PowerGBPlus],
Item::PowerRBPlusPlus => vec![Item::PowerRBPlus, Item::PowerRBPlus, Item::PowerRBPlus],
Item::PowerRRPlus => vec![Item::PowerRR, Item::PowerRR],
Item::PowerGGPlus => vec![Item::PowerGG, Item::PowerGG],
Item::PowerBBPlus => vec![Item::PowerBB, Item::PowerBB],
Item::PowerRGPlus => vec![Item::PowerRG, Item::PowerRG],
Item::PowerGBPlus => vec![Item::PowerGB, Item::PowerGB],
Item::PowerRBPlus => vec![Item::PowerRB, Item::PowerRB],
Item::PowerRRPlusPlus => vec![Item::PowerRRPlus, Item::PowerRRPlus],
Item::PowerGGPlusPlus => vec![Item::PowerGGPlus, Item::PowerGGPlus],
Item::PowerBBPlusPlus => vec![Item::PowerBBPlus, Item::PowerBBPlus],
Item::PowerRGPlusPlus => vec![Item::PowerRGPlus, Item::PowerRGPlus],
Item::PowerGBPlusPlus => vec![Item::PowerGBPlus, Item::PowerGBPlus],
Item::PowerRBPlusPlus => vec![Item::PowerRBPlus, Item::PowerRBPlus],
Item::LifeRR => vec![Item::Life, Item::Red, Item::Red],
Item::LifeGG => vec![Item::Life, Item::Green, Item::Green],
@@ -1073,18 +1106,18 @@ impl Item {
Item::LifeRG => vec![Item::Life, Item::Red, Item::Green],
Item::LifeGB => vec![Item::Life, Item::Green, Item::Blue],
Item::LifeRB => vec![Item::Life, Item::Red, Item::Blue],
Item::LifeRRPlus => vec![Item::LifeRR, Item::LifeRR, Item::LifeRR],
Item::LifeGGPlus => vec![Item::LifeGG, Item::LifeGG, Item::LifeGG],
Item::LifeBBPlus => vec![Item::LifeBB, Item::LifeBB, Item::LifeBB],
Item::LifeRGPlus => vec![Item::LifeRG, Item::LifeRG, Item::LifeRG],
Item::LifeGBPlus => vec![Item::LifeGB, Item::LifeGB, Item::LifeGB],
Item::LifeRBPlus => vec![Item::LifeRB, Item::LifeRB, Item::LifeRB],
Item::LifeRRPlusPlus => vec![Item::LifeRRPlus, Item::LifeRRPlus, Item::LifeRRPlus],
Item::LifeGGPlusPlus => vec![Item::LifeGGPlus, Item::LifeGGPlus, Item::LifeGGPlus],
Item::LifeBBPlusPlus => vec![Item::LifeBBPlus, Item::LifeBBPlus, Item::LifeBBPlus],
Item::LifeRGPlusPlus => vec![Item::LifeRGPlus, Item::LifeRGPlus, Item::LifeRGPlus],
Item::LifeGBPlusPlus => vec![Item::LifeGBPlus, Item::LifeGBPlus, Item::LifeGBPlus],
Item::LifeRBPlusPlus => vec![Item::LifeRBPlus, Item::LifeRBPlus, Item::LifeRBPlus],
Item::LifeRRPlus => vec![Item::LifeRR, Item::LifeRR],
Item::LifeGGPlus => vec![Item::LifeGG, Item::LifeGG],
Item::LifeBBPlus => vec![Item::LifeBB, Item::LifeBB],
Item::LifeRGPlus => vec![Item::LifeRG, Item::LifeRG],
Item::LifeGBPlus => vec![Item::LifeGB, Item::LifeGB],
Item::LifeRBPlus => vec![Item::LifeRB, Item::LifeRB],
Item::LifeRRPlusPlus => vec![Item::LifeRRPlus, Item::LifeRRPlus],
Item::LifeGGPlusPlus => vec![Item::LifeGGPlus, Item::LifeGGPlus],
Item::LifeBBPlusPlus => vec![Item::LifeBBPlus, Item::LifeBBPlus],
Item::LifeRGPlusPlus => vec![Item::LifeRGPlus, Item::LifeRGPlus],
Item::LifeGBPlusPlus => vec![Item::LifeGBPlus, Item::LifeGBPlus],
Item::LifeRBPlusPlus => vec![Item::LifeRBPlus, Item::LifeRBPlus],
Item::SpeedRR => vec![Item::Speed, Item::Red, Item::Red],
Item::SpeedGG => vec![Item::Speed, Item::Green, Item::Green],
@@ -1092,18 +1125,18 @@ impl Item {
Item::SpeedRG => vec![Item::Speed, Item::Red, Item::Green],
Item::SpeedGB => vec![Item::Speed, Item::Green, Item::Blue],
Item::SpeedRB => vec![Item::Speed, Item::Red, Item::Blue],
Item::SpeedRRPlus => vec![Item::SpeedRR, Item::SpeedRR, Item::SpeedRR],
Item::SpeedGGPlus => vec![Item::SpeedGG, Item::SpeedGG, Item::SpeedGG],
Item::SpeedBBPlus => vec![Item::SpeedBB, Item::SpeedBB, Item::SpeedBB],
Item::SpeedRGPlus => vec![Item::SpeedRG, Item::SpeedRG, Item::SpeedRG],
Item::SpeedGBPlus => vec![Item::SpeedGB, Item::SpeedGB, Item::SpeedGB],
Item::SpeedRBPlus => vec![Item::SpeedRB, Item::SpeedRB, Item::SpeedRB],
Item::SpeedRRPlusPlus => vec![Item::SpeedRRPlus, Item::SpeedRRPlus, Item::SpeedRRPlus],
Item::SpeedGGPlusPlus => vec![Item::SpeedGGPlus, Item::SpeedGGPlus, Item::SpeedGGPlus],
Item::SpeedBBPlusPlus => vec![Item::SpeedBBPlus, Item::SpeedBBPlus, Item::SpeedBBPlus],
Item::SpeedRGPlusPlus => vec![Item::SpeedRGPlus, Item::SpeedRGPlus, Item::SpeedRGPlus],
Item::SpeedGBPlusPlus => vec![Item::SpeedGBPlus, Item::SpeedGBPlus, Item::SpeedGBPlus],
Item::SpeedRBPlusPlus => vec![Item::SpeedRBPlus, Item::SpeedRBPlus, Item::SpeedRBPlus],
Item::SpeedRRPlus => vec![Item::SpeedRR, Item::SpeedRR],
Item::SpeedGGPlus => vec![Item::SpeedGG, Item::SpeedGG],
Item::SpeedBBPlus => vec![Item::SpeedBB, Item::SpeedBB],
Item::SpeedRGPlus => vec![Item::SpeedRG, Item::SpeedRG],
Item::SpeedGBPlus => vec![Item::SpeedGB, Item::SpeedGB],
Item::SpeedRBPlus => vec![Item::SpeedRB, Item::SpeedRB],
Item::SpeedRRPlusPlus => vec![Item::SpeedRRPlus, Item::SpeedRRPlus],
Item::SpeedGGPlusPlus => vec![Item::SpeedGGPlus, Item::SpeedGGPlus],
Item::SpeedBBPlusPlus => vec![Item::SpeedBBPlus, Item::SpeedBBPlus],
Item::SpeedRGPlusPlus => vec![Item::SpeedRGPlus, Item::SpeedRGPlus],
Item::SpeedGBPlusPlus => vec![Item::SpeedGBPlus, Item::SpeedGBPlus],
Item::SpeedRBPlusPlus => vec![Item::SpeedRBPlus, Item::SpeedRBPlus],
_ => vec![*self],
}
@@ -1338,7 +1371,7 @@ pub fn get_combos() -> Vec<Combo> {
Combo { components: Item::Restrict.combo(), item: Item::Restrict },
Combo { components: Item::RestrictPlus.combo(), item: Item::RestrictPlus },
Combo { components: Item::RestrictPlusPlus.combo(), item: Item::RestrictPlusPlus },
Combo { components: Item::Purge.combo(), item: Item::Purge }, // Needs flavour
Combo { components: Item::Purge.combo(), item: Item::Purge },
Combo { components: Item::PurgePlus.combo(), item: Item::PurgePlus },
Combo { components: Item::PurgePlusPlus.combo(), item: Item::PurgePlusPlus },
@@ -1556,20 +1589,13 @@ mod tests {
assert_eq!(Item::StrikePlus.components(), vec![
Item::Red, Item::Red, Item::Attack,
Item::Red, Item::Red, Item::Attack,
Item::Red, Item::Red, Item::Attack,
]);
assert_eq!(Item::StrikePlusPlus.components(), vec![
Item::Red, Item::Red, Item::Attack,
Item::Red, Item::Red, Item::Attack,
Item::Red, Item::Red, Item::Attack,
Item::Red, Item::Red, Item::Attack,
Item::Red, Item::Red, Item::Attack,
Item::Red, Item::Red, Item::Attack,
Item::Red, Item::Red, Item::Attack,
Item::Red, Item::Red, Item::Attack,
Item::Red, Item::Red, Item::Attack,
]);
}
+14 -8
View File
@@ -184,6 +184,7 @@ impl Player {
// do we have any colours in store?
let colours = self.vbox.store[&ItemType::Colours].keys()
.cloned()
.take(2)
.collect::<Vec<String>>();
// how about a base skill?
@@ -193,11 +194,13 @@ impl Player {
};
// if no: try to refill and start again
match colours.len() < 2 || base.is_none() {
true => match self.vbox_refill() {
Ok(_) => continue,
Err(_) => break, // give up
},
match colours.len() != 2 || base.is_none() {
true => {
match self.vbox_refill() {
Ok(_) => continue,
Err(_) => break, // give up
};
}
false => {
let mut vbox_items = HashMap::new();
vbox_items.insert(ItemType::Colours, colours);
@@ -230,7 +233,7 @@ impl Player {
// there's a bad bug here where if this apply fails
// the item in question will be silently dropped
let item = self.vbox.stash.remove(&i).unwrap();
self.vbox_apply(item, construct_id).ok();
self.vbox_apply(item, construct_id).unwrap();
continue;
}
// need to buy one
@@ -238,6 +241,7 @@ impl Player {
// do we have any colours in store?
let colours = self.vbox.store[&ItemType::Colours].keys()
.cloned()
.take(2)
.collect::<Vec<String>>();
// how about a base spec?
@@ -247,7 +251,7 @@ impl Player {
};
// if no: try to refill and start again
match colours.len() < 2 || base.is_none() {
match colours.len() != 2 || base.is_none() {
true => match self.vbox_refill() {
Ok(_) => continue,
Err(_) => break, // give up
@@ -446,9 +450,11 @@ mod tests {
let mut player = Player::new(player_account, &"test".to_string(), constructs).set_bot(true);
player.vbox.fill();
player.vbox.bits = 100;
player.autobuy();
assert!(player.constructs.iter().all(|c| c.skills.len() >= 1));
assert!(player.constructs.iter().all(|c| c.skills.len() > 1));
assert!(player.constructs.iter().all(|c| c.specs.len() >= 1));
}
#[test]
+58 -58
View File
@@ -758,87 +758,87 @@ impl Skill {
Skill::Attack => 80, // Base
Skill::Blast => 105, // BB
Skill::BlastPlus => 140, // BB
Skill::BlastPlusPlus => 200, // BB
Skill::BlastPlus => 125, // BB
Skill::BlastPlusPlus => 145, // BB
Skill::Chaos => 40, // BR
Skill::ChaosPlus => 65, // BR
Skill::ChaosPlusPlus => 90, // BR
Skill::ChaosPlus => 50, // BR
Skill::ChaosPlusPlus => 65, // BR
Skill::Heal => 125, //GG
Skill::HealPlus => 185, //GG
Skill::HealPlusPlus => 270, //GG
Skill::Heal => 115, //GG
Skill::HealPlus => 135, //GG
Skill::HealPlusPlus => 160, //GG
Skill::SiphonTick => 25, // GB
Skill::SiphonTickPlus => 30,
Skill::SiphonTickPlusPlus => 40,
Skill::SiphonTickPlus => 27,
Skill::SiphonTickPlusPlus => 30,
Skill::Slay => 45, // RG
Skill::SlayPlus => 65,
Skill::SlayPlusPlus => 100,
Skill::Slay => 40, // RG
Skill::SlayPlus => 50,
Skill::SlayPlusPlus => 65,
Skill::Strike => 90, //RR
Skill::StrikePlus => 140,
Skill::StrikePlusPlus => 200,
Skill::StrikePlus => 110,
Skill::StrikePlusPlus => 140,
// Block Base
Skill::ElectrocuteTick => 80,
Skill::ElectrocuteTickPlus => 100,
Skill::ElectrocuteTickPlusPlus => 130,
Skill::ElectrocuteTickPlus => 90,
Skill::ElectrocuteTickPlusPlus => 100,
Skill::CounterAttack => 120,
Skill::CounterAttackPlus => 160,
Skill::CounterAttackPlusPlus => 230,
Skill::CounterAttack => 115,
Skill::CounterAttackPlus => 130,
Skill::CounterAttackPlusPlus => 160,
Skill::Purify => 45, //Green dmg (heal)
Skill::PurifyPlus => 70,
Skill::PurifyPlusPlus => 105,
Skill::PurifyPlus => 60,
Skill::PurifyPlusPlus => 85,
Skill::Reflect => 45, //Recharge blue life (heal)
Skill::ReflectPlus => 70,
Skill::ReflectPlusPlus => 100,
Skill::Recharge => 70, //Recharge red and blue life (heal)
Skill::RechargePlus => 110,
Skill::RechargePlusPlus => 170,
Skill::RechargePlus => 90,
Skill::RechargePlusPlus => 110,
Skill::Sustain => 120, // Recharge red life (heal)
Skill::SustainPlus => 150,
Skill::SustainPlusPlus => 230,
Skill::Sustain => 110, // Recharge red life (heal)
Skill::SustainPlus => 130,
Skill::SustainPlusPlus => 150,
// Stun Base
Skill::Sleep => 200, //Green dmg (heal)
Skill::SleepPlus => 290,
Skill::SleepPlusPlus => 400,
Skill::Sleep => 160, //Green dmg (heal)
Skill::SleepPlus => 200,
Skill::SleepPlusPlus => 240,
Skill::Banish => 40, //Green dmg (heal)
Skill::BanishPlus => 75,
Skill::BanishPlusPlus => 125,
Skill::Banish => 50, //Green dmg (heal)
Skill::BanishPlus => 65,
Skill::BanishPlusPlus => 80,
Skill::Bash => 45,
Skill::BashPlus => 65,
Skill::BashPlusPlus => 100,
Skill::BashPlus => 55,
Skill::BashPlusPlus => 70,
Skill::Link => 25,
Skill::LinkPlus => 40,
Skill::LinkPlusPlus => 70,
Skill::LinkPlus => 35,
Skill::LinkPlusPlus => 45,
Skill::Ruin => 40,
Skill::RuinPlus => 70,
Skill::RuinPlusPlus => 100,
Skill::RuinPlus => 55,
Skill::RuinPlusPlus => 70,
// Debuff Base
Skill::DecayTick => 33,
Skill::DecayTickPlus => 45,
Skill::DecayTickPlusPlus => 70,
Skill::DecayTickPlus => 37,
Skill::DecayTickPlusPlus => 45,
Skill::Silence => 55, // Deals more per blue skill on target
Skill::SilencePlus => 80,
Skill::SilencePlusPlus => 110,
Skill::SilencePlus => 65,
Skill::SilencePlusPlus => 80,
Skill::Restrict => 40, // Deals more per red skill on target
Skill::RestrictPlus => 65,
Skill::RestrictPlusPlus => 100,
Skill::RestrictPlus => 55,
Skill::RestrictPlusPlus => 70,
// Buff base
Skill::HybridBlast => 50,
@@ -846,16 +846,16 @@ impl Skill {
Skill::HasteStrike => 60,
Skill::Absorb=> 95,
Skill::AbsorbPlus => 120,
Skill::AbsorbPlusPlus => 155,
Skill::AbsorbPlus => 110,
Skill::AbsorbPlusPlus => 120,
Skill::Intercept => 80,
Skill::InterceptPlus => 110,
Skill::InterceptPlusPlus => 150,
Skill::Intercept => 85,
Skill::InterceptPlus => 100,
Skill::InterceptPlusPlus => 125,
Skill::TriageTick => 75,
Skill::TriageTickPlus => 110,
Skill::TriageTickPlusPlus => 140,
Skill::TriageTickPlus => 90,
Skill::TriageTickPlusPlus => 110,
_ => 100,
}
@@ -899,9 +899,9 @@ impl Skill {
Skill::Curse => vec![ConstructEffect {effect: Effect::Curse, duration: 2,
meta: Some(EffectMeta::Multiplier(150)), tick: None}],
Skill::CursePlus => vec![ConstructEffect {effect: Effect::Curse, duration: 2,
meta: Some(EffectMeta::Multiplier(200)), tick: None}],
meta: Some(EffectMeta::Multiplier(175)), tick: None}],
Skill::CursePlusPlus => vec![ConstructEffect {effect: Effect::Curse, duration: 3,
meta: Some(EffectMeta::Multiplier(250)), tick: None}],
meta: Some(EffectMeta::Multiplier(200)), tick: None}],
Skill::Debuff => vec![ConstructEffect {effect: Effect::Slow, duration: 3,
meta: Some(EffectMeta::Multiplier(50)), tick: None }],
@@ -934,15 +934,15 @@ impl Skill {
meta: Some(EffectMeta::Skill(Skill::AbsorptionPlusPlus)), tick: None}],
Skill::Absorption => vec![ConstructEffect {effect: Effect::Absorption, duration: 3, meta: None, tick: None}],
Skill::AbsorptionPlus => vec![ConstructEffect {effect: Effect::Absorption, duration: 5, meta: None, tick: None}],
Skill::AbsorptionPlusPlus => vec![ConstructEffect {effect: Effect::Absorption, duration: 7, meta: None, tick: None}],
Skill::AbsorptionPlus => vec![ConstructEffect {effect: Effect::Absorption, duration: 4, meta: None, tick: None}],
Skill::AbsorptionPlusPlus => vec![ConstructEffect {effect: Effect::Absorption, duration: 5, meta: None, tick: None}],
Skill::Hybrid => vec![ConstructEffect {effect: Effect::Hybrid, duration: 3,
meta: Some(EffectMeta::Multiplier(150)), tick: None }],
Skill::HybridPlus => vec![ConstructEffect {effect: Effect::Hybrid, duration: 4,
meta: Some(EffectMeta::Multiplier(175)), tick: None }],
Skill::HybridPlusPlus => vec![ConstructEffect {effect: Effect::Hybrid, duration: 5,
meta: Some(EffectMeta::Multiplier(225)), tick: None }],
meta: Some(EffectMeta::Multiplier(200)), tick: None }],
Skill::Invert => vec![ConstructEffect {effect: Effect::Invert, duration: 2, meta: None, tick: None}],
Skill::InvertPlus => vec![ConstructEffect {effect: Effect::Invert, duration: 3, meta: None, tick: None}],
@@ -964,10 +964,10 @@ impl Skill {
meta: Some(EffectMeta::Multiplier(150)), tick: None}],
Skill::BreakPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None},
ConstructEffect {effect: Effect::Vulnerable, duration: 4,
meta: Some(EffectMeta::Multiplier(200)), tick: None}],
meta: Some(EffectMeta::Multiplier(175)), tick: None}],
Skill::BreakPlusPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None},
ConstructEffect {effect: Effect::Vulnerable, duration: 4,
meta: Some(EffectMeta::Multiplier(250)), tick: None}],
meta: Some(EffectMeta::Multiplier(200)), tick: None}],
Skill::Ruin => vec![ConstructEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}],
Skill::RuinPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}],
+124 -124
View File
@@ -172,34 +172,141 @@ impl Spec {
},
Spec::PowerRR=> SpecValues {
base: 25,
base: 10,
bonuses: vec![
SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 10 },
SpecBonus { req: Colours { red: 10, green: 0, blue: 0 }, bonus: 15 },
SpecBonus { req: Colours { red: 20, green: 0, blue: 0 }, bonus: 20 }
SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 5 },
SpecBonus { req: Colours { red: 10, green: 0, blue: 0 }, bonus: 9 },
SpecBonus { req: Colours { red: 20, green: 0, blue: 0 }, bonus: 13 }
],
},
Spec::PowerGG=> SpecValues {
base: 25,
base: 10,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 10 },
SpecBonus { req: Colours { red: 0, green: 10, blue: 0 }, bonus: 15 },
SpecBonus { req: Colours { red: 0, green: 20, blue: 0 }, bonus: 20 }
SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 5 },
SpecBonus { req: Colours { red: 0, green: 10, blue: 0 }, bonus: 9 },
SpecBonus { req: Colours { red: 0, green: 20, blue: 0 }, bonus: 13 }
],
},
Spec::PowerBB=> SpecValues {
base: 25,
base: 10,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 10 },
SpecBonus { req: Colours { red: 0, green: 0, blue: 10 }, bonus: 15 },
SpecBonus { req: Colours { red: 0, green: 0, blue: 20 }, bonus: 20 }
SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 5 },
SpecBonus { req: Colours { red: 0, green: 0, blue: 10 }, bonus: 9 },
SpecBonus { req: Colours { red: 0, green: 0, blue: 20 }, bonus: 13 }
],
},
Spec::PowerRG=> SpecValues {
base: 20,
base: 10,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 2, blue: 0 }, bonus: 3 },
SpecBonus { req: Colours { red: 5, green: 5, blue: 0 }, bonus: 6 },
SpecBonus { req: Colours { red: 10, green: 10, blue: 0 }, bonus: 9 }
],
},
Spec::PowerGB=> SpecValues {
base: 10,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 2, blue: 2 }, bonus: 3 },
SpecBonus { req: Colours { red: 0, green: 5, blue: 5 }, bonus: 6 },
SpecBonus { req: Colours { red: 0, green: 10, blue: 10 }, bonus: 9 }
],
},
Spec::PowerRB=> SpecValues {
base: 10,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 0, blue: 2 }, bonus: 3 },
SpecBonus { req: Colours { red: 5, green: 0, blue: 5 }, bonus: 6 },
SpecBonus { req: Colours { red: 10, green: 0, blue: 10 }, bonus: 9 }
],
},
Spec::PowerRRPlus => SpecValues {
base: 15,
bonuses: vec![
SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 6 },
SpecBonus { req: Colours { red: 10, green: 0, blue: 0 }, bonus: 12 },
SpecBonus { req: Colours { red: 20, green: 0, blue: 0 }, bonus: 18 }
],
},
Spec::PowerGGPlus => SpecValues {
base: 15,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 6 },
SpecBonus { req: Colours { red: 0, green: 10, blue: 0 }, bonus: 12 },
SpecBonus { req: Colours { red: 0, green: 20, blue: 0 }, bonus: 18 }
],
},
Spec::PowerBBPlus => SpecValues {
base: 15,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 6 },
SpecBonus { req: Colours { red: 0, green: 0, blue: 10 }, bonus: 12 },
SpecBonus { req: Colours { red: 0, green: 0, blue: 20 }, bonus: 18 }
],
},
Spec::PowerRGPlus => SpecValues {
base: 15,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 2, blue: 0 }, bonus: 4 },
SpecBonus { req: Colours { red: 5, green: 5, blue: 0 }, bonus: 8 },
SpecBonus { req: Colours { red: 10, green: 10, blue: 0 }, bonus: 12 }
],
},
Spec::PowerGBPlus => SpecValues {
base: 15,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 2, blue: 2 }, bonus: 4 },
SpecBonus { req: Colours { red: 0, green: 5, blue: 5 }, bonus: 8 },
SpecBonus { req: Colours { red: 0, green: 10, blue: 10 }, bonus: 12 }
],
},
Spec::PowerRBPlus => SpecValues {
base: 15,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 0, blue: 2 }, bonus: 4 },
SpecBonus { req: Colours { red: 5, green: 0, blue: 5 }, bonus: 8 },
SpecBonus { req: Colours { red: 10, green: 0, blue: 10 }, bonus: 12 }
],
},
Spec::PowerRRPlusPlus => SpecValues {
base: 25,
bonuses: vec![
SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 8 },
SpecBonus { req: Colours { red: 10, green: 0, blue: 0 }, bonus: 16 },
SpecBonus { req: Colours { red: 20, green: 0, blue: 0 }, bonus: 24 }
],
},
Spec::PowerGGPlusPlus => SpecValues {
base: 25,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 8 },
SpecBonus { req: Colours { red: 0, green: 10, blue: 0 }, bonus: 16 },
SpecBonus { req: Colours { red: 0, green: 20, blue: 0 }, bonus: 24 }
],
},
Spec::PowerBBPlusPlus => SpecValues {
base: 25,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 8 },
SpecBonus { req: Colours { red: 0, green: 0, blue: 10 }, bonus: 16 },
SpecBonus { req: Colours { red: 0, green: 0, blue: 20 }, bonus: 24 }
],
},
Spec::PowerRGPlusPlus => SpecValues {
base: 25,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 2, blue: 0 }, bonus: 5 },
SpecBonus { req: Colours { red: 5, green: 5, blue: 0 }, bonus: 10 },
@@ -207,8 +314,8 @@ impl Spec {
],
},
Spec::PowerGB=> SpecValues {
base: 20,
Spec::PowerGBPlusPlus => SpecValues {
base: 25,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 2, blue: 2 }, bonus: 5 },
SpecBonus { req: Colours { red: 0, green: 5, blue: 5 }, bonus: 10 },
@@ -216,8 +323,8 @@ impl Spec {
],
},
Spec::PowerRB=> SpecValues {
base: 20,
Spec::PowerRBPlusPlus => SpecValues {
base: 25,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 0, blue: 2 }, bonus: 5 },
SpecBonus { req: Colours { red: 5, green: 0, blue: 5 }, bonus: 10 },
@@ -225,113 +332,6 @@ impl Spec {
],
},
Spec::PowerRRPlus => SpecValues {
base: 45,
bonuses: vec![
SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 15 },
SpecBonus { req: Colours { red: 10, green: 0, blue: 0 }, bonus: 25 },
SpecBonus { req: Colours { red: 20, green: 0, blue: 0 }, bonus: 35 }
],
},
Spec::PowerGGPlus => SpecValues {
base: 45,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 15 },
SpecBonus { req: Colours { red: 0, green: 10, blue: 0 }, bonus: 25 },
SpecBonus { req: Colours { red: 0, green: 20, blue: 0 }, bonus: 35 }
],
},
Spec::PowerBBPlus => SpecValues {
base: 45,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 15 },
SpecBonus { req: Colours { red: 0, green: 0, blue: 10 }, bonus: 25 },
SpecBonus { req: Colours { red: 0, green: 0, blue: 20 }, bonus: 35 }
],
},
Spec::PowerRGPlus => SpecValues {
base: 35,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 2, blue: 0 }, bonus: 10 },
SpecBonus { req: Colours { red: 5, green: 5, blue: 0 }, bonus: 20 },
SpecBonus { req: Colours { red: 10, green: 10, blue: 0 }, bonus: 25 }
],
},
Spec::PowerGBPlus => SpecValues {
base: 35,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 2, blue: 2 }, bonus: 10 },
SpecBonus { req: Colours { red: 0, green: 5, blue: 5 }, bonus: 20 },
SpecBonus { req: Colours { red: 0, green: 10, blue: 10 }, bonus: 25 }
],
},
Spec::PowerRBPlus => SpecValues {
base: 35,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 0, blue: 2 }, bonus: 10 },
SpecBonus { req: Colours { red: 5, green: 0, blue: 5 }, bonus: 20 },
SpecBonus { req: Colours { red: 10, green: 0, blue: 10 }, bonus: 25 }
],
},
Spec::PowerRRPlusPlus => SpecValues {
base: 80,
bonuses: vec![
SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 25 },
SpecBonus { req: Colours { red: 10, green: 0, blue: 0 }, bonus: 45 },
SpecBonus { req: Colours { red: 20, green: 0, blue: 0 }, bonus: 60 }
],
},
Spec::PowerGGPlusPlus => SpecValues {
base: 80,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 25 },
SpecBonus { req: Colours { red: 0, green: 10, blue: 0 }, bonus: 45 },
SpecBonus { req: Colours { red: 0, green: 20, blue: 0 }, bonus: 60 }
],
},
Spec::PowerBBPlusPlus => SpecValues {
base: 80,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 25 },
SpecBonus { req: Colours { red: 0, green: 0, blue: 10 }, bonus: 45 },
SpecBonus { req: Colours { red: 0, green: 0, blue: 20 }, bonus: 60 }
],
},
Spec::PowerRGPlusPlus => SpecValues {
base: 60,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 2, blue: 0 }, bonus: 20 },
SpecBonus { req: Colours { red: 5, green: 5, blue: 0 }, bonus: 30 },
SpecBonus { req: Colours { red: 10, green: 10, blue: 0 }, bonus: 45 }
],
},
Spec::PowerGBPlusPlus => SpecValues {
base: 60,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 2, blue: 2 }, bonus: 20 },
SpecBonus { req: Colours { red: 0, green: 5, blue: 5 }, bonus: 30 },
SpecBonus { req: Colours { red: 0, green: 10, blue: 10 }, bonus: 45 }
],
},
Spec::PowerRBPlusPlus => SpecValues {
base: 60,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 0, blue: 2 }, bonus: 20 },
SpecBonus { req: Colours { red: 5, green: 0, blue: 5 }, bonus: 30 },
SpecBonus { req: Colours { red: 10, green: 0, blue: 10 }, bonus: 45 }
],
},
Spec::Speed => SpecValues {
base: 40,
bonuses: vec![]