A Baldur's Gate 3 mod that lets you use real physical dice in combat - both d20 attack rolls and damage rolls! Roll your dice IRL, input the results, and watch your character use those exact values in-game!
- Download
- Features
- Requirements
- Installation
- Usage
- How It Works
- Development
- Contributing
- Support
- Credits
- License
- Version History
Latest Release: v1.2.1
Download PhysicalDiceMod.pak from the Releases page.
- Install BG3 Script Extender v29+ and MCM
- Download and install
PhysicalDiceMod.pakto your Mods folder - In-game: Press ESC β Mod Configuration Menu β Physical Dice Mod
- During combat:
- Attack Rolls: Controls tab β Set slider to your d20 roll β Click Apply
- Damage Rolls: Damage tab β Set slider to your damage total β Click Apply
- Make your attack - the game will use your exact rolls!
- π² Input your physical d20 roll results during combat
- π₯ NEW in v1.2.0: Input damage roll results (1-80 range)
- π― Exact roll matching using Min+Max boost system
- β‘ Instant boost application during your turn
- π One-shot mode: boost applies for one action, then removes itself
- π₯ Supports all party members
- πΎ Works correctly when loading saves mid-combat (fixed in v1.1.1)
- π‘οΈ Built-in anti-cheat: Game enforces natural damage caps per spell/weapon
- π±οΈ In-game UI with slider controls
- Controls tab: d20 rolls (1-20)
- Damage tab: Damage rolls (1-80) - NEW in v1.2.0
- π Apply buttons - Click to apply your roll values
- π Quick roll buttons
- Controls: 1, 10, 20 (critical fail, average, critical success)
- Damage: 10, 40, 80 (low, average, high) - NEW in v1.2.0
- π€ Auto-apply option for automatic attack roll application
- π’ On-screen notifications
- β¨οΈ Hotkey configuration available (customizable in MCM settings)
- π» Console command interface (works without MCM)
- βοΈ Graceful degradation if MCM not installed
- Baldur's Gate 3 (v4.69.95.620 or later)
- BG3 Script Extender v29+
- Mod Configuration Menu (MCM) - Highly Recommended
- Not strictly required - console commands work without MCM
- MCM provides the best user experience with in-game UI
- Install BG3 Script Extender v29+
- (Recommended) Install Mod Configuration Menu (MCM)
- Download from Nexus Mods or GitHub
- Provides in-game UI for the mod
- Download
PhysicalDiceMod.pak - Place the PAK file in:
%LocalAppData%\Larian Studios\Baldur's Gate 3\Mods\ - Enable the mod in BG3 Mod Manager or modsettings.lsx
- Launch the game with Script Extender
Setup:
- Press ESC in-game
- Select "Mod Configuration Menu"
- Find "Physical Dice Mod"
- (Optional) Customize hotkeys in Hotkeys section
During Combat:
- Your turn starts
- Roll your physical d20 (e.g., you roll a 15)
- Option A - Slider: Set slider to 15, then click the Apply button
- Option B - Quick Roll: Click the "15" button (or any 1-20 value buttons)
- Option C - Auto-Apply: Enable "Auto-Apply on Your Turn", set value before your turn
- Make your attack - the roll will be EXACTLY 15
MCM Features:
- Slider control (1-20) with Apply button
- Quick roll buttons for 1, 10, and 20 (click for instant application)
- Auto-apply option (automatically applies roll at turn start)
- On-screen notifications
- Hotkey configuration (can be customized in MCM)
If you don't have MCM installed:
- Your turn starts
- Roll your physical d20 (e.g., you roll a 15)
- Press F3 to open console
- Type:
!setroll 15 - Boost applies INSTANTLY
- Make your attack - the roll will be EXACTLY 15
Attack Rolls:
!setroll <1-20>- Set your physical d20 roll!r- Apply current MCM slider value!checkroll- Check current boost status!clearroll- Clear attack boost
Damage Rolls (NEW in v1.2.0):
!setdamage <1-80>- Set your physical damage roll!cleardamage- Clear damage boost
The mod uses BG3's MinimumRollResult and MaximumRollResult boost system to lock rolls to exact values:
Attack Rolls (d20):
MinimumRollResult(Attack,15) + MaximumRollResult(Attack,15) = Exactly 15Damage Rolls (NEW in v1.2.0):
MinimumRollResult(Damage,35) + MaximumRollResult(Damage,35) = Exactly 35β Confirmed Working:
- Attack rolls (d20)
- Damage rolls with built-in anti-cheat (game enforces spell/weapon max damage)
β Theoretically Supported (not extensively tested):
- Saving throws (boost applied, not confirmed)
- Skill checks (boost applied, not confirmed)
- Ability checks (boost applied, not confirmed)
π‘οΈ Anti-Cheat Discovery: Even if you set damage to 80, the game enforces natural maximums:
- Fireball (8d6) caps at 48 damage
- Magic Missile (1d4+1) caps at 5 per missile
- Weapon attacks cap at weapon die + modifiers This prevents cheating while still allowing you to match your physical dice rolls!
- Boost Application: Instant when command is used during your turn, queued otherwise
- Boost Removal: Automatic after first attack (one-shot mode) or at turn end
- Player Detection: Uses
Osi.IsPartyMember()to identify party members - Turn Tracking: Monitors
TurnStartedandTurnEndedOsiris events
Mods/PhysicalDiceMod/
βββ meta.lsx # Mod metadata
βββ ScriptExtender/
β βββ Config.json # SE configuration
β βββ Lua/
β βββ BootstrapServer.lua # Server entry point
β βββ BootstrapClient.lua # Client entry point
β βββ Server/
β β βββ PhysicalDiceInput.lua # Main input system + UI integration
β β βββ BoostRollSystem.lua # Boost helpers
β β βββ AutoTest.lua # Testing system
β β βββ RollInterceptor.lua # Roll monitoring
β β βββ PhysicalDiceServer.lua# Event discovery
β βββ Client/
β βββ PhysicalDiceClient.lua
β βββ PhysicalDiceUI.lua # ImGui interface
β βββ RollInterceptor.lua
Requirements:
- LSLib (Divine.exe tool)
Build Process:
- Clone this repository
- Modify the Lua files in
Mods/PhysicalDiceMod/ScriptExtender/Lua/ - Use Divine.exe to pack the mod folder into a .pak file:
# Example pack command (adjust paths as needed)
Divine.exe -g bg3 -a create-package -s ".\Mods\PhysicalDiceMod" -d "PhysicalDiceMod.pak" -c lz4- Only attack rolls have been tested and confirmed working
- Saving throws, skill checks, and ability checks have boost code but are unverified
- Damage rolls are not affected (only d20 rolls)
- Client-side attack rolls may have slight delays
- MCM (Mod Configuration Menu) integration (Completed in v1.1.0)
- Clickable buttons for quick rolls (Completed in v1.1.0)
- Working hotkey support
- Damage roll support
- Roll history tracking
- ImGui UI (if BG3SE v30+ becomes standard)
Contributions are welcome! If you'd like to improve the mod:
- Fork this repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Having issues? Please open an issue with:
- Your BG3 version
- Script Extender version
- MCM version (if applicable)
- Description of the problem
- Any error messages from the Script Extender console (F3)
- Script Extender: Norbyte
- Boost System Discovery: Serofix's BG3 Cheat Table
- MCM Framework: AtilioA/BG3-MCM
MIT License - Free to use and modify. See LICENSE for details.
- π§ CRITICAL FIX: Boost Interference Bug Resolved
- Implemented combined boost system - one atomic boost instead of two separate boosts
- Eliminates boost interference when setting attack roll followed by damage roll (or vice versa)
- No more timing issues or race conditions
- Attack and damage values tracked separately but applied as single boost
- Both boosts remain independent (can clear damage only without affecting attack)
- Verified working in all scenarios: attack only, damage only, both together
- Version identifier added to console output for easy verification
- Recommended upgrade from v1.2.0 - all users should update immediately
- π MAJOR FEATURE: Damage Roll Support
- Added damage roll input system (1-80 range)
- New "Damage" tab in MCM with slider and quick buttons (10, 40, 80)
- Console commands:
!setdamage,!cleardamage - Independent boost tracking for attack and damage rolls
- Both boosts can be active simultaneously
- Extended API:
SetDamage(),ClearDamage(), updatedGetStatus() - π‘οΈ Discovered built-in anti-cheat: Game enforces natural damage caps per spell/weapon
- Perfect for weapon attacks (d20 + damage) and damage-only spells (Fireball, Acid Splash)
- Supports matching physical dice damage rolls to in-game results
- One-shot removal for both attack and damage boosts
- No cheating possible - damage cannot exceed spell/weapon maximums
- Fixed critical mid-combat save load bug
- Boosts now apply immediately after loading a save during combat
- Removed turn-based queuing system that caused issues with save/load
- Improved reliability of boost application regardless of turn state
- Added MCM (Mod Configuration Menu) integration
- In-game UI with slider control (1-20)
- Clickable Apply button to apply roll values
- Quick roll buttons (1, 10, 20) with instant application
- Auto-apply option for automatic roll application
- On-screen notifications
- Hotkey configuration UI (for future implementation)
- Console commands still work as fallback
- Graceful degradation if MCM not installed
- Initial release
- Console command interface
- Exact roll locking with Min+Max boosts
- Instant application system
- One-shot mode
- Party member support