From b0eb9a8a5112931014d47a18eb3fd1d70fdc7e64 Mon Sep 17 00:00:00 2001 From: Mashy Date: Mon, 27 May 2019 10:41:36 +1000 Subject: [PATCH] more wip --- server/src/game.rs | 6 +- server/src/item.rs | 134 +++++++++++++++++++++--------- server/src/skill.rs | 198 +++++++++++++++++++++++++++++--------------- 3 files changed, 231 insertions(+), 107 deletions(-) diff --git a/server/src/game.rs b/server/src/game.rs index d58333a2..6d6a5116 100644 --- a/server/src/game.rs +++ b/server/src/game.rs @@ -1346,15 +1346,15 @@ mod tests { let x_cryp = x_player.cryps[0].clone(); let y_cryp = x_player.cryps[1].clone(); - game.cryp_by_id(x_cryp.id).unwrap().learn_mut(Skill::Taunt); + game.cryp_by_id(x_cryp.id).unwrap().learn_mut(Skill::TauntI); - while game.cryp_by_id(x_cryp.id).unwrap().skill_on_cd(Skill::Taunt).is_some() { + while game.cryp_by_id(x_cryp.id).unwrap().skill_on_cd(Skill::TauntI).is_some() { game.cryp_by_id(x_cryp.id).unwrap().reduce_cooldowns(); } game.add_skill(i_player.id, i_cryp.id, Some(x_cryp.id), Skill::TestTouch).unwrap(); game.add_skill(i_player.id, j_cryp.id, Some(x_cryp.id), Skill::TestTouch).unwrap(); - game.add_skill(x_player.id, x_cryp.id, Some(i_cryp.id), Skill::Taunt).unwrap(); + game.add_skill(x_player.id, x_cryp.id, Some(i_cryp.id), Skill::TauntI).unwrap(); game.add_skill(x_player.id, y_cryp.id, Some(i_cryp.id), Skill::TestTouch).unwrap(); game.player_ready(i_player.id).unwrap(); diff --git a/server/src/item.rs b/server/src/item.rs index 74e2a85d..735741b4 100644 --- a/server/src/item.rs +++ b/server/src/item.rs @@ -98,16 +98,26 @@ pub enum Item { SilenceI, SilenceII, SilenceIII, - Slay, - Sleep, - Snare, + SlayI, + SlayII, + SlayIII, + SleepI, + SleepII, + SleepIII, + SnareI, + SnareII, + SnareIII, Strangle, StrikeI, StrikeII, StrikeIII, Siphon, - Taunt, - Throw, + TauntI, + TauntII, + TauntIII, + ThrowI, + ThrowII, + ThrowIII, Triage, @@ -264,10 +274,16 @@ impl Item { Item::SilenceI => Some(Skill::SilenceI), Item::SilenceII => Some(Skill::SilenceII), Item::SilenceIII => Some(Skill::SilenceIII), - Item::Slay => Some(Skill::Slay), - Item::Sleep => Some(Skill::Sleep), + Item::SlayI => Some(Skill::SlayI), + Item::SlayII => Some(Skill::SlayII), + Item::SlayIII => Some(Skill::SlayIII), + Item::SleepI => Some(Skill::SleepI), + Item::SleepII => Some(Skill::SleepII), + Item::SleepIII => Some(Skill::SleepIII), Item::Siphon => Some(Skill::Siphon), - Item::Snare => Some(Skill::Snare), + Item::SnareI => Some(Skill::SnareI), + Item::SnareII => Some(Skill::SnareII), + Item::SnareIII => Some(Skill::SnareIII), Item::Strangle => Some(Skill::Strangle), Item::Stun => Some(Skill::Stun), Item::StrikeI => Some(Skill::StrikeI), @@ -276,8 +292,12 @@ impl Item { Item::ClutchI => Some(Skill::ClutchI), Item::ClutchII => Some(Skill::ClutchII), Item::ClutchIII => Some(Skill::ClutchIII), - Item::Taunt => Some(Skill::Taunt), - Item::Throw => Some(Skill::Throw), + Item::TauntI => Some(Skill::TauntI), + Item::TauntII => Some(Skill::TauntII), + Item::TauntIII => Some(Skill::TauntIII), + Item::ThrowI => Some(Skill::ThrowI), + Item::ThrowII => Some(Skill::ThrowII), + Item::ThrowIII => Some(Skill::ThrowIII), Item::Corrupt => Some(Skill::Corrupt), Item::Triage => Some(Skill::Triage), _ => None, @@ -509,16 +529,22 @@ impl Item { self.into_skill().unwrap().multiplier(), "Deals 45% more damage per blue skill on target"), - Item::Slay => format!( + Item::SlayI | + Item::SlayII | + Item::SlayIII => format!( "Deals red damage {:?}% red power and provides self healing based on damage dealt.", self.into_skill().unwrap().multiplier()), - Item::Sleep => format!( + Item::SleepI | + Item::SleepII | + Item::SleepIII => format!( "Stun for {:?}T and heal for {:?}% green power.", self.into_skill().unwrap().effect().first().unwrap().get_duration(), self.into_skill().unwrap().multiplier()), - Item::Snare => format!( + Item::SnareI | + Item::SnareII | + Item::SnareIII => format!( "Block the target from using red skills for {:?}T and deals red damage {:?}% red power. {}", self.into_skill().unwrap().effect().first().unwrap().get_duration(), self.into_skill().unwrap().multiplier(), @@ -541,12 +567,16 @@ impl Item { self.into_skill().unwrap().multiplier(), self.into_skill().unwrap().effect().first().unwrap().get_duration()), - Item::Taunt => format!("{} {:?}T. Recharges RedLife for {:?} red power.", + Item::TauntI | + Item::TauntII | + Item::TauntIII => format!("{} {:?}T. Recharges RedLife for {:?} red power.", "Taunt redirects skills against the team to target, lasts", self.into_skill().unwrap().effect().first().unwrap().get_duration(), self.into_skill().unwrap().multiplier()), - Item::Throw => format!( + Item::ThrowI | + Item::ThrowII | + Item::ThrowIII => format!( "Stun the target for {:?}T and applies Vulnerable increasing red damage taken by {:?}% for {:?}T", self.into_skill().unwrap().effect().first().unwrap().get_duration(), self.into_skill().unwrap().effect().first().unwrap().get_multiplier() - 100, @@ -565,7 +595,9 @@ impl Item { fn combo(&self) -> Vec { match self { - Item::Taunt => vec![Item::Buff, Item::Red, Item::Red], + Item::TauntI => vec![Item::Buff, Item::Red, Item::Red], + Item::TauntII => vec![Item::TauntI, Item::TauntI, Item::TauntI], + Item::TauntIII => vec![Item::TauntII, Item::TauntII, Item::TauntII], Item::Triage => vec![Item::Buff, Item::Green, Item::Green], Item::ScatterI => vec![Item::Buff, Item::Blue, Item::Blue], Item::ScatterII => vec![Item::ScatterI, Item::ScatterI, Item::ScatterI], @@ -576,7 +608,9 @@ impl Item { Item::AmplifyII => vec![Item::AmplifyI, Item::AmplifyI, Item::AmplifyI], Item::AmplifyIII => vec![Item::AmplifyII, Item::AmplifyII, Item::AmplifyII], - Item::Snare => vec![Item::Debuff, Item::Red, Item::Red], + Item::SnareI => vec![Item::Debuff, Item::Red, Item::Red], + Item::SnareII => vec![Item::SnareI, Item::SnareI, Item::SnareI], + Item::SnareIII => vec![Item::SnareII, Item::SnareII, Item::SnareII], Item::PurgeI => vec![Item::Debuff, Item::Green, Item::Green], // Needs flavour Item::PurgeII => vec![Item::PurgeI, Item::PurgeI, Item::PurgeI], // Needs flavour Item::PurgeIII => vec![Item::PurgeII, Item::PurgeII, Item::PurgeII], // Needs flavour @@ -608,11 +642,15 @@ impl Item { Item::Strangle => vec![Item::Stun, Item::Red, Item::Red], - Item::Sleep => vec![Item::Stun, Item::Green, Item::Green], + Item::SleepI => vec![Item::Stun, Item::Green, Item::Green], + Item::SleepII => vec![Item::SleepI, Item::SleepI, Item::SleepI], + Item::SleepIII => vec![Item::SleepII, Item::SleepII, Item::SleepII], Item::RuinI => vec![Item::Stun, Item::Blue, Item::Blue], Item::RuinII => vec![Item::RuinI, Item::RuinI, Item::RuinI], Item::RuinIII => vec![Item::RuinII, Item::RuinII, Item::RuinII], - Item::Throw => vec![Item::Stun, Item::Red, Item::Green], + Item::ThrowI => vec![Item::Stun, Item::Red, Item::Green], + Item::ThrowII => vec![Item::ThrowI, Item::ThrowI, Item::ThrowI], + Item::ThrowIII => vec![Item::ThrowII, Item::ThrowII, Item::ThrowII], Item::HexI => vec![Item::Stun, Item::Green, Item::Blue], Item::HexII => vec![Item::HexI, Item::HexI, Item::HexI], Item::HexIII => vec![Item::HexII, Item::HexII, Item::HexII], @@ -627,7 +665,9 @@ impl Item { Item::BlastI => vec![Item::Attack, Item::Blue, Item::Blue], Item::BlastII => vec![Item::BlastI, Item::BlastI, Item::BlastI], Item::BlastIII => vec![Item::BlastII, Item::BlastII, Item::BlastII], - Item::Slay => vec![Item::Attack, Item::Red, Item::Green], + Item::SlayI => vec![Item::Attack, Item::Red, Item::Green], + Item::SlayII => vec![Item::SlayI, Item::SlayI, Item::SlayI], + Item::SlayIII => vec![Item::SlayII, Item::SlayII, Item::SlayII], Item::Siphon => vec![Item::Attack, Item::Green, Item::Blue], Item::ChaosI => vec![Item::Attack, Item::Red, Item::Blue], Item::ChaosII => vec![Item::ChaosI, Item::ChaosI, Item::ChaosI], @@ -718,16 +758,26 @@ impl From for Item { Skill::SilenceII => Item::SilenceII, Skill::SilenceIII => Item::SilenceIII, Skill::Siphon => Item::Siphon, - Skill::Slay => Item::Slay, - Skill::Sleep => Item::Sleep, - Skill::Snare => Item::Snare, + Skill::SlayI => Item::SlayI, + Skill::SlayII => Item::SlayII, + Skill::SlayIII => Item::SlayIII, + Skill::SleepI => Item::SleepI, + Skill::SleepII => Item::SleepII, + Skill::SleepIII => Item::SleepIII, + Skill::SnareI => Item::SnareI, + Skill::SnareII => Item::SnareII, + Skill::SnareIII => Item::SnareIII, Skill::Strangle => Item::Strangle, Skill::StrikeI => Item::StrikeI, - Skill::StrikeII => Item::StrikeII, - Skill::StrikeIII => Item::StrikeIII, + Skill::StrikeII => Item::StrikeII, + Skill::StrikeIII => Item::StrikeIII, Skill::Stun => Item::Stun, - Skill::Taunt => Item::Taunt, - Skill::Throw => Item::Throw, + Skill::TauntI => Item::TauntI, + Skill::TauntII => Item::TauntII, + Skill::TauntIII => Item::TauntIII, + Skill::ThrowI => Item::ThrowI, + Skill::ThrowII => Item::ThrowII, + Skill::ThrowIII => Item::ThrowIII, Skill::Triage => Item::Triage, Skill::Corrupt => Item::Corrupt, @@ -787,21 +837,25 @@ pub struct Combo { pub fn get_combos() -> Vec { let mut combinations = vec![ - Combo { components: Item::Taunt.combo(), item: Item::Taunt }, + Combo { components: Item::TauntI.combo(), item: Item::TauntI }, + Combo { components: Item::TauntII.combo(), item: Item::TauntII }, + Combo { components: Item::TauntIII.combo(), item: Item::TauntIII }, Combo { components: Item::Triage.combo(), item: Item::Triage }, - Combo { components: Item::ScatterI.combo(), item: Item::ScatterI }, - Combo { components: Item::ScatterII.combo(), item: Item::ScatterII }, - Combo { components: Item::ScatterIII.combo(), item: Item::ScatterIII }, + Combo { components: Item::ScatterI.combo(), item: Item::ScatterI }, + Combo { components: Item::ScatterII.combo(), item: Item::ScatterII }, + Combo { components: Item::ScatterIII.combo(), item: Item::ScatterIII }, Combo { components: Item::Haste.combo(), item: Item::Haste }, Combo { components: Item::Impurity.combo(), item: Item::Impurity }, Combo { components: Item::AmplifyI.combo(), item: Item::AmplifyI }, Combo { components: Item::AmplifyII.combo(), item: Item::AmplifyII }, Combo { components: Item::AmplifyIII.combo(), item: Item::AmplifyIII }, - Combo { components: Item::Snare.combo(), item: Item::Snare }, + Combo { components: Item::SnareI.combo(), item: Item::SnareI }, + Combo { components: Item::SnareII.combo(), item: Item::SnareII }, + Combo { components: Item::SnareIII.combo(), item: Item::SnareIII }, Combo { components: Item::PurgeI.combo(), item: Item::PurgeI }, // Needs flavour - Combo { components: Item::PurgeII.combo(), item: Item::PurgeII }, - Combo { components: Item::PurgeIII.combo(), item: Item::PurgeIII }, + Combo { components: Item::PurgeII.combo(), item: Item::PurgeII }, + Combo { components: Item::PurgeIII.combo(), item: Item::PurgeIII }, Combo { components: Item::SilenceI.combo(), item: Item::SilenceI }, Combo { components: Item::SilenceII.combo(), item: Item::SilenceII }, @@ -834,13 +888,17 @@ pub fn get_combos() -> Vec { Combo { components: Item::RechargeIII.combo(), item: Item::RechargeIII }, Combo { components: Item::Strangle.combo(), item: Item::Strangle }, - Combo { components: Item::Sleep.combo(), item: Item::Sleep }, + Combo { components: Item::SleepI.combo(), item: Item::SleepI }, + Combo { components: Item::SleepII.combo(), item: Item::SleepII }, + Combo { components: Item::SleepIII.combo(), item: Item::SleepIII }, Combo { components: Item::RuinI.combo(), item: Item::RuinI }, Combo { components: Item::RuinII.combo(), item: Item::RuinII }, Combo { components: Item::RuinIII.combo(), item: Item::RuinIII }, - Combo { components: Item::Throw.combo(), item: Item::Throw }, + Combo { components: Item::ThrowI.combo(), item: Item::ThrowI }, + Combo { components: Item::ThrowII.combo(), item: Item::ThrowII }, + Combo { components: Item::ThrowIII.combo(), item: Item::ThrowIII }, Combo { components: Item::HexI.combo(), item: Item::HexI }, Combo { components: Item::HexII.combo(), item: Item::HexII }, Combo { components: Item::HexIII.combo(), item: Item::HexIII }, @@ -856,7 +914,9 @@ pub fn get_combos() -> Vec { Combo { components: Item::BlastI.combo(), item: Item::BlastI }, Combo { components: Item::BlastII.combo(), item: Item::BlastII }, Combo { components: Item::BlastIII.combo(), item: Item::BlastIII }, - Combo { components: Item::Slay.combo(), item: Item::Slay }, + Combo { components: Item::SlayI.combo(), item: Item::SlayI }, + Combo { components: Item::SlayII.combo(), item: Item::SlayII }, + Combo { components: Item::SlayIII.combo(), item: Item::SlayIII }, Combo { components: Item::Siphon.combo(), item: Item::Siphon }, Combo { components: Item::ChaosI.combo(), item: Item::ChaosI }, Combo { components: Item::ChaosII.combo(), item: Item::ChaosII }, diff --git a/server/src/skill.rs b/server/src/skill.rs index b5cee54e..43a280fc 100644 --- a/server/src/skill.rs +++ b/server/src/skill.rs @@ -75,7 +75,7 @@ pub fn resolve(skill: Skill, source: &mut Cryp, target: &mut Cryp, mut resolutio if source.affected(Effect::Haste) { match skill { Skill::Attack | - Skill::Slay | + Skill::SlayI | Skill::ChaosI | Skill::StrikeI => { let amount = source.speed().pct(Skill::HasteStrike.multiplier()); @@ -115,17 +115,13 @@ pub fn resolve(skill: Skill, source: &mut Cryp, target: &mut Cryp, mut resolutio Skill::AmplifyI | Skill::AmplifyII | Skill::AmplifyIII => amplify(source, target, resolutions, skill), - - Skill::Attack => attack(source, target, resolutions, skill), + Skill::Banish => banish(source, target, resolutions, skill), // TODO prevent all actions - + Skill::BlastI | Skill::BlastII | Skill::BlastIII => blast(source, target, resolutions, skill), - - Skill::Block => block(source, target, resolutions, skill), - Skill::Buff => buff(source, target, resolutions, skill), - + Skill::ChaosI | Skill::ChaosII | Skill::ChaosIII => chaos(source, target, resolutions, skill), @@ -133,44 +129,44 @@ pub fn resolve(skill: Skill, source: &mut Cryp, target: &mut Cryp, mut resolutio Skill::ClutchI | Skill::ClutchII | Skill::ClutchIII => clutch(source, target, resolutions, skill), - + Skill::Corrupt => corrupt(source, target, resolutions, skill), - Skill::CorruptionTick => corruption_tick(source, target, resolutions, skill), - + Skill::CurseI | Skill::CurseII | Skill::CurseIII => curse(source, target, resolutions, skill), - - Skill::Debuff => debuff(source, target, resolutions, skill), // speed slow + Skill::Decay => decay(source, target, resolutions, skill), // dot Skill::DecayTick => decay_tick(source, target, resolutions, skill), // dot + Skill::Haste => haste(source, target, resolutions, skill), // speed slow - + Skill::HealI | - Skill::HealII | - Skill::HealIII => heal(source, target, resolutions, skill), - + Skill::HealII | + Skill::HealIII => heal(source, target, resolutions, skill), + Skill::HexI | Skill::HexII | Skill::HexIII => hex(source, target, resolutions, skill), - + Skill::Hostility => hostility(source, target, resolutions, skill), Skill::Impurity => impurity(source, target, resolutions, skill), - + Skill::InvertI | Skill::InvertII | Skill::InvertIII => invert(source, target, resolutions, skill), - Skill::Parry => parry(source, target, resolutions, skill), + Skill::Parry => parry(source, target, resolutions, skill), + Skill::PurgeI | Skill::PurgeII | Skill::PurgeIII => purge(source, target, resolutions, skill), // dispel all buffs - + Skill::PurifyI | Skill::PurifyII | Skill::PurifyIII => purify(source, target, resolutions, skill), - + Skill::RechargeI | Skill::RechargeII | Skill::RechargeIII => recharge(source, target, resolutions, skill), @@ -190,25 +186,48 @@ pub fn resolve(skill: Skill, source: &mut Cryp, target: &mut Cryp, mut resolutio Skill::SilenceI | Skill::SilenceII | Skill::SilenceIII => silence(source, target, resolutions, skill), // target cannot cast spells - - // Recharge -> Silence Skill::Siphon => siphon(source, target, resolutions, skill), Skill::SiphonTick => siphon_tick(source, target, resolutions, skill), // hot - Skill::Slay => slay(source, target, resolutions, skill), // hybrid dmg self heal - Skill::Sleep => sleep(source, target, resolutions, skill), // speed slow - Skill::Snare => snare(source, target, resolutions, skill), + + Skill::SlayI | + Skill::SlayII | + Skill::SlayIII => slay(source, target, resolutions, skill), // hybrid dmg self heal + + Skill::SleepI | + Skill::SleepII | + Skill::SleepIII => sleep(source, target, resolutions, skill), // heal stun + + Skill::SnareI | + Skill::SnareII | + Skill::SnareIII => snare(source, target, resolutions, skill), + Skill::Strangle => strangle(source, target, resolutions, skill), Skill::StrangleTick => strangle_tick(source, target, resolutions, skill), - Skill::StrikeI => strike(source, target, resolutions, skill), - Skill::StrikeII => strike(source, target, resolutions, skill), - Skill::StrikeIII => strike(source, target, resolutions, skill), - Skill::Stun => stun(source, target, resolutions, skill), - Skill::Taunt => taunt(source, target, resolutions, skill), - Skill::Throw => throw(source, target, resolutions, skill), // no damage stun, adds vulnerable + + Skill::StrikeI | + Skill::StrikeII | + Skill::StrikeIII => strike(source, target, resolutions, skill), + + Skill::TauntI | + Skill::TauntII | + Skill::TauntIII => taunt(source, target, resolutions, skill), + + Skill::ThrowI | + Skill::ThrowII | + Skill::ThrowIII => throw(source, target, resolutions, skill), // no damage stun, adds vulnerable + Skill::Triage => triage(source, target, resolutions, skill), // hot Skill::TriageTick => triage_tick(source, target, resolutions, skill), // hot + // Base Skills + Skill::Attack => attack(source, target, resolutions, skill), + Skill::Block => block(source, target, resolutions, skill), + Skill::Buff => buff(source, target, resolutions, skill), + Skill::Debuff => debuff(source, target, resolutions, skill), // speed slow + Skill::Stun => stun(source, target, resolutions, skill), + + //Triggered Skill::HasteStrike => panic!("should only trigger from haste"), Skill::ImpureBlast => panic!("should only trigger from impurity"), Skill::Riposte => panic!("should only trigger from parry"), @@ -447,11 +466,15 @@ impl Effect { Skill::HexII, Skill::HexIII, Skill::SilenceI, + Skill::SilenceII, + Skill::SilenceIII, Skill::RuinI, Skill::RuinII, Skill::RuinIII, Skill::Strangle, - Skill::Snare + Skill::SnareI, + Skill::SnareII, + Skill::SnareIII ].contains(&skill), Effect::Injured => skill.colours().contains(&Colour::Green), _ => false, @@ -632,8 +655,8 @@ pub enum Skill { Impurity, Injure, InvertI, - InvertII, - InvertIII, + InvertII, + InvertIII, Parry, // avoid all damage PurgeI, PurgeII, @@ -659,16 +682,26 @@ pub enum Skill { SilenceIII, Siphon, SiphonTick, - Slay, - Sleep, - Snare, + SlayI, + SlayII, + SlayIII, + SleepI, + SleepII, + SleepIII, + SnareI, + SnareII, + SnareIII, Strangle, StrangleTick, StrikeI, - StrikeII, - StrikeIII, - Taunt, - Throw, // no damage stun, adds vulnerable + StrikeII, + StrikeIII, + TauntI, + TauntII, + TauntIII, + ThrowI, // no damage stun, adds vulnerable + ThrowII, + ThrowIII, Triage, // hot TriageTick, @@ -698,10 +731,12 @@ impl Skill { Skill::HealII => 160, //GG Skill::HealIII => 200, //GG Skill::SiphonTick => 40, // GB - Skill::Slay => 70, // RG + Skill::SlayI => 70, // RG + Skill::SlayII => 90, + Skill::SlayIII => 120, Skill::StrikeI => 90, //RR Skill::StrikeII => 110, - Skill::StrikeIII => 130, + Skill::StrikeIII => 140, // Block Base Skill::CorruptionTick => 80, @@ -718,7 +753,9 @@ impl Skill { Skill::RechargeIII => 200, // Stun Base - Skill::Sleep => 240, //Green dmg (heal) + Skill::SleepI => 240, //Green dmg (heal) + Skill::SleepII => 300, + Skill::SleepIII => 400, Skill::StrangleTick => 65, // Debuff Base @@ -726,7 +763,9 @@ impl Skill { Skill::SilenceI => 55, // Deals more per blue skill on target Skill::SilenceII => 80, // Deals more per blue skill on target Skill::SilenceIII => 110, // Deals more per blue skill on target - Skill::Snare => 40, // Deals more per red skill on target + Skill::SnareI => 40, // Deals more per red skill on target + Skill::SnareII => 65, + Skill::SnareIII => 100, // Buff base Skill::ImpureBlast => 25, @@ -734,7 +773,9 @@ impl Skill { Skill::ScatterI => 140, Skill::ScatterII => 200, Skill::ScatterIII => 300, - Skill::Taunt => 80, + Skill::TauntI => 80, + Skill::TauntII => 110, + Skill::TauntIII => 150, Skill::TriageTick => 75, _ => 100, @@ -777,27 +818,40 @@ impl Skill { Skill::Parry => vec![CrypEffect {effect: Effect::Parry, duration: 2, meta: None, tick: None }], Skill::ReflectI => vec![CrypEffect {effect: Effect::Reflect, duration: 1, meta: None, tick: None }], - Skill::ReflectII => vec![CrypEffect {effect: Effect::Reflect, duration: 2, meta: None, tick: None }], - Skill::ReflectIII => vec![CrypEffect {effect: Effect::Reflect, duration: 3, meta: None, tick: None }], - Skill::Throw => vec![CrypEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}, + Skill::ReflectII => vec![CrypEffect {effect: Effect::Reflect, duration: 2, meta: None, tick: None }], + Skill::ReflectIII => vec![CrypEffect {effect: Effect::Reflect, duration: 3, meta: None, tick: None }], + + Skill::ThrowI => vec![CrypEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}, CrypEffect {effect: Effect::Vulnerable, duration: 3, meta: Some(EffectMeta::Multiplier(150)), tick: None}], + Skill::ThrowII => vec![CrypEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}, + CrypEffect {effect: Effect::Vulnerable, duration: 4, meta: Some(EffectMeta::Multiplier(200)), tick: None}], + Skill::ThrowIII => vec![CrypEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}, + CrypEffect {effect: Effect::Vulnerable, duration: 4, meta: Some(EffectMeta::Multiplier(250)), tick: None}], Skill::RuinI => vec![CrypEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}], Skill::RuinII => vec![CrypEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}], Skill::RuinIII => vec![CrypEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}], Skill::ScatterI => vec![CrypEffect {effect: Effect::Scatter, duration: 2, meta: None, tick: None}], - Skill::ScatterII => vec![CrypEffect {effect: Effect::Scatter, duration: 3, meta: None, tick: None}], - Skill::ScatterIII => vec![CrypEffect {effect: Effect::Scatter, duration: 4, meta: None, tick: None}], + Skill::ScatterII => vec![CrypEffect {effect: Effect::Scatter, duration: 3, meta: None, tick: None}], + Skill::ScatterIII => vec![CrypEffect {effect: Effect::Scatter, duration: 4, meta: None, tick: None}], Skill::SilenceI => vec![CrypEffect {effect: Effect::Silence, duration: 2, meta: None, tick: None}], - Skill::SilenceII => vec![CrypEffect {effect: Effect::Silence, duration: 2, meta: None, tick: None}], - Skill::SilenceIII => vec![CrypEffect {effect: Effect::Silence, duration: 3, meta: None, tick: None}], - Skill::Siphon => vec![CrypEffect {effect: Effect::Siphon, duration: 2, meta: None, tick: None}], - Skill::Sleep => vec![CrypEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}], - Skill::Snare => vec![CrypEffect {effect: Effect::Snare, duration: 2, meta: None, tick: None}], - Skill::Strangle => vec![CrypEffect {effect: Effect::Strangle, duration: 2, meta: None, tick: None}], - Skill::Stun => vec![CrypEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}], - Skill::Taunt => vec![CrypEffect {effect: Effect::Taunt, duration: 2, meta: None, tick: None}], - Skill::Triage => vec![CrypEffect {effect: Effect::Triage, duration: 2, meta: None, tick: None}], + Skill::SilenceII => vec![CrypEffect {effect: Effect::Silence, duration: 2, meta: None, tick: None}], + Skill::SilenceIII => vec![CrypEffect {effect: Effect::Silence, duration: 3, meta: None, tick: None}], + Skill::Siphon => vec![CrypEffect {effect: Effect::Siphon, duration: 2, meta: None, tick: None}], + Skill::SleepI => vec![CrypEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}], + Skill::SleepII => vec![CrypEffect {effect: Effect::Stun, duration: 3, meta: None, tick: None}], + Skill::SleepIII => vec![CrypEffect {effect: Effect::Stun, duration: 4, meta: None, tick: None}], + + Skill::SnareI => vec![CrypEffect {effect: Effect::Snare, duration: 2, meta: None, tick: None}], + Skill::SnareII => vec![CrypEffect {effect: Effect::Snare, duration: 3, meta: None, tick: None}], + Skill::SnareIII => vec![CrypEffect {effect: Effect::Snare, duration: 4, meta: None, tick: None}], + + Skill::Strangle => vec![CrypEffect {effect: Effect::Strangle, duration: 2, meta: None, tick: None}], + Skill::Stun => vec![CrypEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}], + Skill::TauntI => vec![CrypEffect {effect: Effect::Taunt, duration: 2, meta: None, tick: None}], + Skill::TauntII => vec![CrypEffect {effect: Effect::Taunt, duration: 3, meta: None, tick: None}], + Skill::TauntIII => vec![CrypEffect {effect: Effect::Taunt, duration: 4, meta: None, tick: None}], + Skill::Triage => vec![CrypEffect {effect: Effect::Triage, duration: 2, meta: None, tick: None}], //Unused Skill::Injure => vec![CrypEffect {effect: Effect::Injured, duration: 2, meta: None, tick: None }], @@ -819,14 +873,18 @@ impl Skill { Skill::Block => None, // reduce damage Skill::Parry => Some(2), // avoid all damage Skill::Riposte => None, // used on parry - Skill::Snare => Some(2), + Skill::SnareI => Some(2), + Skill::SnareII => Some(2), + Skill::SnareIII => Some(2), Skill::Stun => Some(2), Skill::HealI => None, Skill::HealII => None, Skill::HealIII => None, Skill::Triage => None, // hot Skill::TriageTick => None, - Skill::Throw => Some(1), // no damage stun, adds vulnerable + Skill::ThrowI => Some(1), // no damage stun, adds vulnerable + Skill::ThrowII => Some(1), + Skill::ThrowIII => Some(1), Skill::BlastI => None, Skill::BlastII => None, Skill::BlastIII => None, @@ -876,15 +934,21 @@ impl Skill { Skill::RuinI => Some(3), Skill::RuinII => Some(2), Skill::RuinIII => Some(2), - Skill::Slay => None, - Skill::Sleep => Some(3), + Skill::SlayI => None, + Skill::SlayII => None, + Skill::SlayIII => None, + Skill::SleepI => Some(3), + Skill::SleepII => Some(3), + Skill::SleepIII => Some(3), Skill::Strangle => Some(2), Skill::StrangleTick => None, Skill::ClutchI => Some(1), Skill::ClutchII => Some(2), Skill::ClutchIII => Some(3), - Skill::Taunt => Some(2), + Skill::TauntI => Some(2), + Skill::TauntII => Some(2), + Skill::TauntIII => Some(2), Skill::Injure => Some(2), Skill::Corrupt => Some(1),