From ddfe40d7c1f81967260ff1d20e2f09cd8fb88404 Mon Sep 17 00:00:00 2001 From: Mashy Date: Wed, 22 May 2019 15:03:31 +1000 Subject: [PATCH] SkillEffect -> CrypEffect --- server/src/skill.rs | 56 ++++++++++++++++----------------------------- 1 file changed, 20 insertions(+), 36 deletions(-) diff --git a/server/src/skill.rs b/server/src/skill.rs index ce393921..70156a9d 100644 --- a/server/src/skill.rs +++ b/server/src/skill.rs @@ -693,23 +693,22 @@ impl Skill { }), */ - pub fn effect(&self) -> SkillEffect { + pub fn effect(&self) -> CrypEffect { // Buff -> Effect, Multiplier, duration match self { - // Modifiers - Skill::Amplify => SkillEffect::Modifier {effect: Effect::Amplify, multiplier: 150, duration: 2}, - Skill::Block => SkillEffect::Modifier {effect: Effect::Block, multiplier: 50, duration: 1}, - Skill::Buff => SkillEffect::Modifier {effect: Effect::Buff, multiplier: 125, duration: 2}, - Skill::Curse => SkillEffect::Modifier {effect: Effect::Curse, multiplier: 150, duration: 2}, - Skill::Debuff => SkillEffect::Modifier {effect: Effect::Slow, multiplier: 50, duration: 3}, - Skill::Decay => SkillEffect::Modifier {effect: Effect::Wither, multiplier: 50, duration: 3}, - Skill::Impurity => SkillEffect::Modifier {effect: Effect::Impurity, multiplier: 150, duration: 3}, - Skill::Haste => SkillEffect::Modifier {effect: Effect::Haste, multiplier: 150, duration: 2}, - Skill::Throw => SkillEffect::Modifier {effect: Effect::Vulnerable, multiplier: 150, duration: 3}, + Skill::Amplify => CrypEffect {effect: Effect::Amplify, duration: 2, meta: Some(EffectMeta::Multiplier(150)), tick: None}, + Skill::Block => CrypEffect {effect: Effect::Block, duration: 1, meta: Some(EffectMeta::Multiplier(50)), tick: None}, + Skill::Buff => CrypEffect {effect: Effect::Buff, duration: 2, meta: Some(EffectMeta::Multiplier(125)), tick: None }, + Skill::Curse => CrypEffect {effect: Effect::Curse, duration: 2, meta: Some(EffectMeta::Multiplier(150)), tick: None}, + Skill::Debuff => CrypEffect {effect: Effect::Slow, duration: 3, meta: Some(EffectMeta::Multiplier(50)), tick: None }, + Skill::Decay => CrypEffect {effect: Effect::Wither, duration: 3, meta: Some(EffectMeta::Multiplier(50)), tick: None }, + Skill::Impurity => CrypEffect {effect: Effect::Impurity, duration: 3, meta: Some(EffectMeta::Multiplier(150)), tick: None }, + Skill::Haste => CrypEffect {effect: Effect::Haste, duration: 2, meta: Some(EffectMeta::Multiplier(150)), tick: None }, + Skill::Throw => CrypEffect {effect: Effect::Vulnerable, duration: 3, meta: Some(EffectMeta::Multiplier(150)), tick: None}, // Disables - Skill::Stun => SkillEffect::Disable {effect: Effect::Stun, duration: 2}, + Skill::Stun => CrypEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}, _ => { panic!("no skill effect"); @@ -989,21 +988,6 @@ impl Skill { } } -fn apply_modifier(skill: Skill, source: &mut Cryp, target: &mut Cryp) -> Resolution { - let skillEffect = skill.effect(); - match skillEffect { - SkillEffect::Modifier { effect, multiplier, duration } => { - let crypEffect = CrypEffect::new(effect, duration) - .set_meta(EffectMeta::Multiplier(multiplier)); - return Resolution::new(source, target).event(target.add_effect(skill, crypEffect)); - } - SkillEffect::Disable { effect, duration } => { - let crypEffect = CrypEffect::new(effect, duration); - return Resolution::new(source, target).event(target.add_effect(skill, crypEffect)); - } - } -} - fn touch(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions { target.deal_red_damage(skill, 0) .into_iter() @@ -1076,7 +1060,7 @@ fn taunt(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: fn throw(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions { let stun = CrypEffect::new(Effect::Stun, skill.duration()); results.push(Resolution::new(source, target).event(target.add_effect(skill, stun))); - results.push(apply_modifier(skill, source, target)); + results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect()))); return results; } @@ -1111,12 +1095,12 @@ fn strangle_tick(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, } fn block(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions { - results.push(apply_modifier(skill, source, target)); + results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect()))); return results; } fn buff(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions { - results.push(apply_modifier(skill, source, target)); + results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect()))); return results; } @@ -1226,17 +1210,17 @@ fn blast(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: } fn amplify(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions { - results.push(apply_modifier(skill, source, target)); + results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect()))); return results;; } fn haste(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions { - results.push(apply_modifier(skill, source, target)); + results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect()))); return results;; } fn debuff(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions { - results.push(apply_modifier(skill, source, target)); + results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect()))); return results;; } @@ -1245,7 +1229,7 @@ fn decay(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: .set_tick(Cast::new_tick(source, target, Skill::DecayTick)); results.push(Resolution::new(source, target).event(target.add_effect(skill, decay))); - results.push(apply_modifier(skill, source, target)); + results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect()))); return decay_tick(source, target, results, Skill::DecayTick); } @@ -1310,12 +1294,12 @@ fn hatred(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, reflec } fn curse(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions { - results.push(apply_modifier(skill, source, target)); + results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect()))); return results;; } fn impurity(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions { - results.push(apply_modifier(skill, source, target)); + results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect()))); return results;; }