File Details
cepgp_lootmaster_ml-8.3.6.zip
- R
- Mar 5, 2026
- 159.30 KB
- 23
- 2.5.5
- Classic TBC
File Name
cepgp_lootmaster_ml-8.3.6.zip
Supported Versions
- 2.5.5
Changes
Permission System Redesign
- Guild Master = Root Admin:
IsRootAdmin()now checks for Guild Master rank (rank index 0) via GuildCache, in addition to the hardcoded admin character list. The Guild Master is automatically a permanent admin across all permission checks. - Session Delete Restricted: Session deletion now requires permanent admin status (
IsPermanentAdmin/IsRootAdmin), not just session admin. This prevents temp admins from deleting session history. - Options Panel Open to All: Removed admin gating from the "Config Sharing" group in the ML options panel. All guild members with the addon can now view and use configuration options.
- Admin Tab Remains Gated: The "LootMaster Admin" tab and "Clear All GP Overrides" action remain hidden for non-admins.
Chat Audit System
- Centralized Chat Prefix: All outgoing chat messages now use a single
CHAT_PREFIXconstant ("[LootMaster] "), eliminating 4 separate hardcoded prefix strings. Prevents accidental double-prefixing and ensures the chat audit listener can reliably detect LootMaster messages. - [LootMaster] Prefix on Session Summary:
PostSessionSummarynow prepends the prefix to every line sent to GUILD or RAID chat viaSendLinesWithDelay, matching the existing prefix standard used bySendToChannel,AnnounceEPGP, andAnnounceLoot. - Guild/Officer Chat Listener: New
InitChatAuditListener()registersCHAT_MSG_GUILDandCHAT_MSG_OFFICERevents to monitor for[LootMaster]prefixed messages from other guild members. - Automatic Audit Logging: Messages from other players starting with
[LootMaster]are parsed and stored in the admin audit log asCHAT_AUDITentries (actor = sender, target = channel, details = action text). - Chat Audit Filter: New "Chat Audit" toggle in the Transactions tab filter checkboxes to include/exclude
CHAT_AUDITentries from the audit log display. - CHAT_AUDIT Color: Light steel blue (
|cff88aaff) color code for chat audit entries in the audit log.
Audit & Echo Message Spam Fix
- AUDIT prints gated to Admin/ML only:
LogAdminAction()now only prints[AUDIT]console messages for players who are LootMaster admins or the current Master Looter. Regular guild members will never see audit print spam. - Chat audit listener gated to Admin/ML only:
InitChatAuditListenerevent handler checksIsPlayerLootMasterAdmin()orIsPlayerMasterLooter()before processing — regular players skip all chat audit parsing entirely.
8.3.6 — 2026-03-05
Multi-Instance Session Tracking
- Instance Segments: Sessions now track multiple raid zones visited within a single session
- New
session.instances[]array records each zone transition with enter/leave times, instance type, difficulty, max players, and per-zone attendance snapshots session.instanceNameis auto-computed as a comma-separated list of unique zone names (e.g., "Gruul's Lair, Magtheridon's Lair")- Six new core functions:
CreateInstanceSegment,GetCurrentInstanceSegment,GetCurrentSessionZone,GetSessionInstanceNames,UpdateInstanceAttendance,OnZoneChangedNewInstance(full rewrite)
- New
- Zone Tagging: All loot items and boss encounters are now tagged with the zone they occurred in
AddLootHistoryEntrysetsentry.zonefrom the current instance segmentTrackBossEncountersetsencounter.zonefrom the current instance segment
- Per-Instance Attendance: Each instance segment snapshots the raid roster at zone entry
UpdateSessionAttendancealso updates the current instance segment's attendanceAddAttendanceMemberderivesmaxPlayerscap from the current instance segment (backward-compatible fallback to session-level field)
IsInstanceSessionUpdated: Now checks theinstances[]array first (new model), falls back to legacysession.instanceTypefor old sessions
Session Stability — Guaranteed EndTime
- EndTime Never Nil:
EndLootSessionalways setsendTime = time()and closes all open instance segments - Normalization Safeguards (in
EnsureLootHistory):- Sessions with
status == "ENDED"but noendTimeget it set fromlastUpdated,startTime, ortime() - Active sessions older than 24 hours are auto-ended
- All sessions get
instances = {}initialized if missing
- Sessions with
- Multi-Active Cleanup: Force-ending duplicate active sessions now sets
endTimeproperly - Active/Ended Display Fix: Export dropdown (options) and session history (player UI) now check both
session.endTimeandsession.status == "ENDED"to determine active state - Stale
activeSessionIdFix:GetActiveLootSessionvalidates the pointed-to session isn't already ended before returning it
Session Broadcasting Removed (ML-Only Sessions)
- Broadcasts Disabled:
BroadcastSessionStart,BroadcastSessionUpdate,BroadcastSessionEnd,BroadcastSessionDelete, andSendSessionSyncare now no-ops - Non-ML Skip:
RecordLootHistoryEntryno longer creates sessions from UIDs for non-ML/non-admin players - Sync Button Removed: Removed the sync/refresh button from the session history UI
btnSyncSessionscreation, layout anchoring, visibility toggle, andRequestSessionSync()on-show call all removedbtnContinueSessionnow anchors directly tobtnStartSession- Startup
ScheduleTimer("RequestSessionSync", 5)removed
Export/Import — Version 2
- Export Version Bumped to 2: Single-session and multi-session exports now use
exportVersion = 2 - Instances in Export:
session.instancesarray included in JSON and encoded exports - Zone on Items: Exported items include the
zonefield - Zone on Boss Encounters: Exported boss encounters include the
zonefield - CSV Updated: Added
Zonecolumn to both LOOT and BOSS ENCOUNTERS CSV sections - Import Updated:
CreateSessionFromImportnow imports theinstancesarray - NormalizeImportedItem: Now preserves the
zonefield on imported items - MergeSessionData: Merges
instancesarray (replaces if existing is empty) - Legacy Fields Removed from Export:
instanceType,difficultyName,maxPlayersno longer exported at session level (now per-instance)
Auto-EP Boss Reward Fixes
- ML Detection Fallback Fix:
SafeGetLootMethodfallback path now compares the detected ML name to the current player and returnspartyID = 0when it's you, instead ofnil(which causedAutoAwardBossEPto silently skip) - Robust ML Check:
AutoAwardBossEPnow usesself:IsPlayerMasterLooter()instead of the fragilemasterLooterPartyID == 0check autoAwardEnabledRespected:AutoAwardBossEPnow checkssettings.autoAwardEnabled == falseand skips if disabled (previously this default setting was never read)- Pre-Check Officer Note Permission: Before attempting the award,
AutoAwardBossEPcallsCanEditOfficerNote()and prints a clear actionable error: "Your guild rank does not have 'Edit Officer Note' permission. Ask your Guild Master to enable it." - Redundant Permission Checks Removed:
AddEP_SilentandAddGP_Silentno longer re-checkCanEditOfficerNote()per-player (the callerMassEP/BulkEPalready checks once upfront) - Debug Logging: All skip/fail paths in
AutoAwardBossEPnow log reasons viaself:Debug()
New Slash Command
/lm diagep(or/lm epdiag): Diagnostic command that checks every gate in the Auto-EP chain- In Raid status, Loot Method details, ML/RL status
raidEPSettingsexistence andautoAwardEnabledtoggle- Guild membership and officer note edit permission (with actionable fix message)
- Current zone boss EP configuration with per-boss auto/disabled status

