aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2015-03-28 22:09:47 +0100
committerShauren <shauren.trinity@gmail.com>2015-03-28 22:09:47 +0100
commit18d567ea20d26b539903970e699f157bdf1d70d2 (patch)
treef73192ed2d51f29b677a7c9f46de2684a613329d /src
parent942f9f079c819c29d161fbdf38018cf9e6c89c14 (diff)
Core/Currencies: Restores updating conquest caps - thanks @soulfrost for noticing
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp23
-rw-r--r--src/server/game/Entities/Player/Player.h3
2 files changed, 26 insertions, 0 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 2ddeb03f6d2..e06535c0c34 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -7145,6 +7145,26 @@ uint32 Player::GetCurrencyTotalCap(CurrencyTypesEntry const* currency) const
return cap;
}
+void Player::UpdateConquestCurrencyCap(uint32 currency)
+{
+ uint32 currenciesToUpdate[2] = { currency, CURRENCY_TYPE_CONQUEST_POINTS };
+
+ for (uint32 i = 0; i < 2; ++i)
+ {
+ CurrencyTypesEntry const* currencyEntry = sCurrencyTypesStore.LookupEntry(currenciesToUpdate[i]);
+ if (!currencyEntry)
+ continue;
+
+ uint32 precision = (currencyEntry->Flags & CURRENCY_FLAG_HIGH_PRECISION) ? 100 : 1;
+ uint32 cap = GetCurrencyWeekCap(currencyEntry);
+
+ WorldPacket packet(SMSG_SET_MAX_WEEKLY_QUANTITY, 8);
+ packet << uint32(cap / precision);
+ packet << uint32(currenciesToUpdate[i]);
+ GetSession()->SendPacket(&packet);
+ }
+}
+
void Player::SetInGuild(ObjectGuid::LowType guildId)
{
if (guildId)
@@ -7180,7 +7200,10 @@ void Player::SetArenaTeamInfoField(uint8 slot, ArenaTeamInfoType type, uint32 va
{
SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (slot * ARENA_TEAM_END) + type, value);
if (type == ARENA_TEAM_PERSONAL_RATING && value > _maxPersonalArenaRate)
+ {
_maxPersonalArenaRate = value;
+ UpdateConquestCurrencyCap(CURRENCY_TYPE_CONQUEST_META_ARENA);
+ }
}
void Player::SetInArenaTeam(uint32 ArenaTeamId, uint8 slot, uint8 type)
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 3050b9c8baa..596693e5da4 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -2782,6 +2782,9 @@ class Player : public Unit, public GridObject<Player>
*/
uint32 GetCurrencyTotalCap(CurrencyTypesEntry const* currency) const;
+ /// Updates weekly conquest point cap (dynamic cap)
+ void UpdateConquestCurrencyCap(uint32 currency);
+
VoidStorageItem* _voidStorageItems[VOID_STORAGE_MAX_SLOT];
std::vector<Item*> m_itemUpdateQueue;