Skip to main content

wowlab_engine_combat/builder/combat_builder/
build.rs

1use wowlab_engine_domain::{
2    dbc::{AuraSubtypeKind, ResolvedGameDataSemanticExt as _},
3    encounter::{EnemyActorDefinition, EnemyActorDefinitionInput, EnemyState, HealthModel},
4    pool::PoolIndex,
5};
6use wowlab_engine_ports::{EngineError, HeroTalentTreeDesc, ResolvedEncounter};
7use wowlab_types::{
8    combat::ResourceType,
9    data::CooldownCategoryId,
10    sim::{AuraOn, EnemyHealthInput, IntMap, SpellIdx},
11};
12
13use super::{CombatSystemBuilder, ImpactEffectProcDefinition, resolve_resource_type};
14use crate::{
15    builder::{
16        buffer_init::{expand_spell_learn_chains, expand_spell_override_chains},
17        compile::{CooldownBypass, CostBypass, SpellGate, SpellOverride},
18        draft::CombatSystemDraft,
19        lower::{RuntimeStateParts, lower_builder_state},
20    },
21    state::{BaseStats, CombatRuntime, ImpactActorFilter, ImpactSource, ResourceThresholdTrigger},
22};
23
24#[path = "trigger_program.rs"]
25mod trigger_program;
26use crate::builder::AuraDefinitionDraft;
27
28mod assemble;
29mod dbc_procs;
30mod finish;
31mod overrides;
32
33use dbc_procs::ImpactProcRegistration;
34#[cfg(test)]
35use finish::apply_hero_tree_spell_gating;
36use overrides::ActionOverrideRegistration;
37
38struct TriggerProgramLowering<'a> {
39    definition: &'a CombatSystemBuilder,
40}
41
42struct TriggerProgramRegistration<'a> {
43    definition: &'a mut CombatSystemBuilder,
44}
45
46#[cfg(test)]
47use dbc_procs::dbc_proc_mask_is_complete;
48
49#[cfg(test)]
50#[path = "build/cooldown_tests.rs"]
51mod cooldown_tests;
52
53#[cfg(test)]
54#[path = "build/proc_mask_tests.rs"]
55mod proc_mask_tests;
56
57#[cfg(test)]
58#[path = "build/tests.rs"]
59mod tests;