285 bool procTriggered = [&]()
293 if (!requiredTargets)
320 canBeRecalculated =
false;
322 amount = caster->SpellBaseHealingBonusDone(
GetSpellInfo()->GetSchoolMask()) * 7.0f;
331 if (caster && target)
584 Group* group = caster->GetGroup();
647 if (!reductionEffect)
667 effectivenessPct = effectivenessEffect->GetAmount();
670 ApplyPct(slowPct, effectivenessPct);
695 amount = valueHolder->GetAmount();
697 canBeRecalculated =
false;
848 canBeRecalculated =
false;
1125 return script->_affectedByHotStreak;
1162 canBeRecalculated =
false;
1173 if (caster && target)
1245 if (!thermalVoid->GetSpellInfo()->GetEffects().empty())
1247 icyVeins->SetDuration(icyVeins->GetDuration() + thermalVoid->GetSpellInfo()->GetEffect(
EFFECT_0).CalcValueAsInt(caster) *
IN_MILLISECONDS);
1388 amount =
CalculatePct(critRating, amountHolder->GetAmount());
1395 bonus->RecalculateAmount(aurEff);
1421 .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR,
1422 .TriggeringAura = aurEff
1449 uint32 stacks = aura->GetStackAmount();
1586 if (caster->IsValidAttackTarget(unit))
1608 .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR,
1609 .TriggeringAura = aurEff
1671 canBeRecalculated =
false;
1801 std::list<TempSummon*> minions;
1809 if (summon->GetTimer() > ringOfFrost->GetTimer())
1811 ringOfFrost->DespawnOrUnsummon();
1815 summon->DespawnOrUnsummon();
1857 targets.remove_if([dest, radius](
WorldObject* target)
1913 AddPct(pctMod, aurEff->GetAmount());
1933 critChance = 100.0f;
2012 .TriggeringAura = aurEff,
2101 if (!wildfireCritEffect)
2104 canBeRecalculated =
false;
2105 amount = wildfireCritEffect->
GetAmount();
DB2Storage< SpellCategoryEntry > sSpellCategoryStore("SpellCategory.db2", &SpellCategoryLoadInfo::Instance)
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
std::chrono::duration< double, Seconds::period > FloatSeconds
float frand(float min, float max)
Milliseconds randtime(Milliseconds min, Milliseconds max)
uint32 urand(uint32 min, uint32 max)
bool roll_chance(T chance)
#define RegisterSpellAndAuraScriptPair(script_1, script_2)
#define RegisterAreaTriggerAI(ai_name)
#define RegisterSpellScript(spell_script)
#define RegisterSpellScriptWithArgs(spell_script, script_name,...)
@ TARGET_UNIT_DEST_AREA_ENEMY
@ SPELL_EFFECT_SCRIPT_EFFECT
@ SPELL_EFFECT_TRIGGER_SPELL
@ SPELL_EFFECT_SCHOOL_DAMAGE
@ AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK
@ AURA_EFFECT_HANDLE_REAL
@ SPELL_AURA_PERIODIC_DAMAGE
@ SPELL_AURA_ADD_PCT_MODIFIER
@ SPELL_AURA_PROC_TRIGGER_SPELL
@ SPELL_AURA_MOD_CRIT_PCT
@ SPELL_AURA_CHARGE_RECOVERY_MULTIPLIER
@ SPELL_AURA_MOD_VERSATILITY
@ SPELL_AURA_SCHOOL_ABSORB
@ SPELL_AURA_PERIODIC_DUMMY
@ SPELL_AURA_PERIODIC_TRIGGER_SPELL
@ SPELL_AURA_OVERRIDE_ACTIONBAR_SPELLS
double SpellEffectValue
This is a double instead of float to be able to store full range of int32.
@ TRIGGERED_FULL_MASK
Used when doing CastSpell with triggered == true.
@ 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 SpellOnCalcCritChanceFn(F)
#define SpellObjectTargetSelectFn(F, I, N)
#define AuraEffectProcFn(F, I, N)
#define SpellEffectFn(F, I, N)
#define AuraEffectCalcAmountFn(F, I, N)
#define SpellObjectAreaTargetSelectFn(F, I, N)
#define AuraEffectPeriodicFn(F, I, N)
#define AuraEffectCalcCritChanceFn(F, I, N)
#define AuraCheckEffectProcFn(F, I, N)
#define SpellCalcDamageFn(F)
#define AuraEffectAbsorbFn(F, I)
#define AuraEffectApplyFn(F, I, N, M)
#define AuraCheckProcFn(F)
#define AuraEffectRemoveFn(F, I, N, M)
@ CR_VERSATILITY_DAMAGE_DONE
T ApplyPct(T &base, U pct)
T CalculatePct(T base, U pct)
AreaTriggerAI(AreaTrigger *a, uint32 scriptId={}) noexcept
ObjectGuid const & GetCasterGuid() const
void ChangeAmount(SpellEffectValue newAmount, bool mark=true, bool onStackOrReapply=false, AuraEffect const *triggeredBy=nullptr)
uint32 GetTickNumber() const
SpellEffectInfo const & GetSpellEffectInfo() const
SpellEffectValue GetAmount() const
void PreventDefaultAction()
AuraApplication const * GetTargetApplication() const
HookList< EffectApplyHandler > AfterEffectRemove
HookList< CheckEffectProcHandler > DoCheckEffectProc
HookList< EffectPeriodicHandler > OnEffectPeriodic
SpellInfo const * GetSpellInfo() const
WorldObject * GetOwner() const
HookList< EffectProcHandler > AfterEffectProc
HookList< EffectCalcAmountHandler > DoEffectCalcAmount
SpellEffectInfo const & GetEffectInfo(SpellEffIndex effIndex) const
AuraEffect * GetEffect(uint8 effIndex) const
HookList< EffectAbsorbHandler > OnEffectAbsorb
HookList< EffectCalcCritChanceHandler > DoEffectCalcCritChance
ObjectGuid GetCasterGUID() const
Difficulty GetCastDifficulty() const
HookList< CheckProcHandler > DoCheckProc
HookList< EffectProcHandler > OnEffectProc
Unit * GetUnitOwner() const
HookList< AuraProcHandler > OnProc
bool HasEffect(uint8 effIndex) const
HookList< EffectApplyHandler > OnEffectApply
uint32 CalcMaxStackAmount() const
uint8 GetStackAmount() const
virtual void Remove(AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)=0
ObjectGuid const & GetGUID() const
ObjectGuid _originalCastId
bool Execute(uint64 time, uint32) override
CometStormEvent(Unit *caster, ObjectGuid originalCastId, Position const &dest)
Unit * GetAttacker() const
void AddEvent(BasicEvent *event, Milliseconds e_time, bool set_addtime=true)
void AddEventAtOffset(BasicEvent *event, Milliseconds offset)
static ObjectGuid const Empty
UF::UpdateField< UF::ActivePlayerData, int32(WowCS::EntityFragment::CGObject), TYPEID_ACTIVE_PLAYER > m_activePlayerData
Unit * GetActionTarget() const
Spell const * GetProcSpell() const
ProcFlagsHit GetHitMask() const
SpellInfo const * GetSpellInfo() const
DamageInfo * GetDamageInfo() const
Unit * GetProcTarget() const
SpellDestination const * GetDst() const
ObjectGuid GetObjectTargetGUID() const
uint32 GetPeriodicTickCount() const
SpellRange CalcRadius(WorldObject const *caster=nullptr, SpellTargetIndex targetIndex=SpellTargetIndex::TargetA, Spell *spell=nullptr) const
void ResetCooldown(uint32 spellId, bool update=false)
void RestoreCharge(uint32 chargeCategoryId)
void ResetCharges(uint32 chargeCategoryId)
void ModifyCooldown(uint32 spellId, Duration cooldownMod, bool withoutCategoryCooldown=false)
bool IsAffected(uint32 familyName, flag128 const &familyFlags) const
SpellEffectInfo const & GetEffect(SpellEffIndex index) const
bool NeedsExplicitUnitTarget() const
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
static bool ValidateSpellEffect(std::initializer_list< std::pair< uint32, SpellEffIndex > > effects)
HookList< DamageAndHealingCalcHandler > CalcDamage
HookList< CastHandler > AfterCast
WorldLocation * GetHitDest() const
int32 GetHitDamage() const
HookList< HitHandler > AfterHit
int32 GetEffectValueAsInt() const
HookList< HitHandler > OnHit
HookList< EffectHandler > OnEffectHit
void PreventHitDefaultEffect(SpellEffIndex effIndex)
int64 GetUnitTargetCountForEffect(SpellEffIndex effect) const
Unit * GetHitUnit() const
SpellValue const * GetSpellValue() const
SpellEffectInfo const & GetEffectInfo() const
HookList< EffectHandler > OnEffectHitTarget
HookList< ObjectTargetSelectHandler > OnObjectTargetSelect
WorldObject * GetExplTargetWorldObject() const
HookList< EffectHandler > OnEffectLaunchTarget
Difficulty GetCastDifficulty() const
void SetHitDamage(int32 damage)
HookList< OnCalcCritChanceHandler > OnCalcCritChance
WorldLocation const * GetExplTargetDest() const
HookList< EffectHandler > OnEffectLaunch
Unit * GetExplTargetUnit() const
SpellInfo const * GetSpellInfo() const
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
SpellCastTargets m_targets
Script * GetScript() const
UsedSpellMods m_appliedMods
TaskContext & Repeat(TaskScheduler::duration_t duration)
TaskScheduler & Schedule(duration_t time, task_handler_t task)
TaskScheduler & Update()
Update the scheduler to the current time.
int32 ModifyPower(Powers power, int32 val, bool withPowerUpdate=true)
float GetHealthPct() const
void SetHealth(uint64 val)
void RemoveAura(AuraApplicationMap::iterator &i, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
AuraEffect * GetAuraEffect(uint32 spellId, uint8 effIndex, ObjectGuid casterGUID=ObjectGuid::Empty) const
int32 GetMaxPower(Powers power) const
TempSummon * ToTempSummon()
uint64 GetMaxHealth() const
Aura * GetAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
bool HasAuraState(AuraStateType flag, SpellInfo const *spellProto=nullptr, Unit const *Caster=nullptr) const
void GetAllMinionsByEntry(std::list< TempSummon * > &Minions, uint32 entry)
bool HealthAbovePct(float pct) const
bool HealthBelowPct(float pct) const
void NearTeleportTo(TeleportLocation const &target, bool casting=false)
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
SpellHistory * GetSpellHistory()
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
bool IsInBetween(Position const &pos1, Position const &pos2, float size=0) const
bool IsInRange3d(Position const *pos, float minRange, float maxRange) const
float GetDistance(WorldObject const *obj) const
virtual float GetCombatReach() const
void RemoveAlterTimeAura(SpellEffIndex)
bool Validate(SpellInfo const *) override
void OnApply(AuraEffect const *, AuraEffectHandleModes)
void AfterRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *spellInfo) override
void ConsumeArcaneCharges()
ObjectGuid _primaryTarget
void HandleEffectHitTarget(SpellEffIndex)
void MarkPrimaryTarget(SpellEffIndex)
bool Validate(SpellInfo const *) override
void RemoveArcaneCharge(SpellEffIndex)
void CheckRequiredAuraForBaselineEnergize(SpellEffIndex effIndex)
bool Validate(SpellInfo const *spellInfo) override
void HandleReverberate(SpellEffIndex effIndex)
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect *, ProcEventInfo &eventInfo)
void CalculateAmount(AuraEffect const *, SpellEffectValue &amount, bool &canBeRecalculated)
void HandleSlow(SpellEffIndex)
bool Validate(SpellInfo const *) override
bool CheckProc(ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *spellInfo) override
void HandleAbsorb(AuraEffect *, DamageInfo &dmgInfo, uint32 &)
void SuppressSpeedBuff(SpellEffIndex effIndex)
static uint32 constexpr SpellsToReset[]
bool Validate(SpellInfo const *) override
void HandleDummy(SpellEffIndex)
void HandleEffectHitTarget(SpellEffIndex)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void EffectHit(SpellEffIndex)
void HandleSlow(SpellEffIndex)
bool Validate(SpellInfo const *) override
void HandleDummy(SpellEffIndex)
bool Validate(SpellInfo const *) override
void FilterTargets(std::list< WorldObject * > &targets)
bool Validate(SpellInfo const *) override
void TriggerSlow(SpellEffIndex)
void HandleProc(AuraEffect *aurEff, ProcEventInfo &procInfo)
bool Validate(SpellInfo const *) override
void CalcAmount(AuraEffect const *, SpellEffectValue &amount, bool &canBeRecalculated)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void AfterRemove(AuraEffect const *, AuraEffectHandleModes) const
void Trigger(AuraEffect *aurEff, ProcEventInfo &eventInfo)
bool CheckFrozenOrbProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
bool CheckFrostboltProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
void CalcCritChance(Unit const *, float &critChance)
bool Validate(SpellInfo const *) override
void CalcCritChance(AuraEffect const *, Unit const *victim, float &critChance)
void CalcCritChance(Unit const *victim, float &critChance)
bool Validate(SpellInfo const *) override
void HandlePeriodicTick(AuraEffect const *) const
bool Validate(SpellInfo const *) override
void CalculateAmount(AuraEffect const *, SpellEffectValue &amount, bool &canBeRecalculated)
bool Validate(SpellInfo const *spellInfo) override
void HandleFlamePatch() const
bool Validate(SpellInfo const *) override
bool Execute(uint64 time, uint32) override
FlurryEvent(Unit *caster, ObjectGuid const &target, ObjectGuid const &originalCastId, int32 count)
ObjectGuid _originalCastId
void HandleDamage(SpellEffIndex) const
bool Validate(SpellInfo const *) override
void EffectHit(SpellEffIndex) const
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
static void HandleProc(AuraScript const &, AuraEffect const *, ProcEventInfo const &eventInfo)
bool Validate(SpellInfo const *) override
int32 CalcCastTime(int32 castTime) override
bool Validate(SpellInfo const *) override
bool _affectedByHotStreak
static bool IsActive(Spell const *spell)
void HandleProc(ProcEventInfo const &eventInfo) const
bool Validate(SpellInfo const *) override
bool CheckProc(ProcEventInfo const &procEvent) const
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect *, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
void CalculateAmount(AuraEffect const *, SpellEffectValue &amount, bool &canBeRecalculated) const
void HandleProc(AuraEffect *, ProcEventInfo &eventInfo)
void PreventEverwarmSocks(WorldObject *&target)
bool Validate(SpellInfo const *) override
void PreventStunWithEverwarmSocks(WorldObject *&target)
void ApplyDamageMultiplier(SpellEffIndex)
void IndexTarget(SpellEffIndex)
bool Validate(SpellInfo const *) override
void HandleOnHit(SpellEffIndex)
std::vector< ObjectGuid > _orderedTargets
void HandleProc(AuraEffect *aurEff, ProcEventInfo &eventInfo)
bool CheckProc(ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
static void PreventAura(SpellScript const &, WorldObject *&target)
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect *, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
void UpdatePeriodic(AuraEffect const *aurEff) const
void CalcAmount(AuraEffect const *, SpellEffectValue &amount, bool const &) const
bool Validate(SpellInfo const *) override
static bool CheckProc(AuraScript const &, AuraEffect const *aurEff, ProcEventInfo const &eventInfo)
void HandleProc(AuraEffect const *aurEff, ProcEventInfo const &eventInfo) const
bool Validate(SpellInfo const *) override
void HandlePeriodicTick(AuraEffect const *)
void HandleSpread(SpellEffIndex)
bool Validate(SpellInfo const *spellInfo) override
void FilterTargets(std::list< WorldObject * > &targets)
void AfterRemove(AuraEffect const *aurEff, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
void HandleDummy(SpellEffIndex effIndex)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void EffectHit(SpellEffIndex)
static void HandleEffectProc(AuraScript const &, AuraEffect const *aurEff, ProcEventInfo const &eventInfo)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
static const uint32 PolymorhForms[6]
void HandleDummy(SpellEffIndex)
void CalculateAmount(AuraEffect const *, SpellEffectValue &amount, bool &canBeRecalculated)
bool Validate(SpellInfo const *spellInfo) override
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect const *, ProcEventInfo const &procInfo)
bool CheckProc(AuraEffect const *, ProcEventInfo &procInfo)
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect *aurEff, ProcEventInfo &procInfo)
void HandleEffectPeriodic(AuraEffect const *aurEff)
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void FilterTargets(std::list< WorldObject * > &targets)
void Apply(AuraEffect const *, AuraEffectHandleModes)
void HandleEffectPeriodic(AuraEffect const *)
bool Validate(SpellInfo const *) override
TempSummon * GetRingOfFrostMinion() const
ObjectGuid _ringOfFrostGUID
bool Validate(SpellInfo const *spellInfo) override
void CalculateDamage(SpellEffectInfo const &, Unit const *victim, int32 &, int32 &, float &pctMod) const
bool Validate(SpellInfo const *) override
void CalcCritChance(Unit const *victim, float &critChance)
void HandleFreneticSpeed(SpellEffIndex)
void HandleCharges() const
bool Validate(SpellInfo const *) override
void HandleDamage(SpellEffIndex)
bool Validate(SpellInfo const *) override
void HandleEffectProc(AuraEffect const *aurEff, ProcEventInfo const &)
void HandleProc(AuraEffect *aurEff, ProcEventInfo &eventInfo)
void AfterRemove(AuraEffect const *aurEff, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
void HandleImprovedFreeze()
bool Validate(SpellInfo const *) override
spell_mage_wildfire_crit(AuraType auraType, SpellEffIndex effIndex)
bool Validate(SpellInfo const *) override
void CalculateAmount(AuraEffect const *, SpellEffectValue &amount, bool &canBeRecalculated) const
TC_GAME_API Unit * GetUnit(WorldObject const &, ObjectGuid const &guid)
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
void AddSC_mage_spell_scripts()
@ SPELL_MAGE_FLAME_ACCELERANT
@ SPELL_MAGE_HEAT_SHIMMER
@ SPELL_MAGE_FLAME_PATCH_AREATRIGGER
@ SPELL_MAGE_RADIANT_SPARK_PROC_BLOCKER
@ SPELL_MAGE_TOUCH_OF_THE_MAGI_EXPLODE
@ SPELL_MAGE_ARCANE_CHARGE
@ SPELL_MAGE_CONJURE_REFRESHMENT
@ SPELL_MAGE_FRENETIC_SPEED
@ SPELL_MAGE_ALTER_TIME_AURA
@ SPELL_MAGE_IGNITION_BURST
@ SPELL_MAGE_METEOR_AREATRIGGER
@ SPELL_MAGE_IMPROVED_SCORCH
@ SPELL_MAGE_ALEXSTRASZAS_FURY
@ SPELL_MAGE_ARCANE_BARRAGE_ENERGIZE
@ SPELL_MAGE_BLAZING_BARRIER_TRIGGER
@ SPELL_MAGE_WINTERS_CHILL
@ SPELL_MAGE_ETHEREAL_BLINK
@ SPELL_MAGE_CONJURE_REFRESHMENT_TABLE
@ SPELL_MAGE_TEMPEST_BARRIER_ABSORB
@ SPELL_MAGE_RAY_OF_FROST_BONUS
@ SPELL_MAGE_LIVING_BOMB_PERIODIC
@ SPELL_MAGE_RING_OF_FROST_SUMMON
@ SPELL_MAGE_ARCANE_ALTER_TIME_AURA
@ SPELL_MAGE_METEOR_BURN_DAMAGE
@ SPELL_MAGE_PHOENIX_FLAMES_DAMAGE
@ SPELL_MAGE_COMET_STORM_DAMAGE
@ SPELL_MAGE_WILDFIRE_TALENT
@ SPELL_PET_NETHERWINDS_FATIGUED
@ SPELL_MAGE_MASTER_OF_TIME
@ SPELL_MAGE_COMET_STORM_VISUAL
@ SPELL_MAGE_PHOENIX_FLAMES
@ SPELL_MAGE_INCANTERS_FLOW
@ SPELL_MAGE_FLAME_PATCH_TALENT
@ SPELL_MAGE_GIRAFFE_FORM
@ SPELL_MAGE_CONE_OF_COLD_SLOW
@ SPELL_MAGE_FINGERS_OF_FROST
@ SPELL_MAGE_PYROTECHNICS
@ SPELL_MAGE_BLIZZARD_DAMAGE
@ SPELL_MAGE_DRAGONS_BREATH
@ SPELL_MAGE_FLURRY_DAMAGE
@ SPELL_MAGE_ALTER_TIME_VISUAL
@ SPELL_MAGE_DRAGONHAWK_FORM
@ SPELL_MAGE_RING_OF_FROST_FREEZE
@ SPELL_MAGE_ICE_LANCE_TRIGGER
@ SPELL_MAGE_SQUIRREL_FORM
@ SPELL_MAGE_LIVING_BOMB_EXPLOSION
@ SPELL_MAGE_CONE_OF_COLD
@ SPELL_MAGE_EVERWARM_SOCKS
@ SPELL_MAGE_CHAIN_REACTION
@ SPELL_MAGE_FEEL_THE_BURN
@ SPELL_MAGE_SPONTANEOUS_COMBUSTION
@ SPELL_MAGE_RAY_OF_FROST_FINGERS_OF_FROST
@ SPELL_MAGE_SERPENT_FORM
@ SPELL_MAGE_BLIZZARD_SLOW
@ SPELL_MAGE_IMPROVED_COMBUSTION
@ SPELL_MAGE_CAUTERIZE_DOT
@ SPELL_MAGE_THERMAL_VOID
@ SPELL_MAGE_FLAME_PATCH_DAMAGE
@ SPELL_MAGE_ARCANE_BARRAGE_R3
@ SPELL_MAGE_FIERY_RUSH_AURA
@ SPELL_MAGE_RING_OF_FROST_DUMMY
@ SPELL_MAGE_CHAIN_REACTION_DUMMY
@ SPELL_MAGE_METEOR_MISSILE
constexpr float GetPositionX() const
constexpr float GetPositionY() const
constexpr void GetPosition(float &x, float &y) const
constexpr float GetPositionZ() const
uint32 CustomBasePointsMask
SpellEffectValue EffectBasePoints[MAX_SPELL_EFFECTS]
void OnUpdate(uint32 diff) override
static constexpr Milliseconds TICK_PERIOD
areatrigger_mage_blizzard(AreaTrigger *areatrigger)
void OnCreate(Spell const *) override
void OnUpdate(uint32 diff) override
void OnUnitEnter(Unit *unit) override
void OnUnitExit(Unit *unit, AreaTriggerExitReason) override