feat(Core/Hooks): Added new BG hooks (#2008)

This commit is contained in:
Kargatum
2019-06-25 07:31:19 +07:00
committed by GitHub
parent 3269c0acc1
commit 782150ead3
3 changed files with 22 additions and 1 deletions

View File

@@ -1150,6 +1150,8 @@ void Battleground::RemovePlayerAtLeave(Player* player)
// Xinef: remove all criterias on bg leave
player->ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_CONDITION_BG_MAP, GetMapId(), true);
sScriptMgr->OnBattlegroundRemovePlayerAtLeave(this, player);
}
// this method is called when creating bg
@@ -1197,12 +1199,13 @@ void Battleground::AddPlayer(Player* player)
if (player->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_AFK))
player->ToggleAFK();
sScriptMgr->OnBattlegroundBeforeAddPlayer(this, player);
// score struct must be created in inherited class
uint64 guid = player->GetGUID();
TeamId teamId = player->GetBgTeamId();
// Add to list/maps
m_Players[guid] = player;

View File

@@ -2055,6 +2055,16 @@ void ScriptMgr::OnBattlegroundAddPlayer(Battleground* bg, Player* player)
FOREACH_SCRIPT(BGScript)->OnBattlegroundAddPlayer(bg, player);
}
void ScriptMgr::OnBattlegroundBeforeAddPlayer(Battleground* bg, Player* player)
{
FOREACH_SCRIPT(BGScript)->OnBattlegroundBeforeAddPlayer(bg, player);
}
void ScriptMgr::OnBattlegroundRemovePlayerAtLeave(Battleground* bg, Player* player)
{
FOREACH_SCRIPT(BGScript)->OnBattlegroundRemovePlayerAtLeave(bg, player);
}
// SpellSC
void ScriptMgr::OnCalcMaxDuration(Aura const* aura, int32& maxDuration)
{

View File

@@ -1110,6 +1110,12 @@ public:
// Add Player in Battlegroud
virtual void OnBattlegroundAddPlayer(Battleground* /*bg*/, Player* /*player*/) { }
// Before added player in Battlegroud
virtual void OnBattlegroundBeforeAddPlayer(Battleground* /*bg*/, Player* /*player*/) { }
// Remove player at leave BG
virtual void OnBattlegroundRemovePlayerAtLeave(Battleground* /*bg*/, Player* /*player*/) { }
};
class SpellSC : public ScriptObject
@@ -1480,6 +1486,8 @@ class ScriptMgr
void OnBattlegroundEndReward(Battleground* bg, Player* player, TeamId winnerTeamId);
void OnBattlegroundUpdate(Battleground* bg, uint32 diff);
void OnBattlegroundAddPlayer(Battleground* bg, Player* player);
void OnBattlegroundBeforeAddPlayer(Battleground* bg, Player* player);
void OnBattlegroundRemovePlayerAtLeave(Battleground* bg, Player* player);
public: /* SpellSC */