16 SF_LOG_ERROR(
"scripts",
"Spell `%u` did not pass Validate() function of script `%s` - script will be not added to the spell", entry->
Id,
m_scriptName->c_str());
65 mask |= (
uint8)1 << i;
88 return "EFFECT_FIRST_FOUND";
96 return "Invalid Value";
113 return "SPELL_EFFECT_ANY";
116 snprintf(num,
sizeof(num),
"%u",
effName);
135 return "SPELL_AURA_ANY";
199 std::ostringstream oss;
274 if (!(*itr).GetAffectedEffectsMask(entry))
275 SF_LOG_ERROR(
"scripts",
"Spell `%u` Effect `%s` of script `%s` did not match dbc effect data - handler bound to hook `OnEffectLaunch` of SpellScript won't be executed", entry->
Id, (*itr).ToString().c_str(),
m_scriptName->c_str());
278 if (!(*itr).GetAffectedEffectsMask(entry))
279 SF_LOG_ERROR(
"scripts",
"Spell `%u` Effect `%s` of script `%s` did not match dbc effect data - handler bound to hook `OnEffectLaunchTarget` of SpellScript won't be executed", entry->
Id, (*itr).ToString().c_str(),
m_scriptName->c_str());
282 if (!(*itr).GetAffectedEffectsMask(entry))
283 SF_LOG_ERROR(
"scripts",
"Spell `%u` Effect `%s` of script `%s` did not match dbc effect data - handler bound to hook `OnEffectHit` of SpellScript won't be executed", entry->
Id, (*itr).ToString().c_str(),
m_scriptName->c_str());
286 if (!(*itr).GetAffectedEffectsMask(entry))
287 SF_LOG_ERROR(
"scripts",
"Spell `%u` Effect `%s` of script `%s` did not match dbc effect data - handler bound to hook `OnEffectHitTarget` of SpellScript won't be executed", entry->
Id, (*itr).ToString().c_str(),
m_scriptName->c_str());
290 if (!(*itr).GetAffectedEffectsMask(entry))
291 SF_LOG_ERROR(
"scripts",
"Spell `%u` Effect `%s` of script `%s` did not match dbc effect data - handler bound to hook `OnObjectAreaTargetSelect` of SpellScript won't be executed", entry->
Id, (*itr).ToString().c_str(),
m_scriptName->c_str());
294 if (!(*itr).GetAffectedEffectsMask(entry))
295 SF_LOG_ERROR(
"scripts",
"Spell `%u` Effect `%s` of script `%s` did not match dbc effect data - handler bound to hook `OnObjectTargetSelect` of SpellScript won't be executed", entry->
Id, (*itr).ToString().c_str(),
m_scriptName->c_str());
359 return m_spell->GetOriginalCaster();
364 return m_spell->GetSpellInfo();
369 if (
m_spell->m_targets.HasDst())
370 return m_spell->m_targets.GetDstPos();
376 m_spell->m_targets.SetDst(loc);
381 return m_spell->m_targets.GetObjectTarget();
386 return m_spell->m_targets.GetUnitTarget();
391 return m_spell->m_targets.GetGOTarget();
396 return m_spell->m_targets.GetItemTarget();
417 return m_spell->unitTarget->ToCreature();
430 return m_spell->unitTarget->ToPlayer();
514 if (
m_spell->m_spellAura->IsRemoved())
527 m_spell->m_spellAura->Remove();
545 SF_LOG_ERROR(
"scripts",
"Script: `%s` Spell: `%u`: function SpellScript::PreventHitDefaultEffect was called, but function has no effect in current hook!",
m_scriptName->c_str(),
m_scriptSpellId);
555 SF_LOG_ERROR(
"scripts",
"Script: `%s` Spell: `%u`: function SpellScript::PreventHitDefaultEffect was called, but function has no effect in current hook!",
m_scriptName->c_str(),
m_scriptSpellId);
568 m_spell->DoCreateItem(effIndex, itemId);
573 return m_spell->m_triggeredByAuraSpell;
578 m_spell->SendCastResult(result);
590 m_spell->m_customError = result;
602 SF_LOG_ERROR(
"scripts",
"Spell `%u` of script `%s` does not have area aura effect - handler bound to hook `DoCheckAreaTarget` of AuraScript won't be executed", entry->
Id,
m_scriptName->c_str());
604 for (std::list<AuraDispelHandler>::iterator itr =
OnDispel.begin(); itr !=
OnDispel.end(); ++itr)
606 SF_LOG_ERROR(
"scripts",
"Spell `%u` of script `%s` does not have apply aura effect - handler bound to hook `OnDispel` of AuraScript won't be executed", entry->
Id,
m_scriptName->c_str());
610 SF_LOG_ERROR(
"scripts",
"Spell `%u` of script `%s` does not have apply aura effect - handler bound to hook `AfterDispel` of AuraScript won't be executed", entry->
Id,
m_scriptName->c_str());
613 if (!(*itr).GetAffectedEffectsMask(entry))
614 SF_LOG_ERROR(
"scripts",
"Spell `%u` Effect `%s` of script `%s` did not match dbc effect data - handler bound to hook `OnEffectApply` of AuraScript won't be executed", entry->
Id, (*itr).ToString().c_str(),
m_scriptName->c_str());
617 if (!(*itr).GetAffectedEffectsMask(entry))
618 SF_LOG_ERROR(
"scripts",
"Spell `%u` Effect `%s` of script `%s` did not match dbc effect data - handler bound to hook `OnEffectRemove` of AuraScript won't be executed", entry->
Id, (*itr).ToString().c_str(),
m_scriptName->c_str());
621 if (!(*itr).GetAffectedEffectsMask(entry))
622 SF_LOG_ERROR(
"scripts",
"Spell `%u` Effect `%s` of script `%s` did not match dbc effect data - handler bound to hook `AfterEffectApply` of AuraScript won't be executed", entry->
Id, (*itr).ToString().c_str(),
m_scriptName->c_str());
625 if (!(*itr).GetAffectedEffectsMask(entry))
626 SF_LOG_ERROR(
"scripts",
"Spell `%u` Effect `%s` of script `%s` did not match dbc effect data - handler bound to hook `AfterEffectRemove` of AuraScript won't be executed", entry->
Id, (*itr).ToString().c_str(),
m_scriptName->c_str());
629 if (!(*itr).GetAffectedEffectsMask(entry))
630 SF_LOG_ERROR(
"scripts",
"Spell `%u` Effect `%s` of script `%s` did not match dbc effect data - handler bound to hook `OnEffectPeriodic` of AuraScript won't be executed", entry->
Id, (*itr).ToString().c_str(),
m_scriptName->c_str());
633 if (!(*itr).GetAffectedEffectsMask(entry))
634 SF_LOG_ERROR(
"scripts",
"Spell `%u` Effect `%s` of script `%s` did not match dbc effect data - handler bound to hook `OnEffectUpdatePeriodic` of AuraScript won't be executed", entry->
Id, (*itr).ToString().c_str(),
m_scriptName->c_str());
637 if (!(*itr).GetAffectedEffectsMask(entry))
638 SF_LOG_ERROR(
"scripts",
"Spell `%u` Effect `%s` of script `%s` did not match dbc effect data - handler bound to hook `DoEffectCalcAmount` of AuraScript won't be executed", entry->
Id, (*itr).ToString().c_str(),
m_scriptName->c_str());
641 if (!(*itr).GetAffectedEffectsMask(entry))
642 SF_LOG_ERROR(
"scripts",
"Spell `%u` Effect `%s` of script `%s` did not match dbc effect data - handler bound to hook `DoEffectCalcPeriodic` of AuraScript won't be executed", entry->
Id, (*itr).ToString().c_str(),
m_scriptName->c_str());
645 if (!(*itr).GetAffectedEffectsMask(entry))
646 SF_LOG_ERROR(
"scripts",
"Spell `%u` Effect `%s` of script `%s` did not match dbc effect data - handler bound to hook `DoEffectCalcSpellMod` of AuraScript won't be executed", entry->
Id, (*itr).ToString().c_str(),
m_scriptName->c_str());
649 if (!(*itr).GetAffectedEffectsMask(entry))
650 SF_LOG_ERROR(
"scripts",
"Spell `%u` Effect `%s` of script `%s` did not match dbc effect data - handler bound to hook `OnEffectAbsorb` of AuraScript won't be executed", entry->
Id, (*itr).ToString().c_str(),
m_scriptName->c_str());
653 if (!(*itr).GetAffectedEffectsMask(entry))
654 SF_LOG_ERROR(
"scripts",
"Spell `%u` Effect `%s` of script `%s` did not match dbc effect data - handler bound to hook `AfterEffectAbsorb` of AuraScript won't be executed", entry->
Id, (*itr).ToString().c_str(),
m_scriptName->c_str());
657 if (!(*itr).GetAffectedEffectsMask(entry))
658 SF_LOG_ERROR(
"scripts",
"Spell `%u` Effect `%s` of script `%s` did not match dbc effect data - handler bound to hook `OnEffectManaShield` of AuraScript won't be executed", entry->
Id, (*itr).ToString().c_str(),
m_scriptName->c_str());
661 if (!(*itr).GetAffectedEffectsMask(entry))
662 SF_LOG_ERROR(
"scripts",
"Spell `%u` Effect `%s` of script `%s` did not match dbc effect data - handler bound to hook `AfterEffectManaShield` of AuraScript won't be executed", entry->
Id, (*itr).ToString().c_str(),
m_scriptName->c_str());
665 if (!(*itr).GetAffectedEffectsMask(entry))
666 SF_LOG_ERROR(
"scripts",
"Spell `%u` Effect `%s` of script `%s` did not match dbc effect data - handler bound to hook `OnEffectSplit` of AuraScript won't be executed", entry->
Id, (*itr).ToString().c_str(),
m_scriptName->c_str());
670 SF_LOG_ERROR(
"scripts",
"Spell `%u` of script `%s` does not have apply aura effect - handler bound to hook `DoCheckProc` of AuraScript won't be executed", entry->
Id,
m_scriptName->c_str());
674 SF_LOG_ERROR(
"scripts",
"Spell `%u` of script `%s` does not have apply aura effect - handler bound to hook `DoPrepareProc` of AuraScript won't be executed", entry->
Id,
m_scriptName->c_str());
676 for (std::list<AuraProcHandler>::iterator itr =
OnProc.begin(); itr !=
OnProc.end(); ++itr)
678 SF_LOG_ERROR(
"scripts",
"Spell `%u` of script `%s` does not have apply aura effect - handler bound to hook `OnProc` of AuraScript won't be executed", entry->
Id,
m_scriptName->c_str());
680 for (std::list<AuraProcHandler>::iterator itr =
AfterProc.begin(); itr !=
AfterProc.end(); ++itr)
682 SF_LOG_ERROR(
"scripts",
"Spell `%u` of script `%s` does not have apply aura effect - handler bound to hook `AfterProc` of AuraScript won't be executed", entry->
Id,
m_scriptName->c_str());
685 if (!(*itr).GetAffectedEffectsMask(entry))
686 SF_LOG_ERROR(
"scripts",
"Spell `%u` Effect `%s` of script `%s` did not match dbc effect data - handler bound to hook `OnEffectProc` of AuraScript won't be executed", entry->
Id, (*itr).ToString().c_str(),
m_scriptName->c_str());
689 if (!(*itr).GetAffectedEffectsMask(entry))
690 SF_LOG_ERROR(
"scripts",
"Spell `%u` Effect `%s` of script `%s` did not match dbc effect data - handler bound to hook `AfterEffectProc` of AuraScript won't be executed", entry->
Id, (*itr).ToString().c_str(),
m_scriptName->c_str());
900 ASSERT(
false &&
"AuraScript::_IsDefaultActionPrevented is called in a wrong place");
927 return m_aura->GetSpellInfo();
937 return m_aura->GetCasterGUID();
942 return m_aura->GetCaster();
947 return m_aura->GetOwner();
952 return m_aura->GetUnitOwner();
957 return m_aura->GetDynobjOwner();
977 return m_aura->GetDuration();
982 m_aura->SetDuration(duration, withMods);
987 m_aura->RefreshDuration();
992 return m_aura->GetApplyTime();
997 return m_aura->GetMaxDuration();
1002 m_aura->SetMaxDuration(duration);
1007 return m_aura->CalcMaxDuration();
1012 return m_aura->IsExpired();
1017 return m_aura->IsPermanent();
1022 return m_aura->GetCharges();
1027 m_aura->SetCharges(charges);
1032 return m_aura->CalcMaxCharges();
1037 return m_aura->ModCharges(num, removeMode);
1042 return m_aura->DropCharge(removeMode);
1047 return m_aura->GetStackAmount();
1052 m_aura->SetStackAmount(num);
1057 return m_aura->ModStackAmount(num, removeMode);
1062 return m_aura->IsPassive();
1067 return m_aura->IsDeathPersistent();
1072 return m_aura->HasEffect(effIndex);
1077 return m_aura->GetEffect(effIndex);
1082 return m_aura->HasEffectType(type);
#define MAX_SPELL_EFFECTS
#define SF_LOG_ERROR(filterType__,...)
#define EFFECT_FIRST_FOUND
@ SPELL_EFFECT_PERSISTENT_AREA_AURA
@ SPELL_EFFECT_APPLY_AURA
@ SPELL_AURA_SPLIT_DAMAGE_PCT
@ SPELL_AURA_SCHOOL_ABSORB
@ AURA_SCRIPT_HOOK_EFFECT_REMOVE
@ AURA_SCRIPT_HOOK_EFFECT_AFTER_MANASHIELD
@ AURA_SCRIPT_HOOK_PREPARE_PROC
@ AURA_SCRIPT_HOOK_EFFECT_AFTER_APPLY
@ AURA_SCRIPT_HOOK_EFFECT_AFTER_REMOVE
@ AURA_SCRIPT_HOOK_AFTER_PROC
@ AURA_SCRIPT_HOOK_EFFECT_MANASHIELD
@ AURA_SCRIPT_HOOK_EFFECT_AFTER_ABSORB
@ AURA_SCRIPT_HOOK_EFFECT_APPLY
@ AURA_SCRIPT_HOOK_EFFECT_PERIODIC
@ AURA_SCRIPT_HOOK_EFFECT_AFTER_PROC
@ AURA_SCRIPT_HOOK_EFFECT_ABSORB
@ AURA_SCRIPT_HOOK_EFFECT_PROC
@ AURA_SCRIPT_HOOK_EFFECT_SPLIT
@ AURA_SCRIPT_HOOK_CHECK_PROC
@ SPELL_SCRIPT_STATE_NONE
@ SPELL_SCRIPT_STATE_LOADING
@ SPELL_SCRIPT_STATE_UNLOADING
@ SPELL_SCRIPT_STATE_REGISTRATION
#define HOOK_SPELL_HIT_START
#define HOOK_SPELL_HIT_END
@ SPELL_SCRIPT_HOOK_AFTER_HIT
@ SPELL_SCRIPT_HOOK_EFFECT_LAUNCH
@ SPELL_SCRIPT_HOOK_BEFORE_HIT
@ SPELL_SCRIPT_HOOK_CHECK_CAST
@ SPELL_SCRIPT_HOOK_EFFECT_LAUNCH_TARGET
@ SPELL_SCRIPT_HOOK_EFFECT_HIT_TARGET
@ TARGET_SELECT_CATEGORY_CONE
@ TARGET_SELECT_CATEGORY_AREA
@ TARGET_SELECT_CATEGORY_DEFAULT
@ TARGET_SELECT_CATEGORY_NEARBY
@ TARGET_SELECT_CATEGORY_CHANNEL
@ TARGET_OBJECT_TYPE_DEST
@ TARGET_REFERENCE_TYPE_TARGET
@ TARGET_REFERENCE_TYPE_CASTER
EffectAuraNameCheck(uint16 _effAurName)
bool Check(SpellInfo const *spellInfo, uint8 effIndex)
uint8 GetAffectedEffectsMask(SpellInfo const *spellInfo)
EffectHook(uint8 _effIndex)
bool IsEffectAffected(SpellInfo const *spellInfo, uint8 effIndex)
std::string EffIndexToString()
virtual bool CheckEffect(SpellInfo const *spellInfo, uint8 effIndex)=0
bool Check(SpellInfo const *spellInfo, uint8 effIndex)
EffectNameCheck(uint16 _effName)
std::string const * m_scriptName
uint8 m_currentScriptState
virtual bool Validate(SpellInfo const *)
virtual void Register()=0
std::string const * _GetScriptName() const
virtual void _Init(std::string const *scriptname, uint32 spellId)
virtual bool _Validate(SpellInfo const *entry)
void Call(AuraScript *auraScript, DispelInfo *dispelInfo)
AuraDispelHandler(AuraDispelFnType pHandlerScript)
AuraDispelFnType pHandlerScript
AuraProcHandler(AuraProcFnType handlerScript)
void Call(AuraScript *auraScript, ProcEventInfo &eventInfo)
AuraProcFnType _HandlerScript
CheckAreaTargetHandler(AuraCheckAreaTargetFnType pHandlerScript)
AuraCheckAreaTargetFnType pHandlerScript
bool Call(AuraScript *auraScript, Unit *target)
CheckProcHandler(AuraCheckProcFnType handlerScript)
bool Call(AuraScript *auraScript, ProcEventInfo &eventInfo)
AuraCheckProcFnType _HandlerScript
EffectAbsorbHandler(AuraEffectAbsorbFnType _pEffectHandlerScript, uint8 _effIndex)
AuraEffectAbsorbFnType pEffectHandlerScript
void Call(AuraScript *auraScript, AuraEffect *aurEff, DamageInfo &dmgInfo, uint32 &absorbAmount)
void Call(AuraScript *auraScript, AuraEffect const *_aurEff, AuraEffectHandleModes _mode)
EffectApplyHandler(AuraEffectApplicationModeFnType _pEffectHandlerScript, uint8 _effIndex, uint16 _effName, AuraEffectHandleModes _mode)
AuraEffectHandleModes mode
AuraEffectApplicationModeFnType pEffectHandlerScript
bool CheckEffect(SpellInfo const *spellInfo, uint8 effIndex)
EffectBase(uint8 _effIndex, uint16 _effName)
void Call(AuraScript *auraScript, AuraEffect const *aurEff, int32 &amount, bool &canBeRecalculated)
EffectCalcAmountHandler(AuraEffectCalcAmountFnType _pEffectHandlerScript, uint8 _effIndex, uint16 _effName)
AuraEffectCalcAmountFnType pEffectHandlerScript
EffectCalcPeriodicHandler(AuraEffectCalcPeriodicFnType _pEffectHandlerScript, uint8 _effIndex, uint16 _effName)
AuraEffectCalcPeriodicFnType pEffectHandlerScript
void Call(AuraScript *auraScript, AuraEffect const *aurEff, bool &isPeriodic, int32 &periodicTimer)
AuraEffectCalcSpellModFnType pEffectHandlerScript
void Call(AuraScript *auraScript, AuraEffect const *aurEff, SpellModifier *&spellMod)
EffectCalcSpellModHandler(AuraEffectCalcSpellModFnType _pEffectHandlerScript, uint8 _effIndex, uint16 _effName)
AuraEffectAbsorbFnType pEffectHandlerScript
EffectManaShieldHandler(AuraEffectAbsorbFnType _pEffectHandlerScript, uint8 _effIndex)
void Call(AuraScript *auraScript, AuraEffect *aurEff, DamageInfo &dmgInfo, uint32 &absorbAmount)
AuraEffectPeriodicFnType pEffectHandlerScript
void Call(AuraScript *auraScript, AuraEffect const *_aurEff)
EffectPeriodicHandler(AuraEffectPeriodicFnType _pEffectHandlerScript, uint8 _effIndex, uint16 _effName)
EffectProcHandler(AuraEffectProcFnType effectHandlerScript, uint8 effIndex, uint16 effName)
AuraEffectProcFnType _EffectHandlerScript
void Call(AuraScript *auraScript, AuraEffect const *aurEff, ProcEventInfo &eventInfo)
AuraEffectSplitFnType pEffectHandlerScript
EffectSplitHandler(AuraEffectSplitFnType _pEffectHandlerScript, uint8 _effIndex)
void Call(AuraScript *auraScript, AuraEffect *aurEff, DamageInfo &dmgInfo, uint32 &splitAmount)
AuraEffectUpdatePeriodicFnType pEffectHandlerScript
void Call(AuraScript *auraScript, AuraEffect *aurEff)
EffectUpdatePeriodicHandler(AuraEffectUpdatePeriodicFnType _pEffectHandlerScript, uint8 _effIndex, uint16 _effName)
bool _defaultActionPrevented
uint8 _currentScriptState
AuraApplication const * _auraApplication
HookList< EffectManaShieldHandler > AfterEffectManaShield
void PreventDefaultAction()
AuraObjectType GetType() const
void Remove(uint32 removeMode=0)
void SetMaxDuration(int32 duration)
HookList< EffectCalcPeriodicHandler > DoEffectCalcPeriodic
AuraApplication const * GetTargetApplication() const
int32 GetDuration() const
HookList< EffectApplyHandler > AfterEffectRemove
AuraApplication const * m_auraApplication
bool ModCharges(int8 num, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
HookList< EffectPeriodicHandler > OnEffectPeriodic
bool m_defaultActionPrevented
SpellInfo const * GetSpellInfo() const
WorldObject * GetOwner() const
uint8 CalcMaxCharges() const
HookList< EffectApplyHandler > AfterEffectApply
HookList< EffectProcHandler > AfterEffectProc
int32 GetMaxDuration() const
time_t GetApplyTime() const
void SetCharges(uint8 charges)
HookList< EffectAbsorbHandler > AfterEffectAbsorb
HookList< EffectCalcAmountHandler > DoEffectCalcAmount
uint64 GetCasterGUID() const
HookList< EffectUpdatePeriodicHandler > OnEffectUpdatePeriodic
HookList< EffectCalcSpellModHandler > DoEffectCalcSpellMod
void SetDuration(int32 duration, bool withMods=false)
void _PrepareScriptCall(AuraScriptHookType hookType, AuraApplication const *aurApp=NULL)
bool DropCharge(AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
HookList< EffectManaShieldHandler > OnEffectManaShield
AuraEffect * GetEffect(uint8 effIndex) const
bool HasEffectType(AuraType type) const
HookList< EffectAbsorbHandler > OnEffectAbsorb
bool _Validate(SpellInfo const *entry)
HookList< CheckAreaTargetHandler > DoCheckAreaTarget
bool IsDeathPersistent() const
bool _IsDefaultActionPrevented()
HookList< AuraProcHandler > AfterProc
HookList< AuraDispelHandler > OnDispel
HookList< CheckProcHandler > DoCheckProc
HookList< EffectApplyHandler > OnEffectRemove
HookList< AuraDispelHandler > AfterDispel
ScriptStateStack m_scriptStates
int32 CalcMaxDuration() const
void SetStackAmount(uint8 num)
HookList< EffectProcHandler > OnEffectProc
Unit * GetUnitOwner() const
HookList< AuraProcHandler > DoPrepareProc
HookList< AuraProcHandler > OnProc
HookList< EffectSplitHandler > OnEffectSplit
bool HasEffect(uint8 effIndex) const
uint8 GetStackAmount() const
HookList< EffectApplyHandler > OnEffectApply
DynamicObject * GetDynobjOwner() const
bool ModStackAmount(int32 num, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
SpellImplicitTargetInfo TargetA
SpellImplicitTargetInfo TargetB
SpellTargetReferenceTypes GetReferenceType() const
SpellTargetSelectionCategories GetSelectionCategory() const
SpellTargetObjectTypes GetObjectType() const
Targets GetTarget() const
SpellEffectInfo Effects[MAX_SPELL_EFFECTS]
bool HasAreaAuraEffect() const
bool HasEffect(SpellEffects effect) const
SpellCastFnType pCastHandlerScript
CastHandler(SpellCastFnType _pCastHandlerScript)
void Call(SpellScript *spellScript)
SpellCastResult Call(SpellScript *spellScript)
CheckCastHandler(SpellCheckCastFnType checkCastHandlerScript)
SpellCheckCastFnType _checkCastHandlerScript
void Call(SpellScript *spellScript, SpellEffIndex effIndex)
SpellEffectFnType pEffectHandlerScript
bool CheckEffect(SpellInfo const *spellInfo, uint8 effIndex)
EffectHandler(SpellEffectFnType _pEffectHandlerScript, uint8 _effIndex, uint16 _effName)
void Call(SpellScript *spellScript)
HitHandler(SpellHitFnType _pHitHandlerScript)
SpellHitFnType pHitHandlerScript
SpellObjectAreaTargetSelectFnType pObjectAreaTargetSelectHandlerScript
void Call(SpellScript *spellScript, std::list< WorldObject * > &targets)
ObjectAreaTargetSelectHandler(SpellObjectAreaTargetSelectFnType _pObjectAreaTargetSelectHandlerScript, uint8 _effIndex, uint16 _targetType)
void Call(SpellScript *spellScript, WorldObject *&targets)
SpellObjectTargetSelectFnType pObjectTargetSelectHandlerScript
ObjectTargetSelectHandler(SpellObjectTargetSelectFnType _pObjectTargetSelectHandlerScript, uint8 _effIndex, uint16 _targetType)
bool CheckEffect(SpellInfo const *spellInfo, uint8 effIndex)
TargetHook(uint8 _effectIndex, uint16 _targetType, bool _area)
Creature * GetHitCreature()
Unit * GetExplTargetUnit()
WorldLocation const * GetExplTargetDest()
Item * GetExplTargetItem()
void SetExplTargetDest(WorldLocation &loc)
bool IsInEffectHook() const
void FinishCast(SpellCastResult result)
SpellInfo const * GetSpellInfo()
bool IsInTargetHook() const
HookList< EffectHandler > OnEffectHit
void PreventHitDefaultEffect(SpellEffIndex effIndex)
bool IsInHitPhase() const
uint8 m_hitPreventEffectMask
HookList< EffectHandler > OnEffectHitTarget
void PreventHitEffect(SpellEffIndex effIndex)
HookList< ObjectTargetSelectHandler > OnObjectTargetSelect
WorldLocation * GetHitDest()
WorldObject * GetExplTargetWorldObject()
SpellInfo const * GetTriggeringSpell()
void SetCustomCastResultMessage(SpellCustomErrors result)
GameObject * GetHitGObj()
void CreateItem(uint32 effIndex, uint32 itemId)
HookList< EffectHandler > OnEffectLaunchTarget
GameObject * GetExplTargetGObj()
uint8 m_hitPreventDefaultEffectMask
void SetHitDamage(int32 damage)
bool IsInCheckCastHook() const
HookList< EffectHandler > OnEffectLaunch
void SetHitHeal(int32 heal)
Unit * GetOriginalCaster()
SpellValue const * GetSpellValue()
void _PrepareScriptCall(SpellScriptHookType hookType)
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
bool _Validate(SpellInfo const *entry)