From 2c89db4f01f8cbc0bc3ac7d7eb6198093d2a6a35 Mon Sep 17 00:00:00 2001 From: ntr Date: Thu, 14 Mar 2019 22:16:33 +1100 Subject: [PATCH] sort specs so they are applied properly --- server/src/cryp.rs | 1 + server/src/spec.rs | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/server/src/cryp.rs b/server/src/cryp.rs index 8c73152c..5fcfc49c 100644 --- a/server/src/cryp.rs +++ b/server/src/cryp.rs @@ -266,6 +266,7 @@ impl Cryp { fn recalculate_stats(&mut self) -> &mut Cryp { + self.specs.sort_unstable(); self.red_damage.recalculate(&self.specs); self.red_shield.recalculate(&self.specs); self.blue_damage.recalculate(&self.specs); diff --git a/server/src/spec.rs b/server/src/spec.rs index 25a524a3..fccec9e4 100644 --- a/server/src/spec.rs +++ b/server/src/spec.rs @@ -2,10 +2,12 @@ use rand::prelude::*; use cryp::{Stat}; -#[derive(Debug,Copy,Clone,Serialize,Deserialize,PartialEq)] +#[derive(Debug,Copy,Clone,Serialize,Deserialize,PartialEq,PartialOrd,Ord,Eq)] pub enum Spec { SpeedI, + // Pure redShield has to come first as it applies the base amount + // that is multiplied LifeI, RedShieldI, BlueShieldI, @@ -24,9 +26,11 @@ impl Spec { Spec::RedDamageI => vec![Stat::RedDamage], Spec::GreenDamageI => vec![Stat::GreenDamage], Spec::BlueDamageI => vec![Stat::BlueDamage], + + Spec::SpeedI => vec![Stat::Speed], + Spec::RedShieldI => vec![Stat::RedShield], Spec::BlueShieldI => vec![Stat::BlueShield], - Spec::SpeedI => vec![Stat::Speed], Spec::LifeI => vec![Stat::Hp], Spec::LRSI => vec![Stat::Hp, Stat::RedShield], Spec::LBSI => vec![Stat::Hp, Stat::BlueShield],