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

This commit is contained in:
ntr 2019-06-10 19:58:11 +10:00
commit f22a033230
3 changed files with 751 additions and 83 deletions

View File

@ -945,9 +945,9 @@ mod tests {
construct.apply_modifiers(&player_colours);
assert!(construct.red_power.value == construct.red_power.base + construct.red_power.base.pct(80));
assert!(construct.green_power.value == construct.green_power.base + construct.green_power.base.pct(120));
assert!(construct.blue_power.value == construct.blue_power.base + construct.blue_power.base.pct(160));
assert!(construct.red_power.value == construct.red_power.base + construct.red_power.base.pct(50));
assert!(construct.green_power.value == construct.green_power.base + construct.green_power.base.pct(75));
assert!(construct.blue_power.value == construct.blue_power.base + construct.blue_power.base.pct(100));
return;
}
@ -968,10 +968,10 @@ mod tests {
construct.apply_modifiers(&player_colours);
assert!(construct.red_power.value == construct.red_power.base + construct.red_power.base.pct(20));
assert!(construct.green_power.value == construct.green_power.base + construct.green_power.base.pct(20));
assert!(construct.blue_power.value == construct.blue_power.base + construct.blue_power.base.pct(20));
assert!(construct.green_life.value == construct.green_life.base + 150);
assert!(construct.red_power.value == construct.red_power.base + construct.red_power.base.pct(10));
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));
assert!(construct.green_life.value == construct.green_life.base + 100);
return;
}
@ -1017,9 +1017,9 @@ mod tests {
construct.apply_modifiers(&player_colours);
assert!(construct.red_power.value == construct.red_power.base + construct.red_power.base.pct(60));
assert!(construct.green_power.value == construct.green_power.base + construct.green_power.base.pct(40));
assert!(construct.blue_power.value == construct.blue_power.base + construct.blue_power.base.pct(40));
assert!(construct.red_power.value == construct.red_power.base + construct.red_power.base.pct(50));
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));
return;
}

View File

