Author: HobbitDur

When starting a fight, there is some computation done to decide if you are lucky (or unlucky) for a strike first or a back attack.

A RNG value is computed

\[\text{SurpriseRng} = [0..255] + 20 \times \text{MonsterFlagIncrease} - 20 \times \text{MonsterFlagDecrease} + 20 \times \text{AbilityAlert}\]

With MonsterFlagIncrease, MonsterFlagDecrease being bool (so 1 or 0). If one monster has the flag on his dat file, then the flag is applied (only once so) With AbilityAlert being a bool (0 or 1) set to 1 if the ability Alert is equipped.

For this RNG, 3 possible values are computed:

  • SurprisePositiveForPlayer: if SurpriseRng < 20
  • SurpriseNegativeForPlayer: if SurpriseRng >= 236
  • NoSurprise: if 236 > SurpriseRng > 19

Those value defines for whom the surprise attack is.

From this, some special cases change the result:

if SurpriseNegativeForPlayer and AbilityAlert, then it’s converted to NoSurprise if MonsterFlagImmuneSurpriseAttack and SurprisePositiveForPlayer, then it’s converted to NoSurprise

Now we know if a side has an advantage starting the fight. From this it is decided with \(\frac{1}{2}\) chance if it’s simply an ATB fill (strike first) or also a back attack.

All 4 values are resume here:

Formation Ally ATB Enemy ATB Additional Effects
Back attacked! Empty Full Allies face the opposite direction and take double damage from the first physical attack against them. Fleeing with R2+L2 becomes harder.
Struck first! Empty Full Fleeing with R2+L2 becomes harder.
Chance for first strike! Full Empty  
Back attack! Full Empty Enemies face the opposite direction and take double damage from the first physical attack against them.