diff options
author | Shauren <shauren.trinity@gmail.com> | 2012-06-30 00:06:17 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2012-06-30 00:06:17 +0200 |
commit | 067c27d29920baaa97a242dea8d192dc848fdbd8 (patch) | |
tree | bf1ecfb8e5bd998f1bd2ddaea872b12cd66e88ca /src/server/game/Spells/SpellScript.h | |
parent | e0997874f5bf8d38b67ad3dee66e3d808dd1a059 (diff) |
Core/SpellScript: Corrected error messages and in-source documentation for OnObjectAreaTargetSelect hook and allow using that hook only for area spell targets
Diffstat (limited to 'src/server/game/Spells/SpellScript.h')
-rwxr-xr-x | src/server/game/Spells/SpellScript.h | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/src/server/game/Spells/SpellScript.h b/src/server/game/Spells/SpellScript.h index a145a0b7377..9b1afd75405 100755 --- a/src/server/game/Spells/SpellScript.h +++ b/src/server/game/Spells/SpellScript.h @@ -131,7 +131,7 @@ enum SpellScriptHookType SPELL_SCRIPT_HOOK_BEFORE_HIT, SPELL_SCRIPT_HOOK_HIT, SPELL_SCRIPT_HOOK_AFTER_HIT, - SPELL_SCRIPT_HOOK_UNIT_TARGET_SELECT, + SPELL_SCRIPT_HOOK_OBJECT_AREA_TARGET_SELECT, SPELL_SCRIPT_HOOK_CHECK_CAST, SPELL_SCRIPT_HOOK_BEFORE_CAST, SPELL_SCRIPT_HOOK_ON_CAST, @@ -196,16 +196,24 @@ class SpellScript : public _SpellScript SpellHitFnType pHitHandlerScript; }; - class ObjectAreaTargetSelectHandler : public _SpellScript::EffectHook + class TargetHook : public _SpellScript::EffectHook { public: - ObjectAreaTargetSelectHandler(SpellObjectAreaTargetSelectFnType _pObjectAreaTargetSelectHandlerScript, uint8 _effIndex, uint16 _targetType); - std::string ToString(); + TargetHook(uint8 _effectIndex, uint16 _targetType, bool _area); bool CheckEffect(SpellInfo const* spellEntry, uint8 targetType); + std::string ToString(); + protected: + uint16 targetType; + bool area; + }; + + class ObjectAreaTargetSelectHandler : public TargetHook + { + public: + ObjectAreaTargetSelectHandler(SpellObjectAreaTargetSelectFnType _pObjectAreaTargetSelectHandlerScript, uint8 _effIndex, uint16 _targetType); void Call(SpellScript* spellScript, std::list<WorldObject*>& targets); private: SpellObjectAreaTargetSelectFnType pObjectAreaTargetSelectHandlerScript; - uint16 targetType; }; #define SPELLSCRIPT_FUNCTION_CAST_DEFINES(CLASSNAME) \ @@ -267,15 +275,15 @@ class SpellScript : public _SpellScript // where function is: void function() #define SpellHitFn(F) HitHandlerFunction(&F) - // example: OnUnitTargetSelect += SpellUnitTargetFn(class::function, EffectIndexSpecifier, TargetsNameSpecifier); - // where function is void function(std::list<Unit*>& targetList) + // example: OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(class::function, EffectIndexSpecifier, TargetsNameSpecifier); + // where function is void function(std::list<WorldObject*>& targets) HookList<ObjectAreaTargetSelectHandler> OnObjectAreaTargetSelect; #define SpellObjectAreaTargetSelectFn(F, I, N) ObjectAreaTargetSelectHandlerFunction(&F, I, N) // hooks are executed in following order, at specified event of spell: // 1. BeforeCast - executed when spell preparation is finished (when cast bar becomes full) before cast is handled // 2. OnCheckCast - allows to override result of CheckCast function - // 3. OnUnitTargetSelect - executed just before adding selected targets to final target list + // 3a. OnObjectAreaTargetSelect - executed just before adding selected targets to final target list (for area targets) // 4. OnCast - executed just before spell is launched (creates missile) or executed // 5. AfterCast - executed after spell missile is launched and immediate spell actions are done // 6. OnEffectLaunch - executed just before specified effect handler call - when spell missile is launched |