wowlab_engine_combat/systems/
cooldowns.rs1use wowlab_engine_domain::{dbc::ResolvedGameDataSemanticExt as _, rotation::DenseBuffer};
4use wowlab_engine_ports::Event;
5use wowlab_types::{
6 constants::{HUNDRED, MS_PER_SECOND},
7 sim::SimTime,
8};
9
10use super::{
11 buffs::{dbc_effect_points, for_each_active_aura_effect},
12 current_haste_mult,
13};
14use crate::state::{BuffEffect, CombatState, LocalSpellIdx, SpellData};
15
16const RECHARGE_EPSILON_S: f64 = 0.0005;
18
19mod categories;
20mod charges;
21mod rates;
22mod recharge;
23
24use categories::{start_one_charge_category, start_regular_category};
25use charges::{
26 charge_pool_members, charge_pool_owner, consume_charge, reduce_charged_cooldown, spell_at,
27 sync_charge_pool,
28};
29pub(crate) use charges::{grant_charges, sync_max_charges};
30pub(crate) use rates::sync_recharge_rates;
31use rates::{effective_category_cooldown_ms, effective_cooldown_ms, effective_recharge_ms};
32pub(crate) use recharge::{
33 check_recharge, mutate_cooldown, reduce_cooldown, reset_cooldown, start_cooldown,
34 start_cooldown_in_slot,
35};
36use recharge::{project_members, project_ready_at};
37
38#[cfg(test)]
39#[path = "cooldowns/dbc_tests.rs"]
40mod dbc_tests;
41
42#[cfg(test)]
43#[path = "cooldowns/effect_tests.rs"]
44mod effect_tests;
45
46#[cfg(test)]
47#[path = "cooldowns/tests.rs"]
48mod tests;