From e661c2501f880f2edf38cc2754fc54aee36d8e11 Mon Sep 17 00:00:00 2001 From: Mashy Date: Mon, 2 Dec 2019 16:28:17 +1000 Subject: [PATCH 01/10] combos.md --- COMBOS.md | 266 ++++++++++++++++++++++++++++++++--------------------- ROADMAP.md | 4 + WORKLOG.md | 18 +--- 3 files changed, 167 insertions(+), 121 deletions(-) diff --git a/COMBOS.md b/COMBOS.md index cf563a8c..a9c01749 100644 --- a/COMBOS.md +++ b/COMBOS.md @@ -1,142 +1,200 @@ -# item_info -> +# Spec / Skill hybrid specs # -combos [strike, [R R Attack]] -specs [spec [bonus amount, [r g b]] +Create skills specs by combining an upgraded skills with corresponding colour specs: + Strike (RR + A) can be combined with (PowerRR, SpeedRR, LifeRR) + - Strike + PowerRR -> StrikePower + - Strike + SpeedRR -> StrikeSpeed + - Strike + LifeRR -> StrikeLife -# Playthrough +Could also create SkillSpec+ by combining two together. -constructs join game - stats randomised +## Why Skill Specs -initial stash drops - 6 skills - 6 colours - 6 specs +- Give tools to players to make cool unique builds +- Passive utility that you work towards +- Specialise in a type of skill +- Repurpose skills that you aren't using much for active use +- More layers of complexity -play first round - basically duke it out +## Skill specs philosphy -# Colours # +- Should be more interesting than just another stat "multiplier" we have that already (could be placeholder though) +- Passives should help build a theme / identity to the skills +- Specs should be numerically scalable so they can be `balanced` (also for upgraded versions think continuous vs discrete) +- While specialised should be useful for multiple skills + e.g. StrikeSpeed -> Causes your red attack skills to cast on another target on the same team for (X% damage) + A StrikeSpeed should do something for `some` other active skill that isn't strike +- They don't have to be `competely game changing` to be viable / fun / interesting -### Red ### -Real world concepts -Aggressive -Apply Buffs -Fast & Chaotic +## Brainstorming on what kind of things skill specs could do -### Green ### -Healing Specialisation -Defensive -Purge buffs & debuffs +- Passive + - (Abosrb Spec) when you take damage you permanently gain X Power/Speed/Life + - Grant you Amplify with (X% multiplier) when you KO a target + - Convert (X% of your red / blue power -> green power) + - Reduce / Increase damage taken of a certain type (Block type upgrades maybe?) -### Blue ### -Fantasy concepts (magical) -Aggressive & Defensive -Apply Debuffs -Slow & Reliable +- Active + - Make a skill cast another skill (strike another guy) + - Apply an effect when you cast a skill + - Change damage / healing / speed of a skill -# Classes # +## The BIG LIST -Class names to be changed -==================== -Pure Red `Nature` -Pure Green `Non-Violence` -Pure Blue `Destruction` -Hybrid Red / Blue `Chaos` -Hybrid Red / Green `Purity` -Hybrid Blue / Green `Technology` +### Attack Base +Strike + Power + Life + Speed (Repeat skill at X% multiplier) +Chaos + Power + Life + Speed -Skills -========== +Heal + Power (Convert X% Red/Blue Power to GreenPower) + Life + Speed -Basic Type -------------------------------------------------------------------------- -Attack `Basic offensive skill - deal damage` -Buff `Base ally targetted skill - increase ally speed` -Stun `Base enemy disable - disable enemy for 2 rounds` -Block `Base self targetted defensive - reduced damage taken for 2 rounds` -Debuff `Base enemy debuff - reduce enemy speed` +Blast + Power + Life + Speed -# Attack Base # +Slay + Power + Life + Speed -RR - Strike -GG - Heal -BB - Blast -RG - Purify -GB - Decay -RB - Blast +Siphon + Power + Life + Speed -# Stun Base # +### Stun Base +Bash + Power + Life + Speed -RR - Strangle -GG - Break -BB - Ruin -RG - Banish -GB - Silence -RB - Hex +Sleep + Power + Life + Speed -# Buff Base # +Ruin + Power + Life + Speed -RR - Empower -GR - Triage -BB - Absorb -RG - Sustain -GB - Amplify -RB - Haste +Link + Power + Life + Speed -# Debuff Base # +Banish + Power + Life + Speed -RR - Restrict -GG - Purge -BB - Curse -RG - Slow -GB - Siphon -RB - Invert +Break + Power + Life + Speed -# Block Base # +### Block Base -RR - Counter -GG - Reflect -BB - Electrify -RG - Intercept -GB - Life `rename?` -RB - Recharge +Counter + Power + Life + Speed +Reflect + Power + Life + Speed -## Advanced combos ## +Purify + Power + Life + Speed -Two ways of upgrading - #1 -> combine more of the same for a stronger version of the same skill / spec (T2 / T3 Combos) - #2 -> combine skill with two matching colour specs to change the way the skill works (Spec / Skill hybrid) +Sustain + Power + Life + Speed -### T2 / T3 Combos ### +Electrify + Power + Life + Speed -All current specs / items can be further combo'd into T2 and T3 versions +Recharge + Power + Life + Speed -# 3 of same base => 1 upgraded tier # -`3 x T1 Red Damage Spec => T2 Red Damage Spec` -`3 x T2 Red Damage Spec => T3 Red Damage Spec` -`3 x T1 Strike => T2 Strike` -`3 x T2 Strike => T3 Strike` +### Buff Base -Upgraded skills will have a combination of higher damage / longer duration / reduced cooldown -Upgraded skills use the same speed formula as previously +Intercept + Power + Life + Speed -### Spec / Skill hybrid specs ### +Triage + Power + Life + Speed -# Strike # -2 x Red Damage + Strike => Strike damage bonus (crit?) -2 x Red Speed + Strike => Strike reduces enemy speed -2 x Red Life + Strike => Strike reduces enemy healing (% reduction) +Absorb + Power (Gain X Power when you take damage) + Life (Gain X Life when you take damage) + Speed (Gain X Speed when you take damage) -# Heal # -2 x Green Damage + Heal => Heal target for additional 20% of caster's maximum life -2 x Green Speed + Heal => Heal target gets bonus speed -2 x Green Life + Heal => Heal increases target's max hp for 2 turns +Amplify + Power + Life + Speed -etc etc +Haste + Power + Life + Speed -30 skills * 3 specs => 90 spec / skill hybrid specs -> might be overcomplicated +Hybrid + Power + Life + Speed +### Debuff Base +Purge + Power + Life + Speed + +Invert + Power + Life + Speed + +Restrict + Power + Life + Speed + +Silence + Power + Life + Speed + +Curse + Power + Life + Speed + +Decay + Power + Life + Speed \ No newline at end of file diff --git a/ROADMAP.md b/ROADMAP.md index 7f9ff085..07215724 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -34,8 +34,12 @@ Player Events e.g. chatwheel Matchmaking + ELO / Leaderboard Game skill private fields +# Phase 4 (Release -> Full Shill mode) + Refine artwork, icons, scaling etc Music +Skill Specs +Some sort viewable combat log Marketing materials Videos diff --git a/WORKLOG.md b/WORKLOG.md index cdd37a00..3eab2abc 100644 --- a/WORKLOG.md +++ b/WORKLOG.md @@ -50,23 +50,7 @@ _tba_ ## SOON -* combo rework - - reduce number of items for creating t2/t3 items from 3 -> 2 - - add lost complexity by adding skill spec items - - Created by combining a skill with corresponding spec - e.g. - - Strike + PowerRR -> StrikePower (Will be the power symbol with strike text under) - - Construct does Y% more damage with Strike - - Strike + SpeedRR -> StrikeSpeed (strike has Y% more speed) - - Strike + LifeRR -> StrikeLife (Strike recharges X% of damage as red life) - - - Can also work as module style passive keystones - * troll life -> dmg -> Invert life spec? - * prince of peace - * bonus healing / no damage -> Heal power spec? - * fuck magic -> Some sort of reflect spec? - * empower on ko -> Amplify + Power spec - +* Skill / Spec hybrids - SEE COMBOS.md * elo + leaderboards ## LATER From 900a9089b1ac6b6a51f95cf923269f4ecd241d1d Mon Sep 17 00:00:00 2001 From: Mashy Date: Mon, 2 Dec 2019 16:46:02 +1000 Subject: [PATCH 02/10] yolo 3 -> 2 combos --- server/src/construct.rs | 2 +- server/src/item.rs | 234 ++++++++++++++++++++++------------------ 2 files changed, 131 insertions(+), 105 deletions(-) diff --git a/server/src/construct.rs b/server/src/construct.rs index 3c41ffd1..9f957d00 100644 --- a/server/src/construct.rs +++ b/server/src/construct.rs @@ -1082,7 +1082,7 @@ mod tests { let colours = Colours::from_construct(&construct); assert!(colours.red == 4); - assert!(colours.blue == 20); + assert!(colours.blue == 10); assert!(colours.green == 2); } diff --git a/server/src/item.rs b/server/src/item.rs index 72639073..fa228549 100644 --- a/server/src/item.rs +++ b/server/src/item.rs @@ -959,37 +959,51 @@ impl Item { Item::Amplify => vec![Item::Buff, Item::Red, Item::Blue], Item::Haste => vec![Item::Buff, Item::Red, Item::Green], Item::Hybrid => vec![Item::Buff, Item::Green, Item::Blue], - Item::InterceptPlus => vec![Item::Intercept, Item::Intercept, Item::Intercept], - Item::InterceptPlusPlus => vec![Item::InterceptPlus, Item::InterceptPlus, Item::InterceptPlus], - Item::TriagePlus => vec![Item::Triage, Item::Triage, Item::Triage], - Item::TriagePlusPlus => vec![Item::TriagePlus, Item::TriagePlus, Item::TriagePlus], - Item::HastePlus => vec![Item::Haste, Item::Haste, Item::Haste], - Item::HastePlusPlus => vec![Item::HastePlus, Item::HastePlus, Item::HastePlus], - Item::HybridPlus => vec![Item::Hybrid, Item::Hybrid, Item::Hybrid], - Item::HybridPlusPlus => vec![Item::HybridPlus, Item::HybridPlus, Item::HybridPlus], - Item::AbsorbPlus => vec![Item::Absorb, Item::Absorb, Item::Absorb], - Item::AbsorbPlusPlus => vec![Item::AbsorbPlus, Item::AbsorbPlus, Item::AbsorbPlus], - Item::AmplifyPlus => vec![Item::Amplify, Item::Amplify, Item::Amplify], - Item::AmplifyPlusPlus => vec![Item::AmplifyPlus, Item::AmplifyPlus, Item::AmplifyPlus], - Item::Purge => vec![Item::Debuff, Item::Green, Item::Green], // Needs flavour + Item::InterceptPlus => vec![Item::Intercept, Item::Intercept], + Item::InterceptPlusPlus => vec![Item::InterceptPlus, Item::InterceptPlus], + + Item::TriagePlus => vec![Item::Triage, Item::Triage], + Item::TriagePlusPlus => vec![Item::TriagePlus, Item::TriagePlus], + + Item::AbsorbPlus => vec![Item::Absorb, Item::Absorb], + Item::AbsorbPlusPlus => vec![Item::AbsorbPlus, Item::AbsorbPlus], + + Item::AmplifyPlus => vec![Item::Amplify, Item::Amplify], + Item::AmplifyPlusPlus => vec![Item::AmplifyPlus, Item::AmplifyPlus], + + Item::HastePlus => vec![Item::Haste, Item::Haste], + Item::HastePlusPlus => vec![Item::HastePlus, Item::HastePlus], + + Item::HybridPlus => vec![Item::Hybrid, Item::Hybrid], + Item::HybridPlusPlus => vec![Item::HybridPlus, Item::HybridPlus], + + + Item::Purge => vec![Item::Debuff, Item::Green, Item::Green], 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::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], - Item::PurgePlus => vec![Item::Purge, Item::Purge, Item::Purge], // Needs flavour - Item::PurgePlusPlus => vec![Item::PurgePlus, Item::PurgePlus, Item::PurgePlus], // Needs flavour - Item::SilencePlus => vec![Item::Silence, Item::Silence, Item::Silence], - Item::SilencePlusPlus => vec![Item::SilencePlus, Item::SilencePlus, Item::SilencePlus], - Item::CursePlus => vec![Item::Curse, Item::Curse, Item::Curse], - Item::CursePlusPlus => vec![Item::CursePlus, Item::CursePlus, Item::CursePlus], - Item::DecayPlus => vec![Item::Decay, Item::Decay, Item::Decay], - Item::DecayPlusPlus => vec![Item::DecayPlus, Item::DecayPlus, Item::DecayPlus], - Item::InvertPlus => vec![Item::Invert, Item::Invert, Item::Invert], - Item::InvertPlusPlus => vec![Item::InvertPlus, Item::InvertPlus, Item::InvertPlus], + + Item::PurgePlus => vec![Item::Purge, Item::Purge, Item::Purge], + Item::PurgePlusPlus => vec![Item::PurgePlus, Item::PurgePlus], + + Item::InvertPlus => vec![Item::Invert, Item::Invert], + Item::InvertPlusPlus => vec![Item::InvertPlus, Item::InvertPlus], + + Item::RestrictPlus => vec![Item::Restrict, Item::Restrict], + Item::RestrictPlusPlus => vec![Item::RestrictPlus, Item::RestrictPlus], + + Item::SilencePlus => vec![Item::Silence, Item::Silence], + Item::SilencePlusPlus => vec![Item::SilencePlus, Item::SilencePlus], + + Item::CursePlus => vec![Item::Curse, Item::Curse], + Item::CursePlusPlus => vec![Item::CursePlus, Item::CursePlus], + + Item::DecayPlus => vec![Item::Decay, Item::Decay], + Item::DecayPlusPlus => vec![Item::DecayPlus, Item::DecayPlus], + Item::Counter => vec![Item::Block, Item::Red, Item::Red], Item::Reflect => vec![Item::Block, Item::Green, Item::Blue], @@ -997,18 +1011,24 @@ impl Item { Item::Sustain => vec![Item::Block, Item::Red, Item::Green], Item::Electrify => vec![Item::Block, Item::Blue, Item::Blue], Item::Recharge => vec![Item::Block, Item::Red, Item::Blue], - Item::CounterPlus => vec![Item::Counter, Item::Counter, Item::Counter], - Item::CounterPlusPlus => vec![Item::CounterPlus, Item::CounterPlus, Item::CounterPlus], // Add red recharge - Item::PurifyPlus => vec![Item::Purify, Item::Purify, Item::Purify], - Item::PurifyPlusPlus => vec![Item::PurifyPlus, Item::PurifyPlus, Item::PurifyPlus], - Item::ElectrifyPlus => vec![Item::Electrify, Item::Electrify, Item::Electrify], - Item::ElectrifyPlusPlus => vec![Item::ElectrifyPlus, Item::ElectrifyPlus, Item::ElectrifyPlus], - Item::SustainPlus => vec![Item::Sustain, Item::Sustain, Item::Sustain], - Item::SustainPlusPlus => vec![Item::SustainPlus, Item::SustainPlus, Item::SustainPlus], - Item::ReflectPlus => vec![Item::Reflect, Item::Reflect, Item::Reflect], - Item::ReflectPlusPlus => vec![Item::ReflectPlus, Item::ReflectPlus, Item::ReflectPlus], - Item::RechargePlus => vec![Item::Recharge, Item::Recharge, Item::Recharge], - Item::RechargePlusPlus => vec![Item::RechargePlus, Item::RechargePlus, Item::RechargePlus], + + Item::CounterPlus => vec![Item::Counter, Item::Counter], + Item::CounterPlusPlus => vec![Item::CounterPlus, Item::CounterPlus], + + Item::PurifyPlus => vec![Item::Purify, Item::Purify], + Item::PurifyPlusPlus => vec![Item::PurifyPlus, Item::PurifyPlus], + + Item::ElectrifyPlus => vec![Item::Electrify, Item::Electrify], + Item::ElectrifyPlusPlus => vec![Item::ElectrifyPlus, Item::ElectrifyPlus], + + Item::SustainPlus => vec![Item::Sustain, Item::Sustain], + Item::SustainPlusPlus => vec![Item::SustainPlus, Item::SustainPlus], + + Item::ReflectPlus => vec![Item::Reflect, Item::Reflect], + Item::ReflectPlusPlus => vec![Item::ReflectPlus, Item::ReflectPlus, ], + + Item::RechargePlus => vec![Item::Recharge, Item::Recharge], + Item::RechargePlusPlus => vec![Item::RechargePlus, Item::RechargePlus], Item::Bash => vec![Item::Stun, Item::Red, Item::Red], Item::Sleep => vec![Item::Stun, Item::Green, Item::Green], @@ -1016,18 +1036,25 @@ impl Item { Item::Link => vec![Item::Stun, Item::Blue, Item::Green], Item::Banish => vec![Item::Stun, Item::Red, Item::Blue], Item::Break => vec![Item::Stun, Item::Red, Item::Green], + Item::BashPlus => vec![Item::Bash, Item::Bash, Item::Bash], - Item::BashPlusPlus => vec![Item::BashPlus, Item::BashPlus, Item::BashPlus], - Item::SleepPlus => vec![Item::Sleep, Item::Sleep, Item::Sleep], - Item::SleepPlusPlus => vec![Item::SleepPlus, Item::SleepPlus, Item::SleepPlus], - Item::RuinPlus => vec![Item::Ruin, Item::Ruin, Item::Ruin], - Item::RuinPlusPlus => vec![Item::RuinPlus, Item::RuinPlus, Item::RuinPlus], - Item::BreakPlus => vec![Item::Break, Item::Break, Item::Break], - Item::BreakPlusPlus => vec![Item::BreakPlus, Item::BreakPlus, Item::BreakPlus], - Item::LinkPlus => vec![Item::Link, Item::Link, Item::Link], - Item::LinkPlusPlus => vec![Item::LinkPlus, Item::LinkPlus, Item::LinkPlus], - Item::BanishPlus => vec![Item::Banish, Item::Banish, Item::Banish], - Item::BanishPlusPlus => vec![Item::BanishPlus, Item::BanishPlus, Item::BanishPlus], + Item::BashPlusPlus => vec![Item::BashPlus, Item::BashPlus], + + Item::SleepPlus => vec![Item::Sleep, Item::Sleep], + Item::SleepPlusPlus => vec![Item::SleepPlus, Item::SleepPlus,], + + Item::RuinPlus => vec![Item::Ruin, Item::Ruin], + Item::RuinPlusPlus => vec![Item::RuinPlus, Item::RuinPlus], + + Item::LinkPlus => vec![Item::Link, Item::Link], + Item::LinkPlusPlus => vec![Item::LinkPlus, Item::LinkPlus], + + Item::BanishPlus => vec![Item::Banish, Item::Banish], + Item::BanishPlusPlus => vec![Item::BanishPlus, Item::BanishPlus], + + Item::BreakPlus => vec![Item::Break, Item::Break], + Item::BreakPlusPlus => vec![Item::BreakPlus, Item::BreakPlus], + Item::Strike => vec![Item::Attack, Item::Red, Item::Red], Item::Chaos => vec![Item::Attack, Item::Red, Item::Blue], @@ -1035,18 +1062,24 @@ impl Item { Item::Blast => vec![Item::Attack, Item::Blue, Item::Blue], Item::Slay => vec![Item::Attack, Item::Red, Item::Green], Item::Siphon => vec![Item::Attack, Item::Green, Item::Blue], - Item::StrikePlus => vec![Item::Strike, Item::Strike, Item::Strike], - Item::StrikePlusPlus => vec![Item::StrikePlus, Item::StrikePlus, Item::StrikePlus], - Item::HealPlus => vec![Item::Heal, Item::Heal, Item::Heal], - Item::HealPlusPlus => vec![Item::HealPlus, Item::HealPlus, Item::HealPlus], - Item::BlastPlus => vec![Item::Blast, Item::Blast, Item::Blast], - Item::BlastPlusPlus => vec![Item::BlastPlus, Item::BlastPlus, Item::BlastPlus], - Item::SlayPlus => vec![Item::Slay, Item::Slay, Item::Slay], - Item::SlayPlusPlus => vec![Item::SlayPlus, Item::SlayPlus, Item::SlayPlus], - Item::SiphonPlus => vec![Item::Siphon, Item::Siphon, Item::Siphon], - Item::SiphonPlusPlus => vec![Item::SiphonPlus, Item::SiphonPlus, Item::SiphonPlus], - Item::ChaosPlus => vec![Item::Chaos, Item::Chaos, Item::Chaos], - Item::ChaosPlusPlus => vec![Item::ChaosPlus, Item::ChaosPlus, Item::ChaosPlus], + + Item::StrikePlus => vec![Item::Strike, Item::Strike], + Item::StrikePlusPlus => vec![Item::StrikePlus, Item::StrikePlus], + + Item::ChaosPlus => vec![Item::Chaos, Item::Chaos], + Item::ChaosPlusPlus => vec![Item::ChaosPlus, Item::ChaosPlus], + + Item::HealPlus => vec![Item::Heal, Item::Heal], + Item::HealPlusPlus => vec![Item::HealPlus, Item::HealPlus], + + Item::BlastPlus => vec![Item::Blast, Item::Blast], + Item::BlastPlusPlus => vec![Item::BlastPlus, Item::BlastPlus], + + Item::SlayPlus => vec![Item::Slay, Item::Slay], + Item::SlayPlusPlus => vec![Item::SlayPlus, Item::SlayPlus], + + Item::SiphonPlus => vec![Item::Siphon, Item::Siphon], + Item::SiphonPlusPlus => vec![Item::SiphonPlus, Item::SiphonPlus], Item::PowerRR => vec![Item::Power, Item::Red, Item::Red], Item::PowerGG => vec![Item::Power, Item::Green, Item::Green], @@ -1054,18 +1087,18 @@ impl Item { Item::PowerRG => vec![Item::Power, Item::Red, Item::Green], Item::PowerGB => vec![Item::Power, Item::Green, Item::Blue], Item::PowerRB => vec![Item::Power, Item::Red, Item::Blue], - Item::PowerRRPlus => vec![Item::PowerRR, Item::PowerRR, Item::PowerRR], - Item::PowerGGPlus => vec![Item::PowerGG, Item::PowerGG, Item::PowerGG], - Item::PowerBBPlus => vec![Item::PowerBB, Item::PowerBB, Item::PowerBB], - Item::PowerRGPlus => vec![Item::PowerRG, Item::PowerRG, Item::PowerRG], - Item::PowerGBPlus => vec![Item::PowerGB, Item::PowerGB, Item::PowerGB], - Item::PowerRBPlus => vec![Item::PowerRB, Item::PowerRB, Item::PowerRB], - Item::PowerRRPlusPlus => vec![Item::PowerRRPlus, Item::PowerRRPlus, Item::PowerRRPlus], - Item::PowerGGPlusPlus => vec![Item::PowerGGPlus, Item::PowerGGPlus, Item::PowerGGPlus], - Item::PowerBBPlusPlus => vec![Item::PowerBBPlus, Item::PowerBBPlus, Item::PowerBBPlus], - Item::PowerRGPlusPlus => vec![Item::PowerRGPlus, Item::PowerRGPlus, Item::PowerRGPlus], - Item::PowerGBPlusPlus => vec![Item::PowerGBPlus, Item::PowerGBPlus, Item::PowerGBPlus], - Item::PowerRBPlusPlus => vec![Item::PowerRBPlus, Item::PowerRBPlus, Item::PowerRBPlus], + Item::PowerRRPlus => vec![Item::PowerRR, Item::PowerRR], + Item::PowerGGPlus => vec![Item::PowerGG, Item::PowerGG], + Item::PowerBBPlus => vec![Item::PowerBB, Item::PowerBB], + Item::PowerRGPlus => vec![Item::PowerRG, Item::PowerRG], + Item::PowerGBPlus => vec![Item::PowerGB, Item::PowerGB], + Item::PowerRBPlus => vec![Item::PowerRB, Item::PowerRB], + Item::PowerRRPlusPlus => vec![Item::PowerRRPlus, Item::PowerRRPlus], + Item::PowerGGPlusPlus => vec![Item::PowerGGPlus, Item::PowerGGPlus], + Item::PowerBBPlusPlus => vec![Item::PowerBBPlus, Item::PowerBBPlus], + Item::PowerRGPlusPlus => vec![Item::PowerRGPlus, Item::PowerRGPlus], + Item::PowerGBPlusPlus => vec![Item::PowerGBPlus, Item::PowerGBPlus], + Item::PowerRBPlusPlus => vec![Item::PowerRBPlus, Item::PowerRBPlus], Item::LifeRR => vec![Item::Life, Item::Red, Item::Red], Item::LifeGG => vec![Item::Life, Item::Green, Item::Green], @@ -1073,18 +1106,18 @@ impl Item { Item::LifeRG => vec![Item::Life, Item::Red, Item::Green], Item::LifeGB => vec![Item::Life, Item::Green, Item::Blue], Item::LifeRB => vec![Item::Life, Item::Red, Item::Blue], - Item::LifeRRPlus => vec![Item::LifeRR, Item::LifeRR, Item::LifeRR], - Item::LifeGGPlus => vec![Item::LifeGG, Item::LifeGG, Item::LifeGG], - Item::LifeBBPlus => vec![Item::LifeBB, Item::LifeBB, Item::LifeBB], - Item::LifeRGPlus => vec![Item::LifeRG, Item::LifeRG, Item::LifeRG], - Item::LifeGBPlus => vec![Item::LifeGB, Item::LifeGB, Item::LifeGB], - Item::LifeRBPlus => vec![Item::LifeRB, Item::LifeRB, Item::LifeRB], - Item::LifeRRPlusPlus => vec![Item::LifeRRPlus, Item::LifeRRPlus, Item::LifeRRPlus], - Item::LifeGGPlusPlus => vec![Item::LifeGGPlus, Item::LifeGGPlus, Item::LifeGGPlus], - Item::LifeBBPlusPlus => vec![Item::LifeBBPlus, Item::LifeBBPlus, Item::LifeBBPlus], - Item::LifeRGPlusPlus => vec![Item::LifeRGPlus, Item::LifeRGPlus, Item::LifeRGPlus], - Item::LifeGBPlusPlus => vec![Item::LifeGBPlus, Item::LifeGBPlus, Item::LifeGBPlus], - Item::LifeRBPlusPlus => vec![Item::LifeRBPlus, Item::LifeRBPlus, Item::LifeRBPlus], + Item::LifeRRPlus => vec![Item::LifeRR, Item::LifeRR], + Item::LifeGGPlus => vec![Item::LifeGG, Item::LifeGG], + Item::LifeBBPlus => vec![Item::LifeBB, Item::LifeBB], + Item::LifeRGPlus => vec![Item::LifeRG, Item::LifeRG], + Item::LifeGBPlus => vec![Item::LifeGB, Item::LifeGB], + Item::LifeRBPlus => vec![Item::LifeRB, Item::LifeRB], + Item::LifeRRPlusPlus => vec![Item::LifeRRPlus, Item::LifeRRPlus], + Item::LifeGGPlusPlus => vec![Item::LifeGGPlus, Item::LifeGGPlus], + Item::LifeBBPlusPlus => vec![Item::LifeBBPlus, Item::LifeBBPlus], + Item::LifeRGPlusPlus => vec![Item::LifeRGPlus, Item::LifeRGPlus], + Item::LifeGBPlusPlus => vec![Item::LifeGBPlus, Item::LifeGBPlus], + Item::LifeRBPlusPlus => vec![Item::LifeRBPlus, Item::LifeRBPlus], Item::SpeedRR => vec![Item::Speed, Item::Red, Item::Red], Item::SpeedGG => vec![Item::Speed, Item::Green, Item::Green], @@ -1092,18 +1125,18 @@ impl Item { Item::SpeedRG => vec![Item::Speed, Item::Red, Item::Green], Item::SpeedGB => vec![Item::Speed, Item::Green, Item::Blue], Item::SpeedRB => vec![Item::Speed, Item::Red, Item::Blue], - Item::SpeedRRPlus => vec![Item::SpeedRR, Item::SpeedRR, Item::SpeedRR], - Item::SpeedGGPlus => vec![Item::SpeedGG, Item::SpeedGG, Item::SpeedGG], - Item::SpeedBBPlus => vec![Item::SpeedBB, Item::SpeedBB, Item::SpeedBB], - Item::SpeedRGPlus => vec![Item::SpeedRG, Item::SpeedRG, Item::SpeedRG], - Item::SpeedGBPlus => vec![Item::SpeedGB, Item::SpeedGB, Item::SpeedGB], - Item::SpeedRBPlus => vec![Item::SpeedRB, Item::SpeedRB, Item::SpeedRB], - Item::SpeedRRPlusPlus => vec![Item::SpeedRRPlus, Item::SpeedRRPlus, Item::SpeedRRPlus], - Item::SpeedGGPlusPlus => vec![Item::SpeedGGPlus, Item::SpeedGGPlus, Item::SpeedGGPlus], - Item::SpeedBBPlusPlus => vec![Item::SpeedBBPlus, Item::SpeedBBPlus, Item::SpeedBBPlus], - Item::SpeedRGPlusPlus => vec![Item::SpeedRGPlus, Item::SpeedRGPlus, Item::SpeedRGPlus], - Item::SpeedGBPlusPlus => vec![Item::SpeedGBPlus, Item::SpeedGBPlus, Item::SpeedGBPlus], - Item::SpeedRBPlusPlus => vec![Item::SpeedRBPlus, Item::SpeedRBPlus, Item::SpeedRBPlus], + Item::SpeedRRPlus => vec![Item::SpeedRR, Item::SpeedRR], + Item::SpeedGGPlus => vec![Item::SpeedGG, Item::SpeedGG], + Item::SpeedBBPlus => vec![Item::SpeedBB, Item::SpeedBB], + Item::SpeedRGPlus => vec![Item::SpeedRG, Item::SpeedRG], + Item::SpeedGBPlus => vec![Item::SpeedGB, Item::SpeedGB], + Item::SpeedRBPlus => vec![Item::SpeedRB, Item::SpeedRB], + Item::SpeedRRPlusPlus => vec![Item::SpeedRRPlus, Item::SpeedRRPlus], + Item::SpeedGGPlusPlus => vec![Item::SpeedGGPlus, Item::SpeedGGPlus], + Item::SpeedBBPlusPlus => vec![Item::SpeedBBPlus, Item::SpeedBBPlus], + Item::SpeedRGPlusPlus => vec![Item::SpeedRGPlus, Item::SpeedRGPlus], + Item::SpeedGBPlusPlus => vec![Item::SpeedGBPlus, Item::SpeedGBPlus], + Item::SpeedRBPlusPlus => vec![Item::SpeedRBPlus, Item::SpeedRBPlus], _ => vec![*self], } @@ -1338,7 +1371,7 @@ pub fn get_combos() -> Vec { Combo { components: Item::Restrict.combo(), item: Item::Restrict }, Combo { components: Item::RestrictPlus.combo(), item: Item::RestrictPlus }, Combo { components: Item::RestrictPlusPlus.combo(), item: Item::RestrictPlusPlus }, - Combo { components: Item::Purge.combo(), item: Item::Purge }, // Needs flavour + Combo { components: Item::Purge.combo(), item: Item::Purge }, Combo { components: Item::PurgePlus.combo(), item: Item::PurgePlus }, Combo { components: Item::PurgePlusPlus.combo(), item: Item::PurgePlusPlus }, @@ -1556,20 +1589,13 @@ mod tests { assert_eq!(Item::StrikePlus.components(), vec![ Item::Red, Item::Red, Item::Attack, Item::Red, Item::Red, Item::Attack, - Item::Red, Item::Red, Item::Attack, ]); assert_eq!(Item::StrikePlusPlus.components(), vec![ Item::Red, Item::Red, Item::Attack, Item::Red, Item::Red, Item::Attack, - Item::Red, Item::Red, Item::Attack, Item::Red, Item::Red, Item::Attack, Item::Red, Item::Red, Item::Attack, - Item::Red, Item::Red, Item::Attack, - - Item::Red, Item::Red, Item::Attack, - Item::Red, Item::Red, Item::Attack, - Item::Red, Item::Red, Item::Attack, ]); } From 0b5d23c2bf304202c57b19bc43cada982e070cce Mon Sep 17 00:00:00 2001 From: Mashy Date: Tue, 3 Dec 2019 10:48:40 +1000 Subject: [PATCH 03/10] bash purge fix --- server/src/item.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/src/item.rs b/server/src/item.rs index fa228549..0b50dca4 100644 --- a/server/src/item.rs +++ b/server/src/item.rs @@ -986,7 +986,7 @@ impl Item { Item::Curse => vec![Item::Debuff, Item::Red, Item::Blue], Item::Decay => vec![Item::Debuff, Item::Green, Item::Blue], - Item::PurgePlus => vec![Item::Purge, Item::Purge, Item::Purge], + Item::PurgePlus => vec![Item::Purge, Item::Purge], Item::PurgePlusPlus => vec![Item::PurgePlus, Item::PurgePlus], Item::InvertPlus => vec![Item::Invert, Item::Invert], @@ -1037,7 +1037,7 @@ impl Item { Item::Banish => vec![Item::Stun, Item::Red, Item::Blue], Item::Break => vec![Item::Stun, Item::Red, Item::Green], - Item::BashPlus => vec![Item::Bash, Item::Bash, Item::Bash], + Item::BashPlus => vec![Item::Bash, Item::Bash], Item::BashPlusPlus => vec![Item::BashPlus, Item::BashPlus], Item::SleepPlus => vec![Item::Sleep, Item::Sleep], From b4e5421fd77d9d0797ec1f9e921a3134ca14bba0 Mon Sep 17 00:00:00 2001 From: ntr Date: Wed, 4 Dec 2019 00:18:53 +1000 Subject: [PATCH 04/10] fix autobuy --- server/src/player.rs | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/server/src/player.rs b/server/src/player.rs index b0988a3a..612e1ce8 100644 --- a/server/src/player.rs +++ b/server/src/player.rs @@ -184,6 +184,7 @@ impl Player { // do we have any colours in store? let colours = self.vbox.store[&ItemType::Colours].keys() .cloned() + .take(2) .collect::>(); // how about a base skill? @@ -193,11 +194,13 @@ impl Player { }; // if no: try to refill and start again - match colours.len() < 2 || base.is_none() { - true => match self.vbox_refill() { - Ok(_) => continue, - Err(_) => break, // give up - }, + match colours.len() != 2 || base.is_none() { + true => { + match self.vbox_refill() { + Ok(_) => continue, + Err(_) => break, // give up + }; + } false => { let mut vbox_items = HashMap::new(); vbox_items.insert(ItemType::Colours, colours); @@ -230,7 +233,7 @@ impl Player { // there's a bad bug here where if this apply fails // the item in question will be silently dropped let item = self.vbox.stash.remove(&i).unwrap(); - self.vbox_apply(item, construct_id).ok(); + self.vbox_apply(item, construct_id).unwrap(); continue; } // need to buy one @@ -238,6 +241,7 @@ impl Player { // do we have any colours in store? let colours = self.vbox.store[&ItemType::Colours].keys() .cloned() + .take(2) .collect::>(); // how about a base spec? @@ -247,7 +251,7 @@ impl Player { }; // if no: try to refill and start again - match colours.len() < 2 || base.is_none() { + match colours.len() != 2 || base.is_none() { true => match self.vbox_refill() { Ok(_) => continue, Err(_) => break, // give up @@ -446,9 +450,11 @@ mod tests { let mut player = Player::new(player_account, &"test".to_string(), constructs).set_bot(true); player.vbox.fill(); + player.vbox.bits = 100; player.autobuy(); - assert!(player.constructs.iter().all(|c| c.skills.len() >= 1)); + assert!(player.constructs.iter().all(|c| c.skills.len() > 1)); + assert!(player.constructs.iter().all(|c| c.specs.len() >= 1)); } #[test] From 84ac6db353eda3cab2f973b467dccf31acd55286 Mon Sep 17 00:00:00 2001 From: Mashy Date: Wed, 4 Dec 2019 11:56:50 +1000 Subject: [PATCH 05/10] power spec rebalance --- CHANGELOG.md | 11 ++ server/src/construct.rs | 2 +- server/src/spec.rs | 248 ++++++++++++++++++++-------------------- 3 files changed, 136 insertions(+), 125 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fd1d26bb..f290763c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,14 @@ +## [1.11.0] - 2019-12-XX +### Changed +- Reduced the number of items to create + and ++ versions from 3 to 2 (need 4 items total to make a ++) +- Reduced the power of ++ skills to be closer to the power of previous + versions + +## [1.10.0] - 2019-11-29 +### Changed +- Reworked the vbox layout +- Floating combat text and faster animations +- Mobile UI fixes + ## [1.9.1] - 2019-11-21 ### Fixed - Fixed Item+ Purchasing Bug diff --git a/server/src/construct.rs b/server/src/construct.rs index 9f957d00..15e405d7 100644 --- a/server/src/construct.rs +++ b/server/src/construct.rs @@ -223,7 +223,7 @@ impl Construct { red_life: ConstructStat { base: 125, value: 125, max: 125, stat: Stat::RedLife }, blue_power: ConstructStat { base: 320, value: 320, max: 320, stat: Stat::BluePower }, blue_life: ConstructStat { base: 125, value: 125, max: 125, stat: Stat::BlueLife }, - green_power: ConstructStat { base: 300, value: 300, max: 300, stat: Stat::GreenPower }, + green_power: ConstructStat { base: 320, value: 320, max: 320, stat: Stat::GreenPower }, green_life: ConstructStat { base: 800, value: 800, max: 800, stat: Stat::GreenLife }, speed: ConstructStat { base: 100, value: 100, max: 100, stat: Stat::Speed }, // evasion: ConstructStat { base: 0, value: 0, max: 0, stat: Stat::Evasion }, diff --git a/server/src/spec.rs b/server/src/spec.rs index 736eaba1..c09193a1 100644 --- a/server/src/spec.rs +++ b/server/src/spec.rs @@ -172,34 +172,141 @@ impl Spec { }, Spec::PowerRR=> SpecValues { - base: 25, + base: 10, bonuses: vec![ - SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 10 }, - SpecBonus { req: Colours { red: 10, green: 0, blue: 0 }, bonus: 15 }, - SpecBonus { req: Colours { red: 20, green: 0, blue: 0 }, bonus: 20 } + SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 5 }, + SpecBonus { req: Colours { red: 10, green: 0, blue: 0 }, bonus: 10 }, + SpecBonus { req: Colours { red: 20, green: 0, blue: 0 }, bonus: 15 } ], }, Spec::PowerGG=> SpecValues { - base: 25, + base: 10, bonuses: vec![ - SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 10 }, - SpecBonus { req: Colours { red: 0, green: 10, blue: 0 }, bonus: 15 }, - SpecBonus { req: Colours { red: 0, green: 20, blue: 0 }, bonus: 20 } + SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 5 }, + SpecBonus { req: Colours { red: 0, green: 10, blue: 0 }, bonus: 10 }, + SpecBonus { req: Colours { red: 0, green: 20, blue: 0 }, bonus: 15 } ], }, Spec::PowerBB=> SpecValues { - base: 25, + base: 10, bonuses: vec![ - SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 10 }, - SpecBonus { req: Colours { red: 0, green: 0, blue: 10 }, bonus: 15 }, - SpecBonus { req: Colours { red: 0, green: 0, blue: 20 }, bonus: 20 } + SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 5 }, + SpecBonus { req: Colours { red: 0, green: 0, blue: 10 }, bonus: 10 }, + SpecBonus { req: Colours { red: 0, green: 0, blue: 20 }, bonus: 15 } ], }, Spec::PowerRG=> SpecValues { - base: 20, + base: 10, + bonuses: vec![ + SpecBonus { req: Colours { red: 2, green: 2, blue: 0 }, bonus: 3 }, + SpecBonus { req: Colours { red: 5, green: 5, blue: 0 }, bonus: 6 }, + SpecBonus { req: Colours { red: 10, green: 10, blue: 0 }, bonus: 9 } + ], + }, + + Spec::PowerGB=> SpecValues { + base: 10, + bonuses: vec![ + SpecBonus { req: Colours { red: 0, green: 2, blue: 2 }, bonus: 3 }, + SpecBonus { req: Colours { red: 0, green: 5, blue: 5 }, bonus: 6 }, + SpecBonus { req: Colours { red: 0, green: 10, blue: 10 }, bonus: 9 } + ], + }, + + Spec::PowerRB=> SpecValues { + base: 10, + bonuses: vec![ + SpecBonus { req: Colours { red: 2, green: 0, blue: 2 }, bonus: 3 }, + SpecBonus { req: Colours { red: 5, green: 0, blue: 5 }, bonus: 6 }, + SpecBonus { req: Colours { red: 10, green: 0, blue: 10 }, bonus: 9 } + ], + }, + + Spec::PowerRRPlus => SpecValues { + base: 15, + bonuses: vec![ + SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 6 }, + SpecBonus { req: Colours { red: 10, green: 0, blue: 0 }, bonus: 12 }, + SpecBonus { req: Colours { red: 20, green: 0, blue: 0 }, bonus: 18 } + ], + }, + + Spec::PowerGGPlus => SpecValues { + base: 15, + bonuses: vec![ + SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 6 }, + SpecBonus { req: Colours { red: 0, green: 10, blue: 0 }, bonus: 12 }, + SpecBonus { req: Colours { red: 0, green: 20, blue: 0 }, bonus: 18 } + ], + }, + + Spec::PowerBBPlus => SpecValues { + base: 15, + bonuses: vec![ + SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 6 }, + SpecBonus { req: Colours { red: 0, green: 0, blue: 10 }, bonus: 12 }, + SpecBonus { req: Colours { red: 0, green: 0, blue: 20 }, bonus: 18 } + ], + }, + + Spec::PowerRGPlus => SpecValues { + base: 15, + bonuses: vec![ + SpecBonus { req: Colours { red: 2, green: 2, blue: 0 }, bonus: 4 }, + SpecBonus { req: Colours { red: 5, green: 5, blue: 0 }, bonus: 8 }, + SpecBonus { req: Colours { red: 10, green: 10, blue: 0 }, bonus: 12 } + ], + }, + + Spec::PowerGBPlus => SpecValues { + base: 15, + bonuses: vec![ + SpecBonus { req: Colours { red: 0, green: 2, blue: 2 }, bonus: 4 }, + SpecBonus { req: Colours { red: 0, green: 5, blue: 5 }, bonus: 8 }, + SpecBonus { req: Colours { red: 0, green: 10, blue: 10 }, bonus: 12 } + ], + }, + + Spec::PowerRBPlus => SpecValues { + base: 15, + bonuses: vec![ + SpecBonus { req: Colours { red: 2, green: 0, blue: 2 }, bonus: 4 }, + SpecBonus { req: Colours { red: 5, green: 0, blue: 5 }, bonus: 8 }, + SpecBonus { req: Colours { red: 10, green: 0, blue: 10 }, bonus: 12 } + ], + }, + Spec::PowerRRPlusPlus => SpecValues { + base: 25, + bonuses: vec![ + SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 8 }, + SpecBonus { req: Colours { red: 10, green: 0, blue: 0 }, bonus: 16 }, + SpecBonus { req: Colours { red: 20, green: 0, blue: 0 }, bonus: 24 } + ], + }, + + Spec::PowerGGPlusPlus => SpecValues { + base: 25, + bonuses: vec![ + SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 8 }, + SpecBonus { req: Colours { red: 0, green: 10, blue: 0 }, bonus: 16 }, + SpecBonus { req: Colours { red: 0, green: 20, blue: 0 }, bonus: 24 } + ], + }, + + Spec::PowerBBPlusPlus => SpecValues { + base: 25, + bonuses: vec![ + SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 8 }, + SpecBonus { req: Colours { red: 0, green: 0, blue: 10 }, bonus: 16 }, + SpecBonus { req: Colours { red: 0, green: 0, blue: 20 }, bonus: 24 } + ], + }, + + Spec::PowerRGPlusPlus => SpecValues { + base: 25, bonuses: vec![ SpecBonus { req: Colours { red: 2, green: 2, blue: 0 }, bonus: 5 }, SpecBonus { req: Colours { red: 5, green: 5, blue: 0 }, bonus: 10 }, @@ -207,8 +314,8 @@ impl Spec { ], }, - Spec::PowerGB=> SpecValues { - base: 20, + Spec::PowerGBPlusPlus => SpecValues { + base: 25, bonuses: vec![ SpecBonus { req: Colours { red: 0, green: 2, blue: 2 }, bonus: 5 }, SpecBonus { req: Colours { red: 0, green: 5, blue: 5 }, bonus: 10 }, @@ -216,8 +323,8 @@ impl Spec { ], }, - Spec::PowerRB=> SpecValues { - base: 20, + Spec::PowerRBPlusPlus => SpecValues { + base: 25, bonuses: vec![ SpecBonus { req: Colours { red: 2, green: 0, blue: 2 }, bonus: 5 }, SpecBonus { req: Colours { red: 5, green: 0, blue: 5 }, bonus: 10 }, @@ -225,113 +332,6 @@ impl Spec { ], }, - Spec::PowerRRPlus => SpecValues { - base: 45, - bonuses: vec![ - SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 15 }, - SpecBonus { req: Colours { red: 10, green: 0, blue: 0 }, bonus: 25 }, - SpecBonus { req: Colours { red: 20, green: 0, blue: 0 }, bonus: 35 } - ], - }, - - Spec::PowerGGPlus => SpecValues { - base: 45, - bonuses: vec![ - SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 15 }, - SpecBonus { req: Colours { red: 0, green: 10, blue: 0 }, bonus: 25 }, - SpecBonus { req: Colours { red: 0, green: 20, blue: 0 }, bonus: 35 } - ], - }, - - Spec::PowerBBPlus => SpecValues { - base: 45, - bonuses: vec![ - SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 15 }, - SpecBonus { req: Colours { red: 0, green: 0, blue: 10 }, bonus: 25 }, - SpecBonus { req: Colours { red: 0, green: 0, blue: 20 }, bonus: 35 } - ], - }, - - Spec::PowerRGPlus => SpecValues { - base: 35, - bonuses: vec![ - SpecBonus { req: Colours { red: 2, green: 2, blue: 0 }, bonus: 10 }, - SpecBonus { req: Colours { red: 5, green: 5, blue: 0 }, bonus: 20 }, - SpecBonus { req: Colours { red: 10, green: 10, blue: 0 }, bonus: 25 } - ], - }, - - Spec::PowerGBPlus => SpecValues { - base: 35, - bonuses: vec![ - SpecBonus { req: Colours { red: 0, green: 2, blue: 2 }, bonus: 10 }, - SpecBonus { req: Colours { red: 0, green: 5, blue: 5 }, bonus: 20 }, - SpecBonus { req: Colours { red: 0, green: 10, blue: 10 }, bonus: 25 } - ], - }, - - Spec::PowerRBPlus => SpecValues { - base: 35, - bonuses: vec![ - SpecBonus { req: Colours { red: 2, green: 0, blue: 2 }, bonus: 10 }, - SpecBonus { req: Colours { red: 5, green: 0, blue: 5 }, bonus: 20 }, - SpecBonus { req: Colours { red: 10, green: 0, blue: 10 }, bonus: 25 } - ], - }, - Spec::PowerRRPlusPlus => SpecValues { - base: 80, - bonuses: vec![ - SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 25 }, - SpecBonus { req: Colours { red: 10, green: 0, blue: 0 }, bonus: 45 }, - SpecBonus { req: Colours { red: 20, green: 0, blue: 0 }, bonus: 60 } - ], - }, - - Spec::PowerGGPlusPlus => SpecValues { - base: 80, - bonuses: vec![ - SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 25 }, - SpecBonus { req: Colours { red: 0, green: 10, blue: 0 }, bonus: 45 }, - SpecBonus { req: Colours { red: 0, green: 20, blue: 0 }, bonus: 60 } - ], - }, - - Spec::PowerBBPlusPlus => SpecValues { - base: 80, - bonuses: vec![ - SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 25 }, - SpecBonus { req: Colours { red: 0, green: 0, blue: 10 }, bonus: 45 }, - SpecBonus { req: Colours { red: 0, green: 0, blue: 20 }, bonus: 60 } - ], - }, - - Spec::PowerRGPlusPlus => SpecValues { - base: 60, - bonuses: vec![ - SpecBonus { req: Colours { red: 2, green: 2, blue: 0 }, bonus: 20 }, - SpecBonus { req: Colours { red: 5, green: 5, blue: 0 }, bonus: 30 }, - SpecBonus { req: Colours { red: 10, green: 10, blue: 0 }, bonus: 45 } - ], - }, - - Spec::PowerGBPlusPlus => SpecValues { - base: 60, - bonuses: vec![ - SpecBonus { req: Colours { red: 0, green: 2, blue: 2 }, bonus: 20 }, - SpecBonus { req: Colours { red: 0, green: 5, blue: 5 }, bonus: 30 }, - SpecBonus { req: Colours { red: 0, green: 10, blue: 10 }, bonus: 45 } - ], - }, - - Spec::PowerRBPlusPlus => SpecValues { - base: 60, - bonuses: vec![ - SpecBonus { req: Colours { red: 2, green: 0, blue: 2 }, bonus: 20 }, - SpecBonus { req: Colours { red: 5, green: 0, blue: 5 }, bonus: 30 }, - SpecBonus { req: Colours { red: 10, green: 0, blue: 10 }, bonus: 45 } - ], - }, - Spec::Speed => SpecValues { base: 40, bonuses: vec![] From e1f400726b5713368d0bb897b2e77326a1bfcd1f Mon Sep 17 00:00:00 2001 From: Mashy Date: Wed, 4 Dec 2019 12:01:38 +1000 Subject: [PATCH 06/10] another tweak --- server/src/spec.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/server/src/spec.rs b/server/src/spec.rs index c09193a1..9e084842 100644 --- a/server/src/spec.rs +++ b/server/src/spec.rs @@ -175,8 +175,8 @@ impl Spec { base: 10, bonuses: vec![ SpecBonus { req: Colours { red: 5, green: 0, blue: 0 }, bonus: 5 }, - SpecBonus { req: Colours { red: 10, green: 0, blue: 0 }, bonus: 10 }, - SpecBonus { req: Colours { red: 20, green: 0, blue: 0 }, bonus: 15 } + SpecBonus { req: Colours { red: 10, green: 0, blue: 0 }, bonus: 9 }, + SpecBonus { req: Colours { red: 20, green: 0, blue: 0 }, bonus: 13 } ], }, @@ -184,8 +184,8 @@ impl Spec { base: 10, bonuses: vec![ SpecBonus { req: Colours { red: 0, green: 5, blue: 0 }, bonus: 5 }, - SpecBonus { req: Colours { red: 0, green: 10, blue: 0 }, bonus: 10 }, - SpecBonus { req: Colours { red: 0, green: 20, blue: 0 }, bonus: 15 } + SpecBonus { req: Colours { red: 0, green: 10, blue: 0 }, bonus: 9 }, + SpecBonus { req: Colours { red: 0, green: 20, blue: 0 }, bonus: 13 } ], }, @@ -193,8 +193,8 @@ impl Spec { base: 10, bonuses: vec![ SpecBonus { req: Colours { red: 0, green: 0, blue: 5 }, bonus: 5 }, - SpecBonus { req: Colours { red: 0, green: 0, blue: 10 }, bonus: 10 }, - SpecBonus { req: Colours { red: 0, green: 0, blue: 20 }, bonus: 15 } + SpecBonus { req: Colours { red: 0, green: 0, blue: 10 }, bonus: 9 }, + SpecBonus { req: Colours { red: 0, green: 0, blue: 20 }, bonus: 13 } ], }, From 66ec4ff5afa808b1132d5305e4dc5190b9fe5932 Mon Sep 17 00:00:00 2001 From: Mashy Date: Wed, 4 Dec 2019 12:17:17 +1000 Subject: [PATCH 07/10] test fix --- server/src/construct.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/server/src/construct.rs b/server/src/construct.rs index 15e405d7..454b9aa0 100644 --- a/server/src/construct.rs +++ b/server/src/construct.rs @@ -1031,9 +1031,9 @@ mod tests { construct.apply_modifiers(&player_colours); - assert!(construct.red_power.value == construct.red_power.base + construct.red_power.base.pct(35)); - assert!(construct.green_power.value == construct.green_power.base + construct.green_power.base.pct(50)); - assert!(construct.blue_power.value == construct.blue_power.base + construct.blue_power.base.pct(70)); + assert!(construct.red_power.value == construct.red_power.base + construct.red_power.base.pct(15)); + assert!(construct.green_power.value == construct.green_power.base + construct.green_power.base.pct(24)); + assert!(construct.blue_power.value == construct.blue_power.base + construct.blue_power.base.pct(37)); return; } @@ -1103,9 +1103,9 @@ mod tests { construct.apply_modifiers(&player_colours); - assert!(construct.red_power.value == construct.red_power.base + construct.red_power.base.pct(35)); - assert!(construct.green_power.value == construct.green_power.base + construct.green_power.base.pct(25)); - assert!(construct.blue_power.value == construct.blue_power.base + construct.blue_power.base.pct(25)); + assert!(construct.red_power.value == construct.red_power.base + construct.red_power.base.pct(15)); + assert!(construct.green_power.value == construct.green_power.base + construct.green_power.base.pct(10)); + assert!(construct.blue_power.value == construct.blue_power.base + construct.blue_power.base.pct(10)); return; } From 38eda7afac429283fc737f717600b8e7d3bc17fa Mon Sep 17 00:00:00 2001 From: Mashy Date: Wed, 4 Dec 2019 12:59:45 +1000 Subject: [PATCH 08/10] skill value rebalance --- WORKLOG.md | 5 +- server/src/skill.rs | 116 ++++++++++++++++++++++---------------------- 2 files changed, 62 insertions(+), 59 deletions(-) diff --git a/WORKLOG.md b/WORKLOG.md index 3eab2abc..3ab85ef3 100644 --- a/WORKLOG.md +++ b/WORKLOG.md @@ -29,8 +29,11 @@ Hexagon Set - Increase intensity for each visit _mashy_ +* rebalance + * speed specs + * life specs + * represent construct colours during game phase (try %bar or dots) -* reduce combos from 3->2 and rebalance _external_ * Graphics diff --git a/server/src/skill.rs b/server/src/skill.rs index d94cdc96..ea1f3131 100644 --- a/server/src/skill.rs +++ b/server/src/skill.rs @@ -764,87 +764,87 @@ impl Skill { Skill::Attack => 80, // Base Skill::Blast => 105, // BB - Skill::BlastPlus => 140, // BB - Skill::BlastPlusPlus => 200, // BB + Skill::BlastPlus => 125, // BB + Skill::BlastPlusPlus => 145, // BB Skill::Chaos => 40, // BR - Skill::ChaosPlus => 65, // BR - Skill::ChaosPlusPlus => 90, // BR + Skill::ChaosPlus => 50, // BR + Skill::ChaosPlusPlus => 65, // BR - Skill::Heal => 125, //GG - Skill::HealPlus => 185, //GG - Skill::HealPlusPlus => 270, //GG + Skill::Heal => 115, //GG + Skill::HealPlus => 135, //GG + Skill::HealPlusPlus => 160, //GG Skill::SiphonTick => 25, // GB - Skill::SiphonTickPlus => 30, - Skill::SiphonTickPlusPlus => 40, + Skill::SiphonTickPlus => 27, + Skill::SiphonTickPlusPlus => 30, - Skill::Slay => 45, // RG - Skill::SlayPlus => 65, - Skill::SlayPlusPlus => 100, + Skill::Slay => 40, // RG + Skill::SlayPlus => 50, + Skill::SlayPlusPlus => 65, Skill::Strike => 90, //RR - Skill::StrikePlus => 140, - Skill::StrikePlusPlus => 200, + Skill::StrikePlus => 110, + Skill::StrikePlusPlus => 140, // Block Base Skill::ElectrocuteTick => 80, - Skill::ElectrocuteTickPlus => 100, - Skill::ElectrocuteTickPlusPlus => 130, + Skill::ElectrocuteTickPlus => 90, + Skill::ElectrocuteTickPlusPlus => 100, - Skill::CounterAttack => 120, - Skill::CounterAttackPlus => 160, - Skill::CounterAttackPlusPlus => 230, + Skill::CounterAttack => 115, + Skill::CounterAttackPlus => 130, + Skill::CounterAttackPlusPlus => 160, Skill::Purify => 45, //Green dmg (heal) - Skill::PurifyPlus => 70, - Skill::PurifyPlusPlus => 105, + Skill::PurifyPlus => 60, + Skill::PurifyPlusPlus => 85, Skill::Reflect => 45, //Recharge blue life (heal) Skill::ReflectPlus => 70, Skill::ReflectPlusPlus => 100, Skill::Recharge => 70, //Recharge red and blue life (heal) - Skill::RechargePlus => 110, - Skill::RechargePlusPlus => 170, + Skill::RechargePlus => 90, + Skill::RechargePlusPlus => 110, - Skill::Sustain => 120, // Recharge red life (heal) - Skill::SustainPlus => 150, - Skill::SustainPlusPlus => 230, + Skill::Sustain => 110, // Recharge red life (heal) + Skill::SustainPlus => 130, + Skill::SustainPlusPlus => 150, // Stun Base - Skill::Sleep => 200, //Green dmg (heal) - Skill::SleepPlus => 290, - Skill::SleepPlusPlus => 400, + Skill::Sleep => 160, //Green dmg (heal) + Skill::SleepPlus => 200, + Skill::SleepPlusPlus => 240, - Skill::Banish => 40, //Green dmg (heal) - Skill::BanishPlus => 75, - Skill::BanishPlusPlus => 125, + Skill::Banish => 50, //Green dmg (heal) + Skill::BanishPlus => 65, + Skill::BanishPlusPlus => 80, Skill::Bash => 45, - Skill::BashPlus => 65, - Skill::BashPlusPlus => 100, + Skill::BashPlus => 55, + Skill::BashPlusPlus => 70, Skill::Link => 25, - Skill::LinkPlus => 40, - Skill::LinkPlusPlus => 70, + Skill::LinkPlus => 35, + Skill::LinkPlusPlus => 45, Skill::Ruin => 40, - Skill::RuinPlus => 70, - Skill::RuinPlusPlus => 100, + Skill::RuinPlus => 55, + Skill::RuinPlusPlus => 70, // Debuff Base Skill::DecayTick => 33, - Skill::DecayTickPlus => 45, - Skill::DecayTickPlusPlus => 70, + Skill::DecayTickPlus => 37, + Skill::DecayTickPlusPlus => 45, Skill::Silence => 55, // Deals more per blue skill on target - Skill::SilencePlus => 80, - Skill::SilencePlusPlus => 110, + Skill::SilencePlus => 65, + Skill::SilencePlusPlus => 80, Skill::Restrict => 40, // Deals more per red skill on target - Skill::RestrictPlus => 65, - Skill::RestrictPlusPlus => 100, + Skill::RestrictPlus => 55, + Skill::RestrictPlusPlus => 70, // Buff base Skill::HybridBlast => 50, @@ -852,16 +852,16 @@ impl Skill { Skill::HasteStrike => 60, Skill::Absorb=> 95, - Skill::AbsorbPlus => 120, - Skill::AbsorbPlusPlus => 155, + Skill::AbsorbPlus => 110, + Skill::AbsorbPlusPlus => 120, - Skill::Intercept => 80, - Skill::InterceptPlus => 110, - Skill::InterceptPlusPlus => 150, + Skill::Intercept => 85, + Skill::InterceptPlus => 100, + Skill::InterceptPlusPlus => 125, Skill::TriageTick => 75, - Skill::TriageTickPlus => 110, - Skill::TriageTickPlusPlus => 140, + Skill::TriageTickPlus => 90, + Skill::TriageTickPlusPlus => 110, _ => 100, } @@ -905,9 +905,9 @@ impl Skill { Skill::Curse => vec![ConstructEffect {effect: Effect::Curse, duration: 2, meta: Some(EffectMeta::Multiplier(150)), tick: None}], Skill::CursePlus => vec![ConstructEffect {effect: Effect::Curse, duration: 2, - meta: Some(EffectMeta::Multiplier(200)), tick: None}], + meta: Some(EffectMeta::Multiplier(175)), tick: None}], Skill::CursePlusPlus => vec![ConstructEffect {effect: Effect::Curse, duration: 3, - meta: Some(EffectMeta::Multiplier(250)), tick: None}], + meta: Some(EffectMeta::Multiplier(200)), tick: None}], Skill::Debuff => vec![ConstructEffect {effect: Effect::Slow, duration: 3, meta: Some(EffectMeta::Multiplier(50)), tick: None }], @@ -940,15 +940,15 @@ impl Skill { meta: Some(EffectMeta::Skill(Skill::AbsorptionPlusPlus)), tick: None}], Skill::Absorption => vec![ConstructEffect {effect: Effect::Absorption, duration: 3, meta: None, tick: None}], - Skill::AbsorptionPlus => vec![ConstructEffect {effect: Effect::Absorption, duration: 5, meta: None, tick: None}], - Skill::AbsorptionPlusPlus => vec![ConstructEffect {effect: Effect::Absorption, duration: 7, meta: None, tick: None}], + Skill::AbsorptionPlus => vec![ConstructEffect {effect: Effect::Absorption, duration: 4, meta: None, tick: None}], + Skill::AbsorptionPlusPlus => vec![ConstructEffect {effect: Effect::Absorption, duration: 5, meta: None, tick: None}], Skill::Hybrid => vec![ConstructEffect {effect: Effect::Hybrid, duration: 3, meta: Some(EffectMeta::Multiplier(150)), tick: None }], Skill::HybridPlus => vec![ConstructEffect {effect: Effect::Hybrid, duration: 4, meta: Some(EffectMeta::Multiplier(175)), tick: None }], Skill::HybridPlusPlus => vec![ConstructEffect {effect: Effect::Hybrid, duration: 5, - meta: Some(EffectMeta::Multiplier(225)), tick: None }], + meta: Some(EffectMeta::Multiplier(200)), tick: None }], Skill::Invert => vec![ConstructEffect {effect: Effect::Invert, duration: 2, meta: None, tick: None}], Skill::InvertPlus => vec![ConstructEffect {effect: Effect::Invert, duration: 3, meta: None, tick: None}], @@ -970,10 +970,10 @@ impl Skill { meta: Some(EffectMeta::Multiplier(150)), tick: None}], Skill::BreakPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}, ConstructEffect {effect: Effect::Vulnerable, duration: 4, - meta: Some(EffectMeta::Multiplier(200)), tick: None}], + meta: Some(EffectMeta::Multiplier(175)), tick: None}], Skill::BreakPlusPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}, ConstructEffect {effect: Effect::Vulnerable, duration: 4, - meta: Some(EffectMeta::Multiplier(250)), tick: None}], + meta: Some(EffectMeta::Multiplier(200)), tick: None}], Skill::Ruin => vec![ConstructEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}], Skill::RuinPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}], From 0ea1d4b05ec64243644369b5797faac79e1e4e20 Mon Sep 17 00:00:00 2001 From: Mashy Date: Wed, 4 Dec 2019 13:01:54 +1000 Subject: [PATCH 09/10] 1.10.1 --- VERSION | 2 +- acp/package.json | 2 +- client/package.json | 2 +- ops/package.json | 2 +- server/Cargo.toml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/VERSION b/VERSION index ed21137e..e33692ab 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.10.0 \ No newline at end of file +1.10.1 \ No newline at end of file diff --git a/acp/package.json b/acp/package.json index 7a6a5902..af19ae15 100644 --- a/acp/package.json +++ b/acp/package.json @@ -1,6 +1,6 @@ { "name": "mnml-client", - "version": "1.10.0", + "version": "1.10.1", "description": "", "main": "index.js", "scripts": { diff --git a/client/package.json b/client/package.json index 4cbd135c..c840b666 100644 --- a/client/package.json +++ b/client/package.json @@ -1,6 +1,6 @@ { "name": "mnml-client", - "version": "1.10.0", + "version": "1.10.1", "description": "", "main": "index.js", "scripts": { diff --git a/ops/package.json b/ops/package.json index 63b2a82e..d4b90bb7 100644 --- a/ops/package.json +++ b/ops/package.json @@ -1,6 +1,6 @@ { "name": "mnml-ops", - "version": "1.10.0", + "version": "1.10.1", "description": "", "main": "index.js", "scripts": { diff --git a/server/Cargo.toml b/server/Cargo.toml index fb7f73c9..39e11d55 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mnml" -version = "1.10.0" +version = "1.10.1" authors = ["ntr "] [dependencies] From 1b1e3d782d0e18e35828866cbd5d89a3128cc357 Mon Sep 17 00:00:00 2001 From: Mashy Date: Wed, 4 Dec 2019 13:03:48 +1000 Subject: [PATCH 10/10] changelog --- CHANGELOG.md | 3 ++- client/changelog.html | 42 +++++++++++++++++++++++++++++------------- 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f290763c..8204531d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,8 @@ -## [1.11.0] - 2019-12-XX +## [1.10.1] - 2019-12-04 ### Changed - Reduced the number of items to create + and ++ versions from 3 to 2 (need 4 items total to make a ++) - Reduced the power of ++ skills to be closer to the power of previous + versions +- Tweaked all values of power specs to reduce their power bonuses ## [1.10.0] - 2019-11-29 ### Changed diff --git a/client/changelog.html b/client/changelog.html index 6c4f1a03..dc2b3291 100644 --- a/client/changelog.html +++ b/client/changelog.html @@ -1,6 +1,4 @@ - - -CHANGELOG

