mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-05-03 08:03:50 +00:00
Fix trainer system and add critical spell/quest opcodes
Trainer System Fixes: - Fix CMSG_TRAINER_BUY_SPELL packet: remove incorrect trainerType field (12 bytes not 16) - Correct spell state interpretation: 0=available, 1=unavailable, 2=known - Add dynamic prerequisite re-evaluation in real-time as spells are learned - Immediately update knownSpells on SMSG_TRAINER_BUY_SUCCEEDED - Add "Show unavailable spells" checkbox filter to trainer window - Override server state when prerequisites become met client-side New Spell Opcodes: - SMSG_SUPERCEDED_SPELL (0x12C): handle spell rank upgrades - SMSG_SEND_UNLEARN_SPELLS (0x41F): handle bulk unlearning (respec/dual-spec) - CMSG_TRAINER_LIST (0x1B0): trainer request opcode Quest System: - SMSG_QUESTUPDATE_COMPLETE (0x195): mark quests complete when objectives done - Show "Quest Complete" message and enable turn-in UI Detailed logging: - SMSG_INITIAL_SPELLS now logs packet size and first 10 spell IDs - Money values logged during trainer purchases - Trainer spell states and prerequisites logged for debugging This enables proper spell progression chains, spec changes, and quest completion notifications matching retail WoW 3.3.5a behavior.
This commit is contained in:
parent
0779e5ab2c
commit
5f2eef42d2
6 changed files with 632 additions and 36 deletions
|
|
@ -495,6 +495,8 @@ public:
|
|||
std::string title;
|
||||
std::string objectives;
|
||||
bool complete = false;
|
||||
// Objective kill counts: objectiveIndex -> (current, required)
|
||||
std::unordered_map<uint32_t, std::pair<uint32_t, uint32_t>> killCounts;
|
||||
};
|
||||
const std::vector<QuestLogEntry>& getQuestLog() const { return questLog_; }
|
||||
void abandonQuest(uint32_t questId);
|
||||
|
|
@ -697,7 +699,9 @@ private:
|
|||
void handleCooldownEvent(network::Packet& packet);
|
||||
void handleAuraUpdate(network::Packet& packet, bool isAll);
|
||||
void handleLearnedSpell(network::Packet& packet);
|
||||
void handleSupercededSpell(network::Packet& packet);
|
||||
void handleRemovedSpell(network::Packet& packet);
|
||||
void handleUnlearnSpells(network::Packet& packet);
|
||||
|
||||
// ---- Phase 4 handlers ----
|
||||
void handleGroupInvite(network::Packet& packet);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue