Fix street sign interaction text and M2 sign orientation

Add page-text support for sign-like gameobject interactions by handling SMSG_GAMEOBJECT_PAGETEXT and SMSG_PAGE_TEXT_QUERY_RESPONSE, and issuing CMSG_PAGE_TEXT_QUERY when page IDs are available from cached GO template data.

Normalize received page text tokens before chat display and add a fallback for basic signpost GO type clicks to print sign names when no page data is present.

Correct M2 gameobject yaw alignment for signposts/arrows by applying render-space -90deg offset consistently across spawn, position update, and move-callback transforms; keep WMO orientation path unchanged.
This commit is contained in:
Kelsi 2026-02-20 23:31:30 -08:00
parent ace24e8ccc
commit c04e97e375
5 changed files with 118 additions and 5 deletions

View file

@ -1052,6 +1052,8 @@ private:
void handleNameQueryResponse(network::Packet& packet);
void handleCreatureQueryResponse(network::Packet& packet);
void handleGameObjectQueryResponse(network::Packet& packet);
void handleGameObjectPageText(network::Packet& packet);
void handlePageTextQueryResponse(network::Packet& packet);
void handleItemQueryResponse(network::Packet& packet);
void handleInspectResults(network::Packet& packet);
void queryItemInfo(uint32_t entry, uint64_t guid);

View file

@ -1405,6 +1405,27 @@ public:
static bool parse(network::Packet& packet, GameObjectQueryResponseData& data);
};
/** CMSG_PAGE_TEXT_QUERY packet builder */
class PageTextQueryPacket {
public:
static network::Packet build(uint32_t pageId, uint64_t guid);
};
/** SMSG_PAGE_TEXT_QUERY_RESPONSE data */
struct PageTextQueryResponseData {
uint32_t pageId = 0;
std::string text;
uint32_t nextPageId = 0;
bool isValid() const { return pageId != 0; }
};
/** SMSG_PAGE_TEXT_QUERY_RESPONSE parser */
class PageTextQueryResponseParser {
public:
static bool parse(network::Packet& packet, PageTextQueryResponseData& data);
};
// ============================================================
// Item Query
// ============================================================