Core/Arena: Correctly update the stats of the members of each team when the week ends and the arena points are distributed. (#28812)

This commit is contained in:
Gildor
2023-02-25 14:19:58 +01:00
committed by GitHub
parent c6cd272505
commit 70b483aae4
3 changed files with 4 additions and 4 deletions

View File

@@ -907,7 +907,7 @@ void ArenaTeam::UpdateArenaPointsHelper(std::map<uint32, uint32>& playerPoints)
}
}
void ArenaTeam::SaveToDB()
void ArenaTeam::SaveToDB(bool forceMemberSave)
{
// Save team and member stats to db
// Called after a match has ended or when calculating arena_points
@@ -927,7 +927,7 @@ void ArenaTeam::SaveToDB()
for (MemberList::const_iterator itr = Members.begin(); itr != Members.end(); ++itr)
{
// Save the effort and go
if (itr->WeekGames == 0)
if (itr->WeekGames == 0 && !forceMemberSave)
continue;
stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ARENA_TEAM_MEMBER);

View File

@@ -155,7 +155,7 @@ class TC_GAME_API ArenaTeam
bool LoadArenaTeamFromDB(QueryResult arenaTeamDataResult);
bool LoadMembersFromDB(QueryResult arenaTeamMembersResult);
void LoadStatsFromDB(uint32 ArenaTeamId);
void SaveToDB();
void SaveToDB(bool forceMemberSave = false);
void BroadcastPacket(WorldPacket* packet);
void BroadcastEvent(ArenaTeamEvents event, ObjectGuid guid, uint8 strCount, std::string const& str1, std::string const& str2, std::string const& str3);

View File

@@ -178,7 +178,7 @@ void ArenaTeamMgr::DistributeArenaPoints()
for (auto [teamId, team] : ArenaTeamStore)
{
if (team->FinishWeek())
team->SaveToDB();
team->SaveToDB(true);
team->NotifyStatsChanged();
}