Skip to main content

wowlab_engine_combat/builder/spell_builder/
mod.rs

1use 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;