From 8c83692013b6a68707ec771b0c3a0f67336f8bc6 Mon Sep 17 00:00:00 2001 From: James Huston Date: Mon, 15 Dec 2025 18:40:17 -0500 Subject: [PATCH] feat(eventbus): Add auction create event hook Publishes AuctionEvent with type 'create' when players create auctions. Only fires for player-created auctions, not during server load. --- .../game/AuctionHouse/AuctionHouseMgr.cpp | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp index 92494b7a75..59242e5999 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp @@ -989,6 +989,39 @@ void AuctionHouseObject::AddAuction(CharacterDatabaseTransaction trans, AuctionP bucket->Auctions.insert(std::ranges::lower_bound(bucket->Auctions, addedAuction, std::cref(insertSorter)), addedAuction); sScriptMgr->OnAuctionAdd(this, addedAuction); + + // Araxia: Publish auction create event to ZeroMQ event bus + // Only publish for player-created auctions (trans != nullptr), not during server load + if (trans) + { + std::string ownerName; + Player* owner = ObjectAccessor::FindConnectedPlayer(addedAuction->Owner); + if (owner) + ownerName = owner->GetName(); + else if (CharacterCacheEntry const* entry = sCharacterCache->GetCharacterCacheByGuid(addedAuction->Owner)) + ownerName = entry->Name; + + uint32 itemEntry = 0; + uint32 itemCount = 0; + if (!addedAuction->Items.empty()) + { + itemEntry = addedAuction->Items[0]->GetEntry(); + for (Item const* item : addedAuction->Items) + itemCount += item->GetCount(); + } + + sAraxiaEventBus->Publish(AuctionEvent( + "create", + addedAuction->Owner.GetCounter(), + ownerName, + addedAuction->Id, + itemEntry, + itemCount, + addedAuction->BuyoutOrUnitPrice ? addedAuction->BuyoutOrUnitPrice : addedAuction->MinBid, + 0, 0, + ContentType::World + )); + } } std::map::node_type AuctionHouseObject::RemoveAuction(CharacterDatabaseTransaction trans, AuctionPosting* auction,