Type

Type identifies the intended purpose of a model. Newly spawned entities get a set of default behaviors and flags based on their type. Various Internal logic routines and legacy faction interactions are also based on type.

Types

Type is a model level property used to set up an entity’s initial default behaviors and then act as a base category for the entity’s purpose.

Endlevel

If this item is touched by a player, it adds its score value (if any) to the player’s score and the current stage ends immediately.

Enemy

Computer controlled entities that oppose the players. Enemies are hostile toward players and attack on sight. If there is a group of enemies, the players must defeat them all to continue. By default, a level ends automatically if it has no enemies left to spawn (or has no enemies at all).

Item

The entity is a stationary item which can be picked up by other entities. Items perform one of the following on the entity that picks them up, and also trigger a didhitscript to allow an endless variety of other effects. By default computer controlled entities with a GET animation will seek out and collect items if they can use them.

  • Add their score value to player’s score (players only).
  • Add an extra life to player (players only).
  • Add their health to collector’s health.
  • Switch collector to a weapon model (see Weapons).
  • Add ammo to a limited use weapon (see Weapons).

None

Utility type entity. None types are “neutral” entities used for various purposes by legacy modules. In general you should avoid using this type as it is meant primary for objects that are fully out of play.

NPC

Computer controlled entities that do not count toward groups, waits, or level completion. By default NPCs are hostile toward players, but they are useful to create computer controlled allies.

Obstacle

Stationary object. Obstacles are subject to damage and can drop items on death, but they are otherwise simple by design with no attack, movement, or falling.

Panel

The entity will scroll together with level depending on its speedf setting.

  • 1.0 = Playfield.
  • 0.5 = Native background.

This type is useful to add animated scrolling levels to a level. Note that any entity type can be made to scroll with the level with the scroll property.

Player

Players are the human controlled game objects. Players can attack and damage enemies, obstacles, and each other.

Projectile

Entity type specialized for projectiles used by all other entity types.

Pshot

Legacy type used for player projectiles. This type is maintained only for legacy compatibility and should not be used.

Steamer

Legacy decorative object. It continuously spawns an entity with upward velocity (using the model name “Steam”) and alpha blending enabled.

Text

Text entities are designed to act as pop-up text or graphics. While a text item is onscreen, all other entities freeze in place. Once its IDLE animation completes, the text entity kills itself and action continues. By default players may skip text with a button press (optionally disabled).

Trap

Traps are similar to obstacles, but are able to attack other entities. Traps are hostile to both players and enemies. Entities hit by a trap’s attack cannot be hit by the same trap again unless the trap knocks them down or they take damage from a different entity.

Subtypes

Subtypes add a second set of behaviors to the primary type. Add with types, it is important to note these are default behaviors. You can achieve much more nuanced effects by altering the specific properties that control behavior.

Arrow

Arrows fly in a straight line across the screen until they are out of play or hit another entity.

Biker

Bikers fly across the screen until just off sight, then reappear moving in the opposite direction from a random Z axis position. They will continue this pattern indefinitely until hit by an attack. The biker will then attempt to spawn an entity with its rider property (default “K'”). The rider will appear using same palette as biker, falling, and damaged by the attack.

Both

For endlevel items. All active players must be touching the item to end a stage.

Chase

Has a different effect depending on type:

  • Enemy – The enemy pursues entities it is hostile toward directly as possible. It will never sidestep or backpedal unless trying to get around an obstruction. If the entity has a run animation and run properties set, it will run to catch up to targets that are far away. Note NPC types use this behavior by default.
  • Projectiles – Entities thrown as a projectile will home in on targets along the X and Z axis.

Flydie

Obstacles fly off the screen playing their fall animation when destroyed.

Follow

NPCs attempt to follow their parent entity (if any) entity that spawned or summoned it. Uses range setting in idle animation to determine how close it will follow. If the npc exceeds the minimum range and no entities it is hostile towards are nearby, it will move to the spawning entity normally. If it exceeds maximum range, the npc will warp to the parent entity instantly and play its respawn animation if available.

Noskip

Disables the player skipping text entities with a button press.

Notgrab

The entity cannot be grabbed by others.

Project

Similar to a weapon, but only changes a property called project on the collecting entity. See Weapons for details.

Touch

Item types are collectable by touch alone.

Weapon

The item is a weapon pickup. See Weapons for details.

Script

Both type and subtype are accessible as a model property. Both employ bitmask constants, and it is therefore possible to evaluate for more than one type at once in script. You can also assign more than one type to an entity, although this may cause undefined behavior.

Type

  • openborcosntant("TYPE_UNDELCARED") – No type at all.
  • openborcosntant("TYPE_NONE")
  • openborcosntant("TYPE_NO_COPY") – Don’t copy type data to/from another model.
  • openborcosntant("TYPE_PLAYER")
  • openborcosntant("TYPE_ENEMY")
  • openborcosntant("TYPE_ITEM")
  • openborcosntant("TYPE_OBSTACLE")
  • openborcosntant("TYPE_PROJECTILE")
  • openborcosntant("TYPE_STEAMER")
  • openborcosntant("TYPE_SHOT")
  • openborcosntant("TYPE_TRAP")
  • openborcosntant("TYPE_TEXTBOX")
  • openborcosntant("TYPE_ENDLEVEL")
  • openborcosntant("TYPE_NPC")
  • openborcosntant("TYPE_PANEL")
  • openborcosntant("TYPE_ANY") – Combines all the following masks: TYPE_NONE, PLAYER, TYPE_ENEMY, TYPE_ITEM, TYPE_OBSTACLE, TYPE_PROJECTILE, TYPE_STEAMER, TYPE_SHOT, TYPE_TRAP, TYPE_TEXTBOX, TYPE_ENDLEVEL, TYPE_NPC, TYPE_PANEL
  • openborcosntant("TYPE_NO_CHECK") – Combines bitmasks to ignore in logic checks.

Subtype

  • openborconstant("SUBTYPE_NONE") – No subtype at all.
  • openborconstant("SUBTYPE_BIKER")
  • openborconstant("SUBTYPE_NOTGRAB")
  • openborconstant("SUBTYPE_ARROW")
  • openborconstant("SUBTYPE_TOUCH")
  • openborconstant("SUBTYPE_WEAPON")
  • openborconstant("SUBTYPE_NOSKIP")
  • openborconstant("SUBTYPE_FLYDIE")
  • openborconstant("SUBTYPE_BOTH")
  • openborconstant("SUBTYPE_PROJECTILE")
  • openborconstant("SUBTYPE_FOLLOW")
  • openborconstant("SUBTYPE_CHASE")

1 thought on “Type”

Comments are closed.

Related Post