Commit graph

778 commits

Author SHA1 Message Date
Kelsi
f7a996ab26 fix(ui): avoid double-processing bag toggle hotkey 2026-03-14 08:44:45 -07:00
Kelsi
2c32b72f95 feat(ui): show keyring in inventory 2026-03-14 08:42:25 -07:00
Kelsi
800862c50a fix(ui): cache ghost opacity updates to state changes 2026-03-14 08:31:08 -07:00
Kelsi
cebca9a882 fix(gameplay): stabilize run animation and clean ghost/death visuals 2026-03-14 08:27:32 -07:00
Kelsi
422ff99b2a fix(ui): close trainer window immediately on close request 2026-03-14 07:43:52 -07:00
Kelsi
c1baffadf0 fix(input): release mouse on stalls and clean quest keybind duplication 2026-03-14 07:29:39 -07:00
Kelsi
5fa5020af5 fix(mail): use attachment item guid for WotLK take item 2026-03-14 07:11:18 -07:00
Kelsi
76f54bbd2c fix(minimap): keep a single player direction indicator 2026-03-14 06:48:14 -07:00
Kelsi
e0828cc35c fix(input): don't block hotkeys on WantCaptureKeyboard 2026-03-14 05:20:23 -07:00
Kelsi
5be80a9cc6 fix(chat): suppress hotkeys while UI captures keyboard 2026-03-14 04:36:25 -07:00
Kelsi
94e5855d53 fix(ui): prefer quest objective gameobjects on right-click 2026-03-14 04:33:46 -07:00
Kelsi
a5b877de67 fix(chat): suppress alnum hotkeys while typing 2026-03-14 03:54:26 -07:00
Kelsi
14e58eaa01 fix(chat): disable shortcuts while typing 2026-03-14 03:49:42 -07:00
Kelsi
aed1f2ad21 fix(input): reserve movement keys for movement 2026-03-14 03:47:14 -07:00
Kelsi
565c78d141 fix(input): reserve Q for strafe-left 2026-03-14 03:37:24 -07:00
Kelsi
64483a31d5 fix(combattext): show power drain separately from damage 2026-03-13 23:56:44 -07:00
Kelsi
57265bfa4f fix(combattext): render evade results explicitly 2026-03-13 23:32:57 -07:00
Kelsi
6095170167 fix(combattext): correct reflect miss floating text 2026-03-13 23:24:09 -07:00
Kelsi
77d53baa09 fix(combattext): render deflect and reflect miss events 2026-03-13 23:08:49 -07:00
Kelsi
dceaf8f1ac fix(combattext): show aura names for dispel and spellsteal 2026-03-13 23:00:49 -07:00
Kelsi
3ef5b546fb fix(combatlog): render instakill events explicitly 2026-03-13 22:22:00 -07:00
Kelsi
f09913d6d2 fix(combatlog): render interrupt floating combat text 2026-03-13 20:45:26 -07:00
Kelsi
c45951b368 fix(combatlog): distinguish spellsteal from dispel 2026-03-13 19:58:37 -07:00
Kelsi
e51b215f85 feat: add DISPEL and INTERRUPT combat log entries for dispel/spellsteal/interrupt events
Some checks are pending
Build / Build (arm64) (push) Waiting to run
Build / Build (x86-64) (push) Waiting to run
Build / Build (macOS arm64) (push) Waiting to run
Build / Build (windows-arm64) (push) Waiting to run
Build / Build (windows-x86-64) (push) Waiting to run
Security / CodeQL (C/C++) (push) Waiting to run
Security / Semgrep (push) Waiting to run
Security / Sanitizer Build (ASan/UBSan) (push) Waiting to run
2026-03-13 12:03:07 -07:00
Kelsi
a05abc8881 feat: include spell names in MISS/DODGE/PARRY/BLOCK/IMMUNE/ABSORB/RESIST combat log entries 2026-03-13 11:39:22 -07:00
Kelsi
84d5a1125f feat: show gem sockets and item set bonuses in ItemDef tooltip path 2026-03-13 11:34:48 -07:00
Kelsi
ef7494700e feat: parse and display Heroic/Unique/Unique-Equipped item flags in tooltips 2026-03-13 11:32:32 -07:00
Kelsi
03f8642fad feat: parse and display elemental resistances and race restrictions in item tooltips
- Store holyRes/fireRes/natureRes/frostRes/shadowRes/arcaneRes in ItemQueryResponseData
- Parse resistance fields in WotLK, TBC, and Classic parsers (previously discarded)
- Display non-zero resistances (e.g. "+40 Fire Resistance") in both tooltip paths
- Add getPlayerRace() accessor to GameHandler
- Show race restriction line (e.g. "Races: Blood Elf, Draenei") in both tooltip paths,
  highlighted red when player's race is not allowed
