wowlab_engine_content/hooks/items/
aberrant_spellforge.rs1use wowlab_engine_combat::{DamageFlags, DamageOps as _, HookCtx};
2use wowlab_engine_domain::dbc::ResolvedGameDataEffectExt as _;
3
4use crate::{
5 generated::items::aberrant_spellforge::{AURA, EFFECT, SPELL},
6 hooks::items::consume_equip_stacks,
7};
8
9const PER_CHARGE_MULTIPLIER: f64 = 1.25;
10
11pub(crate) fn on_cast_use(ctx: &mut HookCtx<'_>) {
12 let charges = consume_equip_stacks(ctx, AURA::EQUIP);
13
14 let base_coef = ctx.game_data().effect_sp_coefficient(EFFECT::USE_DAMAGE);
15 let scale = PER_CHARGE_MULTIPLIER.powi(charges);
16 let coef = base_coef * scale;
17
18 ctx.deal_damage_sp(SPELL::USE, coef, DamageFlags::empty());
19}