Added sleep, changed recipe for clutch, taunt, hex, banish, throw

This commit is contained in:
Mashy 2019-05-03 14:08:56 +10:00
parent b2f3c147a1
commit 91e150ecec
4 changed files with 65 additions and 26 deletions

View File

@ -8,17 +8,33 @@ This project adheres to [Semantic Versioning](http://semver.org/).
Event::Skill Event::Skill
needed to convey the use of skill which is followed by other events 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 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 ### Fixed
### Changed ### Changed
Switch purify with reflect Switch purify with reflect
- Purify now GG + block instead of GB + block - Purify now GG + block (was GB + block)
- Purify now applies a small heal 45% multiplier green damage (power) - Purify now applies a small heal 45% multiplier green damage (power) for each debuff removed
- reflect now GB + block - reflect now GB + block (was GG + block)
- reflect restores blue shield
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 ## [0.1.0] - 2019-05-02

View File

@ -228,7 +228,8 @@ function getCombatSequence(event) {
if (['Healing'].includes(event[0]) if (['Healing'].includes(event[0])
&& (event[1].skill === 'Slay' && (event[1].skill === 'Slay'
|| event[1].skill === 'SiphonTick' || 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]) if (['Effect'].includes(event[0])
&& event[1].skill === 'Decay' && event[1].effect === 'Wither') return ['POST_SKILL']; && event[1].skill === 'Decay' && event[1].effect === 'Wither') return ['POST_SKILL'];

23
server/src/skill.rs Normal file → Executable file
View File

@ -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::Siphon => siphon(source, target, resolutions, Skill::Siphon),
Skill::SiphonTick => siphon_tick(source, target, resolutions, Skill::SiphonTick), // hot Skill::SiphonTick => siphon_tick(source, target, resolutions, Skill::SiphonTick), // hot
Skill::Slay => slay(source, target, resolutions, Skill::Slay), // hybrid dmg self heal 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::Slow => slow(source, target, resolutions, Skill::Slow), // speed slow
Skill::Snare => snare(source, target, resolutions, Skill::Snare), Skill::Snare => snare(source, target, resolutions, Skill::Snare),
Skill::Strangle => strangle(source, target, resolutions, Skill::Strangle), Skill::Strangle => strangle(source, target, resolutions, Skill::Strangle),
@ -481,6 +482,7 @@ pub enum Skill {
Reflect, Reflect,
Ruin, Ruin,
Slay, Slay,
Sleep,
Clutch, Clutch,
Taunt, Taunt,
Invert, Invert,
@ -564,7 +566,8 @@ impl Skill {
// Block Base // Block Base
Skill::Purify => 45, //Green dmg (heal) Skill::Purify => 45, //Green dmg (heal)
// Stun Base
Skill::Sleep => 240, //Green dmg (heal)
// Others // Others
Skill::CorruptionTick => 80, Skill::CorruptionTick => 80,
Skill::DecayTick => 25, Skill::DecayTick => 25,
@ -589,6 +592,8 @@ impl Skill {
Skill::Strangle => 2, Skill::Strangle => 2,
Skill::Stun => 2, Skill::Stun => 2,
Skill::Sleep => 3,
Skill::Throw => 2, Skill::Throw => 2,
Skill::Snare => 2, Skill::Snare => 2,
@ -675,6 +680,8 @@ impl Skill {
Skill::Recharge => Some(2), Skill::Recharge => Some(2),
Skill::Ruin => Some(3), Skill::Ruin => Some(3),
Skill::Slay => None, Skill::Slay => None,
Skill::Sleep => Some(3),
Skill::Strangle => Some(2), Skill::Strangle => Some(2),
Skill::StrangleTick => None, Skill::StrangleTick => None,
Skill::Clutch => Some(2), Skill::Clutch => Some(2),
@ -726,6 +733,7 @@ impl Skill {
Skill::Reflect => Category::Green, Skill::Reflect => Category::Green,
Skill::Haste => Category::Green, Skill::Haste => Category::Green,
Skill::Invert => Category::Green, Skill::Invert => Category::Green,
Skill::Sleep => Category::Green,
Skill::Blast => Category::Blue, Skill::Blast => Category::Blue,
Skill::Chaos => Category::Blue, Skill::Chaos => Category::Blue,
@ -804,7 +812,7 @@ impl Skill {
Skill::Block => true, Skill::Block => true,
Skill::Parry => true, Skill::Parry => true,
Skill::Clutch => true, Skill::Clutch => true,
Skill::Taunt => true, // Skill::Taunt => true,
Skill::Corrupt => true, Skill::Corrupt => true,
Skill::TestBlock => true, Skill::TestBlock => true,
@ -883,6 +891,17 @@ fn stun(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: S
return results; 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 { fn clutch(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
let effect = CrypEffect::new(Effect::Clutch, skill.duration()); let effect = CrypEffect::new(Effect::Clutch, skill.duration());
results.push(Resolution::new(source, target).event(target.add_effect(skill, effect))); results.push(Resolution::new(source, target).event(target.add_effect(skill, effect)));

39
server/src/vbox.rs Normal file → Executable file
View File

@ -66,6 +66,8 @@ pub enum Var {
Banish, Banish,
Blast, Blast,
Chaos, Chaos,
Clutch,
Corrupt,
Curse, Curse,
Decay, Decay,
Empower, Empower,
@ -83,6 +85,7 @@ pub enum Var {
Shield, Shield,
Silence, Silence,
Slay, Slay,
Sleep,
Slow, Slow,
Snare, Snare,
Strangle, Strangle,
@ -90,10 +93,8 @@ pub enum Var {
StrikeII, StrikeII,
StrikeIII, StrikeIII,
Siphon, Siphon,
Clutch,
Taunt, Taunt,
Throw, Throw,
Corrupt,
Triage, Triage,
@ -211,6 +212,7 @@ impl Var {
Var::Shield => Some(Skill::Shield), Var::Shield => Some(Skill::Shield),
Var::Silence => Some(Skill::Silence), Var::Silence => Some(Skill::Silence),
Var::Slay => Some(Skill::Slay), Var::Slay => Some(Skill::Slay),
Var::Sleep => Some(Skill::Sleep),
Var::Slow => Some(Skill::Slow), Var::Slow => Some(Skill::Slow),
Var::Siphon => Some(Skill::Siphon), Var::Siphon => Some(Skill::Siphon),
Var::Snare => Some(Skill::Snare), Var::Snare => Some(Skill::Snare),
@ -287,6 +289,7 @@ impl From<Skill> for Var {
Skill::Silence => Var::Silence, Skill::Silence => Var::Silence,
Skill::Siphon => Var::Siphon, Skill::Siphon => Var::Siphon,
Skill::Slay => Var::Slay, Skill::Slay => Var::Slay,
Skill::Sleep => Var::Sleep,
Skill::Slow => Var::Slow, Skill::Slow => Var::Slow,
Skill::Snare => Var::Snare, Skill::Snare => Var::Snare,
Skill::Strangle => Var::Strangle, Skill::Strangle => Var::Strangle,
@ -348,42 +351,42 @@ struct Combo {
fn get_combos() -> Vec<Combo> { fn get_combos() -> Vec<Combo> {
let mut combinations = 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::Green, Var::Green], var: Var::Triage },
Combo { units: vec![Var::Buff, Var::Blue, Var::Blue], var: Var::Amplify }, 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::Clutch }, Combo { units: vec![Var::Buff, Var::Red, Var::Green], var: Var::Taunt },
Combo { units: vec![Var::Buff, Var::Green, Var::Blue], var: Var::Curse }, 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 }, 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::Red, Var::Red], var: Var::Snare },
Combo { units: vec![Var::Debuff, Var::Green, Var::Green], var: Var::Purge }, 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::Blue, Var::Blue], var: Var::Silence },
Combo { units: vec![Var::Debuff, Var::Red, Var::Green], var: Var::Slow }, 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::Green, Var::Blue], var: Var::Decay },
Combo { units: vec![Var::Debuff, Var::Red, Var::Blue], var: Var::Invert }, 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::Red, Var::Red], var: Var::Parry },
Combo { units: vec![Var::Block, Var::Green, Var::Green], var: Var::Purify }, 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::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::Green, Var::Blue], var: Var::Reflect },
Combo { units: vec![Var::Block, Var::Red, Var::Blue], var: Var::Recharge }, 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::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::Blue, Var::Blue], var: Var::Ruin },
Combo { units: vec![Var::Stun, Var::Red, Var::Green], var: Var::Banish }, Combo { units: vec![Var::Stun, Var::Red, Var::Green], var: Var::Throw },
Combo { units: vec![Var::Stun, Var::Green, Var::Blue], var: Var::Silence }, Combo { units: vec![Var::Stun, Var::Green, Var::Blue], var: Var::Hex },
Combo { units: vec![Var::Stun, Var::Red, 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::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::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 },
Combo { units: vec![Var::Attack, Var::Red, Var::Green], var: Var::Slay }, 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::Attack, Var::Red, Var::Blue], var: Var::Chaos },
Combo { units: vec![Var::Damage, Var::Red, Var::Red], var: Var::RedDamageI }, Combo { units: vec![Var::Damage, Var::Red, Var::Red], var: Var::RedDamageI },