A comprehensive character cheat sheet addon for World of Warcraft that provides in-game access to character optimization data based on popular community guides.
- Character Optimization: Stat priorities, Best-in-Slot gear, and consumables for all classes and specs
- Content-Specific Builds: Different recommendations for Raid, Mythic+, Delves, and Open World content
- Visual Interface: Color-coded stat priorities with intuitive icons
- Import/Export System: Share custom builds with friends and guild members
- Localization: Full support for English and Spanish
- Customization: Edit and override default recommendations with personal preferences
- Download the latest release from CurseForge
- Extract to your
World of Warcraft/_retail_/Interface/AddOns/folder - Restart World of Warcraft
- Type
/mcsin-game to open the interface
git clone https://github.com/yourusername/MyCheatSheet.git
cd MyCheatSheet
# Copy to your WoW AddOns folder
cp -r . "C:/Program Files (x86)/World of Warcraft/_retail_/Interface/AddOns/MyCheatSheet/"- World of Warcraft (Retail)
- Text editor with Lua support (VS Code recommended)
- Basic knowledge of WoW API and Lua
MyCheatSheet/
├── MyCheatSheet.toc # TOC file with addon metadata
├── core.lua # Main addon logic and UI
├── data.lua # Character optimization data
├── config.lua # Configuration and settings
├── validdata.lua # Item/class validation logic
├── edit.lua # Editors for custom data
├── export.lua # Import/export functionality
├── bindings.lua # Keybinding definitions
├── embeds.xml # XML for embedded libraries
├── locale/ # Localization files
│ ├── enUS.lua # English localization
│ └── esES.lua # Spanish localization
├── Libs/ # Third-party libraries
│ ├── AceAddon-3.0/ # Ace3 addon framework
│ ├── AceGUI-3.0/ # GUI framework
│ ├── AceLocale-3.0/ # Localization framework
│ └── ... # Other Ace3 libraries
└── docs/ # Documentation
└── CurseForge_Guide.md # Publishing guide
core.lua: Main addon initialization, UI creation, and event handlingdata.lua: Contains all character optimization data organized by class/spec/contentconfig.lua: Addon configuration and saved variables managementedit.lua: Custom editors for stats priorities and item modificationsexport.lua: Data serialization and sharing functionality
The addon data is organized as follows:
MyCheatSheet.data = {
version = 7,
sheets = {
[classID] = {
[specID] = {
author = "Guide Author",
updated = "YYYY/MM/DD",
weapons = { bestInSlot = {...}, alternatives = {...} },
trinkets = { bestInSlot = {...}, alternatives = {...} },
consumables = { itemIDs = {...} },
tier = { bestInSlot = {...} },
statsByContent = {
["RAID"] = { statsPriority = {...} },
["MYTHIC_PLUS"] = { statsPriority = {...} },
-- ...
}
}
}
}
}- Open
data.lua - Find the appropriate
[classID][specID]section - Add or update the data following the existing structure
- Increment the version number if making significant changes
- Test in-game to ensure data displays correctly
- Create/edit files in
locale/folder - Follow the pattern in
enUS.lua - Add all required keys (see existing files for reference)
- Test with different locale settings
- Main UI logic is in
core.lua - Editor interfaces are in
edit.lua - Follow existing patterns for AceGUI usage
- Test responsiveness with different window sizes
- Use 4 spaces for indentation
- Follow existing naming conventions (camelCase for functions, UPPER_CASE for constants)
- Add type annotations where helpful:
---@param name type - Comment complex logic and data structures
- Always check for API availability before use
- Handle cases where data might not be loaded yet
- Use appropriate event handlers for game state changes
- Follow Blizzard's UI guidelines for addon behavior
- Addon loads without errors
- UI opens with
/mcscommand - All dropdowns populate correctly
- Data displays for multiple classes/specs
- Custom edits save and load properly
- Import/export functionality works
- Localization displays correctly
- Fresh Install: Test with no saved variables
- Data Migration: Test upgrading from previous versions
- Edge Cases: Test with invalid or missing data
- Performance: Test with large amounts of custom data
- Localization: Test in different language settings
- UI not showing: Check for Lua errors in
/console scriptErrors 1 - Data not loading: Verify SavedVariables and data structure
- Performance issues: Profile with DevTools or similar
-- Enable debug output
/script MyCheatSheet:EnableDebugging()
-- Check current data
/script DevTools_Dump(MyCheatSheet.data)
-- Validate specific item
/script print(MyCheatSheet.validData:ValidateItem(itemID, "weapons", classID))- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature-name - Make your changes following the code standards
- Test thoroughly (see Testing section)
- Update documentation if needed
- Submit a pull request with detailed description
When reporting bugs, please include:
- WoW version and build number
- Addon version
- Steps to reproduce
- Error messages (if any)
- Screenshots (if UI-related)
- Use semantic versioning:
MAJOR.MINOR.PATCH - Update version in
MyCheatSheet.toc - Update
data.luaversion if data structure changes - Tag releases in git:
git tag v1.0.0
- All tests pass
- Version numbers updated
- CHANGELOG.md updated
- Documentation updated
- Package created for CurseForge
- Release notes prepared
The addon's optimization data is primarily sourced from:
- Wowhead Class Guides
- Community theorycrafting resources
- Popular guide authors and content creators
- Data updates are typically done at the beginning of major patches
- Follow established guides and community consensus
- Always attribute data sources in commit messages
- Verify data accuracy before publishing
This project is licensed under [LICENSE TYPE] - see the LICENSE file for details.
- Ace3 Framework: For providing excellent addon development libraries
- Guide Authors: For creating the optimization content this addon displays
- Community: For feedback, testing, and contributions
- Blizzard Entertainment: For World of Warcraft and the addon API
- Issues: Report bugs on GitHub Issues
- CurseForge: Leave comments on the project page
- Discord: Join our development Discord (if applicable)
See CHANGELOG.md for detailed version history.