Here's the weapons portion of the item list. Everything appears in the order the game stores them internally. Items are briefly explained as needed. Note that while most weapons are grouped with weapons of the same type, the end of the list has a wide variety of unsorted weapons.
For brevity's sake, on this page I'm shortening magic defense to MDef, evade rate to evade, magic evade rate to MEvd, and magic power to magic.
The basic damage formula for pretty much everything is Damage = (A - D) * M. It's what goes into A, D, and M that makes things interesting.
Since M acts as a damage multiplier, anything that modifies M modifies final damage. Modifiers to A and D have more complicated effects on final damage because A and D are compared to each other on the way to computing final damage. Note that most calculations are truncated (rounded down).
A hit rate of 100 does not mean the weapon will always hit, just that it will never fail before the evade check. Hit determination typically works by requiring the attacker to pass a hit check based on hit rate, then allowing the defender an evade check based on evade rate.
Throw attack is the value the Ninja's !Throw command and the Blue Magic Goblin Punch use. It's also the value the game lists in the equipment screen, even though the normal attack is almost always what matters. When no throw attack is listed here, it's the same as the normal attack value.
Trait up means the wielder gains a 50% bonus to A when using magic attacks of that trait.
Weapons with a special damage trait are affected by target resistances as follows: If immune, the target takes no damage. If resistant, A is halved. If the target absorbs the trait, D = 0 and the target is healed instead of damaged. If weak to the trait, A is doubled and D = 0. I'm not sure how these mix.
Critical hits double A and set D to zero.
Weapons | |||
---|---|---|---|
Fists | |||
すで | Unarmed | Critical: 8% | Sell value: n/a |
Attack: 3 | Hit Rate: 100 | Other: - | |
Usable Jobs: All | Damage: A = 3 + Random(0, level/4), D = defense, M = 2 With Monk's Martial Arts: Add (level * 2) to A, add (level * strength)/256 to M. With Martial Arts and Kaiser Knuckles equipped: Add another 50 to A. |
||
Characters with both hands empty attack twice, once with each fist, which you should know already if you've ever used a Monk. |
|||
Daggers | |||
The usual damage formula for a dagger sets A to Random(attack, attack + 3). Actual values based on attack are listed below. |
|||
![]() |
![]() |
Critical: 0% | Sell value: 75 |
Attack: 7 | Hit Rate: 100 | Other: Magic Sword OK | |
Usable Jobs: All but Monk and White Mage | Damage: A = Random(7, 10), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 Additionally treats target evade as half its actual value. |
||
![]() |
![]() |
Critical: 0% | Sell value: 150 |
Attack: 14 | Hit Rate: 100 | Other: Magic Sword OK | |
Usable Jobs: All but Monk and White Mage | Damage: A = Random(14, 17), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 Additionally treats target evade as half its actual value. |
||
![]() |
![]() |
Critical: 0% | Sell value: 225 |
Attack: 23 | Hit Rate: 100 | Other: Magic Sword OK | |
Usable Jobs: All but Monk and White Mage | Damage: A = Random(23, 26), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 Additionally treats target evade as half its actual value. |
||
![]() |
![]() |
Critical: 0% | Sell value: 300 |
Attack: 29 | Hit Rate: 100 | Other: Magic Sword OK, agi +1 | |
Usable Jobs: Ninja | Damage: A = Random(29, 32), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 Additionally treats target evade as half its actual value. |
||
![]() |
![]() |
Critical: 0% | Sell value: 450 |
Attack: 31 | Hit Rate: 100 | Other: Magic Sword OK, casts
![]() |
|
Usable Jobs: All but Monk and White Mage | Damage: A = Random(31, 34), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 Additionally treats target evade as half its actual value. |
||
![]() |
![]() |
Critical: 0% | Sell value: 1300 |
Attack: 36 | Hit Rate: 100 | Other: Magic Sword OK, 25% chance to parry | |
Usable Jobs: All but Monk and White Mage | Damage: A = Random(36, 39), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 Additionally treats target evade as half its actual value. |
||
The parry chance stacks with Sasuke's Katana or the Defender sword if equipped with one of them. Parry doesn't work if the user has 'stop', 'paralysis', 'confusion', or 'sleep' status, or is both the attacker and the target. |
|||
![]() |
![]() |
Critical: 0% | Sell value: 2550 |
Attack: 46 | Hit Rate: 100 | Other: Magic Sword OK, agi +1 | |
Usable Jobs: Ninja | Damage: A = Random(46, 49), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 Additionally treats target evade as half its actual value. |
||
![]() |
![]() |
Critical: 0% | Sell value: 1700 |
Attack: 41 | Hit Rate: 100 | Other: Magic Sword OK | |
Usable Jobs: All but Monk and White Mage | Damage: A = Random(41, 44), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 Additionally treats target evade as half its actual value. |
||
![]() |
![]() |
Critical: 0% | Sell value: 3400 |
Attack: 56 Wind | Hit Rate: 100 | Other: Magic Sword OK, Wind up | |
Usable Jobs: All but Monk and White Mage | Damage: A = Random(56, 59), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 Additionally treats target evade as half its actual value. |
||
![]() |
![]() |
Critical: 0% | Sell value: 10,000 |
Attack: 81 | Hit Rate: 100 | Other: Magic Sword OK, agi +1, casts
![]() |
|
Usable Jobs: All but Monk and White Mage | Damage: A = Random(81, 84), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 Additionally treats target evade as half its actual value. |
||
![]() |
![]() |
Critical: 0% | Sell value: 10,000 |
Attack: 99 | Hit Rate: 100 | Other: Magic Sword OK, agi +1, 25% chance to parry | |
Usable Jobs: Ninja | Damage: A = Random(99, 102), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 Additionally treats target evade as half its actual value. |
||
The parry chance stacks with the Main Gauche if equipped with it, but not with the Defender sword. Parry doesn't work if the user has 'stop', 'paralysis', 'confusion', or 'sleep' status, or is both the attacker and the target. |
|||
Swords | |||
The usual damage formula for a sword sets A to Random(attack, attack * 9/8). Actual values based on attack are listed below. |
|||
![]() |
![]() |
Critical: 0% | Sell value: 140 |
Attack: 15 | Hit Rate: 100 | Other: Magic Sword OK, 2-Hand Grip OK | |
Usable Jobs: Knight, Sword Mage, Blue Mage, Red Mage | Damage: A = Random(15, 16), D = defense, M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 240 |
Attack: 22 | Hit Rate: 100 | Other: Magic Sword OK, 2-Hand Grip OK | |
Usable Jobs: Knight, Sword Mage, Blue Mage, Red Mage | Damage: A = Random(22, 24), D = defense, M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 440 |
Attack: 31 | Hit Rate: 100 | Other: Magic Sword OK, 2-Hand Grip OK | |
Usable Jobs: Knight, Sword Mage, Blue Mage, Red Mage | Damage: A = Random(31, 34), D = defense, M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 1400 |
Attack: 37 Thunder | Hit Rate: 100 | Other: Magic Sword OK, 2-Hand Grip OK | |
Usable Jobs: Knight, Sword Mage, Blue Mage, Red Mage | Damage: A = Random(37, 41), D = defense, M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 2100 |
Attack: 43 | Hit Rate: 100 | Other: Magic Sword OK, 2-Hand Grip OK, casts
![]() |
|
Usable Jobs: Knight, Sword Mage, Blue Mage, Red Mage | Damage: A = Random(43, 48), D = defense, M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 4200 |
Attack: 57 | Hit Rate: 100 | Other: Magic Sword OK, 2-Hand Grip OK | |
Usable Jobs: Knight, Sword Mage, Blue Mage, Red Mage | Damage: A = Random(57, 64), D = defense, M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 2800 |
Attack: 49 | Hit Rate: 100 | Other: Magic Sword OK, 2-Hand Grip OK, casts
![]() |
|
Usable Jobs: Knight, Sword Mage, Blue Mage, Red Mage | Damage: A = Random(49, 55), D = defense, M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 5500 |
Attack: 99 | Hit Rate: 100 | Other: Magic Sword OK,
2-Hand Grip OK, 25% chance to parry, casts ![]() |
|
Usable Jobs: Knight | Damage: A = Random(99, 111), D = defense, M = (level * strength)/128 + 2 |
||
The parry chance stacks with the Main Gauche if equipped with it, but not with Sasuke's Katana. Parry doesn't work if the user has 'stop', 'paralysis', 'confusion', or 'sleep' status, or is both the attacker and the target. |
|||
![]() |
![]() |
Critical: 0% | Sell value: 5 |
Attack: 110 Holy | Hit Rate: 100 | Other: Magic Sword OK, 2-Hand Grip OK, str +5 | |
Usable Jobs: Knight | Damage: A = Random(110, 123), D = defense, M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 5 |
Attack: 140 | Hit Rate: 100 | Other: Magic Sword OK, 2-Hand Grip OK | |
Usable Jobs: Knight | Damage: A = Random(140, 157), D = defense, M = (level * strength)/128 + 2 |
||
Spears | |||
The usual damage formula for a spear sets A to Random(attack, attack * 9/8). Actual values based on attack are listed below. |
|||
![]() |
![]() |
Critical: 0% | Sell value: 50 |
Attack: 55 | Hit Rate: 100 | Other: !Jump doubles M, str +1 | |
Usable Jobs: Wyrmknight | Damage: A = Random(55, 61), D = defense, M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 50 |
Attack: 25 | Hit Rate: 100 | Other: !Jump doubles M, agi +1 | |
Usable Jobs: Wyrmknight | Damage: A = Random(25, 28), D = defense, M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 395 |
Attack: 30 | Hit Rate: 100 | Other: !Jump doubles M | |
Usable Jobs: Wyrmknight | Damage: A = Random(30, 33), D = defense, M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 1350 |
Attack: 38 Thunder | Hit Rate: 100 | Other: !Jump doubles M | |
Usable Jobs: Wyrmknight | Damage: A = Random(38, 42), D = defense, M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 2700 |
Attack: 44 Wind | Hit Rate: 100 | Other: !Jump doubles M | |
Usable Jobs: Wyrmknight | Damage: A = Random(44, 49), D = defense, M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 5100 |
Attack: 62 | Hit Rate: 100 | Other: !Jump doubles M | |
Usable Jobs: Wyrmknight | Damage: A = Random(62, 69), D = defense, M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 4050 |
Attack: 54 | Hit Rate: 100 | Other: !Jump doubles M | |
Usable Jobs: Wyrmknight | Damage: A = Random(54, 60), D = defense, M = (level * strength)/128 + 2 |
||
ツインランサー | Twin Lancer | Critical: 0% | Sell value: 5400 |
Attack: 61 | Hit Rate: 100 | Other: Hits twice | |
Usable Jobs: Thief, Ninja, Mimic | Damage: A = Random(61, 68), D = defense, M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 5 |
Attack: 109 Holy | Hit Rate: 100 | Other: !Jump doubles M, str +3 | |
Usable Jobs: Wyrmknight | Damage: A = Random(109, 122), D = defense, M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 15,000 |
Attack: 119 | Hit Rate: 100 | Other: !Jump doubles M, strong vs. Dragons | |
Usable Jobs: Wyrmknight | Damage: A = Random(119, 133), D = defense, M = (level * strength)/128 + 2 Against Dragons: Automatic critical (A is doubled, D = 0). |
||
Axes | |||
The usual damage formula for an axe sets A to Random(attack * 1/2, attack * 3/2). Actual values based on attack are listed below. |
|||
![]() |
![]() |
Critical: 0% | Sell value: 325 |
Attack: 23 | Hit Rate: 80 | Other: 2-Hand Grip OK | |
Usable Jobs: Berserker | Damage: A = Random(11, 34), D = (defense / 4) M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 525 |
Attack: 28 | Hit Rate: 80 | Other: 2-Hand Grip OK | |
Usable Jobs: Berserker | Damage: A = Random(14, 42), D = (defense / 4) M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 1600 |
Attack: 33 | Hit Rate: 80 | Other: 2-Hand Grip OK | |
Usable Jobs: Berserker | Damage: A = Random(16, 49), D = (defense / 4) M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 3200 |
Attack: 38 | Hit Rate: 80 | Other: 2-Hand Grip OK | |
Usable Jobs: Berserker | Damage: A = Random(19, 57), D = (defense / 4) M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 4800 |
Attack: 48 | Hit Rate: 80 | Other: 2-Hand Grip OK, casts
![]() |
|
Usable Jobs: Berserker | Damage: A = Random(24, 72), D = (defense / 4) M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 6400 |
Attack: 58 | Hit Rate: 80 | Other: 2-Hand Grip OK, ignores row, Earth up, casts Earthquake (25%) | |
Usable Jobs: Berserker | Damage: A = Random(29, 87), D = (defense / 4) M = (level * strength)/128 + 2 |
||
Earthquake is an Earth enemy skill that targets all opponents and misses any with 'levitate' status, but always hits otherwise. A = Random(155, 174), D = MDef, M = (level * magic)/256 + 4. The weapon's trait bonus further increases A for Earthquake by 50%. A Berserker with the Earth Hammer will benefit from abilities like !Summon because the magic boost will increase M for Earthquake. |
|||
![]() |
![]() |
Critical: 0% | Sell value: 5 |
Attack: 71 (+10 @ 5MP) | Hit Rate: 90 | Other: 2-Hand Grip OK, mag +3 | |
Usable Jobs: Berserker | Damage: A = Random(35, 106), D = (defense / 4) M = (level * strength)/128 + 2 When user has at least 5 MP: Consumes 5 MP on attack for a bonus +10 to A and +(level * magic)/128 to M. |
||
Thanks to the bonus damage from MP, a Berserker with the Rune Axe will benefit from abilities like !Summon because the magic boost will both increase M and provide more MP to spend. |
|||
![]() |
![]() |
Critical: 0% | Sell value: 5 |
Attack: 81 | Hit Rate: 80 | Other: 2-Hand Grip OK, ignores row | |
Usable Jobs: Berserker | Damage: A = Random(40, 121), D = (defense / 4) M = (level * strength)/128 + 2 |
||
Katanas | |||
The usual damage formula for a katana sets A to Random(attack, attack * 9/8). Actual values based on attack are listed below. |
|||
![]() |
![]() |
Critical: 12% | Sell value: 2900 |
Attack: 42 | Hit Rate: 100 | Other: 2-Hand Grip OK | |
Usable Jobs: Samurai | Damage: A = Random(42, 47), D = defense, M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 12% | Sell value: 50 |
Attack: 44 | Hit Rate: 100 | Other: 2-Hand Grip OK,
Wind up, 12% chance to cast Wind Scythe instead of striking |
|
Usable Jobs: Samurai | Damage: A = Random(44, 49), D = defense, M = (level * strength)/128 + 2 |
||
Written with kanji as either 風切り or 風斬り, kazekiri translates roughly to "wind-cutting". Wind Scythe is a !Terrain Wind attack that targets all enemies and always hits. A = Random(90, 101), D = MDef, M = (level * magic)/256 + 4. The weapon's trait bonus further increases A for Wind Scythe by 50%. A Samurai with the Kazekiri Blade gets extra benefit from abilities like !Summon since the magic boost increases M for Wind Scythe. |
|||
![]() |
![]() |
Critical: 12% | Sell value: 5900 |
Attack: 58 | Hit Rate: 100 | Other: 2-Hand Grip OK | |
Usable Jobs: Samurai | Damage: A = Random(58, 65), D = defense, M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 12% | Sell value: 4400 |
Attack: 51 | Hit Rate: 100 | Other: 2-Hand Grip OK | |
Usable Jobs: Samurai | Damage: A = Random(51, 57), D = defense, M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 12% | Sell value: 7400 |
Attack: 87 | Hit Rate: 100 | Other: 2-Hand Grip OK | |
Usable Jobs: Samurai | Damage: A = Random(87, 97), D = defense, M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 25% | Sell value: 5 |
Attack: 97 | Hit Rate: 100 | Other: 2-Hand Grip OK | |
Usable Jobs: Samurai | Damage: A = Random(97, 109), D = defense, M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 15% | Sell value: 5 |
Attack: 107 | Hit Rate: 100 | Other: 2-Hand Grip OK, Initiative, casts
![]() |
|
Usable Jobs: Samurai | Damage: A = Random(107, 120), D = defense, M = (level * strength)/128 + 2 |
||
Initiative (unique effect): The wielder begins all battles with a full ATB bar and can act immediately. |
|||
![]() |
![]() |
Critical: 20% | Sell value: 5 |
Attack: 117 | Hit Rate: 100 | Other: 2-Hand Grip OK | |
Usable Jobs: Samurai | Damage: A = Random(117, 131), D = defense, M = (level * strength)/128 + 2 |
||
Rods | |||
All rods determine hit rate like spells rather than like weapons. This means that their effective hit rate is actually (listed hit + user level - target level), and that target MEvd is used rather than the physical evade. It also means that !Aim, !Jump, Sword Dance, and !Wild Strike, which normally guarantee a hit, may miss when using a rod. The usual damage formula for a rod sets A to Random(0, attack * 2). Actual values based on attack are listed below. |
|||
![]() |
![]() |
Critical: 0% | Sell value: 100 |
Attack: 8 | Hit Rate: 70 | Other: Ignores row, mag +1 | |
Usable Jobs: Black Mage, Time Mage, Summoner, Red Mage, Mimic | Damage: A = Random(0, 16), D = MDef, M = (level * magic)/256 + 2 Also uses target MEvd instead of evade. |
||
![]() |
![]() |
Critical: 0% | Sell value: 375 |
Attack: 16 Flame | Hit Rate: 80 | Other: Ignores row,
Flame up, casts ![]() |
|
Usable Jobs: Black Mage, Time Mage, Summoner, Red Mage, Mimic | Damage: A = Random(0, 32), D = MDef, M = (level * magic)/256 + 2 Also uses target MEvd instead of evade. |
||
![]() |
![]() |
Critical: 0% | Sell value: 375 |
Attack: 16 Ice | Hit Rate: 80 | Other: Ignores row,
Ice up, casts ![]() |
|
Usable Jobs: Black Mage, Time Mage, Summoner, Red Mage, Mimic | Damage: A = Random(0, 32), D = MDef, M = (level * magic)/256 + 2 Also uses target MEvd instead of evade. |
||
![]() |
![]() |
Critical: 0% | Sell value: 375 |
Attack: 16 Thunder | Hit Rate: 80 | Other: Ignores row,
Thunder up, casts ![]() |
|
Usable Jobs: Black Mage, Time Mage, Summoner, Red Mage, Mimic | Damage: A = Random(0, 32), D = MDef, M = (level * magic)/256 + 2 Also uses target MEvd instead of evade. |
||
![]() |
![]() |
Critical: 0% | Sell value: 750 |
Attack: 32 Poison | Hit Rate: 80 | Other: Ignores row,
Poison up, casts ![]() |
|
Usable Jobs: Black Mage, Time Mage, Summoner, Red Mage, Mimic | Damage: A = Random(0, 64), D = MDef, M = (level * magic)/256 + 2 Also uses target MEvd instead of evade. |
||
![]() |
![]() |
Critical: 0% | Sell value: 1500 |
Attack: 30 | Hit Rate: 80 | Other: Ignores row, mag +3, casts
![]() |
|
Usable Jobs: Black Mage, Time Mage, Summoner, Red Mage, Mimic | Damage: None. Instead attempts to cancel the target's next action, like the Dancer's !Heated Glance. |
||
The action cancel works just like !Heated Glance: hit rate = (50 + user's level - target's level)%, doubled if the user has a Lamia's Tiara, Rainbow Dress, or Red Shoes equipped (effect does not stack when equipping more than one). Has no effect on Heavy targets, or on targets in 'berserk', 'sleep', 'confused', or 'controlled' status. When attacking with Lilith's Rod, success is indicated by the "rod hit" animation on the target and failure by a "miss" sound. If successful, the target's next action is replaced with the message ドキドキしてる ("heart racing"). |
|||
![]() |
![]() |
Critical: 0% | Sell value: 10,000 |
Attack: 40 Flame/Ice/Thunder | Hit Rate: 80 | Other: Flame up, Ice up, Thunder up, Wind up, Earth up, Poison up | |
Usable Jobs: Black Mage, Time Mage, Summoner, Red Mage, Mimic | Damage: A = Random(0, 80), D = MDef, M = (level * magic)/256 + 2 Also uses target MEvd instead of evade. |
||
Note all the bonuses (every trait but Water and Holy gets a boost). Very attractive for enhancing magic damage. |
|||
Staves | |||
Most staves use either the damage formula typical of axes, with A = Random(attack * 1/2, attack * 3/2) and D = (defense / 4), or the one for spells, with A = Random(attack, attack * 9/8) and D = MDef. Actual values of A based on attack are listed below. |
|||
![]() |
![]() |
Critical: 0% | Sell value: 100 |
Attack: 9 | Hit Rate: 95 | Other: 2-Hand Grip OK | |
Usable Jobs: White Mage, Time Mage, Red Mage, Chemist, Mimic | Damage: A = Random(4, 13), D = (defense / 4) M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 250 |
Attack: 19 | Hit Rate: 95 | Other: - | |
Usable Jobs: White Mage, Time Mage, Red Mage, Chemist, Mimic | Damage: A = Random(9, 28), D = (defense / 4) M = (level * strength)/128 + 2 |
||
The Mithril Staff appears to be unused, possibly because the long-ranged (though less accurate and slightly weaker) Flail would generally overshadow it. |
|||
![]() |
![]() |
Critical: 0% | Sell value: 900 |
Attack: 0 | Hit Rate: 100 | Other: str +5, casts
![]() |
|
Usable Jobs: White Mage, Time Mage, Red Mage, Chemist, Mimic | Damage: None. Casts
![]() |
||
![]() |
![]() |
Critical: 0% | Sell value: 450 |
Attack: 0 | Hit Rate: 100 | Other: mag +2, casts
![]() |
|
Usable Jobs: White Mage, Time Mage, Red Mage, Chemist, Mimic | Damage: None. Casts
![]() |
||
The Healing Staff is a useful way to recover HP without using MP or items. It also damages the Undead. |
|||
![]() |
![]() |
Critical: 0% | Sell value: 1350 |
Attack: 30 Holy (Throw: 45) | Hit Rate: 100 | Other: mag +2, casts
![]() |
|
Usable Jobs: White Mage, Time Mage, Red Mage, Chemist, Mimic | Damage: A = Random(30, 33), D = MDef M = (level * magic)/256 + 4 |
||
![]() |
![]() |
Critical: 0% | Sell value: 10,000 |
Attack: 45 (Throw: 53) | Hit Rate: 100 | Other:
Holy up, strong vs. Undead, casts
![]() |
|
Usable Jobs: White Mage, Time Mage, Red Mage, Chemist, Mimic | Damage: A = Random(45, 50), D = MDef M = (level * magic)/256 + 4 Against Undead: Multiply A by 8. |
||
Actually useful for attacking, at least against the Undead—the effective attack power is 360! White Mages profit from the Holy bonus too. | |||
![]() |
![]() |
Critical: 0% | Sell value: 15,000 |
Attack: 45 Holy (Throw: 60) | Hit Rate: 100 | Other: mag +3, ignores row, casts
![]() |
|
Usable Jobs: White Mage, Time Mage, Red Mage, Chemist, Mimic | Damage: A = Random(45, 50), D = MDef M = (level * magic)/256 + 4 |
||
Bows | |||
ゆみや (yumiya) properly translates to bow and arrows, but writing that out gets cumbersome and adds nothing important to the meaning. The usual damage formula for a bow sets A to Random(attack, attack + 3). Actual values based on attack are listed below. |
|||
![]() |
![]() |
Critical: 0% | Sell value: 1250 |
Attack: 39 Flame | Hit Rate: 70 | Other: 2-handed, ignores row | |
Usable Jobs: Hunter | Damage: A = Random(39, 42), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 Additionally treats target evade as half its actual value. |
||
![]() |
![]() |
Critical: 0% | Sell value: 1250 |
Attack: 39 Ice | Hit Rate: 70 | Other: 2-handed, ignores row | |
Usable Jobs: Hunter | Damage: A = Random(39, 42), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 Additionally treats target evade as half its actual value. |
||
![]() |
![]() |
Critical: 0% | Sell value: 1250 |
Attack: 39 Thunder | Hit Rate: 70 | Other: 2-handed, ignores row | |
Usable Jobs: Hunter | Damage: A = Random(39, 42), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 Additionally treats target evade as half its actual value. |
||
![]() |
![]() |
Critical: 0% | Sell value: 1900 |
Attack: 43 | Hit Rate: 70 | Other: 2-handed, ignores row, inflicts 'darkness' (66%) | |
Usable Jobs: Hunter | Damage: A = Random(43, 46), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 Additionally treats target evade as half its actual value. |
||
![]() |
![]() |
Critical: 0% | Sell value: 2500 |
Attack: 49 | Hit Rate: 70 | Other: 2-handed, ignores row, inflicts 'incapacitated' (8%) | |
Usable Jobs: Hunter | Damage: A = Random(49, 52), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 Additionally treats target evade as half its actual value. |
||
![]() |
![]() |
Critical: 15% | Sell value: 3750 |
Attack: 56 | Hit Rate: 90 | Other: 2-handed, ignores row | |
Usable Jobs: Hunter | Damage: A = Random(56, 59), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 Additionally treats target evade as half its actual value. |
||
![]() |
![]() |
Critical: 30% | Sell value: 5 |
Attack: 101 | Hit Rate: 90 | Other: 2-handed, ignores row, str +3, agi +3 | |
Usable Jobs: Hunter | Damage: A = Random(101, 104), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 Additionally treats target evade as half its actual value. |
||
![]() |
![]() |
Critical: 0% | Sell value: 5 |
Attack: 111 | Hit Rate: 100 | Other: 2-handed, ignores row, strong vs. Beasts | |
Usable Jobs: Hunter | Damage: A = Random(111, 114), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 Additionally treats target evade as half its actual value. Against Beasts: Automatic critical (A is doubled, D = 0). |
||
Harps | |||
Harp attacks work by doing no damage and casting an internal "spell" instead. |
|||
![]() |
![]() |
Critical: 0% | Sell value: 400 |
Attack: 0 (Throw: 15) | Hit Rate: 100 | Other: 2-handed, ignores row, casts Silver Harp effect (100%) | |
Usable Jobs: Minstrel | Damage (of effect): 1/16 of target's current HP. Fails on Heavy types. | ||
![]() |
![]() |
Critical: 0% | Sell value: 800 |
Attack: 0 (Throw: 25) | Hit Rate: 100 | Other: 2-handed, ignores row, casts Dream Harp effect (99%) | |
Usable Jobs: Minstrel | Damage (of effect): 2/16 of target's current HP. Fails on Heavy types. Also inflicts 'sleep'. |
||
![]() |
![]() |
Critical: 0% | Sell value: 1600 |
Attack: 0 (Throw: 35) | Hit Rate: 100 | Other: 2-handed, ignores row, casts Lamia's Harp effect (99%) | |
Usable Jobs: Minstrel | Damage (of effect): 3/16 of target's current HP. Fails on Heavy types. Also inflicts 'confusion'. |
||
![]() |
![]() |
Critical: 0% | Sell value: 5 |
Attack: 0 (Throw: 45) | Hit Rate: 100 | Other: 2-handed, ignores row, casts Apollon's Harp effect (99%) | |
Usable Jobs: Minstrel | Damage (of effect): A = Random(75, 84), D = MDef M = (level * magic)/256 + 4 Against Dragon or Undead: Multiply A by 8. |
||
This harp is actually useful for inflicting damage. It acts as a 600-power spell against Dragons and the Undead (Black Magic -ga spells are 185). A Minstrel with Apollon's Harp gets extra benefit from abilities like !Summon since the magic boost increases its M. |
|||
Whips | |||
Paralyze is a spell unique to whips that inflicts 'paralysis' status on the target. It always works unless the target is immune. The usual damage formula for a whip sets A to Random(attack, attack + 3). Actual values based on attack are listed below. |
|||
![]() |
![]() |
Critical: 0% | Sell value: 550 |
Attack: 26 | Hit Rate: 90 | Other: Ignores row, casts Paralyze (50%) | |
Usable Jobs: Beast Tamer | Damage: A = Random(26, 29), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 1650 |
Attack: 52 | Hit Rate: 90 | Other: Ignores row, casts Paralyze (50%) | |
Usable Jobs: Beast Tamer | Damage: A = Random(52, 55), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 1100 |
Attack: 42 | Hit Rate: 90 | Other: Ignores row, casts
![]() |
|
Usable Jobs: Beast Tamer | Damage: A = Random(42, 45), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 |
||
A Beast Tamer with the Shock Whip gets extra benefit from abilities like !Summon since the magic boost increases M for Thunder. |
|||
![]() |
![]() |
Critical: 0% | Sell value: 10,000 |
Attack: 82 | Hit Rate: 90 | Other: Ignores row, casts
![]() |
|
Usable Jobs: Beast Tamer | Damage: A = Random(82, 85), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 |
||
A Beast Tamer with the Firebute gets extra benefit from abilities like !Summon since the magic boost increases M for Figa. |
|||
![]() |
![]() |
Critical: 0% | Sell value: 2200 |
Attack: 92 | Hit Rate: 100 | Other: Ignores row, casts Paralyze (50%), strong vs. Dragons | |
Usable Jobs: Beast Tamer | Damage: A = Random(92, 95), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 Additionally treats target evade as half its actual value. Against Dragons: Automatic critical (A is doubled, D = 0). |
||
Bells | |||
The usual damage formula for a bell sets A to Random(attack * 1/2, attack * 3/2). Actual values based on attack are listed below. |
|||
![]() |
![]() |
Critical: 0% | Sell value: 250 |
Attack: 24 | Hit Rate: 100 | Other: Ignores row | |
Usable Jobs: Geomancer | Damage: A = Random(12, 36), D = MDef M = (level * magic)/128 + (level * agility)/128 + 2 No effect if Timespace spell ![]() |
||
Wow, now there's a term you don't see every day. ギヤマン (GIYAMAN) has two meanings as listed by the dictionary on goo. One was used during the Edo period (1603 to 1868), refers to diamond, and comes from the Dutch word "diamant". The other is a rather quaint term for glass or glasswork (arising from the use of diamond to cut glass). Considering that the bell is of little value, the second meaning is more likely. I suppose I could call it a "Diamant Bell" too, but that would just be more confusing... |
|||
![]() |
![]() |
Critical: 0% | Sell value: 4500 |
Attack: 35 | Hit Rate: 99 | Other: Ignores row, Earth up, casts Earthquake (25%) | |
Usable Jobs: Geomancer | Damage: A = Random(17, 52), D = (defense / 4) M = (level * strength)/128 + 2 |
||
Earthquake is an Earth enemy skill that targets all opponents and misses any with 'levitate' status, but always hits otherwise. A = Random(155, 174), D = MDef, M = (level * magic)/256 + 4. The weapon's trait bonus further increases A for Earthquake by 50%. A Geomancer with the Earth Bell gets extra benefit from abilities like !Summon since the magic boost increases M for Earthquake. |
|||
![]() |
![]() |
Critical: 0% | Sell value: 5 |
Attack: 45 (+10 @ 5 MP) | Hit Rate: 99 | Other: Flame up, Ice up, Thunder up, Wind up, Earth up, Poison up, Holy up | |
Usable Jobs: Geomancer | Damage: A = Random(22, 67), D = (defense / 4) M = (level * strength)/128 + 2 When user has at least 5 MP: Consumes 5 MP on attack for a bonus +10 to A and +(level * magic)/128 to M. |
||
The lack of any bonus to Water is disappointing, especially given some of the outcomes for !Terrain. Thanks to the bonus damage from MP, a Geomancer with the Rune Bell gets extra benefit from abilities like !Summon since the magic boost increases M and provides more MP to spend. |
|||
![]() |
![]() |
Critical: 0% | Sell value: 750 |
Attack: 55 | Hit Rate: 100 | Other: Ignores row | |
Usable Jobs: Geomancer | Damage: A = Random(27, 82), D = MDef M = (level * magic)/128 + (level * agility)/128 + 2 No effect if Timespace spell ![]() |
||
Unsorted Weapons | |||
Most of these unsorted weapons use the normal damage formula for their type, but there are a number of exceptions, such as the Rune Blade sword inflicting damage like an axe, or the Maneater dagger acting like a spear. Actual values of A based on attack power are listed below. |
|||
![]() |
![]() |
Critical: 0% | Sell value: 50 |
Attack: 0 | Hit Rate: 100 | Other: - | |
Usable Jobs: None, not even Normal | Damage: ?? | ||
I don't think this thing actually exists, except as data in the ROM. |
|||
![]() |
![]() |
Critical: 0% | Sell value: 8000 |
Attack: 84 | Hit Rate: 25 | Other: mag +5, drains target's HP | |
Usable Jobs: Knight | Damage: A = Random(84, 94), D = MDef M = (level * magic)/256 + 4 Heals user by damage amount. Healing and damage reversed against the Undead. |
||
Hit determination uses the formula for spells, so the actual hit rate is (25 + user level - target level)%, and target MEvd is used for evasion. Unlike rods, this still always hits when used with !Aim, !Jump, Sword Dance, or !Wild Strike. |
|||
![]() |
![]() |
Critical: 0% | Sell value: 9500 |
Attack: 50 (+20 @ 8 MP) | Hit Rate: 99 | Other: 2-Hand Grip OK | |
Usable Jobs: Knight, Sword Mage, Blue Mage, Red Mage | Damage: A = Random(25, 75), D = (defense / 4) M = (level * strength)/128 + 2 When user has at least 8 MP: Consumes 8 MP on attack for a bonus +20 to A and +(level * magic)/128 to M. |
||
Thanks to the bonus damage from MP, a character with the Rune Blade gets extra benefit from abilities like !Summon since the magic boost increases M and provides more MP to spend. |
|||
![]() |
![]() |
Critical: 0% | Sell value: 5000 |
Attack: 63 Flame | Hit Rate: 100 | Other: Magic Sword OK, 2-Hand Grip OK | |
Usable Jobs: Knight | Damage: A = Random(63, 70), D = defense M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 5500 |
Attack: 65 Ice | Hit Rate: 100 | Other: Magic Sword OK, 2-Hand Grip OK | |
Usable Jobs: Knight | Damage: A = Random(65, 73), D = defense M = (level * strength)/128 + 2 |
||
えんげつりん | Full Moon | Critical: 0% | Sell value: 550 |
Attack: 35 | Hit Rate: 95 | Other: Ignores row | |
Usable Jobs: Thief, Ninja, Mimic | Damage: A = Random(35, 38), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 |
||
しゅりけん | Shuriken | Critical: 0% | Sell value: 5 |
Attack: 0 (Throw: 50) | Hit Rate: 100 | Other: For use with Ninja's !Throw | |
Usable Jobs: None | Damage: See !Throw command | ||
ふうましゅりけん | Fuuma Shuriken | Critical: 0% | Sell value: 5 |
Attack: 0 (Throw: 117) | Hit Rate: 100 | Other: For use with Ninja's !Throw | |
Usable Jobs: None | Damage: See !Throw command | ||
![]() |
![]() |
Critical: 0% | Sell value: 1 |
Attack: 1 (Throw: 100) | Hit Rate: 100 | Other: 2-Hand Grip OK | |
Usable Jobs: Knight, Sword Mage, Blue Mage, Red Mage | Damage: Always 1 | ||
The Excalipur's attack acts as a spell that inflicts exactly 1 damage and cannot miss. The whole point of the naming is to resemble "Excalibur" so closely as to be easily mistaken for it—note that エクスカリパー (Excalipur) and エクスカリバー (Excalibur) are identical except for the difference between the ゛ and ゜on the ハ character. "Excalipur" (also used in the PSX official translation) reflects this fairly well, with the only visual difference being the line up in 'b' and down in 'p', and also reflects the pronunciation, for what it's worth. Perhaps even better is "Excailbur" (used in RPGe's unofficial translation), which changes the spelling only by swapping the 'i' and 'l', already adjacent and very similar in appearance, and perhaps hides the difference better than any other option. The GBA official translation's "Excalipoor" rates a solid fail, though. Not even Gilgamesh could overlook the difference between "bur" and "poor". |
|||
![]() |
![]() |
Critical: 0% | Sell value: 7500 |
Attack: 72 | Hit Rate: 100 | Other: Ignores row, casts Paralyze (50%), strong vs. Beasts | |
Usable Jobs: Beast Tamer | Damage: A = Random(72, 75), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 Additionally treats target evade as half its actual value. Against Beasts: Automatic critical (A is doubled, D = 0). |
||
![]() |
![]() |
Critical: 0% | Sell value: 390 |
Attack: 16 | Hit Rate: 70 | Other: 2-Hand Grip OK, ignores row | |
Usable Jobs: White Mage, Time Mage, Red Mage, Chemist, Mimic | Damage: A = Random(8, 24), D = (defense / 4) M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 3900 |
Attack: 50 | Hit Rate: 90 | Other: 2-Hand Grip OK, ignores row | |
Usable Jobs: White Mage, Time Mage, Red Mage, Chemist, Mimic | Damage: A = Random(25, 75), D = (defense / 4) M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 5000 |
Attack: 0 | Hit Rate: 100 | Other: Ignores row, mag +2, casts a spell (99%), casts ![]() |
|
Usable Jobs: Black Mage, Time Mage, Summoner, Red Mage, Mimic | Damage: None. Casts a spell instead. | ||
Attacking with the Wonder Wand casts
a spell. After each use, it changes to a different spell. The spell
progression cycles through
The list position saves across battles, and all Wonder Wands share it if you have more than one. |
|||
![]() |
![]() |
Critical: 0% | Sell value: 15,000 |
Attack: 150 ~ 0 | Hit Rate: 100 | Other:Magic Sword OK, 2-Hand Grip OK, str +5, fleeing combat lowers attack (minimum 0) |
|
Usable Jobs: Knight | Damage: A = Max( 150 - times run, 0 ), D = defense M = (level * strength)/128 + 2 |
||
Potentially the most powerful weapon in the game, but the attack can dwindle with surprising ease, and you have to pass up the Chicken Knife to get the Brave Blade. Factor in how few jobs can actually wield it, and it's questionable how good this really is. |
|||
すす | Soot | Critical: 0% | Sell value: 1 |
Attack: 0 (Throw: 25) | Hit Rate: 100 | Other: For use with Ninja's !Throw | |
Usable Jobs: None | Damage: See !Throw command | ||
![]() |
![]() |
Critical: 0% | Sell value: 1 |
Attack: 1 ~ 127 | Hit Rate: 100 | Other: Magic Sword OK, agi +5, uses !Scram (25%), fleeing combat raises attack (maximum 127) |
|
Usable Jobs: All but Monk and White Mage | Damage: A = Min( (times run)/2, 127 ), D = defense M = (level * strength)/128 + (level * agility)/128 + 2 Additionally treats target evade as half its actual value. |
||
High damage potential for nearly every job, but that random !Scram is a major downside, and you have to pass up the Brave Blade to get the Chicken Knife. Note that some commands prevent random skill activation (!Charge, !Mug, !Jump, and !Wild Strike). |
|||
ライジングサン | Rising Sun | Critical: 0% | Sell value: 5500 |
Attack: 71 | Hit Rate: 90 | Other: Ignores row | |
Usable Jobs: Thief, Ninja, Mimic | Damage: A = Random(71, 74), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 750 |
Attack: 38 | Hit Rate: 70 | Other: 2-Handed, ignores row | |
Usable Jobs: Hunter | Damage: A = Random(38, 41), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 Additionally treats target evade as half its actual value. |
||
![]() |
![]() |
Critical: 0% | Sell value: 4250 |
Attack: 69 | Hit Rate: 80 | Other: 2-Handed, ignores row, uses !Wild Strike (25%) | |
Usable Jobs: Hunter | Damage: A = Random(69, 72), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 5000 |
Attack: 0 | Hit Rate: 100 | Other: Ignores row, casts
![]() |
|
Usable Jobs: Hunter | Damage: None | ||
![]() |
![]() |
Critical: 0% | Sell value: 10,000 |
Attack: 91 | Hit Rate: 100 | Other: 2-Handed, ignores row, strong vs. Flying | |
Usable Jobs: Hunter | Damage: A = Random(91, 94), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 Additionally treats target evade as half its actual value. Against Flying: Automatic critical (A is doubled, D = 0). |
||
![]() |
![]() |
Critical: 0% | Sell value: 2950 |
Attack: 43 | Hit Rate: 85 | Other: 2-Hand Grip OK, casts
![]() |
|
Usable Jobs: Berserker | Damage: A = Random(21, 64), D = (defense / 4) M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 20,000 |
Attack: 91 | Hit Rate: 90 | Other: 2-Hand Grip OK | |
Usable Jobs: Berserker | Damage: A = Random(45, 136), D = (defense / 4) M = (level * strength)/128 + 2 |
||
![]() |
![]() |
Critical: 0% | Sell value: 1 |
Attack: 89 | Hit Rate: 100 | Other: Jump doubles M, all stats +2, strong vs. Humanoids | |
Usable Jobs: Dancer | Damage: A = Random(89, 100), D = defense, M = (level * strength)/128 + 2 Against Humanoids: Automatic critical (A is doubled, D = 0). |
||
![]() |
![]() |
Critical: 0% | Sell value: 3400 |
Attack: 66 | Hit Rate: 100 | Other: Magic Sword OK, agi +1, uses !Mug (33%) | |
Usable Jobs: All but Monk and White Mage | Damage: A = Random(66, 69), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 Additionally treats target evade as half its actual value. |
||
![]() |
![]() |
Critical: 0% | Sell value: 2900 |
Attack: 51 | Hit Rate: 100 | Other: Magic Sword OK, agi +1, mag +1, uses !Dance (50%) | |
Usable Jobs: All but Monk and White Mage | Damage: A = Random(51, 54), D = defense M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2 Additionally treats target evade as half its actual value. |
||
![]() |
![]() |
Critical: 0% | Sell value: 10,000 |
Attack: 102 | Hit Rate: 100 | Other: Magic Sword OK, 2-Hand Grip OK, mag +3 | |
Usable Jobs: Knight, Sword Mage, Blue Mage, Red Mage | Damage: A = Random(102, 114), D = defense M = (level * strength)/128 + 2 |
||
Spares | |||
![]() |
![]() |
||
![]() |
![]() |
||
![]() |
![]() |
||
![]() |
![]() |
||
![]() |
![]() |
||
![]() |
![]() |
||
![]() |
![]() |
||
![]() |
![]() |
||
![]() |
![]() |
||
![]() |
![]() |
||
![]() |
![]() |
||
![]() |
![]() |
||
![]() |
![]() |
||
![]() |
![]() |
||
![]() |
![]() |
||
![]() |
![]() |
||
![]() |
![]() |
||
There's a sizable bug in M determination for many weapons. Where:
M = (level * strength)/128 + [ (level * agility) % 256 ]/128 + 2
it was intended to be:
M = (level * strength)/128 + (level * agility)/128 + 2
but a coding error causes only the low byte of (level * agility) to be used rather than the full 16-bit value. Add integer division into the mix, and the M bonus from agility is always either 0 or 1 (using integer division instead of floating point is arguably another poor decision, but I won't get into that here).
This bug affects all knives except the Maneater (which calculates damage like a spear anyway) and the Chicken Knife, all bows except the Magicseal Bow (which doesn't inflict damage in the first place), all whips, the Full Moon, and the Rising Sun
How crippling is this? At low enough levels, there's no difference, since the M bonus for agility won't be above 1 anyway, but it gets bad quickly. Let's say we have Lenna as level 20 Hunter. Lenna as a Hunter has a strength of 41 and an agility of 38. She'll probably be using a bow, which uses this formula to calculate M. So, using the intended formula:
M = (20 * 41)/128 + (20 * 38)/128 + 2
M = (820)/128 + (760)/128 + 2
M = 6.40625 + 5.9375 + 2
And because of integer division, that's actually 6+5+2 = 13.
But with the actual formula that uses only the low byte, we instead have:
M = (20 * 41)/128 + [(20 * 38)%256]/128 + 2
M = (820)/128 + (248)/128 + 2
M = 6.40625 + 1.9375 + 2
And because of integer division, that's actually 6+1+2 = 9. That's a significant difference in the multiplier, even at this relatively low level and unexceptional agility. It's the difference between (for example) 297 damage and 429 damage, and the weapons affected suffer for it, as do abilities that raise agility. If you prefer percentages, typical actual damage is not quite 70% of what it should be with these parameters.
Just for argument's sake, let's try a more extreme example. Take Karulu (highest agility, lowest strength) as Normal with only Thief mastered (for even more agility) at level 99, using Sasuke's Katana, an affected weapon that also has an agi +1 bonus. Let's also give her a Black Hood (agi +2), Shinobi Garb (agi +1), and Thief's Bracer (agi +1). Level = 99, strength = 26, agility = 44+5.
M = (99 * 26)/128 + (99 * 49)/128 + 2
M = (2574)/128 + (4851)/128 + 2
M = 20.109375 + 37.8984375 + 2
And because of integer division, that's actually 20+37+2 = 59.
But with the actual formula that uses only the low byte, we instead have:
M = (99 * 26)/128 + [(99 * 49)%256]/128 + 2
M = (2574)/128 + (243)/128 + 2
M = 20.109375 + 1.8984375 + 2
And because of integer division, that's actually 20+1+2 = 23. That's a huge difference, though I'll grant it's a contrived example. The practical effect is (for example) the difference between 1909 damage and 4897 damage. Actual damage is about 39% of what it ought to be.
Still not extreme enough? Okay, make Karulu a Summoner (minimum possible strength at 15) with a dagger-class weapon, then use the Minstrel's Agility Song to raise agility to 99. The M difference starts at level 3 (M = 2 instead of 4) and gets progressively, if erratically, worse up to level 99. M should then be 89, but is actually only 13, an awful 14.6% of what it ought to be.
Just to be fair, let's go to the other extreme too. Make Galuf a Berserker (minimum possible agility at 15) with a dagger-class weapon, then use the Minstrel's Strength Song to raise strength to 99. The M difference doesn't start until level 18 (M = 15 instead of 17), but increases gradually as levels increase. At level 99, M should be 89, but is actually only 79, about 89% of what it should be. Not a huge loss, yet a loss all the same.
The other odd, and in a way even more serious, effect this has is that damage can decrease at level up. Let's look at how this works...
Let's take Lenna as a 20 Hunter again. As described above, her M with the bugged formula is 9. Now let's increase her a level. Everything else stays the same, so now we have:
M = (21 * 41)/128 + [(21 * 38)%256]/128 + 2
M = (861)/128 + (30)/128 + 2
M = 6.7265625 + 0.234375 + 2
And because of integer division, that's actually 6+0+2 = 8. If average damage was 297 before, it's now 264. Ick.
As noted above, the intended formula gives her an M of 13 at level 20. Increasing to level 21 gives:
M = (21 * 41)/128 + (21 * 38)/128 + 2
M = (861)/128 + (798)/128 + 2
M = 6.7265625 + 6.234375 + 2
And because of integer division, that's actually 6+6+2 = 14. If average damage was 429 before, it's now 462. That's more like it.
And of course, comparing values right after a drop only makes the ratios worse. Lenna at level 21 as a Hunter with a bow causes about 57% of the damage she ought to, sharply down from about 69% at level 20.
Lest you think this is a very rare happening, I tried charting Hunter Lenna's M values from level 1 to 99, and found that her M drops at nine different levels (14, 21, 27, 34, 48, 61, 68, 81, and 95), with a total of 14 levels having a lower M value than a previous level. Exact numbers vary depending on stats, with more of these tending to happen at higher agility and fewer at higher strength, but it's a definite problem.
Incidentally, the extreme example with Karulu above (15 strength, 99 agility) has 33 drops and 41 levels with lower M than a previous level. The Galuf Berserker extreme example (99 strength, 15 agility) has only one drop, at level 18, which is also the only level with a lower M than a previous level (all other drops in M from agility are balanced out by gains in M from strength).
And as long as we're working in the realm of theory, which values give the worst possible results? Strength should be 0, so that there are never gains to M from strength. Then it's just a matter of running through every agility value from 1 to 255. 0 is out, since there can't be any losses if the bonus is never positive to begin wtih, and there's no point going beyond 255 because the value is being reduced mod 256. In realistic agility values, 57 is the loser, with 22 drops and 53 levels with a lower M than a previous level. In reachable values, 86 agility loses, with 33 drops and tying 57 agility with 53 levels worse than previous levels. The overall loser is 171 agility, which yields 33 drops and a whopping 66 levels with worse M than a previous level! While this means little in practice, it's still kinda fun.
Also note that in the rare case that strength is an exact multiple of agility/2, no drops occur. Why not? You lose M from agility every other time it ought to increase, meaning every time (level * agility) reaches a new multiple of 256. However, you gain M from strength every time (level * strength) reaches a new multiple of 128. If strength is an exact multiple of agility/2, then every level that loses M to agility also gains M from strength, so no net loss occurs, just a failure to earn a net gain.
E-mail comments, corrections, etc.
Return to Final Fantasy 5 index