File Details
v2.3.4
- R
- Mar 9, 2026
- 107.32 KB
- 8
- 12.0.1+6
- Retail + 3
File Name
DeathRollEnhancer-v2.3.4.zip
Supported Versions
- 12.0.1
- 12.0.0
- 5.5.3
- 4.4.2
- 3.4.3
- 2.5.5
- 1.15.8
# DeathRoll Enhancer - Changelog
## Version 2.3.3 - Anti-Cheat and Stats Update
### New Features
- **Wrong-roll range detection** - Active games now validate strict roll ranges and flag invalid opponent rolls as potential cheats
- **Suspicious roll tracking** - Added persistent suspicious-roll tracking with `/dr suspicious` and `/dr cheaters` summaries
- **Rename merge command** - Added `/dr merge <oldName> <newName>` to merge history and suspicious data after player renames
- **New fun stat** - Added **Most Likely to Cheat** based on tracked invalid roll-range flags
### Quality of Life
- **Track Gold cleanup** - Removed the old Track Gold toggle to keep gold tracking behavior consistent
- **Statistics coverage improvements** - Wired new fun stats into both Statistics and Settings tabs
---
## Version 2.3.2 - SKEM Edition
### UI Improvements
- **Main tabs stretched to fit the window** - DeathRoll, Statistics, History, and Settings now use the available width more evenly
- **New in-window Settings tab** - Added a full settings surface directly in the addon window for common gameplay, challenge, interface, data, and fun stats controls
- **Embedded roll history panel** - The DeathRoll tab now keeps the full roll log inside the main window with mouse-wheel scrolling and no visible scrollbar instead of truncating after three entries
- **History tab scrollbar refresh fix** - Switching to players with longer histories now triggers the scrollbar immediately without requiring a window resize
- **Scale-aware layout refresh** - Changing UI scale now forces a full relayout so tabs, text, and content boxes stay aligned
- **DeathRoll layout cleanup** - Roll and wager controls were compacted, the history panel sizing was tightened, and the default window size is now 400x311
### Quality of Life
- **Use My Gold button** - Replaced the old Auto-Roll from Money toggle with a button beside the roll input for explicit one-click use
- **Trade-based wager tracking** - Added a saved setting to record wagers from completed gold trades instead of manual wager entry
- **Manual wager auto-hide in trade mode** - The Gold/Silver/Copper inputs are hidden on the DeathRoll tab when trade-based wager tracking is enabled
- **Perspective-based roll odds** - Roll history now describes the immediate odds from your perspective, showing your chance of winning after your roll and your chance of losing after your opponent's roll
- **Roll history tab-leak fix** - Fixed the embedded roll history text appearing on non-DeathRoll tabs after tab switches
- **Edition label refresh** - Updated visible version labeling to SKEM Edition
### Commands And Data Integrity
- **New slash commands** - `/dr accept`, `/dr decline`, and `/dr size` now support pending challenges and window diagnostics
- **Timestamped game records** - New saved game records now include numeric timestamps, and recent-record lookups fall back cleanly for older entries
---
## Version 2.3.1 - TOC Compatibility Update
### Compatibility Fixes
- **Added Mists of Pandaria Classic support** - Added interface version 50503 to support MoP Classic (5.5.3)
- **Removed outdated retail interface** - Removed interface 110207 (old retail version)
- **Changed Dependencies to OptionalDeps** - Fixed "out of date" cascade failures from Ace3/LibSharedMedia/LibDBIcon
- Prevents addon from being marked outdated when dependency libraries haven't updated their TOCs
- Libraries still load in correct order and function identically
- Common pattern used by major addons like DBM and WeakAuras
### Supported WoW Versions
- **120001, 120000** - Retail (The War Within 11.0.7 / Midnight)
- **11508** - Classic Era (1.15.8)
- **20505** - TBC Classic Anniversary (2.5.5)
- **30403** - Wrath Classic (3.4.3)
- **40402** - Cataclysm Classic (4.4.2)
- **50503** - Mists of Pandaria Classic (5.5.3)
---
## Version 2.3.0 - Challenge System Update
### New Features
- **Whisper-Based Challenge System** - Seamless challenge notifications between addon users
- Automatic whisper sent when you start a challenge (toggleable in settings)
- Popup dialog appears when another addon user challenges you
- Shows challenger name, roll value, and wager amount in clean WoW-style popup
- Accept button opens UI and pre-fills challenge values
- Decline button politely declines the challenge
- 30-second auto-timeout on challenge popups
- Works alongside manual challenges for players without the addon
### Challenge System Settings
- **Enable Challenge Popups** - Toggle receiving challenge popups (default: ON)
- **Send Challenge Whispers** - Toggle auto-whisper when you challenge (default: ON)
- **Minimum Roll Threshold** - Set minimum roll value to show popups (default: 100, range: 2-10,000)
- Prevents spam from low-value test rolls
- Configurable to match your preferred gameplay style
### UI Improvements
- **Fun Statistics Organization** - Fun Stats now organized in sections
- "Player Relationships" section (Most Played With, Wins/Losses, Nemesis, Victim)
- "Gold & Money" section (Gold Mine, Money Sink, Biggest Win/Loss, High Roller, Cheapskate)
- "Luck & Streaks" section (Lucky/Unlucky Players, Daredevil, Conservative)
- Matches the exact order and grouping from settings tab
- Cleaner, more intuitive stats display
### Bug Fixes
- **Starting Roll Field Display** - Fixed starting roll showing 0 for all values in edit game records
- Unified field name to `initialRoll` across all save/edit/display operations
- Historical data compatibility maintained
---
## Version 2.2.1 - Statistics Fix Hotfix
### Statistics Bug Fixes
- **Fun Statistics Win Rate Display** - Fixed incorrect 0% and 100% win rate displays
- Changed initialization for nemesis/luckyPlayer from 0 to -1 (allows 0% to be selected)
- Changed initialization for victim/unluckyPlayer from 1 to 2 (allows 100% to be selected)
- Now correctly displays all win rate percentages including edge cases (0% and 100%)
- **Streak Calculation Bug** - Fixed incorrect current streak values
- Added `RecalculateStreaks()` function to recalculate streaks from complete game history
- Integrated streak recalculation into `/dr fixgold` command
- Streaks now replay entire game history in chronological order for accuracy
- Fixes cases where streak showed incorrect values (e.g., showing loss streak when recent games were wins)
- **Starting Roll Field Inconsistency** - Fixed initialRoll not displaying in edit game records
- Unified field name to `initialRoll` across all save/edit/display operations
- Fixed Fun Stats daredevil/conservative calculations to use correct field name
- Starting rolls now display correctly in edit game records dialog
### Improvements
- **Enhanced /dr fixgold Command** - Now recalculates both gold totals AND streaks
- Use this command to fix any statistics inconsistencies
- Automatically replays entire game history to ensure accuracy
---
## Version 2.2.0 - TBC Compatibility & Bug Fix Edition
### TBC Compatibility
- **Full TBC Classic Support** - Added C_Timer shim for TBC/Classic compatibility
- Implements `C_Timer.After()` fallback using frame OnUpdate pattern
- Zero performance impact on retail (uses native C_Timer when available)
- Works seamlessly across all WoW versions (Classic Era, TBC, Wrath, Cata, Retail)
### Critical Bug Fixes
- **Race Condition in Roll Detection** - Fixed duplicate roll processing
- Implemented roll deduplication system with unique roll IDs
- Added 5-second expiry cache for processed rolls
- Prevents same roll from being handled multiple times by different event handlers
- Fixed pattern matching to use anchored regex (prevents partial matches)
- **Game State Validation** - Fixed crashes from invalid game states
- Added comprehensive validation in `HandleGameRoll()`
- Validates game state existence and required fields before processing
- Added player name validation and parameter checking
- Prevents nil reference errors during game execution
- **Concurrent Game Prevention** - Fixed ability to start multiple games
- Added active game check at start of `StartDeathRoll()`
- Returns error message if game already in progress
- Prevents overlapping game state corruption
### UI & Safety Fixes
- **UI Safety Guards** - Comprehensive nil checks throughout UI code
- Added validation in `UpdateChallengeButtonText()` before UI access
- Added `pcall()` wrapper in `AddRollToHistory()` for safe text updates
- Fixed potential crashes when UI closed during active operations
- All UI components validated before access
- **Timer Race Condition** - Fixed roll detection timeout
- Changed timeout from 3.0s to 3.2s to account for 0.1s roll delay
- Prevents false positive timeout detections
- **UI Scale Desync** - Fixed double-scaling and flickering
- Scale now applied correctly before AceGUI restoration
- Added comparison check to prevent redundant scale operations
- Eliminated scale flickering on window open
- **Target Change During Game** - Fixed UI confusion
- Added active game check in `PLAYER_TARGET_CHANGED` handler
- Prevents button updates during active games
### Database & Validation Fixes
- **Database Counter Corruption** - Fixed negative counter values
- Changed initialization pattern from `(value or 1)` to `(value or 0)`
- Applied `math.max(0, ...)` before subtraction operations
- Prevents negative win/loss/gold counters in all scenarios
- **Date Parsing Validation** - Fixed crashes from malformed dates
- Added complete date validation with `parseDateToNumber()`
- Validates year (2000-2100), month (1-12), day (1-31), hour/minute ranges
- Strict regex matching for date format (YYYY-MM-DD HH:MM)
- Prevents crashes from corrupted date strings
- **Input Sanitization** - Fixed database corruption from invalid input
- Added validation for gold (0-999,999), silver (0-99), copper (0-99)
- Added validation for starting roll (0-999,999)
- Prevents invalid currency values in edit dialog
- **Player Name Validation** - Improved validation logic
- Added check for pure whitespace/symbol names
- Prevents names like "---" or " " from passing validation
- Enforces reasonable character requirements
### Memory & Performance Fixes
- **Memory Leak Prevention** - Fixed recent rolls memory leak
- Added `ClearRecentRollsForPlayer()` function
- Automatic cleanup when games start/end
- Prevents unbounded growth of recent rolls array
- **Infinite Loop Protection** - Added iteration limits
- Bounds checking in `StoreRecentRoll()` with max iteration counter
- Safety fallback if `maxRecentRolls` becomes negative
- Debug warnings if iteration limits reached
### Cleanup & Error Handling
- **Proper State Cleanup** - Enhanced `OnDisable()` cleanup
- Clears active game state on logout/disable
- Cleans up spicy duel state
- Clears UI references to prevent memory leaks
- **Enhanced Debug Logging** - Improved error visibility
- Added debug messages for all error conditions
- More descriptive error messages throughout
- Better troubleshooting information
### Files Modified
- **Core.lua** - 13 major changes (TBC compat, validation, safety)
- **UI.lua** - 4 major changes (timer fix, validation, scale management)
- **Database.lua** - 3 major changes (counter fixes, date validation)
---
## Version 2.1.6 - Bintes Edition
### Bug Fixes
- [Add your changes here]
### New Features
- [Add your changes here]
---
## Version 2.1.5 - Gold Tracking Fix Edition
### Bug Fixes
- **Critical Gold Tracking Synchronization Bug** - Fixed desynchronization between individual player gold totals and global gold tracking
- `DeleteGameRecord()` now properly updates global `goldTracking.totalWon` and `goldTracking.totalLost`
- `EditGameRecord()` now properly synchronizes global tracking for both result changes and gold amount modifications
- Prevents data corruption when deleting or editing games through the settings menu
- **Data Recovery Function** - Added `RecalculateGoldTracking()` to repair existing corrupted data
- Recalculates global totals from individual player data
- Accessible via new `/dr fixgold` command
- One-time fix for users affected by the synchronization bug
- **Negative Net Profit Display** - Fixed `FormatGold()` function to properly display negative amounts
- Net Profit now correctly shows negative values (e.g., "-15g 50s") when you have a net loss
- Applies to all gold displays throughout the addon (main stats, minimap tooltip, player history)
- **Average Wager Decimal Fix** - Rounded down average wager calculations to remove decimal places
- High Roller and Cheapskate stats now show clean copper amounts without decimals
- Changed from "1g 66s 55.5555555555c avg wager" to "1g 66s 55c avg wager"
### New Features
- **Gold Tracking Repair Command** - `/dr fixgold` command to fix corrupted global gold totals
- Automatically recalculates `totalWon` and `totalLost` from individual player records
- Provides feedback showing old vs new corrected values
- Essential for users who experienced the synchronization bug
---
## Version 2.1.4 - Bintes EDITion
### New Features
- **Edit Game Records** - Complete game record editing functionality
- Modify win/loss results for any previous game
- Edit gold amounts (separate gold/silver/copper inputs)
- Change starting roll values for recorded games
- Access via `/dr edit` command or settings menu
- **Delete Game Records** - Remove unwanted game entries
- Safe deletion with confirmation dialog
- Automatic statistics recalculation after deletion
- Maintains data integrity by updating win/loss counters
- **Enhanced Game Management Interface**
- Professional AceGUI dialog with dropdown game selection
- Real-time dropdown refresh after deletions
- Improved date sorting (newest games first)
- Clear game identification with player, result, gold, and date
### Technical Improvements
- **WoW-Compatible Date Sorting** - Fixed `os.time()` compatibility issue with WoW's restricted Lua environment
- **Database Functions** - Added `GetRecentGamesForEditing()`, `EditGameRecord()`, and `DeleteGameRecord()`
- **UI State Management** - Proper dialog cleanup and refresh after record modifications
- **Statistics Integrity** - Automatic counter updates when records are modified or deleted
### User Experience
- **Slash Command** - `/dr edit` for quick access to game editing
- **Settings Integration** - "Edit Game Records" button in Data Management section
- **Debug Output** - Optional debug information showing game order and timestamps
- **Error Handling** - Comprehensive validation and user-friendly error messages
---
## Version 2.1.3 - Database Fix Edition
### Critical Fix
- **Added missing Database.lua file** - This critical file was accidentally excluded from the addon distribution
- Contains essential database management functions required for saving game history and statistics
- Previous downloads from CurseForge were missing this file, causing silent failures in data persistence
- All database functionality now works correctly (game history, statistics, gold tracking, etc.)
- Users who experienced issues with data not saving should now have full functionality
### Technical Details
- Database.lua contains helper functions for player history management, statistics calculation, and data export
- The file was incorrectly excluded due to confusion with user data files
- SavedVariables system now functions properly for persistent data storage across game sessions
---
## Version 2.1.2 - Bintes Edition
### Bug Fixes
- Fixed post-game challenge button displaying opponent's last roll after game completion
- Challenge button now properly returns to normal state when games end
- Improved game state cleanup to prevent UI confusion after duels
### Technical Improvements
- Fixed addon loading order issues that caused `AddGameToHistory` method not found errors
- Updated all module files to use proper Ace3 addon registration instead of global namespace access
- Enhanced game end cleanup to clear opponent roll data from recent rolls array
---
## Version 2.1.1 - Bintes Edition
### Bug Fixes
- Fixed challenge acceptance display to show actual roll value and original range (e.g., "PlayerName rolled 56 from 1000 - Accept challenge!" instead of "PlayerName challenges you to DeathRoll 1-56!")
- Roll input field now correctly populated with the challenger's actual roll value (56) rather than the range maximum (1000)
### UI Improvements
- Updated status bar to display "V2.1.1 - Bintes Edition"
- Enhanced challenge notification clarity by showing both rolled value and original maximum
---
## Version 2.0.0 - Complete Rewrite
### Major Changes
- Complete rewrite using Ace3 libraries for stability and performance
- Professional AceGUI interface with modern styling
- Advanced AceConfig options panel with font selection
- Comprehensive data management and export tools
- Enhanced statistics tracking and display
- LibSharedMedia integration for consistent theming
### Features
- Intuitive AceGUI-based interface for starting games
- Detailed win/loss history tracking per player
- Advanced gold tracking with streaks and statistics
- Smart minimap integration with LibDBIcon
- Automatic emote reactions on wins/losses
- Cross-version compatibility (Classic Era, TBC, Wrath, Cata, Retail)
- Professional options panel with Blizzard integration
- Data export/import functionality
### Commands
- `/dr` or `/deathroll` - Open the main DeathRoll window
- `/dr config` - Open configuration options
- `/drh [player]` - View history with specific player