EarthBound Beginnings/Battle Engine: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
(→‎Enemies: Change enemy pointer info)
(→‎Fight: Add SMAAASH base damage)
Line 9: Line 9:


===Damage Calculation===
===Damage Calculation===
The following method is used to determine the damage of a normal attack:
The following method is used to determine attack damage:


1. Calculate base damage (round BaseDamage down):
1. Calculate base damage (round BaseDamage down):


BaseDamage = [(AttackerOffense * 3) - DefenderDefense] / 4
BaseDamage (normal) = [(AttackerOffense * 3) - DefenderDefense] / 4
 
BaseDamage (SMAAASH!!) = AttackerOffense


2. Get random multiplier from this table.  There is a 50% chance of RandMult being negative.
2. Get random multiplier from this table.  There is a 50% chance of RandMult being negative.
Line 28: Line 30:




This means that any normal attack can hit for 76% to 124% of its base damage.
This means that any attack can hit for 76% to 124% of its base damage.


===Odds of getting a SMAAAASH!!===
===Odds of getting a SMAAAASH!!===
Line 36: Line 38:


If the attacker and defender have equal Fight, the chance of both hitting and getting a SMAAAASH!! is approximately 9%.
If the attacker and defender have equal Fight, the chance of both hitting and getting a SMAAAASH!! is approximately 9%.
===SMAAAASH!! damage calculation===
Currently unknown.


==PSI==
==PSI==

Revision as of 13:41, 22 April 2025

Fight

Hit/miss Calculation

The attacker hits if:

(256 + AttackerFight - DefenderFight) / 2 < (RANDOM 0-255) + 102

Otherwise "[NAME] dodged swiftly." If the attacker and defender have equal Fight, the chance of hitting is approximately 90%.

Damage Calculation

The following method is used to determine attack damage:

1. Calculate base damage (round BaseDamage down):

BaseDamage (normal) = [(AttackerOffense * 3) - DefenderDefense] / 4

BaseDamage (SMAAASH!!) = AttackerOffense

2. Get random multiplier from this table. There is a 50% chance of RandMult being negative.

Odds 7.8% 7.8% 7.8% 7.8% 7.8% 7.0% 7.0% 6.3% 6.3% 5.5% 4.7% 4.7% 3.9% 3.1% 3.1% 2.3% 2.3% 1.6% 1.6% 1.6% 0.8% 0.8% 0.8% 0.8%
RandMult 0 ±1 ±2 ±3 ±4 ±5 ±6 ±7 ±8 ±9 ±10 ±11 ±13 ±14 ±15 ±16 ±17 ±18 ±19 ±20 ±21 ±22 ±23 ±24

3. Calculate final damage (round FinalDamage down):

FinalDamage = BaseDamage * (1 ± 0.1 * RandMult)


This means that any attack can hit for 76% to 124% of its base damage.

Odds of getting a SMAAAASH!!

The chance of a SMAAAASH!! is exactly the same as the chance of missing an attack: The attacker gets a SMAAAASH!! if:

(256 + AttackerFight - DefenderFight) / 2 > (RANDOM 0-255) + 102

If the attacker and defender have equal Fight, the chance of both hitting and getting a SMAAAASH!! is approximately 9%.

PSI

PSI attacks will always hit if the defender is not PSI-protected.

Damage

PSI damage calculation currently unknown.

Healing

PSI healing calculation currently unknown.

Combat data

Allies

Stored at RAM 0x0600-0x067F

  • 00: Unknown (unused?)
  • 01: Status condition
    • Bit 0: Cold
    • Bit 1: Poisoned
    • Bit 2: Puzzled
    • Bit 3: Confused
    • Bit 4: Sleeping
    • Bit 5: Paralyzed
    • Bit 6: Stone
    • Bit 7: Unconscious (can be applied even when HP isn't at 0)
  • 02: Unknown
  • 03-04: HP
  • 05-06: PP
  • 07-08: Offense
  • 09-0A: Defense
  • 0B: Fight
  • 0C: Speed
  • 0D: Wisdom
  • 0E: Strength
  • 0F: Force
  • 10-17: Unknown
  • 18-19: Pointer to name
  • 1A-1F: Unknown

Enemies

Stored at RAM 0x0680-0x06FF

  • 00: Unknown (unused?)
  • 01: Status condition
    • Bit 0: Cold
    • Bit 1: Poisoned
    • Bit 2: Puzzled
    • Bit 3: Confused
    • Bit 4: Sleeping
    • Bit 5: Paralyzed
    • Bit 6: Stone
    • Bit 7: Unconscious (can be applied even when HP isn't at 0)
  • 02: Unknown
  • 03-04: HP
  • 05-06: PP
  • 07-08: Offense
  • 09-0A: Defense
  • 0B: Fight
  • 0C: Speed
  • 0D: Wisdom
  • 0E: Strength
  • 0F: Force
  • 10-17: Attacks
  • 18-19: Pointer to enemy data
  • 1A-1B: Experience
  • 1C-1D: Money
  • 1E: Item dropped
  • 1F: Graphic tileset