153 if (
GetTarget()->HealthBelowPct(targetHealthPercent))
276 extraDuration =
Seconds(durationEffect->GetAmount());
280 avengingWrath->SetDuration(avengingWrath->GetDuration() + extraDuration.count());
281 avengingWrath->SetMaxDuration(avengingWrath->GetMaxDuration() + extraDuration.count());
397 if (caster->IsValidAttackTarget(unit))
586 caster->
CastSpell(caster, spellId,
true);
695 if (targets.size() > maxTargets)
698 targets.resize(maxTargets);
896 uint8 const maxTargets = 5;
898 if (targets.size() > maxTargets)
903 targets.resize(maxTargets);
1162 if (!healInfo || !healInfo->
GetHeal())
1168 for (Unit::AuraList::const_iterator itr = auras.begin(); itr != auras.end(); ++itr)
1172 std::vector<AuraApplication*> applications;
1173 (*itr)->GetApplicationVector(applications);
1174 if (!applications.empty())
1438 caster->
CastSpell(target, spellId, aurEff);
1460 if (!healInfo || !healInfo->
GetHeal())
DB2Storage< SpellVisualEntry > sSpellVisualStore("SpellVisual.db2", &SpellVisualLoadInfo::Instance)
DB2Storage< SpellVisualKitEntry > sSpellVisualKitStore("SpellVisualKit.db2", &SpellVisualKitLoadInfo::Instance)
std::chrono::seconds Seconds
Seconds shorthand typedef.
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
std::optional< T > Optional
Optional helper class to wrap optional values within.
@ RACE_LIGHTFORGED_DRAENEI
bool roll_chance_i(int chance)
#define RegisterAreaTriggerAI(ai_name)
#define RegisterSpellScript(spell_script)
@ TARGET_UNIT_DEST_AREA_ALLY
@ TARGET_UNIT_DEST_AREA_ENEMY
@ TARGET_UNIT_DEST_AREA_ENTRY
@ SPELL_EFFECT_SCRIPT_EFFECT
@ SPELL_EFFECT_SCHOOL_DAMAGE
@ SPELL_EFFECT_APPLY_AURA
@ SPELL_FAILED_UNIT_NOT_INFRONT
@ SPELL_FAILED_TARGET_AURASTATE
@ 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_MOD_VERSATILITY
@ SPELL_AURA_SCHOOL_ABSORB
@ SPELL_AURA_PERIODIC_DUMMY
@ 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.
#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 AuraEffectApplyFn(F, I, N, M)
#define AuraEffectSplitFn(F, I)
#define AuraEffectAbsorbOverkillFn(F, I)
#define AuraCheckProcFn(F)
@ CR_VERSATILITY_DAMAGE_DONE
T CalculatePct(T base, U pct)
ObjectGuid const & GetCasterGuid() const
void PreventDefaultAction()
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
void Remove(AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
HookList< EffectProcHandler > OnEffectProc
Unit * GetUnitOwner() const
uint8 GetStackAmount() const
HookList< EffectAbsorbHandler > OnEffectSplit
uint32 GetOriginalDamage() const
static ObjectGuid GetGUID(Object const *o)
HealInfo * GetHealInfo() const
SpellSchoolMask GetSchoolMask() const
Unit * GetActionTarget() const
Spell const * GetProcSpell() const
SpellInfo const * GetSpellInfo() const
DamageInfo * GetDamageInfo() const
Unit * GetProcTarget() const
int32 CalcValue(WorldObject const *caster=nullptr, int32 const *basePoints=nullptr, Unit const *target=nullptr, float *variance=nullptr, uint32 castItemId=0, int32 itemLevel=-1) const
void ResetCooldown(uint32 spellId, bool update=false)
void ModifyCooldown(uint32 spellId, Duration cooldownMod, bool withoutCategoryCooldown=false)
uint32 GetMaxTicks() const
uint32 ExcludeTargetAuraSpell
bool IsAffected(uint32 familyName, flag128 const &familyFlags) const
uint32 MaxAffectedTargets
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< CastHandler > AfterCast
HookList< CheckCastHandler > OnCheckCast
HookList< HitHandler > AfterHit
HookList< HitHandler > OnHit
Unit * GetHitUnit() const
HookList< EffectHandler > OnEffectHitTarget
HookList< CastHandler > OnCast
Unit * GetExplTargetUnit() const
SpellInfo const * GetSpellInfo() const
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
bool HasPowerTypeCost(Powers power) const
UsedSpellMods m_appliedMods
Binary predicate for sorting Units based on percent value of health.
void RemoveAura(AuraApplicationMap::iterator &i, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
virtual bool HasSpell(uint32) const
void SendPlaySpellVisual(Unit *target, uint32 spellVisualId, uint16 missReason, uint16 reflectStatus, float travelSpeed, bool speedAsTime=false, float launchDelay=0.0f)
std::forward_list< Aura * > AuraList
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
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 TriggerForbearance()
bool Validate(SpellInfo const *spellInfo) override
SpellCastResult CheckForbearance()
void HandleDummy(SpellEffIndex)
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
void HandleProc(AuraEffect *, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
bool CheckProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
void TriggerForbearance()
bool Validate(SpellInfo const *spellInfo) override
SpellCastResult CheckForbearance()
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleEffectProc(AuraEffect *, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
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)
bool Validate(SpellInfo const *) override
void TriggerForbearance()
bool Validate(SpellInfo const *spellInfo) override
SpellCastResult CheckForbearance()
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)
void CalculateAmount(AuraEffect const *, int32 &amount, bool &)
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 HandleEffectProc(AuraEffect *aurEff, ProcEventInfo &)
TC_GAME_API Unit * GetUnit(WorldObject const &, ObjectGuid const &guid)
TC_GAME_API AreaTrigger * GetAreaTrigger(WorldObject const &u, 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_CONSECRATED_GROUND_SLOW
@ SPELL_PALADIN_DIVINE_STEED_BLOODELF
@ SPELL_PALADIN_DIVINE_STEED_DWARF
@ SPELL_PALADIN_DIVINE_PURPOSE_TRIGGERED
@ SPELL_PALADIN_BLADE_OF_JUSTICE
@ 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_HOLY_PRISM_TARGET_ENEMY
@ SPELL_PALADIN_HOLY_POWER_SPELL_POWER
@ SPELL_PALADIN_TEMPLAR_VERDICT_DAMAGE
@ SPELL_PALADIN_FINAL_STAND_EFFECT
@ SPELL_PALADIN_CONSECRATED_GROUND_PASSIVE
@ SPELL_PALADIN_LIGHT_HAMMER_DAMAGE
@ SPELL_PALADIN_ZEAL_AURA
@ SPELL_PALADIN_JUDGMENT_HOLY_R3
@ SPELL_PALADIN_BEACON_OF_LIGHT_HEAL
@ SPELL_PALADIN_DIVINE_STEED_TAUREN
@ 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_BLINDING_LIGHT_EFFECT
@ SPELL_PALADIN_SEAL_OF_RIGHTEOUSNESS
@ SPELL_PALADIN_JUDGMENT_HOLY_R3_DEBUFF
@ SPELL_PALADIN_EYE_FOR_AN_EYE_TRIGGERED
@ SPELL_PALADIN_RIGHTEOUS_DEFENSE_TAUNT
@ 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_RIGHTEOUS_VERDICT_AURA
@ SPELL_PALADIN_ENDURING_LIGHT
@ SPELL_PALADIN_HAND_OF_SACRIFICE
@ SPELL_PALADIN_HAMMER_OF_THE_RIGHTEOUS_AOE
@ SPELL_PALADIN_JUDGMENT_GAIN_HOLY_POWER
@ 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_JUDGMENT_PROT_RET_R3
@ SPELL_PALADIN_DIVINE_STEED_HUMAN
@ 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
void OnUnitExit(Unit *unit) override
areatrigger_pal_ashen_hallow(AreaTrigger *areatrigger)
Milliseconds _refreshTimer
void OnUnitEnter(Unit *unit) override
void OnUnitExit(Unit *unit) override
areatrigger_pal_consecration(AreaTrigger *areatrigger)
void OnUnitEnter(Unit *unit) override
void HandleAoEHit(SpellEffIndex)
bool Validate(SpellInfo const *) override