158 .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR,
159 .TriggeringAura = aurEff
184 if (
GetTarget()->HealthBelowPct(targetHealthPercent))
307 extraDuration = duration_cast<Milliseconds>(
FloatSeconds(durationEffect->GetAmount()));
311 avengingWrath->SetDuration(avengingWrath->GetDuration() + extraDuration.count());
312 avengingWrath->SetMaxDuration(avengingWrath->GetMaxDuration() + extraDuration.count());
458 if (caster->IsValidAttackTarget(unit))
665 caster->
CastSpell(caster, spellId,
true);
704 if (victim == caster)
724 if (victim == caster)
789 .TriggeringAura = aurEff,
908 if (targets.size() > maxTargets)
911 targets.resize(maxTargets);
1130 uint8 const maxTargets = 5;
1132 if (targets.size() > maxTargets)
1137 targets.resize(maxTargets);
1382 if (!healInfo || !healInfo->
GetHeal())
1388 for (Unit::AuraList::const_iterator itr = auras.begin(); itr != auras.end(); ++itr)
1392 std::vector<AuraApplication*> applications;
1393 (*itr)->GetApplicationVector(applications);
1394 if (!applications.empty())
1607 .TriggeringAura = aurEff,
1682 caster->
CastSpell(target, spellId, aurEff);
1705 if (!healInfo || !healInfo->
GetHeal())
DB2Storage< SpellVisualEntry > sSpellVisualStore("SpellVisual.db2", &SpellVisualLoadInfo::Instance)
DB2Storage< SpellVisualKitEntry > sSpellVisualKitStore("SpellVisualKit.db2", &SpellVisualKitLoadInfo::Instance)
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
std::chrono::duration< double, Seconds::period > FloatSeconds
std::chrono::seconds Seconds
Seconds shorthand typedef.
std::optional< T > Optional
Optional helper class to wrap optional values within.
@ RACE_LIGHTFORGED_DRAENEI
bool roll_chance(T chance)
#define RegisterSpellAndAuraScriptPair(script_1, script_2)
#define RegisterAreaTriggerAI(ai_name)
#define RegisterSpellScript(spell_script)
@ TARGET_UNIT_DEST_AREA_ALLY
@ TARGET_UNIT_DEST_AREA_ENEMY
@ TARGET_UNIT_TARGET_ENEMY
@ TARGET_UNIT_DEST_AREA_ENTRY
@ SPELL_EFFECT_SCRIPT_EFFECT
@ SPELL_EFFECT_TRIGGER_SPELL
@ SPELL_EFFECT_SCHOOL_DAMAGE
@ SPELL_EFFECT_APPLY_AURA
@ SPELL_FAILED_UNIT_NOT_INFRONT
@ SPELL_FAILED_BAD_TARGETS
@ AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK
@ AURA_EFFECT_HANDLE_REAL
@ SPELL_AURA_ADD_PCT_MODIFIER
@ SPELL_AURA_PROC_TRIGGER_SPELL
@ SPELL_AURA_ADD_FLAT_MODIFIER
@ SPELL_AURA_PERIODIC_HEAL
@ SPELL_AURA_MOD_VERSATILITY
@ SPELL_AURA_SCHOOL_ABSORB
@ SPELL_AURA_PERIODIC_DUMMY
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_SPELL_AND_CATEGORY_CD
Will ignore Spell and Category cooldowns.
@ 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 SpellObjectTargetSelectFn(F, I, N)
#define SpellCheckCastFn(F)
#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 AuraCheckEffectProcFn(F, I, N)
#define AuraEffectCalcHealingFn(F, I, N)
#define SpellCalcDamageFn(F)
#define AuraEffectApplyFn(F, I, N, M)
#define AuraEffectSplitFn(F, I)
#define AuraEffectAbsorbOverkillFn(F, I)
#define AuraCheckProcFn(F)
#define SpellCalcHealingFn(F)
#define AuraEffectRemoveFn(F, I, N, M)
@ CR_VERSATILITY_DAMAGE_DONE
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)
int32 GetAmountAsInt() const
SpellEffectValue GetAmount() const
HookList< EffectCalcDamageAndHealingHandler > DoEffectCalcDamageAndHealing
void PreventDefaultAction()
AuraApplication const * GetTargetApplication() const
HookList< EffectApplyHandler > AfterEffectRemove
HookList< CheckEffectProcHandler > DoCheckEffectProc
HookList< EffectPeriodicHandler > OnEffectPeriodic
HookList< EffectApplyHandler > AfterEffectApply
HookList< EffectCalcAmountHandler > DoEffectCalcAmount
SpellEffectInfo const & GetEffectInfo(SpellEffIndex effIndex) const
AuraEffect * GetEffect(uint8 effIndex) const
HookList< EffectAbsorbHandler > OnEffectAbsorb
Difficulty GetCastDifficulty() const
HookList< CheckProcHandler > DoCheckProc
HookList< EffectApplyHandler > OnEffectRemove
HookList< EffectProcHandler > OnEffectProc
Unit * GetUnitOwner() const
uint8 GetStackAmount() const
HookList< EffectAbsorbHandler > OnEffectSplit
ObjectGuid const & GetGUID() const
uint32 GetOriginalDamage() const
HealInfo * GetHealInfo() const
SpellSchoolMask GetSchoolMask() const
Unit * GetActionTarget() const
Spell const * GetProcSpell() const
SpellInfo const * GetSpellInfo() const
DamageInfo * GetDamageInfo() const
Unit * GetProcTarget() const
SpellEffectValue CalcValue(WorldObject const *caster=nullptr, SpellEffectValue const *basePoints=nullptr, Unit const *target=nullptr, float *variance=nullptr, uint32 castItemId=0, int32 itemLevel=-1) const
uint32 GetPeriodicTickCount() const
void ResetCooldown(uint32 spellId, bool update=false)
void ModifyCooldown(uint32 spellId, Duration cooldownMod, bool withoutCategoryCooldown=false)
uint32 ExcludeTargetAuraSpell
bool IsAffected(uint32 familyName, flag128 const &familyFlags) const
uint32 MaxAffectedTargets
SpellEffectInfo const & GetEffect(SpellEffIndex index) const
uint32 ExcludeCasterAuraSpell
bool HasLabel(uint32 labelId) 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
HookList< CheckCastHandler > OnCheckCast
HookList< HitHandler > AfterHit
SpellEffectValue GetEffectValue() const
HookList< HitHandler > OnHit
Unit * GetHitUnit() const
SpellEffectInfo const & GetEffectInfo() const
HookList< EffectHandler > OnEffectHitTarget
HookList< ObjectTargetSelectHandler > OnObjectTargetSelect
HookList< CastHandler > OnCast
WorldObject * GetExplTargetWorldObject() const
HookList< DamageAndHealingCalcHandler > CalcHealing
Unit * GetExplTargetUnit() const
SpellInfo const * GetSpellInfo() const
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
bool HasPowerTypeCost(Powers power) const
UsedSpellMods m_appliedMods
std::vector< T > & GetExecuteLogEffectTargets(SpellEffectName effect, Optional< std::vector< T > > SpellLogEffect::*member)
Binary predicate for sorting Units based on percent value of health.
void RemoveAura(AuraApplicationMap::iterator &i, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
void SendPlaySpellVisual(Unit *target, uint32 spellVisualId, uint8 missReason, uint8 reflectStatus, float travelSpeed, bool speedAsTime=false, float launchDelay=0.0f)
virtual bool HasSpell(uint32) const
uint32 GetCreatureType() const
std::forward_list< Aura * > AuraList
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
SpellHistory * GetSpellHistory()
AuraList & GetSingleCastAuras()
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 IsValidAttackTarget(WorldObject const *target, SpellInfo const *bySpell=nullptr) const
bool isInFront(WorldObject const *target, float arc=float(M_PI)) const
bool IsFriendlyTo(WorldObject const *target) const
static void HandleEffectProc(AuraScript const &, AuraEffect const *aurEff, ProcEventInfo const &eventInfo)
bool Validate(SpellInfo const *) override
void HandleAbsorb(AuraEffect const *aurEff, DamageInfo const &dmgInfo, uint32 &absorbAmount)
bool Validate(SpellInfo const *spellInfo) override
bool Validate(SpellInfo const *) override
bool CheckProc(AuraEffect const *aurEff, ProcEventInfo &)
void HandleProc(AuraEffect *, ProcEventInfo &)
void HandleProc(AuraEffect *, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *spellInfo) override
bool CheckProc(AuraEffect const *aurEff, ProcEventInfo &)
void RemoveExplicitTarget(std::list< WorldObject * > &targets) const
bool Validate(SpellInfo const *spellInfo) override
static void PreventProc(SpellScript const &, WorldObject *&target)
bool Validate(SpellInfo const *spellInfo) override
void TriggerForbearance() const
void HandleDummy(SpellEffIndex) const
bool Validate(SpellInfo const *) override
void HandleEffectPeriodic(AuraEffect const *)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleEffectProc(AuraEffect *aurEff, ProcEventInfo &)
void HandleEffectProc(AuraEffect const *aurEff, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleEnergize() const
void HandleProc(AuraEffect *, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
bool CheckProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *spellInfo) override
void TriggerForbearance() const
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *spellInfo) override
void CalculateHealing(AuraEffect const *, Unit const *victim, int32 &, int32 &, float &pctMod) const
bool Validate(SpellInfo const *spellInfo) override
void CalculateHealing(SpellEffectInfo const &, Unit const *victim, int32 &, int32 &, float &pctMod) const
bool Validate(SpellInfo const *spellInfo) override
void AfterRemove(AuraEffect const *aurEff, AuraEffectHandleModes) const
void HandleProc(AuraEffect *aurEff, ProcEventInfo const &eventInfo) const
void HandleVisual(SpellEffIndex) const
bool Validate(SpellInfo const *) override
void HandleEffectProc(AuraEffect *, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleDummy(SpellEffIndex) const
bool CheckEffectProc(AuraEffect const *, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
void HandleEffectProc(AuraEffect *aurEff, ProcEventInfo &)
void FilterTargets(std::list< WorldObject * > &targets)
void HandleEffectProc(AuraEffect *, ProcEventInfo &)
bool CheckProc(ProcEventInfo &)
bool Validate(SpellInfo const *) override
spell_pal_hand_of_sacrifice()
void Split(AuraEffect *, DamageInfo &, uint32 &splitAmount)
std::list< WorldObject * > _sharedTargets
void SaveTargetGuid(SpellEffIndex)
void ShareTargets(std::list< WorldObject * > &targets)
void HandleScript(SpellEffIndex)
bool Validate(SpellInfo const *) override
void FilterTargets(std::list< WorldObject * > &targets)
void HandleDummy(SpellEffIndex)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
SpellCastResult CheckCast()
void HandleDummy(SpellEffIndex)
bool Validate(SpellInfo const *) override
bool CheckHolyLightProc(AuraEffect const *, ProcEventInfo &eventInfo)
bool CheckFlashOfLightProc(AuraEffect const *, ProcEventInfo &eventInfo)
static constexpr flag128 HolyLightSpellClassMask
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect *, ProcEventInfo &eventInfo)
void HandleProc(AuraEffect *aurEff, ProcEventInfo &)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect *aurEff, ProcEventInfo &eventInfo)
void HandleOnCast() const
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *spellInfo) override
void HandleDamage(SpellEffectInfo const &, Unit const *victim, int32 &, int32 &, float &pctMod) const
bool Validate(SpellInfo const *spellInfo) override
void TriggerForbearance() const
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleEffectPeriodic(AuraEffect const *)
void HandleProc(AuraEffect *aurEff, ProcEventInfo &eventInfo)
bool CheckProc(ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleEffectProc(AuraEffect *aurEff, ProcEventInfo &)
bool CheckEffectProc(AuraEffect const *, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
Optional< SpellPowerCost > _baseHolyPowerCost
bool Validate(SpellInfo const *) override
void HandleEffectProc(AuraEffect *, ProcEventInfo &procInfo)
bool CheckEffectProc(AuraEffect const *, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *spellInfo) override
void HandleRemove(AuraEffect const *aurEff, AuraEffectHandleModes)
SpellEffectValue _initialAmount
void CalculateAmount(AuraEffect const *, SpellEffectValue &amount, bool &)
void HandleProc(AuraEffect const *aurEff, ProcEventInfo const &) const
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect *aurEff, ProcEventInfo &procInfo)
bool CheckProc(AuraEffect const *, ProcEventInfo &procInfo)
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect *aurEff, ProcEventInfo &procInfo)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect *aurEff, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect *aurEff, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
void HandleHitTarget(SpellEffIndex)
bool Validate(SpellInfo const *) override
void HandleHitTarget(SpellEffIndex) const
bool Validate(SpellInfo const *) override
void HandleEffectProc(AuraEffect *aurEff, ProcEventInfo &)
TC_GAME_API Unit * GetUnit(WorldObject const &, ObjectGuid const &guid)
void RandomResize(C &container, std::size_t requestedSize)
@ PALADIN_VISUAL_KIT_DIVINE_STORM
@ SPELL_LABEL_PALADIN_T30_2P_HEARTFIRE
@ SPELL_PALADIN_DIVINE_STORM_DAMAGE
@ SPELL_PALADIN_HOLY_POWER_MP5
@ SPELL_PALADIN_DIVINE_STEED_ZANDALARI_TROLL
@ SPELL_PALADIN_HOLY_SHOCK_DAMAGE
@ SPELL_PALADIN_DIVINE_STEED_BLOODELF
@ SPELL_PALADIN_DIVINE_STEED_DWARF
@ SPELL_PALADIN_DIVINE_PURPOSE_TRIGGERED
@ SPELL_PALADIN_BLADE_OF_JUSTICE
@ SPELL_PALADIN_BLESSING_OF_FREEDOM
@ SPELL_PALADIN_HOLY_MENDING
@ SPELL_PALADIN_LIGHT_HAMMER_COSMETIC
@ SPELL_PALADIN_SHIELD_OF_VENGEANCE_DAMAGE
@ SPELL_PALADIN_HOLY_PRISM_AREA_BEAM_VISUAL
@ SPELL_PALADIN_HOLY_POWER_ARMOR
@ SPELL_PALADIN_HOLY_SHOCK_HEALING
@ SPELL_PALADIN_ARDENT_DEFENDER_HEAL
@ SPELL_PALADIN_CONSECRATION_DAMAGE
@ SPELL_PALADIN_EXECUTION_SENTENCE_11_SECONDS
@ SPELL_PALADIN_A_JUST_REWARD_HEAL
@ SPELL_PALADIN_HOLY_PRISM_TARGET_ENEMY
@ SPELL_PALADIN_DIVINE_AUXILIARY_ENERGIZE
@ SPELL_PALADIN_HOLY_POWER_SPELL_POWER
@ SPELL_PALADIN_DIVINE_AUXILIARY_TALENT
@ SPELL_PALADIN_TEMPLAR_VERDICT_DAMAGE
@ SPELL_PALADIN_FINAL_STAND_EFFECT
@ SPELL_PALADIN_LIGHT_HAMMER_DAMAGE
@ SPELL_PALADIN_ZEAL_AURA
@ SPELL_PALADIN_BEACON_OF_LIGHT_HEAL
@ SPELL_PALADIN_DIVINE_STEED_TAUREN
@ SPELL_PALADIN_FINAL_VERDICT
@ SPELL_PALADIN_EXECUTIONERS_WILL
@ SPELL_PALADIN_DIVINE_STEED_DRAENEI
@ SPELL_PALADIN_DIVINE_STEED_DARK_IRON_DWARF
@ SPELL_PALADIN_T30_2P_HEARTFIRE_HEAL
@ SPELL_PALADIN_CRUSADING_STRIKES_ENERGIZE
@ SPELL_PALADIN_LIGHT_HAMMER_PERIODIC
@ SPELL_PALADIN_AVENGING_WRATH
@ SPELL_PALADIN_DIVINE_STEED_LF_DRAENEI
@ SPELL_PALADIN_BLADE_OF_VENGEANCE
@ SPELL_PALADIN_BLINDING_LIGHT_EFFECT
@ SPELL_PALADIN_SEAL_OF_RIGHTEOUSNESS
@ SPELL_PALADIN_EYE_FOR_AN_EYE_TRIGGERED
@ SPELL_PALADIN_RIGHTEOUS_DEFENSE_TAUNT
@ SPELL_PALADIN_JUDGMENT_RANK_3
@ SPELL_PALADIN_INFUSION_OF_LIGHT_ENERGIZE
@ SPELL_PALADIN_HOLY_PRISM_TARGET_BEAM_VISUAL
@ SPELL_PALADIN_LIGHT_HAMMER_HEALING
@ SPELL_PALADIN_GUARDIAN_OF_ANCIENT_KINGS
@ SPELL_PALADIN_HOLY_SHOCK
@ SPELL_PALADIN_FINAL_STAND
@ SPELL_PALADIN_CONCENTRACTION_AURA
@ SPELL_PALADIN_FORBEARANCE
@ SPELL_PALADIN_CONSECRATION_DEBUFF
@ SPELL_PALADIN_RIGHTEOUS_VERDICT_AURA
@ SPELL_PALADIN_ENDURING_LIGHT
@ SPELL_PALADIN_ETERNAL_FLAME
@ SPELL_PALADIN_HAND_OF_SACRIFICE
@ SPELL_PALADIN_HAMMER_OF_THE_RIGHTEOUS_AOE
@ SPELL_PALADIN_JUDGMENT_GAIN_HOLY_POWER
@ SPELL_PALADIN_WAKE_OF_ASHES_STUN
@ SPELL_PALADIN_IMMUNE_SHIELD_MARKER
@ SPELL_PALADIN_AVENGERS_SHIELD
@ SPELL_PALADIN_ITEM_HEALING_TRANCE
@ SPELL_PALADIN_HOLY_PRISM_TARGET_ALLY
@ SPELL_PALADIN_SHIELD_OF_THE_RIGHTEOUS_ARMOR
@ SPELL_PALADIN_HOLY_POWER_ATTACK_POWER
@ SPELL_PALADIN_CONSECRATION_PROTECTION_AURA
@ SPELL_PALADIN_DIVINE_STEED_HUMAN
@ SPELL_PALADIN_EXECUTION_SENTENCE_DAMAGE
@ SPELL_PALADIN_EXECUTION_SENTENCE_8_SECONDS
@ SPELL_PALADIN_BEACON_OF_LIGHT
@ SPELL_PALADIN_ENDURING_JUDGEMENT
@ SPELL_PALADIN_HOLY_LIGHT
@ SPELL_PALADIN_HAMMER_OF_JUSTICE
@ SPELL_PALADIN_CONSECRATION
@ SPELL_PALADIN_T30_2P_HEARTFIRE_DAMAGE
@ SPELL_PALADIN_ART_OF_WAR_TRIGGERED
void AddSC_paladin_spell_scripts()
@ PALADIN_VISUAL_SPELL_HOLY_SHOCK_DAMAGE
@ PALADIN_VISUAL_SPELL_HOLY_SHOCK_HEAL
@ PALADIN_VISUAL_SPELL_HOLY_SHOCK_HEAL_CRIT
@ PALADIN_VISUAL_SPELL_HOLY_SHOCK_DAMAGE_CRIT
@ SPELL_PALADIN_ASHEN_HALLOW
@ SPELL_PALADIN_ASHEN_HALLOW_ALLOW_HAMMER
@ SPELL_PALADIN_ASHEN_HALLOW_DAMAGE
@ SPELL_PALADIN_ASHEN_HALLOW_HEAL
constexpr void GetPosition(float &x, float &y) const
Optional< std::vector< SpellLogEffectGenericVictimParams > > GenericVictimTargets
void OnUpdate(uint32 diff) override
void OnCreate(Spell const *) override
areatrigger_pal_ashen_hallow(AreaTrigger *areatrigger)
Milliseconds _refreshTimer
void OnUnitExit(Unit *unit, AreaTriggerExitReason) override
void OnUnitEnter(Unit *unit) override
void OnUnitEnter(Unit *unit) override
void OnUnitExit(Unit *unit, AreaTriggerExitReason) override
void HandleAoEHit(SpellEffIndex)
bool Validate(SpellInfo const *) override