Game Opcodes:Set Actor SubState
From FFXIV Classic Wiki
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 |