Final Fantasy Wiki

In Final Fantasy V all actions (by characters and/or enemies) that inflict non-fixed damage (including healing) do so according to an algorithm featuring damage formulas. Some actions share the same damage formula (albeit with different parameters), while some other actions have unique damage formulas.

First, the game checks whether or not the action does hit the target. If the answer is negative, the action misses, and no damage calculation is performed. Otherwise, damage calculation follows a general algorithm. Dealing 0 damage is not considered missing.

This page only covers damage calculation for non-fixed damage. The following is not covered:

Algorithm[]

The general algorithm (shown here in pseudo-code) is:

function calculate_damage():
    if target_is_immune:
        return 0

    A = compute_A()
    D = compute_D()
    attack_surplus = A - D

    if attack_surplus <= 0:
        return 0

    M = compute_M()

    # Damage overflow if uncapped_damage > 65535
    uncapped_damage = attack_surplus * M

    return min(9999, uncapped_damage)

In layman terms, the following steps are followed in order:

  1. If the target is immune (e.g., nullifies physical attacks via the !Guard command, or nullifies the element of the attack), then Damage = 0, and all subsequent steps are skipped.
  2. Compute the A parameter via the relevant sub-formula and the relevant additional modifiers.
  3. Compute the D parameter via the relevant sub-formula and the relevant additional modifiers.
  4. Compute attack_surplus = A - D.
  5. If attack_surplus <= 0, then Damage = 0, and all subsequent steps are skipped.
  6. Compute the M parameter via the relevant sub-formula and the relevant additional modifiers.
  7. Compute uncapped_damage = attack_surplus * M.
  8. Compute Damage = min(9999, uncapped_damage).

For simplicity, the same process can, with minor inaccuracies, be replaced by a general formula described in the next section (together with the meaning of A, D, and M). Minor inaccuracies because there is no way to convey in a formula that certain computations are sometimes skipped (e.g. if A - D is not strictly positive, M is not calculated to save time and resources).

Notably, if uncapped_damage > 65535, a damage overflow glitch occurs.

General formula[]

The general damage formula is as follows:

where:

  • Damage is the amount of damage (or healing) that is inflicted to the target by the action.
  • The min() and max() functions enforce the damage ceiling (9999), and the damage floor (0).
  • A, D, and M are integers that depend on many variables and constants. In particular:
    • A is an attack-based parameter.
    • D is a defense-based parameter.
    • M is a stat-based multiplier.

Even simpler, if one ignores damage floor and ceiling for illustrative purposes, the formula can be further simplified:

One notable consequence is that, if A is not strictly greater than D, the damage will always be 0. For instance, even a level 99 character with 99 strength, magic, and agility (all obtainable via various songs and/or drinks) will deal 0 damage if the equipped weapon has a low enough Attack value with respect to the relevant target's defense stat (for physical attacks; i.e. the attack is unable to pierce target's defense), or the cast spell has a low enough Power value with respect to the target's magic defense (for magical attacks).

The A parameter[]

A is a non-negative integer value that mainly depends on:

  • Variables related to the nature and source of the damage:
    • The nominal attack (Atk) value of the used weapon for most physical attacks by character.
    • An EnemyAtk value for most enemy physical attacks.
    • The spell Power value for magical attacks.
    • Major randomness for purely random magic attacks.
    • Other stats/parameters for the remaining attacks.
  • Some (minor, moderate, or major) randomness for most actions, to ensure a range of possible damage.
  • Constant values, either as scaling factors, or as addends.

The D parameter[]

D is a non-negative integer value that mainly depends on:

  • Variables related to the nature of the damage:
  • Constant values as scaling factors.

The M parameter[]

M (also known as the multiplier) is a strictly positive integer value that mainly depends on:

  • Variables related to the nature of the damage:
    • The attacker's level (capped at 99).
    • Some combination of the attacker's strength, magic, and agility, including possibly none of them, but never all of them at the same time.
  • Constant values, either as scaling factors, or as addends.

Computation of A, D, and M[]

A, D, and M are computed in steps:

  • First, a base sub-formula is used to calculate each of them.
  • Second, the appropriate additional modifiers are applied to the original A, D, and M (original as in the results of base sub-formulas). Sometimes they are replaced altogether by constants.

Base sub-formulas depend on variables, constants, and randomness. Variables and constants are discussed in the next sections. As for randomness, when it is included, it is always in the form of random(a, b), which is a random integer value between a and b (both inclusive) from a uniform distribution.

