Merge branch 'develop' of ssh://git.mnml.gg:40022/~/mnml into develop

This commit is contained in:
ntr 2019-09-16 18:31:48 +10:00
commit b6f6712444
3 changed files with 229 additions and 242 deletions

View File

@ -13,7 +13,6 @@ pub enum Effect {
Sustain, Sustain,
Curse, Curse,
Haste, Haste,
Hex,
Hybrid, Hybrid,
Invert, Invert,
Counter, Counter,
@ -73,9 +72,6 @@ impl Effect {
Effect::Banish => true, Effect::Banish => true,
Effect::Sustain => [ Effect::Sustain => [
Skill::Stun, Skill::Stun,
Skill::Hex,
Skill::HexPlus,
Skill::HexPlusPlus,
Skill::Silence, Skill::Silence,
Skill::SilencePlus, Skill::SilencePlus,
Skill::SilencePlusPlus, Skill::SilencePlusPlus,
@ -97,7 +93,6 @@ impl Effect {
match self { match self {
Effect::Stun => true, Effect::Stun => true,
Effect::Hex => true,
Effect::Banish => true, Effect::Banish => true,
Effect::Silence => skill.colours().contains(&Colour::Blue), Effect::Silence => skill.colours().contains(&Colour::Blue),
Effect::Restrict => skill.colours().contains(&Colour::Red), Effect::Restrict => skill.colours().contains(&Colour::Red),
@ -168,7 +163,6 @@ impl Effect {
Effect::Intercept => Some(Colour::Green), Effect::Intercept => Some(Colour::Green),
// magic // magic
Effect::Hex => Some(Colour::Blue),
Effect::Curse => Some(Colour::Blue), Effect::Curse => Some(Colour::Blue),
Effect::Banish => None, Effect::Banish => None,
// Effect::Banish => rng.gen_bool(0.5), // Effect::Banish => rng.gen_bool(0.5),

View File

@ -143,12 +143,6 @@ pub enum Item {
#[serde(rename = "Decay++")] #[serde(rename = "Decay++")]
DecayPlusPlus, DecayPlusPlus,
Hex,
#[serde(rename = "Hex+")]
HexPlus,
#[serde(rename = "Hex++")]
HexPlusPlus,
Haste, Haste,
#[serde(rename = "Haste+")] #[serde(rename = "Haste+")]
HastePlus, HastePlus,
@ -385,102 +379,102 @@ impl Item {
pub fn into_skill(&self) -> Option<Skill> { pub fn into_skill(&self) -> Option<Skill> {
match self { match self {
Item::Absorb => Some(Skill::Absorb), Item::Absorb => Some(Skill::Absorb),
Item::AbsorbPlus => Some(Skill::AbsorbPlus), Item::AbsorbPlus => Some(Skill::AbsorbPlus),
Item::AbsorbPlusPlus => Some(Skill::AbsorbPlusPlus), Item::AbsorbPlusPlus => Some(Skill::AbsorbPlusPlus),
Item::Amplify => Some(Skill::Amplify), Item::Amplify => Some(Skill::Amplify),
Item::AmplifyPlus => Some(Skill::AmplifyPlus), Item::AmplifyPlus => Some(Skill::AmplifyPlus),
Item::AmplifyPlusPlus => Some(Skill::AmplifyPlusPlus), Item::AmplifyPlusPlus => Some(Skill::AmplifyPlusPlus),
Item::Attack => Some(Skill::Attack), Item::Attack => Some(Skill::Attack),
Item::Banish => Some(Skill::Banish), Item::Banish => Some(Skill::Banish),
Item::BanishPlus => Some(Skill::BanishPlus), Item::BanishPlus => Some(Skill::BanishPlus),
Item::BanishPlusPlus => Some(Skill::BanishPlusPlus), Item::BanishPlusPlus => Some(Skill::BanishPlusPlus),
Item::Bash => Some(Skill::Bash), Item::Bash => Some(Skill::Bash),
Item::BashPlus => Some(Skill::BashPlus), Item::BashPlus => Some(Skill::BashPlus),
Item::BashPlusPlus => Some(Skill::BashPlusPlus), Item::BashPlusPlus => Some(Skill::BashPlusPlus),
Item::Blast => Some(Skill::Blast), Item::Blast => Some(Skill::Blast),
Item::BlastPlus => Some(Skill::BlastPlus), Item::BlastPlus => Some(Skill::BlastPlus),
Item::BlastPlusPlus => Some(Skill::BlastPlusPlus), Item::BlastPlusPlus => Some(Skill::BlastPlusPlus),
Item::Block => Some(Skill::Block), Item::Block => Some(Skill::Block),
Item::Buff => Some(Skill::Buff), Item::Buff => Some(Skill::Buff),
Item::Chaos => Some(Skill::Chaos), Item::Chaos => Some(Skill::Chaos),
Item::ChaosPlus => Some(Skill::ChaosPlus), Item::ChaosPlus => Some(Skill::ChaosPlus),
Item::ChaosPlusPlus => Some(Skill::ChaosPlusPlus), Item::ChaosPlusPlus => Some(Skill::ChaosPlusPlus),
Item::Counter => Some(Skill::Counter), Item::Counter => Some(Skill::Counter),
Item::CounterPlus => Some(Skill::CounterPlus), Item::CounterPlus => Some(Skill::CounterPlus),
Item::CounterPlusPlus => Some(Skill::CounterPlusPlus), Item::CounterPlusPlus => Some(Skill::CounterPlusPlus),
Item::Curse => Some(Skill::Curse), Item::Curse => Some(Skill::Curse),
Item::CursePlus => Some(Skill::CursePlus), Item::CursePlus => Some(Skill::CursePlus),
Item::CursePlusPlus => Some(Skill::CursePlusPlus), Item::CursePlusPlus => Some(Skill::CursePlusPlus),
Item::Debuff => Some(Skill::Debuff), Item::Debuff => Some(Skill::Debuff),
Item::Decay => Some(Skill::Decay), Item::Decay => Some(Skill::Decay),
Item::DecayPlus => Some(Skill::DecayPlus), Item::DecayPlus => Some(Skill::DecayPlus),
Item::DecayPlusPlus => Some(Skill::DecayPlusPlus), Item::DecayPlusPlus => Some(Skill::DecayPlusPlus),
Item::Electrify => Some(Skill::Electrify), Item::Electrify => Some(Skill::Electrify),
Item::ElectrifyPlus => Some(Skill::ElectrifyPlus), Item::ElectrifyPlus => Some(Skill::ElectrifyPlus),
Item::ElectrifyPlusPlus => Some(Skill::ElectrifyPlusPlus), Item::ElectrifyPlusPlus => Some(Skill::ElectrifyPlusPlus),
Item::Haste => Some(Skill::Haste), Item::Haste => Some(Skill::Haste),
Item::HastePlus => Some(Skill::HastePlus), Item::HastePlus => Some(Skill::HastePlus),
Item::HastePlusPlus => Some(Skill::HastePlusPlus), Item::HastePlusPlus => Some(Skill::HastePlusPlus),
Item::Heal => Some(Skill::Heal), Item::Heal => Some(Skill::Heal),
Item::HealPlus => Some(Skill::HealPlus), Item::HealPlus => Some(Skill::HealPlus),
Item::HealPlusPlus => Some(Skill::HealPlusPlus), Item::HealPlusPlus => Some(Skill::HealPlusPlus),
Item::Hybrid => Some(Skill::Hybrid), Item::Hybrid => Some(Skill::Hybrid),
Item::HybridPlus => Some(Skill::HybridPlus), Item::HybridPlus => Some(Skill::HybridPlus),
Item::HybridPlusPlus => Some(Skill::HybridPlusPlus), Item::HybridPlusPlus => Some(Skill::HybridPlusPlus),
Item::Intercept => Some(Skill::Intercept), Item::Intercept => Some(Skill::Intercept),
Item::InterceptPlus => Some(Skill::InterceptPlus), Item::InterceptPlus => Some(Skill::InterceptPlus),
Item::InterceptPlusPlus => Some(Skill::InterceptPlusPlus), Item::InterceptPlusPlus => Some(Skill::InterceptPlusPlus),
Item::Invert => Some(Skill::Invert), Item::Invert => Some(Skill::Invert),
Item::InvertPlus => Some(Skill::InvertPlus), Item::InvertPlus => Some(Skill::InvertPlus),
Item::InvertPlusPlus => Some(Skill::InvertPlusPlus), Item::InvertPlusPlus => Some(Skill::InvertPlusPlus),
Item::Purge => Some(Skill::Purge), Item::Purge => Some(Skill::Purge),
Item::PurgePlus => Some(Skill::PurgePlus), Item::PurgePlus => Some(Skill::PurgePlus),
Item::PurgePlusPlus => Some(Skill::PurgePlusPlus), Item::PurgePlusPlus => Some(Skill::PurgePlusPlus),
Item::Purify => Some(Skill::Purify), Item::Purify => Some(Skill::Purify),
Item::PurifyPlus => Some(Skill::PurifyPlus), Item::PurifyPlus => Some(Skill::PurifyPlus),
Item::PurifyPlusPlus => Some(Skill::PurifyPlusPlus), Item::PurifyPlusPlus => Some(Skill::PurifyPlusPlus),
Item::Recharge => Some(Skill::Recharge), Item::Recharge => Some(Skill::Recharge),
Item::RechargePlus => Some(Skill::RechargePlus), Item::RechargePlus => Some(Skill::RechargePlus),
Item::RechargePlusPlus => Some(Skill::RechargePlusPlus), Item::RechargePlusPlus => Some(Skill::RechargePlusPlus),
Item::Reflect => Some(Skill::Reflect), Item::Reflect => Some(Skill::Reflect),
Item::ReflectPlus => Some(Skill::ReflectPlus), Item::ReflectPlus => Some(Skill::ReflectPlus),
Item::ReflectPlusPlus => Some(Skill::ReflectPlusPlus), Item::ReflectPlusPlus => Some(Skill::ReflectPlusPlus),
Item::Restrict => Some(Skill::Restrict), Item::Restrict => Some(Skill::Restrict),
Item::RestrictPlus => Some(Skill::RestrictPlus), Item::RestrictPlus => Some(Skill::RestrictPlus),
Item::RestrictPlusPlus => Some(Skill::RestrictPlusPlus), Item::RestrictPlusPlus => Some(Skill::RestrictPlusPlus),
Item::Ruin => Some(Skill::Ruin), Item::Ruin => Some(Skill::Ruin),
Item::RuinPlus => Some(Skill::RuinPlus), Item::RuinPlus => Some(Skill::RuinPlus),
Item::RuinPlusPlus => Some(Skill::RuinPlusPlus), Item::RuinPlusPlus => Some(Skill::RuinPlusPlus),
Item::Link => Some(Skill::Link), Item::Link => Some(Skill::Link),
Item::LinkPlus => Some(Skill::LinkPlus), Item::LinkPlus => Some(Skill::LinkPlus),
Item::LinkPlusPlus => Some(Skill::LinkPlusPlus), Item::LinkPlusPlus => Some(Skill::LinkPlusPlus),
Item::Silence => Some(Skill::Silence), Item::Silence => Some(Skill::Silence),
Item::SilencePlus => Some(Skill::SilencePlus), Item::SilencePlus => Some(Skill::SilencePlus),
Item::SilencePlusPlus => Some(Skill::SilencePlusPlus), Item::SilencePlusPlus => Some(Skill::SilencePlusPlus),
Item::Siphon => Some(Skill::Siphon), Item::Siphon => Some(Skill::Siphon),
Item::SiphonPlus => Some(Skill::SiphonPlus), Item::SiphonPlus => Some(Skill::SiphonPlus),
Item::SiphonPlusPlus => Some(Skill::SiphonPlusPlus), Item::SiphonPlusPlus => Some(Skill::SiphonPlusPlus),
Item::Slay => Some(Skill::Slay), Item::Slay => Some(Skill::Slay),
Item::SlayPlus => Some(Skill::SlayPlus), Item::SlayPlus => Some(Skill::SlayPlus),
Item::SlayPlusPlus => Some(Skill::SlayPlusPlus), Item::SlayPlusPlus => Some(Skill::SlayPlusPlus),
Item::Sleep => Some(Skill::Sleep), Item::Sleep => Some(Skill::Sleep),
Item::SleepPlus => Some(Skill::SleepPlus), Item::SleepPlus => Some(Skill::SleepPlus),
Item::SleepPlusPlus => Some(Skill::SleepPlusPlus), Item::SleepPlusPlus => Some(Skill::SleepPlusPlus),
Item::Strike => Some(Skill::Strike), Item::Strike => Some(Skill::Strike),
Item::StrikePlus => Some(Skill::StrikePlus), Item::StrikePlus => Some(Skill::StrikePlus),
Item::StrikePlusPlus => Some(Skill::StrikePlusPlus), Item::StrikePlusPlus => Some(Skill::StrikePlusPlus),
Item::Stun => Some(Skill::Stun), Item::Stun => Some(Skill::Stun),
Item::Sustain => Some(Skill::Sustain), Item::Sustain => Some(Skill::Sustain),
Item::SustainPlus => Some(Skill::SustainPlus), Item::SustainPlus => Some(Skill::SustainPlus),
Item::SustainPlusPlus => Some(Skill::SustainPlusPlus), Item::SustainPlusPlus => Some(Skill::SustainPlusPlus),
Item::Break => Some(Skill::Break), Item::Break => Some(Skill::Break),
Item::BreakPlus => Some(Skill::BreakPlus), Item::BreakPlus => Some(Skill::BreakPlus),
Item::BreakPlusPlus => Some(Skill::BreakPlusPlus), Item::BreakPlusPlus => Some(Skill::BreakPlusPlus),
Item::Triage => Some(Skill::Triage), Item::Triage => Some(Skill::Triage),
Item::TriagePlus => Some(Skill::TriagePlus), Item::TriagePlus => Some(Skill::TriagePlus),
Item::TriagePlusPlus => Some(Skill::TriagePlusPlus), Item::TriagePlusPlus => Some(Skill::TriagePlusPlus),
_ => None, _ => None,
} }
} }
@ -726,12 +720,6 @@ impl Item {
Item::HealPlus | Item::HealPlus |
Item::HealPlusPlus => format!("Heals target for {:?}% GreenPower.", self.into_skill().unwrap().multiplier()), Item::HealPlusPlus => format!("Heals target for {:?}% GreenPower.", self.into_skill().unwrap().multiplier()),
Item::Hex|
Item::HexPlus |
Item::HexPlusPlus => format!("Blue based skill that applies Hex for {:?}T. \
Hexed targets cannot cast any skills.",
self.into_skill().unwrap().effect()[0].get_duration()),
Item::Hybrid| Item::Hybrid|
Item::HybridPlus | Item::HybridPlus |
Item::HybridPlusPlus => format!( Item::HybridPlusPlus => format!(
@ -1066,9 +1054,6 @@ impl From<Skill> for Item {
Skill::Heal => Item::Heal, Skill::Heal => Item::Heal,
Skill::HealPlus => Item::HealPlus, Skill::HealPlus => Item::HealPlus,
Skill::HealPlusPlus => Item::HealPlusPlus, Skill::HealPlusPlus => Item::HealPlusPlus,
Skill::Hex => Item::Hex,
Skill::HexPlus => Item::HexPlus,
Skill::HexPlusPlus => Item::HexPlusPlus,
Skill::Hybrid => Item::Hybrid, Skill::Hybrid => Item::Hybrid,
Skill::HybridPlus => Item::HybridPlus, Skill::HybridPlus => Item::HybridPlus,
Skill::HybridPlusPlus => Item::HybridPlusPlus, Skill::HybridPlusPlus => Item::HybridPlusPlus,

View File

@ -816,67 +816,71 @@ impl Skill {
pub fn effect(&self) -> Vec<ConstructEffect> { pub fn effect(&self) -> Vec<ConstructEffect> {
match self { match self {
// Modifiers // Modifiers
Skill::Amplify => vec![ConstructEffect {effect: Effect::Amplify, duration: 2, Skill::Amplify => vec![ConstructEffect {effect: Effect::Amplify, duration: 2,
meta: Some(EffectMeta::Multiplier(150)), tick: None}], meta: Some(EffectMeta::Multiplier(150)), tick: None}],
Skill::AmplifyPlus => vec![ConstructEffect {effect: Effect::Amplify, duration: 3, Skill::AmplifyPlus => vec![ConstructEffect {effect: Effect::Amplify, duration: 3,
meta: Some(EffectMeta::Multiplier(175)), tick: None}], meta: Some(EffectMeta::Multiplier(175)), tick: None}],
Skill::AmplifyPlusPlus => vec![ConstructEffect {effect: Effect::Amplify, duration: 4, Skill::AmplifyPlusPlus => vec![ConstructEffect {effect: Effect::Amplify, duration: 4,
meta: Some(EffectMeta::Multiplier(200)), tick: None}], meta: Some(EffectMeta::Multiplier(200)), tick: None}],
Skill::Banish => vec![ConstructEffect {effect: Effect::Banish, duration: 1,meta: None, tick: None}], Skill::Banish => vec![ConstructEffect {effect: Effect::Banish, duration: 1,meta: None, tick: None}],
Skill::BanishPlus => vec![ConstructEffect {effect: Effect::Banish, duration: 2,meta: None, tick: None}], Skill::BanishPlus => vec![ConstructEffect {effect: Effect::Banish, duration: 2,meta: None, tick: None}],
Skill::BanishPlusPlus => vec![ConstructEffect {effect: Effect::Banish, duration: 3,meta: None, tick: None}], Skill::BanishPlusPlus => vec![ConstructEffect {effect: Effect::Banish, duration: 3,meta: None, tick: None}],
Skill::Block => vec![ConstructEffect {effect: Effect::Block, duration: 1, Skill::Block => vec![ConstructEffect {effect: Effect::Block, duration: 1,
meta: Some(EffectMeta::Multiplier(50)), tick: None}], meta: Some(EffectMeta::Multiplier(50)), tick: None}],
Skill::Buff => vec![ConstructEffect {effect: Effect::Buff, duration: 2, Skill::Buff => vec![ConstructEffect {effect: Effect::Buff, duration: 2,
meta: Some(EffectMeta::Multiplier(125)), tick: None }], meta: Some(EffectMeta::Multiplier(125)), tick: None }],
Skill::Electrify => vec![ConstructEffect {effect: Effect::Electric, duration: 2, Skill::Electrify => vec![ConstructEffect {effect: Effect::Electric, duration: 1,
meta: Some(EffectMeta::Skill(Skill::Electrocute)), tick: None}], meta: Some(EffectMeta::Skill(Skill::Electrocute)), tick: None}],
Skill::ElectrifyPlus => vec![ConstructEffect {effect: Effect::Electric, duration: 3, Skill::ElectrifyPlus => vec![ConstructEffect {effect: Effect::Electric, duration: 1,
meta: Some(EffectMeta::Skill(Skill::ElectrocutePlus)), tick: None}], meta: Some(EffectMeta::Skill(Skill::ElectrocutePlus)), tick: None}],
Skill::ElectrifyPlusPlus => vec![ConstructEffect {effect: Effect::Electric, duration: 4, Skill::ElectrifyPlusPlus => vec![ConstructEffect {effect: Effect::Electric, duration: 1,
meta: Some(EffectMeta::Skill(Skill::ElectrocutePlusPlus)), tick: None}], meta: Some(EffectMeta::Skill(Skill::ElectrocutePlusPlus)), tick: None}],
Skill::Electrocute => vec![ConstructEffect {effect: Effect::Electrocute, duration: 3, Skill::Electrocute => vec![ConstructEffect {effect: Effect::Electrocute, duration: 2,
meta: Some(EffectMeta::Skill(Skill::ElectrocuteTick)), tick: None}], meta: Some(EffectMeta::Skill(Skill::ElectrocuteTick)), tick: None}],
Skill::ElectrocutePlus => vec![ConstructEffect {effect: Effect::Electrocute, duration: 4, Skill::ElectrocutePlus => vec![ConstructEffect {effect: Effect::Electrocute, duration: 3,
meta: Some(EffectMeta::Skill(Skill::ElectrocuteTickPlus)), tick: None}], meta: Some(EffectMeta::Skill(Skill::ElectrocuteTickPlus)), tick: None}],
Skill::ElectrocutePlusPlus => vec![ConstructEffect {effect: Effect::Electrocute, duration: 5, Skill::ElectrocutePlusPlus => vec![ConstructEffect {effect: Effect::Electrocute, duration: 4,
meta: Some(EffectMeta::Skill(Skill::ElectrocuteTickPlusPlus)), tick: None}], meta: Some(EffectMeta::Skill(Skill::ElectrocuteTickPlusPlus)), tick: None}],
Skill::Sustain => vec![ConstructEffect {effect: Effect::Sustain, duration: 1, meta: None, tick: None }], Skill::Sustain => vec![ConstructEffect {effect: Effect::Sustain, duration: 1, meta: None, tick: None }],
Skill::SustainPlus => vec![ConstructEffect {effect: Effect::Sustain, duration: 2, meta: None, tick: None }], Skill::SustainPlus => vec![ConstructEffect {effect: Effect::Sustain, duration: 1, meta: None, tick: None }],
Skill::SustainPlusPlus => vec![ConstructEffect {effect: Effect::Sustain, duration: 3, meta: None, tick: None }], Skill::SustainPlusPlus => vec![ConstructEffect {effect: Effect::Sustain, duration: 1, meta: None, tick: None }],
Skill::Curse => vec![ConstructEffect {effect: Effect::Curse, duration: 2, Skill::Curse => vec![ConstructEffect {effect: Effect::Curse, duration: 2,
meta: Some(EffectMeta::Multiplier(150)), tick: None}], meta: Some(EffectMeta::Multiplier(150)), tick: None}],
Skill::CursePlus => vec![ConstructEffect {effect: Effect::Curse, duration: 2, Skill::CursePlus => vec![ConstructEffect {effect: Effect::Curse, duration: 2,
meta: Some(EffectMeta::Multiplier(200)), tick: None}], meta: Some(EffectMeta::Multiplier(200)), tick: None}],
Skill::CursePlusPlus => vec![ConstructEffect {effect: Effect::Curse, duration: 3, Skill::CursePlusPlus => vec![ConstructEffect {effect: Effect::Curse, duration: 3,
meta: Some(EffectMeta::Multiplier(250)), tick: None}], meta: Some(EffectMeta::Multiplier(250)), tick: None}],
Skill::Debuff => vec![ConstructEffect {effect: Effect::Slow, duration: 3, Skill::Debuff => vec![ConstructEffect {effect: Effect::Slow, duration: 3,
meta: Some(EffectMeta::Multiplier(50)), tick: None }], meta: Some(EffectMeta::Multiplier(50)), tick: None }],
Skill::Decay => vec![ConstructEffect {effect: Effect::Wither, duration: 3, meta: Some(EffectMeta::Multiplier(50)), tick: None }, Skill::Decay => vec![ConstructEffect {effect: Effect::Wither, duration: 3,
meta: Some(EffectMeta::Multiplier(50)), tick: None },
ConstructEffect {effect: Effect::Decay, duration: 3, ConstructEffect {effect: Effect::Decay, duration: 3,
meta: Some(EffectMeta::Skill(Skill::DecayTick)), tick: None}], meta: Some(EffectMeta::Skill(Skill::DecayTick)), tick: None}],
Skill::DecayPlus => vec![ConstructEffect {effect: Effect::Wither, duration: 3, meta: Some(EffectMeta::Multiplier(35)), tick: None }, Skill::DecayPlus => vec![ConstructEffect {effect: Effect::Wither, duration: 3,
ConstructEffect {effect: Effect::Decay, duration: 3, meta: Some(EffectMeta::Multiplier(35)), tick: None },
ConstructEffect {effect: Effect::Decay, duration: 3,
meta: Some(EffectMeta::Skill(Skill::DecayTickPlus)), tick: None}], meta: Some(EffectMeta::Skill(Skill::DecayTickPlus)), tick: None}],
Skill::DecayPlusPlus => vec![ConstructEffect {effect: Effect::Wither, duration: 4, meta: Some(EffectMeta::Multiplier(20)), tick: None }, Skill::DecayPlusPlus => vec![ConstructEffect {effect: Effect::Wither, duration: 4,
ConstructEffect {effect: Effect::Decay, duration: 4, meta: Some(EffectMeta::Multiplier(20)), tick: None },
ConstructEffect {effect: Effect::Decay, duration: 4,
meta: Some(EffectMeta::Skill(Skill::DecayTickPlusPlus)), tick: None}], meta: Some(EffectMeta::Skill(Skill::DecayTickPlusPlus)), tick: None}],
Skill::Haste => vec![ConstructEffect {effect: Effect::Haste, duration: 2, Skill::Haste => vec![ConstructEffect {effect: Effect::Haste, duration: 2,
meta: Some(EffectMeta::Multiplier(150)), tick: None }], meta: Some(EffectMeta::Multiplier(150)), tick: None }],
Skill::HastePlus => vec![ConstructEffect {effect: Effect::Haste, duration: 3, Skill::HastePlus => vec![ConstructEffect {effect: Effect::Haste, duration: 3,
meta: Some(EffectMeta::Multiplier(175)), tick: None }], meta: Some(EffectMeta::Multiplier(175)), tick: None }],
Skill::HastePlusPlus => vec![ConstructEffect {effect: Effect::Haste, duration: 4, Skill::HastePlusPlus => vec![ConstructEffect {effect: Effect::Haste, duration: 4,
meta: Some(EffectMeta::Multiplier(225)), tick: None }], meta: Some(EffectMeta::Multiplier(225)), tick: None }],
Skill::Hex => vec![ConstructEffect {effect: Effect::Hex, duration: 2, meta: None, tick: None}], Skill::Hex => vec![ConstructEffect {effect: Effect::Hex, duration: 2, meta: None, tick: None}],
Skill::HexPlus => vec![ConstructEffect {effect: Effect::Hex, duration: 3, meta: None, tick: None}], Skill::HexPlus => vec![ConstructEffect {effect: Effect::Hex, duration: 3, meta: None, tick: None}],
Skill::HexPlusPlus => vec![ConstructEffect {effect: Effect::Hex, duration: 4, meta: None, tick: None}], Skill::HexPlusPlus => vec![ConstructEffect {effect: Effect::Hex, duration: 4, meta: None, tick: None}],
Skill::Absorb => vec![ConstructEffect {effect: Effect::Absorb, duration: 2, Skill::Absorb => vec![ConstructEffect {effect: Effect::Absorb, duration: 2,
meta: Some(EffectMeta::Skill(Skill::Absorption)), tick: None}], meta: Some(EffectMeta::Skill(Skill::Absorption)), tick: None}],
@ -885,87 +889,90 @@ impl Skill {
Skill::AbsorbPlusPlus => vec![ConstructEffect {effect: Effect::Absorb, duration: 4, Skill::AbsorbPlusPlus => vec![ConstructEffect {effect: Effect::Absorb, duration: 4,
meta: Some(EffectMeta::Skill(Skill::AbsorptionPlusPlus)), tick: None}], meta: Some(EffectMeta::Skill(Skill::AbsorptionPlusPlus)), tick: None}],
Skill::Absorption => vec![ConstructEffect {effect: Effect::Absorption, duration: 5, meta: None, tick: None}], Skill::Absorption => vec![ConstructEffect {effect: Effect::Absorption, duration: 5, meta: None, tick: None}],
Skill::AbsorptionPlus => vec![ConstructEffect {effect: Effect::Absorption, duration: 7, meta: None, tick: None}], Skill::AbsorptionPlus => vec![ConstructEffect {effect: Effect::Absorption, duration: 7, meta: None, tick: None}],
Skill::AbsorptionPlusPlus => vec![ConstructEffect {effect: Effect::Absorption, duration: 9, meta: None, tick: None}], Skill::AbsorptionPlusPlus => vec![ConstructEffect {effect: Effect::Absorption, duration: 9, meta: None, tick: None}],
Skill::Hybrid => vec![ConstructEffect {effect: Effect::Hybrid, duration: 2, Skill::Hybrid => vec![ConstructEffect {effect: Effect::Hybrid, duration: 2,
meta: Some(EffectMeta::Multiplier(150)), tick: None }], meta: Some(EffectMeta::Multiplier(150)), tick: None }],
Skill::HybridPlus => vec![ConstructEffect {effect: Effect::Hybrid, duration: 3, Skill::HybridPlus => vec![ConstructEffect {effect: Effect::Hybrid, duration: 3,
meta: Some(EffectMeta::Multiplier(175)), tick: None }], meta: Some(EffectMeta::Multiplier(175)), tick: None }],
Skill::HybridPlusPlus => vec![ConstructEffect {effect: Effect::Hybrid, duration: 4, Skill::HybridPlusPlus => vec![ConstructEffect {effect: Effect::Hybrid, duration: 4,
meta: Some(EffectMeta::Multiplier(225)), tick: None }], meta: Some(EffectMeta::Multiplier(225)), tick: None }],
Skill::Invert => vec![ConstructEffect {effect: Effect::Invert, duration: 2, meta: None, 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}], Skill::InvertPlus => vec![ConstructEffect {effect: Effect::Invert, duration: 3, meta: None, tick: None}],
Skill::InvertPlusPlus => vec![ConstructEffect {effect: Effect::Invert, duration: 4, meta: None, tick: None}], Skill::InvertPlusPlus => vec![ConstructEffect {effect: Effect::Invert, duration: 4, meta: None, tick: None}],
Skill::Counter => vec![ConstructEffect {effect: Effect::Counter, duration: 2, Skill::Counter => vec![ConstructEffect {effect: Effect::Counter, duration: 1,
meta: Some(EffectMeta::Skill(Skill::CounterAttack)), tick: None}], meta: Some(EffectMeta::Skill(Skill::CounterAttack)), tick: None}],
Skill::CounterPlus => vec![ConstructEffect {effect: Effect::Counter, duration: 2, Skill::CounterPlus => vec![ConstructEffect {effect: Effect::Counter, duration: 1,
meta: Some(EffectMeta::Skill(Skill::CounterAttackPlus)), tick: None}], meta: Some(EffectMeta::Skill(Skill::CounterAttackPlus)), tick: None}],
Skill::CounterPlusPlus => vec![ConstructEffect {effect: Effect::Counter, duration: 2, Skill::CounterPlusPlus => vec![ConstructEffect {effect: Effect::Counter, duration: 1,
meta: Some(EffectMeta::Skill(Skill::CounterAttackPlusPlus)), tick: None}], meta: Some(EffectMeta::Skill(Skill::CounterAttackPlusPlus)), tick: None}],
Skill::Reflect => vec![ConstructEffect {effect: Effect::Reflect, duration: 1, meta: None, tick: None }], Skill::Reflect => vec![ConstructEffect {effect: Effect::Reflect, duration: 1, meta: None, tick: None }],
Skill::ReflectPlus => vec![ConstructEffect {effect: Effect::Reflect, duration: 2, meta: None, tick: None }], Skill::ReflectPlus => vec![ConstructEffect {effect: Effect::Reflect, duration: 1, meta: None, tick: None }],
Skill::ReflectPlusPlus => vec![ConstructEffect {effect: Effect::Reflect, duration: 3, meta: None, tick: None }], Skill::ReflectPlusPlus => vec![ConstructEffect {effect: Effect::Reflect, duration: 1, meta: None, tick: None }],
Skill::Break => vec![ConstructEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}, Skill::Break => vec![ConstructEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None},
ConstructEffect {effect: Effect::Vulnerable, duration: 3, meta: Some(EffectMeta::Multiplier(150)), tick: None}], ConstructEffect {effect: Effect::Vulnerable, duration: 3,
Skill::BreakPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}, meta: Some(EffectMeta::Multiplier(150)), tick: None}],
ConstructEffect {effect: Effect::Vulnerable, duration: 4, meta: Some(EffectMeta::Multiplier(200)), tick: None}], Skill::BreakPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None},
Skill::BreakPlusPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}, ConstructEffect {effect: Effect::Vulnerable, duration: 4,
ConstructEffect {effect: Effect::Vulnerable, duration: 4, meta: Some(EffectMeta::Multiplier(250)), tick: None}], meta: Some(EffectMeta::Multiplier(200)), 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}],
Skill::Ruin => vec![ConstructEffect {effect: Effect::Stun, duration: 1, meta: None, 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}], Skill::RuinPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 1, meta: None, tick: None}],
Skill::RuinPlusPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}], Skill::RuinPlusPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}],
Skill::Purge => vec![ConstructEffect {effect: Effect::Purge, duration: 1, meta: None, tick: None}], Skill::Purge => vec![ConstructEffect {effect: Effect::Purge, duration: 2, meta: None, tick: None}],
Skill::PurgePlus => vec![ConstructEffect {effect: Effect::Purge, duration: 2, meta: None, tick: None}], Skill::PurgePlus => vec![ConstructEffect {effect: Effect::Purge, duration: 3, meta: None, tick: None}],
Skill::PurgePlusPlus => vec![ConstructEffect {effect: Effect::Purge, duration: 3, meta: None, tick: None}], Skill::PurgePlusPlus => vec![ConstructEffect {effect: Effect::Purge, duration: 4, meta: None, tick: None}],
Skill::Link => vec![ConstructEffect {effect: Effect::Stun, duration: 3, 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::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::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::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}], Skill::SilencePlus => vec![ConstructEffect {effect: Effect::Silence, duration: 3, meta: None, tick: None}],
Skill::SilencePlusPlus => vec![ConstructEffect {effect: Effect::Silence, duration: 4, meta: None, tick: None}], Skill::SilencePlusPlus => vec![ConstructEffect {effect: Effect::Silence, duration: 4, meta: None, tick: None}],
Skill::Siphon => vec![ConstructEffect {effect: Effect::Siphon, duration: 2, Skill::Siphon => vec![ConstructEffect {effect: Effect::Siphon, duration: 2,
meta: Some(EffectMeta::Skill(Skill::SiphonTick)), tick: None}], meta: Some(EffectMeta::Skill(Skill::SiphonTick)), tick: None}],
Skill::SiphonPlus => vec![ConstructEffect {effect: Effect::Siphon, duration: 3, Skill::SiphonPlus => vec![ConstructEffect {effect: Effect::Siphon, duration: 3,
meta: Some(EffectMeta::Skill(Skill::SiphonTickPlus)), tick: None}], meta: Some(EffectMeta::Skill(Skill::SiphonTickPlus)), tick: None}],
Skill::SiphonPlusPlus => vec![ConstructEffect {effect: Effect::Siphon, duration: 4, Skill::SiphonPlusPlus => vec![ConstructEffect {effect: Effect::Siphon, duration: 4,
meta: Some(EffectMeta::Skill(Skill::SiphonTickPlusPlus)), tick: None}], meta: Some(EffectMeta::Skill(Skill::SiphonTickPlusPlus)), tick: None}],
Skill::Sleep => vec![ConstructEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}], Skill::Sleep => vec![ConstructEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}],
Skill::SleepPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 3, meta: None, tick: None}], Skill::SleepPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 3, meta: None, tick: None}],
Skill::SleepPlusPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 4, meta: None, tick: None}], Skill::SleepPlusPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 4, meta: None, tick: None}],
Skill::Restrict => vec![ConstructEffect {effect: Effect::Restrict, duration: 2, meta: None, tick: None}], Skill::Restrict => vec![ConstructEffect {effect: Effect::Restrict, duration: 2, meta: None, tick: None}],
Skill::RestrictPlus => vec![ConstructEffect {effect: Effect::Restrict, duration: 3, meta: None, tick: None}], Skill::RestrictPlus => vec![ConstructEffect {effect: Effect::Restrict, duration: 3, meta: None, tick: None}],
Skill::RestrictPlusPlus => vec![ConstructEffect {effect: Effect::Restrict, duration: 4, meta: None, tick: None}], Skill::RestrictPlusPlus => vec![ConstructEffect {effect: Effect::Restrict, duration: 4, meta: None, tick: None}],
Skill::Bash => vec![ConstructEffect {effect: Effect::Stun, duration: 2, Skill::Bash => vec![ConstructEffect {effect: Effect::Stun, duration: 2,
meta: Some(EffectMeta::Skill(Skill::Bash)), tick: None}], meta: Some(EffectMeta::Skill(Skill::Bash)), tick: None}],
Skill::BashPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 2, Skill::BashPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 2,
meta: Some(EffectMeta::Skill(Skill::BashPlus)), tick: None}], meta: Some(EffectMeta::Skill(Skill::BashPlus)), tick: None}],
Skill::BashPlusPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 2, Skill::BashPlusPlus => vec![ConstructEffect {effect: Effect::Stun, duration: 2,
meta: Some(EffectMeta::Skill(Skill::BashPlusPlus)), tick: None}], meta: Some(EffectMeta::Skill(Skill::BashPlusPlus)), tick: None}],
Skill::Stun => vec![ConstructEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}], Skill::Stun => vec![ConstructEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}],
Skill::Intercept => vec![ConstructEffect {effect: Effect::Intercept, duration: 2, meta: None, tick: None}], Skill::Intercept => vec![ConstructEffect {effect: Effect::Intercept, duration: 2, meta: None, tick: None}],
Skill::InterceptPlus => vec![ConstructEffect {effect: Effect::Intercept, duration: 3, meta: None, tick: None}], Skill::InterceptPlus => vec![ConstructEffect {effect: Effect::Intercept, duration: 3, meta: None, tick: None}],
Skill::InterceptPlusPlus => vec![ConstructEffect {effect: Effect::Intercept, duration: 4, meta: None, tick: None}], Skill::InterceptPlusPlus => vec![ConstructEffect {effect: Effect::Intercept, duration: 4, meta: None, tick: None}],
Skill::Triage => vec![ConstructEffect {effect: Effect::Triage, duration: 2, Skill::Triage => vec![ConstructEffect {effect: Effect::Triage, duration: 2,
meta: Some(EffectMeta::Skill(Skill::TriageTick)), tick: None}], meta: Some(EffectMeta::Skill(Skill::TriageTick)), tick: None}],
Skill::TriagePlus => vec![ConstructEffect {effect: Effect::Triage, duration: 3, Skill::TriagePlus => vec![ConstructEffect {effect: Effect::Triage, duration: 3,
meta: Some(EffectMeta::Skill(Skill::TriageTickPlus)), tick: None}], meta: Some(EffectMeta::Skill(Skill::TriageTickPlus)), tick: None}],
Skill::TriagePlusPlus => vec![ConstructEffect {effect: Effect::Triage, duration: 4, Skill::TriagePlusPlus => vec![ConstructEffect {effect: Effect::Triage, duration: 4,
meta: Some(EffectMeta::Skill(Skill::TriageTickPlusPlus)), tick: None}], meta: Some(EffectMeta::Skill(Skill::TriageTickPlusPlus)), tick: None}],
_ => { _ => {
panic!("{:?} no skill effect", self); panic!("{:?} no skill effect", self);
@ -985,7 +992,7 @@ impl Skill {
Skill::Block => None, // reduce damage Skill::Block => None, // reduce damage
Skill::Counter| Skill::Counter|
Skill::CounterPlus | Skill::CounterPlus |
Skill::CounterPlusPlus => Some(2), // avoid all damage Skill::CounterPlusPlus => None, // avoid all damage
Skill::Restrict=> Some(2), Skill::Restrict=> Some(2),
Skill::RestrictPlus => Some(2), Skill::RestrictPlus => Some(2),
@ -1045,8 +1052,8 @@ impl Skill {
Skill::SilencePlus => Some(2), Skill::SilencePlus => Some(2),
Skill::SilencePlusPlus => Some(2), Skill::SilencePlusPlus => Some(2),
Skill::Purify=> None, Skill::Purify |
Skill::PurifyPlus => None, Skill::PurifyPlus |
Skill::PurifyPlusPlus => None, Skill::PurifyPlusPlus => None,
Skill::Purge=> None, Skill::Purge=> None,
@ -1065,13 +1072,13 @@ impl Skill {
Skill::HastePlus => Some(2), Skill::HastePlus => Some(2),
Skill::HastePlusPlus => Some(2), Skill::HastePlusPlus => Some(2),
Skill::Reflect=> Some(2), Skill::Reflect |
Skill::ReflectPlus => Some(2), Skill::ReflectPlus |
Skill::ReflectPlusPlus => Some(2), Skill::ReflectPlusPlus => None,
Skill::Recharge=> Some(2), Skill::Recharge=> None,
Skill::RechargePlus => Some(2), Skill::RechargePlus => None,
Skill::RechargePlusPlus => Some(2), Skill::RechargePlusPlus => None,
Skill::Ruin=> Some(3), Skill::Ruin=> Some(3),
Skill::RuinPlus => Some(2), Skill::RuinPlus => Some(2),
@ -1085,17 +1092,17 @@ impl Skill {
Skill::SleepPlus => Some(3), Skill::SleepPlus => Some(3),
Skill::SleepPlusPlus => Some(3), Skill::SleepPlusPlus => Some(3),
Skill::Sustain=> Some(1), Skill::Sustain |
Skill::SustainPlus => Some(2), Skill::SustainPlus |
Skill::SustainPlusPlus => Some(3), Skill::SustainPlusPlus => None,
Skill::Intercept=> Some(2), Skill::Intercept=> Some(2),
Skill::InterceptPlus => Some(2), Skill::InterceptPlus => Some(2),
Skill::InterceptPlusPlus => Some(2), Skill::InterceptPlusPlus => Some(2),
Skill::Electrify=>Some(1), Skill::Electrify |
Skill::ElectrifyPlus =>Some(1), Skill::ElectrifyPlus |
Skill::ElectrifyPlusPlus =>Some(1), Skill::ElectrifyPlusPlus => None,
Skill::Absorb| Skill::Absorb|
@ -1717,7 +1724,9 @@ fn purge(source: &mut Construct, target: &mut Construct, mut results: Resolution
.event(Event::Removal { effect: ce.effect, construct_effects: target.effects.clone() })); .event(Event::Removal { effect: ce.effect, construct_effects: target.effects.clone() }));
} }
let mut turns = 1; results.push(Resolution::new(source, target).event(target.add_effect(skill, effect)).stages(EventStages::PostOnly));
/*let mut turns = 1;
for cs in target.skills.iter_mut() { for cs in target.skills.iter_mut() {
if Effect::Purge.disables_skill(cs.skill) { if Effect::Purge.disables_skill(cs.skill) {
turns += 1; turns += 1;
@ -1727,8 +1736,7 @@ fn purge(source: &mut Construct, target: &mut Construct, mut results: Resolution
if turns > 1 { if turns > 1 {
let mut effect = skill.effect()[0]; let mut effect = skill.effect()[0];
effect.duration = effect.duration * turns; effect.duration = effect.duration * turns;
results.push(Resolution::new(source, target).event(target.add_effect(skill, effect)).stages(EventStages::PostOnly)); }*/
}
return results; return results;
} }