promotional bannermobile promotional banner

CEPGP LootMaster - ANADOLU [ML]

This is a helper addon to distribute from CEPGP Lootmaster - ANADOLU - Core addon while being Master Looter.

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_PREFIX constant ("[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: PostSessionSummary now prepends the prefix to every line sent to GUILD or RAID chat via SendLinesWithDelay, matching the existing prefix standard used by SendToChannel, AnnounceEPGP, and AnnounceLoot.
  • Guild/Officer Chat Listener: New InitChatAuditListener() registers CHAT_MSG_GUILD and CHAT_MSG_OFFICER events 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 as CHAT_AUDIT entries (actor = sender, target = channel, details = action text).
  • Chat Audit Filter: New "Chat Audit" toggle in the Transactions tab filter checkboxes to include/exclude CHAT_AUDIT entries 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: InitChatAuditListener event handler checks IsPlayerLootMasterAdmin() or IsPlayerMasterLooter() 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.instanceName is 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)
  • Zone Tagging: All loot items and boss encounters are now tagged with the zone they occurred in
    • AddLootHistoryEntry sets entry.zone from the current instance segment
    • TrackBossEncounter sets encounter.zone from the current instance segment
  • Per-Instance Attendance: Each instance segment snapshots the raid roster at zone entry
    • UpdateSessionAttendance also updates the current instance segment's attendance
    • AddAttendanceMember derives maxPlayers cap from the current instance segment (backward-compatible fallback to session-level field)
  • IsInstanceSession Updated: Now checks the instances[] array first (new model), falls back to legacy session.instanceType for old sessions

Session Stability — Guaranteed EndTime

  • EndTime Never Nil: EndLootSession always sets endTime = time() and closes all open instance segments
  • Normalization Safeguards (in EnsureLootHistory):
    • Sessions with status == "ENDED" but no endTime get it set from lastUpdated, startTime, or time()
    • Active sessions older than 24 hours are auto-ended
    • All sessions get instances = {} initialized if missing
  • Multi-Active Cleanup: Force-ending duplicate active sessions now sets endTime properly
  • Active/Ended Display Fix: Export dropdown (options) and session history (player UI) now check both session.endTime and session.status == "ENDED" to determine active state
  • Stale activeSessionId Fix: GetActiveLootSession validates the pointed-to session isn't already ended before returning it

Session Broadcasting Removed (ML-Only Sessions)

  • Broadcasts Disabled: BroadcastSessionStart, BroadcastSessionUpdate, BroadcastSessionEnd, BroadcastSessionDelete, and SendSessionSync are now no-ops
  • Non-ML Skip: RecordLootHistoryEntry no longer creates sessions from UIDs for non-ML/non-admin players
  • Sync Button Removed: Removed the sync/refresh button from the session history UI
    • btnSyncSessions creation, layout anchoring, visibility toggle, and RequestSessionSync() on-show call all removed
    • btnContinueSession now anchors directly to btnStartSession
    • 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.instances array included in JSON and encoded exports
  • Zone on Items: Exported items include the zone field
  • Zone on Boss Encounters: Exported boss encounters include the zone field
  • CSV Updated: Added Zone column to both LOOT and BOSS ENCOUNTERS CSV sections
  • Import Updated: CreateSessionFromImport now imports the instances array
  • NormalizeImportedItem: Now preserves the zone field on imported items
  • MergeSessionData: Merges instances array (replaces if existing is empty)
  • Legacy Fields Removed from Export: instanceType, difficultyName, maxPlayers no longer exported at session level (now per-instance)

Auto-EP Boss Reward Fixes

  • ML Detection Fallback Fix: SafeGetLootMethod fallback path now compares the detected ML name to the current player and returns partyID = 0 when it's you, instead of nil (which caused AutoAwardBossEP to silently skip)
  • Robust ML Check: AutoAwardBossEP now uses self:IsPlayerMasterLooter() instead of the fragile masterLooterPartyID == 0 check
  • autoAwardEnabled Respected: AutoAwardBossEP now checks settings.autoAwardEnabled == false and skips if disabled (previously this default setting was never read)
  • Pre-Check Officer Note Permission: Before attempting the award, AutoAwardBossEP calls CanEditOfficerNote() 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_Silent and AddGP_Silent no longer re-check CanEditOfficerNote() per-player (the caller MassEP/BulkEP already checks once upfront)
  • Debug Logging: All skip/fail paths in AutoAwardBossEP now log reasons via self: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
    • raidEPSettings existence and autoAwardEnabled toggle
    • Guild membership and officer note edit permission (with actionable fix message)
    • Current zone boss EP configuration with per-boss auto/disabled status