wowlab_engine_combat/builder/aura_builder/
effects.rs1use wowlab_engine_domain::dbc::{
4 AuraSubtypeKind, EffectLookup, LiveDamageModifierKind, ModifierPropertyKind, SpellEffectKind,
5 SpellSchoolMask, aura_subtype_is, aura_subtype_is_any, aura_subtype_modifier,
6 live_damage_modifier, modifier_property_is, modifier_property_kind, spell_effect_is,
7};
8use wowlab_engine_gamedata::ResolvedGameData;
9use wowlab_types::{constants::HUNDRED, sim::SpellIdx};
10
11use super::{AuraDefinitionDraft, BuilderError, health_threshold, numbers::modifier_percent};
12use crate::{
13 DamageFlags,
14 builder::def::{AuraOn, PeriodicDef, PeriodicEffectDef},
15 state::{
16 AbsorbEffect, AbsorbKind, ActiveSpellGate, BuffEffect, DamageTransfer, DamageTransferTiming,
17 },
18};
19
20fn effect_parts(lookup: EffectLookup<'_>) -> (&ResolvedGameData, SpellIdx, u32, u8) {
21 (
22 lookup.data,
23 lookup.effect.spell,
24 lookup.effect.spell.as_u32(),
25 lookup.effect.effect_index,
26 )
27}
28
29mod combat;
30mod modifiers;
31mod periodic;
32mod scope;
33mod stats;
34mod timing;
35
36pub(super) use combat::apply_non_passive_effect;
37pub(super) use modifiers::{
38 apply_critical_modifier_effect, apply_effect_points_modifier, apply_forwarded_value,
39 apply_spell_modifier_effect,
40};
41pub(super) use periodic::apply_automatic_periodic_effect;
42pub(super) use scope::apply_actor_scope_from_data;
43pub(super) use stats::apply_active_stat_effect;
44pub(super) use timing::apply_timing_modifier_effect;