wowlab_engine_combat/builder/spell_builder/
mod.rs1use wowlab_engine_gamedata::ResolvedDamageDef;
2use wowlab_types::{
3 constants::DEFAULT_GCD_MS,
4 data::CooldownCategoryId,
5 game::{CdrCondition, CdrEffect},
6};
7
8use super::{
9 BuilderError,
10 def::{
11 BuilderDamageDef, BuilderSpellDef, BuilderSpellEffect, BuilderTriggerProgramPredicate,
12 CooldownDef,
13 },
14};
15use crate::{
16 DamageFlags,
17 state::{
18 CastHookFn, DamageEffectRef, EmpowerReleaseHookFn, LocalAuraIdx, LocalSpellIdx,
19 ResourcePool, TriggerProgramPredicateFn,
20 },
21};
22
23mod from_data;
24
25const fn attribute_damage_flags(flags: DamageFlags) -> DamageFlags {
26 const ATTRIBUTE_BITS: u16 = DamageFlags::PERIODIC.bits()
27 | DamageFlags::IGNORE_PLAYER_MULTIPLIERS.bits()
28 | DamageFlags::IGNORE_TARGET_MULTIPLIERS.bits()
29 | DamageFlags::IGNORE_POSITIVE_TARGET_MULTIPLIERS.bits();
30
31 DamageFlags::from_bits_retain(flags.bits() & ATTRIBUTE_BITS)
32}
33
34mod aoe;
35mod channel;
36mod cooldown;
37mod damage;
38pub(crate) mod draft;
39mod finalize;
40mod gating;
41mod resources;
42
43pub(crate) use draft::SpellDefinitionDraft;