@ -30,6 +30,18 @@ pub enum Item {
LifeRGI,
LifeGBI,
LifeRBI,
LifeGGII,
LifeRRII,
LifeBBII,
LifeRGII,
LifeGBII,
LifeRBII,
LifeGGIII,
LifeRRIII,
LifeBBIII,
LifeRGIII,
LifeGBIII,
LifeRBIII,
// Power Upgrades
PowerRRI,
@ -38,6 +50,18 @@ pub enum Item {
PowerRGI,
PowerGBI,
PowerRBI,
PowerRRII,
PowerGGII,
PowerBBII,
PowerRGII,
PowerGBII,
PowerRBII,
PowerRRIII,
PowerBBIII,
PowerGGIII,
PowerRGIII,
PowerGBIII,
PowerRBIII,
// Speed Upgrades
SpeedRRI,
@ -47,6 +71,20 @@ pub enum Item {
SpeedGBI,
SpeedRBI,
SpeedRRII,
SpeedBBII,
SpeedGGII,
SpeedRGII,
SpeedGBII,
SpeedRBII,
SpeedRRIII,
SpeedBBIII,
SpeedGGIII,
SpeedRGIII,
SpeedGBIII,
SpeedRBIII,
AmplifyI,
AmplifyII,
AmplifyIII,
@ -361,31 +399,69 @@ impl Item {
pub fn into_spec(&self) -> Option<Spec> {
match *self {
Item::Speed => Some(Spec::Speed),
Item::SpeedRRI => Some(Spec::SpeedRRI),
Item::SpeedBBI => Some(Spec::SpeedBBI),
Item::SpeedGGI => Some(Spec::SpeedGGI),
Item::SpeedRGI => Some(Spec::SpeedRGI),
Item::SpeedGBI => Some(Spec::SpeedGBI),
Item::SpeedRBI => Some(Spec::SpeedRBI),
Item::Speed => Some(Spec::Speed),
Item::SpeedRRI => Some(Spec::SpeedRRI),
Item::SpeedBBI => Some(Spec::SpeedBBI),
Item::SpeedGGI => Some(Spec::SpeedGGI),
Item::SpeedRGI => Some(Spec::SpeedRGI),
Item::SpeedGBI => Some(Spec::SpeedGBI),
Item::SpeedRBI => Some(Spec::SpeedRBI),
Item::Power => Some(Spec::Power),
Item::PowerRRI => Some(Spec::PowerRRI),
Item::PowerBBI => Some(Spec::PowerBBI),
Item::SpeedRRII => Some(Spec::SpeedRRII),
Item::SpeedBBII => Some(Spec::SpeedBBII),
Item::SpeedGGII => Some(Spec::SpeedGGII),
Item::SpeedRGII => Some(Spec::SpeedRGII),
Item::SpeedGBII => Some(Spec::SpeedGBII),
Item::SpeedRBII => Some(Spec::SpeedRBII),
Item::SpeedRRIII => Some(Spec::SpeedRRIII),
Item::SpeedBBIII => Some(Spec::SpeedBBIII),
Item::SpeedGGIII => Some(Spec::SpeedGGIII),
Item::SpeedRGIII => Some(Spec::SpeedRGIII),
Item::SpeedGBIII => Some(Spec::SpeedGBIII),
Item::SpeedRBIII => Some(Spec::SpeedRBIII),
Item::Power => Some(Spec::Power),
Item::PowerRRI => Some(Spec::PowerRRI),
Item::PowerBBI => Some(Spec::PowerBBI),
Item::PowerGGI => Some(Spec::PowerGGI),
Item::PowerRGI => Some(Spec::PowerRGI),
Item::PowerGBI => Some(Spec::PowerGBI),
Item::PowerRBI => Some(Spec::PowerRBI),
Item::PowerRGI => Some(Spec::PowerRGI),
Item::PowerGBI => Some(Spec::PowerGBI),
Item::PowerRBI => Some(Spec::PowerRBI),
Item::PowerRRII => Some(Spec::PowerRRII),
Item::PowerBBII => Some(Spec::PowerBBII),
Item::PowerGGII => Some(Spec::PowerGGII),
Item::PowerRGII => Some(Spec::PowerRGII),
Item::PowerGBII => Some(Spec::PowerGBII),
Item::PowerRBII => Some(Spec::PowerRBII),
Item::PowerRRIII => Some(Spec::PowerRRIII),
Item::PowerBBIII => Some(Spec::PowerBBIII),
Item::PowerGGIII => Some(Spec::PowerGGIII),
Item::PowerRGIII => Some(Spec::PowerRGIII),
Item::PowerGBIII => Some(Spec::PowerGBIII),
Item::PowerRBIII => Some(Spec::PowerRBIII),
Item::Life => Some(Spec::Life),
Item::LifeRGI => Some(Spec::LifeRGI),
Item::LifeGBI => Some(Spec::LifeGBI),
Item::LifeRBI => Some(Spec::LifeRBI),
Item::LifeGGI => Some(Spec::LifeGGI),
Item::LifeRRI => Some(Spec::LifeRRI),
Item::LifeBBI => Some(Spec::LifeBBI),
Item::Life => Some(Spec::Life),
Item::LifeRGI => Some(Spec::LifeRGI),
Item::LifeGBI => Some(Spec::LifeGBI),
Item::LifeRBI => Some(Spec::LifeRBI),
Item::LifeGGI => Some(Spec::LifeGGI),
Item::LifeRRI => Some(Spec::LifeRRI),
Item::LifeBBI => Some(Spec::LifeBBI),
Item::LifeRGII => Some(Spec::LifeRGII),
Item::LifeGBII => Some(Spec::LifeGBII),
Item::LifeRBII => Some(Spec::LifeRBII),
Item::LifeGGII => Some(Spec::LifeGGII),
Item::LifeRRII => Some(Spec::LifeRRII),
Item::LifeBBII => Some(Spec::LifeBBII),
Item::LifeRGIII => Some(Spec::LifeRGIII),
Item::LifeGBIII => Some(Spec::LifeGBIII),
Item::LifeRBIII => Some(Spec::LifeRBIII),
Item::LifeGGIII => Some(Spec::LifeGGIII),
Item::LifeRRIII => Some(Spec::LifeRRIII),
Item::LifeBBIII => Some(Spec::LifeBBIII),
_ => None,
_ => None,
}
}
@ -437,6 +513,24 @@ impl Item {
Item::LifeRGI => format!("Increases CONSTRUCT GreenLife + RedLife"),
Item::LifeGBI => format!("Increases CONSTRUCT GreenLife + BlueLife"),
Item::LifeRBI => format!("Increases CONSTRUCT RedLife + BlueLife"),
Item::LifeGGII => format!("Increases CONSTRUCT GreenLife.
When your CONSTRUCT reaches 0 GreenLife it becomes KO and cannot cast SKILLS."),
Item::LifeRRII => format!("Increases CONSTRUCT RedLife.
RedDamage dealt to your construct reduces RedLife before GreenLife."),
Item::LifeBBII => format!("Increases CONSTRUCT BlueLife.
BlueDamage dealt to your construct reduces BlueLife before GreenLife."),
Item::LifeRGII => format!("Increases CONSTRUCT GreenLife + RedLife"),
Item::LifeGBII => format!("Increases CONSTRUCT GreenLife + BlueLife"),
Item::LifeRBII => format!("Increases CONSTRUCT RedLife + BlueLife"),
Item::LifeGGIII => format!("Increases CONSTRUCT GreenLife.
When your CONSTRUCT reaches 0 GreenLife it becomes KO and cannot cast SKILLS."),
Item::LifeRRIII => format!("Increases CONSTRUCT RedLife.
RedDamage dealt to your construct reduces RedLife before GreenLife."),
Item::LifeBBIII => format!("Increases CONSTRUCT BlueLife.
BlueDamage dealt to your construct reduces BlueLife before GreenLife."),
Item::LifeRGIII => format!("Increases CONSTRUCT GreenLife + RedLife"),
Item::LifeGBIII => format!("Increases CONSTRUCT GreenLife + BlueLife"),
Item::LifeRBIII => format!("Increases CONSTRUCT RedLife + BlueLife"),
// Power Upgrades
Item::PowerRRI => format!("Increases CONSTRUCT RedPower."),
@ -445,14 +539,38 @@ impl Item {
Item::PowerRGI => format!("Increases CONSTRUCT GreenPower + RedPower."),
Item::PowerGBI => format!("Increases CONSTRUCT GreenPower + BluePower."),
Item::PowerRBI => format!("Increases CONSTRUCT RedPower + BluePower."),
Item::PowerRRII => format!("Increases CONSTRUCT RedPower."),
Item::PowerBBII => format!("Increases CONSTRUCT BluePower."),
Item::PowerGGII => format!("Increases CONSTRUCT GreenPower."),
Item::PowerRGII => format!("Increases CONSTRUCT GreenPower + RedPower."),
Item::PowerGBII => format!("Increases CONSTRUCT GreenPower + BluePower."),
Item::PowerRBII => format!("Increases CONSTRUCT RedPower + BluePower."),
Item::PowerRRIII => format!("Increases CONSTRUCT RedPower."),
Item::PowerBBIII => format!("Increases CONSTRUCT BluePower."),
Item::PowerGGIII => format!("Increases CONSTRUCT GreenPower."),
Item::PowerRGIII => format!("Increases CONSTRUCT GreenPower + RedPower."),
Item::PowerGBIII => format!("Increases CONSTRUCT GreenPower + BluePower."),
Item::PowerRBIII => format!("Increases CONSTRUCT RedPower + BluePower."),
// Speed Upgrades
Item::SpeedRRI => format!("Increases CONSTRUCT SPEED and provides COLOUR BONUSES"),
Item::SpeedBBI => format!("Increases CONSTRUCT SPEED and provides COLOUR BONUSES"),
Item::SpeedGGI => format!("Increases CONSTRUCT SPEED and provides COLOUR BONUSES"),
Item::SpeedRGI => format!("Increases CONSTRUCT SPEED and provides COLOUR BONUSES"),
Item::SpeedGBI => format!("Increases CONSTRUCT SPEED and provides COLOUR BONUSES"),
Item::SpeedRBI => format!("Increases CONSTRUCT SPEED and provides COLOUR BONUSES"),
Item::SpeedRRI |
Item::SpeedBBI |
Item::SpeedGGI |
Item::SpeedRGI |
Item::SpeedGBI |
Item::SpeedRBI |
Item::SpeedRRII |
Item::SpeedBBII |
Item::SpeedGGII |
Item::SpeedRGII |
Item::SpeedGBII |
Item::SpeedRBII |
Item::SpeedRRIII |
Item::SpeedBBIII |
Item::SpeedGGIII |
Item::SpeedRGIII |
Item::SpeedGBIII |
Item::SpeedRBIII => format!("Increases CONSTRUCT SPEED and provides COLOUR BONUSES"),
// Skills <- need to move effect mulltipliers into skills
Item::AmplifyI |
@ -770,6 +888,18 @@ impl Item {
Item::PowerRGI => vec![Item::Power, Item::Red, Item::Green],
Item::PowerGBI => vec![Item::Power, Item::Green, Item::Blue],
Item::PowerRBI => vec![Item::Power, Item::Red, Item::Blue],
Item::PowerRRII => vec![Item::PowerRRI, Item::PowerRRI, Item::PowerRRI],
Item::PowerGGII => vec![Item::PowerGGI, Item::PowerGGI, Item::PowerGGI],
Item::PowerBBII => vec![Item::PowerBBI, Item::PowerBBI, Item::PowerBBI],
Item::PowerRGII => vec![Item::PowerRGI, Item::PowerRGI, Item::PowerRGI],
Item::PowerGBII => vec![Item::PowerGBI, Item::PowerGBI, Item::PowerGBI],
Item::PowerRBII => vec![Item::PowerRBI, Item::PowerRBI, Item::PowerRBI],
Item::PowerRRIII => vec![Item::PowerRRII, Item::PowerRRII, Item::PowerRRII],
Item::PowerGGIII => vec![Item::PowerGGII, Item::PowerGGII, Item::PowerGGII],
Item::PowerBBIII => vec![Item::PowerBBII, Item::PowerBBII, Item::PowerBBII],
Item::PowerRGIII => vec![Item::PowerRGII, Item::PowerRGII, Item::PowerRGII],
Item::PowerGBIII => vec![Item::PowerGBII, Item::PowerGBII, Item::PowerGBII],
Item::PowerRBIII => vec![Item::PowerRBII, Item::PowerRBII, Item::PowerRBII],
Item::LifeRRI => vec![Item::Life, Item::Red, Item::Red],
Item::LifeGGI => vec![Item::Life, Item::Green, Item::Green],
@ -777,6 +907,20 @@ impl Item {
Item::LifeRGI => vec![Item::Life, Item::Red, Item::Green],
Item::LifeGBI => vec![Item::Life, Item::Green, Item::Blue],
Item::LifeRBI => vec![Item::Life, Item::Red, Item::Blue],
Item::LifeRRII => vec![Item::LifeRRI, Item::LifeRRI, Item::LifeRRI],
Item::LifeGGII => vec![Item::LifeGGI, Item::LifeGGI, Item::LifeGGI],
Item::LifeBBII => vec![Item::LifeBBI, Item::LifeBBI, Item::LifeBBI],
Item::LifeRGII => vec![Item::LifeRGI, Item::LifeRGI, Item::LifeRGI],
Item::LifeGBII => vec![Item::LifeGBI, Item::LifeGBI, Item::LifeGBI],
Item::LifeRBII => vec![Item::LifeRBI, Item::LifeRBI, Item::LifeRBI],
Item::LifeRRIII => vec![Item::LifeRRII, Item::LifeRRII, Item::LifeRRII],
Item::LifeGGIII => vec![Item::LifeGGII, Item::LifeGGII, Item::LifeGGII],
Item::LifeBBIII => vec![Item::LifeBBII, Item::LifeBBII, Item::LifeBBII],
Item::LifeRGIII => vec![Item::LifeRGII, Item::LifeRGII, Item::LifeRGII],
Item::LifeGBIII => vec![Item::LifeGBII, Item::LifeGBII, Item::LifeGBII],
Item::LifeRBIII => vec![Item::LifeRBII, Item::LifeRBII, Item::LifeRBII],
Item::SpeedRRI => vec![Item::Speed, Item::Red, Item::Red],
Item::SpeedGGI => vec![Item::Speed, Item::Green, Item::Green],
@ -785,6 +929,20 @@ impl Item {
Item::SpeedGBI => vec![Item::Speed, Item::Green, Item::Blue],
Item::SpeedRBI => vec![Item::Speed, Item::Red, Item::Blue],
Item::SpeedRRII => vec![Item::SpeedRRI, Item::SpeedRRI, Item::SpeedRRI],
Item::SpeedGGII => vec![Item::SpeedGGI, Item::SpeedGGI, Item::SpeedGGI],
Item::SpeedBBII => vec![Item::SpeedBBI, Item::SpeedBBI, Item::SpeedBBI],
Item::SpeedRGII => vec![Item::SpeedRGI, Item::SpeedRGI, Item::SpeedRGI],
Item::SpeedGBII => vec![Item::SpeedGBI, Item::SpeedGBI, Item::SpeedGBI],
Item::SpeedRBII => vec![Item::SpeedRBI, Item::SpeedRBI, Item::SpeedRBI],
Item::SpeedRRIII => vec![Item::SpeedRRII, Item::SpeedRRII, Item::SpeedRRII],
Item::SpeedGGIII => vec![Item::SpeedGGII, Item::SpeedGGII, Item::SpeedGGII],
Item::SpeedBBIII => vec![Item::SpeedBBII, Item::SpeedBBII, Item::SpeedBBII],
Item::SpeedRGIII => vec![Item::SpeedRGII, Item::SpeedRGII, Item::SpeedRGII],
Item::SpeedGBIII => vec![Item::SpeedGBII, Item::SpeedGBII, Item::SpeedGBII],
Item::SpeedRBIII => vec![Item::SpeedRBII, Item::SpeedRBII, Item::SpeedRBII],
_ => vec![*self],
}
}
@ -931,6 +1089,20 @@ impl From<Spec> for Item {
Spec::SpeedGBI => Item::SpeedGBI,
Spec::SpeedRBI => Item::SpeedRBI,
Spec::SpeedRRII => Item::SpeedRRII,
Spec::SpeedBBII => Item::SpeedBBII,
Spec::SpeedGGII => Item::SpeedGGII,
Spec::SpeedRGII => Item::SpeedRGII,
Spec::SpeedGBII => Item::SpeedGBII,
Spec::SpeedRBII => Item::SpeedRBII,
Spec::SpeedRRIII => Item::SpeedRRIII,
Spec::SpeedBBIII => Item::SpeedBBIII,
Spec::SpeedGGIII => Item::SpeedGGIII,
Spec::SpeedRGIII => Item::SpeedRGIII,
Spec::SpeedGBIII => Item::SpeedGBIII,
Spec::SpeedRBIII => Item::SpeedRBIII,
Spec::Power => Item::Power,
Spec::PowerRRI => Item::PowerRRI,
Spec::PowerBBI => Item::PowerBBI,
@ -938,6 +1110,18 @@ impl From<Spec> for Item {
Spec::PowerRGI => Item::PowerRGI,
Spec::PowerGBI => Item::PowerGBI,
Spec::PowerRBI => Item::PowerRBI,
Spec::PowerRRII => Item::PowerRRII,
Spec::PowerBBII => Item::PowerBBII,
Spec::PowerGGII => Item::PowerGGII,
Spec::PowerRGII => Item::PowerRGII,
Spec::PowerGBII => Item::PowerGBII,
Spec::PowerRBII => Item::PowerRBII,
Spec::PowerRRIII => Item::PowerRRIII,
Spec::PowerBBIII => Item::PowerBBIII,
Spec::PowerGGIII => Item::PowerGGIII,
Spec::PowerRGIII => Item::PowerRGIII,
Spec::PowerGBIII => Item::PowerGBIII,
Spec::PowerRBIII => Item::PowerRBIII,
Spec::Life => Item::Life,
Spec::LifeRGI => Item::LifeRGI,
@ -946,6 +1130,19 @@ impl From<Spec> for Item {
Spec::LifeGGI => Item::LifeGGI,
Spec::LifeRRI => Item::LifeRRI,
Spec::LifeBBI => Item::LifeBBI,
Spec::LifeRGII => Item::LifeRGII,
Spec::LifeGBII => Item::LifeGBII,
Spec::LifeRBII => Item::LifeRBII,
Spec::LifeGGII => Item::LifeGGII,
Spec::LifeRRII => Item::LifeRRII,
Spec::LifeBBII => Item::LifeBBII,
Spec::LifeRGIII => Item::LifeRGIII,
Spec::LifeGBIII => Item::LifeGBIII,
Spec::LifeRBIII => Item::LifeRBIII,
Spec::LifeGGIII => Item::LifeGGIII,
Spec::LifeRRIII => Item::LifeRRIII,
Spec::LifeBBIII => Item::LifeBBIII,
// _ => panic!("{:?} not implemented as a item", spec),
}
}
@ -1071,27 +1268,62 @@ pub fn get_combos() -> Vec<Combo> {
Combo { components: Item::ChaosII.combo(), item: Item::ChaosII },
Combo { components: Item::ChaosIII.combo(), item: Item::ChaosIII },
Combo { components: Item::PowerRRI.combo(), item: Item::PowerRRI },
Combo { components: Item::PowerGGI.combo(), item: Item::PowerGGI },
Combo { components: Item::PowerBBI.combo(), item: Item::PowerBBI },
Combo { components: Item::PowerRGI.combo(), item: Item::PowerRGI },
Combo { components: Item::PowerGBI.combo(), item: Item::PowerGBI },
Combo { components: Item::PowerRBI.combo(), item: Item::PowerRBI },
Combo { components: Item::PowerRRI.combo(), item: Item::PowerRRI },
Combo { components: Item::PowerGGI.combo(), item: Item::PowerGGI },
Combo { components: Item::PowerBBI.combo(), item: Item::PowerBBI },
Combo { components: Item::PowerRGI.combo(), item: Item::PowerRGI },
Combo { components: Item::PowerGBI.combo(), item: Item::PowerGBI },
Combo { components: Item::PowerRBI.combo(), item: Item::PowerRBI },
Combo { components: Item::PowerRRII.combo(), item: Item::PowerRRII },
Combo { components: Item::PowerGGII.combo(), item: Item::PowerGGII },
Combo { components: Item::PowerBBII.combo(), item: Item::PowerBBII },
Combo { components: Item::PowerRGII.combo(), item: Item::PowerRGII },
Combo { components: Item::PowerGBII.combo(), item: Item::PowerGBII },
Combo { components: Item::PowerRBII.combo(), item: Item::PowerRBII },
Combo { components: Item::PowerRRIII.combo(), item: Item::PowerRRIII },
Combo { components: Item::PowerGGIII.combo(), item: Item::PowerGGIII },
Combo { components: Item::PowerBBIII.combo(), item: Item::PowerBBIII },
Combo { components: Item::PowerRGIII.combo(), item: Item::PowerRGIII },
Combo { components: Item::PowerGBIII.combo(), item: Item::PowerGBIII },
Combo { components: Item::PowerRBIII.combo(), item: Item::PowerRBIII },
Combo { components: Item::LifeRRI.combo(), item: Item::LifeRRI },
Combo { components: Item::LifeGGI.combo(), item: Item::LifeGGI },
Combo { components: Item::LifeBBI.combo(), item: Item::LifeBBI },
Combo { components: Item::LifeRGI.combo(), item: Item::LifeRGI },
Combo { components: Item::LifeGBI.combo(), item: Item::LifeGBI },
Combo { components: Item::LifeRBI.combo(), item: Item::LifeRBI },
Combo { components: Item::SpeedRRI.combo(), item: Item::SpeedRRI },
Combo { components: Item::SpeedGGI.combo(), item: Item::SpeedGGI },
Combo { components: Item::SpeedBBI.combo(), item: Item::SpeedBBI },
Combo { components: Item::SpeedRGI.combo(), item: Item::SpeedRGI },
Combo { components: Item::SpeedGBI.combo(), item: Item::SpeedGBI },
Combo { components: Item::SpeedRBI.combo(), item: Item::SpeedRBI },
Combo { components: Item::LifeRRI.combo(), item: Item::LifeRRI },
Combo { components: Item::LifeGGI.combo(), item: Item::LifeGGI },
Combo { components: Item::LifeBBI.combo(), item: Item::LifeBBI },
Combo { components: Item::LifeRGI.combo(), item: Item::LifeRGI },
Combo { components: Item::LifeGBI.combo(), item: Item::LifeGBI },
Combo { components: Item::LifeRBI.combo(), item: Item::LifeRBI },
Combo { components: Item::LifeRRII.combo(), item: Item::LifeRRII },
Combo { components: Item::LifeGGII.combo(), item: Item::LifeGGII },
Combo { components: Item::LifeBBII.combo(), item: Item::LifeBBII },
Combo { components: Item::LifeRGII.combo(), item: Item::LifeRGII },
Combo { components: Item::LifeGBII.combo(), item: Item::LifeGBII },
Combo { components: Item::LifeRBII.combo(), item: Item::LifeRBII },
Combo { components: Item::LifeRRIII.combo(), item: Item::LifeRRIII },
Combo { components: Item::LifeGGIII.combo(), item: Item::LifeGGIII },
Combo { components: Item::LifeBBIII.combo(), item: Item::LifeBBIII },
Combo { components: Item::LifeRGIII.combo(), item: Item::LifeRGIII },
Combo { components: Item::LifeGBIII.combo(), item: Item::LifeGBIII },
Combo { components: Item::LifeRBIII.combo(), item: Item::LifeRBIII },
Combo { components: Item::SpeedRRI.combo(), item: Item::SpeedRRI },
Combo { components: Item::SpeedGGI.combo(), item: Item::SpeedGGI },
Combo { components: Item::SpeedBBI.combo(), item: Item::SpeedBBI },
Combo { components: Item::SpeedRGI.combo(), item: Item::SpeedRGI },
Combo { components: Item::SpeedGBI.combo(), item: Item::SpeedGBI },
Combo { components: Item::SpeedRBI.combo(), item: Item::SpeedRBI },
Combo { components: Item::SpeedRRII.combo(), item: Item::SpeedRRII },
Combo { components: Item::SpeedGGII.combo(), item: Item::SpeedGGII },
Combo { components: Item::SpeedBBII.combo(), item: Item::SpeedBBII },
Combo { components: Item::SpeedRGII.combo(), item: Item::SpeedRGII },
Combo { components: Item::SpeedGBII.combo(), item: Item::SpeedGBII },
Combo { components: Item::SpeedRBII.combo(), item: Item::SpeedRBII },
Combo { components: Item::SpeedRRIII.combo(), item: Item::SpeedRRIII },
Combo { components: Item::SpeedGGIII.combo(), item: Item::SpeedGGIII },
Combo { components: Item::SpeedBBIII.combo(), item: Item::SpeedBBIII },
Combo { components: Item::SpeedRGIII.combo(), item: Item::SpeedRGIII },
Combo { components: Item::SpeedGBIII.combo(), item: Item::SpeedGBIII },
Combo { components: Item::SpeedRBIII.combo(), item: Item::SpeedRBIII },
];
combinations.iter_mut().for_each(|set| set.components.sort_unstable());

View File

@ -45,6 +45,20 @@ pub enum Spec {
SpeedGBI,
SpeedRBI,
SpeedRRII,
SpeedBBII,
SpeedGGII,
SpeedRGII,
SpeedGBII,
SpeedRBII,
SpeedRRIII,
SpeedBBIII,
SpeedGGIII,
SpeedRGIII,
SpeedGBIII,
SpeedRBIII,
Life,
LifeGGI,
LifeRRI,
@ -52,6 +66,18 @@ pub enum Spec {
LifeRGI,
LifeGBI,
LifeRBI,
LifeGGII,
LifeRRII,
LifeBBII,
LifeRGII,
LifeGBII,
LifeRBII,
LifeGGIII,
LifeRRIII,
LifeBBIII,
LifeRGIII,
LifeGBIII,
LifeRBIII,
Power,
PowerRRI,
@ -60,6 +86,19 @@ pub enum Spec {
PowerRGI,
PowerGBI,
PowerRBI,
PowerRRII,
PowerGGII,
PowerBBII,
PowerRGII,
PowerGBII,
PowerRBII,
PowerRRIII,
PowerGGIII,
PowerBBIII,
PowerRGIII,
PowerGBIII,
PowerRBIII,
}
impl Spec {
@ -72,14 +111,40 @@ impl Spec {
Spec::PowerRGI => vec![Stat::GreenPower, Stat::RedPower],
Spec::PowerGBI => vec![Stat::GreenPower, Stat::BluePower],
Spec::PowerRBI => vec![Stat::RedPower, Stat::BluePower],
Spec::PowerRRII => vec![Stat::RedPower],
Spec::PowerGGII => vec![Stat::GreenPower],
Spec::PowerBBII => vec![Stat::BluePower],
Spec::PowerRGII => vec![Stat::GreenPower, Stat::RedPower],
Spec::PowerGBII => vec![Stat::GreenPower, Stat::BluePower],
Spec::PowerRBII => vec![Stat::RedPower, Stat::BluePower],
Spec::PowerRRIII => vec![Stat::RedPower],
Spec::PowerGGIII => vec![Stat::GreenPower],
Spec::PowerBBIII => vec![Stat::BluePower],
Spec::PowerRGIII => vec![Stat::GreenPower, Stat::RedPower],
Spec::PowerGBIII => vec![Stat::GreenPower, Stat::BluePower],
Spec::PowerRBIII => vec![Stat::RedPower, Stat::BluePower],
Spec::Speed => vec![Stat::Speed],
Spec::SpeedRRI => vec![Stat::Speed],
Spec::SpeedBBI => vec![Stat::Speed],
Spec::SpeedGGI => vec![Stat::Speed],
Spec::SpeedRGI => vec![Stat::Speed],
Spec::SpeedGBI => vec![Stat::Speed],
Spec::SpeedRBI => vec![Stat::Speed],
Spec::SpeedRRII => vec![Stat::Speed],
Spec::SpeedBBII => vec![Stat::Speed],
Spec::SpeedGGII => vec![Stat::Speed],
Spec::SpeedRGII => vec![Stat::Speed],
Spec::SpeedGBII => vec![Stat::Speed],
Spec::SpeedRBII => vec![Stat::Speed],
Spec::SpeedRRIII => vec![Stat::Speed],
Spec::SpeedBBIII => vec![Stat::Speed],
Spec::SpeedGGIII => vec![Stat::Speed],
Spec::SpeedRGIII => vec![Stat::Speed],
Spec::SpeedGBIII => vec![Stat::Speed],
Spec::SpeedRBIII => vec![Stat::Speed],
Spec::Speed => vec![Stat::Speed],
Spec::SpeedRRI => vec![Stat::Speed],
Spec::SpeedBBI => vec![Stat::Speed],
Spec::SpeedGGI => vec![Stat::Speed],
Spec::SpeedRGI => vec![Stat::Speed],
Spec::SpeedGBI => vec![Stat::Speed],
Spec::SpeedRBI => vec![Stat::Speed],
Spec::Life => vec![Stat::GreenLife],
Spec::LifeRRI => vec![Stat::RedLife],
@ -88,17 +153,83 @@ impl Spec {
Spec::LifeRGI => vec![Stat::GreenLife, Stat::RedLife],
Spec::LifeGBI => vec![Stat::GreenLife, Stat::BlueLife],
Spec::LifeRBI => vec![Stat::BlueLife, Stat::RedLife],
Spec::LifeRRII => vec![Stat::RedLife],
Spec::LifeBBII => vec![Stat::BlueLife],
Spec::LifeGGII => vec![Stat::GreenLife],
Spec::LifeRGII => vec![Stat::GreenLife, Stat::RedLife],
Spec::LifeGBII => vec![Stat::GreenLife, Stat::BlueLife],
Spec::LifeRBII => vec![Stat::BlueLife, Stat::RedLife],
Spec::LifeRRIII => vec![Stat::RedLife],
Spec::LifeBBIII => vec![Stat::BlueLife],
Spec::LifeGGIII => vec![Stat::GreenLife],
Spec::LifeRGIII => vec![Stat::GreenLife, Stat::RedLife],
Spec::LifeGBIII => vec![Stat::GreenLife, Stat::BlueLife],
Spec::LifeRBIII => vec![Stat::BlueLife, Stat::RedLife],
}
}
pub fn values(&self) -> SpecValues {
match *self {
Spec::Power => SpecValues {
multi: 0, base: 20,
multi: 0, base: 10,
bonuses: vec![]
},
Spec::PowerRRI => SpecValues {
multi: 10, 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 },
SpecBonus { req: Colours { red: 20, green: 0, blue: 0 }, bonus: 25 }
],
},
Spec::PowerGGI => SpecValues {
multi: 10, 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 },
SpecBonus { req: Colours { red: 0, green: 20, blue: 0 }, bonus: 25 }
],
},
Spec::PowerBBI => SpecValues {
multi: 10, 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 },
SpecBonus { req: Colours { red: 0, green: 0, blue: 20 }, bonus: 25 }
],
},
Spec::PowerRGI => SpecValues {
multi: 5, 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 },
SpecBonus { req: Colours { red: 10, green: 10, blue: 0 }, bonus: 15 }
],
},
Spec::PowerGBI => SpecValues {
multi: 5, 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 },
SpecBonus { req: Colours { red: 0, green: 10, blue: 10 }, bonus: 15 }
],
},
Spec::PowerRBI => SpecValues {
multi: 5, 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 },
SpecBonus { req: Colours { red: 10, green: 0, blue: 10 }, bonus: 15 }
],
},
Spec::PowerRRII => SpecValues {
multi: 10, base: 40,
bonuses: vec![
SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 40 },
@ -107,7 +238,7 @@ impl Spec {
],
},
Spec::PowerGGI => SpecValues {
Spec::PowerGGII => SpecValues {
multi: 10, base: 40,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 40 },
@ -116,7 +247,7 @@ impl Spec {
],
},
Spec::PowerBBI => SpecValues {
Spec::PowerBBII => SpecValues {
multi: 10, base: 40,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 40 },
@ -125,7 +256,7 @@ impl Spec {
],
},
Spec::PowerRGI => SpecValues {
Spec::PowerRGII => SpecValues {
multi: 7, base: 25,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 2, blue: 0 }, bonus: 25 },
@ -134,7 +265,7 @@ impl Spec {
],
},
Spec::PowerGBI => SpecValues {
Spec::PowerGBII => SpecValues {
multi: 7, base: 25,
bonuses: vec![
SpecBonus { req: Colours { red: 0, green: 2, blue: 2 }, bonus: 25 },
@ -143,7 +274,7 @@ impl Spec {
],
},
Spec::PowerRBI => SpecValues {
Spec::PowerRBII => SpecValues {
multi: 7, base: 25,
bonuses: vec![
SpecBonus { req: Colours { red: 2, green: 0, blue: 2 }, bonus: 25 },
@ -151,6 +282,59 @@ impl Spec {
SpecBonus { req: Colours { red: 10, green: 0, blue: 10 }, bonus: 25 }
],
},
Spec::PowerRRIII => SpecValues {
multi: 20, 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 },
SpecBonus { req: Colours { red: 20, green: 0, blue: 0 }, bonus: 60 }
],
},
Spec::PowerGGIII => SpecValues {
multi: 20, 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 },
SpecBonus { req: Colours { red: 0, green: 20, blue: 0 }, bonus: 60 }
],
},
Spec::PowerBBIII => SpecValues {
multi: 20, 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 },
SpecBonus { req: Colours { red: 0, green: 0, blue: 20 }, bonus: 60 }
],
},
Spec::PowerRGIII => SpecValues {
multi: 20, 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 },
SpecBonus { req: Colours { red: 10, green: 10, blue: 0 }, bonus: 40 }
],
},
Spec::PowerGBIII => SpecValues {
multi: 20, 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 },
SpecBonus { req: Colours { red: 0, green: 10, blue: 10 }, bonus: 25 }
],
},
Spec::PowerRBIII => SpecValues {
multi: 20, 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 },
SpecBonus { req: Colours { red: 10, green: 0, blue: 10 }, bonus: 25 }
],
},
Spec::Speed => SpecValues {
multi: 0, base: 40,
@ -211,12 +395,227 @@ impl Spec {
],
},
Spec::SpeedRRII => SpecValues {
multi: 20, 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 },
SpecBonus { req: Colours { red: 20, green: 0, blue: 0 }, bonus: 120 }
],
},
Spec::SpeedGGII => SpecValues {
multi: 20, 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 },
SpecBonus { req: Colours { red: 0, green: 20, blue: 0 }, bonus: 120 }
],
},
Spec::SpeedBBII => SpecValues {
multi: 20, 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 },
SpecBonus { req: Colours { red: 0, green: 0, blue: 20 }, bonus: 120 }
],
},
Spec::SpeedRGII => SpecValues {
multi: 15, 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 },
SpecBonus { req: Colours { red: 10, green: 10, blue: 0 }, bonus: 80 }
],
},
Spec::SpeedGBII => SpecValues {
multi: 15, 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 },
SpecBonus { req: Colours { red: 0, green: 10, blue: 10 }, bonus: 80 }
],
},
Spec::SpeedRBII => SpecValues {
multi: 15, 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 },
SpecBonus { req: Colours { red: 10, green: 0, blue: 10 }, bonus: 80 }
],
},
Spec::SpeedRRIII => SpecValues {
multi: 20, 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 },
SpecBonus { req: Colours { red: 20, green: 0, blue: 0 }, bonus: 160 }
],
},
Spec::SpeedGGIII => SpecValues {
multi: 20, 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 },
SpecBonus { req: Colours { red: 0, green: 20, blue: 0 }, bonus: 160 }
],
},
Spec::SpeedBBIII => SpecValues {
multi: 20, 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 },
SpecBonus { req: Colours { red: 0, green: 0, blue: 20 }, bonus: 160 }
],
},
Spec::SpeedRGIII => SpecValues {
multi: 15, 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 },
SpecBonus { req: Colours { red: 10, green: 10, blue: 0 }, bonus: 120 }
],
},
Spec::SpeedGBIII => SpecValues {
multi: 15, 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 },
SpecBonus { req: Colours { red: 0, green: 10, blue: 10 }, bonus: 120 }
],
},
Spec::SpeedRBIII => SpecValues {
multi: 15, 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 },
SpecBonus { req: Colours { red: 10, green: 0, blue: 10 }, bonus: 120 }
],
},
Spec::Life => SpecValues {
multi: 0, base: 150,
multi: 0, base: 100,
bonuses: vec![]},
Spec::LifeRRI => SpecValues {
multi: 75, base: 300,
multi: 50, 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 },
SpecBonus { req: Colours { red: 20, green: 0, blue: 0 }, bonus: 100 }
],
},
Spec::LifeGGI => SpecValues {
multi: 50, 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 },
SpecBonus { req: Colours { red: 0, green: 20, blue: 0 }, bonus: 100 }
],
},
Spec::LifeBBI => SpecValues {
multi: 50, 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 },
SpecBonus { req: Colours { red: 0, green: 0, blue: 20 }, bonus: 100 }
],
},
Spec::LifeRGI => SpecValues {
multi: 40, 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 },
SpecBonus { req: Colours { red: 10, green: 10, blue: 0 }, bonus: 75 }
],
},
Spec::LifeGBI => SpecValues {
multi: 40, 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 },
SpecBonus { req: Colours { red: 0, green: 10, blue: 10 }, bonus: 75 }
],
},
Spec::LifeRBI => SpecValues {
multi: 40, 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 },
SpecBonus { req: Colours { red: 10, green: 0, blue: 10 }, bonus: 75 }
],
},
Spec::LifeRRII => SpecValues {
multi: 50, 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 },
SpecBonus { req: Colours { red: 20, green: 0, blue: 0 }, bonus: 150 }
],
},
Spec::LifeGGII => SpecValues {
multi: 50, 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 },
SpecBonus { req: Colours { red: 0, green: 20, blue: 0 }, bonus: 150 }
],
},
Spec::LifeBBII => SpecValues {
multi: 50, 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 },
SpecBonus { req: Colours { red: 0, green: 0, blue: 20 }, bonus: 150 }
],
},
Spec::LifeRGII => SpecValues {
multi: 40, 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 },
SpecBonus { req: Colours { red: 10, green: 10, blue: 0 }, bonus: 100 }
],
},
Spec::LifeGBII => SpecValues {
multi: 40, 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 },
SpecBonus { req: Colours { red: 0, green: 10, blue: 10 }, bonus: 100 }
],
},
Spec::LifeRBII => SpecValues {
multi: 40, 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 },
SpecBonus { req: Colours { red: 10, green: 0, blue: 10 }, bonus: 100 }
],
},
Spec::LifeRRIII => SpecValues {
multi: 40, 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 },
@ -224,8 +623,8 @@ impl Spec {
],
},
Spec::LifeGGI => SpecValues {
multi: 75, base: 300,
Spec::LifeGGIII => SpecValues {
multi: 40, 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 },
@ -233,8 +632,8 @@ impl Spec {
],
},
Spec::LifeBBI => SpecValues {
multi: 75, base: 300,
Spec::LifeBBIII => SpecValues {
multi: 40, 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 },
@ -242,8 +641,8 @@ impl Spec {
],
},
Spec::LifeRGI => SpecValues {
multi: 50, base: 200,
Spec::LifeRGIII => SpecValues {
multi: 40, 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 },
@ -251,8 +650,8 @@ impl Spec {
],
},
Spec::LifeGBI => SpecValues {
multi: 50, base: 200,
Spec::LifeGBIII => SpecValues {
multi: 40, 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 },
@ -260,8 +659,8 @@ impl Spec {
],
},
Spec::LifeRBI => SpecValues {
multi: 50, base: 200,
Spec::LifeRBIII => SpecValues {
multi: 40, 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 },
@ -282,12 +681,37 @@ impl Spec {
Spec::PowerRGI |
Spec::PowerGBI |
Spec::PowerRBI |
Spec::PowerRRII |
Spec::PowerGGII |
Spec::PowerBBII |
Spec::PowerRGII |
Spec::PowerGBII |
Spec::PowerRBII |
Spec::PowerRRIII |
Spec::PowerGGIII |
Spec::PowerBBIII |
Spec::PowerRGIII |
Spec::PowerGBIII |
Spec::PowerRBIII |
Spec::SpeedRRI |
Spec::SpeedGGI |
Spec::SpeedBBI |
Spec::SpeedRGI |
Spec::SpeedGBI |
Spec::SpeedRBI => modified + {
Spec::SpeedRBI |
Spec::SpeedRRII |
Spec::SpeedGGII |
Spec::SpeedBBII |
Spec::SpeedRGII |
Spec::SpeedGBII |
Spec::SpeedRBII |
Spec::SpeedRRIII |
Spec::SpeedGGIII |
Spec::SpeedBBIII |
Spec::SpeedRGIII |
Spec::SpeedGBIII |
Spec::SpeedRBIII => modified + {
base.pct(cmp::min(self.values().calc_multi(construct_colours),
self.values().max_value(player_colours)))
},
@ -298,7 +722,19 @@ impl Spec {
Spec::LifeBBI |
Spec::LifeRGI |
Spec::LifeGBI |
Spec::LifeRBI => modified + {
Spec::LifeRBI |
Spec::LifeRRII |
Spec::LifeGGII |
Spec::LifeBBII |
Spec::LifeRGII |
Spec::LifeGBII |
Spec::LifeRBII |
Spec::LifeRRIII |
Spec::LifeGGIII |
Spec::LifeBBIII |
Spec::LifeRGIII |
Spec::LifeGBIII |
Spec::LifeRBIII => modified + {
cmp::min(self.values().calc_multi(construct_colours),
self.values().max_value(player_colours))
},