wowlab_engine_domain/dbc/semantics/
spell_effect_attributes.rs1bitflags::bitflags! {
4 #[derive(Copy, Clone, Debug, Default, Eq, Hash, PartialEq)]
6 pub struct SpellEffectAttributes: u32 {
7 const NO_IMMUNITY = 1 << 0;
8 const POSITION_IS_FACING_RELATIVE = 1 << 1;
9 const JUMP_CHARGE_UNIT_MELEE_RANGE = 1 << 2;
10 const JUMP_CHARGE_UNIT_STRICT_PATH_CHECK = 1 << 3;
11 const EXCLUDE_OWN_PARTY = 1 << 4;
12 const ALWAYS_AOE_LINE_OF_SIGHT = 1 << 5;
13 const SUPPRESS_POINTS_STACKING = 1 << 6;
14 const CHAIN_FROM_INITIAL_TARGET = 1 << 7;
15 const UNCONTROLLED_NO_BACKWARDS = 1 << 8;
16 const AURA_POINTS_STACK = 1 << 9;
17 const NO_COPY_DAMAGE_INTERRUPTS_OR_PROCS = 1 << 10;
18 const ADD_TARGET_COMBAT_REACH_TO_AOE = 1 << 11;
19 const IS_HARMFUL = 1 << 12;
20 const FORCE_SCALE_TO_OVERRIDE_CAMERA_MIN_HEIGHT = 1 << 13;
21 const PLAYERS_ONLY = 1 << 14;
22 const COMPUTE_POINTS_ONLY_AT_CAST_TIME = 1 << 15;
23 const ENFORCE_LINE_OF_SIGHT_TO_CHAIN_TARGETS = 1 << 16;
24 const AREA_EFFECTS_USE_TARGET_RADIUS = 1 << 17;
25 const TELEPORT_WITH_VEHICLE = 1 << 18;
26 const SCALE_POINTS_BY_CHALLENGE_MODE_DAMAGE_SCALER = 1 << 19;
27 const DONT_FAIL_SPELL_ON_TARGETING_FAILURE = 1 << 20;
28 const IGNORE_DURING_COOLDOWN_TIME_RATE_CALCULATION = 1 << 23;
29 const DAMAGE_ONLY_ABSORB_SHIELDS = 1 << 26;
30 }
31}
32
33impl SpellEffectAttributes {
34 #[must_use]
35 pub const fn from_dbc(raw: i32) -> Self {
36 Self::from_bits_retain(u32::from_ne_bytes(raw.to_ne_bytes()))
37 }
38}