Calculate battle damage considering Weapon Triangle, Effectiveness, and Mitigation.
Neutral (No Advantage)
Advantage (+20%)
Disadvantage (-20%)
No
Yes (Armor/Cav/Dragon/etc.)
No
Yes (+30% Def/Res)
Estimated Damage per Hit
0
0
Modified Atk
0
Modified Def/Res
Understanding Fire Emblem Heroes Calculations
Success in Fire Emblem Heroes (FEH) requires a deep understanding of combat mathematics. Unlike traditional stats-based RPGs, FEH uses strict truncation (floor) logic at multiple steps of the calculation formula. This calculator helps Summoners predict combat outcomes for Arena, Aether Raids, and Abyssal maps without risking their units.
The Damage Formula Breakdown
The core combat logic in FEH follows a specific order of operations. Knowing this order is critical when calculating damage manually:
1. Effective Damage: If a unit has a weapon effective against the foe (e.g., Falchion vs. Dragons, Bows vs. Fliers), the Unit's Attack is multiplied by 1.5 and truncated (rounded down) immediately.
2. Weapon Triangle Advantage (WTA):
Advantage: The unit gains Atk equal to 20% of their current Atk (truncated), added to the total.
Disadvantage: The unit loses Atk equal to 20% of their current Atk (truncated), subtracted from the total.
Triangle Adept: Skills like Triangle Adept increase this percentage from 20% to 40%.
3. Defense/Resistance: The foe's defensive stat is subtracted from the modified Attack. If the foe is on a Defensive Tile, their Def/Res is multiplied by 1.3 (truncated) before subtraction.
4. Damage Reduction (DR): Modern FEH units often possess skills like Close Call, Spurn, or Sacred Cowl that reduce incoming damage by a percentage. This is applied to the final damage number.
Why "In-Combat" Stats Matter
When using this calculator, ensure you input "In-Combat" stats rather than the visible stats shown on the map screen. Skills like Death Blow, Kestrel Stance, and Drive Atk add invisible buffs that only apply during the fight. To get an accurate result:
Check your unit's visible Atk.
Add buffs (blue numbers).
Add in-combat spurs/drives/skills (e.g., Death Blow 4 adds +8 Atk).
Enter the total into the "Unit Attack" field above.
Color Effectiveness & Defensive Tiles
The Weapon Triangle is the foundation of FEH strategy. Red beats Green, Green beats Blue, and Blue beats Red. Colorless units (Staff, Dagger, Bow) are generally neutral unless specific skills (like Raven tomes) are in play. Additionally, Defensive Tiles are crucial terrain features that grant a 30% boost to Def and Res. This boost can often make a unit virtually invincible if their base stats are high enough.
function calculateFehDamage() {
// 1. Get Inputs
var unitAtk = parseInt(document.getElementById('unitAtk').value) || 0;
var foeDefRes = parseInt(document.getElementById('foeDefRes').value) || 0;
var wtaState = parseInt(document.getElementById('wtaState').value);
var effectiveness = parseFloat(document.getElementById('effectiveness').value);
var defTile = parseFloat(document.getElementById('defTile').value);
var dmgReduction = parseFloat(document.getElementById('dmgReduction').value) || 0;
var specialDmg = parseInt(document.getElementById('specialDmg').value) || 0;
// 2. Calculate Effective Atk (Truncate)
// Formula: Floor(Atk * Effectiveness)
var effAtk = Math.floor(unitAtk * effectiveness);
// 3. Apply Weapon Triangle (Truncate logic)
// WTA Bonus/Penalty = Floor(EffAtk * 0.20)
// If TA skill was involved, it would be 0.40, but keeping simple 0.20 for general
var wtaMod = Math.floor(effAtk * 0.20);
var finalAtk = effAtk;
if (wtaState === 1) {
finalAtk = effAtk + wtaMod;
} else if (wtaState === -1) {
finalAtk = effAtk – wtaMod;
}
// Neutral (0) does nothing
// 4. Calculate Foe Mitigation (Truncate)
// Formula: Floor(Def * TileBonus)
var finalDef = Math.floor(foeDefRes * defTile);
// 5. Calculate Raw Damage
var rawDamage = finalAtk – finalDef;
if (rawDamage < 0) rawDamage = 0;
// Add Flat Special Damage (e.g. Wo Dao +10) BEFORE reduction?
// Usually True Damage/Flat Damage behavior varies, but often added to raw.
// For this calc, we add it to raw before DR for simplicity,
// though some "True Damage" ignores DR. We will treat it as standard bonus damage.
rawDamage = rawDamage + specialDmg;
// 6. Apply Damage Reduction
// FEH rounds damage reduction normally to nearest integer?
// Actually FEH usually truncates the RESULTING damage.
// Logic: Damage = Floor(Raw * (1 – %))
var drMultiplier = 1 – (dmgReduction / 100);
var finalDamage = Math.floor(rawDamage * drMultiplier);
// Ensure no negative damage
if (finalDamage < 0) finalDamage = 0;
// 7. Output Results
document.getElementById('finalDamage').innerText = finalDamage;
document.getElementById('modAtkDisplay').innerText = finalAtk;
document.getElementById('modDefDisplay').innerText = finalDef;
document.getElementById('resultBox').style.display = 'block';
}