• Opcode: 0x041
  • Short name: CMOVE
  • Long name: C? Move

Argument

none

Stack

X

Y

Z

Movement angle (usually 0)

CMOVE

Description

Move this entity. Unlike the other MOVE functions, this will not play the entity’s walking animation or make it turn. It will retain its current facing and continue its current animation as it moves. The top stack value is popped into the movement-angle field (move_angle_current, entity+538); the next three are the destination X, Y, Z (move_pos_x/y/z, entity+436/+440/+444, shifted left by 12). The handler sets motion_state (entity+572) to 1 and raises a flag at entity+576 (which distinguishes this “no-turn” move from MOVE). It pauses until arrival and only restores the idle animation on completion.

PC handler: SCRIPT_CMOVE.

Function addresses

Function Address Description
SCRIPT_CMOVE 0x523AD0 Field script opcode handler (verified IDA function)