Difference between revisions of "FF7/Battle/Damage Calculation"

From Final Fantasy Inside
< FF7‎ | Battle
Jump to navigation Jump to search
my_wiki>NFITC1
my_wiki>NFITC1
Line 1: Line 1:
In Attacks, Items, and Weapons there exists a single byte that tells the Battle Engine how to calculate damage. This is a list of known values with their effects on Base Damage. They are classified into Physical, Magical, and Exact. Physical and Magical will rely on the caster's Strength and Magic stat respectively to calculate base damage. After modification it is multiplied by a random variance ([224..255]/256 or something similar). These will also trigger Physical and Magical Counter Attacks respectively. Exact is just what it sounds like. They do not have a base damage calculation. The entire damage comes from exactly the formula shown and is applied to the target without defense calculation (though element is still taken into account). These will not trigger Physical or Magical Counter Attacks, but will trigger General Counter Attacks such as Adamantoise's Light Shell.
+
In Attacks, Items, and Weapons there exists a single byte that tells the Battle Engine how to calculate damage based on an attack's set Power and the characters stats. Physical and Magical will rely on the caster's "Attack" and "Magic Attack" stat respectively to calculate base damage. This byte is divided into two nybbles (four bits). Upper Nybble determines what considerations are made in calculating damage such as physical/magical, allowing criticals, how to calculate accuracy, etc. There are also three sets of known formulae that are paired with the Upper nybble values. These are selected in the Lower Nybble and determine how to calculate pre-defense damage. After modification it is multiplied by a random variance ([224..255]/256 or something similar) and reduced by a certain amount based on a target's "Defense" or "Magic Defense" stats, depending on the type of damage. These will also trigger Physical and Magical Counter Attacks respectively.  
  
 
For more details, these can be considered Base Damage Modifiers as described in Terence Fergusson's [http://www.gamefaqs.com/console/psx/file/197341/22395 Battle Mechanics FAQ].<br/>
 
For more details, these can be considered Base Damage Modifiers as described in Terence Fergusson's [http://www.gamefaqs.com/console/psx/file/197341/22395 Battle Mechanics FAQ].<br/>
 
''Akari has begun a more detailed [[FF7/DamageFormula|damage formula page]].''
 
''Akari has begun a more detailed [[FF7/DamageFormula|damage formula page]].''
  
