Tier 3 and tier enums

This commit is contained in:
Mashy 2019-04-30 14:40:48 +10:00
parent 2941d1b73a
commit 6bbaa5da70
2 changed files with 25 additions and 7 deletions

View File

@ -69,8 +69,9 @@ pub fn resolve(skill: Skill, source: &mut Cryp, target: &mut Cryp, mut resolutio
Skill::Snare => snare(source, target, resolutions), Skill::Snare => snare(source, target, resolutions),
Skill::Strangle => strangle(source, target, resolutions), Skill::Strangle => strangle(source, target, resolutions),
Skill::StrangleTick => strangle_tick(source, target, resolutions), Skill::StrangleTick => strangle_tick(source, target, resolutions),
Skill::Strike => strike(source, target, resolutions, 1), Skill::Strike => strike(source, target, resolutions, Tier::T1),
Skill::StrikeII => strike(source, target, resolutions, 2), Skill::StrikeII => strike(source, target, resolutions, Tier::T2),
Skill::StrikeIII => strike(source, target, resolutions, Tier::T3),
Skill::Stun => stun(source, target, resolutions), Skill::Stun => stun(source, target, resolutions),
Skill::Taunt => taunt(source, target, resolutions), Skill::Taunt => taunt(source, target, resolutions),
Skill::Throw => throw(source, target, resolutions), // no damage stun, adds vulnerable Skill::Throw => throw(source, target, resolutions), // no damage stun, adds vulnerable
@ -503,6 +504,13 @@ pub enum Category {
Ko, Ko,
} }
#[derive(Debug,Clone,Copy,PartialEq,Serialize,Deserialize)]
pub enum Tier {
T1,
T2,
T3,
}
#[derive(Debug,Clone,Copy,PartialEq,Serialize,Deserialize)] #[derive(Debug,Clone,Copy,PartialEq,Serialize,Deserialize)]
pub enum Skill { pub enum Skill {
Attack, Attack,
@ -529,6 +537,7 @@ pub enum Skill {
Strike, Strike,
StrikeII, StrikeII,
StrikeIII,
Stun, Stun,
// Evade, // actively evade // Evade, // actively evade
@ -591,6 +600,7 @@ impl Skill {
Skill::Attack => 0.9, Skill::Attack => 0.9,
Skill::Strike => 1.1, Skill::Strike => 1.1,
Skill::StrikeII => 1.3, Skill::StrikeII => 1.3,
Skill::StrikeIII => 1.5,
Skill::StrangleTick => 0.3, Skill::StrangleTick => 0.3,
Skill::Riposte => 1.0, Skill::Riposte => 1.0,
Skill::Heal => 1.2, Skill::Heal => 1.2,
@ -608,6 +618,7 @@ impl Skill {
Skill::Attack => None, Skill::Attack => None,
Skill::Strike => None, Skill::Strike => None,
Skill::StrikeII => None, Skill::StrikeII => None,
Skill::StrikeIII => None,
Skill::Block => None, // reduce damage Skill::Block => None, // reduce damage
Skill::Parry => None, // avoid all damage Skill::Parry => None, // avoid all damage
Skill::Riposte => None, // used on parry Skill::Riposte => None, // used on parry
@ -665,6 +676,7 @@ impl Skill {
Skill::Attack => Category::Red, Skill::Attack => Category::Red,
Skill::Strike => Category::Red, Skill::Strike => Category::Red,
Skill::StrikeII => Category::Red, Skill::StrikeII => Category::Red,
Skill::StrikeIII => Category::Red,
Skill::Injure => Category::Red, Skill::Injure => Category::Red,
Skill::Strangle => Category::Red, Skill::Strangle => Category::Red,
Skill::StrangleTick => Category::Red, Skill::StrangleTick => Category::Red,
@ -740,7 +752,8 @@ impl Skill {
Skill::TestSiphon => 10, Skill::TestSiphon => 10,
Skill::Strike => u8::max_value(), 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::SiphonTick => Var::from(Skill::Siphon).speed(),
Skill::DecayTick => Var::from(Skill::Decay).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; 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 { let multiplier = match tier {
2 => Skill::StrikeII.multiplier(), Tier::T1 => Skill::Strike.multiplier(),
_ => Skill::Strike.multiplier() Tier::T2 => Skill::StrikeII.multiplier(),
Tier::T3 => Skill::StrikeIII.multiplier(),
}; };
let amount = (source.red_damage() as f64 * multiplier).floor() as u64; let amount = (source.red_damage() as f64 * multiplier).floor() as u64;
target.deal_red_damage(Skill::Strike, amount) target.deal_red_damage(Skill::Strike, amount)

View File

@ -88,6 +88,7 @@ pub enum Var {
Strangle, Strangle,
Strike, Strike,
StrikeII, StrikeII,
StrikeIII,
Siphon, Siphon,
Clutch, Clutch,
Taunt, Taunt,
@ -215,6 +216,7 @@ impl Var {
Var::Strangle => Some(Skill::Strangle), Var::Strangle => Some(Skill::Strangle),
Var::Strike => Some(Skill::Strike), Var::Strike => Some(Skill::Strike),
Var::StrikeII => Some(Skill::StrikeII), Var::StrikeII => Some(Skill::StrikeII),
Var::StrikeIII => Some(Skill::StrikeIII),
Var::Clutch => Some(Skill::Clutch), Var::Clutch => Some(Skill::Clutch),
Var::Taunt => Some(Skill::Taunt), Var::Taunt => Some(Skill::Taunt),
Var::Throw => Some(Skill::Throw), Var::Throw => Some(Skill::Throw),
@ -286,6 +288,7 @@ impl From<Skill> for Var {
Skill::Strangle => Var::Strangle, Skill::Strangle => Var::Strangle,
Skill::Strike => Var::Strike, Skill::Strike => Var::Strike,
Skill::StrikeII => Var::StrikeII, Skill::StrikeII => Var::StrikeII,
Skill::StrikeIII => Var::StrikeIII,
Skill::Stun => Var::Stun, Skill::Stun => Var::Stun,
Skill::Taunt => Var::Taunt, Skill::Taunt => Var::Taunt,
Skill::Throw => Var::Throw, Skill::Throw => Var::Throw,
@ -371,6 +374,7 @@ fn get_combos() -> Vec<Combo> {
Combo { units: vec![Var::Attack, Var::Red, Var::Red], var: Var::Strike }, 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::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::Green, Var::Green], var: Var::Heal },
Combo { units: vec![Var::Attack, Var::Blue, Var::Blue], var: Var::Blast }, Combo { units: vec![Var::Attack, Var::Blue, Var::Blue], var: Var::Blast },