From 479cd5a423681bbede19bbba0b4bb0721beb7359 Mon Sep 17 00:00:00 2001 From: Mashy Date: Wed, 22 May 2019 22:25:36 +1000 Subject: [PATCH] RIP Secondary Duration --- server/src/item.rs | 6 ++-- server/src/skill.rs | 82 +++++++++++++++++++-------------------------- 2 files changed, 38 insertions(+), 50 deletions(-) diff --git a/server/src/item.rs b/server/src/item.rs index 38ef8a22..ee722a33 100644 --- a/server/src/item.rs +++ b/server/src/item.rs @@ -338,7 +338,7 @@ impl Item { "Self targetting defensive for {:?}T. Applies corrupt to attackers dealing blue damage {:?}% blue power per turn for {:?}T.", self.into_skill().unwrap().effect().first().unwrap().get_duration(), Skill::Corrupt.multiplier(), - self.into_skill().unwrap().effect().first().unwrap().get_duration()), // Need secondary + self.into_skill().unwrap().effect().last().unwrap().get_duration()), Item::Curse => format!( @@ -354,7 +354,7 @@ impl Item { "Gain Hostility for {:?}T. {} Hatred lasts {:?}T", self.into_skill().unwrap().effect().first().unwrap().get_duration(), "When attacked by Hostility you gain Hatred which increased red and blue power based on damage taken.", - self.into_skill().unwrap().secondary_duration()), + self.into_skill().unwrap().effect().last().unwrap().get_duration()), Item::Haste => format!( "{} {:?}{}. Lasts {:?}T", @@ -459,7 +459,7 @@ impl Item { Item::Throw => format!( "Stun the target for {:?}T and applies Vulnerable increasing red damage taken by 50% for {:?}T", self.into_skill().unwrap().effect().first().unwrap().get_duration(), - self.into_skill().unwrap().secondary_duration()), + self.into_skill().unwrap().effect().last().unwrap().get_duration()), Item::Triage => format!( "Heals target for {:?}% green power each turn. Lasts {:?}T", diff --git a/server/src/skill.rs b/server/src/skill.rs index e99e4cd7..9d8c6888 100644 --- a/server/src/skill.rs +++ b/server/src/skill.rs @@ -644,41 +644,43 @@ impl Skill { pub fn effect(&self) -> Vec { match self { // Modifiers - Skill::Amplify => vec![CrypEffect {effect: Effect::Amplify, duration: 2, meta: Some(EffectMeta::Multiplier(150)), tick: None}], - Skill::Banish => vec![CrypEffect {effect: Effect::Banish, duration: 1, meta: None, tick: None}], - Skill::Block => vec![CrypEffect {effect: Effect::Block, duration: 1, meta: Some(EffectMeta::Multiplier(50)), tick: None}], - Skill::Buff => vec![CrypEffect {effect: Effect::Buff, duration: 2, meta: Some(EffectMeta::Multiplier(125)), tick: None }], - Skill::Corrupt => vec![CrypEffect {effect: Effect::Corrupt, duration: 2, meta: None, tick: None}], - Skill::Clutch => vec![CrypEffect {effect: Effect::Clutch, duration: 1, meta: None, tick: None }], - Skill::Curse => vec![CrypEffect {effect: Effect::Curse, duration: 2, meta: Some(EffectMeta::Multiplier(150)), tick: None}], - Skill::Debuff => vec![CrypEffect {effect: Effect::Slow, duration: 3, meta: Some(EffectMeta::Multiplier(50)), tick: None }], - Skill::Decay => vec![ - CrypEffect {effect: Effect::Wither, duration: 3, meta: Some(EffectMeta::Multiplier(50)), tick: None }, + Skill::Amplify => vec![CrypEffect {effect: Effect::Amplify, duration: 2, meta: Some(EffectMeta::Multiplier(150)), tick: None}], + Skill::Banish => vec![CrypEffect {effect: Effect::Banish, duration: 1, meta: None, tick: None}], + Skill::Block => vec![CrypEffect {effect: Effect::Block, duration: 1, meta: Some(EffectMeta::Multiplier(50)), tick: None}], + Skill::Buff => vec![CrypEffect {effect: Effect::Buff, duration: 2, meta: Some(EffectMeta::Multiplier(125)), tick: None }], + + Skill::Corrupt => vec![CrypEffect {effect: Effect::Corrupt, duration: 2, meta: None, tick: None}, + CrypEffect {effect: Effect::Corruption, duration: 3, meta: None, tick: None}], + + Skill::Clutch => vec![CrypEffect {effect: Effect::Clutch, duration: 1, meta: None, tick: None }], + Skill::Curse => vec![CrypEffect {effect: Effect::Curse, duration: 2, meta: Some(EffectMeta::Multiplier(150)), tick: None}], + Skill::Debuff => vec![CrypEffect {effect: Effect::Slow, duration: 3, meta: Some(EffectMeta::Multiplier(50)), tick: None }], + Skill::Decay => vec![CrypEffect {effect: Effect::Wither, duration: 3, meta: Some(EffectMeta::Multiplier(50)), tick: None }, CrypEffect {effect: Effect::Decay, duration: 3, meta: None, tick: None }], - Skill::Haste => vec![CrypEffect {effect: Effect::Haste, duration: 2, meta: Some(EffectMeta::Multiplier(150)), tick: None }], - Skill::Hex => vec![CrypEffect {effect: Effect::Hex, duration: 2, meta: None, tick: None}], - Skill::Hostility => vec![CrypEffect {effect: Effect::Hostility, duration: 2, meta: None, tick: None}], - Skill::Impurity => vec![CrypEffect {effect: Effect::Impurity, duration: 3, meta: Some(EffectMeta::Multiplier(150)), tick: None }], - Skill::Invert => vec![CrypEffect {effect: Effect::Invert, duration: 2, meta: None, tick: None}], + Skill::Haste => vec![CrypEffect {effect: Effect::Haste, duration: 2, meta: Some(EffectMeta::Multiplier(150)), tick: None }], + Skill::Hex => vec![CrypEffect {effect: Effect::Hex, duration: 2, meta: None, tick: None}], + Skill::Hostility => vec![CrypEffect {effect: Effect::Hostility, duration: 2, meta: None, tick: None}, + CrypEffect {effect: Effect::Hatred, duration: 5, meta: None, tick: None}], + Skill::Impurity => vec![CrypEffect {effect: Effect::Impurity, duration: 3, meta: Some(EffectMeta::Multiplier(150)), tick: None }], + Skill::Invert => vec![CrypEffect {effect: Effect::Invert, duration: 2, meta: None, tick: None}], - Skill::Parry => vec![CrypEffect {effect: Effect::Parry, duration: 2, meta: None, tick: None }], - Skill::Reflect => vec![CrypEffect {effect: Effect::Reflect, duration: 1, meta: None, tick: None }], - Skill::Throw => vec![ - CrypEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}, + Skill::Parry => vec![CrypEffect {effect: Effect::Parry, duration: 2, meta: None, tick: None }], + Skill::Reflect => vec![CrypEffect {effect: Effect::Reflect, duration: 1, meta: None, tick: None }], + Skill::Throw => vec![CrypEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}, CrypEffect {effect: Effect::Vulnerable, duration: 3, meta: Some(EffectMeta::Multiplier(150)), tick: None}], - Skill::Ruin => vec![CrypEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}], + Skill::Ruin => vec![CrypEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}], Skill::Scatter => vec![CrypEffect {effect: Effect::Scatter, duration: 2, meta: None, tick: None}], Skill::Silence => vec![CrypEffect {effect: Effect::Silence, duration: 2, meta: None, tick: None}], - Skill::Siphon => vec![CrypEffect {effect: Effect::Siphon, duration: 2, meta: None, tick: None}], - Skill::Sleep => vec![CrypEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}], - Skill::Snare => vec![CrypEffect {effect: Effect::Snare, duration: 2, meta: None, tick: None}], - Skill::Strangle => vec![CrypEffect {effect: Effect::Strangle, duration: 2, meta: None, tick: None}], - Skill::Stun => vec![CrypEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}], - Skill::Taunt => vec![CrypEffect {effect: Effect::Taunt, duration: 2, meta: None, tick: None}], - Skill::Triage => vec![CrypEffect {effect: Effect::Triage, duration: 2, meta: None, tick: None}], + Skill::Siphon => vec![CrypEffect {effect: Effect::Siphon, duration: 2, meta: None, tick: None}], + Skill::Sleep => vec![CrypEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}], + Skill::Snare => vec![CrypEffect {effect: Effect::Snare, duration: 2, meta: None, tick: None}], + Skill::Strangle => vec![CrypEffect {effect: Effect::Strangle, duration: 2, meta: None, tick: None}], + Skill::Stun => vec![CrypEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}], + Skill::Taunt => vec![CrypEffect {effect: Effect::Taunt, duration: 2, meta: None, tick: None}], + Skill::Triage => vec![CrypEffect {effect: Effect::Triage, duration: 2, meta: None, tick: None}], //Unused Skill::Injure => vec![CrypEffect {effect: Effect::Injured, duration: 2, meta: None, tick: None }], @@ -689,20 +691,6 @@ impl Skill { } } - pub fn secondary_duration(&self) -> u8 { - match self { - Skill::Hostility => 5, // Increased dmg buff - Skill::Corrupt => 3, // Damage over time - - _ => { - info!("{:?} does not have a secondary duration", self); - return 1; - }, - } - - } - - pub fn base_cd(&self) -> Cooldown { match self { Skill::Attack => None, @@ -1161,16 +1149,16 @@ fn decay_tick(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, sk // corrupt is the buff effect // when attacked it runs corruption and applies a debuff fn corrupt(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions { - skill.effect().into_iter() - .for_each(|e| (results.push(Resolution::new(source, target).event(target.add_effect(skill, e))))); + let corrupt = skill.effect().first().unwrap().clone(); + results.push(Resolution::new(source, target).event(target.add_effect(skill, corrupt))); return results;; } fn corruption(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions { - let effect = CrypEffect::new(Effect::Corruption, skill.secondary_duration()) + let corruption = skill.effect().last().unwrap().clone() .set_tick(Cast::new_tick(source, target, Skill::CorruptionTick)); - results.push(Resolution::new(source, target).event(target.add_effect(skill, effect))); + results.push(Resolution::new(source, target).event(target.add_effect(skill, corruption))); return corruption_tick(source, target, results, Skill::CorruptionTick); } @@ -1202,10 +1190,10 @@ fn hostility(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, ski } fn hatred(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, reflect_skill: Skill, amount: u64, skill: Skill) -> Resolutions { - let effect = CrypEffect::new(Effect::Hatred, skill.secondary_duration()) + let hatred = skill.effect().last().unwrap().clone() .set_meta(EffectMeta::AddedDamage(amount)); - results.push(Resolution::new(source, target).event(target.add_effect(reflect_skill, effect))); + results.push(Resolution::new(source, target).event(target.add_effect(reflect_skill, hatred))); return results;; }