Fix trainer buy packet and grey out unmet prerequisites

CMSG_TRAINER_BUY_SPELL was missing the trainerId field — server expects
guid(8) + trainerId(4) + spellId(4) = 16 bytes, not 12. Spells with
unmet prerequisites (chainNode1/2/3), insufficient level, or already
known are now greyed out with disabled Train buttons. Tooltips show
prerequisite status in green/red.
This commit is contained in:
Kelsi 2026-02-08 15:03:43 -08:00
parent ee155c3367
commit eb92a71b71
4 changed files with 39 additions and 13 deletions

View file

@ -4582,7 +4582,10 @@ void GameHandler::handleTrainerList(network::Packet& packet) {
void GameHandler::trainSpell(uint32_t spellId) {
if (state != WorldState::IN_WORLD || !socket) return;
auto packet = TrainerBuySpellPacket::build(currentTrainerList_.trainerGuid, spellId);
auto packet = TrainerBuySpellPacket::build(
currentTrainerList_.trainerGuid,
currentTrainerList_.trainerType,
spellId);
socket->send(packet);
}