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