Monster Attack & Damage Modifier Calculator
ANA›Life Services Authority›National Calculator Authority›Monster Attack & Damage Modifier Calculator
.calc-container { max-width: 640px; margin: 2rem 0; padding: 1.5rem; background: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); font-family: system-ui, -apple-system, sans-serif; } .calc-container h3 { font-family: Georgia, serif; font-size: 1.15rem; color: #1a1a1a; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-row { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; flex-wrap: wrap; } .calc-row label { min-width: 160px; font-size: 0.9rem; color: #333; font-weight: 500; } .calc-row input[type="number"], .calc-row select { flex: 1; min-width: 120px; max-width: 200px; padding: 0.5rem 0.6rem; border: 1px solid #ccc; border-radius: 4px; font-size: 0.9rem; font-family: system-ui, sans-serif; color: #1a1a1a; background: #fafaf8; } .calc-row input:focus, .calc-row select:focus { outline: none; border-color: var(--ac, #3d5a80); box-shadow: 0 0 0 2px rgba(26,74,138,0.12); } .calc-row .unit { font-size: 0.82rem; color: #888; min-width: 30px; } .calc-btn { display: inline-block; margin-top: 0.5rem; padding: 0.55rem 1.5rem; background: var(--ac, #3d5a80); color: #fff; border: none; border-radius: 4px; font-size: 0.9rem; font-weight: 600; cursor: pointer; font-family: system-ui, sans-serif; } .calc-btn:hover { opacity: 0.9; } .calc-result { margin-top: 1.25rem; padding: 1rem 1.25rem; background: #f0f6fc; border-left: 3px solid var(--ac, #3d5a80); border-radius: 0 6px 6px 0; display: none; } .calc-result.visible { display: block; } .calc-result-label { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: #666; margin-bottom: 0.25rem; } .calc-result-value { font-size: 1.6rem; font-weight: 700; color: var(--ac, #3d5a80); } .calc-result-detail { font-size: 0.85rem; color: #555; margin-top: 0.5rem; line-height: 1.5; } .calc-note { margin-top: 1rem; font-size: 0.8rem; color: #888; font-style: italic; } .calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 0.75rem; } .calc-grid-item { padding: 0.6rem 0.8rem; background: #f8f9fa; border-radius: 4px; border: 1px solid #eee; } .calc-grid-item .label { font-size: 0.75rem; color: #888; text-transform: uppercase; letter-spacing: 0.04em; } .calc-grid-item .value { font-size: 1.1rem; font-weight: 600; color: #1a1a1a; } @media (max-width: 720px) { .calc-row { flex-direction: column; align-items: flex-start; gap: 0.3rem; } .calc-row label { min-width: auto; } .calc-row input[type="number"], .calc-row select { max-width: 100%; width: 100%; } .calc-grid { grid-template-columns: 1fr; } } .calc-chart { margin: 1rem 0; text-align: center; } .calc-chart svg { max-width: 100%; height: auto; } .calc-chart-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem 1.2rem; margin-top: 0.6rem; font-size: 0.8rem; color: #555; } .calc-chart-legend span { display: inline-flex; align-items: center; gap: 0.3rem; } .calc-chart-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; font-style: normal; } .calc-related { max-width: 640px; margin: 2rem 0 1rem; padding: 1.25rem 1.5rem; background: #f8f9fa; border: 1px solid #e8e8e8; border-radius: 8px; } .calc-related h3 { font-family: Georgia, serif; font-size: 1rem; color: #1a1a1a; margin: 0 0 0.75rem; padding-bottom: 0.4rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-related-list { list-style: none; padding: 0; margin: 0 0 0.75rem; display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem 1.5rem; } .calc-related-list li a { font-size: 0.88rem; color: var(--ac, #3d5a80); text-decoration: none; } .calc-related-list li a:hover { text-decoration: underline; } .calc-browse-all { margin: 0.5rem 0 0; font-size: 0.9rem; font-weight: 600; } .calc-browse-all a { color: var(--ac, #3d5a80); text-decoration: none; } .calc-browse-all a:hover { text-decoration: underline; } @media (max-width: 720px) { .calc-related-list { grid-template-columns: 1fr; } }
Monster Attack & Damage Modifier Calculator
Calculate a monster's attack bonus and damage modifier based on its ability score, proficiency bonus, and challenge rating (CR). Uses standard D&D 5e rules.
Ability Score (STR or DEX, 1–30)
Challenge Rating (CR, 0–30)
Proficient with Attack?
Yes No
Extra Attack Bonus (magic weapon, etc.)
Damage Dice (e.g. 2d6)
Extra Flat Damage Bonus
Calculate Fill in the fields and click Calculate.
function monCalc() { var resultDiv = document.getElementById('mon-result');
var abilityScore = parseFloat(document.getElementById('mon-ability-score').value); var cr = parseFloat(document.getElementById('mon-cr').value); var proficient = parseInt(document.getElementById('mon-proficient').value); var extraBonus = parseFloat(document.getElementById('mon-extra-bonus').value); var damageDice = document.getElementById('mon-damage-dice').value.trim(); var extraDamage = parseFloat(document.getElementById('mon-extra-damage').value);
// Input validation if (isNaN(abilityScore) || abilityScore 30) { resultDiv.innerHTML = 'Error: Ability Score must be between 1 and 30.'; return; } if (isNaN(cr) || cr 30) { resultDiv.innerHTML = 'Error: CR must be between 0 and 30.'; return; } if (isNaN(extraBonus) || extraBonus 10) { resultDiv.innerHTML = 'Error: Extra Attack Bonus must be between -10 and 10.'; return; } if (isNaN(extraDamage) || extraDamage 20) { resultDiv.innerHTML = 'Error: Extra Flat Damage must be between -10 and 20.'; return; }
// Validate damage dice format (e.g. 2d6, 1d8, 3d4) var diceMatch = damageDice.match(/^(\d+)d(\d+)$/i); if (!diceMatch) { resultDiv.innerHTML = 'Error: Damage Dice must be in format NdM (e.g. 2d6, 1d8).'; return; } var numDice = parseInt(diceMatch[1]); var dieSize = parseInt(diceMatch[2]); if (numDice 20 || dieSize 20) { resultDiv.innerHTML = 'Error: Dice must be between 1d2 and 20d20.'; return; }
// Step 1: Ability Modifier = floor((score - 10) / 2) var abilityMod = Math.floor((abilityScore - 10) / 2);
// Step 2: Proficiency Bonus from CR (D&D 5e table) // CR 0-4: +2, CR 5-8: +3, CR 9-12: +4, CR 13-16: +5, CR 17-20: +6, // CR 21-24: +7, CR 25-28: +8, CR 29-30: +9 var profBonus; if (cr = 0) ? "+" + attackBonus : "" + attackBonus; var damageModStr = (damageModifier >= 0) ? "+" + damageModifier : "" + damageModifier; var abilityModStr = (abilityMod >= 0) ? "+" + abilityMod : "" + abilityMod;
- var profLine = proficient
- ? "Proficiency Bonus (CR " + cr + "): +" + profBonus + ""
- "Proficiency Bonus: Not applied";
resultDiv.innerHTML = "### Results " + "" + "Ability Score (" + abilityScore + ")Modifier: " + abilityModStr + "" + "" + profLine + "" + "Extra Attack Bonus" + (extraBonus >= 0 ? "+" : "") + extraBonus + "" + "Total Attack Bonus" + attackStr + "" + "Damage Roll" + damageDice + " " + damageModStr + "" + "Average Damage per Hit" + avgDamage.toFixed(1) + "" + ""; }
#### Formula
Ability Modifier = ⌊(Ability Score − 10) / 2⌋
Proficiency Bonus (by CR): CR 0–4 → +2 | CR 5–8 → +3 | CR 9–12 → +4 | CR 13–16 → +5 | CR 17–20 → +6 | CR 21–24 → +7 | CR 25–28 → +8 | CR 29–30 → +9
Attack Bonus = Ability Modifier + Proficiency Bonus (if proficient) + Extra Bonus
Damage Modifier = Ability Modifier + Extra Flat Damage
Average Damage = (Number of Dice × (Die Size + 1) / 2) + Damage Modifier
#### Assumptions & References
- Based on D&D 5th Edition rules (Player's Handbook & Monster Manual).
More Calculators
- Tree Trimming & Pruning Cost Calculator
- Irrigation Run Time Calculator
- Damages Estimator (Compensatory vs. Punitive)
- Flooring Waste Factor Calculator
- Sprinkler Head Coverage & Spacing Calculator
- Homework Completion Time Estimator
-
Fuel Cost Comparison Calculator — Natural Gas vs Propane vs Electric Heat
- Heat Loss Calculator for Minnesota Insulation Standards
- Minnesota Heating Degree Days Calculator
- Furnace Sizing Calculator for Minnesota Climate Zones
- Propane vs Natural Gas Cost Comparison Calculator
- Energy Savings Calculator
Read Next
Study Time Planner Authority Network America › Life Services Authority › National Calculator Authority .calc-container { max-width: 640px;...