- Useful for fire/nature/frost resist gear (Onyxia, AQ40, Naxx encounters)
2026-03-13 11:23:55 -07:00
Kelsi
0741b4d9e3 feat: show class restriction in item tooltip (e.g. "Classes: Paladin")
Display the allowableClass bitmask parsed from SMSG_ITEM_QUERY as a
human-readable "Classes: X, Y" line. Text is highlighted red when the
player's own class is not in the allowed set. Hidden when all classes
can use the item (no restriction).
2026-03-13 11:15:01 -07:00
Kelsi
6e8704c520 feat: show skill/reputation requirements in ItemDef tooltip path
Extend the inventory item (ItemDef) tooltip to also display
skill and reputation requirements by consulting the item query
cache (ItemQueryResponseData) when available, matching the
behavior already added to the ItemQueryResponseData tooltip path.
2026-03-13 11:13:10 -07:00
Kelsi
b0b47c354a feat: parse and display item skill/reputation requirements in tooltips
- Store requiredSkill, requiredSkillRank, allowableClass, allowableRace,
  requiredReputationFaction, and requiredReputationRank from
  SMSG_ITEM_QUERY_SINGLE_RESPONSE in ItemQueryResponseData (was discarded)
- Show "Requires <Skill> (<rank>)" in item tooltip, highlighted red when
  the player doesn't have sufficient skill level
- Show "Requires <Rank> with <Faction>" for reputation-gated items
- Skill names resolved from SkillLine.dbc; faction names from Faction.dbc
- Also fix loot window tooltip suppressing items with names starting with 'I'
2026-03-13 11:11:33 -07:00
Kelsi
a6c4f6d2e9 feat: show effective skill value with bonus indicator in skills panel
Read the third update field (bonusTemp/bonusPerm) for each skill slot so the
skills tab displays the actual buffed value rather than just the base value.
Skills buffed by food/potions/items now show "value / max (+N)" with a cyan
name, and maxed-out skills show a gold bar and name for quick identification.
2026-03-13 10:58:05 -07:00
Kelsi
c48065473f fix: show specific zone name in hearthstone inventory tooltip
The inventory screen item tooltip showed only the continent name
(Eastern Kingdoms, Kalimdor, etc.) for the hearthstone home location.
Apply the same zone-name lookup already used by the action bar tooltip:
prefer the zone name from homeBindZoneId_ via getWhoAreaName(), falling
back to the continent name if the zone is unavailable.
2026-03-13 10:47:10 -07:00
Kelsi
6bca3dd6c5 fix: correct item spell trigger type labels in tooltips
- Add trigger 4 (soulstone), 5 (no-delay use), 6 (learn/recipe) as "Use:"
  — all show as "Use:" in WoW, matching client behavior
- Fix trigger 6 which was incorrectly labeled "Soulstone" (trigger 4 is
  soulstone; trigger 6 is LEARN_SPELL_ID used by recipe/pattern items)
- Both ItemDef tooltip and ItemSlot inline tooltip are now consistent
2026-03-13 10:36:28 -07:00
Kelsi
605d046838 fix: extend quality color bounds for Artifact/Heirloom in chat links and loot roll
Handle quality indices 6 (Artifact) and 7 (Heirloom) in all remaining
quality-color lookup tables: chat link hex colors and loot roll tooltip.
2026-03-13 10:30:54 -07:00
Kelsi
8da5e5c029 feat: extend quality colors for Artifact/Heirloom and add guild bank repair
- Add light gold (e6cc80) color for quality 6 (Artifact) and 7 (Heirloom)
  in the loot roll window and loot toast notification displays
