180 {1642.482f, -164.0812f, 427.2602f, 0.0f},
181 {1635.000f, -169.5145f, 427.2523f, 0.0f},
182 {1632.814f, -173.9334f, 427.2621f, 0.0f},
183 {1632.676f, -190.5927f, 425.8831f, 0.0f},
184 {1631.497f, -214.2221f, 418.1152f, 0.0f},
185 {1624.717f, -224.6876f, 418.1152f, 0.0f},
186 {1631.497f, -214.2221f, 418.1152f, 0.0f},
187 {1632.676f, -190.5927f, 425.8831f, 0.0f},
188 {1632.814f, -173.9334f, 427.2621f, 0.0f},
189 {1635.000f, -169.5145f, 427.2523f, 0.0f},
194#define LIVING_CONSTELLATION_COUNT 11
197 {1625.208f, -267.2771f, 446.4296f, 5.044002f},
198 {1658.279f, -262.5490f, 441.9073f, 4.188790f},
199 {1678.677f, -276.3280f, 427.7531f, 3.979351f},
200 {1593.389f, -299.4325f, 432.4636f, 6.073746f},
201 {1685.613f, -300.1219f, 443.2366f, 3.385939f},
202 {1591.706f, -263.8201f, 441.4153f, 5.253441f},
203 {1668.317f, -324.7676f, 457.9394f, 3.211406f},
204 {1592.242f, -325.5323f, 446.9508f, 0.226893f},
205 {1635.821f, -363.3442f, 424.3459f, 1.466077f},
206 {1672.188f, -357.2484f, 436.7337f, 2.338741f},
207 {1615.800f, -348.0065f, 442.9586f, 1.134464f},
210#define COLLAPSING_STAR_COUNT 4
213 {1649.438f, -319.8127f, 418.3941f, 1.082104f},
214 {1647.005f, -288.6790f, 417.3955f, 3.490659f},
215 {1622.451f, -321.1563f, 417.6188f, 4.677482f},
216 {1615.060f, -291.6816f, 417.7796f, 3.490659f},
221 {1632.023f, -243.7434f, 417.9118f, 0.0f},
222 {1631.986f, -297.7831f, 417.3210f, 0.0f},
223 {1633.832f, -216.2948f, 417.0463f, 0.0f},
239 _owner->m_Events.AddEvent(
this, execTime + std::rand() % 50000 + 45000);
275 _caster->m_Events.AddEvent(
this, execTime + 30000);
326 me->SetDisableGravity(
true);
351 if (
me->IsInCombat())
356 me->DespawnOrUnsummon(34000);
407 std::list<Creature*> stalkers;
409 for (std::list<Creature*>::iterator itr = stalkers.begin(); itr != stalkers.end(); ++itr)
410 (*itr)->m_Events.KillAllEvents(
true);
419 me->SetDisableGravity(
false);
422 me->SetFacingTo(1.605703f);
438 switch (summon->GetEntry())
445 summon->GetMotionMaster()->MoveRandom(20.0f);
471 if (summon->Attack(target,
true))
472 summon->GetMotionMaster()->MoveChase(target);
493 if (!
_phaseTwo &&
me->HealthBelowPctDamaged(20, damage))
502 std::list<Creature*> stalkers;
504 for (std::list<Creature*>::iterator itr = stalkers.begin(); itr != stalkers.end(); ++itr)
505 (*itr)->m_Events.KillAllEvents(
true);
508 wormHole->m_Events.AddEvent(
new SummonUnleashedDarkMatter(wormHole), wormHole->m_Events.CalculateTime(i >= 2 ? 8000 : 6000));
571 if (!
me->getThreatManager().isThreatListEmpty())
577 std::list<Creature*> stalkers;
579 if (!stalkers.empty())
606 std::list<Creature*> constellations;
608 for (std::list<Creature*>::iterator itr = constellations.begin(); itr != constellations.end(); ++itr)
638 me->RemoveAllAuras();
676 me->DespawnOrUnsummon(1500);
751 me->DespawnOrUnsummon(1);
755 caster->ToCreature()->DespawnOrUnsummon(1);
810 algalon->AI()->JustSummoned(summon);
812 me->DespawnOrUnsummon(1);
823 if (damage >=
me->GetHealth())
893 me->DespawnOrUnsummon(1);
967 if (player->HasItemCount(lock->Index[i]))
1255 Position offset = {0.0f, 0.0f, 65.0f, 0.0f};
1287 if (distance > 6.0f)
@ ACHIEVEMENT_TIMED_TYPE_EVENT
@ ACHIEVEMENT_CRITERIA_CONDITION_NO_SPELL_HIT
@ ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET
DBCStorage< LockEntry > sLockStore(LockEntryfmt)
@ TEMPSUMMON_MANUAL_DESPAWN
@ TEMPSUMMON_CORPSE_DESPAWN
@ TEMPSUMMON_TIMED_DESPAWN
@ TEMPSUMMON_DEAD_DESPAWN
@ TARGET_UNIT_SRC_AREA_ENTRY
@ TARGET_UNIT_SRC_AREA_ENEMY
@ SPELL_AURA_PERIODIC_DUMMY
@ SPELL_AURA_PERIODIC_TRIGGER_SPELL
@ AURA_EFFECT_HANDLE_REAL
#define SpellEffectFn(F, I, N)
#define SpellObjectAreaTargetSelectFn(F, I, N)
#define AuraEffectPeriodicFn(F, I, N)
#define AuraEffectRemoveFn(F, I, N, M)
@ TRIGGERED_FULL_MASK
Will ignore most target checks (mostly DBC target checks).
@ UNIT_FLAG_IMMUNE_TO_NPC
@ UNIT_FLAG_NOT_SELECTABLE
T CalculatePct(T base, U pct)
Position const AlgalonLandPos
Position const AlgalonOutroPos
Position const BrannIntroWaypoint[MAX_BRANN_WAYPOINTS_INTRO]
Position const CollapsingStarPos[COLLAPSING_STAR_COUNT]
void AddSC_boss_algalon_the_observer()
@ MAX_BRANN_WAYPOINTS_INTRO
@ SPELL_CONSTELLATION_PHASE_EFFECT
@ SPELL_BLACK_HOLE_CREDIT
@ SPELL_SUPERMASSIVE_FAIL
@ SPELL_BLACK_HOLE_TRIGGER
@ SPELL_SUMMON_UNLEASHED_DARK_MATTER
@ SPELL_WORM_HOLE_TRIGGER
@ SPELL_RIDE_THE_LIGHTNING
@ SPELL_BLACK_HOLE_EXPLOSION
@ SPELL_COSMIC_SMASH_TRIGGERED
@ SPELL_ASCEND_TO_THE_HEAVENS
@ SPELL_CONSTELLATION_PHASE_TRIGGER
@ SPELL_SUMMON_BLACK_HOLE
@ SPELL_SUMMON_VOID_ZONE_VISUAL
@ SPELL_BLACK_HOLE_SPAWN_VISUAL
@ SPELL_COSMIC_SMASH_VISUAL_STATE
uint32 const PhasePunchAlphaId[5]
#define LIVING_CONSTELLATION_COUNT
@ EVENT_ID_SUPERMASSIVE_START
#define COLLAPSING_STAR_COUNT
Position const ConstellationPos[LIVING_CONSTELLATION_COUNT]
@ SAY_BRANN_ALGALON_INTRO_1
@ EMOTE_ALGALON_COSMIC_SMASH
@ SAY_ALGALON_COLLAPSING_STAR
@ EMOTE_ALGALON_COLLAPSING_STAR
@ SAY_BRANN_ALGALON_INTRO_2
@ SAY_ALGALON_START_TIMER
@ SAY_BRANN_ALGALON_OUTRO
Position const AlgalonSummonPos
Position const BrannOutroPos[3]
Position const BrannIntroSpawnPos
@ EVENT_DESPAWN_ALGALON_3
@ EVENT_DESPAWN_ALGALON_2
@ EVENT_DESPAWN_ALGALON_1
@ EVENT_ASCEND_TO_THE_HEAVENS
@ EVENT_SUMMON_COLLAPSING_STAR
Position const BrannIntroWaypoint[MAX_BRANN_WAYPOINTS_INTRO]
@ MAX_BRANN_WAYPOINTS_INTRO
AchievementCriteriaScript(const char *name)
ActivateLivingConstellation(Unit *owner)
InstanceScript * _instance
bool Execute(uint64 execTime, uint32)
bool operator()(WorldObject *target) const
void PreventDefaultAction()
void Remove(uint32 removeMode=0)
HookList< EffectPeriodicHandler > OnEffectPeriodic
HookList< EffectApplyHandler > OnEffectRemove
uint8 GetStackAmount() const
InstanceScript *const instance
BossAI(Creature *creature, uint32 bossId)
bool Execute(uint64, uint32)
CosmicSmashDamageEvent(Unit *caster)
CreatureAI(Creature *creature)
void DoZoneInCombat(Creature *creature=NULL, float maxRangeToNearestTarget=50.0f)
Creature * DoSummon(uint32 entry, Position const &pos, uint32 despawnTime=30000, TempSummonType summonType=TempSummonType::TEMPSUMMON_CORPSE_TIMED_DESPAWN)
void Talk(uint8 id, WorldObject const *whisperTarget=NULL)
virtual void EnterEvadeMode()
CreatureScript(const char *name)
void AddEvent(BasicEvent *Event, uint64 e_time, bool set_addtime=true)
uint64 CalculateTime(uint64 t_offset) const
GameObjectAI(GameObject *g)
GameObjectScript(const char *name)
void MoveTo(const Vector3 &destination, bool generatePath=true, bool forceDestination=false)
void SetOrientationFixed(bool enable)
bool operator()(WorldObject *target)
NotVictimFilter(Unit *caster)
static Creature * GetCreature(WorldObject const &u, uint64 guid)
static GameObject * GetGameObject(WorldObject const &u, uint64 guid)
void ResetAchievementCriteria(AchievementCriteriaTypes type, uint64 miscValue1=0, uint64 miscValue2=0, bool evenIfCriteriaComplete=false)
Creature * GetHitCreature()
HookList< CastHandler > AfterCast
WorldLocation const * GetExplTargetDest()
SpellInfo const * GetSpellInfo()
HookList< HitHandler > OnHit
void PreventHitDefaultEffect(SpellEffIndex effIndex)
WorldLocation * GetHitDest()
void SetHitDamage(int32 damage)
HookList< EffectHandler > OnEffectLaunch
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
SpellScriptLoader(const char *name)
SummonUnleashedDarkMatter(Unit *caster)
bool Execute(uint64 execTime, uint32)
virtual void DoAction(int32)
void DoMeleeAttackIfReady()
void DoCast(uint32 spellId)
virtual uint32 GetData(uint32) const
Unit * SelectTarget(SelectAggroTarget targetType, uint32 position=0, float dist=0.0f, bool playerOnly=false, int32 aura=0)
void DoCastVictim(uint32 spellId, bool triggered=false)
void DoCastAOE(uint32 spellId, bool triggered=false)
virtual void AttackStart(Unit *)
void CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=NULL, AuraEffect const *triggeredByAura=NULL, uint64 originalCaster=0)
void RemoveAurasDueToSpell(uint32 spellId, uint64 casterGUID=0, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
uint32 DealDamage(Unit *victim, uint32 damage, CleanDamage const *cleanDamage=NULL, DamageEffectType damagetype=DIRECT_DAMAGE, SpellSchoolMask damageSchoolMask=SPELL_SCHOOL_MASK_NORMAL, SpellInfo const *spellProto=NULL, bool durabilityLoss=true)
void RemoveAurasByType(AuraType auraType, uint64 casterGUID=0, Aura *except=NULL, bool negative=true, bool positive=true)
float GetDistance2d(WorldObject const *obj) const
achievement_he_feeds_on_your_tears()
bool OnCheck(Player *, Unit *target) OVERRIDE
boss_algalon_the_observer()
CreatureAI * GetAI(Creature *creature) const OVERRIDE
go_celestial_planetarium_access()
GameObjectAI * GetAI(GameObject *go) const OVERRIDE
npc_brann_bronzebeard_algalon()
CreatureAI * GetAI(Creature *creature) const OVERRIDE
CreatureAI * GetAI(Creature *creature) const OVERRIDE
npc_living_constellation()
CreatureAI * GetAI(Creature *creature) const OVERRIDE
PrepareSpellScript(spell_algalon_arcane_barrage_SpellScript)
void SelectTarget(std::list< WorldObject * > &targets)
spell_algalon_arcane_barrage()
SpellScript * GetSpellScript() const OVERRIDE
PrepareSpellScript(spell_algalon_big_bang_SpellScript)
void CountTargets(std::list< WorldObject * > &targets)
SpellScript * GetSpellScript() const OVERRIDE
PrepareAuraScript(spell_algalon_collapse_AuraScript)
void HandlePeriodic(AuraEffect const *)
AuraScript * GetAuraScript() const OVERRIDE
PrepareSpellScript(spell_algalon_cosmic_smash_SpellScript)
void ModDestHeight(SpellEffIndex)
PrepareSpellScript(spell_algalon_cosmic_smash_damage_SpellScript)
SpellScript * GetSpellScript() const OVERRIDE
spell_algalon_cosmic_smash_damage()
SpellScript * GetSpellScript() const OVERRIDE
spell_algalon_cosmic_smash()
PrepareAuraScript(spell_algalon_phase_punch_AuraScript)
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
void HandlePeriodic(AuraEffect const *)
spell_algalon_phase_punch()
AuraScript * GetAuraScript() const OVERRIDE
void HandlePeriodic(AuraEffect const *)
PrepareAuraScript(spell_algalon_remove_phase_AuraScript)
AuraScript * GetAuraScript() const OVERRIDE
spell_algalon_remove_phase()
PrepareSpellScript(spell_algalon_supermassive_fail_SpellScript)
SpellScript * GetSpellScript() const OVERRIDE
spell_algalon_supermassive_fail()
void SelectTarget(std::list< WorldObject * > &targets)
PrepareSpellScript(spell_algalon_trigger_3_adds_SpellScript)
void HandleDummy(SpellEffIndex effIndex)
spell_algalon_trigger_3_adds()
SpellScript * GetSpellScript() const OVERRIDE
C::value_type const & SelectRandomContainerElement(C const &container)
void RelocateOffset(Position const &offset)
void AttackStart(Unit *) OVERRIDE
boss_algalon_the_observerAI(Creature *creature)
void EnterCombat(Unit *) OVERRIDE
void JustSummoned(Creature *summon) OVERRIDE
void MovementInform(uint32 movementType, uint32 pointId) OVERRIDE
void KilledUnit(Unit *victim) OVERRIDE
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
uint32 GetData(uint32 type) const OVERRIDE
void DoAction(int32 action) OVERRIDE
void EnterEvadeMode() OVERRIDE
void DamageTaken(Unit *, uint32 &damage) OVERRIDE
void UpdateAI(uint32 diff) OVERRIDE
bool GossipHello(Player *player) OVERRIDE
go_celestial_planetarium_accessAI(GameObject *go)
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
npc_brann_bronzebeard_algalonAI(Creature *creature)
void DoAction(int32 action) OVERRIDE
void MovementInform(uint32 movementType, uint32 pointId) OVERRIDE
void DamageTaken(Unit *, uint32 &damage) OVERRIDE
void JustSummoned(Creature *summon) OVERRIDE
npc_collapsing_starAI(Creature *creature)
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
npc_living_constellationAI(Creature *creature)
void DoAction(int32 action) OVERRIDE
void SpellHit(Unit *caster, SpellInfo const *spell) OVERRIDE
uint32 GetData(uint32) const OVERRIDE
@ DATA_BRANN_BRONZEBEARD_ALG
@ DATA_ALGALON_SUMMON_STATE
@ NPC_ALGALON_STALKER_ASTEROID_TARGET_01
@ NPC_UNLEASHED_DARK_MATTER
@ NPC_LIVING_CONSTELLATION
@ NPC_ALGALON_STALKER_ASTEROID_TARGET_02
@ NPC_ALGALON_VOID_ZONE_VISUAL_STALKER
@ NPC_BRANN_BRONZBEARD_ALG