aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp18
-rw-r--r--src/server/game/Miscellaneous/Formulas.h2
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