- Add "Repair (Guild)" button next to "Repair All" in vendor window when
  player is in a guild, using guild bank funds for the repair cost
2026-03-13 10:29:56 -07:00
Kelsi
bbbc4efced feat: add Heirloom and Artifact item quality tiers with light gold color
Extends ItemQuality enum with ARTIFACT (6) and HEIRLOOM (7) to match
WotLK 3.3.5a quality values, with light gold color (e6cc80) and
display name support in inventory UI and tooltips.
2026-03-13 10:22:34 -07:00
Kelsi
cc24597983 feat: show hearthstone bind zone name in tooltip instead of continent 2026-03-13 10:18:31 -07:00
Kelsi
b03c326bcd feat: show logout countdown overlay with cancel button 2026-03-13 10:13:54 -07:00
Kelsi
792d8e1cf5 feat: show estimated BG wait time in queue indicator 2026-03-13 10:10:04 -07:00
Kelsi
c31ab8c8b6 feat: play error sound when UI error messages are triggered 2026-03-13 10:05:10 -07:00
Kelsi
d58c2f4269 feat: show taxi flight destination indicator below minimap
Stores the destination node name when activateTaxi() is called and
displays a "✈ → <Destination>" indicator in the minimap indicator
stack while isOnTaxiFlight() is true. Falls back to "✈ In Flight"
when the destination name is unavailable.
2026-03-13 09:44:27 -07:00
Kelsi
f5a834b543 feat: add /clear chat command and movement speed display in stats
- /clear slash command empties the chat history (was listed in
  autocomplete but never handled)
- Stats panel shows run/flight/swim speed as percentage of base only
  when non-default (e.g. mounted or speed-buffed), under a new
  Movement section
2026-03-13 09:38:39 -07:00
Kelsi
01ec830555 feat: show calendar pending invites indicator below minimap (WotLK)
Add a pulsing purple "Calendar: N Invite(s)" notification below the
minimap indicator stack when the server reports unacknowledged calendar
invites (SMSG_CALENDAR_SEND_NUM_PENDING / EVENT_INVITE_ALERT).

Only rendered when the WotLK expansion is active since the calendar
system is WotLK-exclusive. Consistent with the existing New Mail, talent
point, BG queue, and LFG queue indicator stack.
2026-03-13 09:25:23 -07:00
Kelsi
fdd6ca30c3 feat: display active player title in gold below the player frame name 2026-03-13 09:10:03 -07:00
Kelsi
736d266c7e feat: add target-of-target display in target frame with click-to-target 2026-03-13 09:06:48 -07:00
Kelsi
dd412af093 feat: show spell/ranged hit and haste ratings separately when they differ from melee 2026-03-13 09:03:13 -07:00
Kelsi
850e4e798d feat: add right-click context menu to reputation rows to set tracked faction 2026-03-13 09:01:30 -07:00
Kelsi
84f9d2e493 feat: color class names by WoW class color in character selection screen 2026-03-13 08:57:44 -07:00
Kelsi
a9f21b2820 feat: show percentage conversions for WotLK combat ratings
Convert raw combat rating values to meaningful percentages using
level-scaled divisors based on known WotLK level-80 constants
(from gtCombatRatings.dbc):

  Hit Rating   : 26.23 per 1% at level 80
  Expertise    : 8.19 per expertise pt (0.25% dodge/parry each)
  Haste        : 32.79 per 1% at level 80
  Armor Pen    : 13.99 per 1% at level 80
  Resilience   : 94.27 per 1% at level 80

Each stat now displays as "Hit Rating: 120 (4.58%)" instead of
just "Hit Rating: 120". The divisor scales by pow(level/80, 0.93)
for characters below level 80.
2026-03-13 08:54:15 -07:00