173 switch (spellInfo->
Id)
231 std::vector<float> portalAngles =
235 -(3.0f * float(
M_PI / 4.0f)),
236 (3.0f *
float(
M_PI / 4.0f))
241 static constexpr float PORTAL_STALKER_DIST = 30.0f;
244 for (
float angle : portalAngles)
284 for (
uint8 i = 0; i < 3; i++)
399 std::list<Player*> players;
404 for (
Player* player : players)
452 std::vector<Creature*> stalkers;
472 .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR,
473 .TriggeringAura = aurEff
@ ENCOUNTER_FRAME_DISENGAGE
@ TEMPSUMMON_TIMED_DESPAWN
float frand(float min, float max)
#define RegisterSpellAndAuraScriptPair(script_1, script_2)
#define RegisterAreaTriggerAI(ai_name)
#define RegisterSpellScript(spell_script)
@ TARGET_UNIT_SRC_AREA_ENTRY
@ AURA_EFFECT_HANDLE_REAL
@ SPELL_AURA_PERIODIC_DUMMY
@ TRIGGERED_IGNORE_CAST_IN_PROGRESS
Will not check if a current cast is in progress.
@ TRIGGERED_DONT_REPORT_CAST_ERROR
Will return SPELL_FAILED_DONT_REPORT in CheckCast functions.
#define SpellEffectFn(F, I, N)
#define SpellObjectAreaTargetSelectFn(F, I, N)
#define AuraEffectPeriodicFn(F, I, N)
#define AuraEffectApplyFn(F, I, N, M)
#define AuraEffectRemoveFn(F, I, N, M)
@ CURRENT_CHANNELED_SPELL
static constexpr Position AzhiccarPosition
void AddSC_boss_azhiccar()
@ ANIMKIT_MITE_DEVOUR_BIRTH
@ EVENT_TOXIC_REGURGITATION
@ SPELL_DEVOUR_AREATRIGGER
@ SPELL_DIGESTIVE_SPITTLE_NPC_SLOW
@ SPELL_TOXIC_REGURGITATION_SELECTOR
@ SPELL_ENERGY_CONTROLLER
@ SPELL_DIGESTIVE_SPITTLE
@ SPELL_TOXIC_REGURGITATION_CAST
@ SPELL_INVADING_SHRIEK_DAMAGE
@ SPELL_INVADING_SHRIEK_SUMMON
@ SPELL_TOXIC_REGURGITATION_MISSILE
@ SPELL_DEVOUR_INTRO_SELECTOR
@ SPELL_TOXIC_REGURGITATION_MARKER
@ SPELL_INVADING_SHRIEK_PERIODIC
@ SPELL_INVADING_SHRIEK_DUMMY
static constexpr Position OrphanSpellVisualPosition
AreaTriggerAI(AreaTrigger *a, uint32 scriptId={}) noexcept
uint32 GetTickNumber() const
HookList< EffectPeriodicHandler > OnEffectPeriodic
HookList< EffectApplyHandler > AfterEffectApply
ObjectGuid const & GetGUID() const
InstanceScript *const instance
void JustEngagedWith(Unit *who) override
void _DespawnAtEvade(Seconds delayToRespawn=30s, Creature *who=nullptr)
bool _EnterEvadeMode(EvadeReason why=EvadeReason::Other)
void SetReactState(ReactStates st)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
void SetImmuneToAll(bool apply) override
void Repeat(Milliseconds time)
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
void AddEventAtOffset(BasicEvent *event, Milliseconds offset)
Creature * GetCreature(uint32 type)
void SendEncounterUnit(EncounterFrameType type, Unit const *unit, Optional< int32 > param1={}, Optional< int32 > param2={})
void LaunchMoveSpline(std::function< void(Movement::MoveSplineInit &init)> &&initializer, uint32 id=0, MovementGeneratorPriority priority=MOTION_PRIORITY_NORMAL, MovementGeneratorType type=EFFECT_MOTION_TYPE, Scripting::v2::ActionResultSetter< MovementStopReason > &&scriptResult={})
bool IsGameMaster() const
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
HookList< CastHandler > AfterCast
WorldLocation * GetHitDest() const
HookList< HitHandler > OnHit
HookList< EffectHandler > OnEffectHit
int64 GetUnitTargetCountForEffect(SpellEffIndex effect) const
Unit * GetHitUnit() const
HookList< EffectHandler > OnEffectHitTarget
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
SpellInfo const * GetSpellInfo() const
TaskContext & Schedule(TaskScheduler::duration_t time, TaskScheduler::task_handler_t task)
TaskScheduler & Schedule(duration_t time, task_handler_t task)
TaskScheduler & Update()
Update the scheduler to the current time.
SpellCastResult DoCastSelf(uint32 spellId, CastSpellExtraArgs const &args={})
virtual void DoAction(int32 param)
int32 ModifyPower(Powers power, int32 val, bool withPowerUpdate=true)
void ApplyMovementForce(ObjectGuid id, Position origin, float magnitude, MovementForceType type, Position direction={}, ObjectGuid transportGuid=ObjectGuid::Empty)
void PlayOneShotAnimKitId(uint16 animKitId)
void SetSpeed(UnitMoveType mtype, float newValue)
void SetPower(Powers power, int32 val, bool withPowerUpdate=true)
MotionMaster * GetMotionMaster()
void SetUninteractible(bool apply)
void RemoveMovementForce(ObjectGuid id)
int32 GetPower(Powers power) const
bool HasUnitState(const uint32 f) const
void SendPlaySpellVisualKit(uint32 id, uint32 type, uint32 duration) const
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
void RemoveAllAreaTriggers(AreaTriggerRemoveReason reason=AreaTriggerRemoveReason::Default)
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
void SetPowerType(Powers power, bool sendUpdate=true, bool onInit=false)
void SetAIAnimKitId(uint16 animKitId)
Spell * GetCurrentSpell(CurrentSpellTypes spellType) const
void MovePosition(Position &pos, float dist, float angle, float maxHeightChange=6.0f) const
InstanceScript * GetInstanceScript() const
void GetCreatureListWithEntryInGrid(Container &creatureContainer, uint32 entry, float maxSearchRange=250.0f) const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
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 SendPlayOrphanSpellVisual(Position const &sourceLocation, ObjectGuid const &target, uint32 spellVisualId, float travelSpeed, bool speedAsTime=false, bool withSourceOrientation=false)
virtual uint32 GetData(uint32) const
virtual void SetData(uint32, uint32)
void HandleHitTarget(SpellEffIndex) const
void FilterTargets(std::list< WorldObject * > &targets)
void HandleHitTarget(SpellEffIndex) const
void OnApply(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
static constexpr std::array< uint8, 3 > AzhiccarEnergizeCycle
void PeriodicTick(AuraEffect const *aurEff) const
bool Validate(SpellInfo const *) override
void HandleHit(SpellEffIndex)
void OnApply(AuraEffect const *, AuraEffectHandleModes)
void OnPeriodic(AuraEffect const *aurEff)
bool Validate(SpellInfo const *) override
std::queue< ObjectGuid > _stalkerList
bool Validate(SpellInfo const *) override
void HandleHit(SpellEffIndex) const
void HandleAfterCast() const
bool Validate(SpellInfo const *) override
void HandlePlayerDetection() const
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleHitTarget(SpellEffIndex) const
bool Validate(SpellInfo const *) override
#define RegisterEcodomeAldaniCreatureAI(ai_name)
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
void RandomShuffle(Iterator begin, Iterator end)
Reorder the elements of the iterator range randomly.
void RandomResize(C &container, std::size_t requestedSize)
static void VisitWorldObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)
constexpr float GetPositionX() const
constexpr float GetPositionY() const
constexpr void GetPosition(float &x, float &y) const
constexpr float GetOrientation() const
constexpr float GetPositionZ() const
bool IsHeroicOrHigher() const
void OnUnitExit(Unit *unit, AreaTriggerExitReason) override
void OnUnitEnter(Unit *unit) override
void OnUnitEnter(Unit *unit) override
void OnUnitExit(Unit *unit, AreaTriggerExitReason) override
void OnUnitEnter(Unit *unit) override
at_azhiccar_intro(AreaTrigger *areatrigger)
void OnUnitEnter(Unit *unit) override
void OnSpellStart(SpellInfo const *spellInfo) override
std::vector< Position > _lastPortalPositions
boss_azhiccar(Creature *creature)
uint32 _invadingShriekCount
uint32 _toxicRegurgitationCount
void DoAction(int32 actionId) override
void UpdateAI(uint32 diff) override
void EnterEvadeMode(EvadeReason) override
void JustDied(Unit *) override
void JustEngagedWith(Unit *who) override
void JustAppeared() override
void JustAppeared() override
npc_azhiccar_frenzied_mite(Creature *creature)
npc_azhiccar_intro_creature(Creature *creature)
void UpdateAI(uint32 diff) override
void SpellHit(WorldObject *, SpellInfo const *spellInfo) override