remove categories for colours

This commit is contained in:
ntr 2019-06-08 16:35:06 +10:00
parent 4722b4507d
commit 623bbffd47
2 changed files with 47 additions and 43 deletions

View File

@ -29,6 +29,8 @@
*CLIENT*
mobile info page
rework scatter
hatred maybe

View File

@ -466,16 +466,6 @@ pub enum Event {
type Resolutions = Vec<Resolution>;
pub type Cooldown = Option<u8>;
#[derive(Debug,Clone,Copy,PartialEq,Serialize,Deserialize)]
enum EffectCategory {
Buff,
Debuff,
Constant,
Ko,
}
#[derive(Debug,Clone,Copy,PartialEq,Serialize,Deserialize)]
pub enum Effect {
Amplify,
@ -632,50 +622,50 @@ impl Effect {
}
}
fn category(&self) -> EffectCategory {
fn colour(&self) -> Option<Colour> {
match self {
// physical
Effect::Stun => EffectCategory::Debuff,
Effect::Block => EffectCategory::Buff,
Effect::Buff => EffectCategory::Buff,
Effect::Parry => EffectCategory::Buff,
Effect::Vulnerable => EffectCategory::Debuff,
Effect::Snare => EffectCategory::Debuff,
Effect::Clutch => EffectCategory::Buff,
Effect::Taunt => EffectCategory::Buff,
Effect::Stun => Some(Colour::Red),
Effect::Block => Some(Colour::Green),
Effect::Buff => Some(Colour::Green),
Effect::Parry => Some(Colour::Green),
Effect::Vulnerable => Some(Colour::Red),
Effect::Snare => Some(Colour::Red),
Effect::Clutch => Some(Colour::Green),
Effect::Taunt => Some(Colour::Green),
// magic
Effect::Hex => EffectCategory::Debuff,
Effect::Curse => EffectCategory::Debuff,
Effect::Banish => EffectCategory::Debuff, // todo randomise
Effect::Hex => Some(Colour::Blue),
Effect::Curse => Some(Colour::Blue),
Effect::Banish => None,
// Effect::Banish => rng.gen_bool(0.5),
Effect::Slow => EffectCategory::Debuff,
Effect::Haste => EffectCategory::Buff,
Effect::Hatred => EffectCategory::Buff,
Effect::Reflect => EffectCategory::Buff,
Effect::Amplify => EffectCategory::Buff,
Effect::Silence => EffectCategory::Debuff,
Effect::Wither => EffectCategory::Debuff,
Effect::Purge => EffectCategory::Debuff,
Effect::Slow => Some(Colour::Blue),
Effect::Haste => Some(Colour::Green),
Effect::Hatred => Some(Colour::Green),
Effect::Reflect => Some(Colour::Green),
Effect::Amplify => Some(Colour::Green),
Effect::Silence => Some(Colour::Blue),
Effect::Wither => Some(Colour::Blue),
Effect::Purge => Some(Colour::Blue),
Effect::Corrupt => EffectCategory::Buff,
Effect::Corruption => EffectCategory::Debuff,
Effect::Corrupt => Some(Colour::Green),
Effect::Corruption => Some(Colour::Blue),
Effect::Hostility => EffectCategory::Buff,
Effect::Hostility => Some(Colour::Green),
// magic
Effect::Impurity => EffectCategory::Buff,
Effect::Scatter => EffectCategory::Buff,
Effect::Invert => EffectCategory::Buff,
Effect::Impurity => Some(Colour::Green),
Effect::Scatter => Some(Colour::Green),
Effect::Invert => Some(Colour::Green),
// effects over time
Effect::Triage => EffectCategory::Buff,
Effect::Decay => EffectCategory::Debuff,
Effect::Regen => EffectCategory::Buff,
Effect::Siphon => EffectCategory::Debuff,
Effect::Triage => Some(Colour::Green),
Effect::Decay => Some(Colour::Blue),
Effect::Regen => Some(Colour::Green),
Effect::Siphon => Some(Colour::Blue),
Effect::Ko => EffectCategory::Ko,
Effect::Ko => None,
}
}
}
@ -1864,7 +1854,13 @@ fn silence(source: &mut Construct, target: &mut Construct, mut results: Resoluti
fn purge(source: &mut Construct, target: &mut Construct, mut results: Resolutions, skill: Skill) -> Resolutions {
while let Some(i) = target.effects
.iter()
.position(|ce| ce.effect.category() == EffectCategory::Buff) {
.position(|ce| {
if let Some(c) = ce.effect.colour() {
c == Colour::Green
} else {
false
}
}) {
let ce = target.effects.remove(i);
results.push(Resolution::new(source, target)
.event(Event::Removal { effect: ce.effect, construct_effects: target.effects.clone() }));
@ -1890,7 +1886,13 @@ fn purify(source: &mut Construct, target: &mut Construct, mut results: Resolutio
let amount = source.green_power().pct(skill.multiplier());
while let Some(i) = target.effects
.iter()
.position(|ce| ce.effect.category() == EffectCategory::Debuff) {
.position(|ce| {
if let Some(c) = ce.effect.colour() {
[Colour::Red, Colour::Blue].contains(&c)
} else {
false
}
}) {
let ce = target.effects.remove(i);
results.push(Resolution::new(source, target)
.event(Event::Removal { effect: ce.effect, construct_effects: target.effects.clone() })