Skip to main content

wowlab_engine_content/hooks/items/
diamantine_voidcore.rs

1use wowlab_engine_combat::{AuraOps as _, DamageOps as _, HookCtx, ProcOps as _};
2
3use crate::{
4    generated::items::diamantine_voidcore::{AURA_BINDING, RPPM_BINDING},
5    hooks::items::{bound_aura, bound_rppm},
6};
7
8const MAX_SHARDS: i32 = 8;
9
10pub(crate) fn on_player_cast(ctx: &mut HookCtx<'_>) {
11    if !bound_rppm(ctx, RPPM_BINDING).is_some_and(|rppm| ctx.roll_rppm(rppm)) {
12        return;
13    }
14
15    let Some(aura) = bound_aura(ctx, AURA_BINDING::EQUIP) else {
16        return;
17    };
18
19    ctx.apply_aura(aura);
20
21    if ctx.aura_stacks(aura) >= MAX_SHARDS {
22        ctx.deal_item_damage_sp(crate::generated::items::diamantine_voidcore::DAMAGE_AURA::EQUIP);
23        ctx.expire_aura(aura);
24    }
25}