diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 23 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.h | 3 |
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; |