Buff effects represented as perectanges, slow is now applied by debuff

This commit is contained in:
Mashy 2019-05-07 16:39:17 +10:00
parent d87c73411e
commit ae8a384b39
3 changed files with 33 additions and 26 deletions

View File

@ -39,13 +39,21 @@ New skill `Impurity`
### Fixed ### Fixed
- Ruin sends a skill event so ruin only casts once, followed by debuffs - Ruin sends a skill event so ruin only casts once, followed by debuffs
-
### Changed ### Changed
- Removed Empower (Buff + RR) -> combined effect with amplify - Removed Empower (Buff + RR) -> combined effect with amplify
- Skill Slow removed
- Debuff is now a usable skill `(add buff as a usable skill also)`
Applies slow effect previously applied by skill Slow
Slow effect lasts 3T
Cooldown 1T
- Amplify - Amplify
Changed to Buff + RB (was Buff + BB) Changed to Buff + RB (was Buff + BB)
Inc red and blue multiplier changed 200% -> 150%
Increases both red and blue power. Increases both red and blue power.
- Attack - Attack
@ -59,11 +67,17 @@ New skill `Impurity`
RNG range changed from (0 - 20%) -> (0 - 30%) RNG range changed from (0 - 20%) -> (0 - 30%)
Same dmg range but more RNG Same dmg range but more RNG
- Curse
Inc red and blue multiplier changed 200% -> 150%
`(More reworks soon to make this skill fun)`
- Haste - Haste
Changed to Buff + RG (was Buff + RB) Changed to Buff + RG (was Buff + RB)
Buff causes target to deal an extra attack when using red attack base skills (strike / slay / chaos) Buff causes target to deal an extra attack when using red attack base skills (strike / slay / chaos)
Extra attack does 25% source speed as red damage Extra attack does 25% source speed as red damage
Cooldown increased to 2T Cooldown increased to 2T
Speed bonused reduced 200% -> 150%
- Heal - Heal
Changed multiplier 120% -> 130% Changed multiplier 120% -> 130%
@ -84,6 +98,7 @@ New skill `Impurity`
- Throw - Throw
Stun duration reduced from 2T -> 1T Stun duration reduced from 2T -> 1T
Vulnerable dmg bonus reduced 200% -> 150%
- Triage - Triage
Multiplier changed 65% -> 75% Multiplier changed 65% -> 75%
@ -131,13 +146,8 @@ New skill `Impurity`
Cooldown changed 1T -> 2T Cooldown changed 1T -> 2T
Debuff duration increased 2T -> 3T Debuff duration increased 2T -> 3T
Snare Snare
<<<<<<< HEAD
Now also deals damage amount of 40% base blue damage Now also deals damage amount of 40% base blue damage
This damage amount does 45% more damage per red skill blocked This damage amount does 45% more damage per red skill blocked
=======
Now also deals damage amount of 40% base red damage
This damage amount does 45% more damage per red skill blocked
>>>>>>> rebalance
Maximum = (0.40)(1.35)*base_red_damage Maximum = (0.40)(1.35)*base_red_damage
Cooldown changed 1T -> 2T Cooldown changed 1T -> 2T
Debuff duration increased 2T -> 3T Debuff duration increased 2T -> 3T

View File

