Skip to main content

wowlab_engine_domain/dbc/semantics/
aura_interrupt_flags.rs

1bitflags::bitflags! {
2    /// Primary `SpellAuraInterruptFlags` word consumed by combat aura lifecycles.
3    #[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
4    pub struct SpellAuraInterruptFlags: u32 {
5        const HOSTILE_ACTION_RECEIVED = 1 << 0;
6        const DAMAGE = 1 << 1;
7        const ACTION = 1 << 2;
8        const MOVING = 1 << 3;
9        const TURNING = 1 << 4;
10        const ANIM = 1 << 5;
11        const DISMOUNT = 1 << 6;
12        const UNDER_WATER = 1 << 7;
13        const ABOVE_WATER = 1 << 8;
14        const SHEATHING = 1 << 9;
15        const INTERACTING = 1 << 10;
16        const LOOTING = 1 << 11;
17        const ATTACKING = 1 << 12;
18        const ITEM_USE = 1 << 13;
19        const DAMAGE_CHANNEL_DURATION = 1 << 14;
20        const SHAPESHIFTING = 1 << 15;
21        const ACTION_DELAYED = 1 << 16;
22        const MOUNT = 1 << 17;
23        const STANDING = 1 << 18;
24        const LEAVE_WORLD = 1 << 19;
25        const STEALTH_OR_INVIS = 1 << 20;
26        const INVULNERABILITY_BUFF = 1 << 21;
27        const ENTER_WORLD = 1 << 22;
28        const PVP_ACTIVE = 1 << 23;
29        const NON_PERIODIC_DAMAGE = 1 << 24;
30        const LANDING_OR_FLIGHT = 1 << 25;
31        const RELEASE = 1 << 26;
32        const DAMAGE_CANCELS_SCRIPT = 1 << 27;
33        const ENTERING_COMBAT = 1 << 28;
34        const LOGIN = 1 << 29;
35        const SUMMON = 1 << 30;
36        const LEAVING_COMBAT = 1 << 31;
37
38        const NOT_VICTIM = Self::HOSTILE_ACTION_RECEIVED.bits()
39            | Self::DAMAGE.bits()
40            | Self::NON_PERIODIC_DAMAGE.bits();
41        const ANY_DAMAGE = Self::DAMAGE.bits()
42            | Self::NON_PERIODIC_DAMAGE.bits()
43            | Self::DAMAGE_CANCELS_SCRIPT.bits();
44    }
45}
46
47impl SpellAuraInterruptFlags {
48    #[must_use]
49    pub const fn from_dbc(raw: u32) -> Self {
50        Self::from_bits_retain(raw)
51    }
52}