diff options
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 4 | ||||
| -rw-r--r-- | src/server/game/Scripting/ScriptMgr.cpp | 15 | ||||
| -rw-r--r-- | src/server/game/Scripting/ScriptMgr.h | 12 | ||||
| -rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 2 |
4 files changed, 33 insertions, 0 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index d9e1d5d2eae..9dd13be7fdd 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -7173,6 +7173,8 @@ void Player::DuelComplete(DuelCompleteType type) SendMessageToSet(&data,true); } + sScriptMgr.OnPlayerDuelEnd(duel->opponent, this, type); + switch (type) { case DUEL_FLED: @@ -18476,6 +18478,8 @@ void Player::UpdateDuelFlag(time_t currTime) if (!duel || duel->startTimer == 0 ||currTime < duel->startTimer + 3) return; + sScriptMgr.OnPlayerDuelStart(this, duel->opponent); + SetUInt32Value(PLAYER_DUEL_TEAM, 1); duel->opponent->SetUInt32Value(PLAYER_DUEL_TEAM, 2); diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index e2da5d20d4c..b1087989180 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -1116,6 +1116,21 @@ void ScriptMgr::OnPlayerReputationChange(Player *player, uint32 factionID, int32 FOREACH_SCRIPT(PlayerScript)->OnReputationChange(player, factionID, standing, incremental); } +void ScriptMgr::OnPlayerDuelRequest(Player *target, Player *challenger) +{ + FOREACH_SCRIPT(PlayerScript)->OnDuelRequest(target, challenger); +} + +void ScriptMgr::OnPlayerDuelStart(Player *player1, Player *player2) +{ + FOREACH_SCRIPT(PlayerScript)->OnDuelStart(player1, player2); +} + +void ScriptMgr::OnPlayerDuelEnd(Player *winner, Player *looser, DuelCompleteType type) +{ + FOREACH_SCRIPT(PlayerScript)->OnDuelEnd(winner, looser, type); +} + void ScriptMgr::OnPlayerChat(Player* player, uint32 type, uint32 lang, std::string msg) { FOREACH_SCRIPT(PlayerScript)->OnChat(player, type, lang, msg); diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index 008f945cb53..0c1135a2416 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -674,6 +674,15 @@ class PlayerScript : public ScriptObject // Called when a player's reputation changes (before it is actually changed) virtual void OnReputationChange(Player* /*player*/, uint32 /*factionID*/, int32& /*standing*/, bool /*incremental*/) { } + // Called when a duel is requested + virtual void OnDuelRequest(Player* /*target*/, Player* /*challenger*/) { } + + // Called when a duel starts (after 3s countdown) + virtual void OnDuelStart(Player* /*player1*/, Player* /*player2*/) { } + + // Called when a duel ends + virtual void OnDuelEnd(Player* /*winner*/, Player* /*looser*/, DuelCompleteType /*type*/) { } + // The following methods are called when a player sends a chat message virtual void OnChat(Player* /*player*/, uint32 /*type*/, uint32 /*lang*/, std::string /*msg*/) { } virtual void OnChat(Player* /*player*/, uint32 /*type*/, uint32 /*lang*/, std::string /*msg*/, Player* /*receiver*/) { } @@ -885,6 +894,9 @@ class ScriptMgr void OnPlayerMoneyChanged(Player *player, int32& amount); void OnGivePlayerXP(Player *player, uint32& amount, Unit *victim); void OnPlayerReputationChange(Player *player, uint32 factionID, int32& standing, bool incremental); + void OnPlayerDuelRequest(Player* target, Player* challenger); + void OnPlayerDuelStart(Player* player1, Player* player2); + void OnPlayerDuelEnd(Player* winner, Player* looser, DuelCompleteType type); void OnPlayerChat(Player* player, uint32 type, uint32 lang, std::string msg); void OnPlayerChat(Player* player, uint32 type, uint32 lang, std::string msg, Player* receiver); void OnPlayerChat(Player* player, uint32 type, uint32 lang, std::string msg, Group* group); diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 2a49326fe83..166066f1bb9 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -5474,6 +5474,8 @@ void Spell::EffectDuel(SpellEffIndex effIndex) caster->SetUInt64Value(PLAYER_DUEL_ARBITER, pGameObj->GetGUID()); target->SetUInt64Value(PLAYER_DUEL_ARBITER, pGameObj->GetGUID()); + + sScriptMgr.OnPlayerDuelRequest(target, caster); } void Spell::EffectStuck(SpellEffIndex /*effIndex*/) |
