diff options
author | mik1893 <michele.roscelli@gmail.com> | 2016-09-11 22:53:22 +0200 |
---|---|---|
committer | Yehonal <yehonal.azeroth@gmail.com> | 2016-09-24 14:45:07 +0200 |
commit | ca510dfd8d5f2515bc1966e45f801eb4085f0c36 (patch) | |
tree | ab6deaf9febf6397d7e972629496624537a5938e | |
parent | 6966eba2bbb91d1fb84800a27d5ba7200f1e4d39 (diff) |
Core/Unit: added new script OnPlayerBeingCharmed
-rw-r--r-- | src/game/Entities/Unit/Unit.cpp | 3 | ||||
-rw-r--r-- | src/game/Scripting/ScriptMgr.cpp | 5 | ||||
-rw-r--r-- | src/game/Scripting/ScriptMgr.h | 6 |
3 files changed, 13 insertions, 1 deletions
diff --git a/src/game/Entities/Unit/Unit.cpp b/src/game/Entities/Unit/Unit.cpp index d145b99a57..c35ac57c21 100644 --- a/src/game/Entities/Unit/Unit.cpp +++ b/src/game/Entities/Unit/Unit.cpp @@ -16963,6 +16963,9 @@ bool Unit::SetCharmedBy(Unit* charmer, CharmType type, AuraApplication const* au CombatStop(); DeleteThreatList(); + if (GetTypeId() == TYPEID_PLAYER) + sScriptMgr->OnPlayerBeingCharmed(ToPlayer(), charmer, _oldFactionId, charmer->getFaction()); + return true; } diff --git a/src/game/Scripting/ScriptMgr.cpp b/src/game/Scripting/ScriptMgr.cpp index e41899e1f4..ad2b2dc990 100644 --- a/src/game/Scripting/ScriptMgr.cpp +++ b/src/game/Scripting/ScriptMgr.cpp @@ -1318,6 +1318,11 @@ void ScriptMgr::OnCriteriaSave(SQLTransaction& trans, Player* player, uint16 cri FOREACH_SCRIPT(PlayerScript)->OnCriteriaSave(trans, player, critId, criteriaData); } +void ScriptMgr::OnPlayerBeingCharmed(Player* player, Unit* charmer, uint32 oldFactionId, uint32 newFactionId) +{ + FOREACH_SCRIPT(PlayerScript)->OnBeingCharmed(player, charmer, oldFactionId, newFactionId); +} + // Guild void ScriptMgr::OnGuildAddMember(Guild* guild, Player* player, uint8& plRank) { diff --git a/src/game/Scripting/ScriptMgr.h b/src/game/Scripting/ScriptMgr.h index e625feae24..50d2d14911 100644 --- a/src/game/Scripting/ScriptMgr.h +++ b/src/game/Scripting/ScriptMgr.h @@ -782,6 +782,9 @@ class PlayerScript : public ScriptObject // Called when a player selects an option in a player gossip window virtual void OnGossipSelectCode(Player* /*player*/, uint32 /*menu_id*/, uint32 /*sender*/, uint32 /*action*/, const char* /*code*/) { } + + // On player getting charmed + virtual void OnBeingCharmed(Player* /*player*/, Unit* /*charmer*/, uint32 /*oldFactionId*/, uint32 /*newFactionId*/) { } }; class GuildScript : public ScriptObject @@ -1055,6 +1058,7 @@ class ScriptMgr void OnPlayerBindToInstance(Player* player, Difficulty difficulty, uint32 mapid, bool permanent); void OnPlayerUpdateZone(Player* player, uint32 newZone, uint32 newArea); void OnPlayerUpdateFaction(Player* player); + void OnPlayerAddToBattleground(Player* player, Battleground* bg); void OnPlayerRemoveFromBattleground(Player* player, Battleground* bg); void OnAchievementComplete(Player *player, AchievementEntry const* achievement); void OnCriteriaProgress(Player *player, AchievementCriteriaEntry const* criteria); @@ -1062,7 +1066,7 @@ class ScriptMgr void OnCriteriaSave(SQLTransaction& trans, Player* player, uint16 critId, CriteriaProgress criteriaData); void OnGossipSelect(Player* player, uint32 menu_id, uint32 sender, uint32 action); void OnGossipSelectCode(Player* player, uint32 menu_id, uint32 sender, uint32 action, const char* code); - void OnPlayerAddToBattleground(Player* player, Battleground* bg); + void OnPlayerBeingCharmed(Player* player, Unit* charmer, uint32 oldFactionId, uint32 newFactionId); public: /* GuildScript */ |