feat: display glancing and crushing blows in combat text and log

Add GLANCING (hitInfo 0x800) and CRUSHING (hitInfo 0x1000) as distinct
combat text types so players see mechanics feedback they expect from
Classic/TBC content:
- Glancing: shown as "~{amount}" in muted yellow/red; "glances for N" in
  the combat log
- Crushing: shown as "{amount}!" in bright orange/red; "crushes for N!"
  in the combat log
Both types are counted toward DPS meter accumulation. AttackerStateUpdateData
gains isGlancing()/isCrushing() helpers alongside the existing isCrit()/isMiss().
This commit is contained in:
Kelsi 2026-03-17 18:51:48 -07:00
parent 36fed15d43
commit 488ec945b6
4 changed files with 41 additions and 5 deletions

View file

@ -53,7 +53,7 @@ struct CombatTextEntry {
MELEE_DAMAGE, SPELL_DAMAGE, HEAL, MISS, DODGE, PARRY, BLOCK,
EVADE, CRIT_DAMAGE, CRIT_HEAL, PERIODIC_DAMAGE, PERIODIC_HEAL, ENVIRONMENTAL,
ENERGIZE, POWER_DRAIN, XP_GAIN, IMMUNE, ABSORB, RESIST, DEFLECT, REFLECT, PROC_TRIGGER,
DISPEL, STEAL, INTERRUPT, INSTAKILL, HONOR_GAIN
DISPEL, STEAL, INTERRUPT, INSTAKILL, HONOR_GAIN, GLANCING, CRUSHING
};
Type type;
int32_t amount = 0;

View file

@ -1719,8 +1719,10 @@ struct AttackerStateUpdateData {
uint32_t blocked = 0;
bool isValid() const { return attackerGuid != 0; }
bool isCrit() const { return (hitInfo & 0x200) != 0; }
bool isMiss() const { return (hitInfo & 0x10) != 0; }
bool isCrit() const { return (hitInfo & 0x0200) != 0; }
bool isMiss() const { return (hitInfo & 0x0010) != 0; }
bool isGlancing() const { return (hitInfo & 0x0800) != 0; }
bool isCrushing() const { return (hitInfo & 0x1000) != 0; }
};
class AttackerStateUpdateParser {