158 caster->GetSpellHistory()->ResetCooldown(
GetId(),
true);
271 other->SetDuration(0);
457 .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR,
458 .TriggeringSpell = eventInfo.GetProcSpell()
519 concussiveShot->SetDuration(newDuration.count());
520 concussiveShot->SetMaxDuration(newDuration.count());
541 .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR,
542 .TriggeringSpell = eventInfo.GetProcSpell()
654 if (caster->IsValidAttackTarget(unit))
694 other->SetDuration(0);
701 if (caster->IsValidAttackTarget(unit))
745 other->SetDuration(0);
752 if (caster->IsValidAttackTarget(unit))
922 .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR,
923 .TriggeringAura = aurEff
949 .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR,
950 .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, damage } }
1137 amount =
CalculatePct(critChanceDone, amountHolder->GetAmount());
1144 bonus->RecalculateAmount(aurEff);
1229 .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR,
1230 .TriggeringSpell = eventInfo.GetProcSpell()
1273 speed->ChangeAmount(speed->GetAmount() -
SpeedAmount);
1623 if (target->GetLevelForTarget(caster) > caster->
GetLevel())
1627 if (!target->GetCreatureTemplate()->IsTameable(caster->
CanTameExoticPets(), target->GetCreatureDifficulty()))
1632 if (petStable->CurrentPetIndex)
1635 auto freeSlotItr = std::find_if(petStable->ActivePets.begin(), petStable->ActivePets.end(), [](
Optional<PetStable::PetInfo> const& petInfo)
1637 return !petInfo.has_value();
1640 if (freeSlotItr == petStable->ActivePets.end())
1647 std::size_t freeSlotIndex = std::distance(petStable->ActivePets.begin(), freeSlotItr);
1658 if (!target->GetOwnerGUID().IsEmpty())
1695 if (caster->IsValidAttackTarget(unit))
1716 other->SetDuration(0);
1723 if (caster->IsValidAttackTarget(unit))
1743 amount = -tensileBowstring->GetAmount();
1749 amount = -tensileBowstring->GetAmount();
1874 if (!wildernessMedicine)
1887 .TriggeringAura = aurEff
DB2Storage< SpellXSpellVisualEntry > sSpellXSpellVisualStore("SpellXSpellVisual.db2", &SpellXSpellVisualLoadInfo::Instance)
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
std::chrono::duration< double, Seconds::period > FloatSeconds
std::chrono::duration< double, Milliseconds::period > FloatMilliseconds
std::optional< T > Optional
Optional helper class to wrap optional values within.
bool roll_chance(float chance, PseudoRandomDistributionState &state)
#define RegisterAreaTriggerAI(ai_name)
#define RegisterSpellScript(spell_script)
#define EFFECT_FIRST_FOUND
@ SPELL_EFFECT_CREATE_AREATRIGGER
@ SPELL_EFFECT_SCRIPT_EFFECT
@ SPELL_EFFECT_TRIGGER_MISSILE
@ SPELL_EFFECT_REDIRECT_THREAT
@ SPELL_EFFECT_SCHOOL_DAMAGE
@ TARGET_DEST_TARGET_ENEMY
@ SPELL_FAILED_BAD_IMPLICIT_TARGETS
@ SPELL_FAILED_ALREADY_HAVE_SUMMON
@ SPELL_FAILED_ALREADY_HAVE_CHARM
@ SPELL_FAILED_DONT_REPORT
@ SPELL_FAILED_BAD_TARGETS
@ SPELL_FAILED_LINE_OF_SIGHT
@ AURA_EFFECT_HANDLE_REAL
@ AURA_REMOVE_BY_INTERRUPT
@ SPELL_AURA_MOD_ATTACKER_MELEE_HIT_CHANCE
@ SPELL_AURA_PERIODIC_DAMAGE
@ SPELL_AURA_OBS_MOD_HEALTH
@ SPELL_AURA_ADD_PCT_MODIFIER
@ SPELL_AURA_MOD_INCREASE_SPEED
@ SPELL_AURA_PROC_TRIGGER_SPELL
@ SPELL_AURA_CAST_WHILE_WALKING
@ SPELL_AURA_MOD_CRIT_DAMAGE_BONUS
@ SPELL_AURA_MOD_MINIMUM_SPEED
@ 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_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 AuraEffectPeriodicFn(F, I, N)
#define AuraCheckEffectProcFn(F, I, N)
#define SpellDestinationTargetSelectFn(F, I, N)
#define AuraEffectCalcPeriodicFn(F, I, N)
#define AuraEffectApplyFn(F, I, N, M)
#define AuraCheckProcFn(F)
#define AuraEffectRemoveFn(F, I, N, M)
@ CURRENT_AUTOREPEAT_SPELL
T CalculatePct(T base, U pct)
AreaTriggerAI(AreaTrigger *a, uint32 scriptId={}) noexcept
GuidUnorderedSet const & GetInsideUnits() const
ObjectGuid const & GetCasterGuid() const
SpellEffectInfo const & GetSpellEffectInfo() const
int32 GetAmountAsInt() const
int32 GetMiscValue() const
void ResetPeriodic(bool resetPeriodicTimer=false)
SpellEffectValue GetAmount() const
void PreventDefaultAction()
HookList< EffectCalcPeriodicHandler > DoEffectCalcPeriodic
AuraApplication const * GetTargetApplication() const
HookList< EffectApplyHandler > AfterEffectRemove
HookList< CheckEffectProcHandler > DoCheckEffectProc
HookList< EffectPeriodicHandler > OnEffectPeriodic
HookList< EffectApplyHandler > AfterEffectApply
HookList< EffectCalcAmountHandler > DoEffectCalcAmount
AuraEffect * GetEffect(uint8 effIndex) const
HookList< CheckProcHandler > DoCheckProc
HookList< EffectApplyHandler > OnEffectRemove
HookList< EffectProcHandler > OnEffectProc
Unit * GetUnitOwner() const
HookList< AuraProcHandler > OnProc
ObjectGuid const & GetGUID() const
uint32 GetOriginalDamage() const
SpellSchoolMask GetSchoolMask() const
ChrSpecialization GetPrimarySpecialization() const
void SendAttackSwingCancelAttack() const
bool CanTameExoticPets() const
PetStable * GetPetStable()
void LearnSpell(uint32 spell_id, bool dependent, int32 fromSkill=0, bool suppressMessaging=false, Optional< PlayerSpellTrait > trait={})
void SendTameFailure(PetTameResult result)
void RemoveOverrideSpell(uint32 overridenSpellId, uint32 newSpellId)
void RemoveSpell(uint32 spell_id, bool disabled=false, bool learn_low_rank=true, bool suppressMessaging=false)
bool HasSpell(uint32 spell) const override
void AddOverrideSpell(uint32 overridenSpellId, uint32 newSpellId)
Unit * GetActionTarget() const
Spell const * GetProcSpell() const
DamageInfo * GetDamageInfo() 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
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)
void ModifyCooldown(uint32 spellId, Duration cooldownMod, bool withoutCategoryCooldown=false)
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
WorldLocation * GetHitDest() const
HookList< CheckCastHandler > OnCheckCast
int32 GetHitDamage() const
HookList< HitHandler > AfterHit
SpellEffectValue GetEffectValue() const
HookList< DestinationTargetSelectHandler > OnDestinationTargetSelect
int32 GetEffectValueAsInt() const
HookList< HitHandler > OnHit
Unit * GetHitUnit() const
SpellEffectInfo const & GetEffectInfo() const
HookList< EffectHandler > OnEffectHitTarget
void PreventHitEffect(SpellEffIndex effIndex)
HookList< ObjectTargetSelectHandler > OnObjectTargetSelect
HookList< CastHandler > OnCast
Difficulty GetCastDifficulty() const
void SetHitDamage(int32 damage)
WorldLocation const * GetExplTargetDest() const
HookList< EffectHandler > OnEffectLaunch
Unit * GetExplTargetUnit() const
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 UnregisterRedirectThreat(uint32 spellId)
uint32 GetCastSpellXSpellVisualId(SpellInfo const *spellInfo) const override
void SendPlaySpellVisual(Unit *target, uint32 spellVisualId, uint8 missReason, uint8 reflectStatus, float travelSpeed, bool speedAsTime=false, float launchDelay=0.0f)
ThreatManager & GetThreatManager()
ObjectGuid GetOwnerGUID() const override
void InterruptSpell(CurrentSpellTypes spellType, bool withDelayed=true, bool withInstant=true, SpellCastResult result=SPELL_FAILED_INTERRUPTED, Optional< SpellCastResult > resultOther={}, ObjectGuid const &interrupter=ObjectGuid::Empty)
ObjectGuid GetCharmedGUID() const
AuraEffect * GetAuraEffect(uint32 spellId, uint8 effIndex, ObjectGuid casterGUID=ObjectGuid::Empty) const
uint64 GetMaxHealth() const
float GetUnitCriticalChanceDone(WeaponAttackType attackType) const
UF::UpdateField< UF::UnitData, int32(WowCS::EntityFragment::CGObject), TYPEID_UNIT > m_unitData
bool HealthBelowPct(float pct) const
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
SpellHistory * GetSpellHistory()
ObjectGuid GetCharmerGUID() const
void RemoveMovementImpairingAuras(bool withRoot)
Guardian * GetGuardianPet() const
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 IsWithinLOSInMap(WorldObject const *obj, LineOfSightChecks checks=LINEOFSIGHT_ALL_CHECKS, VMAP::ModelIgnoreFlags ignoreFlags=VMAP::ModelIgnoreFlags::Nothing) const
void HandleDummyTick(AuraEffect const *)
void RemoveEffect(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleOnRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *spellInfo) override
static void HandleCastWhileWalking(SpellScript const &, WorldObject *&target)
void OnApply(AuraEffect const *, AuraEffectHandleModes)
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleHitTarget(SpellEffIndex) const
bool Validate(SpellInfo const *spellInfo) override
void ReplaceAutoShot(AuraEffect const *aurEff, AuraEffectHandleModes)
void RestoreAutoShot(AuraEffect const *aurEff, AuraEffectHandleModes)
void UpdateOrientation(SpellDestination &target) const
static void HandleProc(AuraScript const &, ProcEventInfo const &eventInfo)
bool Validate(SpellInfo const *) override
void HandleProc(ProcEventInfo const &eventInfo) const
bool Validate(SpellInfo const *) override
static bool CheckEffectProc(AuraScript const &, AuraEffect const *aurEff, ProcEventInfo const &eventInfo)
bool RollProc(AuraEffect const *, ProcEventInfo &)
bool Validate(SpellInfo const *spellInfo) override
void HandleDuration(SpellEffIndex) const
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
static void HandleProc(AuraScript const &, ProcEventInfo const &eventInfo)
bool Validate(SpellInfo const *) override
void HandleAfterCast() const
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandlePeriodic(AuraEffect const *)
void PlayVisual(SpellEffIndex) const
bool Validate(SpellInfo const *) override
static void HandleProc(AuraScript const &, ProcEventInfo const &eventInfo)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect *aurEff, ProcEventInfo &)
bool Validate(SpellInfo const *) override
void HandleKindlingFlare(SpellEffIndex effIndex)
void HandleFlare(SpellEffIndex effIndex)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
static void HandleProc(AuraScript const &, AuraEffect const *, ProcEventInfo const &eventInfo)
static bool CheckProc(AuraScript const &, AuraEffect const *aurEff, ProcEventInfo const &)
static bool CheckProc(AuraScript const &, ProcEventInfo const &eventInfo)
static void HandleEffectProc(AuraScript const &, AuraEffect const *aurEff, ProcEventInfo const &eventInfo)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
static void HandleProc(AuraScript const &, AuraEffect const *aurEff, ProcEventInfo const &eventInfo)
SpellCastResult DoCheckCast()
void HandleDummy(SpellEffIndex)
void HandleScriptEffect(SpellEffIndex)
bool Validate(SpellInfo const *spellInfo) override
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
void HandleProc(AuraEffect *aurEff, ProcEventInfo &)
void HandleHitTarget(SpellEffIndex) const
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleAfterCast() const
void CalcAmount(AuraEffect const *, SpellEffectValue &amount, bool const &) const
void UpdatePeriodic(AuraEffect const *aurEff) const
void HandleScript(SpellEffIndex)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleAfterCast() const
void HandleProc(ProcEventInfo const &eventInfo) const
bool Validate(SpellInfo const *) override
void UpdateSpeed(AuraEffect const *) const
static constexpr SpellEffectValue SpeedAmount
bool Validate(SpellInfo const *spellInfo) override
bool Validate(SpellInfo const *) override
static void HandleProc(AuraScript const &, ProcEventInfo const &eventInfo)
bool Validate(SpellInfo const *) override
void HandleHit(SpellEffIndex) const
bool Validate(SpellInfo const *) override
void HandlePeriodic(AuraEffect const *) const
void HandleProc(AuraEffect const *aurEff, ProcEventInfo const &)
bool Validate(SpellInfo const *) override
bool CheckProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
void HandleProc(AuraEffect *aurEff, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
void HandleDummy(SpellEffIndex)
bool Validate(SpellInfo const *spellInfo) override
static void HandleMinSpeed(SpellScript const &, WorldObject *&target)
bool Validate(SpellInfo const *) override
void HandleEffectProc(AuraEffect const *aurEff, ProcEventInfo const &) const
static constexpr std::array< uint32, 3 > AffectedSpellIds
bool Validate(SpellInfo const *) override
void HandleProc(ProcEventInfo const &) const
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleAfterCast() const
static void HandleProc(AuraScript const &, AuraEffect const *, ProcEventInfo const &eventInfo)
static bool RollProc(AuraScript const &, AuraEffect const *aurEff, ProcEventInfo const &)
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect *aurEff, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect *aurEff, ProcEventInfo &eventInfo)
bool CheckProc(ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
Milliseconds _aimedShotCooldownReduction
static constexpr uint32 CallPetSpellIds[MAX_ACTIVE_PETS]
SpellCastResult CheckCast()
void CalcCastTimeReduction(AuraEffect const *, SpellEffectValue &amount, bool &) const
bool Validate(SpellInfo const *) override
void CalcPowerCostReduction(AuraEffect const *, SpellEffectValue &amount, bool &) const
void HandleOnRemove(AuraEffect const *, AuraEffectHandleModes) const
bool Validate(SpellInfo const *) override
static void CalcPeriodic(AuraScript const &, AuraEffect const *, bool &isPeriodic, int32 &litude)
static void HandleProc(AuraScript const &, AuraEffect *aurEff, ProcEventInfo const &eventInfo)
void HandleDummyTick(AuraEffect const *) const
void OnPeriodic(AuraEffect const *aurEff) const
bool Validate(SpellInfo const *) override
SpellEffectValue _dispelChance
static bool CheckProc(AuraScript const &, AuraEffect const *aurEff, ProcEventInfo const &)
static void HandleProc(AuraScript const &, AuraEffect const *, ProcEventInfo const &eventInfo)
bool Validate(SpellInfo const *) override
TC_GAME_API Unit * GetUnit(WorldObject const &, ObjectGuid const &guid)
@ SPELL_HUNTER_MASTER_MARKSMAN
@ SPELL_HUNTER_ASPECT_OF_THE_TURTLE_PACIFY_AURA
@ SPELL_HUNTER_ENTRAPMENT_TALENT
@ SPELL_HUNTER_A_MURDER_OF_CROWS_DAMAGE
@ SPELL_HUNTER_QUICK_DRAW_SPEED
@ SPELL_HUNTER_BINDING_SHOT_VISUAL_ARROW
@ SPELL_HUNTER_MARKSMANSHIP_HUNTER_AURA
@ SPELL_HUNTER_GREVIOUS_INJURY
@ SPELL_HUNTER_EMERGENCY_SALVE_TALENT
@ SPELL_HUNTER_NO_HARD_FEELINGS_AURA
@ SPELL_HUNTER_BINDING_SHOT_VISUAL
@ SPELL_HUNTER_FLARE_VISUAL
@ SPELL_HUNTER_A_MURDER_OF_CROWS_VISUAL_1
@ SPELL_HUNTER_FLARE_DISPEL
@ SPELL_HUNTER_BINDING_SHOT_MARKER
@ SPELL_HUNTER_TAR_TRAP_SLOW
@ SPELL_HUNTER_SHRAPNEL_SHOT_TALENT
@ SPELL_HUNTER_STEADY_SHOT_FOCUS
@ SPELL_HUNTER_WILDERNESS_MEDICINE_DISPEL
@ SPELL_HUNTER_MISDIRECTION_PROC
@ SPELL_HUNTER_CONCUSSIVE_SHOT
@ SPELL_HUNTER_SHRAPNEL_SHOT_DEBUFF
@ SPELL_HUNTER_BINDING_SHOT
@ SPELL_HUNTER_LOCK_AND_LOAD
@ SPELL_HUNTER_FOCUSED_AIM
@ SPELL_HUNTER_TRAILBLAZER
@ SPELL_HUNTER_POSTHASTE_TALENT
@ SPELL_HUNTER_MISDIRECTION
@ SPELL_HUNTER_A_MURDER_OF_CROWS_VISUAL_2
@ SPELL_HUNTER_SCOUTS_INSTINCTS
@ SPELL_HUNTER_BULLETSTORM
@ SPELL_HUNTER_RAPID_FIRE_DAMAGE
@ SPELL_HUNTER_TENSILE_BOWSTRING
@ SPELL_HUNTER_BLEAK_POWDER_DAMAGE_MARKSMANSHIP
@ SPELL_HUNTER_MASTERS_CALL_TRIGGERED
@ SPELL_HUNTER_RAPID_FIRE_ENERGIZE
@ SPELL_HUNTER_RAPID_FIRE
@ SPELL_HUNTER_BINDING_SHOT_STUN
@ SPELL_HUNTER_BLEAK_POWDER_DAMAGE_BEAST_MASTERY
@ SPELL_HUNTER_EXHILARATION_PET
@ SPELL_HUNTER_A_MURDER_OF_CROWS_VISUAL_3
@ SPELL_HUNTER_SURGING_SHOTS_ACTION_BAR_GLOW
@ SPELL_HUNTER_INTIMIDATION
@ SPELL_HUNTER_EXHILARATION
@ SPELL_HUNTER_BINDING_SHOT_IMMUNE
@ SPELL_HUNTER_LATENT_POISON_STACK
@ SPELL_HUNTER_PET_HEART_OF_THE_PHOENIX_DEBUFF
@ SPELL_HUNTER_LATENT_POISON_INJECTORS_DAMAGE
@ SPELL_HUNTER_NO_HARD_FEELINGS_TALENT
@ SPELL_HUNTER_PET_HEART_OF_THE_PHOENIX_TRIGGERED
@ SPELL_HUNTER_EXPLOSIVE_SHOT_AREA
@ SPELL_HUNTER_ASPECT_CHEETAH_SLOW
@ SPELL_HUNTER_STEADY_SHOT
@ SPELL_HUNTER_EXHILARATION_R2
@ SPELL_HUNTER_AIMED_SHOT
@ SPELL_HUNTER_STREAMLINE_BUFF
@ SPELL_ROAR_OF_SACRIFICE_TRIGGERED
@ SPELL_HUNTER_STREAMLINE_TALENT
@ SPELL_HUNTER_HORSEHAIR_TETHER_GRIP
@ SPELL_HUNTER_IMPLOSIVE_TRAP
@ SPELL_HUNTER_ASPECT_OF_THE_FOX
@ SPELL_HUNTER_POSTHASTE_INCREASE_SPEED
@ SPELL_HUNTER_HORSEHAIR_TETHER_TALENT
@ SPELL_HUNTER_LATENT_POISON_DAMAGE
@ SPELL_HUNTER_REJUVENATING_WIND_HEAL
@ SPELL_HUNTER_DISRUPTIVE_ROUNDS_ENERGIZE
@ SPELL_HUNTER_ENTRAPMENT_ROOT
@ SPELL_HUNTER_BLEAK_POWDER_AREATRIGGER
@ SPELL_HUNTER_BLACK_ARROW_PERIODIC_DAMAGE
@ SPELL_HUNTER_KINDLING_FLARE
@ SPELL_HUNTER_HIGH_EXPLOSIVE_TRAP
@ SPELL_HUNTER_TAR_TRAP_AREATRIGGER
@ SPELL_HUNTER_PRECISE_SHOTS
@ SPELL_HUNTER_T29_2P_MARKSMANSHIP_DAMAGE
@ SPELL_HUNTER_T9_4P_GREATNESS
@ SPELL_HUNTER_IMPLOSIVE_TRAP_DAMAGE
@ SPELL_HUNTER_HIGH_EXPLOSIVE_TRAP_DAMAGE
@ SPELL_HUNTER_LATENT_POISON_INJECTORS_STACK
@ SPELL_HUNTER_WILDERNESS_MEDICINE_TALENT
@ SPELL_HUNTER_INTIMIDATION_MARKSMANSHIP
@ SPELL_HUNTER_EMERGENCY_SALVE_DISPEL
void AddSC_hunter_spell_scripts()
constexpr void SetOrientation(float orientation)
constexpr void GetPosition(float &x, float &y) const
void Relocate(Position const &pos)
void OnUnitEnter(Unit *unit) override
void OnInitialize() override
void OnUnitEnter(Unit *unit) override
void OnInitialize() override
void OnInitialize() override
void OnUnitEnter(Unit *unit) override
void OnUnitEnter(Unit *unit) override
void OnUnitExit(Unit *unit, AreaTriggerExitReason) override
void OnCreate(Spell const *) override
void OnUpdate(uint32 diff) override
void OnUnitExit(Unit *unit, AreaTriggerExitReason) override
void OnCreate(Spell const *) override
void OnUnitEnter(Unit *unit) override
void OnInitialize() override
void OnUnitEnter(Unit *unit) override
void OnUnitExit(Unit *unit, AreaTriggerExitReason) override
void OnUnitEnter(Unit *unit) override