diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Battlegrounds/ArenaTeam.cpp | 12 | ||||
| -rw-r--r-- | src/server/game/Battlegrounds/ArenaTeam.h | 2 | ||||
| -rw-r--r-- | src/server/game/Battlegrounds/ArenaTeamMgr.cpp | 5 |
3 files changed, 15 insertions, 4 deletions
diff --git a/src/server/game/Battlegrounds/ArenaTeam.cpp b/src/server/game/Battlegrounds/ArenaTeam.cpp index ec007df6b6c..f1747bc0d00 100644 --- a/src/server/game/Battlegrounds/ArenaTeam.cpp +++ b/src/server/game/Battlegrounds/ArenaTeam.cpp @@ -899,6 +899,10 @@ void ArenaTeam::SaveToDB() for (MemberList::const_iterator itr = Members.begin(); itr != Members.end(); ++itr) { + // Save the effort and go + if (itr->WeekGames == 0) + continue; + stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ARENA_TEAM_MEMBER); stmt->setUInt16(0, itr->PersonalRating); stmt->setUInt16(1, itr->WeekGames); @@ -919,8 +923,12 @@ void ArenaTeam::SaveToDB() CharacterDatabase.CommitTransaction(trans); } -void ArenaTeam::FinishWeek() +bool ArenaTeam::FinishWeek() { + // No need to go further than this + if (Stats.WeekGames == 0) + return false; + // Reset team stats Stats.WeekGames = 0; Stats.WeekWins = 0; @@ -931,6 +939,8 @@ void ArenaTeam::FinishWeek() itr->WeekGames = 0; itr->WeekWins = 0; } + + return true; } bool ArenaTeam::IsFighting() const diff --git a/src/server/game/Battlegrounds/ArenaTeam.h b/src/server/game/Battlegrounds/ArenaTeam.h index 7e9f490bff9..e283197346c 100644 --- a/src/server/game/Battlegrounds/ArenaTeam.h +++ b/src/server/game/Battlegrounds/ArenaTeam.h @@ -180,7 +180,7 @@ class TC_GAME_API ArenaTeam void UpdateArenaPointsHelper(std::map<uint32, uint32> & PlayerPoints); - void FinishWeek(); + bool FinishWeek(); // returns true if arena team played this week void FinishGame(int32 mod); protected: diff --git a/src/server/game/Battlegrounds/ArenaTeamMgr.cpp b/src/server/game/Battlegrounds/ArenaTeamMgr.cpp index 37e26d7e448..6fe11e3bd8c 100644 --- a/src/server/game/Battlegrounds/ArenaTeamMgr.cpp +++ b/src/server/game/Battlegrounds/ArenaTeamMgr.cpp @@ -186,8 +186,9 @@ void ArenaTeamMgr::DistributeArenaPoints() { if (ArenaTeam* at = titr->second) { - at->FinishWeek(); - at->SaveToDB(); + if (at->FinishWeek()) + at->SaveToDB(); + at->NotifyStatsChanged(); } } |
