Restructure inventory UI, add vendor selling, camera intro on all spawns, and quest log

Split inventory into bags-only (B key) and character screen (C key). Vendor window
auto-opens bags with sell prices on hover and right-click to sell. Add camera intro
pan on all login/spawn/teleport/hearthstone events and idle orbit after 2 minutes.
Add quest log UI, SMSG_MONSTER_MOVE handling, deferred creature spawn queue, and
creature fade-in/movement interpolation for online mode.
This commit is contained in:
Kelsi 2026-02-06 13:47:03 -08:00
parent a4a39c7f0f
commit 7128ea1417
21 changed files with 1092 additions and 149 deletions

View file

@ -144,6 +144,22 @@ void WorldSocket::send(const Packet& packet) {
LOG_DEBUG("Sending world packet: opcode=0x", std::hex, opcode, std::dec,
" payload=", payloadLen, " bytes (", sendData.size(), " total)");
// Debug: dump first few movement packets
{
static int moveDump = 3;
bool isMove = (opcode >= 0xB5 && opcode <= 0xBE) || opcode == 0xC9 || opcode == 0xDA || opcode == 0xEE;
if (isMove && moveDump-- > 0) {
std::string hex = "MOVE PKT dump opcode=0x";
char buf[8]; snprintf(buf, sizeof(buf), "%03x", opcode); hex += buf;
hex += " payload=" + std::to_string(payloadLen) + " bytes: ";
for (size_t i = 6; i < sendData.size() && i < 6 + 48; i++) {
char b[4]; snprintf(b, sizeof(b), "%02x ", sendData[i]);
hex += b;
}
LOG_INFO(hex);
}
}
// Debug: dump packet bytes for AUTH_SESSION
if (opcode == 0x1ED) {
std::string hexDump = "AUTH_SESSION raw bytes: ";