173 caster->
CastSpell(caster, spellId, aurEff);
510 canBeRecalculated =
false;
514 float bonus = 0.8068f;
516 bonus *= caster->SpellBaseHealingBonusDone(
GetSpellInfo()->GetSchoolMask());
517 bonus *= caster->CalculateSpellpowerCoefficientLevelPenalty(
GetSpellInfo());
519 amount +=
int32(bonus);
528 int32 chance = talentAurEff->GetSpellInfo()->GetEffect(
EFFECT_1).CalcValue();
774 canBeRecalculated =
false;
778 float bonus = 0.8068f;
780 bonus *= caster->SpellBaseHealingBonusDone(
GetSpellInfo()->GetSchoolMask());
786 bonus *= caster->CalculateSpellpowerCoefficientLevelPenalty(
GetSpellInfo());
788 amount +=
int32(bonus);
845 return damageInfo && damageInfo->
GetDamage();
935 canBeRecalculated =
false;
939 float bonus = 0.8053f;
941 bonus *= caster->SpellBaseHealingBonusDone(
GetSpellInfo()->GetSchoolMask());
942 bonus *= caster->CalculateSpellpowerCoefficientLevelPenalty(
GetSpellInfo());
944 amount +=
int32(bonus);
1082 missiles->AllowT10Proc();
1092 static char constexpr const ScriptName[] =
"spell_mage_arcane_missiles";
uint32 urand(uint32 min, uint32 max)
bool roll_chance_i(int chance)
#define RegisterSpellScript(spell_script)
@ SPELL_EFFECT_KNOCK_BACK
@ SPELL_SCHOOL_MASK_FROST
@ AURA_REMOVE_BY_ENEMY_SPELL
@ AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK
@ AURA_EFFECT_HANDLE_REAL
@ SPELL_AURA_PERIODIC_DAMAGE
@ SPELL_AURA_PROC_TRIGGER_SPELL
@ SPELL_AURA_HASTE_SPELLS
@ SPELL_AURA_ADD_FLAT_MODIFIER
@ SPELL_AURA_MOD_SPELL_CRIT_CHANCE
@ SPELL_AURA_PERIODIC_DAMAGE_PERCENT
@ SPELL_AURA_MOD_DECREASE_SPEED
@ SPELL_AURA_SCHOOL_ABSORB
@ SPELL_AURA_PERIODIC_LEECH
@ SPELL_AURA_PERIODIC_DUMMY
@ SPELL_AURA_OVERRIDE_CLASS_SCRIPTS
@ SPELL_AURA_PERIODIC_TRIGGER_SPELL
#define AuraEffectManaShieldFn(F, I)
#define AuraEffectProcFn(F, I, N)
#define SpellEffectFn(F, I, N)
#define AuraEffectCalcAmountFn(F, I, N)
#define AuraEffectPeriodicFn(F, I, N)
#define AuraEffectAbsorbFn(F, I)
#define AuraEffectApplyFn(F, I, N, M)
#define AuraCheckProcFn(F)
#define AuraEffectRemoveFn(F, I, N, M)
T CalculatePct(T base, U pct)
AuraRemoveMode GetRemoveMode() const
SpellEffIndex GetEffIndex() const
SpellEffectInfo const & GetSpellEffectInfo() const
void SetAmount(int32 amount)
HookList< EffectManaShieldHandler > AfterEffectManaShield
void PreventDefaultAction()
AuraApplication const * GetTargetApplication() const
HookList< EffectApplyHandler > AfterEffectRemove
HookList< EffectPeriodicHandler > OnEffectPeriodic
SpellInfo const * GetSpellInfo() const
HookList< EffectApplyHandler > AfterEffectApply
HookList< EffectAbsorbHandler > AfterEffectAbsorb
HookList< EffectCalcAmountHandler > DoEffectCalcAmount
AuraEffect * GetEffect(uint8 effIndex) const
HookList< EffectAbsorbHandler > OnEffectAbsorb
HookList< CheckProcHandler > DoCheckProc
HookList< EffectProcHandler > OnEffectProc
HookList< AuraProcHandler > OnProc
void AbsorbDamage(uint32 amount)
SpellInfo const * GetSpellInfo() const
SpellSchoolMask GetSchoolMask() const
static ObjectGuid const Empty
uint32 GetHitMask() const
Unit * GetActionTarget() const
SpellInfo const * GetSpellInfo() const
DamageInfo * GetDamageInfo() const
void ResetCooldowns(Predicate predicate, bool update=false)
uint32 GetMaxTicks() const
uint32 GetRecoveryTime() const
SpellSchoolMask GetSchoolMask() const
int32 CalcPowerCost(WorldObject const *caster, SpellSchoolMask schoolMask, Spell *spell=nullptr) const
SpellEffectInfo const & GetEffect(SpellEffIndex index) const
uint32 ExcludeCasterAuraSpell
HookList< HitHandler > AfterHit
HookList< EffectHandler > OnEffectHit
void PreventHitDefaultEffect(SpellEffIndex effIndex)
HookList< EffectHandler > OnEffectHitTarget
SpellInfo const * GetSpellInfo() const
void RemoveAurasByType(AuraType auraType, std::function< bool(AuraApplication const *)> const &check, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Aura * GetAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint8 reqEffMask=0) const
Aura * GetAuraOfRankedSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint8 reqEffMask=0) const
AuraEffect * GetAuraEffect(uint32 spellId, uint8 effIndex, ObjectGuid casterGUID=ObjectGuid::Empty) const
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint8 reqEffMask=0) const
uint32 GetMaxPower(Powers power) const
AuraEffect * GetAuraEffectOfRankedSpell(uint32 spellId, uint8 effIndex, ObjectGuid casterGUID=ObjectGuid::Empty) const
void RemoveAuraFromStack(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint8 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
SpellHistory * GetSpellHistory()
uint32 GetCreateMana() const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
PrepareAuraScript(spell_mage_arcane_missiles)
void OnRemove(AuraEffect const *aurEff, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
PrepareAuraScript(spell_mage_arcane_potency)
bool CheckProc(ProcEventInfo &eventInfo)
void HandleKnockBack(SpellEffIndex effIndex)
PrepareSpellScript(spell_mage_blast_wave)
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
PrepareAuraScript(spell_mage_blazing_speed)
bool Validate(SpellInfo const *) override
PrepareAuraScript(spell_mage_burning_determination)
bool CheckProc(ProcEventInfo &eventInfo)
void HandleProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
bool CheckProc(ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
PrepareAuraScript(spell_mage_burnout)
void HandleDummy(SpellEffIndex)
PrepareSpellScript(spell_mage_cold_snap)
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
PrepareAuraScript(spell_mage_combustion_proc)
bool Validate(SpellInfo const *) override
bool CheckProc(ProcEventInfo &eventInfo)
PrepareAuraScript(spell_mage_combustion)
bool CheckProc(ProcEventInfo &eventInfo)
PrepareAuraScript(spell_mage_dragon_breath)
PrepareAuraScript(spell_mage_empowered_fire)
void HandleProc(AuraEffect const *aurEff, ProcEventInfo &)
bool Validate(SpellInfo const *) override
bool CheckProc(ProcEventInfo &eventInfo)
void HandleDummy(AuraEffect const *, ProcEventInfo &eventInfo)
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
PrepareAuraScript(spell_mage_fingers_of_frost)
void CalculateAmount(AuraEffect const *, int32 &amount, bool &canBeRecalculated)
void Absorb(AuraEffect *aurEff, DamageInfo &dmgInfo, uint32 &absorbAmount)
bool Validate(SpellInfo const *) override
PrepareAuraScript(spell_mage_fire_frost_ward)
void HandleProc(AuraEffect const *aurEff, ProcEventInfo &)
bool CheckProc(ProcEventInfo &)
PrepareAuraScript(spell_mage_focus_magic)
bool Validate(SpellInfo const *) override
void ApplyPermafrost(AuraEffect const *aurEff, AuraEffectHandleModes)
PrepareAuraScript(spell_mage_frostfire_bolt)
void RemovePermafrost(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect const *, ProcEventInfo &eventInfo)
PrepareAuraScript(spell_mage_glyph_of_ice_block)
PrepareAuraScript(spell_mage_glyph_of_icy_veins)
void HandleProc(AuraEffect const *, ProcEventInfo &eventInfo)
PrepareAuraScript(spell_mage_glyph_of_polymorph)
void HandleProc(AuraEffect const *, ProcEventInfo &eventInfo)
PrepareAuraScript(spell_mage_hot_streak)
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
void AfterRemove(AuraEffect const *aurEff, AuraEffectHandleModes)
void CalculateAmount(AuraEffect const *aurEff, int32 &amount, bool &canBeRecalculated)
PrepareAuraScript(spell_mage_ice_barrier)
bool Validate(SpellInfo const *spellInfo) override
PrepareSpellScript(spell_mage_ice_block)
void TriggerHypothermia()
void HandleProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
bool CheckProc(ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
PrepareAuraScript(spell_mage_ignite)
PrepareAuraScript(spell_mage_imp_blizzard)
bool Validate(SpellInfo const *) override
void HandleChill(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
PrepareAuraScript(spell_mage_imp_mana_gems)
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
void Trigger(AuraEffect *aurEff, DamageInfo &, uint32 &absorbAmount)
PrepareAuraScript(spell_mage_living_bomb)
void AfterRemove(AuraEffect const *aurEff, AuraEffectHandleModes)
bool Validate(SpellInfo const *spell) override
void HandleProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
PrepareAuraScript(spell_mage_magic_absorption)
void CalculateAmount(AuraEffect const *, int32 &amount, bool &canBeRecalculated)
bool Validate(SpellInfo const *spellInfo) override
PrepareAuraScript(spell_mage_mana_shield)
void HandleProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
bool CheckProc(ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
PrepareAuraScript(spell_mage_master_of_elements)
void HandleProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
PrepareAuraScript(spell_mage_mirror_image)
void PeriodicTick(AuraEffect const *aurEff)
bool Validate(SpellInfo const *spellInfo) override
bool CheckProc(ProcEventInfo &eventInfo)
PrepareAuraScript(spell_mage_missile_barrage_proc)
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
static char constexpr const ScriptName[]
PrepareAuraScript(spell_mage_missile_barrage)
bool CheckProc(ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
PrepareSpellScript(spell_mage_polymorph_cast_visual_SpellScript)
static const uint32 PolymorphForms[6]
void HandleDummy(SpellEffIndex)
SpellScript * GetSpellScript() const override
spell_mage_polymorph_cast_visual()
PrepareSpellScript(spell_mage_summon_water_elemental)
bool Validate(SpellInfo const *) override
void HandleDummy(SpellEffIndex)
void AddSC_mage_spell_scripts()
@ SPELL_ICON_MAGE_PRESENCE_OF_MIND
@ SPELL_ICON_MAGE_SHATTERED_BARRIER
@ SPELL_ICON_MAGE_CLEARCASTING
@ SPELL_ICON_MAGE_LIVING_BOMB
@ SPELL_MAGE_SUMMON_WATER_ELEMENTAL_TEMPORARY
@ SPELL_MAGE_T10_2P_BONUS
@ SPELL_MAGE_FROST_WARDING_R1
@ SPELL_MAGE_ARCANE_POTENCY_RANK_1
@ SPELL_MAGE_PERMAFROST_AURA
@ SPELL_MAGE_FINGERS_OF_FROST_AURASTATE_AURA
@ SPELL_MAGE_INCANTERS_ABSORBTION_R1
@ SPELL_MAGE_ARCANE_SURGE
@ SPELL_MAGE_EMPOWERED_FIRE_PROC
@ SPELL_MAGE_FOCUS_MAGIC_PROC
@ SPELL_MAGE_GIRAFFE_FORM
@ SPELL_MAGE_MASTER_OF_ELEMENTS_ENERGIZE
@ SPELL_MAGE_ARCANE_POTENCY_RANK_2
@ SPELL_MAGE_ARCANE_MISSILES_R1
@ SPELL_MAGE_SHATTERED_BARRIER
@ SPELL_MAGE_DRAGONHAWK_FORM
@ SPELL_MAGE_SQUIRREL_FORM
@ SPELL_MAGE_SUMMON_WATER_ELEMENTAL_PERMANENT
@ SPELL_MAGE_T10_2P_BONUS_EFFECT
@ SPELL_MAGE_GLYPH_OF_BLAST_WAVE
@ SPELL_MAGE_COMBUSTION_PROC
@ SPELL_MAGE_INCANTERS_ABSORBTION_TRIGGERED
@ SPELL_MAGE_SERPENT_FORM
@ SPELL_MAGE_GLYPH_OF_ETERNAL_WATER
@ SPELL_MAGE_MISSILE_BARRAGE
@ SPELL_MAGE_HOT_STREAK_PROC
@ SPELL_MAGE_BLAZING_SPEED
@ SPELL_MAGE_FROST_WARDING_TRIGGERED
@ SPELL_MAGE_MAGIC_ABSORPTION_MANA