From 91e150ecec9c8838ee0c969cccd51941e80bdbe9 Mon Sep 17 00:00:00 2001 From: Mashy Date: Fri, 3 May 2019 14:08:56 +1000 Subject: [PATCH] Added sleep, changed recipe for clutch, taunt, hex, banish, throw --- CHANGELOG.md | 24 ++++++++++++++++++++---- client/src/utils.jsx | 3 ++- server/src/skill.rs | 23 +++++++++++++++++++++-- server/src/vbox.rs | 41 ++++++++++++++++++++++------------------- 4 files changed, 65 insertions(+), 26 deletions(-) mode change 100644 => 100755 server/src/skill.rs mode change 100644 => 100755 server/src/vbox.rs diff --git a/CHANGELOG.md b/CHANGELOG.md index dfe87091..84b6f778 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,17 +8,33 @@ This project adheres to [Semantic Versioning](http://semver.org/). Event::Skill needed to convey the use of skill which is followed by other events used for skill Purify to show that it is used and then followed by removal and other events + New Skill `Sleep` + Combined using Stun + GG + Stuns target for 3T (might need to be 4T) + Deals 240% green damage (heal) + Concept - high duration stun with the drawback of a big heal on the target + Base cooldown 3T + (Could be played aggressively or defensively) ### Fixed ### Changed Switch purify with reflect - - Purify now GG + block instead of GB + block - - Purify now applies a small heal 45% multiplier green damage (power) + - Purify now GG + block (was GB + block) + - Purify now applies a small heal 45% multiplier green damage (power) for each debuff removed - - reflect now GB + block - - reflect restores blue shield + - reflect now GB + block (was GG + block) + Switch clutch with taunt + Clutch now GR + Block (was GR + Buff) + Taunt now GR + Buff + No longer self-target only + + Silence no longer Stun + GB (already exists as debuff BB) + Hex is now Stun + GB (was Stun + RB) + Banish is now Stun + RB (was Stun + RG) for rng theme + Throw is now Stun + RG (was Stun + GG) + - Better fit as it applies inc Red taken debuff (vulnerability) ## [0.1.0] - 2019-05-02 diff --git a/client/src/utils.jsx b/client/src/utils.jsx index 4f9baad2..4fa5de59 100644 --- a/client/src/utils.jsx +++ b/client/src/utils.jsx @@ -228,7 +228,8 @@ function getCombatSequence(event) { if (['Healing'].includes(event[0]) && (event[1].skill === 'Slay' || event[1].skill === 'SiphonTick' - || event[1].skill === 'Purify')) return ['POST_SKILL']; + || event[1].skill === 'Purify' + || event[1].skill === 'Sleep')) return ['POST_SKILL']; if (['Effect'].includes(event[0]) && event[1].skill === 'Decay' && event[1].effect === 'Wither') return ['POST_SKILL']; diff --git a/server/src/skill.rs b/server/src/skill.rs old mode 100644 new mode 100755 index be2aaf30..c3a2be58 --- a/server/src/skill.rs +++ b/server/src/skill.rs @@ -67,6 +67,7 @@ pub fn resolve(skill: Skill, source: &mut Cryp, target: &mut Cryp, mut resolutio Skill::Siphon => siphon(source, target, resolutions, Skill::Siphon), Skill::SiphonTick => siphon_tick(source, target, resolutions, Skill::SiphonTick), // hot Skill::Slay => slay(source, target, resolutions, Skill::Slay), // hybrid dmg self heal + Skill::Sleep => sleep(source, target, resolutions, Skill::Sleep), // speed slow Skill::Slow => slow(source, target, resolutions, Skill::Slow), // speed slow Skill::Snare => snare(source, target, resolutions, Skill::Snare), Skill::Strangle => strangle(source, target, resolutions, Skill::Strangle), @@ -481,6 +482,7 @@ pub enum Skill { Reflect, Ruin, Slay, + Sleep, Clutch, Taunt, Invert, @@ -564,7 +566,8 @@ impl Skill { // Block Base Skill::Purify => 45, //Green dmg (heal) - + // Stun Base + Skill::Sleep => 240, //Green dmg (heal) // Others Skill::CorruptionTick => 80, Skill::DecayTick => 25, @@ -589,6 +592,8 @@ impl Skill { Skill::Strangle => 2, Skill::Stun => 2, + Skill::Sleep => 3, + Skill::Throw => 2, Skill::Snare => 2, @@ -675,6 +680,8 @@ impl Skill { Skill::Recharge => Some(2), Skill::Ruin => Some(3), Skill::Slay => None, + Skill::Sleep => Some(3), + Skill::Strangle => Some(2), Skill::StrangleTick => None, Skill::Clutch => Some(2), @@ -726,6 +733,7 @@ impl Skill { Skill::Reflect => Category::Green, Skill::Haste => Category::Green, Skill::Invert => Category::Green, + Skill::Sleep => Category::Green, Skill::Blast => Category::Blue, Skill::Chaos => Category::Blue, @@ -804,7 +812,7 @@ impl Skill { Skill::Block => true, Skill::Parry => true, Skill::Clutch => true, - Skill::Taunt => true, + // Skill::Taunt => true, Skill::Corrupt => true, Skill::TestBlock => true, @@ -883,6 +891,17 @@ fn stun(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: S return results; } +fn sleep(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions { + let effect = CrypEffect::new(Effect::Stun, skill.duration()); + results.push(Resolution::new(source, target).event(target.add_effect(skill, effect))); + let amount = source.green_damage().pct(skill.multiplier()); + target.deal_green_damage(skill, amount) + .into_iter() + .for_each(|e| results.push(Resolution::new(source, target).event(e))); + + return results; +} + fn clutch(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions { let effect = CrypEffect::new(Effect::Clutch, skill.duration()); results.push(Resolution::new(source, target).event(target.add_effect(skill, effect))); diff --git a/server/src/vbox.rs b/server/src/vbox.rs old mode 100644 new mode 100755 index 21252cc1..5b045df1 --- a/server/src/vbox.rs +++ b/server/src/vbox.rs @@ -66,6 +66,8 @@ pub enum Var { Banish, Blast, Chaos, + Clutch, + Corrupt, Curse, Decay, Empower, @@ -83,6 +85,7 @@ pub enum Var { Shield, Silence, Slay, + Sleep, Slow, Snare, Strangle, @@ -90,10 +93,8 @@ pub enum Var { StrikeII, StrikeIII, Siphon, - Clutch, Taunt, Throw, - Corrupt, Triage, @@ -211,6 +212,7 @@ impl Var { Var::Shield => Some(Skill::Shield), Var::Silence => Some(Skill::Silence), Var::Slay => Some(Skill::Slay), + Var::Sleep => Some(Skill::Sleep), Var::Slow => Some(Skill::Slow), Var::Siphon => Some(Skill::Siphon), Var::Snare => Some(Skill::Snare), @@ -287,6 +289,7 @@ impl From for Var { Skill::Silence => Var::Silence, Skill::Siphon => Var::Siphon, Skill::Slay => Var::Slay, + Skill::Sleep => Var::Sleep, Skill::Slow => Var::Slow, Skill::Snare => Var::Snare, Skill::Strangle => Var::Strangle, @@ -348,42 +351,42 @@ struct Combo { fn get_combos() -> Vec { let mut combinations = vec![ - Combo { units: vec![Var::Buff, Var::Red, Var::Red], var: Var::Empower }, + Combo { units: vec![Var::Buff, Var::Red, Var::Red], var: Var::Empower }, // Gereric red dmg buff Combo { units: vec![Var::Buff, Var::Green, Var::Green], var: Var::Triage }, - Combo { units: vec![Var::Buff, Var::Blue, Var::Blue], var: Var::Amplify }, - Combo { units: vec![Var::Buff, Var::Red, Var::Green], var: Var::Clutch }, - Combo { units: vec![Var::Buff, Var::Green, Var::Blue], var: Var::Curse }, - Combo { units: vec![Var::Buff, Var::Red, Var::Blue], var: Var::Haste }, + Combo { units: vec![Var::Buff, Var::Blue, Var::Blue], var: Var::Amplify }, // Gereric blue dmg buff + Combo { units: vec![Var::Buff, Var::Red, Var::Green], var: Var::Taunt }, + Combo { units: vec![Var::Buff, Var::Green, Var::Blue], var: Var::Curse }, // Needs a buff + Combo { units: vec![Var::Buff, Var::Red, Var::Blue], var: Var::Haste }, // Needs a buff Combo { units: vec![Var::Debuff, Var::Red, Var::Red], var: Var::Snare }, - Combo { units: vec![Var::Debuff, Var::Green, Var::Green], var: Var::Purge }, - Combo { units: vec![Var::Debuff, Var::Blue, Var::Blue], var: Var::Silence }, - Combo { units: vec![Var::Debuff, Var::Red, Var::Green], var: Var::Slow }, - Combo { units: vec![Var::Debuff, Var::Green, Var::Blue], var: Var::Decay }, + Combo { units: vec![Var::Debuff, Var::Green, Var::Green], var: Var::Purge }, // Needs a buff + Combo { units: vec![Var::Debuff, Var::Blue, Var::Blue], var: Var::Silence }, + Combo { units: vec![Var::Debuff, Var::Red, Var::Green], var: Var::Slow }, // Needs a buff + Combo { units: vec![Var::Debuff, Var::Green, Var::Blue], var: Var::Decay }, Combo { units: vec![Var::Debuff, Var::Red, Var::Blue], var: Var::Invert }, Combo { units: vec![Var::Block, Var::Red, Var::Red], var: Var::Parry }, Combo { units: vec![Var::Block, Var::Green, Var::Green], var: Var::Purify }, Combo { units: vec![Var::Block, Var::Blue, Var::Blue], var: Var::Corrupt }, - Combo { units: vec![Var::Block, Var::Red, Var::Green], var: Var::Taunt }, + Combo { units: vec![Var::Block, Var::Red, Var::Green], var: Var::Clutch }, Combo { units: vec![Var::Block, Var::Green, Var::Blue], var: Var::Reflect }, Combo { units: vec![Var::Block, Var::Red, Var::Blue], var: Var::Recharge }, Combo { units: vec![Var::Stun, Var::Red, Var::Red], var: Var::Strangle }, - Combo { units: vec![Var::Stun, Var::Green, Var::Green], var: Var::Throw }, + Combo { units: vec![Var::Stun, Var::Green, Var::Green], var: Var::Sleep }, Combo { units: vec![Var::Stun, Var::Blue, Var::Blue], var: Var::Ruin }, - Combo { units: vec![Var::Stun, Var::Red, Var::Green], var: Var::Banish }, - Combo { units: vec![Var::Stun, Var::Green, Var::Blue], var: Var::Silence }, - Combo { units: vec![Var::Stun, Var::Red, Var::Blue], var: Var::Hex }, + Combo { units: vec![Var::Stun, Var::Red, Var::Green], var: Var::Throw }, + Combo { units: vec![Var::Stun, Var::Green, Var::Blue], var: Var::Hex }, + Combo { units: vec![Var::Stun, Var::Red, Var::Blue], var: Var::Banish }, - 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::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 }, Combo { units: vec![Var::Attack, Var::Red, Var::Green], var: Var::Slay }, - Combo { units: vec![Var::Attack, Var::Green, Var::Blue], var: Var::Siphon }, + Combo { units: vec![Var::Attack, Var::Green, Var::Blue], var: Var::Siphon }, Combo { units: vec![Var::Attack, Var::Red, Var::Blue], var: Var::Chaos }, Combo { units: vec![Var::Damage, Var::Red, Var::Red], var: Var::RedDamageI },