aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/AuctionHouse/AuctionHouseMgr.cpp18
-rw-r--r--src/server/game/Handlers/AuctionHouseHandler.cpp36
-rw-r--r--src/server/game/Server/Packets/AuctionHousePackets.cpp241
-rw-r--r--src/server/game/Server/Packets/AuctionHousePackets.h15
4 files changed, 144 insertions, 166 deletions
diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
index 29f11b82d59..1e512a98a97 100644
--- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
+++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
@@ -441,13 +441,23 @@ Item* AuctionHouseMgr::GetAItem(ObjectGuid itemGuid)
uint64 AuctionHouseMgr::GetCommodityAuctionDeposit(ItemTemplate const* item, Minutes time, uint32 quantity)
{
uint32 sellPrice = item->GetSellPrice();
- return uint64(std::ceil(std::floor(fmax(0.15 * quantity * sellPrice, 100.0)) / int64(SILVER)) * int64(SILVER)) * (time.count() / (MIN_AUCTION_TIME / MINUTE));
+ uint64 deposit = uint64(sellPrice * 0.15); // rounding off the remainder
+ uint32 remainder = std::ceil(sellPrice * 0.15 - deposit); // and subtracting a ceiled remainder on top of it
+ if (deposit >= remainder)
+ deposit -= remainder;
+
+ return uint64(deposit * quantity) * (time.count() / (MIN_AUCTION_TIME / MINUTE));
}
uint64 AuctionHouseMgr::GetItemAuctionDeposit(Player const* player, Item const* item, Minutes time)
{
uint32 sellPrice = item->GetSellPrice(player);
- return uint64(std::ceil(std::floor(fmax(sellPrice * 0.15, 100.0)) / int64(SILVER)) * int64(SILVER)) * (time.count() / (MIN_AUCTION_TIME / MINUTE));
+ uint64 deposit = uint64(sellPrice * 0.15); // rounding off the remainder
+ uint32 remainder = std::ceil(sellPrice * 0.15 - deposit); // and subtracting a ceiled remainder on top of it
+ if (deposit >= remainder)
+ deposit -= remainder;
+
+ return deposit * (time.count() / (MIN_AUCTION_TIME / MINUTE));
}
std::string AuctionHouseMgr::BuildItemAuctionMailSubject(AuctionMailType type, AuctionPosting const* auction)
@@ -1703,7 +1713,7 @@ bool AuctionHouseObject::BuyCommodity(CharacterDatabaseTransaction trans, Player
}
WorldPackets::AuctionHouse::AuctionWonNotification packet;
- packet.Info.Initialize(auctions[0], items[0].Items[0]);
+ packet.Info.Initialize(_auctionHouse->ID, auctions[0], items[0].Items[0]);
player->SendDirectMessage(packet.Write());
for (std::size_t i = 0; i < auctions.size(); ++i)
@@ -1805,7 +1815,7 @@ void AuctionHouseObject::SendAuctionWon(AuctionPosting const* auction, Player* b
if (bidder)
{
WorldPackets::AuctionHouse::AuctionWonNotification packet;
- packet.Info.Initialize(auction, auction->Items[0]);
+ packet.Info.Initialize(_auctionHouse->ID, auction, auction->Items[0]);
bidder->SendDirectMessage(packet.Write());
// FIXME: for offline player need also
diff --git a/src/server/game/Handlers/AuctionHouseHandler.cpp b/src/server/game/Handlers/AuctionHouseHandler.cpp
index bea51adb4f6..fb309602ca8 100644
--- a/src/server/game/Handlers/AuctionHouseHandler.cpp
+++ b/src/server/game/Handlers/AuctionHouseHandler.cpp
@@ -363,11 +363,12 @@ void WorldSession::HandleAuctionPlaceBid(WorldPackets::AuctionHouse::AuctionPlac
}
// auction house does not deal with copper
- if (placeBid.BidAmount % SILVER)
- {
- SendAuctionCommandResult(placeBid.AuctionID, AuctionCommand::PlaceBid, AuctionResult::BidIncrement, throttle.DelayUntilNext);
- return;
- }
+ // But not in Classic
+ //if (placeBid.BidAmount % SILVER)
+ //{
+ // SendAuctionCommandResult(placeBid.AuctionID, AuctionCommand::PlaceBid, AuctionResult::BidIncrement, throttle.DelayUntilNext);
+ // return;
+ //}
// remove fake death
if (GetPlayer()->HasUnitState(UNIT_STATE_DIED))
@@ -617,11 +618,12 @@ void WorldSession::HandleAuctionSellCommodity(WorldPackets::AuctionHouse::Auctio
}
// auction house does not deal with copper
- if (sellCommodity.UnitPrice % SILVER)
- {
- SendAuctionCommandResult(0, AuctionCommand::SellItem, AuctionResult::DatabaseError, throttle.DelayUntilNext);
- return;
- }
+ // But not in Classic
+ //if (sellCommodity.UnitPrice % SILVER)
+ //{
+ // SendAuctionCommandResult(0, AuctionCommand::SellItem, AuctionResult::DatabaseError, throttle.DelayUntilNext);
+ // return;
+ //}
Creature* creature = GetPlayer()->GetNPCIfCanInteractWith(sellCommodity.Auctioneer, UNIT_NPC_FLAG_AUCTIONEER, UNIT_NPC_FLAG_2_NONE);
if (!creature)
@@ -841,11 +843,12 @@ void WorldSession::HandleAuctionSellItem(WorldPackets::AuctionHouse::AuctionSell
}
// auction house does not deal with copper
- if (sellItem.MinBid % SILVER || sellItem.BuyoutPrice % SILVER)
- {
- SendAuctionCommandResult(0, AuctionCommand::SellItem, AuctionResult::DatabaseError, throttle.DelayUntilNext);
- return;
- }
+ // But not in Classic
+ //if (sellItem.MinBid % SILVER || sellItem.BuyoutPrice % SILVER)
+ //{
+ // SendAuctionCommandResult(0, AuctionCommand::SellItem, AuctionResult::DatabaseError, throttle.DelayUntilNext);
+ // return;
+ //}
Creature* creature = GetPlayer()->GetNPCIfCanInteractWith(sellItem.Auctioneer, UNIT_NPC_FLAG_AUCTIONEER, UNIT_NPC_FLAG_2_NONE);
if (!creature)
@@ -1005,7 +1008,8 @@ void WorldSession::SendAuctionHello(ObjectGuid guid, Unit const* unit)
return;
WorldPackets::AuctionHouse::AuctionHelloResponse auctionHelloResponse;
- auctionHelloResponse.Guid = guid;
+ auctionHelloResponse.Auctioneer = guid;
+ auctionHelloResponse.AuctionHouseID = ahEntry->ID;
auctionHelloResponse.OpenForBusiness = true; // 3.3.3: 1 - AH enabled, 0 - AH disabled
SendPacket(auctionHelloResponse.Write());
}
diff --git a/src/server/game/Server/Packets/AuctionHousePackets.cpp b/src/server/game/Server/Packets/AuctionHousePackets.cpp
index 7eec7ad4077..0bab4259ff7 100644
--- a/src/server/game/Server/Packets/AuctionHousePackets.cpp
+++ b/src/server/game/Server/Packets/AuctionHousePackets.cpp
@@ -21,9 +21,7 @@
#include "ObjectGuid.h"
#include "Util.h"
-namespace WorldPackets
-{
-namespace AuctionHouse
+namespace WorldPackets::AuctionHouse
{
AuctionBucketKey& AuctionBucketKey::operator=(AuctionsBucketKey const& key)
{
@@ -42,15 +40,10 @@ AuctionBucketKey& AuctionBucketKey::operator=(AuctionsBucketKey const& key)
ByteBuffer& operator>>(ByteBuffer& data, AuctionBucketKey& itemKey)
{
data.ResetBitPos();
- itemKey.ItemID = data.ReadBits(20);
-
- if (data.ReadBit())
- itemKey.BattlePetSpeciesID.emplace();
-
- itemKey.ItemLevel = data.ReadBits(11);
-
- if (data.ReadBit())
- itemKey.ItemSuffix.emplace();
+ data >> Bits<20>(itemKey.ItemID);
+ data >> OptionalInit(itemKey.BattlePetSpeciesID);
+ data >> Bits<11>(itemKey.ItemLevel);
+ data >> OptionalInit(itemKey.ItemSuffix);
if (itemKey.BattlePetSpeciesID)
data >> *itemKey.BattlePetSpeciesID;
@@ -63,10 +56,10 @@ ByteBuffer& operator>>(ByteBuffer& data, AuctionBucketKey& itemKey)
ByteBuffer& operator<<(ByteBuffer& data, AuctionBucketKey const& itemKey)
{
- data.WriteBits(itemKey.ItemID, 20);
- data.WriteBit(itemKey.BattlePetSpeciesID.has_value());
- data.WriteBits(itemKey.ItemLevel, 11);
- data.WriteBit(itemKey.ItemSuffix.has_value());
+ data << Bits<20>(itemKey.ItemID);
+ data << OptionalInit(itemKey.BattlePetSpeciesID);
+ data << Bits<11>(itemKey.ItemLevel);
+ data << OptionalInit(itemKey.ItemSuffix);
data.FlushBits();
if (itemKey.BattlePetSpeciesID)
@@ -89,7 +82,7 @@ ByteBuffer& operator>>(ByteBuffer& data, AuctionListFilterSubClass& filterSubCla
ByteBuffer& operator>>(ByteBuffer& data, AuctionListFilterClass& filterClass)
{
data >> filterClass.ItemClass;
- filterClass.SubClassFilters.resize(data.ReadBits(5));
+ data >> BitsSize<5>(filterClass.SubClassFilters);
for (AuctionListFilterSubClass& filterSubClass : filterClass.SubClassFilters)
data >> filterSubClass;
@@ -99,7 +92,7 @@ ByteBuffer& operator>>(ByteBuffer& data, AuctionListFilterClass& filterClass)
ByteBuffer& operator>>(ByteBuffer& data, AuctionSortDef& sortDef)
{
data.ResetBitPos();
- data >> Bits<4>(sortDef.SortOrder);
+ data >> As<uint8>(sortDef.SortOrder);
data >> Bits<1>(sortDef.ReverseSort);
return data;
@@ -161,12 +154,12 @@ ByteBuffer& operator<<(ByteBuffer& data, BucketInfo const& bucketInfo)
if (!bucketInfo.ItemModifiedAppearanceIDs.empty())
data.append(bucketInfo.ItemModifiedAppearanceIDs.data(), bucketInfo.ItemModifiedAppearanceIDs.size());
- data.WriteBit(bucketInfo.MaxBattlePetQuality.has_value());
- data.WriteBit(bucketInfo.MaxBattlePetLevel.has_value());
- data.WriteBit(bucketInfo.BattlePetBreedID.has_value());
- data.WriteBit(bucketInfo.BattlePetLevelMask.has_value());
- data.WriteBit(bucketInfo.ContainsOwnerItem);
- data.WriteBit(bucketInfo.ContainsOnlyCollectedAppearances);
+ data << OptionalInit(bucketInfo.MaxBattlePetQuality);
+ data << OptionalInit(bucketInfo.MaxBattlePetLevel);
+ data << OptionalInit(bucketInfo.BattlePetBreedID);
+ data << OptionalInit(bucketInfo.BattlePetLevelMask);
+ data << Bits<1>(bucketInfo.ContainsOwnerItem);
+ data << Bits<1>(bucketInfo.ContainsOnlyCollectedAppearances);
data.FlushBits();
if (bucketInfo.MaxBattlePetQuality)
@@ -186,21 +179,21 @@ ByteBuffer& operator<<(ByteBuffer& data, BucketInfo const& bucketInfo)
ByteBuffer& operator<<(ByteBuffer& data, AuctionItem const& auctionItem)
{
- data.WriteBit(auctionItem.Item.has_value());
- data.WriteBits(auctionItem.Enchantments.size(), 4);
- data.WriteBits(auctionItem.Gems.size(), 2);
- data.WriteBit(auctionItem.MinBid.has_value());
- data.WriteBit(auctionItem.MinIncrement.has_value());
- data.WriteBit(auctionItem.BuyoutPrice.has_value());
- data.WriteBit(auctionItem.UnitPrice.has_value());
- data.WriteBit(auctionItem.CensorServerSideInfo);
- data.WriteBit(auctionItem.CensorBidInfo);
- data.WriteBit(auctionItem.AuctionBucketKey.has_value());
- data.WriteBit(auctionItem.Creator.has_value());
+ data << OptionalInit(auctionItem.Item);
+ data << BitsSize<4>(auctionItem.Enchantments);
+ data << BitsSize<2>(auctionItem.Gems);
+ data << OptionalInit(auctionItem.MinBid);
+ data << OptionalInit(auctionItem.MinIncrement);
+ data << OptionalInit(auctionItem.BuyoutPrice);
+ data << OptionalInit(auctionItem.UnitPrice);
+ data << Bits<1>(auctionItem.CensorServerSideInfo);
+ data << Bits<1>(auctionItem.CensorBidInfo);
+ data << OptionalInit(auctionItem.AuctionBucketKey);
+ data << OptionalInit(auctionItem.Creator);
if (!auctionItem.CensorBidInfo)
{
- data.WriteBit(auctionItem.Bidder.has_value());
- data.WriteBit(auctionItem.BidAmount.has_value());
+ data << OptionalInit(auctionItem.Bidder);
+ data << OptionalInit(auctionItem.BidAmount);
}
data.FlushBits();
@@ -215,6 +208,7 @@ ByteBuffer& operator<<(ByteBuffer& data, AuctionItem const& auctionItem)
data << auctionItem.Owner;
data << int32(auctionItem.DurationLeft);
data << uint8(auctionItem.DeleteReason);
+ data << uint32(auctionItem.Unused1110);
for (WorldPackets::Item::ItemEnchantData const& enchant : auctionItem.Enchantments)
data << enchant;
@@ -259,8 +253,9 @@ ByteBuffer& operator<<(ByteBuffer& data, AuctionItem const& auctionItem)
return data;
}
-void AuctionBidderNotification::Initialize(::AuctionPosting const* auction, ::Item const* item)
+void AuctionBidderNotification::Initialize(int32 auctionHouseId, ::AuctionPosting const* auction, ::Item const* item)
{
+ AuctionHouseID = auctionHouseId;
AuctionID = auction->Id;
Item.Initialize(item);
Bidder = auction->Bidder;
@@ -268,6 +263,7 @@ void AuctionBidderNotification::Initialize(::AuctionPosting const* auction, ::It
ByteBuffer& operator<<(ByteBuffer& data, AuctionBidderNotification const& bidderNotification)
{
+ data << int32(bidderNotification.AuctionHouseID);
data << int32(bidderNotification.AuctionID);
data << bidderNotification.Bidder;
data << bidderNotification.Item;
@@ -291,35 +287,32 @@ void AuctionBrowseQuery::Read()
KnownPets.resize(knownPetsSize);
_worldPacket >> MaxPetLevel;
+ _worldPacket >> Unused1026;
for (uint8& knownPetMask : KnownPets)
_worldPacket >> knownPetMask;
- if (_worldPacket.ReadBit())
- TaintedBy.emplace();
-
- uint32 nameLength = _worldPacket.ReadBits(8);
- ItemClassFilters.resize(_worldPacket.ReadBits(3));
- Sorts.resize(_worldPacket.ReadBits(2));
-
- for (AuctionSortDef& sortDef : Sorts)
- _worldPacket >> sortDef;
+ _worldPacket >> OptionalInit(TaintedBy);
+ _worldPacket >> SizedString::BitsSize<8>(Name);
+ _worldPacket >> BitsSize<3>(ItemClassFilters);
+ _worldPacket >> BitsSize<2>(Sorts);
if (TaintedBy)
_worldPacket >> *TaintedBy;
- Name = _worldPacket.ReadString(nameLength);
+ _worldPacket >> SizedString::Data(Name);
for (AuctionListFilterClass& filterClass : ItemClassFilters)
_worldPacket >> filterClass;
+
+ for (AuctionSortDef& sortDef : Sorts)
+ _worldPacket >> sortDef;
}
void AuctionCancelCommoditiesPurchase::Read()
{
_worldPacket >> Auctioneer;
- if (_worldPacket.ReadBit())
- {
- TaintedBy.emplace();
+ _worldPacket >> OptionalInit(TaintedBy);
+ if (TaintedBy)
_worldPacket >> *TaintedBy;
- }
}
void AuctionConfirmCommoditiesPurchase::Read()
@@ -327,11 +320,9 @@ void AuctionConfirmCommoditiesPurchase::Read()
_worldPacket >> Auctioneer;
_worldPacket >> ItemID;
_worldPacket >> Quantity;
- if (_worldPacket.ReadBit())
- {
- TaintedBy.emplace();
+ _worldPacket >> OptionalInit(TaintedBy);
+ if (TaintedBy)
_worldPacket >> *TaintedBy;
- }
}
void AuctionHelloRequest::Read()
@@ -343,41 +334,35 @@ void AuctionListBiddedItems::Read()
{
_worldPacket >> Auctioneer;
_worldPacket >> Offset;
-
- if (_worldPacket.ReadBit())
- TaintedBy.emplace();
-
- AuctionIDs.resize(_worldPacket.ReadBits(7));
- Sorts.resize(_worldPacket.ReadBits(2));
-
- for (AuctionSortDef& sortDef : Sorts)
- _worldPacket >> sortDef;
+ _worldPacket >> OptionalInit(TaintedBy);
+ _worldPacket >> BitsSize<7>(AuctionIDs);
+ _worldPacket >> BitsSize<2>(Sorts);
if (TaintedBy)
_worldPacket >> *TaintedBy;
for (uint32& auctionID : AuctionIDs)
_worldPacket >> auctionID;
+
+ for (AuctionSortDef& sortDef : Sorts)
+ _worldPacket >> sortDef;
}
void AuctionListBucketsByBucketKeys::Read()
{
_worldPacket >> Auctioneer;
-
- if (_worldPacket.ReadBit())
- TaintedBy.emplace();
-
- BucketKeys.resize(_worldPacket.ReadBits(7));
- Sorts.resize(_worldPacket.ReadBits(2));
-
- for (AuctionSortDef& sortDef : Sorts)
- _worldPacket >> sortDef;
+ _worldPacket >> OptionalInit(TaintedBy);
+ _worldPacket >> BitsSize<7>(BucketKeys);
+ _worldPacket >> BitsSize<2>(Sorts);
if (TaintedBy)
_worldPacket >> *TaintedBy;
for (AuctionBucketKey& bucketKey : BucketKeys)
_worldPacket >> bucketKey;
+
+ for (AuctionSortDef& sortDef : Sorts)
+ _worldPacket >> sortDef;
}
void AuctionListItemsByBucketKey::Read()
@@ -385,19 +370,16 @@ void AuctionListItemsByBucketKey::Read()
_worldPacket >> Auctioneer;
_worldPacket >> Offset;
_worldPacket >> Unknown830;
-
- if (_worldPacket.ReadBit())
- TaintedBy.emplace();
-
- Sorts.resize(_worldPacket.ReadBits(2));
-
- for (AuctionSortDef& sortDef : Sorts)
- _worldPacket >> sortDef;
+ _worldPacket >> OptionalInit(TaintedBy);
+ _worldPacket >> BitsSize<2>(Sorts);
_worldPacket >> BucketKey;
if (TaintedBy)
_worldPacket >> *TaintedBy;
+
+ for (AuctionSortDef& sortDef : Sorts)
+ _worldPacket >> sortDef;
}
void AuctionListItemsByItemID::Read()
@@ -406,34 +388,28 @@ void AuctionListItemsByItemID::Read()
_worldPacket >> ItemID;
_worldPacket >> SuffixItemNameDescriptionID;
_worldPacket >> Offset;
+ _worldPacket >> OptionalInit(TaintedBy);
+ _worldPacket >> BitsSize<2>(Sorts);
- if (_worldPacket.ReadBit())
- TaintedBy.emplace();
-
- Sorts.resize(_worldPacket.ReadBits(2));
+ if (TaintedBy)
+ _worldPacket >> *TaintedBy;
for (AuctionSortDef& sortDef : Sorts)
_worldPacket >> sortDef;
-
- if (TaintedBy)
- _worldPacket >> *TaintedBy;
}
void AuctionListOwnedItems::Read()
{
_worldPacket >> Auctioneer;
_worldPacket >> Offset;
+ _worldPacket >> OptionalInit(TaintedBy);
+ _worldPacket >> BitsSize<2>(Sorts);
- if (_worldPacket.ReadBit())
- TaintedBy.emplace();
-
- Sorts.resize(_worldPacket.ReadBits(2));
+ if (TaintedBy)
+ _worldPacket >> *TaintedBy;
for (AuctionSortDef& sortDef : Sorts)
_worldPacket >> sortDef;
-
- if (TaintedBy)
- _worldPacket >> *TaintedBy;
}
void AuctionPlaceBid::Read()
@@ -441,11 +417,9 @@ void AuctionPlaceBid::Read()
_worldPacket >> Auctioneer;
_worldPacket >> AuctionID;
_worldPacket >> BidAmount;
- if (_worldPacket.ReadBit())
- {
- TaintedBy.emplace();
+ _worldPacket >> OptionalInit(TaintedBy);
+ if (TaintedBy)
_worldPacket >> *TaintedBy;
- }
}
void AuctionRemoveItem::Read()
@@ -453,11 +427,9 @@ void AuctionRemoveItem::Read()
_worldPacket >> Auctioneer;
_worldPacket >> AuctionID;
_worldPacket >> ItemID;
- if (_worldPacket.ReadBit())
- {
- TaintedBy.emplace();
+ _worldPacket >> OptionalInit(TaintedBy);
+ if (TaintedBy)
_worldPacket >> *TaintedBy;
- }
}
void AuctionReplicateItems::Read()
@@ -467,11 +439,9 @@ void AuctionReplicateItems::Read()
_worldPacket >> ChangeNumberCursor;
_worldPacket >> ChangeNumberTombstone;
_worldPacket >> Count;
- if (_worldPacket.ReadBit())
- {
- TaintedBy.emplace();
+ _worldPacket >> OptionalInit(TaintedBy);
+ if (TaintedBy)
_worldPacket >> *TaintedBy;
- }
}
void AuctionSellCommodity::Read()
@@ -479,11 +449,8 @@ void AuctionSellCommodity::Read()
_worldPacket >> Auctioneer;
_worldPacket >> UnitPrice;
_worldPacket >> RunTime;
-
- if (_worldPacket.ReadBit())
- TaintedBy.emplace();
-
- Items.resize(_worldPacket.ReadBits(6));
+ _worldPacket >> OptionalInit(TaintedBy);
+ _worldPacket >> BitsSize<6>(Items);
if (TaintedBy)
_worldPacket >> *TaintedBy;
@@ -498,11 +465,8 @@ void AuctionSellItem::Read()
_worldPacket >> MinBid;
_worldPacket >> BuyoutPrice;
_worldPacket >> RunTime;
-
- if (_worldPacket.ReadBit())
- TaintedBy.emplace();
-
- Items.resize(_worldPacket.ReadBits(5));
+ _worldPacket >> OptionalInit(TaintedBy);
+ _worldPacket >> BitsSize<6>(Items);
if (TaintedBy)
_worldPacket >> *TaintedBy;
@@ -513,7 +477,7 @@ void AuctionSellItem::Read()
void AuctionSetFavoriteItem::Read()
{
- IsNotFavorite = _worldPacket.ReadBit();
+ _worldPacket >> Bits<1>(IsNotFavorite);
_worldPacket >> Item;
}
@@ -522,18 +486,16 @@ void AuctionGetCommodityQuote::Read()
_worldPacket >> Auctioneer;
_worldPacket >> ItemID;
_worldPacket >> Quantity;
- if (_worldPacket.ReadBit())
- {
- TaintedBy.emplace();
+ _worldPacket >> OptionalInit(TaintedBy);
+ if (TaintedBy)
_worldPacket >> *TaintedBy;
- }
}
WorldPacket const* AuctionClosedNotification::Write()
{
_worldPacket << Info;
_worldPacket << float(ProceedsMailDelay);
- _worldPacket.WriteBit(Sold);
+ _worldPacket << Bits<1>(Sold);
_worldPacket.FlushBits();
return &_worldPacket;
@@ -555,9 +517,9 @@ WorldPacket const* AuctionCommandResult::Write()
WorldPacket const* AuctionGetCommodityQuoteResult::Write()
{
- _worldPacket.WriteBit(TotalPrice.has_value());
- _worldPacket.WriteBit(Quantity.has_value());
- _worldPacket.WriteBit(QuoteDuration.has_value());
+ _worldPacket << OptionalInit(TotalPrice);
+ _worldPacket << OptionalInit(Quantity);
+ _worldPacket << OptionalInit(QuoteDuration);
_worldPacket << int32(ItemID);
_worldPacket << uint32(DesiredDelay);
@@ -576,7 +538,7 @@ WorldPacket const* AuctionGetCommodityQuoteResult::Write()
WorldPacket const* AuctionFavoriteList::Write()
{
_worldPacket << uint32(DesiredDelay);
- _worldPacket.WriteBits(Items.size(), 7);
+ _worldPacket << BitsSize<7>(Items);
_worldPacket.FlushBits();
for (AuctionFavoriteInfo const& favoriteInfo : Items)
@@ -587,11 +549,11 @@ WorldPacket const* AuctionFavoriteList::Write()
WorldPacket const* AuctionHelloResponse::Write()
{
- _worldPacket << Guid;
- _worldPacket << uint32(PurchasedItemDeliveryDelay);
- _worldPacket << uint32(CancelledItemDeliveryDelay);
- _worldPacket << uint32(DeliveryDelay);
- _worldPacket.WriteBit(OpenForBusiness);
+ _worldPacket << Auctioneer;
+ _worldPacket << uint32(PurchaseDeliveryDelay);
+ _worldPacket << uint32(CancelDeliveryDelay);
+ _worldPacket << int32(AuctionHouseID);
+ _worldPacket << Bits<1>(OpenForBusiness);
_worldPacket.FlushBits();
return &_worldPacket;
@@ -601,7 +563,7 @@ WorldPacket const* AuctionListBiddedItemsResult::Write()
{
_worldPacket << uint32(Items.size());
_worldPacket << uint32(DesiredDelay);
- _worldPacket.WriteBit(HasMoreResults);
+ _worldPacket << Bits<1>(HasMoreResults);
_worldPacket.FlushBits();
for (AuctionItem const& item : Items)
@@ -616,8 +578,8 @@ WorldPacket const* AuctionListBucketsResult::Write()
_worldPacket << uint32(DesiredDelay);
_worldPacket << int32(Unknown830_0);
_worldPacket << int32(Unknown830_1);
- _worldPacket.WriteBits(AsUnderlyingType(BrowseMode), 1);
- _worldPacket.WriteBit(HasMoreResults);
+ _worldPacket << Bits<1>(BrowseMode);
+ _worldPacket << Bits<1>(HasMoreResults);
_worldPacket.FlushBits();
for (BucketInfo const& bucketInfo : Buckets)
@@ -637,8 +599,8 @@ WorldPacket const* AuctionListItemsResult::Write()
}
{
- _worldPacket.WriteBits(AsUnderlyingType(ListType), 2);
- _worldPacket.WriteBit(HasMoreResults);
+ _worldPacket << Bits<2>(ListType);
+ _worldPacket << Bits<1>(HasMoreResults);
_worldPacket.FlushBits();
_worldPacket << BucketKey;
@@ -653,7 +615,7 @@ WorldPacket const* AuctionListOwnedItemsResult::Write()
_worldPacket << int32(Items.size());
_worldPacket << int32(SoldItems.size());
_worldPacket << uint32(DesiredDelay);
- _worldPacket.WriteBit(HasMoreResults);
+ _worldPacket << Bits<1>(HasMoreResults);
_worldPacket.FlushBits();
for (AuctionItem const& item : Items)
@@ -705,4 +667,3 @@ WorldPacket const* AuctionWonNotification::Write()
return &_worldPacket;
}
}
-}
diff --git a/src/server/game/Server/Packets/AuctionHousePackets.h b/src/server/game/Server/Packets/AuctionHousePackets.h
index d44111291ca..203e4b4d0fc 100644
--- a/src/server/game/Server/Packets/AuctionHousePackets.h
+++ b/src/server/game/Server/Packets/AuctionHousePackets.h
@@ -125,6 +125,7 @@ namespace WorldPackets
ObjectGuid ItemGuid;
ObjectGuid OwnerAccountID;
uint32 EndTime = 0;
+ uint32 Unused1110 = 0;
Optional<ObjectGuid> Bidder;
Optional<uint64> BidAmount;
std::vector<Item::ItemGemData> Gems;
@@ -134,14 +135,15 @@ namespace WorldPackets
struct AuctionBidderNotification
{
- void Initialize(::AuctionPosting const* auction, ::Item const* item);
+ void Initialize(int32 auctionHouseId, ::AuctionPosting const* auction, ::Item const* item);
+ int32 AuctionHouseID = 0;
int32 AuctionID = 0;
ObjectGuid Bidder;
Item::ItemInstance Item;
};
- class AuctionBrowseQuery final : public ClientPacket
+ class AuctionBrowseQuery final : public ClientPacket
{
public:
AuctionBrowseQuery(WorldPacket&& packet) : ClientPacket(CMSG_AUCTION_BROWSE_QUERY, std::move(packet)) { }
@@ -157,6 +159,7 @@ namespace WorldPackets
AuctionHouseFilterMask Filters = AuctionHouseFilterMask(0);
std::vector<uint8> KnownPets; // size checked separately in Read()
int8 MaxPetLevel = 0;
+ uint32 Unused1026 = 0;
Optional<Addon::AddOnInfo> TaintedBy;
std::string Name;
Array<AuctionListFilterClass, 7> ItemClassFilters;
@@ -411,10 +414,10 @@ namespace WorldPackets
WorldPacket const* Write() override;
- ObjectGuid Guid;
- uint32 PurchasedItemDeliveryDelay = 0;
- uint32 CancelledItemDeliveryDelay = 0;
- uint32 DeliveryDelay = 0;
+ ObjectGuid Auctioneer;
+ uint32 PurchaseDeliveryDelay = 0;
+ uint32 CancelDeliveryDelay = 0;
+ int32 AuctionHouseID = 0;
bool OpenForBusiness = true;
};