Immunity bug

The Immunity Bug is a series of bugs in Final Fantasy VI related to status immunity. Immunity is two-way in the game, it keeps the player from applying or taking off a status.

Status immunity merely prevents the toggle of a status; the player can't gain the status, but they can't lose it if they already have it either. This is used to make effects from relics and such permanent, except in specific cases where the game won't apply immunity, like Image. However, there are two instances where immunity is ignored. When a character's HP drops below 1/8, they automatically gain Critical status no matter what. If they're immune to the status, they can't get it from Rippler and they can't lose it either, but they can still get it if their HP drops below 1/8.

Equipment Immunity Bug
If the player equips something that applies a permanent status, such as the Hermes Sandals or the Force Shield, and enter a battle with the equipped character either KO'ed or petrified. Revive or heal them in battle, and notice that the status that their equipment or relic(s) should be providing don't show up. Even worse, if the player tries to apply said status, they'll see it have no effect on them at all. That's because while the game could not apply the status due to them having the KO or Petrify status, it could still apply immunity as there's no code that prevents immunity application. The same can be said for the Cursed Shield and the Zombie status. A returning Gau on the Veldt also demonstrates the bug's effects. He is not considered "alive" until he reappears up at the battle's supposed end, so any equipment and/or relic(s) he's wearing won't inflict their status either.

Status immunities in this game are two-way: if a target is immune to a status but doesn't have it, it can't be given to it; if a target is immune to a status but already has it, it can't be removed from it. For the game to give a permanent status (Reflect from Reflect Ring), it must give both the status and immunity to it. As mentioned in the paragraph above, if a target is turned into a Zombie, it'll always lose certain statuses (Blind, Poison, Critical, Berserk, Confuse, and Sleep), even if they were supposed to be permanent (Cursed Shield). If the player tries to give the target the status again during that battle, they won't be able to, as it's still immune to the status. This can hurt the player in one very minor way associated with the Rage; if the player is taking advantage of Gau's Poison absorption by giving him the Poison status before choosing a Rage that has Poison immunity, Gau will have to lose his current Rage before he can reattain the Poison status.

There are three ways of executing this bug: Cursed Shield, Force Shield, and Rage. First, the shields; when the player equips the Cursed Shield mid-battle, it causes immunity to Silence, Berserk, Confuse, and Sap. However, due to the relationship with Regen, setting Sap immunity also sets Regen immunity. This is a normal rule of the game, the same goes for Haste and Slow. The bug about to be mentioned is easy to predict; when the player de-equips the Cursed Shield in the same battle, the immunities it sets are stripped, and only those it set. This does not account for Regen immunity, so Sap and Regen immunity will remain for the duration of the battle.

For the Force Shield, just have it equipped at the beginning of the battle and leave it on the character for one turn. De-equipping the shield will give the Shell immunity and the status won't come off.

Rage Immunity Bug
For Rage, the player should simply use a Rage that has immunity to or inflicts one of the following status: Sap, Regen, Slow, Haste, Stop, Shell, Protect, Reflect, and Float. Any of those immunities and given status (if applicable) will become permanent.

For example, cast Regen on Gau, then select the Intangir Rage, hopefully he does not use Transfusion for the initial Rage attack. Because Intangir gives Vanish status, kill Gau off with a spell and then revive him. Vanish will be gone, but Regen, Haste, Shell, Protect, and Float will still be there. Try to Dispel the status effects and the player will find immunity still exists (immunity is two-way). Now Gau has Regen, Haste, Shell, Protect, and Float for the rest of the battle due to implied Regen immunity and Intangir Rage giving permanent Haste, Shell, Protect, and Float.

The entire bug comes from the fact that immunity to Regen, Slow, Haste, Stop, Shell, Protect, Reflect, and Float are never removed during battle as there's no code to do so. Other immunities that are also affected but never appear in the normal game include Dance (technically, it does exist, but only for four monsters in the final battle), Rage, Freeze, Reraise, Trance, Chanting, Hidden, and Interceptor Guard.

Monster Immunity Bug
When the Yeti powers up after using or receiving a Green Cherry, all he's really doing is adding all the status Miracle Shoes would give: Regen, Haste, Shell, and Protect. However, he has Sap immunity, which causes Regen immunity (and vice versa), not unlike how the Haste/Slow immunities work in tandem. Because the FB command wasn't programmed to override status immunities, Yeti can't give himself Regen status due to an implied Regen immunity. This is a bug because it's obvious Yeti was supposed to get Regen status, but the programmer either forgot or didn't know what Sap immunity would do to this "attack" and made Yeti attempt the status addition anyway.

Another monster that suffers from this bug is Air Force. The battle script shows that Air Force is meant to gain the Haste status after Laser Gun is defeated, however, due to the way Haste and Slow statuses work, the status will not be applied, as being immune to Slow makes the target also immune to the effects of Haste.