Example #1
0
		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();
			}
		}
Example #2
0
            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);
            }