201#define LIVING_CONSTELLATION_COUNT 11
204 {1625.208f, -267.2771f, 446.4296f, 5.044002f},
205 {1658.279f, -262.5490f, 441.9073f, 4.188790f},
206 {1678.677f, -276.3280f, 427.7531f, 3.979351f},
207 {1593.389f, -299.4325f, 432.4636f, 6.073746f},
208 {1685.613f, -300.1219f, 443.2366f, 3.385939f},
209 {1591.706f, -263.8201f, 441.4153f, 5.253441f},
210 {1668.317f, -324.7676f, 457.9394f, 3.211406f},
211 {1592.242f, -325.5323f, 446.9508f, 0.226893f},
212 {1635.821f, -363.3442f, 424.3459f, 1.466077f},
213 {1672.188f, -357.2484f, 436.7337f, 2.338741f},
214 {1615.800f, -348.0065f, 442.9586f, 1.134464f}
217#define COLLAPSING_STAR_COUNT 4
220 {1649.438f, -319.8127f, 418.3941f, 1.082104f},
221 {1647.005f, -288.6790f, 417.3955f, 3.490659f},
222 {1622.451f, -321.1563f, 417.6188f, 4.677482f},
223 {1615.060f, -291.6816f, 417.7796f, 3.490659f}
321 init.SetOrientationFixed(
true);
372 introDelay = 26500ms;
385 std::list<Creature*> stalkers;
387 for (std::list<Creature*>::iterator itr = stalkers.begin(); itr != stalkers.end(); ++itr)
388 (*itr)->m_Events.KillAllEvents(
true);
460 std::list<Creature*> stalkers;
462 for (std::list<Creature*>::iterator itr = stalkers.begin(); itr != stalkers.end(); ++itr)
463 (*itr)->m_Events.KillAllEvents(
true);
563 std::list<Creature*> stalkers;
565 if (!stalkers.empty())
592 std::list<Creature*> constellations;
594 for (std::list<Creature*>::iterator itr = constellations.begin(); itr != constellations.end(); ++itr)
832 algalon->AI()->JustSummoned(summon);
1155 Position const offset = { 0.0f, 0.0f, -36.1325f, 0.0f };
1174 if (distance > 6.0f)
DB2Storage< LockEntry > sLockStore("Lock.db2", &LockLoadInfo::Instance)
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
@ SPLINE_CHAIN_MOTION_TYPE
@ TEMPSUMMON_DEAD_DESPAWN
@ TEMPSUMMON_MANUAL_DESPAWN
@ TEMPSUMMON_CORPSE_DESPAWN
Milliseconds randtime(Milliseconds min, Milliseconds max)
#define RegisterGameObjectAI(ai_name)
#define RegisterSpellScript(spell_script)
@ TARGET_UNIT_SRC_AREA_ENTRY
@ TARGET_UNIT_SRC_AREA_ENEMY
@ TARGET_DEST_CASTER_SUMMON
@ AURA_EFFECT_HANDLE_REAL
@ SPELL_AURA_PERIODIC_DUMMY
@ SPELL_AURA_PERIODIC_TRIGGER_SPELL
@ TRIGGERED_FULL_MASK
Used when doing CastSpell with triggered == true.
#define SpellEffectFn(F, I, N)
#define SpellObjectAreaTargetSelectFn(F, I, N)
#define AuraEffectPeriodicFn(F, I, N)
#define SpellDestinationTargetSelectFn(F, I, N)
#define AuraEffectApplyFn(F, I, N, M)
#define AuraEffectRemoveFn(F, I, N, M)
@ UNIT_FLAG2_DONT_FADE_IN
Position const AlgalonLandPos
Position const AlgalonOutroPos
Position const CollapsingStarPos[COLLAPSING_STAR_COUNT]
void AddSC_boss_algalon_the_observer()
Position const BrannOutroPos
@ 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_DESPAWN_BLACK_HOLE
@ 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 BrannIntroSpawnPos
@ EVENT_BRANN_SAY_INTRO_1
@ EVENT_ASCEND_TO_THE_HEAVENS
@ EVENT_SUMMON_COLLAPSING_STAR
ActivateLivingConstellation(Unit *owner)
InstanceScript * _instance
bool Execute(uint64 execTime, uint32) override
void PreventDefaultAction()
HookList< EffectPeriodicHandler > OnEffectPeriodic
SpellInfo const * GetSpellInfo() const
AuraEffect * GetEffect(uint8 effIndex) const
HookList< EffectApplyHandler > OnEffectRemove
void Remove(AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Unit * GetUnitOwner() const
uint8 GetStackAmount() const
HookList< EffectApplyHandler > OnEffectApply
InstanceScript *const instance
void JustEngagedWith(Unit *who) override
bool Execute(uint64, uint32) override
CosmicSmashDamageEvent(Unit *caster)
virtual void EnterEvadeMode(EvadeReason why=EvadeReason::Other)
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
void AttackStart(Unit *victim) override
== Triggered Actions Requested ==================
Creature * DoSummon(uint32 entry, Position const &pos, Milliseconds despawnTime=30s, TempSummonType summonType=TEMPSUMMON_CORPSE_TIMED_DESPAWN)
void SetHomePosition(float x, float y, float z, float o)
void SetImmuneToPC(bool apply) override
void SetReactState(ReactStates st)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
void SetRegenerateHealth(bool value)
void SetImmuneToNPC(bool apply) override
void Repeat(Milliseconds time)
void DelayEvents(Milliseconds delay)
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
bool IsInPhase(uint8 phase) const
void CancelEvent(uint32 eventId)
void SetPhase(uint8 phase)
void AddEvent(BasicEvent *event, Milliseconds e_time, bool set_addtime=true)
void AddEventAtOffset(BasicEvent *event, Milliseconds offset)
GameObjectTemplate const * GetGOInfo() const
bool HasFlag(GameObjectFlags flags) const
void SetFlag(GameObjectFlags flags)
virtual bool SetBossState(uint32 id, EncounterState state)
Creature * GetCreature(uint32 type)
EncounterState GetBossState(uint32 id) const
void TriggerGameEvent(uint32 gameEventId, WorldObject *source=nullptr, WorldObject *target=nullptr) override
GameObject * GetGameObject(uint32 type)
TempSummon * SummonCreature(uint32 entry, Position const &pos, SummonPropertiesEntry const *properties=nullptr, Milliseconds duration=0ms, WorldObject *summoner=nullptr, uint32 spellId=0, uint32 vehId=0, ObjectGuid privateObjectOwner=ObjectGuid::Empty, SmoothPhasingInfo const *smoothPhasingInfo=nullptr)
void LaunchMoveSpline(std::function< void(Movement::MoveSplineInit &init)> &&initializer, uint32 id=0, MovementGeneratorPriority priority=MOTION_PRIORITY_NORMAL, MovementGeneratorType type=EFFECT_MOTION_TYPE)
void MoveAlongSplineChain(uint32 pointId, uint16 dbChainId, bool walk)
void MoveRandom(float wanderDistance=0.0f, Optional< Milliseconds > duration={}, MovementSlot slot=MOTION_SLOT_DEFAULT)
void MovePoint(uint32 id, Position const &pos, bool generatePath=true, Optional< float > finalOrient={}, Optional< float > speed={}, MovementWalkRunSpeedSelectionMode speedSelectionMode=MovementWalkRunSpeedSelectionMode::Default, Optional< float > closeEnoughDistance={})
static Creature * ToCreature(Object *o)
static Unit * ToUnit(Object *o)
bool HasItemCount(uint32 item, uint32 count=1, bool inBankAlso=false) const
SpellEffectInfo const & GetEffect(SpellEffIndex index) const
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
static bool ValidateSpellEffect(std::initializer_list< std::pair< uint32, SpellEffIndex > > effects)
HookList< CastHandler > AfterCast
Creature * GetHitCreature() const
int32 GetHitDamage() const
HookList< DestinationTargetSelectHandler > OnDestinationTargetSelect
HookList< HitHandler > OnHit
void PreventHitDefaultEffect(SpellEffIndex effIndex)
Unit * GetHitUnit() const
HookList< EffectHandler > OnEffectHitTarget
void SetHitDamage(int32 damage)
WorldLocation const * GetExplTargetDest() const
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
void DespawnEntry(uint32 entry)
void Summon(Creature const *summon)
SummonUnleashedDarkMatter(Unit *caster)
bool Execute(uint64 execTime, uint32) override
Unit * GetCurrentVictim()
bool IsThreatListEmpty(bool includeOffline=false) const
virtual void DoAction(int32)
SpellCastResult DoCastSelf(uint32 spellId, CastSpellExtraArgs const &args={})
virtual uint32 GetData(uint32) const
SpellCastResult DoCastVictim(uint32 spellId, CastSpellExtraArgs const &args={})
SpellCastResult DoCastAOE(uint32 spellId, CastSpellExtraArgs const &args={})
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)
void ClearUnitState(uint32 f)
void RemoveAurasByType(AuraType auraType, std::function< bool(AuraApplication const *)> const &check, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
void CombatStop(bool includingCast=false, bool mutualPvP=true, bool(*unitFilter)(Unit const *otherUnit)=nullptr)
void SetStandState(UnitStandStateType state, uint32 animKitID=0)
ThreatManager & GetThreatManager()
void SetFaction(uint32 faction) override
void InterruptNonMeleeSpells(bool withDelayed, uint32 spellid=0, bool withInstant=true)
MotionMaster * GetMotionMaster()
void SetUnitFlag2(UnitFlags2 flags)
TempSummon * ToTempSummon()
bool SetDisableGravity(bool disable, bool updateAnimTier=true)
void SetUninteractible(bool apply)
void SetSheath(SheathState sheathed)
uint64 GetMaxHealth() const
void SetFacingTo(float const ori, bool force=true)
bool HasUnitState(const uint32 f) const
bool HealthBelowPctDamaged(int32 pct, uint32 damage) const
void SetUnitFlag(UnitFlags flags)
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
void GetCreatureListWithEntryInGrid(Container &creatureContainer, uint32 entry, float maxSearchRange=250.0f) const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
void PlayDirectMusic(uint32 musicId, Player const *target=nullptr) const
TempSummon * SummonCreature(uint32 entry, Position const &pos, TempSummonType despawnType=TEMPSUMMON_MANUAL_DESPAWN, Milliseconds despawnTime=0s, uint32 vehId=0, uint32 spellId=0, ObjectGuid privateObjectOwner=ObjectGuid::Empty)
void setActive(bool isActiveObject)
float GetDistance2d(WorldObject const *obj) const
void SetFarVisible(bool on)
virtual void SetData(uint32, uint32)
void CountTargets(std::list< WorldObject * > &targets)
bool Validate(SpellInfo const *) override
void HandleEffectApply(AuraEffect const *, AuraEffectHandleModes)
void HandlePeriodic(AuraEffect const *)
void ModDestHeight(SpellDestination &dest)
bool Validate(SpellInfo const *spellInfo) override
void HandlePeriodic(AuraEffect const *aurEff)
void HandlePeriodic(AuraEffect const *)
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
void HandlePeriodic(AuraEffect const *)
void HandleDummy(SpellEffIndex effIndex)
void SelectTarget(std::list< WorldObject * > &targets)
auto SelectRandomContainerElement(C const &container) -> typename std::add_const< decltype(*std::begin(container))>::type &
constexpr float GetPositionX() const
constexpr float GetPositionY() const
constexpr float GetPositionZ() const
void AttackStart(Unit *) override
== Triggered Actions Requested ==================
void ResetThreatList(Unit *who=nullptr)
void RelocateOffset(Position const &offset)
void UpdateAI(uint32 diff) override
boss_algalon_the_observer(Creature *creature)
void DamageTaken(Unit *, uint32 &damage, DamageEffectType, SpellInfo const *) override
void JustSummoned(Creature *summon) override
void EnterEvadeMode(EvadeReason why) override
void KilledUnit(Unit *victim) override
void DoAction(int32 action) override
void MovementInform(uint32 movementType, uint32 pointId) override
void JustEngagedWith(Unit *who) override
uint32 GetData(uint32 type) const override
go_celestial_planetarium_access(GameObject *go)
bool OnReportUse(Player *player) override
InstanceScript * _instance
void UpdateAI(uint32 diff) override
npc_black_hole(Creature *creature)
void EnterEvadeMode(EvadeReason) override
void SpellHit(WorldObject *, SpellInfo const *spellInfo) override
void JustSummoned(Creature *summon) override
void MovementInform(uint32 type, uint32 pointId) override
void DoAction(int32 action) override
npc_brann_bronzebeard_algalon(Creature *creature)
void UpdateAI(uint32 diff) override
void DamageTaken(Unit *, uint32 &damage, DamageEffectType, SpellInfo const *) override
void JustSummoned(Creature *summon) override
npc_collapsing_star(Creature *creature)
InstanceScript * _instance
void SpellHit(WorldObject *caster, SpellInfo const *spellInfo) override
void UpdateAI(uint32 diff) override
void DoAction(int32 action) override
InstanceScript * _instance
uint32 GetData(uint32) const override
npc_living_constellation(Creature *creature)
@ DATA_BRANN_BRONZEBEARD_ALG
@ DATA_ALGALON_SUMMON_STATE
#define RegisterUlduarCreatureAI(ai_name)
@ 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