add "Purified" effect to Purify

This commit is contained in:
Mashy 2019-11-11 12:34:14 +10:00
parent 8eaa3dc1c0
commit 1a2d2995cc
4 changed files with 44 additions and 21 deletions

View File

@ -282,6 +282,7 @@ function effectInfo(i) {
case 'Restrict': return 'Disable construct from casting any red skills'; case 'Restrict': return 'Disable construct from casting any red skills';
case 'Stun': return 'Stunned construct cannot use skills'; case 'Stun': return 'Stunned construct cannot use skills';
case 'Intercept': return 'Redirect any skills on team to this target construct'; 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 'Vulnerable': return `Construct will take ${i.meta[1] - 100}% increased red damage`;
case 'Silence': return 'Disable construct from casting any blue skills'; case 'Silence': return 'Disable construct from casting any blue skills';
case 'Wither': return `Construct will take ${100 - i.meta[1]}% reduced healing`; // case 'Wither': return `Construct will take ${100 - i.meta[1]}% reduced healing`; //

View File

@ -10,20 +10,21 @@ pub enum Effect {
Banish, Banish,
Block, Block,
Buff, Buff,
Sustain, Counter,
Curse, Curse,
Haste, Haste,
Hybrid, Hybrid,
Intercept,
Invert, Invert,
Counter, Purified,
Purge, Purge,
Reflect, Reflect,
Slow,
Restrict, Restrict,
Stun,
Intercept,
Vulnerable,
Silence, Silence,
Slow,
Stun,
Sustain,
Vulnerable,
Wither, // Reduce green dmg (healing) taken Wither, // Reduce green dmg (healing) taken
// electric is the buff that applies // electric is the buff that applies
@ -99,20 +100,24 @@ impl Effect {
pub fn modifications(&self) -> Vec<Stat> { pub fn modifications(&self) -> Vec<Stat> {
match self { match self {
Effect::Vulnerable => vec![Stat::RedDamageTaken], // Bases
Effect::Block => vec![Stat::RedDamageTaken, Stat::BlueDamageTaken], Effect::Block => vec![Stat::RedDamageTaken, Stat::BlueDamageTaken],
Effect::Buff => vec![Stat::BluePower, Stat::RedPower, Stat::Speed], 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], 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![], _ => vec![],
} }
@ -128,6 +133,7 @@ impl Effect {
Effect::Haste | Effect::Haste |
Effect::Slow | Effect::Slow |
Effect::Hybrid | Effect::Hybrid |
Effect::Purified |
Effect::Wither => value.pct(match meta { Effect::Wither => value.pct(match meta {
Some(EffectMeta::Multiplier(d)) => d, Some(EffectMeta::Multiplier(d)) => d,
_ => 100, _ => 100,
@ -135,7 +141,10 @@ impl Effect {
Effect::Absorption => value + match meta { Effect::Absorption => value + match meta {
Some(EffectMeta::AddedDamage(d)) => d, 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::Decay => Some(Colour::Blue),
Effect::Regen => Some(Colour::Green), Effect::Regen => Some(Colour::Green),
Effect::Siphon => Some(Colour::Blue), Effect::Siphon => Some(Colour::Blue),
Effect::Purified => Some(Colour::Green),
Effect::Ko => None, Effect::Ko => None,
} }

View File

@ -824,15 +824,17 @@ impl Item {
Item::Purge| Item::Purge|
Item::PurgePlus | Item::PurgePlus |
Item::PurgePlusPlus => format!( Item::PurgePlusPlus => format!(
"Remove buffs from target construct. "Remove all effects from target construct.
Applies purge disabling target green skills for {:?}T.", Applies purge disabling target green skills for {:?}T.",
self.into_skill().unwrap().effect()[0].get_duration()), self.into_skill().unwrap().effect()[0].get_duration()),
Item::Purify| Item::Purify|
Item::PurifyPlus | Item::PurifyPlus |
Item::PurifyPlusPlus => format!( Item::PurifyPlusPlus => format!(
"Remove debuffs and heals for {:?}% GreenPower per debuff removed.", "Remove all effects and heals for {:?}% GreenPower per effect removed.
self.into_skill().unwrap().multiplier()), Applies Purified increasing healing taken by {:?}%.",
self.into_skill().unwrap().multiplier(),
self.into_skill().unwrap().effect()[0].get_multiplier() - 100),
Item::Reflect| Item::Reflect|
Item::ReflectPlus | Item::ReflectPlus |

View File

@ -1022,6 +1022,14 @@ impl Skill {
meta: Some(EffectMeta::Skill(Skill::TriageTickPlus)), tick: None}], meta: Some(EffectMeta::Skill(Skill::TriageTickPlus)), tick: None}],
Skill::TriagePlusPlus => vec![ConstructEffect {effect: Effect::Triage, duration: 4, Skill::TriagePlusPlus => vec![ConstructEffect {effect: Effect::Triage, duration: 4,
meta: Some(EffectMeta::Skill(Skill::TriageTickPlusPlus)), tick: None}], 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); panic!("{:?} no skill effect", self);
}, },
@ -1841,6 +1849,8 @@ fn purify(source: &mut Construct, target: &mut Construct, mut results: Resolutio
.into_iter() .into_iter()
.for_each(|e| results.push(Resolution::new(source, target).event(e).stages(EventStages::PostOnly))); .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; return results;
} }