+[1.10.1] - 2019-12-04

+

+Changed

+
    +
  • Reduced the number of items to create + and ++ versions from 3 to 2 (need 4 items total to make a ++)
  • +
  • Reduced the power of ++ skills to be closer to the power of previous + versions
  • +
  • Tweaked all values of power specs to reduce their power bonuses
  • +
+

+[1.10.0] - 2019-11-29

+

+Changed

+
    +
  • Reworked the vbox layout
  • +
  • Floating combat text and faster animations
  • +
  • Mobile UI fixes
  • +
+

[1.9.1] - 2019-11-21

Fixed

@@ -742,7 +758,7 @@ pre {

[1.9.0] - 2019-11-21

-Changed

+Changed
  • VBOX
      @@ -794,7 +810,7 @@ pre {
    • Resizing of vbox when you buy / create certain items

    -Changed

    +Changed
    • Automatically shows a preview of combo item when you have 3 items selected for combining
    • Only highlight the first available item slot when equipping
    • @@ -826,7 +842,7 @@ pre {
    • An issue where skills would not be put on cooldown after being used.

    -Changed

    +Changed
    • Game phase

      @@ -893,7 +909,7 @@ pre {

    -Changed

    +Changed
    • Construct life changed

      @@ -979,7 +995,7 @@ pre {

    -Changed

    +Changed
    • Vbox phase

      @@ -1125,7 +1141,7 @@ pre {
    • Player width styling

    -Changed

    +Changed
    • Improved wiggle animation
    • Intercept is now considered defensive by bots
    • @@ -1134,7 +1150,7 @@ pre {

      [1.6.4] - 2019-10-24

      -Changed

      +Changed
      • Animations processing on client side reduced.
      @@ -1176,7 +1192,7 @@ pre {
    • Subscriber chat!

    -Changed

    +Changed
    • Made available skill / effect information during the combat phase.

      @@ -1208,7 +1224,7 @@ pre { [1.5.6] - 2019-10-17

      We've updated the UI during the vbox / buy phase to give a better indication of valid actions.

      -Changed

      +Changed
      • Borders for skill combo's represent the base colours.

        @@ -1234,7 +1250,7 @@ pre {

        [1.5.5] - 2019-10-15

        -Changed

        +Changed
        • Purge