506 switch (spellInfo->
Id)
537 switch (spellInfo->
Id)
651 statue->ResetDoorOrButton();
654 statue->ResetDoorOrButton();
657 window->ResetDoorOrButton();
759 object->UseDoorOrButton();
762 object->UseDoorOrButton();
773 std::vector<Creature*> triggers;
779 object->UseDoorOrButton();
807 std::vector<Creature*> triggers;
817 std::vector<Creature*> triggers;
827 std::vector<Creature*> triggers;
837 std::vector<Creature*> triggersGroup1;
839 for (
Creature* trigger : triggersGroup1)
843 std::vector<Creature*> triggersGroup2;
845 for (
Creature* trigger : triggersGroup2)
849 std::vector<Creature*> triggersGroup3;
851 for (
Creature* trigger : triggersGroup3)
1088 me->RemoveAurasDueToSpell(SPELL_PERMANENT_FEIGN_DEATH);
1089 me->SetReactState(REACT_PASSIVE);
1090 task.Repeat(2500ms);
1093 me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
1094 me->SetReactState(REACT_AGGRESSIVE);
1097 HasRessurrected = true;
1098 IsFeigningDeath = false;
1454 _summons.DespawnAll();
1455 me->RemoveAurasDueToSpell(SPELL_EMBER_BLAST);
1456 me->RemoveAurasDueToSpell(SPELL_SUMMON_PHOENIX_EGG);
1460 me->SetStandState(UNIT_STAND_STATE_STAND);
1461 DoCastSelf(SPELL_REBIRTH_RESPAWN);
1465 _isDepleted = false;
1466 DoCastSelf(SPELL_FULL_HEAL);
1467 DoCastSelf(SPELL_BURN_PERIODIC);
1468 me->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
1472 me->SetReactState(REACT_AGGRESSIVE);
1510 kaelthas->AI()->JustSummoned(
me);
1549 targets.remove(
GetCaster()->GetVictim());
1615 if (targets.empty())
1621 targets.push_back(target);
2001 std::vector<Unit*> targets;
2002 for (
ThreatReference const* ref : caster->GetThreatManager().GetUnsortedThreatList())
2003 targets.push_back(ref->GetVictim());
2007 for (
Unit* target : targets)
First const & RAND(First const &first, Second const &second, Rest const &... rest)
DBCStorage< SoundEntriesEntry > sSoundEntriesStore(SoundEntriesfmt)
float frand(float min, float max)
bool roll_chance_i(int chance)
#define RegisterSpellAndAuraScriptPair(script_1, script_2)
#define RegisterSpellScript(spell_script)
void GetCreatureListWithOptionsInGrid(Container &container, WorldObject *source, float maxSearchRange, FindCreatureOptions const &options)
@ SPELL_EFFECT_SCRIPT_EFFECT
@ TARGET_DEST_CASTER_FRONT
@ TARGET_DEST_CASTER_LEFT
@ TARGET_UNIT_SRC_AREA_ENTRY
@ TARGET_DEST_CASTER_RIGHT
@ TARGET_DEST_CASTER_BACK
@ TARGET_UNIT_SRC_AREA_ENEMY
@ AURA_EFFECT_HANDLE_REAL
@ SPELL_AURA_PERIODIC_DUMMY
@ SPELL_AURA_PERIODIC_TRIGGER_SPELL
@ TRIGGERED_FULL_MASK
Will return SPELL_FAILED_DONT_REPORT in CheckCast functions.
@ TRIGGERED_IGNORE_POWER_AND_REAGENT_COST
Will ignore Spell and Category cooldowns.
#define SpellEffectFn(F, I, N)
#define SpellObjectAreaTargetSelectFn(F, I, N)
#define AuraEffectPeriodicFn(F, I, N)
#define SpellDestinationTargetSelectFn(F, I, N)
#define AuraEffectAbsorbFn(F, I)
#define AuraEffectApplyFn(F, I, N, M)
#define AuraEffectRemoveFn(F, I, N, M)
@ UNIT_FLAG_UNINTERACTIBLE
@ SOUND_PRECAST_FROST_HIGH
@ SOUND_GHOSTLY_STRIKE_IMPACT
@ SOUND_PRECAST_NATURE_LOW
Position const TransitionStartPos
Position const TransitionDownPos
static constexpr std::array< uint32, 4 > SummonNetherVaporSpells
@ COMBAT_STAGE_PHASE_5_GRAVITY
@ COMBAT_STAGE_PHASE_5_INITIAL
@ COMBAT_STAGE_PHASE_5_GROUND
static constexpr std::array< uint32, 7 > RemoveWeaponsSpells
@ SPELL_SUMMON_NETHER_VAPOR_3
@ SPELL_CAPERNIAN_FIREBALL
@ SPELL_PURE_NETHER_BEAM_SCRIPT_3
@ SPELL_GRAVITY_LAPSE_TELE_BACK
@ SPELL_PURE_NETHER_BEAM_2
@ SPELL_GRAVITY_LAPSE_TELE_CASTER_BACK_RIGHT
@ SPELL_GRAVITY_LAPSE_TELE_CASTER_BACK_RIGHT3
@ SPELL_FLAME_STRIKE_DAMAGE
@ SPELL_GRAVITY_LAPSE_FLIGHT_AURA
@ SPELL_GRAVITY_LAPSE_TELE_BACK_LEFT
@ SPELL_GRAVITY_LAPSE_PERIODIC
@ SPELL_GRAVITY_LAPSE_TELE_CASTER_RIGHT
@ SPELL_GRAVITY_LAPSE_TELE_CASTER_BACK_RIGHT2
@ SPELL_NETHER_BEAM_CHAIN
@ SPELL_GRAVITY_LAPSE_TELE_FRONT_RIGHT
@ SPELL_GRAVITY_LAPSE_TELE_CASTER_LEFT
@ SPELL_SUMMON_NETHER_VAPOR
@ SPELL_PURE_NETHER_BEAM_SCRIPT_1
@ SPELL_ARCANE_DISRUPTION
@ SPELL_GRAVITY_LAPSE_TELE_FRONT_LEFT
@ SPELL_GRAVITY_LAPSE_TELE_CASTER_FRONT2
@ SPELL_SUMMON_NETHER_VAPOR_4
@ SPELL_GRAVITY_LAPSE_TELE_FRONT_LEFT3
@ SPELL_SUMMON_NETHER_VAPOR_1
@ SPELL_NETHER_VAPOR_SCRIPT
@ SPELL_GRAVITY_LAPSE_TELE_CASTER_BACK_LEFT2
@ SPELL_GRAVITY_LAPSE_TELE_CASTER_FRONT_RIGHT
@ SPELL_GRAVITY_LAPSE_TELE_CASTER_BACK_LEFT
@ SPELL_NETHERBEAM_CHANNEL_1
@ SPELL_SUMMON_NETHER_VAPOR_2
@ SPELL_SHOCK_BARRIER_DAMAGE
@ SPELL_GRAVITY_LAPSE_KNOCK_BACK
@ SPELL_GRAVITY_LAPSE_TELE_FRONT
@ SPELL_GRAVITY_LAPSE_TELE_CASTER_FRONT
@ SPELL_GRAVITY_LAPSE_TELE_CASTER_LEFT2
@ SPELL_NETHER_VAPOR_DAMAGE
@ SPELL_NETHER_VAPOR_LIGHTNING
@ SPELL_GRAVITY_LAPSE_TELE_TO_CASTER
@ SPELL_PURE_NETHER_BEAM_1
@ SPELL_GRAVITY_LAPSE_TELE_CASTER_BACK
@ SPELL_GRAVITY_LAPSE_TELE_FRONT_RIGHT2
@ SPELL_GRAVITY_LAPSE_TELE_CASTER_RIGHT2
@ SPELL_GRAVITY_LAPSE_TELE_FRONT_LEFT2
@ SPELL_PURE_NETHER_BEAM_3
@ SPELL_PERMANENT_FEIGN_DEATH
@ SPELL_SUMMON_PHOENIX_EGG
@ SPELL_PURE_NETHER_BEAM_SCRIPT_2
@ SPELL_GRAVITY_LAPSE_TELE_CASTER_FRONT_LEFT
@ SPELL_GRAVITY_LAPSE_TELE_CASTER_BACK2
@ SPELL_KAEL_GAINING_POWER
@ SPELL_NETHERBEAM_CHANNEL_2
@ SPELL_GRAVITY_LAPSE_TELE_CASTER_LEFT3
@ SPELL_FLAME_STRIKE_DUMMY
void AddSC_boss_kaelthas()
Position const TransitionUpPos
static constexpr std::array< uint32, 4 > AdvisorsSpawnGroupsData
@ ACTION_RESET_CONTROLLER
@ ACTION_ADVISOR_DEFEATED
@ EVENT_START_ENCOUNTER_1
@ EVENT_SUMMON_NETHER_VAPOR
@ EVENT_ARCANE_DISRUPTION
@ EVENT_REVIVE_ADVISORS_2
@ EVENT_REVIVE_ADVISORS_1
@ EVENT_START_ENCOUNTER_3
@ EVENT_START_ENCOUNTER_2
static constexpr std::array< uint32, 25 > GravityLapseSpells
static constexpr std::array< uint32, 7 > SummonWeaponsSpells
uint32 GetTickNumber() const
HookList< EffectApplyHandler > AfterEffectRemove
HookList< EffectPeriodicHandler > OnEffectPeriodic
HookList< EffectApplyHandler > AfterEffectApply
HookList< EffectAbsorbHandler > AfterEffectAbsorb
InstanceScript *const instance
void JustEngagedWith(Unit *who) override
void _DespawnAtEvade(Seconds delayToRespawn=30s, Creature *who=nullptr)
void DoZoneInCombat(Creature *creature=nullptr)
void SetImmuneToPC(bool apply) override
void SetReactState(ReactStates st)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
void SetRegenerateHealth(bool value)
void SetCorpseDelay(uint32 delay, bool ignoreCorpseDecayRatio=false)
Unit * GetAttacker() const
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)
Creature * GetCreature(uint32 type)
GameObject * GetGameObject(uint32 type)
bool SpawnGroupSpawn(uint32 groupId, bool ignoreRespawn=false, bool force=false, std::vector< WorldObject * > *spawnedObjects=nullptr)
bool SpawnGroupDespawn(uint32 groupId, bool deleteRespawnTimes=false, size_t *count=nullptr)
void MovePoint(uint32 id, Position const &pos, bool generatePath=true, Optional< float > finalOrient={})
void MoveRandom(float wanderDistance=0.0f)
int32 CalcValue(WorldObject const *caster=nullptr, int32 const *basePoints=nullptr) const
SpellEffectInfo const & GetEffect(SpellEffIndex index) const
HookList< DestinationTargetSelectHandler > OnDestinationTargetSelect
HookList< EffectHandler > OnEffectHit
Unit * GetHitUnit() const
HookList< EffectHandler > OnEffectHitTarget
HookList< EffectHandler > OnEffectLaunchTarget
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
void Summon(Creature const *summon)
TaskContext & Repeat(std::chrono::duration< _Rep, _Period > const &duration)
TaskScheduler::repeated_t GetRepeatCounter() const
Returns the repeat counter which increases every time the task is repeated.
TaskScheduler & CancelAll()
TaskScheduler & Schedule(std::chrono::duration< _Rep, _Period > const &time, task_handler_t const &task)
TaskScheduler & Update(success_t const &callback=EmptyCallback)
TaskScheduler & SetValidator(P &&predicate)
Sets a validator which is asked if tasks are allowed to be executed.
Trinity::IteratorPair< ThreatListIterator, std::nullptr_t > GetUnsortedThreatList() const
void AttackStartCaster(Unit *victim, float dist)
void DoMeleeAttackIfReady()
SpellCastResult DoCastSelf(uint32 spellId, CastSpellExtraArgs const &args={})
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)
SpellCastResult DoCast(uint32 spellId)
static uint32 DealDamage(Unit *attacker, Unit *victim, uint32 damage, CleanDamage const *cleanDamage=nullptr, DamageEffectType damagetype=DIRECT_DAMAGE, SpellSchoolMask damageSchoolMask=SPELL_SCHOOL_MASK_NORMAL, SpellInfo const *spellProto=nullptr, bool durabilityLoss=true)
ThreatManager & GetThreatManager()
void InterruptNonMeleeSpells(bool withDelayed, uint32 spellid=0, bool withInstant=true)
MotionMaster * GetMotionMaster()
bool SetHover(bool enable, bool updateAnimTier=true)
bool SetDisableGravity(bool disable, bool updateAnimTier=true)
void SendPlaySpellVisualKit(uint32 id, uint32 type) const
bool SetWalk(bool enable)
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint8 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
bool HasUnitState(const uint32 f) const
void SetFacingTo(float ori, bool force=true, uint32 movementId=EVENT_FACE)
uint32 CountPctFromMaxHealth(int32 pct) const
void SetStandState(UnitStandStateType state)
bool HealthBelowPctDamaged(int32 pct, uint32 damage) const
void SetUnitFlag(UnitFlags flags)
void RemoveUnitFlag(UnitFlags flags)
Creature * FindNearestCreatureWithOptions(float range, FindCreatureOptions const &options) const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
bool IsValidAttackTarget(WorldObject const *target, SpellInfo const *bySpell=nullptr) const
float GetDistance2d(WorldObject const *obj) const
bool IsWithinDistInMap(WorldObject const *obj, float dist2compare, bool is3D=true, bool incOwnRadius=true, bool incTargetRadius=true) const
void PlayDirectSound(uint32 soundId, Player *target=nullptr)
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
void HandleScript(SpellEffIndex)
PrepareSpellScript(spell_kaelthas_explodes)
bool Validate(SpellInfo const *) override
void AfterRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
PrepareAuraScript(spell_kaelthas_flame_strike)
PrepareAuraScript(spell_kaelthas_gaining_power)
void AfterApply(AuraEffect const *, AuraEffectHandleModes)
void OnPeriodic(AuraEffect const *aurEff)
bool Validate(SpellInfo const *) override
PrepareAuraScript(spell_kaelthas_gravity_lapse_periodic)
void OnPeriodic(AuraEffect const *)
bool Validate(SpellInfo const *) override
spell_kaelthas_gravity_lapse()
PrepareSpellScript(spell_kaelthas_gravity_lapse)
bool Validate(SpellInfo const *) override
void HandleScript(SpellEffIndex)
void AfterRemove(AuraEffect const *, AuraEffectHandleModes)
PrepareAuraScript(spell_kaelthas_mind_control_aura)
bool Validate(SpellInfo const *) override
void AfterApply(AuraEffect const *, AuraEffectHandleModes)
PrepareSpellScript(spell_kaelthas_mind_control)
void FilterTargets(std::list< WorldObject * > &targets)
PrepareSpellScript(spell_kaelthas_nether_beam)
bool Validate(SpellInfo const *) override
void HandleScript(SpellEffIndex)
PrepareAuraScript(spell_kaelthas_nether_vapor_lightning)
bool Validate(SpellInfo const *spellInfo) override
void OnPeriodic(AuraEffect const *aurEff)
PrepareSpellScript(spell_kaelthas_pure_nether_beam_visual)
void HandleDummy(SpellEffIndex)
void HandleScript(SpellEffIndex)
PrepareSpellScript(spell_kaelthas_pure_nether_beam)
void FilterTargets(std::list< WorldObject * > &targets)
bool Validate(SpellInfo const *) override
PrepareSpellScript(spell_kaelthas_pyroblast)
void FilterTargets(std::list< WorldObject * > &targets)
PrepareAuraScript(spell_kaelthas_remote_toy)
void HandlePeriodic(AuraEffect const *)
bool Validate(SpellInfo const *) override
void HandleScript(SpellEffIndex)
PrepareSpellScript(spell_kaelthas_remove_weapons)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void OnAbsorb(AuraEffect *aurEff, DamageInfo &dmgInfo, uint32 &absorbAmount)
PrepareAuraScript(spell_kaelthas_shock_barrier)
void SetDest(SpellDestination &dest)
PrepareSpellScript(spell_kaelthas_summon_nether_vapor_effect)
bool Validate(SpellInfo const *) override
PrepareSpellScript(spell_kaelthas_summon_nether_vapor)
void HandleScript(SpellEffIndex)
PrepareSpellScript(spell_kaelthas_summon_weapons)
bool Validate(SpellInfo const *) override
void HandleScript(SpellEffIndex)
void RandomResize(C &container, std::size_t requestedSize)
bool IsEnemyInRange(float distance)
void DamageTaken(Unit *, uint32 &damage, DamageEffectType, SpellInfo const *) override
void InitializeAI() override
void DoInformController()
void JustEngagedWith(Unit *) override
void SpellHit(WorldObject *, SpellInfo const *spellInfo) override
AdvisorBaseAI(Creature *creature)
void JustDied(Unit *) override
void DoAction(int32 action) override
virtual void ScheduleEvents()=0
void UpdateAI(uint32 diff) override
float GetPositionZ() const
float GetAbsoluteAngle(float x, float y) const
void ResetThreatList(Unit *who=nullptr)
void AddThreat(Unit *victim, float amount, Unit *who=nullptr)
void RelocateOffset(Position const &offset)
boss_grand_astromancer_capernian(Creature *creature)
void AttackStart(Unit *who) override
void JustDied(Unit *killer) override
void ScheduleEvents() override
void JustEngagedWith(Unit *who) override
void JustAppeared() override
void JustEngagedWith(Unit *who) override
void ScheduleCombatEventsForStage(uint8 stage)
boss_kaelthas(Creature *creature)
void KilledUnit(Unit *) override
void JustDied(Unit *) override
void OnSpellStart(SpellInfo const *spellInfo) override
void MoveInLineOfSight(Unit *who) override
bool _isPerformingPyroblast
void JustSummoned(Creature *summon) override
void UpdateAI(uint32 diff) override
void OnSpellFailed(SpellInfo const *spellInfo) override
void EnterEvadeMode(EvadeReason) override
void DamageTaken(Unit *, uint32 &damage, DamageEffectType, SpellInfo const *) override
void MovementInform(uint32 type, uint32 point) override
void AttackStart(Unit *who) override
void SpellHit(WorldObject *, SpellInfo const *spellInfo) override
bool _isTransitionStarted
void DoAction(int32 action) override
void OnSpellCast(SpellInfo const *spellInfo) override
void ScheduleEvents() override
boss_lord_sanguinar(Creature *creature)
void JustEngagedWith(Unit *who) override
void JustDied(Unit *killer) override
void JustDied(Unit *killer) override
void JustEngagedWith(Unit *who) override
boss_master_engineer_telonicus(Creature *creature)
void ScheduleEvents() override
void AttackStart(Unit *who) override
void JustEngagedWith(Unit *who) override
void JustDied(Unit *killer) override
void ScheduleEvents() override
boss_thaladred_the_darkener(Creature *creature)
npc_flame_strike_trigger_kael(Creature *creature)
void InitializeAI() override
void JustAppeared() override
InstanceScript * _instance
uint8 _defeatedAdvisorCounter
void DoAction(int32 action) override
void UpdateAI(uint32 diff) override
npc_kaelthas_controller(Creature *creature)
void InitializeAI() override
npc_nether_vapor(Creature *creature)
void JustAppeared() override
void JustAppeared() override
InstanceScript * _instance
npc_phoenix_egg_the_eye(Creature *creature)
void InitializeAI() override
void JustSummoned(Creature *summon) override
void DamageTaken(Unit *, uint32 &damage, DamageEffectType, SpellInfo const *) override
npc_phoenix_the_eye(Creature *creature)
void SummonedCreatureDies(Creature *, Unit *) override
void InitializeAI() override
void OnSpellCast(SpellInfo const *spellInfo) override
void UpdateAI(uint32 diff) override
void JustAppeared() override
#define RegisterTheEyeCreatureAI(ai_name)
@ DATA_TEMPEST_BRIDGE_WINDOW