Description
PlayerTracker
v1.27w — 2026-06-06 · nutnhoney @ Dreamscythe · Interface: 20505 (TBC Classic 2.5.5)
Slash commands: /pt · /ptr · /playertracker
What Is It?
PlayerTracker is a passive, private observation addon for TBC Classic that silently builds a persistent cross-session profile on every player you group with. Requires nothing from other players — no opt-in, no shared database, no configuration. Runs in the background and accumulates data forever, account-wide across all your characters.
Over time it answers questions no other addon tracks: Have I grouped with this person before? Do they roll Need on everything? How often do they die per run? Do they actually bring consumables? Have we ever cleared Black Temple together? The next time that person appears in your LFG channel, you know at a glance whether they're worth inviting — or worth avoiding.
For guild officers vetting PUG applicants it provides hard evidence: actual clears, actual roll behaviour, consume compliance, and disconnect history across dozens of runs. For casual players farming Heroics, it turns every stranger into a data point that compounds the longer you play.
As of v1.2, PT can optionally share data with peers you trust through an opt-in subscription system. Your ratings and notes blend with subscribed peers into a Community Trust Score; your private data stays local.
As of v1.27, PT also keeps a per-run log of every instance you complete — a sortable Run History with deaths, drops, boss progress, and a per-run "impact" breakdown — and ties each run to its server lockout so re-entering the same raid lock never fragments your stats.
Highlights
- Entirely passive — no opt-in from other players, no broadcasts without explicit action
- Cross-session, account-wide persistence across all your characters
- Trust Score (0-100, color-coded) built from death rate, rolls, completion, content experience, consumes, time-together, and quest help. Always blended toward neutral on thin sample sizes
- Guild Score and Community Trust Score sit alongside personal score when subscription data is available
- Consume Score from passive buff scans at boss-pull time. No other addon or cooperation required
- Context-weighted deaths — raid deaths count 2.5×, heroic 1.5× vs. normal
- Run History — every completed instance logged as its own row: duration, members, deaths, drops, boss progress, cleared status, and net score change
- Run Impact — after a run, see exactly how each member's Trust Score moved and why
- Lockout-aware run tracking — runs key off the server raid/instance lockout, so dying and running back (or returning the next day to the same lock) stays one run, not several
- Player Detail window — dedicated draggable window per player with tabbed Activity / History / Loot / Played / Share To views
/pt postsummary— post end-of-run stats (loot, deaths, elapsed) to party/raid chat. Survives/reload!ptwhoin chat — anyone in your group/raid/guild can query a player's stats- Subscription sharing — opt-in peer-to-peer data exchange. No central server. Delta-sync, push-on-change, addon-presence detection with friendly invite
- Stealth Mode — pause all PT addon traffic without cancelling subscriptions
- Peer discovery —
/pt scanfinds other PT users in guild/raid/party with their version - Right-click intelligence — rate, note, subscribe, block, send-stats from a single menu
- Tooltip integration — hover any tracked player anywhere; their PT profile appends to the standard tooltip
- Self-testing & repair — DB invariants checked on every login; one-command Check DB / Fix DB with detailed reporting
What It Tracks
Grouping — total sessions, total minutes, first/last grouped dates. Sessions survive disconnects and reloads.
Instance activity — entries and clears split across Normal / Heroic / Raid / BG / Arena, backed by an audited final-boss table covering every Classic and TBC dungeon and raid through Sunwell.
Per-run history — each instance you complete is logged as a standalone run: instance + difficulty, owner character, duration, members present, deaths, drops, bosses killed (e.g. 7/12), cleared status, and the net Trust-Score change for the group. Tied to the server lockout so the same lock is always one run.
Consume compliance — flasks, battle/guardian elixirs, food, oil/sharpening stone, scrolls. Captured at boss pull, committed only on a confirmed kill (wipes excluded). Builds per-player percentage rates over time.
Loot economy — every blue+ item dropped while grouped (Seen), every item received (Got), color-coded ratio. Per-item history with item links, roll method, time-ago. Optional DE filter covers the full canonical material list.
Roll behaviour — Need / Greed / Pass counts and percentages, captured from in-game roll messages. Ninja looters reveal themselves across dozens of runs.
Deaths — per-player death count, including your own character, captured reliably even on a full-health one-shot and across a 25-man raid. Resurrection and battle-rez are handled so deaths keep counting correctly afterward. Per-group ratio, color-coded red for chronic offenders, broken down by content type.
Disconnects — count of online→offline transitions mid-instance, per-run ratio. (WoW can't distinguish /logout from a real DC.)
Roles — Tank / Healer / DPS counts captured automatically. What someone actually plays, not what they claim.
Relationships — for each player, the full set of players you've grouped with alongside them, plus shared quest completions.
Ratings & notes — rate Positive / Neutral / Negative with a freetext note. Notes auto-stamp with (YYYYMMDD) when saved. Idempotent — re-saving updates the date but doesn't duplicate.
Peer data (subscribed only) — for every active subscription, PT stores that peer's view of every player you both know. Per-player under pd.peers[peerKey], purged when subscription ends.
PT presence cache — every PT user you've exchanged any addon traffic with is cached in PlayerTrackerDB.knownPTUsers with version and timestamp. Drives the cyan + indicator in the main list. Auto-pruned after 60 days.
Trust Score
Every tracked player gets a 0-100 score, color-coded green / yellow / red.
| Range | Meaning |
|---|---|
| 80-100 | Reliable, safe invite |
| 60-79 | Generally good, minor concerns |
| 40-59 | Neutral or insufficient data |
| 20-39 | Caution — some red flags |
| 0-19 | Avoid — consistent problem behaviour |
Built from seven weighted components:
| Component | Max | Measures |
|---|---|---|
| Death rate | 25 | Deaths per group, content-weighted |
| Roll behaviour | 20 | Need-roll % (requires 3+ rolls) |
| Completion rate | 20 | Clears / entries |
| Content experience | 15 | Heroic runs + boss kills combined |
| Consumes | 10 | Scaled from Consume Score |
| Time together | 5 | Total hours grouped (capped at 5) |
| Quest help | 5 | Shared quests × 0.5 (capped at 5) |
Thin-sample blending — a player you've grouped with once is blended toward 50 so a single data point can't dominate. Confidence ramps to full by 10 groups.
Rating modifier — Positive adds 20, Negative subtracts 35. Clamped to 0-100. Your direct judgement overrides the algorithm.
Guild Score & Community Trust Score
Guild Score — weighted average Trust Score of every player you've grouped with in that guild. Gated on at least 3 members with groupCount ≥ 1 AND total groupCount ≥ 10 across those members. Each member contributes with weight min(groupCount, 10) so one heavy-exposure player can't solo-determine the score. Shows as g92 in the Scores column.
Community Trust Score — average of your local score for a player plus each subscribed peer's reported score for them. Only shown when at least one non-local contributor exists (otherwise it'd just duplicate the personal score). Shows as c75 in the Scores column.
All three columns can appear together: 87 g92 c75.
The /pt Window
Open with /pt, /ptr, or /playertracker. Sortable table of every tracked player. Currently grouped float to the top with a green [*] indicator. The window title shows the current version.
Columns: Rating · Name · Scores (personal + g + c) · Role · Groups · Norm · Heroic · Raid · Loot · Since · Community Rating
Indicators next to each name:
| Marker | Meaning |
|---|---|
*Alice |
subscribed to Alice |
+Bob |
Bob has PT (cached) |
*+Charlie |
both |
(me) / (alt) |
your own characters |
Right-click any name for a single-pane menu: quick rate, edit note, send stats to any channel, subscribe, whisper, invite, /who.
Left-click expands a row inline; left-click a name opens the Player Detail window (see next section).
Header checkboxes
| Checkbox | Default | What it does |
|---|---|---|
| Ignore PVP | ON | No BG/arena contamination |
| Ignore DE | OFF | Exclude disenchanting mats from loot history |
| Log All Groups | OFF | Track outside instances |
| Warn Players | ON | Private warning on negative-rated player join |
| Hide Unawarded Loot | ON | Filter out drops nobody got from the Loot view |
| Announce PT | ON | Brief party/raid banner on zone-in |
| Log All Loot | OFF | Track greens too |
| Mini Tooltip | ON | Tooltips show only score + note |
| Ignore ML Loot | OFF | Don't credit ML-distributed items to recipient |
| Auto-show Run Impact | OFF | Pop the Run Impact window after a clear |
Search bar syntax
class:druid · role:tank · rating:+/~/- · score:60 · norm:5 · hero:5 · raid:3 · item:nether · item:"Scryer's Bloodgem" · dc:N · inst:"Karazhan"
Bottom bar (left → right)
| Button | What it does |
|---|---|
| Party Report | Post individual stat lines for current party / 5-man subgroup |
| Group Summary | Group-level summary to party/raid/guild |
| Announce | Refresh and post a summary |
| Run History | Open the Run History window |
| Utilities ▼ | Check DB, Fix DB, Sharing, Prune 90d, Import CharacterNotes |
| Sharing… | Quick-access subscription dialog |
| About | Version, authors, credits, donations link |
Run History & Run Impact
PlayerTracker logs every instance you complete as its own run, tied to the server's raid/instance lockout. Because runs key off the lockout rather than the zone, dying and running back — or coming back hours later to the same lock to turn in quests — stays a single run, with members and stats accumulating into it rather than scattering across duplicate rows.
Run History (/pt history, alias /pt runs, or the Run History button)
A sortable, resizable window listing recent runs. Each row shows:
- Date and Duration
- Instance (with difficulty, e.g.
Karazhan (Raid)) - Owner — which of your characters ran it
- Mem — members present
- Clr — cleared (final boss down)
- Dth — total deaths in the run
- Drops — blue+ items dropped
- Boss — boss progress (e.g.
7/12) - Score Δ — net Trust-Score change for the group
Click a run to filter the main window to that instance.
Run Impact (/pt impact, or auto-show after a clear)
After a run, the Run Impact window breaks down how each member's Trust Score changed and why — deaths taken, bosses cleared, loot, rolls — so you can see at a glance who helped or hurt their standing on that run. Enable Auto-show Run Impact on the main window to have it pop automatically a few seconds after the final boss dies. /pt impact last reopens it for the previous run.
Player Detail Window
Click any player to open a dedicated, draggable, resizable window for that player. Position, size, and opacity persist across sessions.
Title bar shows: Name (Level) [Score] <Guild>
Below the title: a rate-and-note panel — Rate Positive / Neutral / Negative buttons with hover tooltips explaining each rating's behaviour, plus a 2-line note edit with Share checkbox.
Five tabs
Each has a hover tooltip describing its content.
Activity — your complete observation: groups, normal/heroic/raid runs/clears, deaths, role, disconnects, loot, rolls, raid clears. Below your stats is a tabular Community grid showing one row per observer:
Score Grps R/B/C % Deaths (/g) Loot d/r
[You] sees 66+ 5 14/34/9 (64%) 21 (4.20/g) 35/3
[Frostbornetv] 56 8 8/26/7 (87%) 31 (3.88/g) 70/10
[Buzzcap] 44 2 1/4/0 (0%) 10 (5.00/g) 27/0
All six columns line up across rows so peer observations can be compared at a glance. Peer notes appear as wrapped wide rows below the grid.
History — per-instance dungeon and raid history with run count, clear count + completion %, and last-clear date. Click any row to filter the main /pt window. (Instance names with spaces and colons — e.g. Hellfire Citadel: The Shattered Halls — filter correctly in full.)
Loot — items this player has seen drop and received. Per-item: seen, got, roll history (Need / Greed / ML), last-seen date. Affected by the "Hide Unawarded Loot" toggle on the main window.
Played — other tracked players this person has been in groups with, by name + score + guild at the time. Useful for finding people who run with negatively-rated players.
Share To — manage what data PlayerTracker shares with this player (when they're a subscribed peer). Includes mutually-sharing status.
Combat-close — entering combat closes ALL PT windows (main, detail, sharing, about, note edit, users list, Run History, Run Impact) so they don't obstruct the playing field.
/pt postsummary
End-of-run stats posted to party / raid chat in three lines. Auto-detects RAID vs PARTY (or prints locally if solo). Aliases: /pt runend, /pt runstats.
Example:
[PT] Karazhan (Heroic) · 1h42m · 8 deaths · 12 drops
Loot: Sugarpuffz 4 (3N/1G) · Bonzeye 2 (2N) · Lynine 2 (1N/1G) · Shamanistix 1 (1G)
Deaths: Sugarpuffz 3 · Bonzeye 1 · and 6 others died once
Behaviour:
- Loot column shows count + Need/Greed breakdown per recipient
- Death list tiers: players with 2+ deaths shown individually; 1-deaths collapsed into a trailing count
- Quality filter — healthstones, conjured food/water, low-tier potions, mana biscuits are skipped (they fire
CHAT_MSG_LOOTbut aren't real drops). Excluded-items list (badges, ZG bijous, AQ scarabs) also skipped - Persists across
/reload— run stats survive any number of reloads mid-instance viaPlayerTrackerDB.currentRun - Accurate counts — because the summary reads the same lockout-keyed run as Run History, deaths and drops aren't split by mid-run deaths/zoning
- Privacy — only your own observed data leaves your client. No ratings, scores, peer-shared data, or notes ever reach chat
- Clean run? Line 3 reads
Deaths: Clean run — nobody died.
Consume Score
Separate 0-100 score measuring buff compliance at boss pulls. Captured passively via buff scan at pull-start, committed only on successful boss kill.
| Component | Max | Threshold |
|---|---|---|
| Flask or double-elixir | 40 | Flask, or both battle + guardian |
| Single elixir | 20 | One elixir (half credit) |
| Food buff | 20 | Any food buff active |
| Weapon oil / sharpening | 20 | Active at pull |
| Scrolls | 20 | Any stat scroll active |
Untested components default to 50 (neutral) so new data isn't penalised. The Consume Score feeds into the Trust Score as the Consume component (10 max).
Shown in the expanded Activity panel as: Consumes: 26 Fl:29 Fd:70
Sharing & Subscriptions
Optional peer-to-peer data exchange. No central server, no third-party hosting. All traffic over WoW's CHAT_MSG_ADDON between two characters who've each accepted a subscription. Bidirectional — once accepted, both sides share on equal footing.
Subscription states:
| State | Meaning |
|---|---|
pending_outgoing |
You sent the request |
pending_incoming |
They sent, awaiting your accept |
active |
Bidirectional sync running |
ended |
You unsubscribed; peer data purged |
stale |
They dropped you; Re-request button shown |
Three sync paths keep peers up to date:
- Push-on-change — rate or edit a note → single-record update to every active subscriber immediately
- Login auto-sync — shortly after login, delta
SYNC_REQto every active subscription (skipping any synced recently) - Manual —
/pt netsync
Addon-presence detection — initiating a subscription also probes for PT presence. If no response in a few seconds, the target gets a one-line whisper with the download link. If they already have PT, they get the subscription-request popup instead — no whisper.
The Sharing dialog (Sharing… button or /pt sharing) has three tabs: Subscriptions, Pending Requests, Block List. Includes a "Block ALL incoming requests" master switch.
When you unsubscribe, that peer's contributions are surgically removed via PTPurgePeerData — your own data is unaffected.
Peer Discovery
/pt scan guild | raid | party — broadcasts a single version request to that channel, collects responses for a few seconds, prints results. Results cached in knownPTUsers for 60 days. The cyan + indicator in the main /pt window shows every cached PT user; refreshed by any subsequent inbound addon traffic.
/pt users opens a windowed cached-presence list with a one-button "Re-scan group/guild" action.
Stealth Mode
/pt stealth on|off|status — global pause on all PT addon traffic.
While stealthed: outbound silenced (no subscription requests, pings, records, or sync); inbound dropped (no popups, no traffic). [STEALTH] badge on the /pt window title. Subscriptions stay intact — they just pause.
On disable: a full sync automatically fires to every active subscription. Subscribers only receive records that actually changed during the stealth window (pd.lastUpdated is stamped during stealth even though nothing went on the wire).
!ptwho in chat
Any guild / party / raid member can type !ptwho Playername in chat and PT responds in the same channel with a full stat line:
[PT] [+] Sugarpuffz [95] | N:30(47%) H:25(60%) R:4(100%) | RIP:0.74 N:0.03 H:0.32 R:1.50 dc:1 (3%) | Consume:78 Flask:89% Food:72% | Loot:46/193(24%)
3-second per-name throttle. Case-insensitive. Plain text — safe for all channels.
Saving Your Data
PlayerTracker's database is written to disk by WoW on a clean logout, disconnect, /reload, or quit — the same as any addon. Completed runs are added to your Run History the instant the final boss dies, so they're safe as soon as you log out or reload normally.
If you want to force the current data to disk immediately — for example after a big kill, as crash insurance — use /pt save. (It reloads your UI, which is the only way WoW lets an addon flush to disk mid-session; it won't run during combat.)
Self-Test & Repair (Check DB / Fix DB)
PlayerTracker runs a quiet DB invariant check on every login and surfaces a one-line notice if anything looks off. You can run the checks and repairs on demand from Utilities ▼ → Check DB / Fix DB, or via /pt selftest and /pt selffix.
- Check DB (
/pt selftest) is read-only. It reports any invariant violations by code (orphaned counters, completed-without-entered, clears exceeding runs, invalid disconnect counts, and split-lockout runs that should be merged), and tells you to run Fix DB if there's anything to repair. - Fix DB (
/pt selffix) repairs what Check DB finds. Notably it merges split runs back together: if an old lockout was logged as several separate rows (from dying and running back before lockout-aware tracking existed), Fix DB folds them into one run — combining members, loot, deaths, bosses, and cleared status. Runs that share the same server lockout are merged regardless of the time between them.
Fix DB only touches your local run history when you explicitly run it; normal play never rewrites past runs.
About Window
About button on the main /pt window's bottom bar. Shows version, compile date, authors (nutnhoney @ Dreamscythe, sugarpuffz @ Doomhowl), special thanks, and a click-to-copy download URL for sharing with others.
If you like PT, the best donation is recommending it to a friend.
CharacterNotes Import
/pt importcn (or Utilities ▼ → Import Character Notes) migrates everything from the CharacterNotes addon in one pass:
- All text notes (skips players where you already have a PT note)
- Ratings (CN positive/negative → PT positive/negative, only on neutral/unset PT ratings)
- Creates records for players you've never grouped with so your existing reputation is preserved
Idempotent — safe to run multiple times. Reports a summary like: CN import: 47 notes 3 skipped 12 ratings
Privacy
Your PlayerTracker database is local. It lives in WTF/Account/<account>/SavedVariables/PlayerTracker.lua and is never transmitted anywhere except via:
- Explicit subscriptions you've accepted (full bidirectional sync with that peer only)
- Scan responses to
/pt scanfrom other PT users in your channels (just your version, nothing else; silenced by Stealth) - Explicit user-driven posts —
!ptwho, Send Stats, Party Report,/pt postsummary - Announce PT (default ON) — brief banner on zone-in; turn off if you'd rather stay silent
That's the entire surface. Your ratings, notes, and raw data are otherwise private.
Commands (essentials)
| Command | Description |
|---|---|
/pt |
Toggle the PlayerTracker window |
/pt help |
Full command list |
/pt ver |
Print version |
/pt history |
Open Run History (alias: runs) |
/pt impact |
Open Run Impact for the current run (/pt impact last for the previous) |
/pt postsummary |
Post end-of-run stats to party/raid (aliases: runend, runstats) |
/pt save |
Force the database to disk now (UI reload) — crash insurance |
/pt sharing |
Open the Sharing dialog |
/pt scan party/raid/guild |
Scan for PT users |
/pt stealth on/off |
Toggle Stealth Mode |
/pt importcn |
Import CharacterNotes |
/pt selftest |
Run DB invariant checks (Check DB) |
/pt selffix |
Repair DB issues, incl. merging split runs (Fix DB) |
/ptwho <name> |
Print a player's stats locally |
/ptwho <name> @<target> |
Whisper a player's stats to someone |
!ptwho <name> |
In group chat — anyone can query |
Run /pt help for the full list including diagnostic, subscription management, and admin commands.
Aliases: /ptr · /playertracker






