Add gameplay systems: combat, spells, groups, loot, vendors, and UI

Implement ~70 new protocol opcodes across 5 phases while maintaining
full 3.3.5a private server compatibility:

- Phase 1: Server-aware targeting (CMSG_SET_SELECTION), player/creature
  name queries, CMSG_SET_ACTIVE_MOVER after login
- Phase 2: Auto-attack, melee/spell damage parsing, health/mana/power
  tracking from UPDATE_OBJECT fields, floating combat text
- Phase 3: Spell casting, action bar (12 slots, keys 1-=), cast bar,
  cooldown tracking, aura/buff system with cancellation
- Phase 4: Group invite/accept/decline/leave, party frames UI,
  /invite chat command
- Phase 5: Loot window, NPC gossip dialog, vendor buy/sell interface

Also: disable debug HUD/panels by default, gate 3D rendering to
IN_GAME state only, fix window resize not updating UI positions.
This commit is contained in:
Kelsi 2026-02-04 10:30:52 -08:00
parent 6bf3fa4ed4
commit c49bb58e47
14 changed files with 3039 additions and 84 deletions

View file

@ -129,15 +129,33 @@ public:
uint32_t getMaxHealth() const { return maxHealth; }
void setMaxHealth(uint32_t h) { maxHealth = h; }
// Power (mana/rage/energy)
uint32_t getPower() const { return power; }
void setPower(uint32_t p) { power = p; }
uint32_t getMaxPower() const { return maxPower; }
void setMaxPower(uint32_t p) { maxPower = p; }
uint8_t getPowerType() const { return powerType; }
void setPowerType(uint8_t t) { powerType = t; }
// Level
uint32_t getLevel() const { return level; }
void setLevel(uint32_t l) { level = l; }
// Entry ID (creature template entry)
uint32_t getEntry() const { return entry; }
void setEntry(uint32_t e) { entry = e; }
protected:
std::string name;
uint32_t health = 0;
uint32_t maxHealth = 0;
uint32_t power = 0;
uint32_t maxPower = 0;
uint8_t powerType = 0; // 0=mana, 1=rage, 2=focus, 3=energy
uint32_t level = 1;
uint32_t entry = 0;
};
/**