void HandleSpikes(uint effIndex) { PreventHitDefaultEffect(effIndex); Creature marrowgar = GetCaster().ToCreature(); if (marrowgar) { CreatureAI marrowgarAI = marrowgar.GetAI(); byte boneSpikeCount = (byte)(Convert.ToBoolean((int)GetCaster().GetMap().GetSpawnMode() & 1) ? 3 : 1); List <Unit> targets = marrowgarAI.SelectTargetList(new BoneSpikeTargetSelector(marrowgarAI), boneSpikeCount, SelectAggroTarget.Random); if (targets.Empty()) { return; } uint i = 0; foreach (var target in targets) { target.CastSpell(target, Misc.BoneSpikeSummonId[i], true); i++; } marrowgarAI.Talk(Texts.SayBonespike); } }
void OnRemove(AuraEffect aurEff, AuraEffectHandleModes mode) { Unit caster = GetCaster(); if (caster) { CreatureAI gormokAI = GetTarget().ToCreature().GetAI(); if (gormokAI != null) { Unit target = gormokAI.SelectTarget(SelectAggroTarget.Random, 0, new SnobolledTargetSelector(GetTarget())); if (target) { gormokAI.Talk(TextIds.EmoteSnobolled); caster.GetAI().DoAction(Actions.ActiveSnobold); caster.CastSpell(target, SpellIds.RidePlayer, true); } } } }
void HandleSpikes(uint effIndex) { PreventHitDefaultEffect(effIndex); Creature marrowgar = GetCaster().ToCreature(); if (marrowgar) { CreatureAI marrowgarAI = marrowgar.GetAI(); byte boneSpikeCount = (byte)(Convert.ToBoolean((int)GetCaster().GetMap().GetDifficultyID() & 1) ? 3 : 1); List <Unit> targets = marrowgarAI.SelectTargetList(boneSpikeCount, SelectAggroTarget.Random, 1, new BoneSpikeTargetSelector(marrowgarAI)); if (targets.Empty()) { return; } uint i = 0; foreach (var target in targets) { target.CastSpell(target, Misc.BoneSpikeSummonId[i], true); if (!target.IsAlive()) // make sure we don't get any stuck spikes on dead targets { Aura aura = target.GetAura(SpellIds.Impaled); if (aura != null) { Creature spike = ObjectAccessor.GetCreature(target, aura.GetCasterGUID()); if (spike != null) { spike.DespawnOrUnsummon(); } aura.Remove(); } } i++; } marrowgarAI.Talk(Texts.SayBonespike); } }