439 if (70127 == spellInfo->
Id)
440 if (
Aura const* mysticBuffet = unitTarget->
GetAura(spellInfo->
Id))
524 float destX, destY, destZ;
1022 float destX =
rand_norm() * 75.0f + 4350.0f;
1023 float destY =
rand_norm() * 75.0f + 2450.0f;
1024 float destZ = 205.0f;
1036 return player->IsGameMaster();
1059 uint32 minResistFactor =
uint32((resistance / (resistance + 510.0f)) * 10.0f) * 2;
1060 uint32 randomResist =
urand(0, (9 - minResistFactor) * 100) / 100 + minResistFactor;
1065 damageInfo.
damage = damage;
1085 std::vector<WorldObject*> healers;
1086 std::vector<WorldObject*> casters;
1094 if (!specialization)
1099 healers.push_back(target);
1104 casters.push_back(target);
1110 if (!healers.empty())
1113 while (!healers.empty())
1115 targets.push_back(healers.back());
1119 if (!casters.empty())
1122 size_t const maxSize = is25ManRaid ? 6 : 2;
1123 while (!casters.empty() && targets.size() < maxSize)
1125 targets.push_back(casters.back());
1246 summon->AddGameObject(go);
1362 if (targets.empty())
1367 targets.push_back(target);
1374 std::list<Creature*> unitList;
1379 if (unitList.empty())
TC_GAME_API bool InstanceHasScript(WorldObject const *obj, char const *scriptName)
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
@ TEMPSUMMON_DEAD_DESPAWN
@ TEMPSUMMON_TIMED_DESPAWN
@ QUEST_STATUS_INCOMPLETE
uint32 urand(uint32 min, uint32 max)
#define RegisterSpellAndAuraScriptPair(script_1, script_2)
#define RegisterSpellScript(spell_script)
#define RegisterSpellScriptWithArgs(spell_script, script_name,...)
void GetCreatureListWithEntryInGrid(Container &container, WorldObject *source, uint32 entry, float maxSearchRange)
@ TARGET_UNIT_DEST_AREA_ENEMY
@ TARGET_UNIT_SRC_AREA_ENEMY
@ TARGET_UNIT_DEST_AREA_ENTRY
@ SPELL_EFFECT_SCRIPT_EFFECT
@ SPELL_EFFECT_TRIGGER_MISSILE
@ SPELL_EFFECT_FORCE_CAST
@ AURA_EFFECT_HANDLE_REAL
@ SPELL_AURA_PERIODIC_DUMMY
@ SPELL_AURA_PERIODIC_TRIGGER_SPELL
@ TRIGGERED_FULL_MASK
Used when doing CastSpell with triggered == true.
@ TRIGGERED_IGNORE_SET_FACING
Will not adjust facing to target (if any)
#define SpellEffectFn(F, I, N)
#define SpellObjectAreaTargetSelectFn(F, I, N)
#define AuraEffectPeriodicFn(F, I, N)
#define AuraEffectRemoveFn(F, I, N, M)
@ UNIT_FLAG_NON_ATTACKABLE
Position const SindragosaFlyInPos
@ SPELL_FROST_BOMB_VISUAL
@ SPELL_PERMAEATING_CHILL
@ SPELL_FROST_BOMB_TRIGGER
@ SPELL_CLEAVE_SPINESTALKER
@ SPELL_FROST_AURA_RIMEFANG
@ SPELL_ICE_TOMB_UNTARGETABLE
@ SPELL_FROST_IMBUED_BLADE
@ SPELL_FROST_INFUSION_CREDIT
@ SPELL_SINDRAGOSA_S_FURY
void AddSC_boss_sindragosa()
@ DATA_MYSTIC_BUFFET_STACK
Position const SpinestalkerFlyPos
Position const SpinestalkerLandPos
Position const SindragosaFlyPos
Position const RimefangLandPos
@ EMOTE_WARN_BLISTERING_COLD
@ SAY_RESPITE_FOR_A_TORMENTED_SOUL
Position const RimefangFlyPos
Position const SindragosaAirPosFar
Position const SindragosaLandPos
Position const SindragosaSpawnPos
@ EVENT_THIRD_PHASE_CHECK
@ EVENT_BLISTERING_COLD_YELL
@ EVENT_CLEAVE_SPINESTALKER
@ EVENT_FROST_BREATH_RIMEFANG
@ EVENT_FROSTWARDEN_ORDER_WHELP
Position const SindragosaAirPos
uint32 GetTickNumber() const
void PreventDefaultAction()
AuraApplication const * GetTargetApplication() const
HookList< EffectApplyHandler > AfterEffectRemove
HookList< EffectPeriodicHandler > OnEffectPeriodic
SpellInfo const * GetSpellInfo() const
SpellEffectInfo const & GetEffectInfo(SpellEffIndex effIndex) const
ObjectGuid GetCasterGUID() const
uint8 GetStackAmount() const
InstanceScript *const instance
void JustReachedHome() override
void SummonedCreatureDespawn(Creature *summon) override
virtual void JustDied(Unit *)
virtual void EnterEvadeMode(EvadeReason why=EvadeReason::Other)
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
virtual void JustAppeared()
void SetCombatPulseDelay(uint32 delay)
void SetHomePosition(float x, float y, float z, float o)
void SetImmuneToPC(bool apply) override
void GetHomePosition(float &x, float &y, float &z, float &ori) const
void SetReactState(ReactStates st)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
ObjectGuid::LowType GetSpawnId() const
void SetDefaultMovementType(MovementGeneratorType mgt)
void CancelEventGroup(uint32 group)
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
void CancelEvent(uint32 eventId)
void RescheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
void AddEvent(BasicEvent *event, Milliseconds e_time, bool set_addtime=true)
Milliseconds CalculateTime(Milliseconds t_offset) const
bool operator()(WorldObject *target) const
FrostBeaconSelector(Unit *source)
bool Execute(uint64, uint32) override
ObjectGuid _sindragosaGUID
FrostBombExplosion(Creature *owner, ObjectGuid sindragosaGUID)
bool Execute(uint64, uint32) override
FrostwyrmLandEvent(Creature &owner, Position const &dest)
virtual bool SetBossState(uint32 id, EncounterState state)
void DoCastSpellOnPlayers(uint32 spell, bool includePets=false, bool includeControlled=false)
virtual bool CheckRequiredBosses(uint32, Player const *=nullptr) const
void LoadGrid(float x, float y)
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 MoveTakeoff(uint32 id, Position const &pos, Optional< int32 > tierTransitionId={}, Optional< float > velocity={}, MovementWalkRunSpeedSelectionMode speedSelectionMode=MovementWalkRunSpeedSelectionMode::Default)
void MovePoint(uint32 id, Position const &pos, bool generatePath=true, Optional< float > finalOrient={}, Optional< float > speed={}, MovementWalkRunSpeedSelectionMode speedSelectionMode=MovementWalkRunSpeedSelectionMode::Default, Optional< float > closeEnoughDistance={})
void MoveLand(uint32 id, Position const &pos, Optional< int32 > tierTransitionId={}, Optional< float > velocity={}, MovementWalkRunSpeedSelectionMode speedSelectionMode=MovementWalkRunSpeedSelectionMode::Default)
MysticBuffetTargetFilter(Unit *caster)
bool operator()(WorldObject *unit) const
static Unit * ToUnit(Object *o)
static ObjectGuid GetGUID(Object const *o)
static Player * ToPlayer(Object *o)
OrderWhelpTargetSelector(Creature *owner)
bool operator()(Creature *creature)
QuestStatus GetQuestStatus(uint32 quest_id) const
ChrSpecializationEntry const * GetPrimarySpecializationEntry() const
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
static bool ValidateSpellEffect(std::initializer_list< std::pair< uint32, SpellEffIndex > > effects)
Player * GetHitPlayer() const
HookList< HitHandler > AfterHit
HookList< EffectHandler > OnEffectHit
void PreventHitDefaultEffect(SpellEffIndex effIndex)
Unit * GetHitUnit() const
int32 GetEffectValue() const
SpellEffectInfo const & GetEffectInfo() const
HookList< EffectHandler > OnEffectHitTarget
void SetExplTargetDest(WorldLocation const &loc)
HookList< CastHandler > BeforeCast
HookList< EffectHandler > OnEffectLaunchTarget
WorldLocation const * GetExplTargetDest() const
SpellInfo const * GetSpellInfo() const
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
void Summon(Creature const *summon)
void DoAction(int32 info, Predicate &&predicate, uint16 max=0)
void AddThreat(Unit *target, float amount, SpellInfo const *spell=nullptr, bool ignoreModifiers=false, bool ignoreRedirects=false)
== AFFECT MY THREAT LIST ==
virtual void SetData(uint32, uint32)
SpellCastResult DoCastSelf(uint32 spellId, CastSpellExtraArgs const &args={})
virtual uint32 GetData(uint32) const
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)
float GetSpeed(UnitMoveType mtype) const
void RemoveAura(AuraApplicationMap::iterator &i, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
ThreatManager & GetThreatManager()
void RemoveAllGameObjects()
void DealSpellDamage(SpellNonMeleeDamage const *damageInfo, bool durabilityLoss)
MotionMaster * GetMotionMaster()
void SetFacingToObject(WorldObject const *object, bool force=true)
void SendSpellNonMeleeDamageLog(SpellNonMeleeDamage const *log)
TempSummon * ToTempSummon()
bool SetDisableGravity(bool disable, bool updateAnimTier=true)
void SendSpellDamageImmune(Unit *target, uint32 spellId, bool isPeriodic)
Aura * GetAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
bool SetCanFly(bool enable)
void SetSpeedRate(UnitMoveType mtype, float rate)
void SetFacingTo(float const ori, bool force=true)
bool HasUnitState(const uint32 f) const
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
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
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 setActive(bool isActiveObject)
GameObject * SummonGameObject(uint32 entry, Position const &pos, QuaternionData const &rot, Seconds respawnTime, GOSummonType summonType=GO_SUMMON_TIMED_OR_CORPSE_DESPAWN)
void SetFarVisible(bool on)
bool IsWithinLOSInMap(WorldObject const *obj, LineOfSightChecks checks=LINEOFSIGHT_ALL_CHECKS, VMAP::ModelIgnoreFlags ignoreFlags=VMAP::ModelIgnoreFlags::Nothing) const
void UpdateGroundPositionZ(float x, float y, float &z) const
virtual uint32 GetData(uint32) const
virtual void SetData(uint32, uint32)
virtual void SetGuidData(uint32, ObjectGuid)
achievement_all_you_can_eat()
bool OnCheck(Player *, Unit *target) override
bool OnTrigger(Player *player, AreaTriggerEntry const *) override
bool Validate(SpellInfo const *spellInfo) override
void PeriodicTick(AuraEffect const *)
void HandleScript(SpellEffIndex effIndex)
void FilterTargets(std::list< WorldObject * > &targets)
bool Validate(SpellInfo const *) override
void HandleForcedCast(SpellEffIndex effIndex)
bool Validate(SpellInfo const *) override
void HandleTriggerMissile(SpellEffIndex effIndex)
void PeriodicTick(AuraEffect const *)
bool Validate(SpellInfo const *) override
void HandleSindragosaTalk(SpellEffIndex)
void FilterTargets(std::list< WorldObject * > &unitList)
void HandleRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
void PeriodicTick(AuraEffect const *aurEff)
void HandleScript(SpellEffIndex effIndex)
bool Validate(SpellInfo const *) override
void OnRemove(AuraEffect const *aurEff, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
void FilterTargets(std::list< WorldObject * > &targets)
void HandleDummy(SpellEffIndex effIndex)
void FilterTargets(std::list< WorldObject * > &targets)
void FilterTargets(std::list< WorldObject * > &targets)
@ LIGHT_S_HAMMER_TELEPORT
#define RegisterIcecrownCitadelCreatureAI(ai_name)
@ ACTION_TRIGGER_ASPHYXIATION
@ DATA_SINDRAGOSA_FROSTWYRMS
@ NPC_FROSTWARDEN_HANDLER
TC_GAME_API Player * GetPlayer(Map const *, ObjectGuid const &guid)
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.
auto SelectRandomContainerElement(C const &container) -> typename std::add_const< decltype(*std::begin(container))>::type &
void RandomResize(C &container, std::size_t requestedSize)
EnumFlag< ChrSpecializationFlag > GetFlags() const
ChrSpecializationRole GetRole() const
bool operator()(Unit const *target) const
constexpr float GetPositionX() const
constexpr float GetPositionY() const
float GetExactDist(float x, float y, float z) const
constexpr void GetPosition(float &x, float &y) const
constexpr void Relocate(float x, float y)
constexpr float GetOrientation() const
static QuaternionData fromEulerAnglesZYX(float Z, float Y, float X)
void AttackStart(Unit *) override
== Triggered Actions Requested ==================
void SetCombatMovement(bool allowMovement)
bool HealthAbovePct(uint32 pct) const
void JustSummoned(Creature *summon) override
void KilledUnit(Unit *victim) override
void EnterEvadeMode(EvadeReason why) override
uint32 GetData(uint32 type) const override
void JustDied(Unit *) override
void UpdateAI(uint32 diff) override
void SpellHitTarget(WorldObject *target, SpellInfo const *spellInfo) override
void JustEngagedWith(Unit *victim) override
void SummonedCreatureDespawn(Creature *summon) override
void JustReachedHome() override
void DamageTaken(Unit *, uint32 &, DamageEffectType, SpellInfo const *) override
void DoAction(int32 action) override
void MovementInform(uint32 type, uint32 point) override
boss_sindragosa(Creature *creature)
uint32 _existenceCheckTimer
npc_ice_tomb(Creature *creature)
void DoAction(int32 action) override
ObjectGuid _trappedPlayerGUID
void SetGUID(ObjectGuid const &guid, int32 id) override
void JustDied(Unit *) override
void UpdateAI(uint32 diff) override
void JustDied(Unit *) override
InstanceScript * _instance
void MovementInform(uint32 type, uint32 point) override
void DoAction(int32 action) override
void InitializeAI() override
void JustAppeared() override
void JustEngagedWith(Unit *) override
npc_rimefang_icc(Creature *creature)
void UpdateAI(uint32 diff) override
InstanceScript * _instance
void UpdateAI(uint32 diff) override
npc_sindragosa_trash(Creature *creature)
void SetData(uint32 type, uint32 data) override
void InitializeAI() override
void JustAppeared() override
uint32 GetData(uint32 type) const override
void JustAppeared() override
void InitializeAI() override
InstanceScript * _instance
void JustDied(Unit *) override
void DoAction(int32 action) override
void MovementInform(uint32 type, uint32 point) override
npc_spinestalker(Creature *creature)
void UpdateAI(uint32 diff) override