void HandleOnHit() { Unit* caster = GetCaster(); if (Unit* unitTarget = GetHitUnit()) { if (Aura* aur = caster->GetAuraOfRankedSpell(15273, caster->GetGUID())) { int32 chance = aur->GetSpellInfo()->Effects[EFFECT_1].BasePoints; if (caster->GetShapeshiftForm() == FORM_SHADOW && roll_chance_i(chance)) caster->CastSpell(unitTarget, 48301, true); } // Remove Mind spike debuff unitTarget->RemoveAurasDueToSpell(87178, caster->GetGUID()); } // Shadow orbs if (AuraEffect* aurEff = caster->GetDummyAuraEffect(SPELLFAMILY_GENERIC, 4941, EFFECT_0)) { uint8 stacks = aurEff->GetBase()->GetStackAmount(); int32 amount = aurEff->GetAmount() / (2.0f * stacks); if (AuraEffect* mastery = caster->GetAuraEffect(77486, EFFECT_0)) amount += mastery->GetAmount(); caster->CastCustomSpell(caster, 95799, &amount, &amount, NULL, true); aurEff->GetBase()->Remove(); } }
void ApplyEffect(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { Unit* caster = GetCaster(); if (!caster) return; if (caster->GetAuraOfRankedSpell(SPELL_DRUID_NATURES_GRACE)) caster->GetSpellHistory()->ResetCooldown(SPELL_DRUID_NATURES_GRACE_TRIGGER, true); }