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.5.0.zip

  • R
  • Mar 17, 2026
  • 177.44 KB
  • 133
  • 2.5.5
  • Classic TBC

File Name

cepgp_lootmaster_ml-8.5.0.zip

Supported Versions

  • 2.5.5

Changes

8.5.0 — 2026-03-17

UI Modernization

  • Modern Session Bar: Redesigned mini session bar with dark theme matching the modern loot frame — flat buttons with hover effects, blue accent border, styled dropdown, clean layout
  • Simplified Click Actions: Removed Left-Click and Right-Click corpse loot hooks; only ALT+Left-Click and ALT+Right-Click are available now
  • INIT Status Fix: Changed player INIT status from misleading "Offline or lootmaster not installed?" (red) to "Waiting for response..." (orange)
  • Settings Cleanup: Removed unused filterCEPGPLootMasterMessages option; moved Use Modern Loot Window toggle to bottom of Loot Settings

Modern Loot Window

A completely custom dark-themed loot window that replaces Blizzard's default loot frame. Enabled by default; toggle with "Use Modern Loot Style" in settings (no /reload needed — theme applies each time the frame opens).

Visual Design

  • Dark theme: ChatFrameBackground base with UI-Tooltip-Border edge — dark background (rgba 0.06, 0.07, 0.11, 0.96) with blue accent border (rgba 0.25, 0.50, 0.85)
  • Loot rows: Each row has a subtle dark background with thin border, brightening to blue on hover
  • Bottom buttons: "Loot All" in blue, "Close" in red, both with hover brighten effects
  • ML row buttons: "Give" (blue) and "Ann" (green) — only visible on items at or above the ML quality threshold

Loot Row Features

  • 28×28 item icon + rarity-colored item name (Poor→gray, Common→white, Uncommon→green, Rare→blue, Epic→purple, Legendary→orange)
  • Sub-text line: item level + binding type (e.g., iLvl 70 | BoP)
  • Hover: Highlights row with bright blue border + shows item tooltip via GameTooltip:SetHyperlink()
  • Shift-click: Links item to chat
  • Left/right-click: Loots the item (ML items trigger ML confirmation)

Master Looter Integration

  • "Ann" (Announce) button: Registers the item in the LootMaster session and announces it to the raid for distribution — requires an active loot session
  • "Give" button → Candidate dropdown: Shows all eligible raid members grouped by raid group with class-colored names. Selecting a player calls GiveMasterLoot() to assign the item
  • "Loot All" button: Iterates all slots — normal items are looted directly, ML items above threshold are assigned to self via GiveMasterLoot()

Layout & Interaction

  • Dimensions: 300px wide (resizable up to 600px), auto-sizes height based on item count (up to 5 visible rows before scrolling)
  • Scrolling: UIPanelScrollFrameTemplate with auto-show/hide scrollbar — adjusts content width when scrollbar appears
  • Resizing: Bottom-right drag grip; resize persists until next loot open (_userResized flag); SetResizeBounds() with legacy fallback
  • Dragging: Movable, clamped to screen. First open positions near cursor; subsequent opens keep the player's last position
  • Escape to close: Registered in UISpecialFrames; also closes via X button (top-right, UIPanelCloseButton) or bottom "Close" button
  • OnHide cleanup: Resets lootOpen, closes loot via CloseLoot() (with recursion guard), or cleans up mock state

Event Handling

  • LOOT_OPENED: Hides default LootFrame, creates/opens the modern frame, pre-caches item data. Passes through auto-loot (autoLoot == "1")
  • LOOT_CLOSED: Hides the modern frame, unregisters cache listener
  • LOOT_SLOT_CLEARED: Refreshes rows after 0.05s delay
  • GET_ITEM_INFO_RECEIVED: Refreshes rows when item data arrives from the server (handles late-loading item info)

