From 0b62a392f527dd147698ed8c661ee69b9cd28b68 Mon Sep 17 00:00:00 2001 From: Mashy Date: Mon, 16 Sep 2019 14:49:36 +1000 Subject: [PATCH 1/2] link rework --- client/src/events.jsx | 2 +- server/src/item.rs | 176 +++++++++++++++++++++--------------------- server/src/skill.rs | 67 +++++----------- 3 files changed, 109 insertions(+), 136 deletions(-) diff --git a/client/src/events.jsx b/client/src/events.jsx index 184f4ad7..05b01677 100644 --- a/client/src/events.jsx +++ b/client/src/events.jsx @@ -79,7 +79,7 @@ function registerEvents(store) { store.dispatch(actions.setAnimTarget(anims.animTarget)); if (!['Banish', 'Invert'].includes(removeTier(anims.animTarget.skill))) store.dispatch(actions.setAnimCb(cb)); } - if (sequence.includes('POST_SKILL' && text)) { + if (sequence.includes('POST_SKILL') && text) { // timeout to prevent text classes from being added too soon setTimeout( () => store.dispatch(actions.setAnimText(text)), diff --git a/server/src/item.rs b/server/src/item.rs index 55c883f9..3c5c29f9 100644 --- a/server/src/item.rs +++ b/server/src/item.rs @@ -865,100 +865,100 @@ impl Item { fn combo(&self) -> Vec { match self { - Item::Intercept => vec![Item::Buff, Item::Red, Item::Red], - Item::InterceptPlus => vec![Item::Intercept, Item::Intercept, Item::Intercept], - Item::InterceptPlusPlus => vec![Item::InterceptPlus, Item::InterceptPlus, Item::InterceptPlus], - Item::Triage => vec![Item::Buff, Item::Green, Item::Green], - Item::TriagePlus => vec![Item::Triage, Item::Triage, Item::Triage], - Item::TriagePlusPlus => vec![Item::TriagePlus, Item::TriagePlus, Item::TriagePlus], - Item::Link => vec![Item::Buff, Item::Blue, Item::Blue], - Item::LinkPlus => vec![Item::Link, Item::Link, Item::Link], - Item::LinkPlusPlus => vec![Item::LinkPlusPlus, Item::LinkPlusPlus, Item::LinkPlusPlus], - Item::Haste => vec![Item::Buff, Item::Red, Item::Green], - Item::HastePlus => vec![Item::Haste, Item::Haste, Item::Haste], - Item::HastePlusPlus => vec![Item::HastePlus, Item::HastePlus, Item::HastePlus], - Item::Hybrid => vec![Item::Buff, Item::Green, Item::Blue], - Item::HybridPlus => vec![Item::Hybrid, Item::Hybrid, Item::Hybrid], - Item::HybridPlusPlus => vec![Item::HybridPlus, Item::HybridPlus, Item::HybridPlus], - Item::Amplify => vec![Item::Buff, Item::Red, Item::Blue], - Item::AmplifyPlus => vec![Item::Amplify, Item::Amplify, Item::Amplify], - Item::AmplifyPlusPlus => vec![Item::AmplifyPlus, Item::AmplifyPlus, Item::AmplifyPlus], + Item::Intercept => vec![Item::Buff, Item::Red, Item::Red], + Item::Triage => vec![Item::Buff, Item::Green, Item::Green], + Item::Absorb => vec![Item::Buff, Item::Blue, Item::Blue], + 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::Restrict => vec![Item::Debuff, Item::Red, Item::Red], - Item::RestrictPlus => vec![Item::Restrict, Item::Restrict, Item::Restrict], - Item::RestrictPlusPlus => vec![Item::RestrictPlus, Item::RestrictPlus, Item::RestrictPlus], - Item::Purge => vec![Item::Debuff, Item::Green, Item::Green], // Needs flavour - Item::PurgePlus => vec![Item::Purge, Item::Purge, Item::Purge], // Needs flavour - Item::PurgePlusPlus => vec![Item::PurgePlus, Item::PurgePlus, Item::PurgePlus], // Needs flavour - Item::Silence => vec![Item::Debuff, Item::Blue, Item::Blue], - Item::SilencePlus => vec![Item::Silence, Item::Silence, Item::Silence], - Item::SilencePlusPlus => vec![Item::SilencePlus, Item::SilencePlus, Item::SilencePlus], - Item::Curse => vec![Item::Debuff, Item::Red, Item::Green], - Item::CursePlus => vec![Item::Curse, Item::Curse, Item::Curse], - Item::CursePlusPlus => vec![Item::CursePlus, Item::CursePlus, Item::CursePlus], - Item::Decay => vec![Item::Debuff, Item::Green, Item::Blue], - Item::DecayPlus => vec![Item::Decay, Item::Decay, Item::Decay], - Item::DecayPlusPlus => vec![Item::DecayPlus, Item::DecayPlus, Item::DecayPlus], - Item::Invert => vec![Item::Debuff, Item::Red, Item::Blue], - Item::InvertPlus => vec![Item::Invert, Item::Invert, Item::Invert], - Item::InvertPlusPlus => vec![Item::InvertPlus, Item::InvertPlus, Item::InvertPlus], + Item::Purge => vec![Item::Debuff, Item::Green, Item::Green], // Needs flavour + Item::Invert => vec![Item::Debuff, Item::Red, Item::Blue], + 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::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::Counter => vec![Item::Block, Item::Red, Item::Red], + Item::Counter => vec![Item::Block, Item::Red, Item::Red], + Item::Reflect => vec![Item::Block, Item::Green, Item::Blue], + Item::Purify => vec![Item::Block, Item::Green, Item::Green], + 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::Purify => vec![Item::Block, Item::Green, Item::Green], - Item::PurifyPlus => vec![Item::Purify, Item::Purify, Item::Purify], - Item::PurifyPlusPlus => vec![Item::PurifyPlus, Item::PurifyPlus, Item::PurifyPlus], - Item::Electrify => vec![Item::Block, Item::Blue, Item::Blue], + 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::Sustain => vec![Item::Block, Item::Red, Item::Green], - Item::SustainPlus => vec![Item::Sustain, Item::Sustain, Item::Sustain], - Item::SustainPlusPlus => vec![Item::SustainPlus, Item::SustainPlus, Item::SustainPlus], - Item::Reflect => vec![Item::Block, Item::Green, Item::Blue], - Item::ReflectPlus => vec![Item::Reflect, Item::Reflect, Item::Reflect], - Item::ReflectPlusPlus => vec![Item::ReflectPlus, Item::ReflectPlus, Item::ReflectPlus], - Item::Recharge => vec![Item::Block, Item::Red, Item::Blue], - Item::RechargePlus => vec![Item::Recharge, Item::Recharge, Item::Recharge], - Item::RechargePlusPlus => vec![Item::RechargePlus, Item::RechargePlus, Item::RechargePlus], + 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::Bash => vec![Item::Stun, Item::Red, Item::Red], - Item::BashPlus => vec![Item::Bash, Item::Bash, Item::Bash], - Item::BashPlusPlus => vec![Item::BashPlus, Item::BashPlus, Item::BashPlus], - Item::Sleep => vec![Item::Stun, Item::Green, Item::Green], - Item::SleepPlus => vec![Item::Sleep, Item::Sleep, Item::Sleep], - Item::SleepPlusPlus => vec![Item::SleepPlus, Item::SleepPlus, Item::SleepPlus], - Item::Ruin => vec![Item::Stun, Item::Blue, Item::Blue], - Item::RuinPlus => vec![Item::Ruin, Item::Ruin, Item::Ruin], - Item::RuinPlusPlus => vec![Item::RuinPlus, Item::RuinPlus, Item::RuinPlus], - Item::Break => vec![Item::Stun, Item::Red, Item::Green], - Item::BreakPlus => vec![Item::Break, Item::Break, Item::Break], - Item::BreakPlusPlus => vec![Item::BreakPlus, Item::BreakPlus, Item::BreakPlus], - Item::Absorb => vec![Item::Stun, Item::Green, Item::Blue], - Item::AbsorbPlus => vec![Item::Absorb, Item::Absorb, Item::Absorb], - Item::AbsorbPlusPlus => vec![Item::AbsorbPlus, Item::AbsorbPlus, Item::AbsorbPlus], - Item::Banish => vec![Item::Stun, Item::Red, Item::Blue], - Item::BanishPlus => vec![Item::Banish, Item::Banish, Item::Banish], - Item::BanishPlusPlus => vec![Item::BanishPlus, Item::BanishPlus, Item::BanishPlus], + Item::Bash => 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::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::LinkPlusPlus, Item::LinkPlusPlus, Item::LinkPlusPlus], + Item::BanishPlus => vec![Item::Banish, Item::Banish, Item::Banish], + Item::BanishPlusPlus => vec![Item::BanishPlus, Item::BanishPlus, Item::BanishPlus], - Item::Strike => vec![Item::Attack, Item::Red, Item::Red], - Item::StrikePlus => vec![Item::Strike, Item::Strike, Item::Strike], - Item::StrikePlusPlus => vec![Item::StrikePlus, Item::StrikePlus, Item::StrikePlus], - Item::Heal => vec![Item::Attack, Item::Green, Item::Green], - Item::HealPlus => vec![Item::Heal, Item::Heal, Item::Heal], - Item::HealPlusPlus => vec![Item::HealPlus, Item::HealPlus, Item::HealPlus], - Item::Blast => vec![Item::Attack, Item::Blue, Item::Blue], - Item::BlastPlus => vec![Item::Blast, Item::Blast, Item::Blast], - Item::BlastPlusPlus => vec![Item::BlastPlus, Item::BlastPlus, Item::BlastPlus], - Item::Slay => vec![Item::Attack, Item::Red, Item::Green], - Item::SlayPlus => vec![Item::Slay, Item::Slay, Item::Slay], - Item::SlayPlusPlus => vec![Item::SlayPlus, Item::SlayPlus, Item::SlayPlus], - Item::Siphon => vec![Item::Attack, Item::Green, Item::Blue], - Item::SiphonPlus => vec![Item::Siphon, Item::Siphon, Item::Siphon], - Item::SiphonPlusPlus => vec![Item::SiphonPlus, Item::SiphonPlus, Item::SiphonPlus], - Item::Chaos => vec![Item::Attack, Item::Red, Item::Blue], - Item::ChaosPlus => vec![Item::Chaos, Item::Chaos, Item::Chaos], - Item::ChaosPlusPlus => vec![Item::ChaosPlus, Item::ChaosPlus, Item::ChaosPlus], + Item::Strike => vec![Item::Attack, Item::Red, Item::Red], + Item::Chaos => vec![Item::Attack, Item::Red, Item::Blue], + 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::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::PowerRR => vec![Item::Power, Item::Red, Item::Red], Item::PowerGG => vec![Item::Power, Item::Green, Item::Green], diff --git a/server/src/skill.rs b/server/src/skill.rs index 52ef3092..5ae0bd11 100644 --- a/server/src/skill.rs +++ b/server/src/skill.rs @@ -319,12 +319,6 @@ fn post_resolve(_skill: Skill, game: &mut Game, mut resolutions: Resolutions) -> _ => panic!("no absorb skill"), }; } - - // beware that link doesn't cause any damage - // because then applying it will proc this - if target.affected(Effect::Link) { - resolutions = link_hit(&source, &target, resolutions, game, event) - } }, Event::Immunity { skill: _, immunity } => match immunity.contains(&Effect::Counter) { @@ -805,9 +799,9 @@ impl Skill { // Buff base Skill::HybridBlast => 25, Skill::HasteStrike => 30, - Skill::Link=> 140, - Skill::LinkPlus => 200, - Skill::LinkPlusPlus => 300, + Skill::Link=> 75, + Skill::LinkPlus => 100, + Skill::LinkPlusPlus => 150, Skill::Intercept=> 80, Skill::InterceptPlus => 110, Skill::InterceptPlusPlus => 150, @@ -932,9 +926,9 @@ impl Skill { Skill::PurgePlus => vec![ConstructEffect {effect: Effect::Purge, duration: 2, meta: None, tick: None}], Skill::PurgePlusPlus => vec![ConstructEffect {effect: Effect::Purge, duration: 3, meta: None, tick: None}], - Skill::Link => vec![ConstructEffect {effect: Effect::Link, duration: 2, meta: None, tick: None}], - Skill::LinkPlus => vec![ConstructEffect {effect: Effect::Link, duration: 3, meta: None, tick: None}], - Skill::LinkPlusPlus => vec![ConstructEffect {effect: Effect::Link, duration: 4, meta: None, tick: None}], + Skill::Link => vec![ConstructEffect {effect: Effect::Stun, duration: 3, meta: None, tick: None}], + Skill::LinkPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}], + Skill::LinkPlusPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}], Skill::Silence => vec![ConstructEffect {effect: Effect::Silence, duration: 2, meta: None, tick: None}], Skill::SilencePlus => vec![ConstructEffect {effect: Effect::Silence, duration: 3, meta: None, tick: None}], @@ -1180,10 +1174,6 @@ impl Skill { pub fn speed(&self) -> u64 { match self { - Skill::Strike=> Item::from(Skill::Strike).speed().pct(150), - Skill::StrikePlus => Skill::Strike.speed(), - Skill::StrikePlusPlus => Skill::Strike.speed(), - Skill::SiphonTick| Skill::SiphonTickPlus | Skill::SiphonTickPlusPlus => Skill::Siphon.speed(), @@ -1674,42 +1664,25 @@ fn siphon_tick(source: &mut Construct, target: &mut Construct, mut results: Reso } fn link(source: &mut Construct, target: &mut Construct, mut results: Resolutions, skill: Skill) -> Resolutions { - let blue_amount = source.blue_power().pct(skill.multiplier()); - results.push(Resolution::new(source, target).event(target.recharge(skill, 0, blue_amount))); + let swap = match target.green_life().checked_sub(source.green_life()) { + Some(s) => s.pct(skill.multiplier()), + None => 0 + }; - let link = skill.effect()[0].set_meta(EffectMeta::LinkTarget(target.id)); - results.push(Resolution::new(source, target).event(source.add_effect(skill, link)).stages(EventStages::PostOnly)); + target.deal_blue_damage(skill, swap) + .into_iter() + .for_each(|e| results.push(Resolution::new(source, target).event(e))); + + source.deal_green_damage(skill, swap) + .into_iter() + .for_each(|e| results.push(Resolution::new(source, source).event(e).stages(EventStages::PostOnly))); + + results.push(Resolution::new(source, source) + .event(source.add_effect(skill, skill.effect()[0])).stages(EventStages::PostOnly)); return results; } -fn link_hit(source: &Construct, target: &Construct, mut results: Resolutions, game: &mut Game, event: Event) -> Resolutions { - match event { - Event::Damage { amount, skill, mitigation: _, colour } => { - let link = target.effects.iter().find(|e| e.effect == Effect::Link).unwrap(); - - if let Some(EffectMeta::LinkTarget(link_target_id)) = link.meta { - let mut link_target = game.construct_by_id(link_target_id).unwrap(); - - let res = match colour { - Colour::Red => link_target.deal_red_damage(skill, amount), - Colour::Blue => link_target.deal_blue_damage(skill, amount), - Colour::Green => link_target.deal_green_damage(skill, amount), - }; - - results.push(Resolution::new(target, link_target).event(Event::Skill { skill: Skill::Link})); - res.into_iter().for_each(|e| results.push(Resolution::new(&source, &link_target) - .event(e).stages(EventStages::EndPost))); - } else { - panic!("not a link target {:?}", link); - } - - return results; - }, - _ => panic!("{:?} link hit not damage event", event), - } -} - fn silence(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]))); From 6045a77bb688bffc09bbaf54894a51c485340f0b Mon Sep 17 00:00:00 2001 From: Mashy Date: Mon, 16 Sep 2019 15:25:21 +1000 Subject: [PATCH 2/2] link description & cleanup --- server/src/effect.rs | 6 - server/src/item.rs | 361 +++++++++++++++++++++---------------------- 2 files changed, 179 insertions(+), 188 deletions(-) diff --git a/server/src/effect.rs b/server/src/effect.rs index 83c445d9..f6f1522d 100644 --- a/server/src/effect.rs +++ b/server/src/effect.rs @@ -38,7 +38,6 @@ pub enum Effect { Absorption, // magic immunity - Link, // effects over time Triage, @@ -125,8 +124,6 @@ impl Effect { Effect::Haste => vec![Stat::Speed], Effect::Slow => vec![Stat::Speed], - Effect::Link => vec![Stat::BlueDamageTaken, Stat::GreenDamageTaken, Stat::RedDamageTaken], - _ => vec![], } } @@ -146,8 +143,6 @@ impl Effect { _ => 100, }), - Effect::Link => value >> 1, - Effect::Absorption => value + match meta { Some(EffectMeta::AddedDamage(d)) => d, _ => panic!("absorb meta not damage"), @@ -194,7 +189,6 @@ impl Effect { // magic Effect::Hybrid => Some(Colour::Green), - Effect::Link => Some(Colour::Green), Effect::Invert => Some(Colour::Green), // effects over time diff --git a/server/src/item.rs b/server/src/item.rs index 3c5c29f9..6ba76bf1 100644 --- a/server/src/item.rs +++ b/server/src/item.rs @@ -785,9 +785,11 @@ impl Item { Item::Link| Item::LinkPlus | Item::LinkPlusPlus => format!( - "Caster links with target. Linked constructs split incoming Damage evenly. - Recharges target BlueLife based on {:?}% of BluePower", - self.into_skill().unwrap().multiplier()), + "Form a link with target swapping relative life values. + If the target construct has more green life than caster, {:?}% of green life difference as blue damage to the target and heal to the caster. + Stuns caster for {:?}T in the process.", + self.into_skill().unwrap().multiplier(), + self.into_skill().unwrap().effect()[0].get_duration()), Item::Silence| Item::SilencePlus | @@ -813,10 +815,9 @@ impl Item { Item::Restrict| Item::RestrictPlus | Item::RestrictPlusPlus => format!( - "Block the target from using red skills for {:?}T and deals {:?}% RedPower as red damage. {}", + "Block 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(), - "Deals 35% more damage per red skill on target"), + self.into_skill().unwrap().multiplier()), Item::Bash| Item::BashPlus | @@ -960,66 +961,62 @@ impl Item { Item::ChaosPlus => vec![Item::Chaos, Item::Chaos, Item::Chaos], Item::ChaosPlusPlus => vec![Item::ChaosPlus, Item::ChaosPlus, Item::ChaosPlus], - Item::PowerRR => vec![Item::Power, Item::Red, Item::Red], - Item::PowerGG => vec![Item::Power, Item::Green, Item::Green], - Item::PowerBB => vec![Item::Power, Item::Blue, Item::Blue], - 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::PowerRR => vec![Item::Power, Item::Red, Item::Red], + Item::PowerGG => vec![Item::Power, Item::Green, Item::Green], + Item::PowerBB => vec![Item::Power, Item::Blue, Item::Blue], + 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::LifeRR => vec![Item::Life, Item::Red, Item::Red], - Item::LifeGG => vec![Item::Life, Item::Green, Item::Green], - Item::LifeBB => vec![Item::Life, Item::Blue, Item::Blue], - 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::LifeRR => vec![Item::Life, Item::Red, Item::Red], + Item::LifeGG => vec![Item::Life, Item::Green, Item::Green], + Item::LifeBB => vec![Item::Life, Item::Blue, Item::Blue], + 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::SpeedRR => vec![Item::Speed, Item::Red, Item::Red], - Item::SpeedGG => vec![Item::Speed, Item::Green, Item::Green], - Item::SpeedBB => vec![Item::Speed, Item::Blue, Item::Blue], - 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::SpeedRR => vec![Item::Speed, Item::Red, Item::Red], + Item::SpeedGG => vec![Item::Speed, Item::Green, Item::Green], + Item::SpeedBB => vec![Item::Speed, Item::Blue, Item::Blue], + 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], _ => vec![*self], } @@ -1029,129 +1026,129 @@ impl Item { impl From for Item { fn from(skill: Skill) -> Item { match skill { - Skill::Absorb => Item::Absorb, - Skill::AbsorbPlus => Item::AbsorbPlus, - Skill::AbsorbPlusPlus => Item::AbsorbPlusPlus, - Skill::Amplify => Item::Amplify, - Skill::AmplifyPlus => Item::AmplifyPlus, - Skill::AmplifyPlusPlus => Item::AmplifyPlusPlus, + Skill::Absorb => Item::Absorb, + Skill::AbsorbPlus => Item::AbsorbPlus, + Skill::AbsorbPlusPlus => Item::AbsorbPlusPlus, + Skill::Amplify => Item::Amplify, + Skill::AmplifyPlus => Item::AmplifyPlus, + Skill::AmplifyPlusPlus => Item::AmplifyPlusPlus, Skill::Attack => Item::Attack, - Skill::Banish => Item::Banish, - Skill::BanishPlus => Item::BanishPlus, - Skill::BanishPlusPlus => Item::BanishPlusPlus, - Skill::Bash => Item::Bash, - Skill::BashPlus => Item::BashPlus, - Skill::BashPlusPlus => Item::BashPlusPlus, - Skill::Blast => Item::Blast, - Skill::BlastPlus => Item::BlastPlus, - Skill::BlastPlusPlus => Item::BlastPlusPlus, + Skill::Banish => Item::Banish, + Skill::BanishPlus => Item::BanishPlus, + Skill::BanishPlusPlus => Item::BanishPlusPlus, + Skill::Bash => Item::Bash, + Skill::BashPlus => Item::BashPlus, + Skill::BashPlusPlus => Item::BashPlusPlus, + Skill::Blast => Item::Blast, + Skill::BlastPlus => Item::BlastPlus, + Skill::BlastPlusPlus => Item::BlastPlusPlus, Skill::Block => Item::Block, Skill::Buff => Item::Buff, - Skill::Chaos => Item::Chaos, - Skill::ChaosPlus => Item::ChaosPlus, - Skill::ChaosPlusPlus => Item::ChaosPlusPlus, - Skill::Counter => Item::Counter, - Skill::CounterPlus => Item::CounterPlus, - Skill::CounterPlusPlus => Item::CounterPlusPlus, - Skill::Curse => Item::Curse, - Skill::CursePlus => Item::CursePlus, - Skill::CursePlusPlus => Item::CursePlusPlus, + Skill::Chaos => Item::Chaos, + Skill::ChaosPlus => Item::ChaosPlus, + Skill::ChaosPlusPlus => Item::ChaosPlusPlus, + Skill::Counter => Item::Counter, + Skill::CounterPlus => Item::CounterPlus, + Skill::CounterPlusPlus => Item::CounterPlusPlus, + Skill::Curse => Item::Curse, + Skill::CursePlus => Item::CursePlus, + Skill::CursePlusPlus => Item::CursePlusPlus, Skill::Debuff => Item::Debuff, - Skill::Decay => Item::Decay, - Skill::DecayPlus => Item::DecayPlus, - Skill::DecayPlusPlus => Item::DecayPlusPlus, - Skill::Electrify => Item::Electrify, - Skill::ElectrifyPlus => Item::ElectrifyPlus, - Skill::ElectrifyPlusPlus => Item::ElectrifyPlusPlus, - Skill::Haste => Item::Haste, - Skill::HastePlus => Item::HastePlus, - Skill::HastePlusPlus => Item::HastePlusPlus, - Skill::Heal => Item::Heal, - Skill::HealPlus => Item::HealPlus, - Skill::HealPlusPlus => Item::HealPlusPlus, - Skill::Hex => Item::Hex, - Skill::HexPlus => Item::HexPlus, - Skill::HexPlusPlus => Item::HexPlusPlus, - Skill::Hybrid => Item::Hybrid, - Skill::HybridPlus => Item::HybridPlus, - Skill::HybridPlusPlus => Item::HybridPlusPlus, - Skill::Intercept => Item::Intercept, - Skill::InterceptPlus => Item::InterceptPlus, - Skill::InterceptPlusPlus => Item::InterceptPlusPlus, - Skill::Invert => Item::Invert, - Skill::InvertPlus => Item::InvertPlus, - Skill::InvertPlusPlus => Item::InvertPlusPlus, - Skill::Purge => Item::Purge, - Skill::PurgePlus => Item::PurgePlus, - Skill::PurgePlusPlus => Item::PurgePlusPlus, - Skill::Purify => Item::Purify, - Skill::PurifyPlus => Item::PurifyPlus, - Skill::PurifyPlusPlus => Item::PurifyPlusPlus, - Skill::Recharge => Item::Recharge, - Skill::RechargePlus => Item::RechargePlus, - Skill::RechargePlusPlus => Item::RechargePlusPlus, - Skill::Reflect => Item::Reflect, - Skill::ReflectPlus => Item::ReflectPlus, - Skill::ReflectPlusPlus => Item::ReflectPlusPlus, - Skill::Restrict => Item::Restrict, - Skill::RestrictPlus => Item::RestrictPlus, - Skill::RestrictPlusPlus => Item::RestrictPlusPlus, - Skill::Ruin => Item::Ruin, - Skill::RuinPlus => Item::RuinPlus, - Skill::RuinPlusPlus => Item::RuinPlusPlus, - Skill::Link => Item::Link, - Skill::LinkPlus => Item::LinkPlus, - Skill::LinkPlusPlus => Item::LinkPlusPlus, - Skill::Silence => Item::Silence, - Skill::SilencePlus => Item::SilencePlus, - Skill::SilencePlusPlus => Item::SilencePlusPlus, - Skill::Siphon => Item::Siphon, - Skill::SiphonPlus => Item::SiphonPlus, - Skill::SiphonPlusPlus => Item::SiphonPlusPlus, - Skill::Slay => Item::Slay, - Skill::SlayPlus => Item::SlayPlus, - Skill::SlayPlusPlus => Item::SlayPlusPlus, - Skill::Sleep => Item::Sleep, - Skill::SleepPlus => Item::SleepPlus, - Skill::SleepPlusPlus => Item::SleepPlusPlus, - Skill::Strike => Item::Strike, - Skill::StrikePlus => Item::StrikePlus, - Skill::StrikePlusPlus => Item::StrikePlusPlus, + Skill::Decay => Item::Decay, + Skill::DecayPlus => Item::DecayPlus, + Skill::DecayPlusPlus => Item::DecayPlusPlus, + Skill::Electrify => Item::Electrify, + Skill::ElectrifyPlus => Item::ElectrifyPlus, + Skill::ElectrifyPlusPlus=> Item::ElectrifyPlusPlus, + Skill::Haste => Item::Haste, + Skill::HastePlus => Item::HastePlus, + Skill::HastePlusPlus => Item::HastePlusPlus, + Skill::Heal => Item::Heal, + Skill::HealPlus => Item::HealPlus, + Skill::HealPlusPlus => Item::HealPlusPlus, + Skill::Hex => Item::Hex, + Skill::HexPlus => Item::HexPlus, + Skill::HexPlusPlus => Item::HexPlusPlus, + Skill::Hybrid => Item::Hybrid, + Skill::HybridPlus => Item::HybridPlus, + Skill::HybridPlusPlus => Item::HybridPlusPlus, + Skill::Intercept => Item::Intercept, + Skill::InterceptPlus => Item::InterceptPlus, + Skill::InterceptPlusPlus=> Item::InterceptPlusPlus, + Skill::Invert => Item::Invert, + Skill::InvertPlus => Item::InvertPlus, + Skill::InvertPlusPlus => Item::InvertPlusPlus, + Skill::Purge => Item::Purge, + Skill::PurgePlus => Item::PurgePlus, + Skill::PurgePlusPlus => Item::PurgePlusPlus, + Skill::Purify => Item::Purify, + Skill::PurifyPlus => Item::PurifyPlus, + Skill::PurifyPlusPlus => Item::PurifyPlusPlus, + Skill::Recharge => Item::Recharge, + Skill::RechargePlus => Item::RechargePlus, + Skill::RechargePlusPlus => Item::RechargePlusPlus, + Skill::Reflect => Item::Reflect, + Skill::ReflectPlus => Item::ReflectPlus, + Skill::ReflectPlusPlus => Item::ReflectPlusPlus, + Skill::Restrict => Item::Restrict, + Skill::RestrictPlus => Item::RestrictPlus, + Skill::RestrictPlusPlus => Item::RestrictPlusPlus, + Skill::Ruin => Item::Ruin, + Skill::RuinPlus => Item::RuinPlus, + Skill::RuinPlusPlus => Item::RuinPlusPlus, + Skill::Link => Item::Link, + Skill::LinkPlus => Item::LinkPlus, + Skill::LinkPlusPlus => Item::LinkPlusPlus, + Skill::Silence => Item::Silence, + Skill::SilencePlus => Item::SilencePlus, + Skill::SilencePlusPlus => Item::SilencePlusPlus, + Skill::Siphon => Item::Siphon, + Skill::SiphonPlus => Item::SiphonPlus, + Skill::SiphonPlusPlus => Item::SiphonPlusPlus, + Skill::Slay => Item::Slay, + Skill::SlayPlus => Item::SlayPlus, + Skill::SlayPlusPlus => Item::SlayPlusPlus, + Skill::Sleep => Item::Sleep, + Skill::SleepPlus => Item::SleepPlus, + Skill::SleepPlusPlus => Item::SleepPlusPlus, + Skill::Strike => Item::Strike, + Skill::StrikePlus => Item::StrikePlus, + Skill::StrikePlusPlus => Item::StrikePlusPlus, Skill::Stun => Item::Stun, - Skill::Sustain => Item::Sustain, - Skill::SustainPlus => Item::SustainPlus, - Skill::SustainPlusPlus => Item::SustainPlusPlus, - Skill::Break => Item::Break, - Skill::BreakPlus => Item::BreakPlus, - Skill::BreakPlusPlus => Item::BreakPlusPlus, - Skill::Triage => Item::Triage, - Skill::TriagePlus => Item::TriagePlus, - Skill::TriagePlusPlus => Item::TriagePlusPlus, + Skill::Sustain => Item::Sustain, + Skill::SustainPlus => Item::SustainPlus, + Skill::SustainPlusPlus => Item::SustainPlusPlus, + Skill::Break => Item::Break, + Skill::BreakPlus => Item::BreakPlus, + Skill::BreakPlusPlus => Item::BreakPlusPlus, + Skill::Triage => Item::Triage, + Skill::TriagePlus => Item::TriagePlus, + Skill::TriagePlusPlus => Item::TriagePlusPlus, // Convert subskills into parent skills - Skill::Electrocute => Item::Electrify, - Skill::ElectrocutePlus => Item::ElectrifyPlus, - Skill::ElectrocutePlusPlus => Item::ElectrifyPlusPlus, - Skill::ElectrocuteTick => Item::Electrify, - Skill::ElectrocuteTickPlus => Item::ElectrifyPlus, - Skill::ElectrocuteTickPlusPlus => Item::ElectrifyPlus, - Skill::DecayTick => Item::Decay, - Skill::DecayTickPlus => Item::DecayPlus, - Skill::DecayTickPlusPlus => Item::DecayPlusPlus, - Skill::Absorption => Item::Absorb, - Skill::AbsorptionPlus => Item::AbsorbPlus, - Skill::AbsorptionPlusPlus => Item::AbsorbPlusPlus, - Skill::HasteStrike => Item::Haste, - Skill::HybridBlast => Item::Hybrid, - Skill::CounterAttack => Item::Counter, - Skill::CounterAttackPlus => Item::CounterPlus, - Skill::CounterAttackPlusPlus => Item::CounterPlusPlus, - Skill::SiphonTick => Item::Siphon, - Skill::SiphonTickPlus => Item::SiphonPlus, - Skill::SiphonTickPlusPlus => Item::SiphonPlusPlus, - Skill::TriageTick => Item::Triage, - Skill::TriageTickPlus => Item::TriagePlus, - Skill::TriageTickPlusPlus => Item::TriagePlusPlus, + Skill::Electrocute => Item::Electrify, + Skill::ElectrocutePlus => Item::ElectrifyPlus, + Skill::ElectrocutePlusPlus => Item::ElectrifyPlusPlus, + Skill::ElectrocuteTick => Item::Electrify, + Skill::ElectrocuteTickPlus => Item::ElectrifyPlus, + Skill::ElectrocuteTickPlusPlus => Item::ElectrifyPlus, + Skill::DecayTick => Item::Decay, + Skill::DecayTickPlus => Item::DecayPlus, + Skill::DecayTickPlusPlus => Item::DecayPlusPlus, + Skill::Absorption => Item::Absorb, + Skill::AbsorptionPlus => Item::AbsorbPlus, + Skill::AbsorptionPlusPlus => Item::AbsorbPlusPlus, + Skill::HasteStrike => Item::Haste, + Skill::HybridBlast => Item::Hybrid, + Skill::CounterAttack => Item::Counter, + Skill::CounterAttackPlus => Item::CounterPlus, + Skill::CounterAttackPlusPlus => Item::CounterPlusPlus, + Skill::SiphonTick => Item::Siphon, + Skill::SiphonTickPlus => Item::SiphonPlus, + Skill::SiphonTickPlusPlus => Item::SiphonPlusPlus, + Skill::TriageTick => Item::Triage, + Skill::TriageTickPlus => Item::TriagePlus, + Skill::TriageTickPlusPlus => Item::TriagePlusPlus, } } } @@ -1159,7 +1156,7 @@ impl From for Item { impl From for Item { fn from(spec: Spec) -> Item { match spec { - Spec::Speed => Item::Speed, + Spec::Speed => Item::Speed, Spec::SpeedRR => Item::SpeedRR, Spec::SpeedBB => Item::SpeedBB, Spec::SpeedGG => Item::SpeedGG, @@ -1181,7 +1178,7 @@ impl From for Item { Spec::SpeedGBPlusPlus => Item::SpeedGBPlusPlus, Spec::SpeedRBPlusPlus => Item::SpeedRBPlusPlus, - Spec::Power => Item::Power, + Spec::Power => Item::Power, Spec::PowerRR => Item::PowerRR, Spec::PowerBB => Item::PowerBB, Spec::PowerGG => Item::PowerGG,