Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp
- index 39f1291..cead3ae 100755
- --- a/src/server/game/Battlegrounds/Battleground.cpp
- +++ b/src/server/game/Battlegrounds/Battleground.cpp
- @@ -772,6 +772,47 @@ void Battleground::EndBattleground(uint32 winner)
- SetArenaMatchmakerRating(GetOtherTeam(winner), loserMatchmakerRating + loserMatchmakerChange);
- SetArenaTeamRatingChangeForTeam(winner, winnerChange);
- SetArenaTeamRatingChangeForTeam(GetOtherTeam(winner), loserChange);
- + /** World of Warcraft Armory **/
- + uint32 maxChartID;
- + QueryResult result = CharacterDatabase.PQuery("SELECT MAX(gameid) FROM armory_game_chart");
- + if(!result)
- + maxChartID = 0;
- + else
- + {
- + maxChartID = (*result)[0].GetUInt32();
- + // result.release();
- + }
- + uint32 gameID = maxChartID+1;
- + for(BattlegroundScoreMap::const_iterator itr = PlayerScores.begin(); itr != PlayerScores.end(); ++itr)
- + {
- + Player *plr = ObjectAccessor::FindPlayer(itr->first);
- + if (!plr)
- + continue;
- + uint32 plTeamID = plr->GetArenaTeamId(winnerArenaTeam->GetSlot());
- + int changeType;
- + uint32 resultRating;
- + uint32 resultTeamID;
- + int32 ratingChange;
- + if (plTeamID == winnerArenaTeam->GetId())
- + {
- + changeType = 1; //win
- + resultRating = winnerTeamRating ;
- + resultTeamID = plTeamID;
- + ratingChange = winnerChange ;
- + }
- + else
- + {
- + changeType = 2; //lose
- + resultRating = loserTeamRating ;
- + resultTeamID = loserArenaTeam ->GetId();
- + ratingChange = loserChange ;
- + }
- + std::ostringstream sql_query;
- + // gameid, teamid, guid, changeType, ratingChange, teamRating, damageDone, deaths, healingDone, damageTaken,, healingTaken, killingBlows, mapId, start, end
- + sql_query << "INSERT INTO armory_game_chart VALUES ('" << gameID << "', '" << resultTeamID << "', '" << plr->GetGUID() << "', '" << changeType << "', '" << ratingChange << "', '" << resultRating << "', '" << itr->second->DamageDone << "', '" << itr->second->Deaths << "', '" << itr->second->HealingDone << "', '" << itr->second->DamageTaken << "', '" << itr->second->HealingTaken << "', '" << itr->second->KillingBlows << "', '" << m_MapId << "', '" << m_StartTime << "', '" << m_EndTime << "')";
- + CharacterDatabase.Execute(sql_query.str().c_str());
- + }
- + /** World of Warcraft Armory **/
- sLog->outDebug(LOG_FILTER_ARENAS, "Arena match Type: %u for Team1Id: %u - Team2Id: %u ended. WinnerTeamId: %u. Winner rating: +%d, Loser rating: %d", m_ArenaType, m_ArenaTeamIds[TEAM_ALLIANCE], m_ArenaTeamIds[TEAM_HORDE], winnerArenaTeam->GetId(), winnerChange, loserChange);
- if (sWorld->getBoolConfig(CONFIG_ARENA_LOG_EXTENDED_INFO))
- for (Battleground::BattlegroundScoreMap::const_iterator itr = GetPlayerScoresBegin(); itr != GetPlayerScoresEnd(); ++itr)
- @@ -1387,6 +1428,14 @@ void Battleground::UpdatePlayerScore(Player *Source, uint32 type, uint32 value,
- case SCORE_HEALING_DONE: // Healing Done
- itr->second->HealingDone += value;
- break;
- + /** World of Warcraft Armory **/
- + case SCORE_DAMAGE_TAKEN:
- + itr->second->DamageTaken += value; // Damage Taken
- + break;
- + case SCORE_HEALING_TAKEN:
- + itr->second->HealingTaken += value; // Healing Taken
- + break;
- + /** World of Warcraft Armory **/
- default:
- sLog->outError("Battleground: Unknown player score type %u", type);
- break;
- diff --git a/src/server/game/Battlegrounds/Battleground.h b/src/server/game/Battlegrounds/Battleground.h
- index a1337c2..dcad57d 100755
- --- a/src/server/game/Battlegrounds/Battleground.h
- +++ b/src/server/game/Battlegrounds/Battleground.h
- @@ -209,7 +209,11 @@ enum ScoreType
- SCORE_SECONDARY_OBJECTIVES = 17,
- //SOTA
- SCORE_DESTROYED_DEMOLISHER = 18,
- - SCORE_DESTROYED_WALL = 19
- + SCORE_DESTROYED_WALL = 19,
- + /** World of Warcraft Armory **/
- + SCORE_DAMAGE_TAKEN = 20,
- + SCORE_HEALING_TAKEN = 21
- + /** World of Warcraft Armory **/
- };
- enum ArenaType
- @@ -300,6 +304,10 @@ class BattlegroundScore
- uint32 BonusHonor;
- uint32 DamageDone;
- uint32 HealingDone;
- + /** World of Warcraft Armory **/
- + uint32 DamageTaken;
- + uint32 HealingTaken;
- + /** World of Warcraft Armory **/
- };
- enum BGHonorMode
- diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
- index 6709044..5163a8b 100755
- --- a/src/server/game/Entities/Unit/Unit.cpp
- +++ b/src/server/game/Entities/Unit/Unit.cpp
- @@ -746,9 +746,16 @@
- // in bg, count dmg if victim is also a player
- if (victim->GetTypeId() == TYPEID_PLAYER)
- + {
- if (Battleground* bg = killer->GetBattleground())
- + {
- bg->UpdatePlayerScore(killer, SCORE_DAMAGE_DONE, damage);
- -
- + /** World of Warcraft Armory **/
- + if (Battleground *bgV = ((Player*)victim)->GetBattleground())
- + bgV->UpdatePlayerScore(((Player*)victim), SCORE_DAMAGE_TAKEN, damage);
- + /** World of Warcraft Armory **/
- + }
- + }
- killer->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_DAMAGE_DONE, damage, 0, victim);
- killer->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HIT_DEALT, damage);
- }
- @@ -10152,6 +10159,10 @@
- {
- player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_TOTAL_HEALING_RECEIVED, gain);
- player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEALING_RECEIVED, addhealth);
- + /** World of Warcraft Armory **/
- + if (Battleground *bgV = victim->ToPlayer()->GetBattleground())
- + bgV->UpdatePlayerScore((Player*)victim, SCORE_HEALING_TAKEN, gain);
- + /** World of Warcraft Armory **/
- }
- return gain;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement