summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormik1893 <michele.roscelli@gmail.com>2016-09-11 22:53:22 +0200
committerYehonal <yehonal.azeroth@gmail.com>2016-09-24 14:45:07 +0200
commitca510dfd8d5f2515bc1966e45f801eb4085f0c36 (patch)
treeab6deaf9febf6397d7e972629496624537a5938e
parent6966eba2bbb91d1fb84800a27d5ba7200f1e4d39 (diff)
Core/Unit: added new script OnPlayerBeingCharmed
-rw-r--r--src/game/Entities/Unit/Unit.cpp3
-rw-r--r--src/game/Scripting/ScriptMgr.cpp5
-rw-r--r--src/game/Scripting/ScriptMgr.h6
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 */