DMK_CharData
Character snapshots: identity, stats, gear, skills, talents, completed quests, professions, reputation.
Data plugins write; display plugins read. Twenty plugins over the DMK core. Screenshot slots are placeholders — captures land here later.
Character snapshots: identity, stats, gear, skills, talents, completed quests, professions, reputation.
Activity logs: kills, quests, zones, npcs, deaths, levels, gold and xp series.
Also chat capture (ChatLogs.lua, since v1.3.0): window buffers hooked post-filter via historyBuffer.PushFront, whisper and Battle.net conversations keyed per correspondent — BNet by battletag, since account ids and |K tokens do not survive sessions. 500 lines per key, two-week prune, raw storage decorated at render. DMK_Chat is the display consumer.
CombatData engine: raw combat event log (packed rows, roughly 38 bytes per event), fight history, EngageRoster.
Automatic full AH scan on house open (getAll query, 15-minute server cooldown honored, auto-retry). Listings processed in 250-item batches with yields so the client never freezes; uncached names resolved by a retry pass. Captures price, bid, owner, stack, quality, timeLeft, class ids per listing.
Keeps the newest 3 scans plus an icon cache and a cross-session cooldown clock. Never reads its own DB back: wow-ah-gen ingests and clears it.
Positional data layer: mode detection (world/corridor), odometry, anchor chain, melee-range proof edges, learned range rings — interact and spell gates calibrated against party members in the open world; combat-skipped, the gates are protected in combat. Radar and Map consume.
Replacement unit frames: player, target, ToT, focus, party, pets in full/compact/mini variants; hover-reveal bar text, secure click targeting, edit-mode drag and resize, Blizzard unit/party/cast frames suppressed. Nameplate rings: plate art alpha'd out, segmented health/power/cast rings on the target, optional threat percent from EngageRoster.
Custom aura icons with combat-safe cancel macros (fixed alpha-painted grid). Threat Cards: scaled target-frame clones per threat-table mob, ranked above/below the target, ghost cards for fled mobs. Aura Tracker window: timed auras longest-first with drain bars, optional mouse mode for tooltips and cancel. Ten-tab settings; Original vs Class color themes. Reads CombatData snapshots.
Damage meter over CombatData. Six window types: Overall, Damage Done, DPS, Healing Done, By Target, By Source; class-colored bars, per-view opacity. Footer fight selector: follow live combat or pin a past fight from FightHistory.
Clicking a bar opens a per-player spell breakdown (top 12 spells, share, crit percent), GUID-keyed so renumbered actors never repoint a window. The Overall accumulator sums closed fights across sessions; reset from settings or /dmk damage resetoverall.
Loadout A/B damage simulation. Capture snapshots the current loadout: gear links, per-school spell power and crit, stats, buffs, talents, spell hit (via CharData); newest 50 kept. A/B pickers diff two captures in a table of the class's damage-spell ranks: hit chance and dps per side plus color-coded delta percent.
Model: base damage, level scaling, SP coefficient, additive damage talents, crit and miss tables, DoT ticks, GCD floor; target-level dropdown +0 to +3. Spell data is a generated DB2 export, mage only so far.
World map window: zoom/pan canvas, click zone navigation (left into child, right to parent), player auto-follow, multi-floor dungeon navigation with a custom art loader for 100+ interiors built from unreferenced client tiles.
Layers: quest POIs (Questie bridge read-only, toggle-gated, 150-marker cap, native API fallback), gathering nodes, dungeon entrances, boss and rare pins with lore panels and loot sheets, party blips, off-screen edge arrows. Side rails: quest list (progress, zoom-to-quest, arrow pin) and townfolk POI categories. Quest arrow: dart orbiting the player, auto-nearest objective or manual pin. Telemetry anchor pin inside tracked dungeons. Reads generated Dungeons, TownFolk, FloorNames, DungeonBosses, BossLore, BossLoot data.
Blizzard minimap reskinned in place, never reparented (reparenting kills the 3D terrain model on this client): square mask, themed border, drag strip, wheel zoom, size slider, grid snap. Bottom bar with zone name and clock (local or server time).
Blizzard ornaments hidden, self-healing re-hide ticker for the stubborn ones, optional hiding of minimap buttons. Publishes GetMinimapShape SQUARE for LibDBIcon-style buttons; captures HybridMinimap's mask when it loads late. Fully reversible: restores exact Blizzard defaults on disable, no reload.
Bag and bank replacement windows on one render path; bank shown only while at the bank. Slot grid: quality borders, cooldown sweep, quest marks, junk tint, stack split, secure use in combat. Alt-click marking: Junk, Always-have, Safe; marked and quest items live in a Reserved group and never sell.
Vendor auto-sell of junk; bank auto-deposit of trade goods. Native bag-swap buttons reparented into the window, keyring toggle, Alt-click hides a bag from the grid. Layout: per-bag split or fixed columns. Handles C_Container and legacy APIs.
Two full-width edge bars. Top: name and level, professions with trainer-available dot, XP, watched reputation, location, Status readout, sync chip, clock; a 2px rested-aware XP strip and a reputation strip. Bottom: micro-button glyph row (character, spellbook, talents, quests, social, DMK settings), bag free/total and gold, click opens Bags.
Feature quick-toggle icons (Sync, AH, Gathering, Sim, Gear, Threat, Radar, Map): each appears only when its plugin is installed and enabled, lights while its window is open, click toggles it. New plugins land here.
Gold/hr and xp/hr readout in the Anchor top bar: 1-hour rolling window over played time, 5-second refresh, xp segment hidden at level cap.
Chart window: gold/hour and xp/hour column charts over the last 6 hours of played time in 5-minute buckets; gold losses draw downward in red, sessions concatenate on the played-time axis so logged-off gaps do not exist. Reads the CharLogs GoldXPSeries accessors.
Engagement window over EngageRoster: every mob in the pull as a pooled plate, split ON ME vs OTHERS, plates gliding between columns as aggro moves, overflow as +N. Per plate: health fill, attacker count, accent on your target, dead fade, stale-reading dim.
Tank inference: the party member holding the most mobs, their mobs tinted. DPS and Tank color modes. Auto-shows on engagement, hides 3 seconds after the pull empties; keep-idle pin available. Plates are insecure frames, so restructuring is combat-legal.
Auction search window over DMK_AHSync scans: sortable columns (ilvl, price, min, qty, listings, vendor, margin, duration), column picker, saved searches, shift-click item linking. Query grammar ported from the web dashboard: class, subclass, quality, suffix, stat, and numeric filters with comparisons and ranges, plus sort:.
Engine aggregates the latest scan per item and suffix: median and min unit buyout, listing and qty totals, margin, dominant duration; joins generated AHCatalog, AHSuffixes, and AHLookups DB2 data. Persists a snapshot so results survive the warehouse clearing DMKAHDB (marked cached).
Healing panel: party and pet health bars with damage projection from the PartyIntake engine — intake rate, target pressure, and our own in-flight heal drawn on the bar. Casting is hover-scoped chord casting with live rank rules: hover a bar, press a chord key, the right rank goes out. Dispels highlight by school; right-click cures.
With Realtime Sync up, HealSync folds in-flight heals from every synced healer into the projection, not just our own. Out-of-range members dim, range read from the first wired chord spell; stuck hover bindings mop up within one tick out of combat.
Gear sets in a standalone window: save a set from worn gear, equip it with one click, rename and delete from the same surface. Every item in a set is tracked across worn, bags, and bank — the set list shows where each piece sits and flags what is missing, with per-set totals (spell damage, crit, hit, haste, stamina and the rest).
Equipping respects combat lockdown: weapon slots swap immediately in combat, armor queues and lands the moment combat ends. An Update from Worn pass refreshes a set after upgrades. Writes DMKGearDB, per character.
Tactical range-band HUD: player centered, band circles drawn at Telemetry's calibrated ring radii (interact gates, nameplate range, per-character spell rungs), roster mobs and party members placed on the bands. Mob blips color by threat state — red on us, gray tanked, amber loose; party blips are class-colored and exact in the open world. The client withholds bearings; the window draws bands, not angles.
With positional sync up, a mob observed by two or more synced members in the open world resolves to a real position — its blip angle becomes a true bearing and the status line shows a fix. In dungeons, blips pull toward the party member closest to them (melee contact weighs triple), and members elsewhere in the dungeon dim on the radar. Requires Telemetry.
Full replacement for the default chat windows: one tabbed DMK window over the live-but-suppressed Blizzard chat windows (General, Guild, Party, Loot, Trade seeded), per-conversation whisper windows (character + Battle.net, IM model: click a name or receive a whisper), pop-outs with large title bars, tab right-click menu.
Tab Manager modal: create/rename/reorder/hide, message groups, channels, per-tab text overrides. Global text settings, two-column timestamps, channel-tag stripping in locked tabs, reply (R) routed to conversation windows. Blizzard-backed tabs type through their own edit boxes so /cast works; whisper inputs send only whispers. Reads the ChatLogs accessors in DMK_CharLogs.
Probe workflow: write a probe in Probes.lua, publish, run in game (/dmk probe), paste output back, retire with a verdict comment. Client uncertainty resolves here.
Error capture: chained Lua error handler plus ADDON_ACTION_BLOCKED, ADDON_ACTION_FORBIDDEN, and LUA_WARNING events feed one buffer, persisted to DMKDebugDB.