diff --git a/CHANGELOG.md b/CHANGELOG.md index a817f86d..6c160cd9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). ### Fixed ### Changed -## [0.1.4 2019-09-17] +## [0.1.4 2019-09-18] ### Changed Removed self targetting, all skills can be used on any target @@ -16,6 +16,11 @@ Removed self targetting, all skills can be used on any target `Purify` No cooldown `Recharge` No cooldown +`Banish` + Now deals 40 / 75 / 125% target red / blue life before applying banish debuff + Constant 2T duration at all levels + Constant 3T cooldown at all levels + `Link` reworked -> Stuns caster for 3/2/1T If target has higher green life than caster: diff --git a/server/src/item.rs b/server/src/item.rs index 928a2850..95284987 100644 --- a/server/src/item.rs +++ b/server/src/item.rs @@ -810,8 +810,8 @@ impl Item { Item::Bash| Item::BashPlus | Item::BashPlusPlus => format!( - "Bash the target increasing the cooldowns of their skills. - Deals {:?}% RedPower per cooldown increased. Lasts {:?}T.", + "Bash the target increasing the cooldowns of target skills by 1T. + Deals {:?}% RedPower as red damage and 45% more damage per cooldown increased. Stuns for {:?}T.", self.into_skill().unwrap().effect()[0].get_skill().unwrap().multiplier(), self.into_skill().unwrap().effect()[0].get_duration()), diff --git a/server/src/skill.rs b/server/src/skill.rs index 2f122399..e66ab6a4 100644 --- a/server/src/skill.rs +++ b/server/src/skill.rs @@ -768,6 +768,10 @@ impl Skill { Skill::SleepPlus => 300, Skill::SleepPlusPlus => 400, + Skill::Banish=> 40, //Green dmg (heal) + Skill::BanishPlus => 75, + Skill::BanishPlusPlus => 125, + Skill::Bash=> 65, Skill::BashPlus => 95, Skill::BashPlusPlus => 140, @@ -810,9 +814,9 @@ impl Skill { Skill::AmplifyPlusPlus => vec![ConstructEffect {effect: Effect::Amplify, duration: 4, meta: Some(EffectMeta::Multiplier(200)), tick: None}], - Skill::Banish => vec![ConstructEffect {effect: Effect::Banish, duration: 1,meta: None, tick: None}], - Skill::BanishPlus => vec![ConstructEffect {effect: Effect::Banish, duration: 2,meta: None, tick: None}], - Skill::BanishPlusPlus => vec![ConstructEffect {effect: Effect::Banish, duration: 3,meta: None, tick: None}], + Skill::Banish => vec![ConstructEffect {effect: Effect::Banish, duration: 2, meta: None, tick: None}], + Skill::BanishPlus => vec![ConstructEffect {effect: Effect::Banish, duration: 2, meta: None, tick: None}], + Skill::BanishPlusPlus => vec![ConstructEffect {effect: Effect::Banish, duration: 2, meta: None, tick: None}], Skill::Block => vec![ConstructEffect {effect: Effect::Block, duration: 1, meta: Some(EffectMeta::Multiplier(50)), tick: None}], Skill::Buff => vec![ConstructEffect {effect: Effect::Buff, duration: 2, @@ -1049,9 +1053,9 @@ impl Skill { Skill::PurgePlus => None, Skill::PurgePlusPlus => None, - Skill::Banish=> Some(1), - Skill::BanishPlus => Some(1), - Skill::BanishPlusPlus => Some(1), + Skill::Banish | + Skill::BanishPlus | + Skill::BanishPlusPlus => Some(3), Skill::Haste=> Some(2), Skill::HastePlus => Some(2), @@ -1749,7 +1753,24 @@ fn purify(source: &mut Construct, target: &mut Construct, mut results: Resolutio } fn banish(source: &mut Construct, target: &mut Construct, mut results: Resolutions, skill: Skill) -> Resolutions { - results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect()[0]))); + results.push(Resolution::new(source, target).event(Event::Skill { skill })); + + let red_damage = target.red_life().pct(skill.multiplier()); + let blue_damage = target.blue_life().pct(skill.multiplier()); + + if red_damage > 0 { + target.deal_red_damage(skill, red_damage) + .into_iter() + .for_each(|e| results.push(Resolution::new(source, target).event(e).stages(EventStages::PostOnly))); + } + + if blue_damage > 0 { + target.deal_blue_damage(skill, blue_damage) + .into_iter() + .for_each(|e| results.push(Resolution::new(source, target).event(e).stages(EventStages::PostOnly))); + } + + results.push(Resolution::new(source, target).event(target.add_effect(skill, skill.effect()[0])).stages(EventStages::PostOnly)); return results; }