fix(dev-new): move the ah bot to its own account #390

Merged
dominik.polakovics merged 1 commit from fix/wow-ahbot-own-account into main 2026-08-26 19:39:43 +02:00

⏱ Time-sensitive — #389 is already merged

#389 landed RemainAfterExit = false, so wow-config now re-installs the configs on every server start. Main still carries AuctionHouseBot.GUIDs = 701, and the fix for that is only a live hand-edit on the host right now.

At the next 05:00 restart the store copy wins, the seller reverts to Rhuarc, and the auction house goes back to being unbuyable. This PR is what stops that.

Why the seller had to move

Rhuarc (guid 701) sits on PLAYER, account 71 — the same account the realm is played from. WorldSession::HandleAuctionPlaceBid rejects a bid whenever the owner's account matches the bidder's, not merely when the owner is the bidder:

if (auction->owner == player->GetGUID().GetCounter() ||
    sCharacterCache->GetCharacterAccountIdByGuid(...) == player->GetSession()->GetAccountId())
{
    SendAuctionCommandResult(0, AUCTION_PLACE_BID, ERR_AUCTION_BID_OWN);
    return;
}

So every listing the bot posted was unbuyable by the only person on the realm. The auction house filled up correctly and was still decorative — which is why this survived the fix in #389.

What changed on the host

New account AUCTIONATOR (id 152) via the worldserver console, and Auctionator (guid 1508), a level-80 cloned from Rhuarc's row so every blob — taximask, exploredZones, equipmentCache, knownTitles — is schema-valid. It has no inventory, is never played, and holds 200k gold.

It could not be a playerbot instead: the module resolves the seller straight out of characters, and 150 of the 152 accounts here are RNDBOT<n>.

Order mattered — .ahbot empty clears only auctions owned by the currently configured GUIDs, so the 9891 Rhuarc listings were emptied before the GUID was switched. Otherwise they would have sat there unbuyable until expiry.

Verification

=== auctions by owner:
owner_guid  name         account   n
1508        Auctionator  152     450

=== by house:
houseid  n
2      150
6      150
7      150

=== PLAYER account id: 71

Owner account 152 ≠ bidder account 71, so the bid check passes. All three houses fill from the single Alliance seller, as before.

Dry-build: :: dev-new OK.

## ⏱ Time-sensitive — #389 is already merged #389 landed `RemainAfterExit = false`, so `wow-config` now re-installs the configs on **every** server start. Main still carries `AuctionHouseBot.GUIDs = 701`, and the fix for that is only a live hand-edit on the host right now. At the next 05:00 restart the store copy wins, the seller reverts to Rhuarc, and the auction house goes back to being unbuyable. This PR is what stops that. ## Why the seller had to move Rhuarc (guid 701) sits on `PLAYER`, account 71 — the same account the realm is played from. `WorldSession::HandleAuctionPlaceBid` rejects a bid whenever the **owner's account** matches the bidder's, not merely when the owner is the bidder: ```cpp if (auction->owner == player->GetGUID().GetCounter() || sCharacterCache->GetCharacterAccountIdByGuid(...) == player->GetSession()->GetAccountId()) { SendAuctionCommandResult(0, AUCTION_PLACE_BID, ERR_AUCTION_BID_OWN); return; } ``` So every listing the bot posted was unbuyable by the only person on the realm. The auction house filled up correctly and was still decorative — which is why this survived the fix in #389. ## What changed on the host New account `AUCTIONATOR` (id 152) via the worldserver console, and `Auctionator` (guid 1508), a level-80 cloned from Rhuarc's row so every blob — `taximask`, `exploredZones`, `equipmentCache`, `knownTitles` — is schema-valid. It has no inventory, is never played, and holds 200k gold. It could not be a playerbot instead: the module resolves the seller straight out of `characters`, and 150 of the 152 accounts here are `RNDBOT<n>`. Order mattered — `.ahbot empty` clears only auctions owned by the *currently configured* GUIDs, so the 9891 Rhuarc listings were emptied **before** the GUID was switched. Otherwise they would have sat there unbuyable until expiry. ## Verification ``` === auctions by owner: owner_guid name account n 1508 Auctionator 152 450 === by house: houseid n 2 150 6 150 7 150 === PLAYER account id: 71 ``` Owner account 152 ≠ bidder account 71, so the bid check passes. All three houses fill from the single Alliance seller, as before. Dry-build: `:: dev-new OK`.
Rhuarc sits on PLAYER (account 71), the same account the realm is played
from. HandleAuctionPlaceBid rejects a bid whenever the owner's account
matches the bidder's, not merely when the owner is the bidder, so every
listing the bot posted came back ERR_AUCTION_BID_OWN and the auction house
was decorative.

Auctionator (guid 1508) is a fresh level-80 on its own account AUCTIONATOR
(152), created for this and never played, so nothing it lists is fenced off
from the player. It could not be a playerbot instead: the module resolves the
seller straight out of `characters` and 150 of the 152 accounts here are
RNDBOT<n>.
dominik.polakovics deleted branch fix/wow-ahbot-own-account 2026-08-26 19:39:43 +02:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Cloonar/nixos!390
No description provided.