Mock / Test Mode

  • /lm testloot — Opens mock loot frame with 7 sample items (Finkle's Lava Dredger, Cenarion Belt, Fiery Core, Lava Core ×2, Bindings of the Windseeker, Blood of the Mountain ×3, Scale of Onyxia)
  • /lm testloot ml — Opens in ML mode with fake candidates (player + 8 NPCs across raid groups) and functional Give/Announce buttons
  • All WoW loot APIs are overridden during mock (GetNumLootItems, GetLootSlotInfo, GetLootSlotLink, GetLootMethod, GetMasterLootCandidate, GetNumGroupMembers, GetRaidRosterInfo) and restored on close
  • Auto-caches uncached items via GET_ITEM_INFO_RECEIVED listener — no need to run the command twice

Loot Frame Fixes

  • Nil Guard in ApplyTheme(): frame.title, frame.lootAllBtn, and frame.closeBotBtn are now nil-checked before access in ApplyTheme(), preventing crashes when the frame exists but isn't fully constructed yet
  • SetResizeBounds Compatibility: Replaced deprecated SetMinResize/SetMaxResize with SetResizeBounds (with fallback for older clients)
  • Mock Item Cache: /lm testloot no longer requires running the command twice — items that aren't cached yet are pre-requested and the frame auto-refreshes as they arrive via GET_ITEM_INFO_RECEIVED

Karazhan Auto-EP Fixes

  • Opera Event Double EP Fix: The Romulo & Julianne Opera variant fires two UNIT_DIED events (one for each boss), both resolving to "Opera Event" — causing EP to be awarded twice. Added 60-second deduplication on configBossName so the second death is skipped
  • Attumen Double EP Fix: "Midnight" (mount) and "Attumen the Huntsman" (rider) both die in the same encounter. "Midnight" is now aliased to "Attumen the Huntsman" and the same 60-second dedup prevents double award
  • Chess Event EP Fix: The Chess Event has no boss unit that dies with a recognizable name — UNIT_DIED with "Chess Event" never fires, so EP was never awarded. Now detects Chess Event victory by monitoring for the death of the enemy king chess piece via NPC ID: King Llane Piece (21752, killed by Horde) or Warchief Blackhand Piece (21684, killed by Alliance). Triggers both session encounter tracking and Auto-EP

New Command: Dry Run Simulation

  • /lm dryrun (or /lm dr): Automated loot frame test that exercises the entire Modern Loot Frame in mock ML mode
    • Phase 1 — Item Cache: Builds mock data, reports cached vs placeholder items
    • Phase 2 — Frame Creation: Validates all UI elements exist (title, buttons, scroll frame, resize grip)
    • Phase 3 — Theme Application: Applies modern dark theme, checks for errors
    • Phase 4 — Show & Row Rendering: Opens frame, renders loot rows, verifies row elements (icon, name, sub-text, ML buttons)
    • Phase 5 — Button Simulation: Mock-clicks Announce, Give dropdown, and Loot All buttons
    • Phase 6 — ML Candidate System: Verifies mock candidates, loot method, and roster data
    • Phase 7 — Post-Loot Refresh: Re-renders after simulated looting
    • Reports PASS/FAIL/WARN for every check; leaves frame open for visual inspection

Session & Loot History Fixes

  • [Test] Label Fix: Sessions started outside a raid instance (e.g., in Eastern Kingdoms before entering Karazhan) initially show the [Test] tag. When the ML enters a raid/party instance, OnZoneChangedNewInstance now strips all open-world segments from the session's instances[] array before adding the new raid segment. This changes the session name from "Eastern Kingdoms, Karazhan" to just "Karazhan", and IsInstanceSession() returns true — removing the [Test] tag. Sessions that never enter an instance keep the tag
  • Custom Loot Frame Recording Fix: Items distributed via the modern loot frame's "Give to..." dropdown were not being recorded in session history. The GiveMasterLoot() calls bypassed RecordLootHistoryEntry and LOOTED broadcast entirely. Added GiveMasterLootAndRecord() wrapper that captures the item link, gives loot, broadcasts LOOTED to the raid, and records the entry in the active session