From b30c4463facfb6148079ae44170ab32af4d7a149 Mon Sep 17 00:00:00 2001 From: Mashy Date: Tue, 29 Oct 2019 11:31:07 +1000 Subject: [PATCH] skill rebalance --- CHANGELOG.md | 55 ++++++++++++++++++++++++++++++++++++++++ server/src/effect.rs | 6 ++--- server/src/item.rs | 27 +++++++++++--------- server/src/skill.rs | 60 ++++++++++++++++++-------------------------- 4 files changed, 98 insertions(+), 50 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a6107c0..d4283869 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,61 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +## [1.6.7] - 2019-10-27 +# Added +- Step by step tutorial + - Will activate during the learn game for the first round + - There is a button which will exit tutorial so you can continune the normal practice mode +- Skill combo previews + - You can now preview what item combos will create! + - Click into the item in the info section table (top right) and it will be replaced with the new item + +# Changed +- Vbox phase + - Made general performance improvements + - Removed the default info state (should be smoother to navigate now) + - When combining or selecting base items (skills/specs) the base item info won't be replaced with other vbox items + - Added info text for construct names and avatars + - Changed a number of info descriptions for clarity + +- Game phase + - Made general performance improvements + - Now has default tutorial text for the first round + - Will tell the player to select skills and then the targets + +# Skill Balance Updates +- Buff + - Previously increased red power and speed stat by 25% + - Now increases red power, blue power and speed stat by 30% + +- Block + - Previously reduced red damage taken by 50% + - Now reduces red damage and blue damage taken by 65% + +- Counter + - No longer applies block effect + - CounterAttack multiplier increased from 70/95/120 -> 120/160/230 +- Haste + - Cooldown reduced to 1T (was 2T) +- Sleep + - Cooldown reduced to 2T (was 3T) + - Skill multiplier reduced from 240/300/400 -> 200/290/400 +- Hybrid + - Cooldown reduced to 1T (was 3T) +- Silence + - Cooldown reduced to 2T (was 3T) +- Banish + - Cooldown reduced to 2T (was 3T) +- Siphon + - Skill multiplier increased from 20/25/30 -> 25/30/40 +- Bash + - Skill multiplier reduced from 65/95/140 -> 45/65/100 +- Curse + - Now created by combining Debuff + RB was Debuff + RG + - Fixed issue where curse was only increasing blue damage taken instead of red and blue +- Invert + - Now created by combining Debuff + RG was debuff + RB + ## [1.6.6] - 2019-10-27 # Added - Offering of draws diff --git a/server/src/effect.rs b/server/src/effect.rs index 1e959e50..c2c77392 100644 --- a/server/src/effect.rs +++ b/server/src/effect.rs @@ -100,13 +100,13 @@ impl Effect { pub fn modifications(&self) -> Vec { match self { Effect::Vulnerable => vec![Stat::RedDamageTaken], - Effect::Block => vec![Stat::RedDamageTaken], - Effect::Buff => vec![Stat::RedPower, Stat::Speed], + 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::BlueDamageTaken], + Effect::Curse => vec![Stat::RedDamageTaken, Stat::BlueDamageTaken], Effect::Hybrid => vec![Stat::GreenPower], Effect::Wither => vec![Stat::GreenDamageTaken], diff --git a/server/src/item.rs b/server/src/item.rs index 2cae5571..b697828a 100644 --- a/server/src/item.rs +++ b/server/src/item.rs @@ -591,16 +591,20 @@ impl Item { // base skills Item::Attack => format!("Deal {:?}% RedPower as red damage.", self.into_skill().unwrap().multiplier()), - Item::Block => format!("Reduce red damage taken by {:?}%.", - 100 - self.into_skill().unwrap().effect()[0].get_multiplier()), + Item::Block => format!("Reduce red damage and blue damage taken by {:?}%. Block lasts {:?}T", + 100 - self.into_skill().unwrap().effect()[0].get_multiplier(), + self.into_skill().unwrap().effect()[0].get_duration()), Item::Stun => format!("Stun target construct for {:?}T.", self.into_skill().unwrap().effect()[0].get_duration()), - Item::Buff => format!("Increase target construct RedPower and SpeedStat by {:?}%.", - self.into_skill().unwrap().effect()[0].get_multiplier() - 100), - Item::Debuff => format!("Slows the target reducing SpeedStat by {:?}%.", - 100 - self.into_skill().unwrap().effect()[0].get_multiplier()), + Item::Buff => format!("Increase target construct RedPower BluePower SpeedStat by {:?}%. Buff lasts {:?}T", + self.into_skill().unwrap().effect()[0].get_multiplier() - 100, + self.into_skill().unwrap().effect()[0].get_duration()), + + Item::Debuff => format!("Slows the target reducing SpeedStat by {:?}%. Debuff lasts {:?}T", + 100 - self.into_skill().unwrap().effect()[0].get_multiplier(), + self.into_skill().unwrap().effect()[0].get_duration()), // specs // Base Item::Power => format!("Increases all power stats by {:?}%. @@ -810,11 +814,10 @@ impl Item { Item::Counter| Item::CounterPlus | Item::CounterPlusPlus => format!( - "Applies counter and block {:?}T. Block reduces incoming red damage by {:?}%. + "Applies counter for {:?}T. Red damage taken during counter will trigger a counter attack. Counter attack deals {:?}% RedPower as red damage.", self.into_skill().unwrap().effect()[0].get_duration(), - 100 - self.into_skill().unwrap().effect()[1].get_multiplier(), self.into_skill().unwrap().effect()[0].get_skill().unwrap().multiplier()), Item::Purge| @@ -862,7 +865,7 @@ impl Item { Item::Silence| Item::SilencePlus | Item::SilencePlusPlus => format!( - "Block the target from using blue skills for {:?}T and deals {:?}% BluePower as blue damage. + "Disable the target from using blue skills for {:?}T and deals {:?}% BluePower as blue damage. Deals 45% more Damage per blue skill on target.", self.into_skill().unwrap().effect()[0].get_duration(), self.into_skill().unwrap().multiplier()), @@ -885,7 +888,7 @@ impl Item { Item::Restrict| Item::RestrictPlus | Item::RestrictPlusPlus => format!( - "Block the target from using red skills for {:?}T and deals {:?}% RedPower as red damage. + "Disable the target from using red skills for {:?}T and deals {:?}% RedPower as red damage. Deals 35% more damage per red skill on target.", self.into_skill().unwrap().effect()[0].get_duration(), self.into_skill().unwrap().multiplier()), @@ -962,10 +965,10 @@ impl Item { Item::AmplifyPlusPlus => vec![Item::AmplifyPlus, Item::AmplifyPlus, Item::AmplifyPlus], Item::Purge => vec![Item::Debuff, Item::Green, Item::Green], // Needs flavour - Item::Invert => vec![Item::Debuff, Item::Red, Item::Blue], + Item::Invert => vec![Item::Debuff, Item::Red, Item::Green], Item::Restrict => vec![Item::Debuff, Item::Red, Item::Red], Item::Silence => vec![Item::Debuff, Item::Blue, Item::Blue], - Item::Curse => vec![Item::Debuff, Item::Red, Item::Green], + Item::Curse => vec![Item::Debuff, Item::Red, Item::Blue], Item::Decay => vec![Item::Debuff, Item::Green, Item::Blue], Item::RestrictPlus => vec![Item::Restrict, Item::Restrict, Item::Restrict], Item::RestrictPlusPlus => vec![Item::RestrictPlus, Item::RestrictPlus, Item::RestrictPlus], diff --git a/server/src/skill.rs b/server/src/skill.rs index 26a7525b..3659a19d 100644 --- a/server/src/skill.rs +++ b/server/src/skill.rs @@ -765,9 +765,9 @@ impl Skill { Skill::HealPlus => 185, //GG Skill::HealPlusPlus => 270, //GG - Skill::SiphonTick=> 20, // GB - Skill::SiphonTickPlus => 25, - Skill::SiphonTickPlusPlus => 30, + Skill::SiphonTick=> 25, // GB + Skill::SiphonTickPlus => 30, + Skill::SiphonTickPlusPlus => 40, Skill::Slay=> 40, // RG Skill::SlayPlus => 60, @@ -782,9 +782,9 @@ impl Skill { Skill::ElectrocuteTickPlus => 100, Skill::ElectrocuteTickPlusPlus => 130, - Skill::CounterAttack=> 70, - Skill::CounterAttackPlus => 95, - Skill::CounterAttackPlusPlus => 120, + Skill::CounterAttack=> 120, + Skill::CounterAttackPlus => 160, + Skill::CounterAttackPlusPlus => 230, Skill::Purify=> 45, //Green dmg (heal) Skill::PurifyPlus => 70, @@ -803,17 +803,17 @@ impl Skill { Skill::SustainPlusPlus => 230, // Stun Base - Skill::Sleep=> 240, //Green dmg (heal) - Skill::SleepPlus => 300, + Skill::Sleep=> 200, //Green dmg (heal) + Skill::SleepPlus => 290, Skill::SleepPlusPlus => 400, Skill::Banish=> 40, //Green dmg (heal) Skill::BanishPlus => 75, Skill::BanishPlusPlus => 125, - Skill::Bash=> 65, - Skill::BashPlus => 95, - Skill::BashPlusPlus => 140, + Skill::Bash=> 45, + Skill::BashPlus => 65, + Skill::BashPlusPlus => 100, // Debuff Base Skill::DecayTick=> 33, @@ -857,9 +857,9 @@ impl Skill { 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}], + meta: Some(EffectMeta::Multiplier(35)), tick: None}], Skill::Buff => vec![ConstructEffect {effect: Effect::Buff, duration: 2, - meta: Some(EffectMeta::Multiplier(125)), tick: None }], + meta: Some(EffectMeta::Multiplier(130)), tick: None }], Skill::Electrify => vec![ConstructEffect {effect: Effect::Electric, duration: 1, meta: Some(EffectMeta::Skill(Skill::Electrocute)), tick: None}], @@ -931,17 +931,11 @@ impl Skill { Skill::InvertPlusPlus => vec![ConstructEffect {effect: Effect::Invert, duration: 4, meta: None, tick: None}], Skill::Counter => vec![ConstructEffect {effect: Effect::Counter, duration: 1, - meta: Some(EffectMeta::Skill(Skill::CounterAttack)), tick: None}, - ConstructEffect {effect: Effect::Block, duration: 1, - meta: Some(EffectMeta::Multiplier(60)), tick: None}], + meta: Some(EffectMeta::Skill(Skill::CounterAttack)), tick: None}], Skill::CounterPlus => vec![ConstructEffect {effect: Effect::Counter, duration: 1, - meta: Some(EffectMeta::Skill(Skill::CounterAttackPlus)), tick: None}, - ConstructEffect {effect: Effect::Block, duration: 1, - meta: Some(EffectMeta::Multiplier(40)), tick: None}], + meta: Some(EffectMeta::Skill(Skill::CounterAttackPlus)), tick: None}], Skill::CounterPlusPlus => vec![ConstructEffect {effect: Effect::Counter, duration: 1, - meta: Some(EffectMeta::Skill(Skill::CounterAttackPlusPlus)), tick: None}, - ConstructEffect {effect: Effect::Block, duration: 1, - meta: Some(EffectMeta::Multiplier(20)), tick: None}], + meta: Some(EffectMeta::Skill(Skill::CounterAttackPlusPlus)), tick: None}], Skill::Reflect => vec![ConstructEffect {effect: Effect::Reflect, duration: 1, meta: None, tick: None }], Skill::ReflectPlus => vec![ConstructEffect {effect: Effect::Reflect, duration: 1, meta: None, tick: None }], @@ -1060,7 +1054,7 @@ impl Skill { Skill::AmplifyPlusPlus => Some(1), Skill::Hybrid| Skill::HybridPlus | - Skill::HybridPlusPlus => Some(3), + Skill::HybridPlusPlus => Some(1), Skill::Invert=> Some(2), Skill::InvertPlus => Some(2), @@ -1080,7 +1074,7 @@ impl Skill { Skill::LinkPlus => Some(2), Skill::LinkPlusPlus => Some(2), - Skill::Silence=> Some(3), + Skill::Silence=> Some(2), Skill::SilencePlus => Some(2), Skill::SilencePlusPlus => Some(2), @@ -1094,11 +1088,11 @@ impl Skill { Skill::Banish | Skill::BanishPlus | - Skill::BanishPlusPlus => Some(3), + Skill::BanishPlusPlus => Some(2), - Skill::Haste=> Some(2), - Skill::HastePlus => Some(2), - Skill::HastePlusPlus => Some(2), + Skill::Haste=> Some(1), + Skill::HastePlus => Some(1), + Skill::HastePlusPlus => Some(1), Skill::Reflect | Skill::ReflectPlus | @@ -1116,9 +1110,9 @@ impl Skill { Skill::SlayPlus => None, Skill::SlayPlusPlus => None, - Skill::Sleep=> Some(3), - Skill::SleepPlus => Some(3), - Skill::SleepPlusPlus => Some(3), + Skill::Sleep=> Some(2), + Skill::SleepPlus => Some(2), + Skill::SleepPlusPlus => Some(2), Skill::Sustain | Skill::SustainPlus | @@ -1445,10 +1439,6 @@ fn counter(source: &mut Construct, target: &mut Construct, mut results: Resoluti results.push(Resolution::new(source, target) .event(target.add_effect(skill, skill.effect()[0]))); - results.push(Resolution::new(source, target) - .event(target.add_effect(skill, skill.effect()[1])) - .stages(EventStages::PostOnly)); - return results; }