Additional modifiers are modifiers that are applied to A, D, and M after the relevant sub-formulas produced base values for them, when certain conditions apply:

  • Certain conditions are met for the attacker or target (e.g., back row, etc.).
  • Certain conditions are met for the action (e.g., critical hit, etc.).
  • Certain statuses are active on the attacker (e.g., mini, berserk, etc.).
  • Certain statuses are active on the target (e.g., protect when hit by physical damage, etc.)
  • Certain commands are used by the attacker (e.g., !Jump, !Throw, !Rapid Fire, etc.)
  • The action has special properties (e.g., 8 times damage by Aqua Breath on Desert-type targets, etc.).

Whenever divisions appear (anywhere in Final Fantasy V, not just in damage calculation), they are always integer divisions (denoted by the // operator): the quotient is kept, and the remainder discarded. In practice, divisors are always powers of 2, so that integer divisions can be accomplished by simply right-shifting the bits of the dividend by a number of places equal to the logarithm in base 2 of the divisor.

Base sub-formulas[]

Different kinds of actions have different kinds of base sub-formulas for A, D, and M.

For all sub-formulas, Atk refers to the attack stat of the relevant weapon, if applicable.

Power, on the other hand, refers to the power stat of the relevant spell, if applicable (e.g., Fire has a power of 15, Cura has a power of 45, and Holy has a power of 241).

The following sections explain in detail all different base sub-formulas for all kinds of available actions.

Regular spells[]

Most spells in the game that deal non-fixed and non-purely-random damage (or healing) use the following formulas for A, D, and M:

Most non-mace staves, the Blood Sword, and the Apollo's Harp use the above formulas when physically attacking. The Power value of the spell cast by Apollo's Harp when attacking is 75 (as opposed to its 45 attack value).

Magic scrolls use the above formulas when thrown (with an additional modifier to M added by the !Throw command itself - see the relevant section below).

Defense-piercing spells[]

Defense-piercing spells use the following formulas for A, D, and M:

Flare, Level 3 Flare, Giga Flare, Shadow Flare, Almagest, Requiem, and some other spells use the above formulas.

Because of how the D formula works, the common belief that defense-piercing spells ignore 31/32 of the target's MDef is incorrect. In fact, defense-piercing spells consider AT MOST 1/32 of the target's MDef (which happens when MDef is divisible by 32). In particular, if MDef < 32, the spell effectively ignores all of it, because X // 32 is 0 if X < 32.

Defense-ignoring spells[]

Defense-ignoring spells use the following formulas for A, D, and M:

Most damaging !Combine outcomes use the above formulas.

Purely random spells[]

Purely random spells use the following formulas for A, D, and M:

Comet, Meteor, Zantetsuken (used by the Odin boss), Cave-In, and Zombie Breath use the above formulas.

Physical spells[]

Physical spells (i.e., spells that target Def rather than MDef) use the following formulas for A, D, and M:

Jump (magic used by enemies), Gungnir, Choco Kick, Fat Chocobo, Branch Arrow, Branch Spear, and Reaper's Sword use the above formulas.

Predict spells[]

Spells cast via the !Predict command use the following formulas for A, D, and M:

M is derived from a look-up table depending on:

  • The cast spell.
  • The target (enemies or party).
  • The last digit of the caster's HP.

The look-up table is as follows:

Spell / Caster's HP last digit 0 1 2 3 4 5 6 7 8 9
Cleansing (vs. enemies) 3 6 9 12 15 18 21 24 27 30
Deluge (vs. enemies) 2 5 8 10 13 16 18 21 24 27
Deluge (vs. party) 1 1 1 1 1 1 2 2 2 3
Eruption (vs. enemies) 2 4 7 9 12 14 16 19 21 24
Eruption (vs. party) 1 1 1 2 3 3 4 4 5 6
Starfall (vs. enemies) 2 5 8 10 13 16 18 21 24 27
Starfall (vs. party) 1 1 1 1 1 1 2 2 2 3
Rockslide (vs. enemies) 1 3 4 6 7 9 10 12 13 15
Rockslide (vs. party) 1 3 4 6 7 9 10 12 13 15
Divine Judgement (vs. enemies) 3 6 9 12 15 18 21 24 27 30
Divine Judgement (vs. party) 10 10 10 10 10 10 10 10 10 10
Healing Wind (vs. party) 3 6 9 12 15 18 21 24 27 30
Blessing (vs. party) 3 6 9 12 15 18 21 24 27 30
Hurricane (vs. enemies) 2 4 7 9 12 14 16 19 21 24
Hurricane (vs. party) 1 1 1 2 3 3 4 4 5 6
Pestilence (vs. party) 3 6 9 12 15 18 21 24 27 30

Attacks based on Strength[]

Most strength-based attacks feature the following formulas for A, D, and M:

Most swords, most knight swords, all spears, and all katanas use the above formulas.

Weaponless attacks[]

Characters with both hands empty will attack once with each fist. The formulas for A, D, and M depend on whether the attacker has the Barehanded ability (either equipped, or natively by being a Monk or a Freelancer/Mime after mastering Monk) and/or is equipped with the Kaiser Knuckles accessory.

Without Barehanded, the formulas for A, D, and M are:

With Barehanded and no Kaiser Knuckles, the formula for D does not change, while the formulas for A and M are updated:

With Barehanded and Kaiser Knuckles, the formula for D still does not change, and the formula for M is equal to the case with only Barehanded. The formula for A is updated:

Physical throwing-based attacks[]

Physical throwing-based attacks use the following formulas for A, D, and M:

Regular weapons (when thrown via the !Throw command), as well as Ashes, Shurikens, and Fuma Shurikens, use the above formulas. Magic scrolls use the regular spells formulas instead.

ThrowAtk refers to the discrepancy some weapons have between the Atk value used when attacking with them vs. throwing them. Excalipoor is a prime example (fixed damage when attacking, but 100 when thrown).

The !Throw command itself adds an additional modifier to A (see the relevant section further below).

Bugged attacks based on strength and agility[]

Most attacks based on both the attacker's strength and agility stats were supposed to use the following formulas for A, D, and M:

However, due to a bug, they actually all use the following formulas for A, D, and M:

Most knives, boomerangs, bows, short swords, and whips use the above formulas.

High-variance defense-piercing physical attacks[]

Defense-piercing attacks featuring a higher damage variance than most other attacks use the following formulas for A, D, and M:

All axes and hammers, the Gaia's Bell, and the Rune Chime use the above formulas.

High-variance attacks based on Magic and Agility[]

Attacks based on both the attacker's magic and agility stats and featuring at the same time a higher damage variance than most other attacks use the following formulas for A, D, and M in the SNES and PS versions of the game:

In the Advance version of the game the formulas for A, D, and M are:

The Diamond Bell and the Tinklebell use the above formulas.

High-variance attacks based on Magic[]

Attacks based on the attacker's magic stat and featuring at the same time a higher damage variance than most other attacks use the following formulas for A, D, and M:

Most rods use the above formulas.

Magical attacks based on Level[]

Level-based magical attacks use the following formulas for A, D, and M:

Delta Attack, Poison Breath, Bee Swarm, Leaf Swirl, Sandstorm, Ignus Fatuus, and Poison Mist use the above formulas.

Zeninage[]

!Zeninage uses the following formulas for A, D, and M:

The above formulas for A and M (and the fact that most enemies have a relatively low Def value) explain why Zeninage is such an overpowered command in Final Fantasy V.

Goblin Punch[]

Goblin Punch uses the following formulas for A, D, and M when used by a character:

LeftHandThrowAtk and RightHandThrowAtk refer to weapons having a discrepancy between the Atk value used when attacking with them vs. throwing them. Excalipoor is a prime example (fixed damage when attacking, but 100 when thrown).

When used by an enemy, the formulas for A, D, and M are:

EnemyAtk and EnemyAtkMultiplier depend on the actual enemy, and the specific attack (Goblin Punch in this case).

Brave Blade[]

The Brave Blade uses the following formulas for A, D, and M:

Chicken Knife[]

The Chicken Knife uses the following formulas for A, D, and M:

Healing items[]

Most healing items that deal recovery damage to HP or MP use the following formulas for A, D, and M:

Enemy physical attacks[]

Most exclusive enemy physical attacks use the following formulas for A, D, and M:

EnemyAtk and EnemyAtkMultiplier depend on the actual enemy, and the specific attack.

Enemy Strong Fight attacks[]

Enemy Strong Fight attacks use the following formulas for A, D, and M:

EnemyAtk and EnemyAtkMultiplier depend on the actual enemy, and the specific attack.

Enemy Strong Fight attacks are enemy physical attacks with a similar animation to the attack performed by a released Sand Bear.

Additional modifiers[]

Certain commands apply additional modifiers to the results of base sub-formulas, often to M, and sometimes to A and D as well. If all conditions are met, additional modifiers can stack, and original refers to the relevant parameter (A, D, or M) after the previous modifier was applied.

Multi-targeting modifiers[]

When multi-targeting an action (usually a spell) that is originally single-target, the following modifiers are applied to the original A, D, and M:

Most spells that are automatically multi-targeted do not apply the above modifiers. The one exception are spells cast by smashing rods, which do apply them when hitting multiple targets.

Row modifiers[]

When a non-!Jump physical attack is performed by an attacker in the back row, or against a target in the back row, the following modifiers are applied to the original A, D, and M:

The above multipliers stack (i.e., are applied twice) if both the attacker and the target are in the back row.

The above multipliers are not applied to back row OK weapons.

Certain multi-targeting physical commands (e.g., !Bladeblitz or !Kick before the discontinued 2013 mobile version) apply the row modifiers. Other multi-targeting physical commands (e.g., !Zeninage) do not.

In the Pixel Remaster version, the above multipliers are not applied to Sword Dance.

Sword Dance modifiers[]

When using Sword Dance, the following modifiers are applied to the original A, D, and M:

The above formulas show that it is incorrect to state that Sword Dance always deals 4 times the regular damage. That is true only if D is 0. As a corollary, certain weapons that deal 0 damage against certain enemies can deal non-zero damage with Sword Dance, even if 4 times 0 would still be 0. That happens when:

The Sword Dance damage modifiers do not work with bells and rods.

Throw modifiers[]

When using the !Throw command, the following modifiers are applied to the original A, D, and M:

Focus modifiers[]

When using the !Focus command, after the built-in delay, the following modifiers are applied to the original A, D, and M:

Rapid Fire modifiers[]

When using !Rapid Fire, the following modifiers are applied to the original A, D, and M for each hit:

In the Pixel Remaster version, weapon-based attacks whose M parameter (as computed by base sub-formulas) depends on the Magic stat do not apply the modifier to M when being used with !Rapid Fire. In other words, the half-damage penalty is not applied. Also, still in the Pixel Remaster version, !Rapid Fire works differently with the Chicken Knife.

Defending modifiers[]

If the target is defending, the following modifiers are applied to the original A, D, and M:

Double grip modifiers[]

When double gripping a weapon, the following modifiers are applied to the original A, D, and M:

Jump modifiers[]

When executing a !Jump attack with a spear-type weapon, the following modifiers are applied to the original A, D, and M:

Rune modifiers[]

When attacking with a rune weapon (Rune Blade, Rune Axe, and Rune Chime), provided that the attacker has sufficient MP, the following modifiers are applied to the original A, D, and M:

The rune bonuses to A, and the corresponding MP costs are as follows:

  • Rune Blade: 20 for 8 MP
  • Rune Axe: 10 for 5 MP
  • Rune Chime: 10 for 5 MP

The Rune Bow, despite its name, is not a "rune weapon" for the purposes of the above modifiers.

Enemy defense-piercing modifiers[]

Some special enemy abilities have the properties to always hit and ignore defenses. Whenever such attacks are performed, the following modifiers are applied to the original A, D, and M:

An example of such kind of attack is Incisor from the Skull Eater enemy, which explains why it is so deadly in Bartz's world, regardless of the player's defensive setup.

Enemy 1.5 modifiers[]

Some special enemy abilities have the property to deal increased damage with regard to what would be considered regular damage. Whenever such attacks are performed, the following modifiers are applied to the original A, D, and M:

An example of such kind of attack is Vacuum Wave from Neo Exdeath.

Pharmacology modifiers[]

When using restorative items (e.g. potions, hi-potions, and ethers) and restorative mixes, if the user has the Pharmacology ability equipped, the following modifiers are applied to the original A, D, and M:

Magic strong against modifiers[]

Whenever an attacker uses a strong against spell against a matching target, the following modifiers are applied to the original A, D, and M:

The only instances of such spells are:

Since the 8× bonus is applied to A, rather than M, it is incorrect to say that those spells deal 8 times more damage. That is correct only if D = 0.

Protect/Shell modifiers[]

Whenever a physical attack is used against a target with the protect status active, or a magical attack is used against a target with the shell status active, the following modifiers are applied to the original A, D, and M:

Mini/Toad modifiers for attackers[]

Whenever a physical attack is used by an attacker with the Mini or Toad status effect active, the following modifiers are applied to the original A, D, and M:

Mini/Toad modifiers for targets[]

Whenever a physical or magical attack is used against a target with the mini or toad status effect active, the following modifiers are applied to the original A, D, and M:

Berserk modifiers[]

Whenever a berserked attacker performs an attack, the following modifiers are applied to the original A, D, and M:

Goblin Punch level match modifiers[]

When using Goblin Punch, if the attacker's and target's levels match, the following modifiers are applied to the original A, D, and M:

Whenever the levels match, Goblin Punch deals at least 8 times the original damage, because D is always reduced to 0.

At least in the SNES, PS, and Advance versions, the level increase due to Hero's Rime does not count for the above modifiers. On the other hand, level modifications due to Dark Spark, Dischord, Samson's Might, and Dragon Power do count.

Magic element up modifiers[]

Whenever an elemental magical attack is performed, and the attacker is boosting the corresponding element, the following modifiers are applied to the original A, D, and M:

Certain pieces of equipment apply these modifiers to boost the damage of elemental spells, e.g., Thunder Rod (lightning), and Air Knife (wind).

Because these modifiers boost A (as opposed to M), it is incorrect to say that they boost elemental spells by 50%.

These modifiers do not stack with themselves (e.g. equipping the Gaia's Bell purely for the purpose of boosting the damage of Earth-elemental spells such as Titan is useless if the caster is already equipping the Gaia Gear).

Critical hit modifiers[]

Whenever a critical hit is triggered, the following modifiers are applied:

Critical hits deal at least twice the non-critical damage, because D is reduced to 0.

Despite the similar animation, rune weapons do not deal critical hits just by expending MP. They apply the rune modifiers instead.

Attacks strong against modifiers[]

Whenever an attacker uses a strong against physical attack (or magical attack via !Combine) against a matching target, the following modifiers are applied to the original A, D, and M:

When triggered, the above modifiers are functionally equivalent to a critical hit. Even the attack animation resembles the animation of a critical hit.

In the SNES, PS, Advance, and discontinued 2013 mobile/Steam versions, the strong against weapons are:

In the Advance and discontinued 2013 mobile/Steam versions, the following !Combine outcomes apply the above modifiers:

  • Killer Shot, Killer Burst, and Killer Cannon against Human-type targets.
  • Dragon Shot, Dragon Burst, and Dragon Cannon against Dragon-type targets.

In the Pixel Remaster version, all bows and whips apply the above modifiers to targets that cannot evade actions whose category is aerial (including, but not limited to avian enemies). Such modifiers do no stack with themselves, e.g., the Dragon's Whisker does not apply them twice when hitting a target such as Dragon Aevis.

Weak to element modifiers[]

Whenever a target is weak to the element of an incoming attack, the following modifiers are applied to the original A, D, and M:

The above modifiers do NOT apply to elemental Spellblade attacks.

Absorbs element modifiers[]

Whenever a target absorbs the element of an incoming attack, the following modifiers are applied to the original A, D, and M:

The attack heals the target, rather than dealing damage.

The above modifiers apply to elemental Spellblade attacks as well.

Halves element modifiers[]

Whenever a target halves the element of an incoming attack, the following modifiers are applied to the original A, D, and M:

The above modifiers apply to elemental Spellblade attacks as well.

Weak to tier-1 elemental spellblades modifiers[]

Whenever an attack following the application of a tier-1 elemental Spellblade (Fire, Blizzard, Thunder, and Poison) is performed against a target that is weak against that element, the following modifiers are applied to the original A, D, and M:

Weak to tier-2 elemental spellblades modifiers[]

Whenever an attack following the application of a tier-2 elemental Spellblade (Fira, Blizzara, and Thundara) is performed against a target that is weak against that element, the following modifiers are applied to the original A, D, and M:

Heavy and weak to tier-3 elemental spellblades modifiers[]

Whenever an attack following the application of a tier-3 elemental Spellblade (Bio, Firaga, Blizzaga, Thundaga, and Holy) is performed against a heavy target that is weak against that element, the following modifiers are applied to the original A, D, and M:

Non-heavy targets are instantly killed by those kind of attacks, regardless of instant death immunity.

Flare spellblade modifiers[]

Whenever an attack following the application of Flare Spellblade is performed, the following modifiers are applied to the original A, D, and M:

Bladeblitz modifiers[]

Whenever !Bladeblitz is performed, the following modifiers are applied to the original A, D, and M:

Credits[]

Many of the technical details of the damage formulas and mechanics have been inspired by J.L. Tseng's (InstructorTrepe), and Redwolf & Mog07's FAQs.