void JustDied(Unit* /*killer*/) { ResetMinions(); RemoveShadowGaleDebuffFromPlayers(); me->MonsterYell(SAY_DEATH, LANG_UNIVERSAL, NULL); }
void Reset() { me->GetMotionMaster()->MoveTargetedHome(); events.Reset(); ResetMinions(); RemoveShadowGaleDebuffFromPlayers(); }
void UpdateAI(const uint32 diff) { if (!UpdateVictim() || me->HasUnitState(UNIT_STAT_CASTING)) return; if(ShouldSummonAdds) { // Despawns the Stalker DespawnCreatures(NPC_SHADOW_GALE_STALKER); RemoveShadowGaleDebuffFromPlayers(); me->SetReactState(REACT_AGGRESSIVE); me->GetMotionMaster()->Clear(); me->GetMotionMaster()->MoveChase(me->getVictim()); if ((rand()%2)) me->MonsterYell(SAY_SUMMON, LANG_UNIVERSAL, NULL); //Adds a visual portal effect to the Stalker if (FacelessPortalStalker) FacelessPortalStalker->GetAI()->DoCast(FacelessPortalStalker,SPELL_TWILIGHT_PORTAL_VISUAL,true); events.ScheduleEvent(EVENT_REMOVE_TWILIGHT_PORTAL, 7000); //Summons Faceless over the Spell if (FacelessPortalStalker) FacelessPortalStalker->GetAI()->DoCast(FacelessPortalStalker,SPELL_SPAWN_FACELESS,true); ShouldSummonAdds = false; // DBM says that the Spell has 40s CD events.ScheduleEvent(EVENT_SHADOW_GALE, urand(40000,44000)); } events.Update(diff); while (uint32 eventId = events.ExecuteEvent()) { switch (eventId) { case EVENT_ENFEEBLING_BLOW: DoCastVictim(SPELL_ENFEEBLING_BLOW); events.ScheduleEvent(EVENT_ENFEEBLING_BLOW, urand(19000,24000)); break; case EVENT_SHADOW_GALE: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0, true, 0)) { ShadowGaleTrigger = me->SummonCreature(NPC_SHADOW_GALE_STALKER, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), target->GetOrientation(), TEMPSUMMON_CORPSE_DESPAWN); me->SetReactState(REACT_PASSIVE); me->GetMotionMaster()->MovePoint(POINT_ERUDAX_IS_AT_STALKER, -739.665f, -827.024f, 232.412f); me->MonsterYell(SAY_GALE, LANG_UNIVERSAL, NULL); } break; case EVENT_REMOVE_TWILIGHT_PORTAL: //Removes Portal effect from Stalker FacelessPortalStalker->RemoveAllAuras(); break; case EVENT_BINDING_SHADOWS: if (Unit* tempTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 500.0f, true)) DoCast(tempTarget,SPELL_BINDING_SHADOWS); events.ScheduleEvent(EVENT_BINDING_SHADOWS, urand(12000,17000)); break; default: break; } } DoMeleeAttackIfReady(); }
void JustDied(Unit* /*killer*/) { ResetMinions(); RemoveShadowGaleDebuffFromPlayers(); // Talk(SAY_DEATH); }
void JustDied(Unit* /*killer*/) { ResetMinions(); RemoveShadowGaleDebuffFromPlayers(); DoScriptText(SAY_DEATH, me); }