fix: skip all-zero equipment emit, broaden BG announcer filter

Equipment: the first emitOtherPlayerEquipment call fired before any item
queries returned, sending all-zero displayIds that stripped players naked.
Now skips the callback when resolved=0 (waiting for queries). Equipment
only applies once at least one item resolves, preventing the naked flash.

BG announcer: broadened filter to match ALL chat types (not just SYSTEM),
and added more patterns: "BGAnnouncer", "[H: N, A: N]" with spaces.

Also added diagnostic logging in setOnlinePlayerEquipment to trace
displayId counts reaching the renderer.
This commit is contained in:
Kelsi 2026-03-28 15:09:52 -07:00
parent 12f5aaf286
commit 615db79819
3 changed files with 24 additions and 5 deletions

View file

@ -3200,6 +3200,13 @@ void InventoryHandler::emitOtherPlayerEquipment(uint64_t guid) {
" chest=", displayIds[4], " legs=", displayIds[6],
" mainhand=", displayIds[15], " offhand=", displayIds[16]);
// Don't emit all-zero displayIds — that strips existing equipment for no reason.
// Wait until at least one item resolves before applying.
if (anyEntry && resolved == 0) {
LOG_WARNING("emitOtherPlayerEquipment: skipping all-zero emit (waiting for item queries)");
return;
}
owner_.playerEquipmentCallback_(guid, displayIds, invTypes);
owner_.otherPlayerVisibleDirty_.erase(guid);