From 1a2d2995cc27d7df92d63f07597bc4d278d09d1b Mon Sep 17 00:00:00 2001 From: Mashy Date: Mon, 11 Nov 2019 12:34:14 +1000 Subject: [PATCH] add "Purified" effect to Purify --- client/src/utils.jsx | 1 + server/src/effect.rs | 46 +++++++++++++++++++++++++++----------------- server/src/item.rs | 8 +++++--- server/src/skill.rs | 10 ++++++++++ 4 files changed, 44 insertions(+), 21 deletions(-) diff --git a/client/src/utils.jsx b/client/src/utils.jsx index e792b780..c23e9012 100644 --- a/client/src/utils.jsx +++ b/client/src/utils.jsx @@ -282,6 +282,7 @@ function effectInfo(i) { case 'Restrict': return 'Disable construct from casting any red skills'; case 'Stun': return 'Stunned construct cannot use skills'; case 'Intercept': return 'Redirect any skills on team to this target construct'; + case 'Purified': return `Construct will take ${i.meta[1] - 100}% increased healing`; case 'Vulnerable': return `Construct will take ${i.meta[1] - 100}% increased red damage`; case 'Silence': return 'Disable construct from casting any blue skills'; case 'Wither': return `Construct will take ${100 - i.meta[1]}% reduced healing`; // diff --git a/server/src/effect.rs b/server/src/effect.rs index c2c77392..77d110f9 100644 --- a/server/src/effect.rs +++ b/server/src/effect.rs @@ -10,20 +10,21 @@ pub enum Effect { Banish, Block, Buff, - Sustain, + Counter, Curse, Haste, Hybrid, + Intercept, Invert, - Counter, + Purified, Purge, Reflect, - Slow, Restrict, - Stun, - Intercept, - Vulnerable, Silence, + Slow, + Stun, + Sustain, + Vulnerable, Wither, // Reduce green dmg (healing) taken // electric is the buff that applies @@ -99,20 +100,24 @@ impl Effect { pub fn modifications(&self) -> Vec { match self { - Effect::Vulnerable => vec![Stat::RedDamageTaken], + // Bases Effect::Block => vec![Stat::RedDamageTaken, Stat::BlueDamageTaken], Effect::Buff => vec![Stat::BluePower, Stat::RedPower, Stat::Speed], - - Effect::Absorption => vec![Stat::RedPower, Stat::BluePower], - - Effect::Amplify => vec![Stat::RedPower, Stat::BluePower], - Effect::Curse => vec![Stat::RedDamageTaken, Stat::BlueDamageTaken], - - Effect::Hybrid => vec![Stat::GreenPower], - Effect::Wither => vec![Stat::GreenDamageTaken], - - Effect::Haste => vec![Stat::Speed], Effect::Slow => vec![Stat::Speed], + + // Power changes + Effect::Absorption => vec![Stat::RedPower, Stat::BluePower], + Effect::Amplify => vec![Stat::RedPower, Stat::BluePower], + Effect::Hybrid => vec![Stat::GreenPower], + + // Damage taken changes + Effect::Curse => vec![Stat::RedDamageTaken, Stat::BlueDamageTaken], + Effect::Purified => vec![Stat::GreenDamageTaken], // increased green taken + Effect::Vulnerable => vec![Stat::RedDamageTaken], + Effect::Wither => vec![Stat::GreenDamageTaken], // reduced green taken + + // Speed + Effect::Haste => vec![Stat::Speed], _ => vec![], } @@ -128,6 +133,7 @@ impl Effect { Effect::Haste | Effect::Slow | Effect::Hybrid | + Effect::Purified | Effect::Wither => value.pct(match meta { Some(EffectMeta::Multiplier(d)) => d, _ => 100, @@ -135,7 +141,10 @@ impl Effect { Effect::Absorption => value + match meta { Some(EffectMeta::AddedDamage(d)) => d, - _ => panic!("absorb meta not damage"), + _ => { + warn!("absorb meta not damage"); + return 0; + } }, _ => { @@ -185,6 +194,7 @@ impl Effect { Effect::Decay => Some(Colour::Blue), Effect::Regen => Some(Colour::Green), Effect::Siphon => Some(Colour::Blue), + Effect::Purified => Some(Colour::Green), Effect::Ko => None, } diff --git a/server/src/item.rs b/server/src/item.rs index abb9578b..92848763 100644 --- a/server/src/item.rs +++ b/server/src/item.rs @@ -824,15 +824,17 @@ impl Item { Item::Purge| Item::PurgePlus | Item::PurgePlusPlus => format!( - "Remove buffs from target construct. + "Remove all effects from target construct. Applies purge disabling target green skills for {:?}T.", self.into_skill().unwrap().effect()[0].get_duration()), Item::Purify| Item::PurifyPlus | Item::PurifyPlusPlus => format!( - "Remove debuffs and heals for {:?}% GreenPower per debuff removed.", - self.into_skill().unwrap().multiplier()), + "Remove all effects and heals for {:?}% GreenPower per effect removed. + Applies Purified increasing healing taken by {:?}%.", + self.into_skill().unwrap().multiplier(), + self.into_skill().unwrap().effect()[0].get_multiplier() - 100), Item::Reflect| Item::ReflectPlus | diff --git a/server/src/skill.rs b/server/src/skill.rs index 01de62c7..3d3fb3ce 100644 --- a/server/src/skill.rs +++ b/server/src/skill.rs @@ -1022,6 +1022,14 @@ impl Skill { meta: Some(EffectMeta::Skill(Skill::TriageTickPlus)), tick: None}], Skill::TriagePlusPlus => vec![ConstructEffect {effect: Effect::Triage, duration: 4, meta: Some(EffectMeta::Skill(Skill::TriageTickPlusPlus)), tick: None}], + + Skill::Purify => vec![ConstructEffect { effect: Effect::Purified, duration: 2, + meta: Some(EffectMeta::Multiplier(150)), tick: None}], + Skill::PurifyPlus => vec![ConstructEffect { effect: Effect::Purified, duration: 2, + meta: Some(EffectMeta::Multiplier(175)), tick: None}], + Skill::PurifyPlusPlus => vec![ConstructEffect { effect: Effect::Purified, duration: 2, + meta: Some(EffectMeta::Multiplier(200)), tick: None}], + _ => { panic!("{:?} no skill effect", self); }, @@ -1841,6 +1849,8 @@ fn purify(source: &mut Construct, target: &mut Construct, mut results: Resolutio .into_iter() .for_each(|e| results.push(Resolution::new(source, target).event(e).stages(EventStages::PostOnly))); } + let effect = skill.effect()[0]; + results.push(Resolution::new(source, target).event(target.add_effect(skill, effect)).stages(EventStages::PostOnly)); return results; }