wowlab_engine_content/hooks/items/
diamantine_voidcore.rs1use 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}