Skip to content

Commit e5e514b

Browse files
authored
feat(Core/Scripting): add OnBeforeArenaCheckWinConditions hook for mod-arena-replay compatibility (azerothcore#19856)
1 parent bf18b9b commit e5e514b

File tree

4 files changed

+12
-0
lines changed

4 files changed

+12
-0
lines changed

src/server/game/Battlegrounds/Arena.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,9 @@ void Arena::RemovePlayerAtLeave(Player* player)
192192

193193
void Arena::CheckWinConditions()
194194
{
195+
if (!sScriptMgr->OnBeforeArenaCheckWinConditions(this))
196+
return;
197+
195198
if (!GetAlivePlayersCountByTeam(TEAM_ALLIANCE) && GetPlayersCountByTeam(TEAM_HORDE))
196199
EndBattleground(TEAM_HORDE);
197200
else if (GetPlayersCountByTeam(TEAM_ALLIANCE) && !GetAlivePlayersCountByTeam(TEAM_HORDE))

src/server/game/Scripting/ScriptDefines/ArenaScript.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ bool ScriptMgr::CanSaveToDB(ArenaTeam* team)
3434
CALL_ENABLED_BOOLEAN_HOOKS(ArenaScript, ARENAHOOK_CAN_SAVE_TO_DB, !script->CanSaveToDB(team));
3535
}
3636

37+
bool ScriptMgr::OnBeforeArenaCheckWinConditions(Battleground* const bg)
38+
{
39+
CALL_ENABLED_BOOLEAN_HOOKS(ArenaScript, ARENAHOOK_ON_BEFORE_CHECK_WIN_CONDITION, !script->OnBeforeArenaCheckWinConditions(bg));
40+
}
41+
3742
ArenaScript::ArenaScript(const char* name, std::vector<uint16> enabledHooks)
3843
: ScriptObject(name, ARENAHOOK_END)
3944
{

src/server/game/Scripting/ScriptDefines/ArenaScript.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ enum ArenaHook
2727
ARENAHOOK_CAN_ADD_MEMBER,
2828
ARENAHOOK_ON_GET_POINTS,
2929
ARENAHOOK_CAN_SAVE_TO_DB,
30+
ARENAHOOK_ON_BEFORE_CHECK_WIN_CONDITION,
3031
ARENAHOOK_END
3132
};
3233

@@ -44,6 +45,8 @@ class ArenaScript : public ScriptObject
4445

4546
virtual void OnGetPoints(ArenaTeam* /*team*/, uint32 /*memberRating*/, float& /*points*/) { }
4647

48+
[[nodiscard]] virtual bool OnBeforeArenaCheckWinConditions(Battleground* const /* bg */) { return true; }
49+
4750
[[nodiscard]] virtual bool CanSaveToDB(ArenaTeam* /*team*/) { return true; }
4851
};
4952

src/server/game/Scripting/ScriptMgr.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -646,6 +646,7 @@ class ScriptMgr
646646
bool CanAddMember(ArenaTeam* team, ObjectGuid PlayerGuid);
647647
void OnGetPoints(ArenaTeam* team, uint32 memberRating, float& points);
648648
bool CanSaveToDB(ArenaTeam* team);
649+
bool OnBeforeArenaCheckWinConditions(Battleground* const bg);
649650

650651
public: /* MiscScript */
651652

0 commit comments

Comments
 (0)