146 abundanceAura->RefreshDuration();
156 abundanceEffect->ModStackAmount(-1);
446 if (spellInfo->SpellFamilyFlags &
flag128(0x4, 0x0, 0x0, 0x0))
448 else if (spellInfo->SpellFamilyFlags &
flag128(0x1, 0x0, 0x0, 0x0))
485 uint32 remaining = aura->GetStackAmount();
490 aura->SetStackAmount(remaining - 1);
615 .SetTriggeringAura(aurEff)
744 float multiplier = 1.0f + float(auraEffect->GetAmount()) / 100.0f;
745 maxExtraConsumedPower =
int32(
float(maxExtraConsumedPower) * multiplier);
826 target->
CastSpell(target, triggerspell, aurEff);
884 if (!rejuvenationAura)
1186 std::vector<Unit*> targetList;
1191 if (targetList.empty())
1265 std::vector<Unit*> targetList;
1269 std::erase(targetList, procTarget);
1271 if (targetList.empty())
1281 for (
Unit* chosenTarget : targetList)
1310 canBeRecalculated =
false;
1319 amount += cp * auraEffIdolOfFeralShadows->GetAmount();
1322 amount += cp * auraEffIdolOfWorship->GetAmount();
1600 std::vector<SpellPowerCost>
const& costs = spell->
GetPowerCost();
1601 auto m = std::find_if(costs.begin(), costs.end(), [](
SpellPowerCost const& cost) { return cost.Power == POWER_MANA; });
1602 if (m == costs.end())
1651 if (!damageInfo || !damageInfo->
GetDamage())
1684 if (!
GetCaster()->ToPlayer()->GetGroup())
1692 std::list<Unit*> tempTargets;
1693 for (std::list<WorldObject*>::const_iterator itr = targets.begin(); itr != targets.end(); ++itr)
1695 tempTargets.push_back((*itr)->ToUnit());
1697 if (tempTargets.empty())
1706 targets.push_back(target);
1731 if (!healInfo || !healInfo->
GetHeal())
1875 if (requireOutdoors && !targetPlayer->
IsOutdoors())
1929 player->
CastSpell(player, triggeredSpellId, aurEff);
1963 effRunSpeed->ChangeAmount(effRunSpeed->GetAmount() - reduction);
1987 maxTargets += treeOfLife->GetAmount();
2016 float reduction = 2.f;
2018 reduction -=
CalculatePct(reduction, bonus->GetAmount());
2021 AddPct(damage, 6.f - reduction);
std::optional< T > Optional
Optional helper class to wrap optional values within.
bool roll_chance_i(int chance)
#define RegisterSpellAndAuraScriptPair(script_1, script_2)
#define RegisterSpellScript(spell_script)
@ 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_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_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
@ TRIGGERED_FULL_MASK
Used when doing CastSpell with triggered == true.
@ TRIGGERED_IGNORE_POWER_AND_REAGENT_COST
Will ignore power and reagent cost.
@ 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_GCD
Will ignore GCD.
@ TRIGGERED_DONT_REPORT_CAST_ERROR
Will return SPELL_FAILED_DONT_REPORT in CheckCast functions.
@ TARGET_OBJECT_TYPE_UNIT
#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 AuraEffectUpdatePeriodicFn(F, I, N)
#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)
uint32 GetTickNumber() const
SpellEffectInfo const & GetSpellEffectInfo() const
void SetAmount(int32 amount)
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< EffectProcHandler > OnEffectProc
Unit * GetUnitOwner() const
HookList< AuraProcHandler > OnProc
HookList< EffectApplyHandler > OnEffectApply
void SetStackAmount(uint8 num)
int32 GetDuration() const
Unit * GetAttacker() const
void AddEventAtOffset(BasicEvent *event, Milliseconds offset)
static Unit * ToUnit(Object *o)
static ObjectGuid GetGUID(Object const *o)
static Player * ToPlayer(Object *o)
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
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)
uint32 GetMaxTicks() const
float GetMaxRange(bool positive=false, WorldObject *caster=nullptr, Spell *spell=nullptr) const
SpellCastResult CheckLocation(uint32 map_id, uint32 zone_id, uint32 area_id, Player const *player=nullptr) 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< CastHandler > AfterCast
HookList< CheckCastHandler > OnCheckCast
void SetEffectValue(int32 value)
int32 GetHitDamage() const
HookList< HitHandler > OnHit
SpellInfo const * GetTriggeringSpell() const
Unit * GetHitUnit() const
int32 GetEffectValue() 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< SpellPowerCost > const & GetPowerCost() const
void RemoveAreaTrigger(uint32 spellId)
void RemoveOwnedAura(AuraMap::iterator &i, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
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
uint32 GetCreatureType() const
bool HealthBelowPct(int32 pct) 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
int32 GetPower(Powers power) const
bool HasUnitState(const uint32 f) const
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)
constexpr uint32 GetMapId() const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
int32 CalculateSpellDamage(Unit const *target, SpellEffectInfo const &spellEffectInfo, int32 const *basePoints=nullptr, float *variance=nullptr, uint32 castItemId=0, int32 itemLevel=-1) const
void HandleOnApplyOrReapply(AuraEffect const *aurEff, AuraEffectHandleModes mode) const
void HandleOnRemove(AuraEffect const *, AuraEffectHandleModes) const
bool Validate(SpellInfo const *) override
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 HandleOnTick(AuraEffect const *aurEff) const
bool Validate(SpellInfo const *) override
void CalculateAmount(AuraEffect const *, int32 &amount, bool &)
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
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 HandleProc(AuraEffect *, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
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 &)
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)
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect const *, ProcEventInfo const &eventInfo) const
static bool CheckProc(AuraEffect const *aurEff, ProcEventInfo const &)
bool Validate(SpellInfo const *) override
void HandleOnHit(SpellEffIndex)
void HandleProc(AuraEffect *, ProcEventInfo &)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
static void HandleProc(AuraEffect const *aurEff, ProcEventInfo const &eventInfo)
static bool CheckProc(AuraEffect const *, ProcEventInfo const &eventInfo)
bool ToCatForm() const override
void CalculateAmount(AuraEffect const *, int32 &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
void OnTick(AuraEffect 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 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 *, int32 &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 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
void HandleTickUpdate(AuraEffect *aurEff)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *spellInfo) override
void FilterTargets(std::list< WorldObject * > &targets) const
void SelectTargets(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) -> typename std::add_const< decltype(*std::begin(container))>::type &
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_BEAR_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_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_BLESSING_OF_REMULOS
@ SPELL_DRUID_EFFLORESCENCE_HEAL
@ SPELL_DRUID_FORMS_TRINKET_BEAR
@ SPELL_DRUID_SUNFIRE_DAMAGE
@ SPELL_DRUID_INCARNATION_TREE_OF_LIFE
@ SPELL_DRUID_MOONFIRE_DAMAGE
@ SPELL_DRUID_EARTHWARDEN_AURA
@ SPELL_DRUID_EMBRACE_OF_THE_DREAM_EFFECT
@ SPELL_DRUID_FORMS_TRINKET_CAT
@ SPELL_DRUID_ECLIPSE_LUNAR_SPELL_CNT
@ SPELL_DRUID_CULTIVATION
@ SPELL_DRUID_REJUVENATION_T10_PROC
@ SPELL_DRUID_FORM_AQUATIC
@ SPELL_DRUID_INCARNATION
@ SPELL_DRUID_BALANCE_T10_BONUS_PROC
@ SPELL_DRUID_ECLIPSE_LUNAR_AURA
@ SPELL_DRUID_SHOOTING_STARS_DAMAGE
@ SPELL_DRUID_SAVAGE_ROAR
@ SPELL_DRUID_LIFEBLOOM_FINAL_HEAL
@ SPELL_DRUID_FORM_FLIGHT
@ SPELL_DRUID_BRISTLING_FUR_GAIN_RAGE
@ SPELL_DRUID_REJUVENATION
@ SPELL_DRUID_BRAMBLES_PASSIVE
@ SPELL_DRUID_REJUVENATION_GERMINATION
@ SPELL_DRUID_BRAMBLES_DAMAGE_AURA
@ SPELL_DRUID_YSERAS_GIFT_HEAL_PARTY
@ SPELL_DRUID_SURVIVAL_INSTINCTS
@ SPELL_DRUID_GLYPH_OF_STARS
@ SPELL_DRUID_ABUNDANCE_EFFECT
@ SPELL_DRUID_YSERAS_GIFT_HEAL_SELF
@ SPELL_DRUID_THRASH_BEAR
@ SPELL_DRUID_IDOL_OF_FERAL_SHADOWS
@ SPELL_DRUID_INNER_PEACE
@ SPELL_DRUID_BLOOD_FRENZY_AURA
@ SPELL_DRUID_IDOL_OF_WORSHIP
@ SPELL_DRUID_FORMS_TRINKET_NONE
@ SPELL_DRUID_INNERVATE_RANK_2
@ SPELL_DRUID_GERMINATION
@ SPELL_DRUID_FORMS_TRINKET_MOONKIN
@ 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_CURIOUS_BRAMBLEPATCH
@ 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_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
Optional< std::vector< SpellLogEffectGenericVictimParams > > GenericVictimTargets