109#define SPELL_PERMAFROST_HELPER RAID_MODE<uint32>(66193, 67855, 67856, 67857)
119 {779.8038f, 150.6580f, 158.1426f, 0},
120 {736.0243f, 113.4201f, 158.0226f, 0},
121 {712.5712f, 160.9948f, 158.4368f, 0},
122 {701.4271f, 126.4740f, 158.0205f, 0},
123 {747.9202f, 155.0920f, 158.0613f, 0},
124 {769.6285f, 121.1024f, 158.0504f, 0},
195 std::list<Creature*> FrostSphereList;
197 if (!FrostSphereList.empty())
198 for (std::list<Creature*>::iterator itr = FrostSphereList.begin(); itr != FrostSphereList.end(); ++itr)
199 (*itr)->DespawnOrUnsummon();
223 for (
int i = 0; i < 10; i++)
227 scarab->GetMotionMaster()->MoveRandom(10);
237 std::list<Creature*> AddList;
240 if (!AddList.empty())
241 for (std::list<Creature*>::iterator itr = AddList.begin(); itr != AddList.end(); ++itr)
242 (*itr)->DespawnOrUnsummon();
281 for (
int i = 0; i < 4; i++)
285 for (
int i = 0; i < 6; i++)
357 for (
uint32 k = 0; k < at; k++)
360 pBurrow->CastSpell(pBurrow, 66340,
false);
458 anubarak->AI()->JustSummoned(
me);
526 anubarak->AI()->JustSummoned(
me);
802 Unit* permafrostCaster =
nullptr;
804 permafrostCaster = permafrostAura->GetCaster();
806 if (permafrostCaster)
811 permafrostCasterCreature->DespawnOrUnsummon(3s);
816 targetCreature->DisappearAndDie();
835 if (target && target->
HasAura(permafrost))
858 int32 lifeLeeched = target->CountPctFromCurHealth(aurEff->
GetAmount());
859 if (lifeLeeched < 250)
TC_GAME_API bool InstanceHasScript(WorldObject const *obj, char const *scriptName)
std::list< ObjectGuid > GuidList
uint32 urand(uint32 min, uint32 max)
#define RegisterSpellScript(spell_script)
@ SPELL_EFFECT_SCHOOL_DAMAGE
@ 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 AuraEffectPeriodicFn(F, I, N)
@ UNIT_FLAG_NON_ATTACKABLE
#define SPELL_PERMAFROST_HELPER
void AddSC_boss_anubarak_trial()
@ SPELL_CLEAR_ALL_DEBUFFS
@ SPELL_SUBMERGE_ANUBARAK
@ SPELL_LEECHING_SWARM_HEAL
@ SPELL_LEECHING_SWARM_DMG
@ SPELL_PERMAFROST_VISUAL
const Position SphereSpawn[6]
@ EVENT_SUMMON_FROST_SPHERE
@ EVENT_NERUBIAN_SHADOW_STRIKE
void PreventDefaultAction()
HookList< EffectPeriodicHandler > OnEffectPeriodic
Unit * GetUnitOwner() const
InstanceScript *const instance
void JustEngagedWith(Unit *who) override
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
void SetCanMelee(bool canMelee, bool fleeFromMelee=false)
void SetObjectScale(float scale) override
void SetDisplayFromModel(uint32 modelIdx)
void SetReactState(ReactStates st)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
void SetCorpseDelay(uint32 delay, bool ignoreCorpseDecayRatio=false)
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
bool IsInPhase(uint8 phase) const
void SetPhase(uint8 phase)
virtual bool SetBossState(uint32 id, EncounterState state)
Creature * GetCreature(uint32 type)
EncounterState GetBossState(uint32 id) const
void MoveRandom(float wanderDistance=0.0f, Optional< Milliseconds > duration={}, MovementSlot slot=MOTION_SLOT_DEFAULT)
void MoveFall(uint32 id=0)
static Creature * ToCreature(Object *o)
static ObjectGuid GetGUID(Object const *o)
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
Unit * GetHitUnit() const
HookList< EffectHandler > OnEffectHitTarget
void DespawnEntry(uint32 entry)
void Summon(Creature const *summon)
void DoAction(int32 info, Predicate &&predicate, uint16 max=0)
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 DoCastAOE(uint32 spellId, CastSpellExtraArgs const &args={})
SpellCastResult DoCast(uint32 spellId)
ThreatManager & GetThreatManager()
MotionMaster * GetMotionMaster()
void SetUninteractible(bool apply)
void EngageWithTarget(Unit *who)
void SetSpeedRate(UnitMoveType mtype, float rate)
bool HasUnitState(const uint32 f) const
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
void HandleEmoteCommand(Emote emoteId, Player *target=nullptr, Trinity::IteratorPair< int32 const * > spellVisualKitIds={}, int32 sequenceVariation=0)
void SetUnitFlag(UnitFlags flags)
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
void RemoveUnitFlag(UnitFlags flags)
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 UpdateGroundPositionZ(float x, float y, float &z) const
bool IsWithinDist(WorldObject const *obj, float dist2compare, bool is3D=true, bool incOwnRadius=true, bool incTargetRadius=true) const
void HandleEffectPeriodic(AuraEffect const *aurEff)
bool Validate(SpellInfo const *) override
void HandleDamageCalc(SpellEffIndex)
void PeriodicTick(AuraEffect const *)
bool Validate(SpellInfo const *) override
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
constexpr float GetPositionX() const
constexpr float GetPositionY() const
constexpr float GetPositionZ() const
void AttackStart(Unit *) override
== Triggered Actions Requested ==================
void SetCombatMovement(bool allowMovement)
T const & RAID_MODE(T const &normal10, T const &normal25) const
bool HealthBelowPct(uint32 pct) const
void AddThreat(Unit *victim, float amount, Unit *who=nullptr)
void KilledUnit(Unit *who) override
void JustSummoned(Creature *summoned) override
void JustReachedHome() override
void JustDied(Unit *) override
ObjectGuid _sphereGUID[6]
void UpdateAI(uint32 diff) override
void MoveInLineOfSight(Unit *) override
void JustEngagedWith(Unit *who) override
boss_anubarak_trial(Creature *creature)
npc_anubarak_spike(Creature *creature)
void JustEngagedWith(Unit *who) override
PursuingSpikesPhases _phase
void StartChase(Unit *who)
void DamageTaken(Unit *, uint32 &uiDamage, DamageEffectType, SpellInfo const *) override
void UpdateAI(uint32 diff) override
void MoveInLineOfSight(Unit *pWho) override
bool CanAIAttack(Unit const *victim) const override
void MovementInform(uint32 type, uint32 pointId) override
void DamageTaken(Unit *, uint32 &damage, DamageEffectType, SpellInfo const *) override
npc_frost_sphere(Creature *creature)
void UpdateAI(uint32 diff) override
void DoAction(int32 actionId) override
InstanceScript * _instance
npc_nerubian_burrower(Creature *creature)
void UpdateAI(uint32 diff) override
npc_swarm_scarab(Creature *creature)
uint32 _determinationTimer
void DoAction(int32 actionId) override
InstanceScript * _instance
void JustDied(Unit *killer) override
constexpr Position AnubarakLoc[]
#define RegisterTrialOfTheCrusaderCreatureAI(ai_name)