diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 18 | ||||
-rw-r--r-- | src/server/game/Miscellaneous/Formulas.h | 2 |
2 files changed, 17 insertions, 3 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index c688bfd95f9..6dc56f910d1 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -25950,6 +25950,8 @@ void Player::DeleteRefundReference(uint32 it) void Player::SendRefundInfo(Item* item) { + const CurrencyTypesEntry* currencyType; + uint32 divisor; // This function call unsets ITEM_FLAGS_REFUNDABLE if played time is over 2 hours. item->UpdatePlayedTime(this); @@ -25998,7 +26000,12 @@ void Player::SendRefundInfo(Item* item) data.WriteByteSeq(guid[2]); for (uint8 i = 0; i < MAX_ITEM_EXT_COST_CURRENCIES; ++i) // currency cost data { - data << uint32(iece->RequiredCurrencyCount[i] / CURRENCY_PRECISION); + currencyType = sCurrencyTypesStore.LookupEntry(iece->RequiredCurrency[i]); + if (currencyType && currencyType->Flags & CURRENCY_FLAG_HIGH_PRECISION) + divisor = 100; + else + divisor = 1; + data << uint32(iece->RequiredCurrencyCount[i] / divisor); data << uint32(iece->RequiredCurrency[i]); } @@ -26037,6 +26044,8 @@ void Player::SendItemRefundResult(Item* item, ItemExtendedCostEntry const* iece, { ObjectGuid guid = item->GetGUID(); WorldPacket data(SMSG_ITEM_REFUND_RESULT, 1 + 1 + 8 + 4*8 + 4 + 4*8 + 1); + const CurrencyTypesEntry* currencyType; + uint32 divisor; data.WriteBit(guid[4]); data.WriteBit(guid[5]); data.WriteBit(guid[1]); @@ -26052,7 +26061,12 @@ void Player::SendItemRefundResult(Item* item, ItemExtendedCostEntry const* iece, { for (uint8 i = 0; i < MAX_ITEM_EXT_COST_CURRENCIES; ++i) { - data << uint32(iece->RequiredCurrencyCount[i] / CURRENCY_PRECISION); + currencyType = sCurrencyTypesStore.LookupEntry(iece->RequiredCurrency[i]); + if (currencyType && currencyType->Flags & CURRENCY_FLAG_HIGH_PRECISION) + divisor = 100; + else + divisor = 1; + data << uint32(iece->RequiredCurrencyCount[i] / divisor); data << uint32(iece->RequiredCurrency[i]); } diff --git a/src/server/game/Miscellaneous/Formulas.h b/src/server/game/Miscellaneous/Formulas.h index 79e1ad45fa9..563468ab35d 100644 --- a/src/server/game/Miscellaneous/Formulas.h +++ b/src/server/game/Miscellaneous/Formulas.h @@ -241,7 +241,7 @@ namespace Trinity inline uint32 BgConquestRatingCalculator(uint32 rate) { // WowWiki: Battleground ratings receive a bonus of 22.2% to the cap they generate - return uint32(round(ConquestRatingCalculator(rate) * 1.222f)); + return uint32(floor(ConquestRatingCalculator(rate) * 1.222f)); } } // namespace Trinity::Currency } // namespace Trinity |