Advertisement
Guest User

Untitled

a guest
Oct 8th, 2012
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.00 KB | None | 0 0
  1. diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp
  2. index 39f1291..cead3ae 100755
  3. --- a/src/server/game/Battlegrounds/Battleground.cpp
  4. +++ b/src/server/game/Battlegrounds/Battleground.cpp
  5. @@ -772,6 +772,47 @@ void Battleground::EndBattleground(uint32 winner)
  6.                  SetArenaMatchmakerRating(GetOtherTeam(winner), loserMatchmakerRating + loserMatchmakerChange);
  7.                  SetArenaTeamRatingChangeForTeam(winner, winnerChange);
  8.                  SetArenaTeamRatingChangeForTeam(GetOtherTeam(winner), loserChange);
  9. +                /** World of Warcraft Armory **/
  10. +                uint32 maxChartID;
  11. +                QueryResult result = CharacterDatabase.PQuery("SELECT MAX(gameid) FROM armory_game_chart");
  12. +                if(!result)
  13. +                    maxChartID = 0;
  14. +                else
  15. +                {
  16. +                    maxChartID = (*result)[0].GetUInt32();
  17. +                   // result.release();
  18. +                }
  19. +                uint32 gameID = maxChartID+1;
  20. +                for(BattlegroundScoreMap::const_iterator itr = PlayerScores.begin(); itr != PlayerScores.end(); ++itr)
  21. +                {
  22. +                    Player *plr = ObjectAccessor::FindPlayer(itr->first);
  23. +                    if (!plr)
  24. +                        continue;
  25. +                    uint32 plTeamID = plr->GetArenaTeamId(winnerArenaTeam->GetSlot());
  26. +                    int changeType;
  27. +                    uint32 resultRating;
  28. +                    uint32 resultTeamID;
  29. +                    int32 ratingChange;
  30. +                    if (plTeamID == winnerArenaTeam->GetId())
  31. +                    {
  32. +                        changeType = 1; //win
  33. +                        resultRating = winnerTeamRating ;
  34. +                        resultTeamID = plTeamID;
  35. +                        ratingChange = winnerChange ;
  36. +                    }
  37. +                    else
  38. +                    {
  39. +                        changeType = 2; //lose
  40. +                        resultRating = loserTeamRating ;
  41. +                        resultTeamID = loserArenaTeam ->GetId();
  42. +                        ratingChange = loserChange ;
  43. +                    }
  44. +                    std::ostringstream sql_query;
  45. +                    //                                                        gameid,              teamid,                     guid,                    changeType,             ratingChange,               teamRating,                  damageDone,                          deaths,                          healingDone,                           damageTaken,,                           healingTaken,                         killingBlows,                      mapId,                 start,                   end
  46. +                    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 << "')";
  47. +                    CharacterDatabase.Execute(sql_query.str().c_str());
  48. +                }
  49. +                /** World of Warcraft Armory **/
  50.                  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);
  51.                  if (sWorld->getBoolConfig(CONFIG_ARENA_LOG_EXTENDED_INFO))
  52.                      for (Battleground::BattlegroundScoreMap::const_iterator itr = GetPlayerScoresBegin(); itr != GetPlayerScoresEnd(); ++itr)
  53. @@ -1387,6 +1428,14 @@ void Battleground::UpdatePlayerScore(Player *Source, uint32 type, uint32 value,
  54.          case SCORE_HEALING_DONE:                            // Healing Done
  55.              itr->second->HealingDone += value;
  56.              break;
  57. +        /** World of Warcraft Armory **/
  58. +        case SCORE_DAMAGE_TAKEN:
  59. +            itr->second->DamageTaken += value;              // Damage Taken
  60. +            break;
  61. +        case SCORE_HEALING_TAKEN:
  62. +            itr->second->HealingTaken += value;             // Healing Taken
  63. +            break;
  64. +        /** World of Warcraft Armory **/
  65.          default:
  66.              sLog->outError("Battleground: Unknown player score type %u", type);
  67.              break;
  68. diff --git a/src/server/game/Battlegrounds/Battleground.h b/src/server/game/Battlegrounds/Battleground.h
  69. index a1337c2..dcad57d 100755
  70. --- a/src/server/game/Battlegrounds/Battleground.h
  71. +++ b/src/server/game/Battlegrounds/Battleground.h
  72. @@ -209,7 +209,11 @@ enum ScoreType
  73.      SCORE_SECONDARY_OBJECTIVES  = 17,
  74.      //SOTA
  75.      SCORE_DESTROYED_DEMOLISHER  = 18,
  76. -    SCORE_DESTROYED_WALL        = 19
  77. +    SCORE_DESTROYED_WALL        = 19,
  78. +    /** World of Warcraft Armory **/
  79. +    SCORE_DAMAGE_TAKEN          = 20,
  80. +    SCORE_HEALING_TAKEN         = 21
  81. +    /** World of Warcraft Armory **/
  82.  };
  83.  
  84.  enum ArenaType
  85. @@ -300,6 +304,10 @@ class BattlegroundScore
  86.      uint32 BonusHonor;
  87.      uint32 DamageDone;
  88.      uint32 HealingDone;
  89. +        /** World of Warcraft Armory **/
  90. +        uint32 DamageTaken;
  91. +        uint32 HealingTaken;
  92. +        /** World of Warcraft Armory **/
  93.  };
  94.  
  95.  enum BGHonorMode
  96. diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
  97. index 6709044..5163a8b 100755
  98. --- a/src/server/game/Entities/Unit/Unit.cpp
  99. +++ b/src/server/game/Entities/Unit/Unit.cpp
  100. @@ -746,9 +746,16 @@
  101.  
  102.          // in bg, count dmg if victim is also a player
  103.          if (victim->GetTypeId() == TYPEID_PLAYER)
  104. +        {
  105.              if (Battleground* bg = killer->GetBattleground())
  106. +            {
  107.                  bg->UpdatePlayerScore(killer, SCORE_DAMAGE_DONE, damage);
  108. -
  109. +                /** World of Warcraft Armory **/
  110. +                if (Battleground *bgV = ((Player*)victim)->GetBattleground())
  111. +                    bgV->UpdatePlayerScore(((Player*)victim), SCORE_DAMAGE_TAKEN, damage);
  112. +                /** World of Warcraft Armory **/
  113. +            }
  114. +        }
  115.          killer->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_DAMAGE_DONE, damage, 0, victim);
  116.          killer->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HIT_DEALT, damage);
  117.      }
  118. @@ -10152,6 +10159,10 @@
  119.      {
  120.          player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_TOTAL_HEALING_RECEIVED, gain);
  121.          player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEALING_RECEIVED, addhealth);
  122. +        /** World of Warcraft Armory **/
  123. +        if (Battleground *bgV = victim->ToPlayer()->GetBattleground())
  124. +            bgV->UpdatePlayerScore((Player*)victim, SCORE_HEALING_TAKEN, gain);
  125. +        /** World of Warcraft Armory **/
  126.      }
  127.  
  128.      return gain;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement