From caaca4fb05e99b5628cc1ffaf025072da070f38e Mon Sep 17 00:00:00 2001 From: ntr Date: Wed, 22 May 2019 17:44:42 +1000 Subject: [PATCH] move combos --- client/src/utils.jsx | 12 ++-- server/src/item.rs | 165 ++++++++++++++++++++++++++++++------------- 2 files changed, 121 insertions(+), 56 deletions(-) diff --git a/client/src/utils.jsx b/client/src/utils.jsx index c3c0ae02..11be5c13 100644 --- a/client/src/utils.jsx +++ b/client/src/utils.jsx @@ -248,10 +248,10 @@ function resoCrypHealth(resolution, currentGame) { if (type === 'Damage') { const { amount, mitigation, colour } = event; cryp.green_life.value -= amount; - if (colour === 'RedDamage') { + if (colour === 'Red') { cryp.red_life.value -= mitigation; } - if (colour === 'BlueDamage') { + if (colour === 'Blue') { cryp.blue_life.value -= mitigation; } } @@ -312,13 +312,13 @@ function eventClasses(resolution, cryp) { // Deal damage to cryp and return effect if (target && postSkill) { - if (colour === 'RedDamage') { + if (colour === 'Red') { return 'red-damage'; } - if (colour === 'BlueDamage') { + if (colour === 'Blue') { return 'blue-damage'; } - if (colour === 'GreenDamage') return 'green-damage'; + if (colour === 'Green') return 'green-damage'; } } @@ -399,7 +399,7 @@ function getCombatSequence(event) { || (event[1].skill === 'Decay' && event[1].effect === 'Wither'))) return ['POST_SKILL']; if (['Damage'].includes(event[0]) - && ((event[1].skill === 'Chaos' && event[1].colour === 'RedDamage') + && ((event[1].skill === 'Chaos' && event[1].colour === 'Red') || event[1].skill === 'Silence' || event[1].skill === 'Snare')) return ['POST_SKILL']; diff --git a/server/src/item.rs b/server/src/item.rs index d0079ee0..b90157f1 100644 --- a/server/src/item.rs +++ b/server/src/item.rs @@ -467,6 +467,71 @@ impl Item { _ => format!("..."), } } + + fn combo(&self) -> Vec { + match self { + Item::Taunt => vec![Item::Buff, Item::Red, Item::Red], + Item::Triage => vec![Item::Buff, Item::Green, Item::Green], + Item::Scatter => vec![Item::Buff, Item::Blue, Item::Blue], //To be impl + Item::Haste => vec![Item::Buff, Item::Red, Item::Green], + Item::Impurity => vec![Item::Buff, Item::Green, Item::Blue], + Item::Amplify => vec![Item::Buff, Item::Red, Item::Blue], // Some flavour + + Item::Snare => vec![Item::Debuff, Item::Red, Item::Red], + Item::Purge => vec![Item::Debuff, Item::Green, Item::Green], // Needs flavour + Item::Silence => vec![Item::Debuff, Item::Blue, Item::Blue], + Item::Curse => vec![Item::Debuff, Item::Red, Item::Green], // To be reworked + Item::Decay => vec![Item::Debuff, Item::Green, Item::Blue], + Item::Invert => vec![Item::Debuff, Item::Red, Item::Blue], + + Item::Parry => vec![Item::Block, Item::Red, Item::Red], // Add red recharge + Item::Purify => vec![Item::Block, Item::Green, Item::Green], + Item::Corrupt => vec![Item::Block, Item::Blue, Item::Blue], + Item::Clutch => vec![Item::Block, Item::Red, Item::Green], + Item::Reflect => vec![Item::Block, Item::Green, Item::Blue], + Item::Recharge => vec![Item::Block, Item::Red, Item::Blue], + + Item::Strangle => vec![Item::Stun, Item::Red, Item::Red], + Item::Sleep => vec![Item::Stun, Item::Green, Item::Green], + Item::Ruin => vec![Item::Stun, Item::Blue, Item::Blue], + Item::Throw => vec![Item::Stun, Item::Red, Item::Green], + Item::Hex => vec![Item::Stun, Item::Green, Item::Blue], + Item::Banish => vec![Item::Stun, Item::Red, Item::Blue], + + Item::Strike => vec![Item::Attack, Item::Red, Item::Red], + Item::StrikeII => vec![Item::Strike, Item::Strike, Item::Strike], + Item::StrikeIII => vec![Item::StrikeII, Item::StrikeII, Item::StrikeII], + + Item::Heal => vec![Item::Attack, Item::Green, Item::Green], + 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::Chaos => vec![Item::Attack, Item::Red, Item::Blue], + + Item::RedDamageI => vec![Item::Damage, Item::Red, Item::Red], + Item::GreenDamageI => vec![Item::Damage, Item::Green, Item::Green], + Item::BlueDamageI => vec![Item::Damage, Item::Blue, Item::Blue], + Item::GRDI => vec![Item::Damage, Item::Red, Item::Green], + Item::GBDI => vec![Item::Damage, Item::Green, Item::Blue], + Item::RBDI => vec![Item::Damage, Item::Red, Item::Blue], + + Item::RedLifeI => vec![Item::Life, Item::Red, Item::Red], + Item::GreenLifeI => vec![Item::Life, Item::Green, Item::Green], + Item::BlueLifeI => vec![Item::Life, Item::Blue, Item::Blue], + Item::GRLI => vec![Item::Life, Item::Red, Item::Green], + Item::GBLI => vec![Item::Life, Item::Green, Item::Blue], + Item::RBLI => vec![Item::Life, Item::Red, Item::Blue], + + Item::RedSpeedI => vec![Item::Speed, Item::Red, Item::Red], + Item::GreenSpeedI => vec![Item::Speed, Item::Green, Item::Green], + Item::BlueSpeedI => vec![Item::Speed, Item::Blue, Item::Blue], + Item::GRSpeedI => vec![Item::Speed, Item::Red, Item::Green], + Item::GBSpeedI => vec![Item::Speed, Item::Green, Item::Blue], + Item::RBSpeedI => vec![Item::Speed, Item::Red, Item::Blue], + + _ => vec![*self], + } + } } impl From for Item { @@ -567,64 +632,64 @@ pub struct Combo { pub fn get_combos() -> Vec { let mut combinations = vec![ - Combo { components: vec![Item::Buff, Item::Red, Item::Red], item: Item::Taunt }, - Combo { components: vec![Item::Buff, Item::Green, Item::Green], item: Item::Triage }, - Combo { components: vec![Item::Buff, Item::Blue, Item::Blue], item: Item::Scatter }, //To be impl - Combo { components: vec![Item::Buff, Item::Red, Item::Green], item: Item::Haste }, - Combo { components: vec![Item::Buff, Item::Green, Item::Blue], item: Item::Impurity }, - Combo { components: vec![Item::Buff, Item::Red, Item::Blue], item: Item::Amplify }, // Some flavour + Combo { components: Item::Taunt.combo(), item: Item::Taunt }, + Combo { components: Item::Triage.combo(), item: Item::Triage }, + Combo { components: Item::Scatter.combo(), item: Item::Scatter }, //To be impl + Combo { components: Item::Haste.combo(), item: Item::Haste }, + Combo { components: Item::Impurity.combo(), item: Item::Impurity }, + Combo { components: Item::Amplify.combo(), item: Item::Amplify }, // Some flavour - Combo { components: vec![Item::Debuff, Item::Red, Item::Red], item: Item::Snare }, - Combo { components: vec![Item::Debuff, Item::Green, Item::Green], item: Item::Purge }, // Needs flavour - Combo { components: vec![Item::Debuff, Item::Blue, Item::Blue], item: Item::Silence }, - Combo { components: vec![Item::Debuff, Item::Red, Item::Green], item: Item::Curse }, // To be reworked - Combo { components: vec![Item::Debuff, Item::Green, Item::Blue], item: Item::Decay }, - Combo { components: vec![Item::Debuff, Item::Red, Item::Blue], item: Item::Invert }, + Combo { components: Item::Snare.combo(), item: Item::Snare }, + Combo { components: Item::Purge.combo(), item: Item::Purge }, // Needs flavour + Combo { components: Item::Silence.combo(), item: Item::Silence }, + Combo { components: Item::Curse.combo(), item: Item::Curse }, // To be reworked + Combo { components: Item::Decay.combo(), item: Item::Decay }, + Combo { components: Item::Invert.combo(), item: Item::Invert }, - Combo { components: vec![Item::Block, Item::Red, Item::Red], item: Item::Parry }, // Add red recharge - Combo { components: vec![Item::Block, Item::Green, Item::Green], item: Item::Purify }, - Combo { components: vec![Item::Block, Item::Blue, Item::Blue], item: Item::Corrupt }, - Combo { components: vec![Item::Block, Item::Red, Item::Green], item: Item::Clutch }, - Combo { components: vec![Item::Block, Item::Green, Item::Blue], item: Item::Reflect }, - Combo { components: vec![Item::Block, Item::Red, Item::Blue], item: Item::Recharge }, + Combo { components: Item::Parry.combo(), item: Item::Parry }, // Add red recharge + Combo { components: Item::Purify.combo(), item: Item::Purify }, + Combo { components: Item::Corrupt.combo(), item: Item::Corrupt }, + Combo { components: Item::Clutch.combo(), item: Item::Clutch }, + Combo { components: Item::Reflect.combo(), item: Item::Reflect }, + Combo { components: Item::Recharge.combo(), item: Item::Recharge }, - Combo { components: vec![Item::Stun, Item::Red, Item::Red], item: Item::Strangle }, - Combo { components: vec![Item::Stun, Item::Green, Item::Green], item: Item::Sleep }, - Combo { components: vec![Item::Stun, Item::Blue, Item::Blue], item: Item::Ruin }, - Combo { components: vec![Item::Stun, Item::Red, Item::Green], item: Item::Throw }, - Combo { components: vec![Item::Stun, Item::Green, Item::Blue], item: Item::Hex }, - Combo { components: vec![Item::Stun, Item::Red, Item::Blue], item: Item::Banish }, + Combo { components: Item::Strangle.combo(), item: Item::Strangle }, + Combo { components: Item::Sleep.combo(), item: Item::Sleep }, + Combo { components: Item::Ruin.combo(), item: Item::Ruin }, + Combo { components: Item::Throw.combo(), item: Item::Throw }, + Combo { components: Item::Hex.combo(), item: Item::Hex }, + Combo { components: Item::Banish.combo(), item: Item::Banish }, - Combo { components: vec![Item::Attack, Item::Red, Item::Red], item: Item::Strike }, - Combo { components: vec![Item::Strike, Item::Strike, Item::Strike], item: Item::StrikeII }, - Combo { components: vec![Item::StrikeII, Item::StrikeII, Item::StrikeII], item: Item::StrikeIII }, + Combo { components: Item::Strike.combo(), item: Item::Strike }, + Combo { components: Item::StrikeII.combo(), item: Item::StrikeII }, + Combo { components: Item::StrikeIII.combo(), item: Item::StrikeIII }, - Combo { components: vec![Item::Attack, Item::Green, Item::Green], item: Item::Heal }, - Combo { components: vec![Item::Attack, Item::Blue, Item::Blue], item: Item::Blast }, - Combo { components: vec![Item::Attack, Item::Red, Item::Green], item: Item::Slay }, - Combo { components: vec![Item::Attack, Item::Green, Item::Blue], item: Item::Siphon }, - Combo { components: vec![Item::Attack, Item::Red, Item::Blue], item: Item::Chaos }, + Combo { components: Item::Heal.combo(), item: Item::Heal }, + Combo { components: Item::Blast.combo(), item: Item::Blast }, + Combo { components: Item::Slay.combo(), item: Item::Slay }, + Combo { components: Item::Siphon.combo(), item: Item::Siphon }, + Combo { components: Item::Chaos.combo(), item: Item::Chaos }, - Combo { components: vec![Item::Damage, Item::Red, Item::Red], item: Item::RedDamageI }, - Combo { components: vec![Item::Damage, Item::Green, Item::Green], item: Item::GreenDamageI }, - Combo { components: vec![Item::Damage, Item::Blue, Item::Blue], item: Item::BlueDamageI }, - Combo { components: vec![Item::Damage, Item::Red, Item::Green], item: Item::GRDI }, - Combo { components: vec![Item::Damage, Item::Green, Item::Blue], item: Item::GBDI }, - Combo { components: vec![Item::Damage, Item::Red, Item::Blue], item: Item::RBDI }, + Combo { components: Item::RedDamageI.combo(), item: Item::RedDamageI }, + Combo { components: Item::GreenDamageI.combo(), item: Item::GreenDamageI }, + Combo { components: Item::BlueDamageI.combo(), item: Item::BlueDamageI }, + Combo { components: Item::GRDI.combo(), item: Item::GRDI }, + Combo { components: Item::GBDI.combo(), item: Item::GBDI }, + Combo { components: Item::RBDI.combo(), item: Item::RBDI }, - Combo { components: vec![Item::Life, Item::Red, Item::Red], item: Item::RedLifeI }, - Combo { components: vec![Item::Life, Item::Green, Item::Green], item: Item::GreenLifeI }, - Combo { components: vec![Item::Life, Item::Blue, Item::Blue], item: Item::BlueLifeI }, - Combo { components: vec![Item::Life, Item::Red, Item::Green], item: Item::GRLI }, - Combo { components: vec![Item::Life, Item::Green, Item::Blue], item: Item::GBLI }, - Combo { components: vec![Item::Life, Item::Red, Item::Blue], item: Item::RBLI }, + Combo { components: Item::RedLifeI.combo(), item: Item::RedLifeI }, + Combo { components: Item::GreenLifeI.combo(), item: Item::GreenLifeI }, + Combo { components: Item::BlueLifeI.combo(), item: Item::BlueLifeI }, + Combo { components: Item::GRLI.combo(), item: Item::GRLI }, + Combo { components: Item::GBLI.combo(), item: Item::GBLI }, + Combo { components: Item::RBLI.combo(), item: Item::RBLI }, - Combo { components: vec![Item::Speed, Item::Red, Item::Red], item: Item::RedSpeedI }, - Combo { components: vec![Item::Speed, Item::Green, Item::Green], item: Item::GreenSpeedI }, - Combo { components: vec![Item::Speed, Item::Blue, Item::Blue], item: Item::BlueSpeedI }, - Combo { components: vec![Item::Speed, Item::Red, Item::Green], item: Item::GRSpeedI }, - Combo { components: vec![Item::Speed, Item::Green, Item::Blue], item: Item::GBSpeedI }, - Combo { components: vec![Item::Speed, Item::Red, Item::Blue], item: Item::RBSpeedI }, + Combo { components: Item::RedSpeedI.combo(), item: Item::RedSpeedI }, + Combo { components: Item::GreenSpeedI.combo(), item: Item::GreenSpeedI }, + Combo { components: Item::BlueSpeedI.combo(), item: Item::BlueSpeedI }, + Combo { components: Item::GRSpeedI.combo(), item: Item::GRSpeedI }, + Combo { components: Item::GBSpeedI.combo(), item: Item::GBSpeedI }, + Combo { components: Item::RBSpeedI.combo(), item: Item::RBSpeedI }, ];