Difference between revisions of "InflictStatus"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
(→‎{92} {{IE_92}}: Added a note about the Float bug, and a note about Glain's possible discovery of a Delay parameter.)
(→‎{92} {{IE_92}}: Added an ASM hack that should fix the code that fucks up Floating or Jumping units)
Line 8: Line 8:
 
See Also: [[Event_Instruction_83|{83} {{IE_83}}]] ― [[Event_Instruction_E5|{E5} {{IE_E5}}]](x43,x00)
 
See Also: [[Event_Instruction_83|{83} {{IE_83}}]] ― [[Event_Instruction_E5|{E5} {{IE_E5}}]](x43,x00)
  
Warning: A vanilla bug with InflictStatus causes any event with an InflictStatus command to instantly apply it at the start of the event to any Floating unit with a matching Unit ID, even if the event wasn't actually going to run the command. This can be countered with the AlterParameter command (requires [[Event Instruction Upgrade]]): SET(x0000,xUNID); AlterParameter(x00,x00), InflictStatus(...)
+
Warning: Any event with an InflictStatus command will instantly apply it at the start of the event to any Floating or Jumping unit with a matching Unit ID, even if the event wasn't actually going to run the command. A fix is available here (thanks Glain and Talcall):
 +
 
 +
<code><?xml version="1.0" encoding="UTF-8"?><br>
 +
<Patches><br>
 +
<Patch name="Nyzer Event Hack Thing"><br>
 +
<Description> Kills the routine that causes Jumping or Floating units to auto-apply every InflictStatus command with a matching Unit ID in an event file the moment the file is loaded, even if the event wasn't actually going to run the command. </Description><br>
 +
<Location file="BATTLE_BIN" offset="143CB0" offsetMode="RAM" mode="ASM"><br>
 +
nop<br>
 +
</Location><br>
 +
</Patch><br>
 +
</Patches></code>
  
  

Revision as of 05:27, 20 April 2022

{92} InflictStatus

InflictStatus(xID,x00,xSS,x0C,x00)

Inflict a status on a given unit. The changes are visible even outside of battle.

Statuses can be stacked, but sometimes need to be applied in the correct order; for example, Chicken needs to be applied before Float.

See Also: {83} ChangeStats{E5} WaitForInstruction(x43,x00)

Warning: Any event with an InflictStatus command will instantly apply it at the start of the event to any Floating or Jumping unit with a matching Unit ID, even if the event wasn't actually going to run the command. A fix is available here (thanks Glain and Talcall):

<?xml version="1.0" encoding="UTF-8"?>
<Patches>
<Patch name="Nyzer Event Hack Thing">
<Description> Kills the routine that causes Jumping or Floating units to auto-apply every InflictStatus command with a matching Unit ID in an event file the moment the file is loaded, even if the event wasn't actually going to run the command. </Description>
<Location file="BATTLE_BIN" offset="143CB0" offsetMode="RAM" mode="ASM">
nop
</Location>
</Patch>
</Patches>


Unit ID : Byte (hex)

ID of the unit specified in the ENTD.


x00 : Byte (hex)

This value is always set to x00 in the original game; it probably doesn't have a function.


Status : Byte (hex)

  • x00: Revive with 1 HP if necessary. Note that the use of this command will block any attempts at event-based HP restoration on this unit within the same event. See below for an alternative.
    • (It will also play a sound effect.)
  • x01: Crystal
  • x02: Poison + Critical
  • x80-xFF: Applies any singular status. Requires Event Instruction Upgrade hack v1.35+.
    • x80: Performing
    • x81: Defending
    • x82: Jump
    • x83: Charging
    • x84: Undead
    • x85: Dead
    • x86: Crystal
    • x87:
    • x88: Treasure
    • x89: Cursed
    • x8A: Blood Suck
    • x8B: Silence
    • x8C: Confusion
    • x8D: Darkness
    • x8E: Invite
    • x8F: Petrify
    • x90: Critical
    • x91: Frog
    • x92: Chicken
    • x93: Berserk
    • x94: Transparent
    • x95: Reraise
    • x96: Float
    • x97: Oil
    • x98: Wall
    • x99: Stop
    • x9A: Slow
    • x9B: Haste
    • x9C: Shell
    • x9D: Protect
    • x9E: Regen
    • x9F: Poison
    • xA0: Death Sentence
    • xA1: Reflect
    • xA2: Don't Act
    • xA3: Don't Move
    • xA4: Sleep
    • xA5: Charm
    • xA6: Innocent
    • xA7: Faith


In order to revive a dead unit with full HP, use the following commands. (Requires the Event Instruction Upgrade hack.)

UnitAddress(x??,x70)

LoadAddress(x71,x0058,x70,001)

AND(x0071,x00DF)

SaveAddress(x71,x0058,x70,001)

LoadAddress(x71,x01BB,x70,001)

AND(x0071,x00DF)

SaveAddress(x71,x01BB,x70,001)

ChangeStats(x??,x00,x00,+00999)

RemoveUnit(x??,x00)

AddUnit(x??,x00,x00)

WaitAddUnit()

Unknown : Byte (hex)

Often 0x0C, else 0x01.

This may be a parameter for how long to wait after inflicting the status.


x00 : Byte (hex)

This value is always set to x00 in the original game; it probably doesn't have a function.