Function ability_profile_from_info

Source
pub fn ability_profile_from_info(
    damage: Option<f64>,
    dot: Option<f64>,
    hot: Option<f64>,
    vampiric: Option<f64>,
    projectiles: Option<i64>,
    cooldown_sec: f64,
) -> AbilityCombatProfile
Expand description

Pure split of an crate::mechanics::content::AbilityInfo budget into the (dps_add, heal_add) axes. Separated from the config lookup so the arithmetic is unit-testable without prod ability UUIDs.

damage/dot/hot in AbilityInfo are per-cast budgets (the closures split ability_damage_from_rarity = eff·k·cd), so dividing by cd yields per-second throughput eff·k·share. vampiric heals a fraction of damage dealt. crit_chance_bonus/effect_duration buff components are dropped (conservative): their budget share was already subtracted from damage by the content closures, so ignoring them under-counts slightly rather than double-counting.