193 abundanceAura->RefreshDuration();
203 abundanceEffect->ModStackAmount(-1);
634 if (spellInfo->SpellFamilyFlags &
flag128(0x4, 0x0, 0x0, 0x0))
636 else if (spellInfo->SpellFamilyFlags &
flag128(0x1, 0x0, 0x0, 0x0))
673 uint32 remaining = aura->GetStackAmount();
678 aura->SetStackAmount(remaining - 1);
844 .TriggeringAura = aurEff,
878 .SetTriggeringAura(aurEff)
1008 maxExtraConsumedPower = maxExtraConsumedPower * multiplier;
1066 if (targets.size() > 1)
1067 targets.remove(caster);
1071 if (targets.empty())
1072 targets.push_back(caster);
1151 target->
CastSpell(target, triggerspell, aurEff);
1209 AddPct(pctMod, galactic->GetAmount());
1238 if (!rejuvenationAura)
1325 canBeRecalculated =
false;
1332 AddPct(amount, guardianOfElune->GetAmount());
1533 caster->CastSpell(caster, SPELL_DRUID_LUNAR_BEAM_HEAL, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR);
1534 caster->CastSpell(at->GetPosition(), SPELL_DRUID_LUNAR_BEAM_DAMAGE, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR);
1583 Unit* result =
nullptr;
1588 return result !=
nullptr;
1617 std::vector<Unit*> targetList;
1622 if (targetList.empty())
1647 pctMod *= comboPoints;
1912 std::vector<Unit*> targetList;
1916 std::erase(targetList, procTarget);
1918 if (targetList.empty())
1928 for (
Unit* chosenTarget : targetList)
2096 canBeRecalculated =
false;
2105 amount += cp * auraEffIdolOfFeralShadows->GetAmount();
2108 amount += cp * auraEffIdolOfWorship->GetAmount();
2178 std::vector<Unit*> moonfires;
2179 std::vector<Unit*> sunfires;
2180 auto work = [&, druid = caster->
GetGUID()](
Unit* target)
2183 moonfires.push_back(target);
2186 sunfires.push_back(target);
2197 if (targets.empty())
2200 float chance = float(aurEff->
GetAmount()) * std::sqrt(
float(targets.size()));
2202 if (
roll_chance(std::modf(chance / 100.0f, &procs) * 100.0f))
2209 for (
Unit* target : targets)
2498 if (!damageInfo || !damageInfo->
GetDamage())
2530 if (!
GetCaster()->ToPlayer()->GetGroup())
2538 std::list<Unit*> tempTargets;
2539 for (std::list<WorldObject*>::const_iterator itr = targets.begin(); itr != targets.end(); ++itr)
2541 tempTargets.push_back((*itr)->ToUnit());
2543 if (tempTargets.empty())
2552 targets.push_back(target);
2577 if (!healInfo || !healInfo->
GetHeal())
2753 if (requireOutdoors && !targetPlayer->
IsOutdoors())
2807 player->
CastSpell(player, triggeredSpellId, aurEff);
2841 effRunSpeed->ChangeAmount(effRunSpeed->GetAmount() - reduction);
2872 std::list<Unit*> targets;
2877 if (targets.empty())
2880 targets.remove_if([hitUnit](
Unit* target) ->
bool
2885 if (targets.empty())
2888 targets.sort([caster, hitUnit](
Unit const* lhs,
Unit const* rhs) ->
bool
2954 AddPct(pctMod, umbralEmbrace->GetAmount());
2981 .TriggeringAura = aurEff
3002 if (!damageInfo || !damageInfo->
GetDamage())
3034 maxTargets += treeOfLife->GetAmountAsInt();
3063 float reduction = 2.f;
3065 reduction -=
CalculatePct(reduction, bonus->GetAmount());
3068 AddPct(damage, 6.f - reduction);
std::optional< T > Optional
Optional helper class to wrap optional values within.
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,...)
@ SPELL_ATTR5_TREAT_AS_AREA_EFFECT
@ TARGET_UNIT_DEST_AREA_ALLY
@ TARGET_UNIT_DEST_AREA_ENEMY
@ TARGET_UNIT_TARGET_ALLY
@ TARGET_UNIT_CASTER_AREA_RAID
@ TARGET_UNIT_TARGET_ENEMY
@ SPELL_EFFECT_CREATE_AREATRIGGER
@ SPELL_EFFECT_POWER_BURN
@ SPELL_EFFECT_SCHOOL_DAMAGE
@ SPELL_EFFECT_APPLY_AURA
@ SPELL_FAILED_CUSTOM_ERROR
@ SPELL_FAILED_DONT_REPORT
@ SPELL_FAILED_ONLY_SHAPESHIFT
@ SPELL_FAILED_BAD_TARGETS
@ SPELL_FAILED_ONLY_OUTDOORS
@ AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK
@ AURA_EFFECT_HANDLE_REAL
@ AURA_REMOVE_BY_ENEMY_SPELL
@ AURA_REMOVE_BY_INTERRUPT
@ SPELL_AURA_PERIODIC_DAMAGE
@ SPELL_AURA_MOD_SHAPESHIFT
@ SPELL_AURA_OBS_MOD_HEALTH
@ SPELL_AURA_ADD_PCT_MODIFIER
@ SPELL_AURA_MOD_INCREASE_SPEED
@ SPELL_AURA_PROC_TRIGGER_SPELL
@ SPELL_AURA_MOD_INCREASE_VEHICLE_FLIGHT_SPEED
@ SPELL_AURA_PERIODIC_HEAL
@ SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN
@ SPELL_AURA_IGNORE_SPELL_COOLDOWN
@ SPELL_AURA_PERIODIC_DUMMY
@ SPELL_AURA_OVERRIDE_CLASS_SCRIPTS
@ SPELL_AURA_MECHANIC_IMMUNITY_MASK
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_IGNORE_POWER_COST
Will ignore power and reagent cost.
@ TRIGGERED_IGNORE_GCD
Will ignore GCD.
@ TRIGGERED_DONT_REPORT_CAST_ERROR
Will return SPELL_FAILED_DONT_REPORT in CheckCast functions.
@ TRIGGERED_SUPPRESS_CASTER_ANIM
Will not play cast animations on caster.
@ TARGET_OBJECT_TYPE_UNIT
#define SpellObjectTargetSelectFn(F, I, N)
#define SpellCheckCastFn(F)
#define AuraEffectProcFn(F, I, N)
#define SpellEffectFn(F, I, N)
#define AuraEffectCalcAbsorbFn(F, I)
#define AuraEffectCalcAmountFn(F, I, N)
#define SpellObjectAreaTargetSelectFn(F, I, N)
#define AuraEffectPeriodicFn(F, I, N)
#define AuraCheckEffectProcFn(F, I, N)
#define AuraEffectUpdatePeriodicFn(F, I, N)
#define SpellCalcDamageFn(F)
#define AuraEffectAbsorbFn(F, I)
#define AuraEffectApplyFn(F, I, N, M)
#define AuraCheckProcFn(F)
#define AuraEnterLeaveCombatFn(F)
#define AuraEffectRemoveFn(F, I, N, M)
T CalculatePct(T base, U pct)
AreaTriggerAI(AreaTrigger *a, uint32 scriptId={}) noexcept
uint32 GetTickNumber() const
SpellEffectInfo const & GetSpellEffectInfo() const
void SetAmount(SpellEffectValue amount)
int32 GetAmountAsInt() const
SpellEffectValue GetAmount() const
HookList< EffectCalcDamageAndHealingHandler > DoEffectCalcDamageAndHealing
void PreventDefaultAction()
AuraApplication const * GetTargetApplication() const
HookList< EffectApplyHandler > AfterEffectRemove
HookList< CheckEffectProcHandler > DoCheckEffectProc
HookList< EffectPeriodicHandler > OnEffectPeriodic
SpellInfo const * GetSpellInfo() const
HookList< EffectApplyHandler > AfterEffectApply
HookList< EffectAbsorbHandler > AfterEffectAbsorb
HookList< EffectCalcAmountHandler > DoEffectCalcAmount
HookList< EffectUpdatePeriodicHandler > OnEffectUpdatePeriodic
HookList< EnterLeaveCombatHandler > OnEnterLeaveCombat
SpellEffectInfo const & GetEffectInfo(SpellEffIndex effIndex) const
AuraEffect * GetEffect(uint8 effIndex) const
HookList< EffectAbsorbHandler > OnEffectAbsorb
ObjectGuid GetCasterGUID() const
Difficulty GetCastDifficulty() const
HookList< CheckProcHandler > DoCheckProc
HookList< EffectApplyHandler > OnEffectRemove
HookList< AuraDispelHandler > AfterDispel
HookList< EffectProcHandler > OnEffectProc
Unit * GetUnitOwner() const
HookList< AuraProcHandler > OnProc
HookList< EffectApplyHandler > OnEffectApply
ObjectGuid GetCastId() const
void SetStackAmount(uint8 num)
int32 GetDuration() const
AuraEffect * GetEffect(uint32 index) const
bool ModStackAmount(int32 num, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT, bool resetPeriodicTimer=true)
uint8 GetStackAmount() const
ObjectGuid const & GetGUID() const
Unit * GetAttacker() const
WorldObject * GetDispeller() const
void AddEventAtOffset(BasicEvent *event, Milliseconds offset)
uint16 GetSkillValue(uint32 skill) const
bool HasSpell(uint32 spell) const override
Group * GetGroup(Optional< uint8 > partyIndex)
ChrSpecializationEntry const * GetPrimarySpecializationEntry() const
HealInfo * GetHealInfo() 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
int32 CalcValueAsInt(WorldObject const *caster=nullptr, SpellEffectValue const *basePoints=nullptr, Unit const *target=nullptr, float *variance=nullptr, uint32 castItemId=0, int32 itemLevel=-1) const
void ResetCooldown(uint32 spellId, bool update=false)
SpellRange GetMinMaxRange(bool positive=false, WorldObject const *caster=nullptr, Spell *spell=nullptr) const
SpellCastResult CheckLocation(uint32 map_id, uint32 zone_id, uint32 area_id, Player const *player=nullptr) const
bool HasAttribute(SpellAttr0 attribute) const
SpellEffectInfo const & GetEffect(SpellEffIndex index) 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
int32 GetHitDamage() const
HookList< HitHandler > AfterHit
void SetEffectValue(SpellEffectValue value)
SpellEffectValue GetEffectValue() const
int32 GetEffectValueAsInt() const
HookList< HitHandler > OnHit
int64 GetUnitTargetCountForEffect(SpellEffIndex effect) const
SpellInfo const * GetTriggeringSpell() const
Unit * GetHitUnit() const
SpellEffectInfo const & GetEffectInfo() const
HookList< EffectHandler > OnEffectHitTarget
HookList< ObjectTargetSelectHandler > OnObjectTargetSelect
HookList< CastHandler > BeforeCast
void FinishCast(SpellCastResult result, int32 *param1=nullptr, int32 *param2=nullptr)
HookList< EffectHandler > OnEffectLaunchTarget
Difficulty GetCastDifficulty() const
void SetHitDamage(int32 damage)
HookList< EffectHandler > OnEffectLaunch
Unit * GetExplTargetUnit() const
SpellInfo const * GetSpellInfo() const
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
SpellInfo const * GetSpellInfo() const
Optional< int32 > GetPowerTypeCostAmount(Powers power) const
std::vector< T > & GetExecuteLogEffectTargets(SpellEffectName effect, Optional< std::vector< T > > SpellLogEffect::*member)
TaskContext & Repeat(TaskScheduler::duration_t duration)
TaskScheduler & Schedule(duration_t time, task_handler_t task)
TaskScheduler & Update()
Update the scheduler to the current time.
void RemoveAreaTrigger(uint32 spellId)
void RemoveOwnedAura(AuraMap::iterator &i, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
uint64 CountPctFromMaxHealth(float pct) const
void RemoveAura(AuraApplicationMap::iterator &i, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
ShapeshiftForm GetShapeshiftForm() const
AuraEffect * GetAuraEffect(uint32 spellId, uint8 effIndex, ObjectGuid casterGUID=ObjectGuid::Empty) const
int32 GetMaxPower(Powers power) const
bool HasStealthAura() const
virtual bool HasSpell(uint32) const
uint32 GetCreatureType() const
uint64 GetMaxHealth() const
bool HasAuraEffect(uint32 spellId, uint8 effIndex, ObjectGuid caster=ObjectGuid::Empty) 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
int32 GetPower(Powers power) const
float GetTotalAttackPowerValue(WeaponAttackType attType, bool includeWeapon=true) const
bool HealthBelowPct(float pct) const
bool HasUnitState(const uint32 f) const
bool IsInRaidWith(Unit const *unit) const
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
SpellHistory * GetSpellHistory()
bool HasBreakableByDamageCrowdControlAura(Unit const *excludeCasterChannel=nullptr) const
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
constexpr uint32 GetMapId() const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
void HandleOnApplyOrReapply(AuraEffect const *aurEff, AuraEffectHandleModes mode) const
void HandleOnRemove(AuraEffect const *, AuraEffectHandleModes) const
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
bool CheckProc(AuraEffect const *, ProcEventInfo const &eventInfo) const
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect const *aurEff, ProcEventInfo const &eventInfo)
bool Validate(SpellInfo const *) override
void HandlePeriodic(AuraEffect const *)
bool Validate(SpellInfo const *spellInfo) override
bool ToCatForm() const override
void HandleAbsorb(AuraEffect *, DamageInfo &, uint32 &)
bool Validate(SpellInfo const *) override
void HandleAfterAbsorb(AuraEffect *, DamageInfo &dmgInfo, uint32 &absorbAmount)
void HandleProc(AuraEffect *, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
void TriggerEclipses() const
bool Validate(SpellInfo const *) override
void HandleOnTick(AuraEffect const *aurEff) const
bool Validate(SpellInfo const *) override
void CalculateAmount(AuraEffect const *, SpellEffectValue &amount, bool &)
bool CheckEffectProc(AuraEffect const *, ProcEventInfo const &) const
void HandleProc(AuraEffect const *aurEff, ProcEventInfo const &) const
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect *, ProcEventInfo &)
bool Validate(SpellInfo const *) override
void HandleRemoved(AuraEffect const *, AuraEffectHandleModes)
static void SetSpellCount(Unit *unitOwner, uint32 spellId, uint32 amount)
InitializeEclipseCountersEvent(Unit *owner, uint32 count)
bool Execute(uint64, uint32) override
void HandleApply(AuraEffect const *aurEff, AuraEffectHandleModes)
void HandleRemove(AuraEffect const *, AuraEffectHandleModes)
void OnOwnerOutOfCombat(bool isNowInCombat)
void HandleProc(ProcEventInfo &eventInfo)
void OnSpellCast(uint32 cntSpellId, uint32 otherCntSpellId, uint32 eclipseAuraSpellId)
bool Validate(SpellInfo const *) override
void Tick(AuraEffect const *)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandlePeriodicDummy(AuraEffect const *) const
void FilterTargets(std::list< WorldObject * > &targets) const
void RemoveOldAreaTrigger(SpellEffIndex) const
void HandlePeriodic(AuraEffect const *aurEff)
bool Validate(SpellInfo const *) override
void HandleProc(ProcEventInfo const &eventInfo)
void HandleApply(AuraEffect const *, AuraEffectHandleModes) const
bool Validate(SpellInfo const *) override
void HandleRemove(AuraEffect const *, AuraEffectHandleModes) const
bool Validate(SpellInfo const *) override
void HandleEffect(SpellEffIndex) const
void FilterTargets(std::list< WorldObject * > &targets) const
void HandleProc(AuraEffect const *aurEff, ProcEventInfo const &eventInfo) const
bool Validate(SpellInfo const *spellInfo) override
bool CheckProc(AuraEffect const *, ProcEventInfo const &) const
bool CheckProc(ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
void HandleCuriousBramblepatch(WorldObject *&target)
bool Validate(SpellInfo const *) override
void HandleCuriousBramblepatchAOE(std::list< WorldObject * > &targets)
void HandleLaunchTarget(SpellEffIndex)
void HandleHitTargetBurn(SpellEffIndex)
void HandleHitTargetDmg(SpellEffIndex)
bool Validate(SpellInfo const *) override
void PreventEffect(WorldObject *&target)
bool Validate(SpellInfo const *spellInfo) override
void FilterTargets(std::list< WorldObject * > &targets)
void HandlePeriodic(AuraEffect const *)
bool Validate(SpellInfo const *spellInfo) override
void CalculateDamage(SpellEffectInfo const &, Unit *, int32 &, int32 &, float &pctMod) const
bool Validate(SpellInfo const *) override
static bool CheckEffectProc(AuraScript const &, AuraEffect const *aurEff, ProcEventInfo &)
bool Validate(SpellInfo const *) override
static void HandleProc(AuraScript const &, AuraEffect const *, ProcEventInfo const &eventInfo)
void PickRejuvenationVariant(WorldObject *&target) const
bool Validate(SpellInfo const *) override
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
void OnApply(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
bool CheckEffectProc(AuraEffect const *aurEff, ProcEventInfo &)
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect *, ProcEventInfo &)
void CalculateAmount(AuraEffect const *, SpellEffectValue &amount, bool &canBeRecalculated)
bool Validate(SpellInfo const *) override
bool ToCatForm() const override
bool Validate(SpellInfo const *) override
void AfterApply(AuraEffect const *, AuraEffectHandleModes) const
void OnRemove(AuraEffect const *, AuraEffectHandleModes) const
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *spellInfo) override
void PreventEffect(WorldObject *&target) const
SpellCastResult CheckCast()
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect *aurEff, ProcEventInfo &eventInfo)
void AfterRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
void AfterRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
void AfterApply(AuraEffect const *, AuraEffectHandleModes)
static bool CheckProc(AuraScript const &, ProcEventInfo const &procEvent)
static bool CheckProc(AuraScript const &, AuraEffect const *aurEff, ProcEventInfo const &)
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect const *, ProcEventInfo const &eventInfo) const
void HandleEffectHit(SpellEffIndex)
bool Validate(SpellInfo const *) override
void CalculateDamage(SpellEffectInfo const &, Unit *, int32 &, int32 &, float &pctMod)
bool Validate(SpellInfo const *spellInfo) override
void CalculateDamage(SpellEffectInfo const &, Unit *victim, int32 &, int32 &, float &pctMod) const
static void CalculateAmount(AuraScript const &, AuraEffect const *, Unit const *victim, int32 &baseAbsorb, int32 &, float &)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleOnHit(SpellEffIndex)
bool Validate(SpellInfo const *) override
void HandleEffectProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
bool CheckProc(ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
void HandleRemoved(AuraEffect const *, AuraEffectHandleModes) const
void OnOwnerInCombat(bool isNowInCombat) const
bool Validate(SpellInfo const *spellInfo) override
static void Trigger(Unit *caster, AuraEffect const *naturesGraceEffect)
Optional< uint32 > _newOverrideSpell
bool Validate(SpellInfo const *) override
spell_dru_new_moon(Optional< uint32 > newOverrideSpell, Optional< uint32 > removeOverrideSpell)
void OverrideMoon() const
Optional< uint32 > _removeOverrideSpell
bool CheckProc(AuraEffect const *aurEff, ProcEventInfo const &) const
void HandleProc(AuraEffect *, ProcEventInfo &)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
static void HandleProc(AuraScript const &, AuraEffect const *aurEff, ProcEventInfo const &eventInfo)
static bool CheckProc(AuraScript const &, AuraEffect const *, ProcEventInfo const &eventInfo)
bool ToCatForm() const override
bool Validate(SpellInfo const *) override
void OnTick(AuraEffect const *)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *spellInfo) override
void HandleEffectHit(SpellEffIndex)
void CalculateDamage(SpellEffectInfo const &, Unit *, int32 &, int32 &, float &pctMod) const
void HandleEffectHit(SpellEffIndex)
bool Validate(SpellInfo const *spellInfo) override
void CalculateAmount(AuraEffect const *, SpellEffectValue &amount, bool &canBeRecalculated)
void AfterApply(AuraEffect const *aurEff, AuraEffectHandleModes)
void AfterRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
SpellCastResult CheckCast()
bool Validate(SpellInfo const *) override
static void ProcessDoT(AuraEffect const *aurEff, Unit *caster, std::vector< Unit * > &targets)
void OnTick(AuraEffect const *aurEff) const
void HandleDummy(SpellEffIndex)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleOnHit(SpellEffIndex) const
bool ToCatForm() const override
void HandleDummy(SpellEffIndex)
void FilterTargets(std::list< WorldObject * > &targets)
bool Validate(SpellInfo const *) override
void HandleDispel(DispelInfo *dispelInfo)
bool CheckProc(AuraEffect const *aurEff, ProcEventInfo &procInfo)
void HandleOnHit(SpellEffIndex)
void AfterApply(AuraEffect const *, AuraEffectHandleModes)
void AfterRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
void CalculateAmount(AuraEffect const *, SpellEffectValue &amount, bool &)
void HandleProc(AuraEffect *aurEff, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect *aurEff, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
bool CheckProc(ProcEventInfo &eventInfo)
void FilterTargets(std::list< WorldObject * > &targets)
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect *aurEff, ProcEventInfo &eventInfo)
void HandleProc(AuraEffect *aurEff, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect *aurEff, ProcEventInfo &eventInfo)
void HandleEffectHit(SpellEffIndex effIndex)
void HandlePeriodic(AuraEffect const *)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleOnHitTarget(SpellEffIndex)
void HandlePeriodic(AuraEffect const *aurEff)
bool ToCatForm() const override
bool Validate(SpellInfo const *) override
void HandleEffectHit(SpellEffIndex)
void HandleDamage(SpellEffectInfo const &, Unit const *, int32 &, int32 &, float &pctMod) const
bool Validate(SpellInfo const *) override
static bool CheckEclipse(AuraScript const &, ProcEventInfo const &eventInfo)
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect const *aurEff, ProcEventInfo const &) const
bool Validate(SpellInfo const *) override
static void HandleProc(AuraScript const &, AuraEffect const *aurEff, ProcEventInfo const &eventInfo)
bool Validate(SpellInfo const *) override
void HandleTickUpdate(AuraEffect *aurEff)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *spellInfo) override
void FilterTargets(std::list< WorldObject * > &targets) const
static void SelectTargets(SpellScript const &, std::list< WorldObject * > &targets)
bool Validate(SpellInfo const *) override
void HandleEffectPeriodic(AuraEffect const *aurEff)
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
auto SelectRandomContainerElement(C const &container) -> std::add_const_t< decltype(*std::ranges::begin(container))> &
void RandomResize(C &container, std::size_t requestedSize)
void SelectRandomInjuredTargets(std::list< WorldObject * > &targets, size_t maxTargets, bool prioritizePlayers, Unit const *prioritizeGroupMembersOf)
void AddSC_druid_spell_scripts()
@ SPELL_DRUID_SPRING_BLOSSOMS
@ SPELL_DRUID_THRASH_CAT_BLEED
@ SPELL_DRUID_ELUNES_FAVORED
@ SPELL_DRUID_ASTRAL_COMMUNION_ENERGIZE
@ SPELL_DRUID_GUARDIAN_OF_ELUNE_AURA
@ SPELL_DRUID_BRAMBLES_REFLECT
@ SPELL_DRUID_SHOOTING_STARS
@ SPELL_DRUID_BLESSING_OF_CENARIUS
@ SPELL_DRUID_CULTIVATION_HEAL
@ SPELL_DRUID_BLESSING_OF_ELUNE
@ SPELL_DRUID_UMBRAL_EMBRACE
@ SPELL_DRUID_GLYPH_OF_STARS_VISUAL
@ SPELL_DRUID_MASS_ENTANGLEMENT
@ SPELL_DRUID_FORM_AQUATIC_PASSIVE
@ SPELL_DRUID_BLESSING_OF_THE_CLAW
@ SPELL_DRUID_BLOOD_FRENZY_RAGE_GAIN
@ SPELL_DRUID_POWER_OF_THE_ARCHDRUID
@ SPELL_DRUID_ECLIPSE_VISUAL_LUNAR
@ SPELL_DRUID_BLESSING_OF_REMULOS
@ SPELL_DRUID_EFFLORESCENCE_HEAL
@ SPELL_DRUID_FORMS_TRINKET_BEAR
@ SPELL_DRUID_SUNFIRE_DAMAGE
@ SPELL_DRUID_UMBRAL_INSPIRATION_TALENT
@ SPELL_DRUID_INCARNATION_TREE_OF_LIFE
@ SPELL_DRUID_MOONFIRE_DAMAGE
@ SPELL_DRUID_EARTHWARDEN_AURA
@ SPELL_DRUID_URSOCS_FURY_SHIELD
@ SPELL_DRUID_DREAM_OF_CENARIUS
@ SPELL_DRUID_EMBRACE_OF_THE_DREAM_EFFECT
@ SPELL_DRUID_ECLIPSE_VISUAL_SOLAR
@ SPELL_DRUID_THRASH_PULVERIZE_TRIGGER
@ SPELL_DRUID_FORMS_TRINKET_CAT
@ SPELL_DRUID_ELUNES_FAVORED_HEAL
@ SPELL_DRUID_ECLIPSE_LUNAR_SPELL_CNT
@ SPELL_DRUID_CULTIVATION
@ SPELL_DRUID_CRASHING_STAR_DAMAGE
@ SPELL_DRUID_REJUVENATION_T10_PROC
@ SPELL_DRUID_FORM_AQUATIC
@ SPELL_DRUID_MANGLE_TALENT
@ SPELL_DRUID_INCARNATION
@ SPELL_DRUID_BALANCE_T10_BONUS_PROC
@ SPELL_DRUID_LUNAR_WRATH
@ SPELL_DRUID_ECLIPSE_LUNAR_AURA
@ SPELL_DRUID_LUNAR_BEAM_DAMAGE
@ SPELL_DRUID_SHOOTING_STARS_DAMAGE
@ SPELL_DRUID_NEW_MOON_OVERRIDE
@ SPELL_DRUID_CRASHING_STAR_TALENT
@ SPELL_DRUID_LUNAR_BEAM_HEAL
@ SPELL_DRUID_THRASH_BEAR_BLEED
@ SPELL_DRUID_SAVAGE_ROAR
@ SPELL_DRUID_LIFEBLOOM_FINAL_HEAL
@ SPELL_DRUID_FORM_FLIGHT
@ SPELL_DRUID_UMBRAL_INSPIRATION_AURA
@ SPELL_DRUID_BRISTLING_FUR_GAIN_RAGE
@ SPELL_DRUID_REJUVENATION
@ SPELL_DRUID_BRAMBLES_PASSIVE
@ SPELL_DRUID_TWIN_MOONFIRE
@ SPELL_DRUID_REJUVENATION_GERMINATION
@ SPELL_DRUID_BRAMBLES_DAMAGE_AURA
@ SPELL_DRUID_YSERAS_GIFT_HEAL_PARTY
@ SPELL_DRUID_SURVIVAL_INSTINCTS
@ SPELL_DRUID_HALF_MOON_OVERRIDE
@ SPELL_DRUID_GLYPH_OF_STARS
@ SPELL_DRUID_ABUNDANCE_EFFECT
@ SPELL_DRUID_ELUNES_FAVORED_PROC
@ SPELL_DRUID_YSERAS_GIFT_HEAL_SELF
@ SPELL_DRUID_THRASH_BEAR
@ SPELL_DRUID_ASTRAL_SMOLDER_DAMAGE
@ SPELL_DRUID_IDOL_OF_FERAL_SHADOWS
@ SPELL_DRUID_INNER_PEACE
@ SPELL_DRUID_BLOOD_FRENZY_AURA
@ SPELL_DRUID_IDOL_OF_WORSHIP
@ SPELL_DRUID_MOONLESS_NIGHT
@ SPELL_DRUID_FORMS_TRINKET_NONE
@ SPELL_DRUID_INNERVATE_RANK_2
@ SPELL_DRUID_GERMINATION
@ SPELL_DRUID_FORMS_TRINKET_MOONKIN
@ SPELL_DRUID_DREAM_OF_CENARIUS_COOLDOWN
@ SPELL_DRUID_NATURES_GRACE_TALENT
@ SPELL_DRUID_LUNAR_INSPIRATION_OVERRIDE
@ SPELL_DRUID_EFFLORESCENCE_AURA
@ SPELL_DRUID_FORM_SWIFT_FLIGHT
@ SPELL_DRUID_SKULL_BASH_CHARGE
@ SPELL_DRUID_BALANCE_T10_BONUS
@ SPELL_DRUID_ECLIPSE_DUMMY
@ SPELL_DRUID_ECLIPSE_SOLAR_AURA
@ SPELL_DRUID_SKULL_BASH_INTERRUPT
@ SPELL_DRUID_FORMS_TRINKET_TREE
@ SPELL_DRUID_GALACTIC_GUARDIAN_AURA
@ SPELL_DRUID_FLOWER_WALK
@ SPELL_DRUID_MOONLESS_NIGHT_DAMAGE
@ SPELL_DRUID_CURIOUS_BRAMBLEPATCH
@ SPELL_DRUID_FLOWER_WALK_HEAL
@ SPELL_DRUID_TREE_OF_LIFE
@ SPELL_DRUID_INCARNATION_KING_OF_THE_JUNGLE
@ SPELL_DRUID_SPRING_BLOSSOMS_HEAL
@ SPELL_DRUID_ECLIPSE_SOLAR_SPELL_CNT
@ SPELL_DRUID_ENTANGLING_ROOTS
@ SPELL_DRUID_ECLIPSE_OOC
@ SPELL_DRUID_ASTRAL_COMMUNION_TALENT
@ SPELL_DRUID_EMBRACE_OF_THE_DREAM_HEAL
@ SPELL_DRUID_RESTORATION_T10_2P_BONUS
@ SPELL_DRUID_TRAVEL_FORM
static void VisitAllObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)
ChrSpecializationRole GetRole() const
float GetExactDist(float x, float y, float z) const
Optional< std::vector< SpellLogEffectGenericVictimParams > > GenericVictimTargets
void OnUpdate(uint32 diff) override
void OnCreate(Spell const *) override