simplify debuffs and buffs

This commit is contained in:
ntr 2019-04-17 13:05:14 +10:00
parent a581f9ad3f
commit a025900639

View File

@ -374,56 +374,56 @@ impl Effect {
pub fn category(&self) -> Category { pub fn category(&self) -> Category {
match self { match self {
// physical // physical
Effect::Stun => Category::RedDebuff, Effect::Stun => Category::Debuff,
Effect::Block => Category::RedBuff, Effect::Block => Category::Buff,
Effect::Parry => Category::RedBuff, Effect::Parry => Category::Buff,
Effect::Bleed => Category::RedDebuff, Effect::Bleed => Category::Debuff,
Effect::Leech => Category::RedDebuff, Effect::Leech => Category::Debuff,
Effect::Airborne => Category::RedDebuff, Effect::Airborne => Category::Debuff,
Effect::Untouchable => Category::RedBuff, Effect::Untouchable => Category::Buff,
Effect::Deadly => Category::RedBuff, Effect::Deadly => Category::Buff,
Effect::Vulnerable => Category::RedDebuff, Effect::Vulnerable => Category::Debuff,
Effect::Fury => Category::RedBuff, Effect::Fury => Category::Buff,
Effect::Blind => Category::RedDebuff, Effect::Blind => Category::Debuff,
Effect::Snare => Category::RedDebuff, Effect::Snare => Category::Debuff,
Effect::Clutch => Category::RedBuff, Effect::Clutch => Category::Buff,
Effect::Taunt => Category::RedBuff, Effect::Taunt => Category::Buff,
Effect::Empower => Category::RedBuff, Effect::Empower => Category::Buff,
Effect::Injured => Category::RedDebuff, Effect::Injured => Category::Debuff,
Effect::Strangle => Category::RedDebuff, Effect::Strangle => Category::Debuff,
Effect::Strangling => Category::RedBuff, Effect::Strangling => Category::Buff,
// magic // magic
Effect::Hex => Category::BlueDebuff, Effect::Hex => Category::Debuff,
Effect::Ruin => Category::BlueDebuff, Effect::Ruin => Category::Debuff,
Effect::Curse => Category::BlueDebuff, Effect::Curse => Category::Debuff,
Effect::Banish => Category::BlueDebuff, // todo randomise Effect::Banish => Category::Debuff, // todo randomise
Effect::Slow => Category::BlueDebuff, Effect::Slow => Category::Debuff,
Effect::Haste => Category::BlueBuff, Effect::Haste => Category::Buff,
Effect::Hatred => Category::BlueBuff, Effect::Hatred => Category::Buff,
Effect::Reflect => Category::BlueBuff, Effect::Reflect => Category::Buff,
Effect::Enslave => Category::BlueDebuff, Effect::Enslave => Category::Debuff,
Effect::Mesmerise => Category::BlueDebuff, Effect::Mesmerise => Category::Debuff,
Effect::Amplify => Category::BlueBuff, Effect::Amplify => Category::Buff,
Effect::Silence => Category::BlueDebuff, Effect::Silence => Category::Debuff,
Effect::Corrupt => Category::BlueBuff, Effect::Corrupt => Category::Buff,
Effect::Corruption => Category::BlueDebuff, Effect::Corruption => Category::Debuff,
Effect::Hostility => Category::BlueBuff, Effect::Hostility => Category::Buff,
// magic immunity // magic immunity
Effect::Shield => Category::BlueBuff, Effect::Shield => Category::Buff,
Effect::Invert => Category::GreenBuff, Effect::Invert => Category::Buff,
// effects over time // effects over time
Effect::Triage => Category::BlueBuff, Effect::Triage => Category::Buff,
Effect::Decay => Category::BlueDebuff, Effect::Decay => Category::Debuff,
Effect::Regen => Category::BlueBuff, Effect::Regen => Category::Buff,
Effect::Siphon => Category::BlueDebuff, Effect::Siphon => Category::Debuff,
Effect::SpeedSiphon => Category::BlueDebuff, Effect::SpeedSiphon => Category::Debuff,
Effect::SpeedIncrease => Category::BlueBuff, Effect::SpeedIncrease => Category::Buff,
Effect::Ko => Category::Ko, Effect::Ko => Category::Ko,
} }
@ -485,19 +485,20 @@ impl Effect {
#[derive(Debug,Clone,Copy,PartialEq,Serialize,Deserialize)] #[derive(Debug,Clone,Copy,PartialEq,Serialize,Deserialize)]
pub enum Category { pub enum Category {
Red, Red,
RedDamage,
RedDebuff,
RedBuff,
RedTick,
Blue, Blue,
BlueDamage,
BlueDebuff,
BlueBuff,
BlueTick,
Green, Green,
GreenTick,
RedDamage,
BlueDamage,
GreenDamage, GreenDamage,
GreenBuff,
RedTick,
BlueTick,
GreenTick,
Buff,
Debuff,
Ko, Ko,
} }
@ -1088,7 +1089,7 @@ fn silence(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions) -> Re
fn purge(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions) -> Resolutions { fn purge(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions) -> Resolutions {
while let Some(i) = target.effects while let Some(i) = target.effects
.iter() .iter()
.position(|ce| [Category::BlueBuff, Category::RedBuff].contains(&ce.effect.category())) { .position(|ce| [Category::Buff, Category::Buff].contains(&ce.effect.category())) {
let ce = target.effects.remove(i); let ce = target.effects.remove(i);
results.push(Resolution::new(source, target).event(Event::Removal { effect: ce.effect })); results.push(Resolution::new(source, target).event(Event::Removal { effect: ce.effect }));
} }
@ -1099,7 +1100,7 @@ fn purge(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions) -> Reso
fn purify(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions) -> Resolutions { fn purify(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions) -> Resolutions {
while let Some(i) = target.effects while let Some(i) = target.effects
.iter() .iter()
.position(|ce| [Category::BlueDebuff, Category::RedDebuff].contains(&ce.effect.category())) { .position(|ce| [Category::Debuff, Category::Debuff].contains(&ce.effect.category())) {
let ce = target.effects.remove(i); let ce = target.effects.remove(i);
results.push(Resolution::new(source, target).event(Event::Removal { effect: ce.effect })); results.push(Resolution::new(source, target).event(Event::Removal { effect: ce.effect }));
} }