aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellScript.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Spells/SpellScript.h')
-rwxr-xr-xsrc/server/game/Spells/SpellScript.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/server/game/Spells/SpellScript.h b/src/server/game/Spells/SpellScript.h
index ffd462c9507..64dc4282ad5 100755
--- a/src/server/game/Spells/SpellScript.h
+++ b/src/server/game/Spells/SpellScript.h
@@ -21,6 +21,7 @@
#include "Util.h"
#include "SharedDefines.h"
#include "SpellAuraDefines.h"
+#include <stack>
class Unit;
struct SpellEntry;
@@ -58,6 +59,7 @@ class _SpellScript
virtual bool _Validate(SpellEntry const* entry);
public:
+ _SpellScript() : m_currentScriptState(SPELL_SCRIPT_STATE_NONE) {}
virtual ~_SpellScript() {}
virtual void _Register();
virtual void _Unload();
@@ -326,7 +328,9 @@ class SpellScript : public _SpellScript
enum AuraScriptHookType
{
AURA_SCRIPT_HOOK_EFFECT_APPLY = SPELL_SCRIPT_STATE_END,
+ AURA_SCRIPT_HOOK_EFFECT_AFTER_APPLY,
AURA_SCRIPT_HOOK_EFFECT_REMOVE,
+ AURA_SCRIPT_HOOK_EFFECT_AFTER_REMOVE,
AURA_SCRIPT_HOOK_EFFECT_PERIODIC,
AURA_SCRIPT_HOOK_EFFECT_UPDATE_PERIODIC,
AURA_SCRIPT_HOOK_EFFECT_CALC_AMOUNT,
@@ -446,6 +450,8 @@ class AuraScript : public _SpellScript
#define PrepareAuraScript(CLASSNAME) AURASCRIPT_FUNCTION_TYPE_DEFINES(CLASSNAME) AURASCRIPT_FUNCTION_CAST_DEFINES(CLASSNAME)
public:
+ AuraScript() : _SpellScript(), m_aura(NULL), m_auraApplication(NULL), m_defaultActionPrevented(false)
+ {}
bool _Validate(SpellEntry const * entry);
bool _Load(Aura * aura);
void _PrepareScriptCall(AuraScriptHookType hookType, AuraApplication const * aurApp = NULL);
@@ -455,6 +461,20 @@ class AuraScript : public _SpellScript
Aura * m_aura;
AuraApplication const * m_auraApplication;
bool m_defaultActionPrevented;
+
+ class ScriptStateStore
+ {
+ public:
+ uint8 _currentScriptState;
+ AuraApplication const * _auraApplication;
+ bool _defaultActionPrevented;
+ ScriptStateStore(uint8 currentScriptState, AuraApplication const * auraApplication, bool defaultActionPrevented)
+ : _currentScriptState(currentScriptState), _auraApplication(auraApplication), _defaultActionPrevented(defaultActionPrevented)
+ {}
+ };
+ typedef std::stack<ScriptStateStore> ScriptStateStack;
+ ScriptStateStack m_scriptStates;
+
public:
//
// AuraScript interface