176 AddPct(mana, glyph->GetAmount());
223 for (Unit::AuraApplicationMap::const_iterator i = auras.begin(); i != auras.end(); ++i)
225 Aura* aura = i->second->GetBase();
231 if (!(familyFlag[1] & 0x00000080 || familyFlag[0] & 0x0000C000))
236 if (familyFlag[0] & 0x4000)
241 basePoint = aurEff->GetAmount() * aurEff->GetTotalTicks();
245 else if (familyFlag[1] & 0x00000080)
250 basePoint = aurEff->GetAmount() * aurEff->GetTotalTicks();
255 if (basePoint > maxManaReturn)
256 basePoint = maxManaReturn;
261 else if (familyFlag[0] & 0x00008000)
274 caster->
CastSpell(unitTarget, spellId, args);
363 for (Unit::AuraApplicationMap::const_iterator i = auras.begin(); i != auras.end(); ++i)
365 Aura const* aura = i->second->GetBase();
463 uint32 spellId = triggerSpells[rank - 1];
789 AddPct(amount, improvedCower->GetAmount());
908 uint32 dmg = dmgInfo->GetDamage();
988 uint32 spellId = triggerSpells[rank - 1];
1113 target->
CastSpell(target, spellId, aurEff);
1128 int32 amount = playerTarget->isMoving() ?
1158 if (target->GetLevel() > caster->
GetLevel())
1181 if (!target->GetOwnerGUID().IsEmpty())
1210 targets.push_back(owner);
1248 ASSERT(explosiveShot->GetSpellInfo()->GetMaxTicks() > 0);
1249 amount /= explosiveShot->GetSpellInfo()->GetMaxTicks();
1357 caster->CastSpell(
GetTarget(), spellId, aurEff);
#define ASSERT_NOTNULL(pointer)
bool roll_chance_i(int chance)
#define RegisterSpellScript(spell_script)
@ SPELL_EFFECT_SCRIPT_EFFECT
@ TARGET_UNIT_CASTER_AREA_PARTY
@ SPELL_SCHOOL_MASK_FROST
@ PETTAME_CREATUREALREADYOWNED
@ AURA_STATE_HEALTHLESS_35_PERCENT
@ SPELL_FAILED_BAD_IMPLICIT_TARGETS
@ SPELL_FAILED_ALREADY_HAVE_SUMMON
@ SPELL_FAILED_ALREADY_HAVE_CHARM
@ SPELL_FAILED_DONT_REPORT
@ SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW
@ SPELL_FAILED_BAD_TARGETS
@ SPELL_FAILED_LINE_OF_SIGHT
@ SPELL_FAILED_NO_EDIBLE_CORPSES
@ AURA_EFFECT_HANDLE_REAL
@ SPELL_AURA_PROC_TRIGGER_SPELL
@ SPELL_AURA_OBS_MOD_POWER
@ SPELL_AURA_ADD_FLAT_MODIFIER
@ SPELL_AURA_MOD_DECREASE_SPEED
@ SPELL_AURA_PERIODIC_DUMMY
@ SPELL_AURA_PERIODIC_TRIGGER_SPELL
@ TRIGGERED_FULL_MASK
Will return SPELL_FAILED_DONT_REPORT in CheckCast functions.
@ TRIGGERED_IGNORE_SPELL_AND_CATEGORY_CD
Will ignore GCD.
@ PROC_FLAG_DONE_PERIODIC
@ PROC_FLAG_DONE_TRAP_ACTIVATION
#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 AuraEffectApplyFn(F, I, N, M)
#define AuraCheckProcFn(F)
#define AuraEffectRemoveFn(F, I, N, M)
@ CURRENT_AUTOREPEAT_SPELL
T ApplyPct(T &base, U pct)
T CalculatePct(T base, U pct)
SpellEffectInfo const & GetSpellEffectInfo() const
void SetAmount(int32 amount)
int32 GetMiscValue() const
int32 GetBaseAmount() const
void PreventDefaultAction()
AuraApplication const * GetTargetApplication() const
HookList< EffectApplyHandler > AfterEffectRemove
HookList< CheckEffectProcHandler > DoCheckEffectProc
HookList< EffectPeriodicHandler > OnEffectPeriodic
SpellInfo const * GetSpellInfo() const
WorldObject * GetOwner() const
HookList< EffectApplyHandler > AfterEffectApply
HookList< EffectCalcAmountHandler > DoEffectCalcAmount
HookList< EffectUpdatePeriodicHandler > OnEffectUpdatePeriodic
AuraEffect * GetEffect(uint8 effIndex) const
HookList< CheckProcHandler > DoCheckProc
void Remove(AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
HookList< EffectProcHandler > OnEffectProc
Unit * GetUnitOwner() const
HookList< AuraProcHandler > OnProc
HookList< EffectApplyHandler > OnEffectApply
bool ModStackAmount(int32 num, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
void RefreshDuration(bool withMods=false)
ObjectGuid GetCasterGUID() const
AuraEffect * GetEffect(uint8 effIndex) const
SpellInfo const * GetSpellInfo() const
SpellSchoolMask GetSchoolMask() const
static ObjectGuid GetGUID(Object const *o)
static Player * ToPlayer(Object *o)
PetInfo const * GetUnslottedHunterPet() const
Optional< PetInfo > CurrentPet
void SendAttackSwingCancelAttack() const
bool CanTameExoticPets() const
PetStable * GetPetStable()
void SendTameFailure(uint8 result)
Unit * GetActionTarget() const
uint32 GetTypeMask() const
SpellInfo const * GetSpellInfo() const
DamageInfo * GetDamageInfo() const
int32 CalcValue(WorldObject const *caster=nullptr, int32 const *basePoints=nullptr) const
void ResetCooldowns(Predicate predicate, bool update=false)
uint32 GetMaxTicks() const
float GetMaxRange(bool positive=false, WorldObject *caster=nullptr, Spell *spell=nullptr) const
uint32 GetRecoveryTime() const
SpellSchoolMask GetSchoolMask() const
int32 CalcPowerCost(WorldObject const *caster, SpellSchoolMask schoolMask, Spell *spell=nullptr) const
SpellEffectInfo const & GetEffect(SpellEffIndex index) const
HookList< CheckCastHandler > OnCheckCast
HookList< EffectHandler > OnEffectHit
Unit * GetHitUnit() const
int32 GetEffectValue() const
HookList< EffectHandler > OnEffectHitTarget
Unit * GetExplTargetUnit() const
SpellInfo const * GetSpellInfo() const
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
void UnregisterRedirectThreat(uint32 spellId)
ThreatManager & GetThreatManager()
std::multimap< uint32, AuraApplication * > AuraApplicationMap
ObjectGuid GetCharmedGUID() const
AuraEffect * GetAuraEffect(uint32 spellId, uint8 effIndex, ObjectGuid casterGUID=ObjectGuid::Empty) const
UnitFlags GetUnitFlags() const
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint8 reqEffMask=0) const
uint32 GetMaxPower(Powers power) const
void InterruptSpell(CurrentSpellTypes spellType, bool withDelayed=true, bool withInstant=true, SpellCastResult result=SPELL_FAILED_INTERRUPTED, Optional< SpellCastResult > resultOther={})
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint8 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
uint32 CountPctFromMaxHealth(int32 pct) const
SpellHistory * GetSpellHistory()
ObjectGuid GetCharmerGUID() const
uint32 GetCreateMana() const
Guardian * GetGuardianPet() const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
bool IsWithinLOSInMap(WorldObject const *obj, LineOfSightChecks checks=LINEOFSIGHT_ALL_CHECKS, VMAP::ModelIgnoreFlags ignoreFlags=VMAP::ModelIgnoreFlags::Nothing) const
Player * GetSpellModOwner() const
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
PrepareAuraScript(spell_hun_ascpect_of_the_viper)
void HandleProc(AuraEffect const *aurEff, ProcEventInfo &)
bool Validate(SpellInfo const *) override
void OnApply(AuraEffect const *aurEff, AuraEffectHandleModes)
PrepareAuraScript(spell_hun_aspect_of_the_beast_pet)
void OnApply(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
PrepareAuraScript(spell_hun_aspect_of_the_beast)
void OnApply(AuraEffect const *, AuraEffectHandleModes)
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleScriptEffect(SpellEffIndex)
PrepareSpellScript(spell_hun_chimera_shot)
void HandleStackDrop(AuraEffect const *, ProcEventInfo &)
PrepareAuraScript(spell_hun_cobra_strikes_triggered)
PrepareAuraScript(spell_hun_cobra_strikes)
void HandleProc(AuraEffect const *aurEff, ProcEventInfo &)
bool Validate(SpellInfo const *spellInfo) override
SpellCastResult CheckCast()
PrepareSpellScript(spell_hun_disengage)
bool Validate(SpellInfo const *) override
void PeriodicTick(AuraEffect const *aurEff)
PrepareAuraScript(spell_hun_explosive_shot)
void PeriodicTick(AuraEffect const *aurEff)
PrepareAuraScript(spell_hun_feeding_frenzy)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
bool CheckProc(ProcEventInfo &eventInfo)
PrepareAuraScript(spell_hun_glyph_of_arcane_shot)
PrepareAuraScript(spell_hun_glyph_of_mend_pet)
void HandleProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
PrepareAuraScript(spell_hun_hunting_party)
void HandleProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
PrepareAuraScript(spell_hun_improved_mend_pet)
bool CheckProc(ProcEventInfo &)
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect const *aurEff, ProcEventInfo &)
PrepareSpellScript(spell_hun_invigoration)
bool Validate(SpellInfo const *) override
void HandleScriptEffect(SpellEffIndex)
void HandleProc(AuraEffect const *, ProcEventInfo &eventInfo)
PrepareAuraScript(spell_hun_kill_command_pet)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleDummy(SpellEffIndex)
PrepareSpellScript(spell_hun_last_stand_pet)
bool CheckTrapProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
bool CheckProc(ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
PrepareAuraScript(spell_hun_lock_and_load)
void HandleProc(ProcEventInfo &eventInfo)
bool CheckPeriodicProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
SpellCastResult DoCheckCast()
void HandleDummy(SpellEffIndex)
void HandleScriptEffect(SpellEffIndex)
bool Validate(SpellInfo const *spellInfo) override
PrepareSpellScript(spell_hun_masters_call)
PrepareAuraScript(spell_hun_misdirection_proc)
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
PrepareAuraScript(spell_hun_misdirection)
void HandleProc(AuraEffect const *aurEff, ProcEventInfo &)
bool Validate(SpellInfo const *) override
void HandleDummy(SpellEffIndex)
SpellCastResult CheckIfCorpseNear()
PrepareSpellScript(spell_hun_pet_carrion_feeder)
void CalculateAmount(AuraEffect const *, int32 &amount, bool &)
PrepareAuraScript(spell_hun_pet_cower)
PrepareSpellScript(spell_hun_pet_heart_of_the_phoenix)
void HandleScript(SpellEffIndex)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
bool CheckProc(ProcEventInfo &eventInfo)
PrepareAuraScript(spell_hun_piercing_shots)
bool Validate(SpellInfo const *) override
void HandleRapidKillingProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
void HandleRapidFireProc(AuraEffect const *, ProcEventInfo &eventInfo)
PrepareAuraScript(spell_hun_rapid_recuperation_trigger)
PrepareAuraScript(spell_hun_rapid_recuperation)
bool Validate(SpellInfo const *spellInfo) override
void HandlePeriodic(AuraEffect const *aurEff)
void HandleDummy(SpellEffIndex)
PrepareSpellScript(spell_hun_readiness)
void HandleProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
bool CheckProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
PrepareAuraScript(spell_hun_roar_of_sacrifice)
PrepareSpellScript(spell_hun_scatter_shot)
void HandleDummy(SpellEffIndex)
PrepareAuraScript(spell_hun_sniper_training)
bool Validate(SpellInfo const *) override
void HandlePeriodic(AuraEffect const *aurEff)
void HandleUpdatePeriodic(AuraEffect *aurEff)
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
PrepareAuraScript(spell_hun_t9_4p_bonus)
bool CheckProc(ProcEventInfo &eventInfo)
SpellCastResult CheckCast()
PrepareSpellScript(spell_hun_tame_beast)
void FilterTargets(std::list< WorldObject * > &targets)
PrepareSpellScript(spell_hun_target_only_pet_and_owner)
void HandleProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
PrepareAuraScript(spell_hun_thrill_of_the_hunt)
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
PrepareAuraScript(spell_hun_viper_attack_speed)
void OnApply(AuraEffect const *aurEff, AuraEffectHandleModes)
PrepareAuraScript(spell_hun_wyvern_sting)
bool Validate(SpellInfo const *) override
void OnRemove(AuraEffect const *aurEff, AuraEffectHandleModes)
@ SPELL_HUNTER_CHIMERA_SHOT_SCORPID
@ SPELL_HUNTER_VIPER_ATTACK_SPEED
@ SPELL_HUNTER_INVIGORATION_TRIGGERED
@ SPELL_HUNTER_PET_HEART_OF_THE_PHOENIX
@ SPELL_HUNTER_WYVERN_STING_DOT_R4
@ SPELL_HUNTER_THRILL_OF_THE_HUNT_MANA
@ SPELL_HUNTER_GLYPH_OF_ARCANE_SHOT
@ SPELL_HUNTER_CHIMERA_SHOT_VIPER
@ SPELL_HUNTER_SNIPER_TRAINING_R1
@ SPELL_HUNTER_ASPECT_OF_THE_VIPER_ENERGIZE
@ SPELL_HUNTER_LOCK_AND_LOAD_MARKER
@ SPELL_HUNTER_KILL_COMMAND_HUNTER
@ SPELL_HUNTER_FEEDING_FRENZY_BUFF_R2
@ SPELL_HUNTER_WYVERN_STING_DOT_R1
@ SPELL_HUNTER_SNIPER_TRAINING_BUFF_R1
@ SPELL_HUNTER_MISDIRECTION_PROC
@ SPELL_HUNTER_GLYPH_OF_MEND_PET_HAPPINESS
@ SPELL_HUNTER_FEEDING_FRENZY_BUFF_R1
@ SPELL_HUNTER_MISDIRECTION
@ SPELL_HUNTER_WYVERN_STING_DOT_R6
@ SPELL_HUNTER_MASTERS_CALL_TRIGGERED
@ SPELL_HUNTER_GLYPH_OF_ASPECT_OF_THE_VIPER
@ SPELL_HUNTER_RAPID_RECUPERATION_MANA_R2
@ SPELL_HUNTER_WYVERN_STING_DOT_R3
@ SPELL_HUNTER_LOCK_AND_LOAD_TRIGGER
@ SPELL_HUNTER_PET_HEART_OF_THE_PHOENIX_DEBUFF
@ SPELL_HUNTER_WYVERN_STING_DOT_R2
@ SPELL_HUNTER_PET_HEART_OF_THE_PHOENIX_TRIGGERED
@ SPELL_DRAENEI_GIFT_OF_THE_NAARU
@ SPELL_HUNTER_WYVERN_STING_DOT_R5
@ SPELL_HUNTER_VICIOUS_VIPER
@ SPELL_HUNTER_ASPECT_OF_THE_BEAST
@ SPELL_HUNTER_RAPID_RECUPERATION_MANA_R1
@ SPELL_ROAR_OF_SACRIFICE_TRIGGERED
@ SPELL_HUNTER_ASPECT_OF_THE_BEAST_PET
@ SPELL_HUNTER_PET_CARRION_FEEDER_TRIGGERED
@ SPELL_HUNTER_ASPECT_OF_THE_VIPER
@ SPELL_HUNTER_PET_LAST_STAND_TRIGGERED
@ SPELL_HUNTER_BESTIAL_WRATH
@ SPELL_HUNTER_IMPROVED_MEND_PET
@ SPELL_HUNTER_EXPLOSIVE_SHOT_DAMAGE
@ SPELL_HUNTER_CHIMERA_SHOT_SERPENT
@ SPELL_HUNTER_T9_4P_GREATNESS
@ SPELL_HUNTER_PIERCING_SHOTS
@ SPELL_ICON_HUNTER_PET_IMPROVED_COWER
void AddSC_hunter_spell_scripts()
static void VisitGridObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)
static void VisitWorldObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)