diff --git a/server/src/skill.rs b/server/src/skill.rs index c65d2c18..e0b2ebc5 100644 --- a/server/src/skill.rs +++ b/server/src/skill.rs @@ -69,8 +69,9 @@ pub fn resolve(skill: Skill, source: &mut Cryp, target: &mut Cryp, mut resolutio Skill::Snare => snare(source, target, resolutions), Skill::Strangle => strangle(source, target, resolutions), Skill::StrangleTick => strangle_tick(source, target, resolutions), - Skill::Strike => strike(source, target, resolutions, 1), - Skill::StrikeII => strike(source, target, resolutions, 2), + Skill::Strike => strike(source, target, resolutions, Tier::T1), + Skill::StrikeII => strike(source, target, resolutions, Tier::T2), + Skill::StrikeIII => strike(source, target, resolutions, Tier::T3), Skill::Stun => stun(source, target, resolutions), Skill::Taunt => taunt(source, target, resolutions), Skill::Throw => throw(source, target, resolutions), // no damage stun, adds vulnerable @@ -503,6 +504,13 @@ pub enum Category { Ko, } +#[derive(Debug,Clone,Copy,PartialEq,Serialize,Deserialize)] +pub enum Tier { + T1, + T2, + T3, +} + #[derive(Debug,Clone,Copy,PartialEq,Serialize,Deserialize)] pub enum Skill { Attack, @@ -529,6 +537,7 @@ pub enum Skill { Strike, StrikeII, + StrikeIII, Stun, // Evade, // actively evade @@ -591,6 +600,7 @@ impl Skill { Skill::Attack => 0.9, Skill::Strike => 1.1, Skill::StrikeII => 1.3, + Skill::StrikeIII => 1.5, Skill::StrangleTick => 0.3, Skill::Riposte => 1.0, Skill::Heal => 1.2, @@ -607,7 +617,8 @@ impl Skill { match self { Skill::Attack => None, Skill::Strike => None, - Skill::StrikeII => None, + Skill::StrikeII => None, + Skill::StrikeIII => None, Skill::Block => None, // reduce damage Skill::Parry => None, // avoid all damage Skill::Riposte => None, // used on parry @@ -665,6 +676,7 @@ impl Skill { Skill::Attack => Category::Red, Skill::Strike => Category::Red, Skill::StrikeII => Category::Red, + Skill::StrikeIII => Category::Red, Skill::Injure => Category::Red, Skill::Strangle => Category::Red, Skill::StrangleTick => Category::Red, @@ -740,7 +752,8 @@ impl Skill { Skill::TestSiphon => 10, Skill::Strike => u8::max_value(), - Skill::StrikeII => u8::max_value(), + Skill::StrikeII => Skill::Strike.speed(), + Skill::StrikeIII => Skill::Strike.speed(), Skill::SiphonTick => Var::from(Skill::Siphon).speed(), Skill::DecayTick => Var::from(Skill::Decay).speed(), @@ -817,10 +830,11 @@ fn attack(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions) -> Res return results; } -fn strike(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, tier: u8) -> Resolutions { +fn strike(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, tier: Tier) -> Resolutions { let multiplier = match tier { - 2 => Skill::StrikeII.multiplier(), - _ => Skill::Strike.multiplier() + Tier::T1 => Skill::Strike.multiplier(), + Tier::T2 => Skill::StrikeII.multiplier(), + Tier::T3 => Skill::StrikeIII.multiplier(), }; let amount = (source.red_damage() as f64 * multiplier).floor() as u64; target.deal_red_damage(Skill::Strike, amount) diff --git a/server/src/vbox.rs b/server/src/vbox.rs index 694dce3a..b6ef192b 100644 --- a/server/src/vbox.rs +++ b/server/src/vbox.rs @@ -88,6 +88,7 @@ pub enum Var { Strangle, Strike, StrikeII, + StrikeIII, Siphon, Clutch, Taunt, @@ -215,6 +216,7 @@ impl Var { Var::Strangle => Some(Skill::Strangle), Var::Strike => Some(Skill::Strike), Var::StrikeII => Some(Skill::StrikeII), + Var::StrikeIII => Some(Skill::StrikeIII), Var::Clutch => Some(Skill::Clutch), Var::Taunt => Some(Skill::Taunt), Var::Throw => Some(Skill::Throw), @@ -286,6 +288,7 @@ impl From for Var { Skill::Strangle => Var::Strangle, Skill::Strike => Var::Strike, Skill::StrikeII => Var::StrikeII, + Skill::StrikeIII => Var::StrikeIII, Skill::Stun => Var::Stun, Skill::Taunt => Var::Taunt, Skill::Throw => Var::Throw, @@ -371,6 +374,7 @@ fn get_combos() -> Vec { Combo { units: vec![Var::Attack, Var::Red, Var::Red], var: Var::Strike }, Combo { units: vec![Var::Strike, Var::Strike, Var::Strike], var: Var::StrikeII }, + Combo { units: vec![Var::StrikeII, Var::StrikeII, Var::StrikeII], var: Var::StrikeIII }, Combo { units: vec![Var::Attack, Var::Green, Var::Green], var: Var::Heal }, Combo { units: vec![Var::Attack, Var::Blue, Var::Blue], var: Var::Blast },