@ -75,6 +75,7 @@ pub fn resolve(skill: Skill, source: &mut Cryp, target: &mut Cryp, mut resolutio
Skill::Corrupt => corrupt(source, target, resolutions, skill), Skill::Corrupt => corrupt(source, target, resolutions, skill),
Skill::CorruptionTick => corruption_tick(source, target, resolutions, skill), Skill::CorruptionTick => corruption_tick(source, target, resolutions, skill),
Skill::Curse => curse(source, target, resolutions, skill), Skill::Curse => curse(source, target, resolutions, skill),
Skill::Debuff => debuff(source, target, resolutions, skill), // speed slow
Skill::Decay => decay(source, target, resolutions, skill), // dot Skill::Decay => decay(source, target, resolutions, skill), // dot
Skill::DecayTick => decay_tick(source, target, resolutions, skill), // dot Skill::DecayTick => decay_tick(source, target, resolutions, skill), // dot
Skill::Haste => haste(source, target, resolutions, skill), // speed slow Skill::Haste => haste(source, target, resolutions, skill), // speed slow
@ -99,7 +100,6 @@ pub fn resolve(skill: Skill, source: &mut Cryp, target: &mut Cryp, mut resolutio
Skill::SiphonTick => siphon_tick(source, target, resolutions, skill), // hot Skill::SiphonTick => siphon_tick(source, target, resolutions, skill), // hot
Skill::Slay => slay(source, target, resolutions, skill), // hybrid dmg self heal Skill::Slay => slay(source, target, resolutions, skill), // hybrid dmg self heal
Skill::Sleep => sleep(source, target, resolutions, skill), // speed slow Skill::Sleep => sleep(source, target, resolutions, skill), // speed slow
Skill::Slow => slow(source, target, resolutions, skill), // speed slow
Skill::Snare => snare(source, target, resolutions, skill), Skill::Snare => snare(source, target, resolutions, skill),
Skill::Strangle => strangle(source, target, resolutions, skill), Skill::Strangle => strangle(source, target, resolutions, skill),
Skill::StrangleTick => strangle_tick(source, target, resolutions, skill), Skill::StrangleTick => strangle_tick(source, target, resolutions, skill),
@ -387,17 +387,17 @@ impl Effect {
pub fn apply(&self, value: u64, meta: Option<EffectMeta>) -> u64 { pub fn apply(&self, value: u64, meta: Option<EffectMeta>) -> u64 {
match self { match self {
Effect::Vulnerable => value << 1, Effect::Vulnerable => value.pct(150),
Effect::Block => value >> 1, Effect::Block => value.pct(50),
Effect::Amplify => value << 1, Effect::Amplify => value.pct(150),
Effect::Curse => value << 1, Effect::Curse => value.pct(150),
Effect::Haste => value << 1, Effect::Haste => value.pct(150),
Effect::Slow => value >> 1, Effect::Slow => value.pct(50),
Effect::Impurity => value << 1, Effect::Impurity => value.pct(150),
Effect::Wither => value >> 1, Effect::Wither => value.pct(50),
Effect::Hatred => value + match meta { Effect::Hatred => value + match meta {
Some(EffectMeta::AddedDamage(d)) => d, Some(EffectMeta::AddedDamage(d)) => d,
@ -494,11 +494,13 @@ pub enum Category {
#[derive(Debug,Clone,Copy,PartialEq,Serialize,Deserialize)] #[derive(Debug,Clone,Copy,PartialEq,Serialize,Deserialize)]
pub enum Skill { pub enum Skill {
Attack, Attack,
Debuff,
Block, // reduce damage
Stun,
// ----------------- // -----------------
// Nature // Nature
// ----------------- // -----------------
Block, // reduce damage
Parry, // avoid all damage Parry, // avoid all damage
Riposte, Riposte,
Snare, Snare,
@ -521,7 +523,6 @@ pub enum Skill {
Strike, Strike,
StrikeII, StrikeII,
StrikeIII, StrikeIII,
Stun,
// Evade, // actively evade // Evade, // actively evade
// ----------------- // -----------------
@ -568,7 +569,6 @@ pub enum Skill {
Hex, Hex,
Haste, Haste,
HasteStrike, HasteStrike,
Slow,
// used by tests, no cd, 100% multiplier // used by tests, no cd, 100% multiplier
TestAttack, TestAttack,
@ -627,7 +627,7 @@ impl Skill {
Skill::Block => 1, Skill::Block => 1,
Skill::Parry => 1, Skill::Parry => 1,
Skill::Clutch => 1, Skill::Clutch => 1,
Skill::Debuff => 3,
Skill::Reflect => 1, Skill::Reflect => 1,
Skill::Injure => 2, Skill::Injure => 2,
@ -649,7 +649,6 @@ impl Skill {
Skill::Curse => 2, Skill::Curse => 2,
Skill::Banish => 1, Skill::Banish => 1,
Skill::Slow => 2,
Skill::Haste => 2, Skill::Haste => 2,
Skill::Amplify => 2, Skill::Amplify => 2,
@ -689,6 +688,7 @@ impl Skill {
pub fn base_cd(&self) -> Cooldown { pub fn base_cd(&self) -> Cooldown {
match self { match self {
Skill::Attack => None, Skill::Attack => None,
Skill::Debuff => Some(1),
Skill::Strike => None, Skill::Strike => None,
Skill::StrikeII => None, Skill::StrikeII => None,
Skill::StrikeIII => None, Skill::StrikeIII => None,
@ -721,7 +721,6 @@ impl Skill {
Skill::Haste => Some(2), Skill::Haste => Some(2),
Skill::HasteStrike => None, // Used in haste Skill::HasteStrike => None, // Used in haste
Skill::Slow => None,
Skill::Reflect => Some(2), Skill::Reflect => Some(2),
Skill::Recharge => Some(2), Skill::Recharge => Some(2),
Skill::Ruin => Some(3), Skill::Ruin => Some(3),
@ -797,7 +796,7 @@ impl Skill {
Skill::Purge => Category::Blue, Skill::Purge => Category::Blue,
Skill::Banish => Category::Blue, Skill::Banish => Category::Blue,
Skill::Hex => Category::Blue, Skill::Hex => Category::Blue,
Skill::Slow => Category::Blue, Skill::Debuff => Category::Blue,
Skill::Ruin => Category::Blue, Skill::Ruin => Category::Blue,
Skill::Hostility => Category::Blue, Skill::Hostility => Category::Blue,
Skill::Corrupt => Category::Blue, Skill::Corrupt => Category::Blue,
@ -1128,7 +1127,7 @@ fn haste(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill:
return results;; return results;;
} }
fn slow(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions { fn debuff(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
let effect = CrypEffect::new(Effect::Slow, skill.duration()); let effect = CrypEffect::new(Effect::Slow, 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)));
return results;; return results;;
@ -1638,7 +1637,7 @@ mod tests {
amplify(&mut x.clone(), &mut x, vec![], Skill::Amplify); amplify(&mut x.clone(), &mut x, vec![], Skill::Amplify);
assert!(x.effects.iter().any(|e| e.effect == Effect::Amplify)); assert!(x.effects.iter().any(|e| e.effect == Effect::Amplify));
assert_eq!(x.blue_damage(), 100); assert_eq!(x.blue_damage(), 75);
} }
#[test] #[test]

View File

@ -86,7 +86,6 @@ pub enum Var {
Silence, Silence,
Slay, Slay,
Sleep, Sleep,
Slow,
Snare, Snare,
Strangle, Strangle,
Strike, Strike,
@ -196,6 +195,7 @@ impl Var {
Var::Block => Some(Skill::Block), Var::Block => Some(Skill::Block),
Var::Chaos => Some(Skill::Chaos), Var::Chaos => Some(Skill::Chaos),
Var::Curse => Some(Skill::Curse), Var::Curse => Some(Skill::Curse),
Var::Debuff => Some(Skill::Debuff),
Var::Decay => Some(Skill::Decay), Var::Decay => Some(Skill::Decay),
Var::Haste => Some(Skill::Haste), Var::Haste => Some(Skill::Haste),
Var::Heal => Some(Skill::Heal), Var::Heal => Some(Skill::Heal),
@ -213,7 +213,6 @@ impl Var {
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::Sleep => Some(Skill::Sleep),
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),
Var::Strangle => Some(Skill::Strangle), Var::Strangle => Some(Skill::Strangle),
@ -290,7 +289,6 @@ impl From<Skill> for Var {
Skill::Siphon => Var::Siphon, Skill::Siphon => Var::Siphon,
Skill::Slay => Var::Slay, Skill::Slay => Var::Slay,
Skill::Sleep => Var::Sleep, Skill::Sleep => Var::Sleep,
Skill::Slow => Var::Slow,
Skill::Snare => Var::Snare, Skill::Snare => Var::Snare,
Skill::Strangle => Var::Strangle, Skill::Strangle => Var::Strangle,
Skill::Strike => Var::Strike, Skill::Strike => Var::Strike,