aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellScript.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Spells/SpellScript.cpp')
-rwxr-xr-xsrc/server/game/Spells/SpellScript.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/server/game/Spells/SpellScript.cpp b/src/server/game/Spells/SpellScript.cpp
index 52a06bd1f2e..fcb3bef7e30 100755
--- a/src/server/game/Spells/SpellScript.cpp
+++ b/src/server/game/Spells/SpellScript.cpp
@@ -146,6 +146,16 @@ std::string _SpellScript::EffectAuraNameCheck::ToString()
}
}
+SpellScript::CheckCastHandler::CheckCastHandler(SpellCheckCastFnType checkCastHandlerScript)
+{
+ _checkCastHandlerScript = checkCastHandlerScript;
+}
+
+SpellCastResult SpellScript::CheckCastHandler::Call(SpellScript* spellScript)
+{
+ return (spellScript->*_checkCastHandlerScript)();
+}
+
SpellScript::EffectHandler::EffectHandler(SpellEffectFnType _pEffectHandlerScript,uint8 _effIndex, uint16 _effName)
: _SpellScript::EffectNameCheck(_effName), _SpellScript::EffectHook(_effIndex)
{
@@ -445,6 +455,17 @@ void SpellScript::FinishCast(SpellCastResult result)
m_spell->finish(result == SPELL_CAST_OK);
}
+void SpellScript::SetCustomCastResultMessage(SpellCustomErrors result)
+{
+ if (!IsInCheckCastHook())
+ {
+ sLog->outError("TSCR: Script: `%s` Spell: `%u`: function SpellScript::SetCustomCastResultMessage was called while spell not in check cast phase!", m_scriptName->c_str(), m_scriptSpellId);
+ return;
+ }
+
+ m_spell->m_customError = result;
+}
+
bool AuraScript::_Validate(SpellEntry const * entry)
{
for (std::list<EffectApplyHandler>::iterator itr = OnEffectApply.begin(); itr != OnEffectApply.end(); ++itr)