PUP Files


PUP Files General

PUP files (or Puppet files) denote which KEY file is to be executed depending on an objects current state. A PUP file consists of two parts: the MODES and the JOINTS (JOINTS is optional).


Modes

Modes are used to discriminate between which KEYs are used for each action. Modes can have any number of submodes that more specifically define the state of the object. Some of the more common submodes are:

stand walk run walkback strafeleft straferight death death2
hit jump rising drop land fall choke leap turnleft turnright
fire fire2 block block2

Each submode is made up of the following parts:

submodeThis is the name of the submode
keyframeWhich KEY file is to be used for this state
flags32-bit value specifying the properties of this submode
lopriLow-priority of this submode (0-5)
hipriHigh-priority of this submode (0-5)

Modes can inherit submodes from any previously defined mode. This is achievable through the basedon keyword in the mode declaration.

For example: Mode=2, BasedOn=0

Mode 2 inherits all of the submodes of Mode 0. From here, Mode 2 can either override a previously defined submode by using the same name, or it can define new submodes by using different names.

Inheritance is used most commonly to differ between different styles of movement based on the physical attributes of the object or its environment (ie carrying the lightsaber, or swimming).


JOINTS

This section is used for 3DOs that have several nodes, i.e. meshes that move separately. For example, different body parts of a stormtrooper. Joints are also used to create effects such as the Lambda Shuttle opening its wings when it takes off. It is ommitted from other objects, such as lifts and moving platforms. It is used to associate primary "sections" with the Hierarchy Nodes of the 3DO.

For humanoid objects there are 7 of these sections (there are less for simpler creatures like the Octopus:
0: head
1: neck
2: torso
3: primary weapon fire
4: secondard weapon fire
5: primary weapon aiming joint
6: secondary weapon aiming joint

Assignment is achieved through the use of the '=' character. For instance:

1=16

Means that the joint 1 of the object is contained in node 16 of the 3DO.

This section is begun with the joints keyword, and is ended with the end keyword.