167 switch (spellInfo->
Id)
196 switch (spellInfo->
Id)
395 for (
uint8 i = 0; i < 4; ++i)
446 target->GetClosePoint(x, y, z, 0.0f, 1.0f,
float(
M_PI));
509 if (
Unit* summoner = summon->GetSummonerUnit())
First const & RAND(First const &first, Second const &second, Rest const &... rest)
bool roll_chance_i(int chance)
#define RegisterSpellScript(spell_script)
@ AURA_EFFECT_HANDLE_REAL
#define SpellEffectFn(F, I, N)
#define AuraEffectRemoveFn(F, I, N, M)
@ CURRENT_CHANNELED_SPELL
void AddSC_boss_archimonde()
static Position const NordrassilPosition
@ EVENT_GRIP_OF_THE_LEGION
@ EVENT_FINGER_OF_DEATH_COOLUP
@ EVENT_FINGER_OF_DEATH_NPC
@ EVENT_UNLEASH_SOUL_YELLOW
@ EVENT_UNLEASH_SOUL_GREEN
@ EVENT_FINGER_OF_DEATH_PLAYER
static Position const EpiloguePosition
@ SPELL_FINGER_OF_DEATH_NPC
@ SPELL_PROTECTION_OF_ELUNE
@ SPELL_FINGER_OF_DEATH_PLAYER
@ SPELL_UNLEASH_SOUL_GREEN
@ SPELL_DRAIN_WORLD_TREE_VISUAL_2
@ SPELL_SOUL_CHARGE_GREEN
@ SPELL_FINGER_OF_DEATH_COOLUP
@ SPELL_RESIDUE_OF_ETERNITY
@ SPELL_GRIP_OF_THE_LEGION
@ SPELL_UNLEASH_SOUL_YELLOW
@ SPELL_DRAIN_WORLD_TREE_VISUAL
@ SPELL_SOUL_CHARGE_YELLOW
HookList< EffectApplyHandler > AfterEffectRemove
void JustEngagedWith(Unit *who) override
void _DespawnAtEvade(Seconds delayToRespawn=30s, Creature *who=nullptr)
void SetReactState(ReactStates st)
void SetCorpseDelay(uint32 delay, bool ignoreCorpseDecayRatio=false)
void Repeat(Milliseconds time)
void RescheduleEvent(EventId eventId, Milliseconds time, GroupIndex group=0u, PhaseIndex phase=0u)
void CancelEvent(EventId eventId)
void ScheduleEvent(EventId eventId, Milliseconds time, GroupIndex group=0u, PhaseIndex phase=0u)
void MovePoint(uint32 id, Position const &pos, bool generatePath=true, Optional< float > finalOrient={})
static ObjectGuid GetGUID(Object const *o)
Unit * GetHitUnit() const
HookList< EffectHandler > OnEffectHitTarget
TaskContext & Repeat(std::chrono::duration< _Rep, _Period > const &duration)
TaskScheduler & CancelAll()
TaskScheduler & Schedule(std::chrono::duration< _Rep, _Period > const &time, task_handler_t const &task)
TaskScheduler & Update(success_t const &callback=EmptyCallback)
void DoMeleeAttackIfReady()
SpellCastResult DoCastSelf(uint32 spellId, CastSpellExtraArgs const &args={})
virtual void InitializeAI()
SpellCastResult DoCastVictim(uint32 spellId, CastSpellExtraArgs const &args={})
Unit * SelectTarget(SelectTargetMethod targetType, uint32 offset=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
virtual void SetGUID(ObjectGuid const &, int32=0)
SpellCastResult DoCast(uint32 spellId)
bool IsWithinMeleeRange(Unit const *obj) const
void SetControlled(bool apply, UnitState state)
MotionMaster * GetMotionMaster()
TempSummon * ToTempSummon()
void InterruptSpell(CurrentSpellTypes spellType, bool withDelayed=true, bool withInstant=true, SpellCastResult result=SPELL_FAILED_INTERRUPTED, Optional< SpellCastResult > resultOther={})
void RemoveAuraFromStack(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
void NearTeleportTo(Position const &pos, bool casting=false)
bool HasUnitState(const uint32 f) const
bool HealthBelowPctDamaged(int32 pct, uint32 damage) const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
void MovePositionToFirstCollision(Position &pos, float dist, float angle)
void PlayDirectMusic(uint32 musicId, Player *target=nullptr)
bool IsWithinDistInMap(WorldObject const *obj, float dist2compare, bool is3D=true, bool incOwnRadius=true, bool incTargetRadius=true) const
float GetDistance(WorldObject const *obj) const
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
PrepareSpellScript(spell_archimonde_drain_world_tree_dummy)
bool Validate(SpellInfo const *) override
void HandleDummy(SpellEffIndex)
PrepareAuraScript(spell_archimonde_eternal_silence)
void AfterRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
@ ACTION_ARCHIMONDE_INTRO
#define RegisterHyjalCreatureAI(ai_name)
TC_GAME_API Unit * GetUnit(WorldObject const &, ObjectGuid const &guid)
static float NormalizeOrientation(float o)
float GetPositionZ() const
float GetOrientation() const
float GetPositionX() const
void GetPosition(float &x, float &y) const
float GetPositionY() const
void AttackStart(Unit *) override
void DoPlaySoundToSet(WorldObject *source, uint32 soundId)
void JustEngagedWith(Unit *who) override
boss_archimonde(Creature *creature)
void EnterEvadeMode(EvadeReason) override
ObjectGuid _doomfireSpiritGUID
void JustSummoned(Creature *summoned) override
void OnSpellCast(SpellInfo const *spellInfo) override
void KilledUnit(Unit *victim) override
void SpellHit(WorldObject *, SpellInfo const *spellInfo) override
void DamageTaken(Unit *who, uint32 &damage, DamageEffectType, SpellInfo const *) override
void DoAction(int32 action) override
void MovementInform(uint32 type, uint32 pointId) override
void JustAppeared() override
void UpdateAI(uint32 diff) override
void UpdateAI(uint32 diff) override
npc_ancient_wisp(Creature *creature)
void JustEngagedWith(Unit *) override
void InitializeAI() override
void JustAppeared() override
npc_doomfire_spirit(Creature *creature)
void JustAppeared() override
void UpdateAI(uint32 diff) override
void InitializeAI() override
void JustAppeared() override
ObjectGuid _doomfireSpiritGUID
void SetGUID(ObjectGuid const &guid, int32 id) override
npc_doomfire(Creature *creature)
void UpdateAI(uint32 diff) override