Actor
actor <picnum> <strength> <action> <move> <moveflag 1> [...] <moveflag N>
useractor <type> <picnum> [strength> <action> <move> <moveflag 1> [...] <moveflag N>
Defines parameters for in-game sprites, and allows code to be written for sprites of the specific tile number.
The token enda marks the end of the actor.
actor MYACTOR [...] enda useractor notenemy MYACTOR2 [...] enda
Loosely speaking, "actors" are sprites that run code in game, such as enemies, breakable objects, etc.
When defined with actor or useractor, the sprites will execute their code once every tic, except for dormant enemies. Actors or dormant actors will have a statnum of 1 and 2 respectively.
Prior to v1.4, only tile numbers hard-coded to execute script would work with the actor command. After v1.4 new actors could be defined, and the useractor command was added which allowed actors to be defined as specific types for hard-coded behavior.
Example:
define MYACTOR 3585 actor MYACTOR 0 ifpdistl 1024 { palfrom 32 0 16 0 } enda
See also state.
Parameters
All parameters after <picnum> are optional.
<type> | is the actor type for special behavior. Only used by useractor. |
<picnum> | You can either input a defined name, or the tile number directly. |
<strength> | is the health of the actor. |
<action> | is the intial action an actor uses. |
<move> | is the initial move of the actor. |
<moveflag> | is a sequence of parameters that specify certain hard-coded movement behavior. |
Types
The type is technically a bitfield, though "3" is invalid. It is generally either "enemy", "enemystayput", or "notenemy".
Value | DEFS.CON label | gameflags | Description |
---|---|---|---|
0 | notenemy | (None) | Default. Code begins executing at the start of a level. |
1 | enemy | SFLAG_BADGUY | Enables hard-coded behavior. Code only begins executing upon player sight. |
2 | enemystayput | SFLAG_BADGUY SFLAG_BADGUYSTAYPUT |
Same as "enemy" plus the actor will not leave the sector it is placed in. |
4 | (None) | SFLAG_ROTFIXED | The actor's position in rotating sectors is calculated without rounding errors. |