Core/ScriptMgr: Add hooks for duel phases: OnDuelRequest, OnDuelStart, OnDuelEnd
--HG-- branch : trunk
This commit is contained in:
@@ -7173,6 +7173,8 @@ void Player::DuelComplete(DuelCompleteType type)
|
|||||||
SendMessageToSet(&data,true);
|
SendMessageToSet(&data,true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sScriptMgr.OnPlayerDuelEnd(duel->opponent, this, type);
|
||||||
|
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case DUEL_FLED:
|
case DUEL_FLED:
|
||||||
@@ -18476,6 +18478,8 @@ void Player::UpdateDuelFlag(time_t currTime)
|
|||||||
if (!duel || duel->startTimer == 0 ||currTime < duel->startTimer + 3)
|
if (!duel || duel->startTimer == 0 ||currTime < duel->startTimer + 3)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
sScriptMgr.OnPlayerDuelStart(this, duel->opponent);
|
||||||
|
|
||||||
SetUInt32Value(PLAYER_DUEL_TEAM, 1);
|
SetUInt32Value(PLAYER_DUEL_TEAM, 1);
|
||||||
duel->opponent->SetUInt32Value(PLAYER_DUEL_TEAM, 2);
|
duel->opponent->SetUInt32Value(PLAYER_DUEL_TEAM, 2);
|
||||||
|
|
||||||
|
|||||||
@@ -1116,6 +1116,21 @@ void ScriptMgr::OnPlayerReputationChange(Player *player, uint32 factionID, int32
|
|||||||
FOREACH_SCRIPT(PlayerScript)->OnReputationChange(player, factionID, standing, incremental);
|
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)
|
void ScriptMgr::OnPlayerChat(Player* player, uint32 type, uint32 lang, std::string msg)
|
||||||
{
|
{
|
||||||
FOREACH_SCRIPT(PlayerScript)->OnChat(player, type, lang, msg);
|
FOREACH_SCRIPT(PlayerScript)->OnChat(player, type, lang, msg);
|
||||||
|
|||||||
@@ -674,6 +674,15 @@ class PlayerScript : public ScriptObject
|
|||||||
// Called when a player's reputation changes (before it is actually changed)
|
// Called when a player's reputation changes (before it is actually changed)
|
||||||
virtual void OnReputationChange(Player* /*player*/, uint32 /*factionID*/, int32& /*standing*/, bool /*incremental*/) { }
|
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
|
// 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*/) { }
|
||||||
virtual void OnChat(Player* /*player*/, uint32 /*type*/, uint32 /*lang*/, std::string /*msg*/, Player* /*receiver*/) { }
|
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 OnPlayerMoneyChanged(Player *player, int32& amount);
|
||||||
void OnGivePlayerXP(Player *player, uint32& amount, Unit *victim);
|
void OnGivePlayerXP(Player *player, uint32& amount, Unit *victim);
|
||||||
void OnPlayerReputationChange(Player *player, uint32 factionID, int32& standing, bool incremental);
|
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);
|
||||||
void OnPlayerChat(Player* player, uint32 type, uint32 lang, std::string msg, Player* receiver);
|
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);
|
void OnPlayerChat(Player* player, uint32 type, uint32 lang, std::string msg, Group* group);
|
||||||
|
|||||||
@@ -5474,6 +5474,8 @@ void Spell::EffectDuel(SpellEffIndex effIndex)
|
|||||||
|
|
||||||
caster->SetUInt64Value(PLAYER_DUEL_ARBITER, pGameObj->GetGUID());
|
caster->SetUInt64Value(PLAYER_DUEL_ARBITER, pGameObj->GetGUID());
|
||||||
target->SetUInt64Value(PLAYER_DUEL_ARBITER, pGameObj->GetGUID());
|
target->SetUInt64Value(PLAYER_DUEL_ARBITER, pGameObj->GetGUID());
|
||||||
|
|
||||||
|
sScriptMgr.OnPlayerDuelRequest(target, caster);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Spell::EffectStuck(SpellEffIndex /*effIndex*/)
|
void Spell::EffectStuck(SpellEffIndex /*effIndex*/)
|
||||||
|
|||||||
Reference in New Issue
Block a user