Game Opcodes:Set Actor SubState

From FFXIV Classic Wiki
Jump to: navigation, search

Sets the actor's SubState parameters. These effect various passive animations.

Opcode - 0x144
Source - Server
Data Size - 0x28 bytes
Requirements - Must play an Battle Effect packet after for animations to take effect.

Data

Offset Data Type Length Variable Description
0x00 bitfield 0x1 Bytes breakage Turns off and on the partsBreak flags for the model. Used to disable body parts as they are damaged (IE: Ifrit's Horn). Up to 8 flags.
0x01 hi/lo nibble 0x1 Bytes chant Sets the casting animation for a model's left and right hands. HiNibble: Right hand, LoNibble: Left hand. You can check the bid file of a monster to find the animations. Also sets the state of the crafting ball.
0x02 hi nibble 1/2 Bytes modeNumBools Allocates a number of bits for bitfield use in the mode field. Doesn't seem to effect gameplay, rather used for debugging purposes (cmdDev).
0x02 lo nibble 1/2 Bytes guard Sets the guarding animation for a model's left or right hands. Used for when guarding was manual. Bit0: Right Hand, Bit1: Left Hand.
0x03 byte 0x1 Bytes waste Dims the main weapon to signify damage. Unused in retail. Values go from 0-3, only HiNibble changes anything. Used to change the amount of arrows appearing in a quiver.
0x04 bitfield/value 0x1 Bytes mode Sets various passive graphical options for a model. Eg: Ifrit's Plumes, his glow, and HellFire. Can be a value or a bitfield, but the latter seems to be used 99% of the time.
0x05 byte 0x1 Bytes unknown
0x06 uint16 0x2 Bytes motionPack Sets the idle animation for this actor. Used by most event NPCs. Seems to only open "<model>/cmn/fid/<mpackID>" animations. Strangely the lua "get" method only returns a byte.

Notes

  • _getSubStatObject: Returns the second byte; 2 values up to 3 for the HiByte, and a third one just for the LoByte. Labeled: State1, State2, ExtraState.
  • _getSubStatMode: Can be a mix of booleans and a number. Configured by byte 0x3's HiNibble. It sets a value from 0-8, allocating the high area of byte 0x6 for bools. The remaining is for a number. This is the command debugger text:
 // devc set [target] mode [number] [booleans]
 Set ActorSubStat-Mode of [Target] to [number], [booleans]
 [number] is a numerical part, [booleans] is a boolean part
 It is specified as 01011. Specify a hyphen (-) when not specified.
 Example) // dev set <t> mode 30 01011
 Example) // dev set <t> mode - 1110000

Visual Layout

Game Opcode layout
0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7
0x00 breakage chant modeBools guard waste mode unknown motionPack