diff options
author | silinoron <none@none> | 2010-09-03 19:58:16 -0700 |
---|---|---|
committer | silinoron <none@none> | 2010-09-03 19:58:16 -0700 |
commit | d2c259fe76cffddbc9adefcf48d5386d7671bb7a (patch) | |
tree | 3d7ef9b7abb9c83899966a63aff6f2d39323b254 /src | |
parent | 128c60c84ad1e11a8cf27f1ffb983052dbc9a82d (diff) |
Core/ScriptSystem: Add a PlayerScript::OnSpellCast(Player *player, Spell *spell, bool skipCheck) function.
Requested by Zor.
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Scripting/ScriptMgr.cpp | 5 | ||||
-rw-r--r-- | src/server/game/Scripting/ScriptMgr.h | 4 | ||||
-rw-r--r-- | src/server/game/Spells/Spell.cpp | 5 |
3 files changed, 14 insertions, 0 deletions
diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index 860ec673b4f..9c19b0a20c0 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -1132,6 +1132,11 @@ void ScriptMgr::OnPlayerTextEmote(Player* player, uint32 text_emote, uint32 emot FOREACH_SCRIPT(PlayerScript)->OnTextEmote(player, text_emote, emoteNum, guid); } +void ScriptMgr::OnPlayerSpellCast(Player *player, Spell *spell, bool skipCheck) +{ + FOREACH_SCRIPT(PlayerScript)->OnSpellCast(player, spell, skipCheck); +} + void ScriptMgr::OnGuildAddMember(Guild *guild, Player *player, uint32& plRank) { FOREACH_SCRIPT(GuildScript)->OnAddMember(guild, player, plRank); diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index 4bb9cf4dcb3..50168dbf6da 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -688,6 +688,9 @@ public: // Both of the below are called on emote opcodes virtual void OnEmote(Player* /*player*/, uint32 /*emote*/) { } virtual void OnTextEmote(Player* /*player*/, uint32 /*text_emote*/, uint32 /*emoteNum*/, uint64 /*guid*/) { } + + // Called in Spell::cast + virtual void OnSpellCast(Player *player, Spell *spell, bool skipCheck) { } }; class GuildScript : public ScriptObject @@ -887,6 +890,7 @@ class ScriptMgr void OnPlayerChat(Player* player, uint32 type, uint32 lang, std::string msg, void* param = NULL); void OnPlayerEmote(Player* player, uint32 emote); void OnPlayerTextEmote(Player* player, uint32 text_emote, uint32 emoteNum, uint64 guid); + void OnPlayerSpellCast(Player *player, Spell *spell, bool skipCheck); public: /* GuildScript */ void OnGuildAddMember(Guild *guild, Player *player, uint32& plRank); diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 7de3b7a38d1..51b044049ef 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -3133,6 +3133,11 @@ void Spell::cast(bool skipCheck) } } + // now that we've done the basic check, now run the scripts + // should be done before the spell is actually executed + if (Player *playerCaster = m_caster->ToPlayer()) + sScriptMgr.OnPlayerSpellCast(playerCaster, this, skipCheck); + SetExecutedCurrently(true); if (m_caster->GetTypeId() != TYPEID_PLAYER && m_targets.getUnitTarget() && m_targets.getUnitTarget() != m_caster) |