{| border="0" cellpadding="5" cellspacing="1" style="background: rgb(0,0,0)" align="center"
+
{| border="1" cellpadding="3" cellspacing="1" align="center" style="border: 1px solid black; border-collapse: collapse;"
! style="background:rgb(204,204,204); width=50px;" align="center" | Value
+
! style="background:rgb(204,204,204); width=50px;" align="center" | Upper Value
! style="background:rgb(204,204,204)" | Type
+
! style="background:rgb(204,204,204)" | Considerations
 +
! style="background:rgb(204,204,204)" | Lower Value
 
! style="background:rgb(204,204,204)" | Formula [Damage = ]
 
! style="background:rgb(204,204,204)" | Formula [Damage = ]
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0x00
+
| align="center" | 0X
|style="background:rgb(255,255,255)" | None
+
| Physical, 100% hit rate, no Critial
|style="background:rgb(255,255,255)" | No Damage Calculation
+
| align="center" | X0
 +
| No Damage calculation
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0x08
+
| align="center" | 1X
|style="background:rgb(255,255,255)" | Exact
+
| Physical, Use Accuracy, Allow Critical
|style="background:rgb(255,255,255)" | Target's HP & MP * (Strength / 32)%
+
| align="center" | X1
 +
| (Power / 16) * (Stat + [(Level + Stat) / 32] * [(Level * Stat) / 32])
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0x11
+
| align="center" | 2X
|style="background:rgb(255,255,255)" | Physical
+
| Magical, Use Accuracy
|style="background:rgb(255,255,255)" | Base * (Strength / 16)
+
| align="center" | X2
 +
| (Power / 16) * ((Lvl + Stat) * 6)
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0x22
+
| align="center" | 3X
|style="background:rgb(255,255,255)" | Magical
+
| Physical, 100% hit rate, ignore Barrier
|style="background:rgb(255,255,255)" | Base * (Strength / 16)
+
| align="center" | X3
 +
| HP * (Power / 32)
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0x23
+
| align="center" | 4X
|style="background:rgb(255,255,255)" | Exact
+
| Physical, 100% hit rate, ignore Barrier
|style="background:rgb(255,255,255)" | Target's HP * (Strength / 32)
+
| align="center" | X4
 +
| MHP * (Power / 32)
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0x24
+
| align="center" | 5X
|style="background:rgb(255,255,255)" | Exact
+
| Physical, 100% hit rate, ignore Barrier
|style="background:rgb(255,255,255)" | Target's MHP * (Strength / 32)
+
| align="center" | X5
 +
| (Power * 22) + ((Level + Stat) * 6)
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0x25
+
| align="center" | 9X
|style="background:rgb(255,255,255)" | Magical
+
| Physical, use Manipulate Accuracy, Allow Critial
|style="background:rgb(255,255,255)" | Base + (Strength * 22)
+
| align="center" | X6
 +
| (Power * 20)
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0x26
+
| align="center" | BX
|style="background:rgb(255,255,255)" | Exact
+
| Physical, use Accuracy, no Critial
|style="background:rgb(255,255,255)" | Strength * 20
+
| align="center" | X7
 +
| (Power * 16)
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0x37
+
| style="background:rgb(204,204,255)" align="center" colspan="2" rowspan="3" | &nbsp;
|style="background:rgb(255,255,255)" | Physical
+
| align="center" | X8
|style="background:rgb(255,255,255)" | Strength * 16; Ignores Barrier; No Base
+
| Recovery
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0x47
+
| align="center" | X9
|style="background:rgb(255,255,255)" | Magical
+
| Throw
|style="background:rgb(255,255,255)" | Strength * 16; Ignores MBarrier; No Base
 
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0x50
+
| align="center" | XA
|style="background:rgb(255,255,255)" | None
+
| Coin
|style="background:rgb(255,255,255)" | No Damage, but can modify status effects
 
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0x60
+
| colspan="4" | &nbsp;
|style="background:rgb(255,255,255)" | Exact
 
|style="background:rgb(255,255,255)" | User's HP
 
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0x61
+
| align="center" | 6X
|style="background:rgb(255,255,255)" | Exact
+
| Physical, Use Accuracy, Allow Critical, Skip Defense, Special Formulae
|style="background:rgb(255,255,255)" | User's MHP - HP
+
| align="center" | X0
 +
| 100% User's HP
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0x68
+
| align="center" | 7X
|style="background:rgb(255,255,255)" | Exact
+
| Magical, Use Accuracy, Skip Defense, Special Formulae
|style="background:rgb(255,255,255)" | Random x 100 (Dice)
+
| align="center" | X1
 +
| User's MHP - HP
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0x69
+
| align="center" | 9X
|style="background:rgb(255,255,255)" | Exact
+
| Physical, use Manipulate Accuracy, Skip Defense, Allow Critial
|style="background:rgb(255,255,255)" | Number of Escapes
+
| align="center" | X6
 +
| User's HP/2
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0x6A
+
| style="background:rgb(204,204,255)" align="center" colspan="2" rowspan="6" | &nbsp;
|style="background:rgb(255,255,255)" | Exact
+
| align="center" | X8
|style="background:rgb(255,255,255)" | Reduces Target's HP to 1
+
| Random x 100
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0x6B
+
| align="center" | X9
|style="background:rgb(255,255,255)" | Exact
+
| Number of Escapes
|style="background:rgb(255,255,255)" | Number of hours on game clock * 100 + number of minutes in game clock
 
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0x6C
+
| align="center" | XA
|style="background:rgb(255,255,255)" | Exact
+
| Target's HP - 1
|style="background:rgb(255,255,255)" | 10 x Target's Kills
 
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0x6D
+
| align="center" | XB
|style="background:rgb(255,255,255)" | Exact
+
| Number of hours on game clock * 100 + number of minutes in game clock
|style="background:rgb(255,255,255)" | 1111 x Target's Materia
 
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0x83
+
| align="center" | XC
|style="background:rgb(255,255,255)" | Exact
+
| 10 x Target's Kills
|style="background:rgb(255,255,255)" | Target's HP * (Strength / 32) if level MOD Attack% = 0
 
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0x96
+
| align="center" | XD
|style="background:rgb(255,255,255)" | Exact
+
| 1111 x Target's Materia
|style="background:rgb(255,255,255)" | User's HP/2
 
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0xA0
+
| colspan="4" | &nbsp;
|style="background:rgb(255,255,255)" | Physical
 
|style="background:rgb(255,255,255)" | Base * (Strength / 16) * [User's Status Effects <sup>See NOTE</sup>]
 
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0xA1
+
| align="center" | AX
|style="background:rgb(255,255,255)" | Physical
+
| Same as 11h, but allow multipliers
|style="background:rgb(255,255,255)" | Base * (Strength / 16) * (3 if user is Near-Death, 1 otherwise)
+
| align="center" | X0
 +
| Damage * [User's Status Effects <sup>See NOTE</sup>]
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0xA2
+
| style="background:rgb(204,204,255)" align="center" colspan="2" rowspan="8" | &nbsp;
|style="background:rgb(255,255,255)" | Physical
+
| align="center" | X1
|style="background:rgb(255,255,255)" | Base * (Strength / 16) * (1 + Dead Allies)
+
| Damage * (3 if user is Near-Death, 1 otherwise)  
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0xA3
+
| align="center" | X2
|style="background:rgb(255,255,255)" | Physical
+
| Damage * (1 + Dead Allies)  
|style="background:rgb(255,255,255)" | Base * (Strength / 16) * (Target's Level / 16)
 
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0xA4
+
| align="center" | X3
|style="background:rgb(255,255,255)" | Physical
+
| Damage * (Target's Level / 16)  
|style="background:rgb(255,255,255)" | Base * (Strength / 16) * (1 + [48 * HP/MHP]) / 16
 
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0xA5
+
| align="center" | X4
|style="background:rgb(255,255,255)" | Physical
+
| Damage * (1 + [48 * HP/MHP]) / 16  
|style="background:rgb(255,255,255)" | Base * (Strength / 16) * (1 + [48 * MP/MMP]) / 16
 
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0xA6
+
| align="center" | X5
|style="background:rgb(255,255,255)" | Physical
+
| Damage * (1 + [48 * MP/MMP]) / 16  
|style="background:rgb(255,255,255)" | Base * (Strength / 16) * (1 + [AP on Weapon / 10000]) / 16
 
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0xA7
+
| align="center" | X6
|style="background:rgb(255,255,255)" | Physical
+
| Damage * (1 + [AP on Weapon / 10000]) / 16  
|style="background:rgb(255,255,255)" | Base * (Strength / 16) * (10 + [Character's Kills / 128]) / 16
 
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0xA8
+
| align="center" | X7
|style="background:rgb(255,255,255)" | Physical
+
| Damage * (10 + [Character's Kills / 128]) / 16  
|style="background:rgb(255,255,255)" | Base * (Strength / 16) * (1 + [Limit Level * Limit Units / 16]) / 16
 
 
|-
 
|-
|style="background:rgb(255,255,255)" align="center" | 0xB1
+
| align="center" | X8
|style="background:rgb(255,255,255)" | Physical
+
| Damage * (1 + [Limit Level * Limit Units / 16]) / 16  
|style="background:rgb(255,255,255)" | Base * Strength / 16; No random criticals
 
 
|}
 
|}
 +
 
<br/>
 
<br/>
NOTE: For A0h base strength, the multiplier is increased by one for the following effects on the user:
+
NOTE: For X0 damage multiplier, the multiplier is increased by one for the following effects on the user:
 
*Near-death
 
*Near-death
 
*Poison
 
*Poison
Line 144: Line 140:
 
*D.Sentence
 
*D.Sentence
 
*Slow-numb
 
*Slow-numb
<br/>As an exception to the above rules, 37h and 47h are used as damage calculations for items. Damage to target is calculated normally while ignoring M/Barrier.
+
<br/>Any damage formula on an attack can still set status, but standard damage formula X0 will not apply any visual changes due to effects.<br/><br/>
 +
Ex.
 +
Midgar Zolom's "Change" attack is damage type 00h, but gets set to poison him when he uses it. He will not glow green until he is targeted by another command that is not damage type 00h.

Revision as of 00:15, 1 April 2010

In Attacks, Items, and Weapons there exists a single byte that tells the Battle Engine how to calculate damage based on an attack's set Power and the characters stats. Physical and Magical will rely on the caster's "Attack" and "Magic Attack" stat respectively to calculate base damage. This byte is divided into two nybbles (four bits). Upper Nybble determines what considerations are made in calculating damage such as physical/magical, allowing criticals, how to calculate accuracy, etc. There are also three sets of known formulae that are paired with the Upper nybble values. These are selected in the Lower Nybble and determine how to calculate pre-defense damage. After modification it is multiplied by a random variance ([224..255]/256 or something similar) and reduced by a certain amount based on a target's "Defense" or "Magic Defense" stats, depending on the type of damage. These will also trigger Physical and Magical Counter Attacks respectively.

For more details, these can be considered Base Damage Modifiers as described in Terence Fergusson's Battle Mechanics FAQ.
Akari has begun a more detailed damage formula page.

Upper Value Considerations Lower Value Formula [Damage = ]
0X Physical, 100% hit rate, no Critial X0 No Damage calculation
1X Physical, Use Accuracy, Allow Critical X1 (Power / 16) * (Stat + [(Level + Stat) / 32] * [(Level * Stat) / 32])
2X Magical, Use Accuracy X2 (Power / 16) * ((Lvl + Stat) * 6)
3X Physical, 100% hit rate, ignore Barrier X3 HP * (Power / 32)
4X Physical, 100% hit rate, ignore Barrier X4 MHP * (Power / 32)
5X Physical, 100% hit rate, ignore Barrier X5 (Power * 22) + ((Level + Stat) * 6)
9X Physical, use Manipulate Accuracy, Allow Critial X6 (Power * 20)
BX Physical, use Accuracy, no Critial X7 (Power * 16)
  X8 Recovery
X9 Throw
XA Coin
 
6X Physical, Use Accuracy, Allow Critical, Skip Defense, Special Formulae X0 100% User's HP
7X Magical, Use Accuracy, Skip Defense, Special Formulae X1 User's MHP - HP
9X Physical, use Manipulate Accuracy, Skip Defense, Allow Critial X6 User's HP/2
  X8 Random x 100
X9 Number of Escapes
XA Target's HP - 1
XB Number of hours on game clock * 100 + number of minutes in game clock
XC 10 x Target's Kills
XD 1111 x Target's Materia
 
AX Same as 11h, but allow multipliers X0 Damage * [User's Status Effects See NOTE]
  X1 Damage * (3 if user is Near-Death, 1 otherwise)
X2 Damage * (1 + Dead Allies)
X3 Damage * (Target's Level / 16)
X4 Damage * (1 + [48 * HP/MHP]) / 16
X5 Damage * (1 + [48 * MP/MMP]) / 16
X6 Damage * (1 + [AP on Weapon / 10000]) / 16
X7 Damage * (10 + [Character's Kills / 128]) / 16
X8 Damage * (1 + [Limit Level * Limit Units / 16]) / 16


NOTE: For X0 damage multiplier, the multiplier is increased by one for the following effects on the user:

  • Near-death
  • Poison
  • Sadness
  • Silence
  • Slow
  • Darkness

and increased by two for the following:

  • D.Sentence
  • Slow-numb


Any damage formula on an attack can still set status, but standard damage formula X0 will not apply any visual changes due to effects.

Ex. Midgar Zolom's "Change" attack is damage type 00h, but gets set to poison him when he uses it. He will not glow green until he is targeted by another command that is not damage type 00h.