File Details
cepgp_lootmaster-8.6.2.zip
- R
- May 19, 2026
- 713.34 KB
- 102
- 2.5.5
- Classic TBC
File Name
cepgp_lootmaster-8.6.2.zip
Supported Versions
- 2.5.5
Changes
8.6.2 — 2026-05-19
Features
EPGP Controller — Session-Based Award/Exclude
- New: Added "Session" as a third source option in the EP/GP Controller alongside Guild and Raid.
- Award session attendees: Select a past raid session from the dropdown and award EP/GP to everyone who attended that session.
- Exclude session attendees: Check "Exclude from guild rank", pick a rank, and award EP/GP to all members of that rank EXCEPT those who were in the selected session. Useful for awarding standby EP to non-raiders.
Bug Fixes
Session Delete — No Longer Auto-Propagates
- Removed: Deleting a loot session no longer broadcasts a
SESSION_DELETEover the addon channel, and inboundSESSION_DELETEmessages are now ignored entirely. Previously, a delete by the ML or a root admin could silently wipe the same session from every other client that had a copy, with no consent prompt — and stale clients could still send these messages. - Why: Auto-propagating deletes caused sessions to disappear from other admins' history without warning. Remote deletion remains available via the LM Browse Raid Sessions window, which uses a separate, explicitly user-initiated
SESSION_REMOTE_DELETEflow. - Where:
DeleteLootSessionno longer calls any broadcast (thebroadcastparameter is preserved for caller compatibility but ignored).BroadcastSessionDeleteis now a permanent no-op. The inboundSESSION_DELETEhandler in the sync command dispatcher is now a no-op.
Session Attendance — Cross-Raid Pollution (Critical)
- Fixed: When a non‑Master‑Looter player was watching/monitoring an active loot session while simultaneously being in another raid group, their client was silently snapshotting their own raid roster into the watched session's attendance list. This polluted
session.attendancewith players who were never in the actual loot raid — including PUGs and non‑guild members from the unrelated raid. If the watcher was also a root admin, their poisoned copy was re‑broadcast throughSESSION_REQresponses (BroadcastSessionSnapshot(..., "RESP", ...)), spreading the bad data into other admins' session browsers. - Root cause:
UpdateSessionAttendanceandCreateSessionFromUidblindly readGetRaidRosterInfo/GetNumGroupMembersregardless of whether the local player was the session's master looter. They were invoked fromGroupRosterUpdate(every roster event),RecordLootHistoryEntry(every synced award), and on creation of placeholder sessions for remote UIDs. - Fix: Added
LootMaster:CanRecordLocalRosterIntoSession(session)— returns true only when the local player is currently the Master Looter and the session has no owner yet or itsmasterLooter/ownermatches the local player.UpdateSessionAttendancenow bails out early when this check fails, so only the legitimate ML ever writes their raid roster into a session.CreateSessionFromUidno longer callsUpdateSessionAttendanceat all — placeholder sessions for remote UIDs are filled exclusively viaSESSDATAsnapshots from the real owner. - Note: Per‑player attendance entries added from synced award events (
RecordLootHistoryEntryadding the awarded player and distributor by name) are unchanged — those names come from the sync payload itself, not the local roster, so they remain accurate. - Cleanup: Existing sessions that already contain polluted entries are not auto‑cleaned (the addon can't tell which entries are bogus). Root admins can re‑pull a clean copy from the actual master looter via the session browser, or delete and re‑sync the affected session.
Auto EP — Duplicate Awards When ML ≠ Raid Leader
- Fixed: Auto EP on boss kill was being awarded by both the Master Looter AND the Raid Leader if they were different people with the addon, resulting in double EP for the entire raid.
- Root Cause: The guard was
if not isML and not isRL then return end, allowing both roles to pass through independently. - Fix: Only the Master Looter can trigger auto EP awards. If you're not the ML, the function returns immediately — no RL fallback, no exceptions.
Loot Recording — Random Player Loot Polluting Session History
- Fixed: Items that raid members picked up themselves (e.g., Kael'thas weapons from personal/group loot, disenchanted gear) were being recorded in the ML's session history.
- Root Cause:
OnChatMsgLootin core recorded any Rare+ item looted by anyone other than the ML, including items players picked up via below-threshold loot or group loot rolls. - Fix:
OnChatMsgLootnow only records items the ML loots for themselves. Items distributed to other players are exclusively recorded by the ML module's own handler.
Loot Recording — Duplicate Entries on ML Self-Loot Then Distribute
- Fixed: When the ML looted an item (recorded as self-loot placeholder) and later distributed that same item to a player, both entries remained — creating a duplicate.
- Root Cause: The two recording paths used different
awardIdformats ("auto:..."vs ML module's format), so the existing deduplication never matched them. - Fix: When a proper distribution is recorded (non-"auto:" awardId), the system now scans for and removes any earlier
"auto:"placeholder entry for the same item. The distribution record supersedes the self-loot placeholder.
Loot Attendance Window — Polluted With Zero-Session Guild Members
- Fixed: Opening the Attendance view with the default filters (All Weeks + All Zones) flooded the table with rows for every guild member who had never raided — each shown at
Sessions = 0,Attendance % = 0%. This made it nearly impossible to scan the list for who was actually in past raids. - Root Cause:
BuildAttendanceRowspre-seededmemberswith every entry fromGetGuildRosterInfo, and the row-emit filter only excluded zero-session rows when a week or zone filter was active. With no filter, the entire guild was rendered. - Fix: Removed the unconditional roster pre-seed. Members are now added only when they appear in a session's
attendance, so the table shows exactly who attended. Guild roster + the persistentGuildCacheare still consulted, but only to back-fill class info (for class-colored names) when the session record itself didn't store it. Zero-session rows are now always excluded as a defensive final filter. - Also: Removed a dead-code lookup (
local agg = members[name]immediately overwritten byagg = members[shortName]) in the legacypairs(s.attendance)fallback path. - Also: When a character attended as an alt (linked to a main in the alt-management cache), the Player column now renders as
Alt (Main)— for examplePenbe (Nabsui)— so it's immediately obvious the player joined on an alt.
Persistent Guild Cache
- New: The addon now snapshots the full guild roster (names, ranks, public notes, officer notes, class, level, GUID, rank permissions) to disk under
db.global.guildCacheand restores it on next login. Cache is keyed by guild name + cache schema version, so an unrelated guild's data won't be served.RefreshGuildCachenow persists after every successful rebuild, andlastUpdateis now a real epoch timestamp (time()) instead of session-relativeGetTime()seconds. - Globals:
_G.LM_GuildCache,_G.LM_GetGuildMember(name), and_G.LM_IsGuildMember(name)are exposed so other addons can read guild data without re-scraping the roster. - Privacy:
guildCacheis intentionally excluded from theGUILD_DATA_KEYSallowlist used by config sharing, so officer notes and other cached fields are never broadcast when you share settings with another player.
Config Sharing — Alt Management Settings Not Synced
- Fixed: When sharing addon settings with other officers, alt management configuration (enabled flag, EP percentage, alt→main links) was not included in the payload, causing alt lists to be lost on the receiving end.
- Fix: Removed
altManagementfromCONFIG_SHARE_EXCLUDEDin the ML module. Alt settings are now shared alongside all other configuration.

