Author Topic: Kaiser's Model/Animation Format (Technical Documentation) T2  (Read 6544 times)

Offline Duke64

  • Administrator
  • *****
  • Posts: 2095
  • T:REP 7172
  • Sixty Four
    • View Profile
    • Duke64Nukem.com
Kaiser's Model/Animation Format (Technical Documentation) T2
« on: April 14, 2017, 01:23:04 AM »
This was shared and written by Samuel Villarreal (Kaiser):

Source: http://steamcommunity.com/app/405830/discussions/1/135514376585804085/

Kaiser's Gist Link ) https://gist.githubusercontent.com/svkaiser/1dac41cb70fa1ddf39be2bda4b464c6d/raw/b8ddcad75227ea207a09f459a430abdb13260558/gistfile1.txt

//
// Turok 2 EX Model and Animation Format Specifications
//
// Samuel 'Kaiser' Villarreal (svkaiser---at---gmail.com)
// Revised: 04/13/17
//

//-----------------------------------------------------------------------------
//
// What is this document for?
//
//-----------------------------------------------------------------------------

This technical document is targeted towards users with programming expirence as
well as expirence with 3D modeling tools and writing plugins for them.

//-----------------------------------------------------------------------------
//
// Static Mesh Format
//
//-----------------------------------------------------------------------------

Model files (.STATICMESH) are simple binary files that are read in a linear fashion.
The information below details the data, byte count and additional notes.

name                bytes           notes   
---------------------------------------------------------
version             4 (int)         always 2
bounding box min    12 (3 floats)   not used (leave as zeros)
bounding box max    12 (3 floats)   not used (leave as zeros)
surface count       4 (int)         each surface is a draw call

for nSurface count loop:
-----------------------
material file       string          (zero terminated)
triangle count      4 (int)         stored as nTriangles / 3. multiply by 3 when reading from model file

for nTriangle count loop:
-----------------------
indice index        2 (int16)
exit nTriangle loop

vertex count        4 (int)

for nVertex count loop:
-----------------------
xyz                 12 (3 floats)
uv coords           8 (2 floats)    when read in TurokEX, the y coordinate is always read as 1.0f - UV.y   
normals             12 (3 floats)

exit nSurface loop


//-----------------------------------------------------------------------------
//
// Skinned Mesh Format
//
//-----------------------------------------------------------------------------

Skinned mesh files (.SKINNEDMESH) are simple binary files that are read in a linear fashion.
The information below details the data, byte count and additional notes.

name                        bytes           notes   
---------------------------------------------------------
version                     4  (int)        always 3
bounding box min            12 (3 floats)   
bounding box max            12 (3 floats)   
head track start node       1  (1 byte)
head track end node         1  (1 byte)
head track track factor     1  (1 byte)
node count                  4               nodes are also referred as joints/bone

for nNode count loop:
-----------------------
nChild nodes                4               if <= 0, then continue loop

for nChildren loop:
-----------------------
bone index                  2

end nChildren loop
end nNode count loop

The following are information per bone. Each bone has a hitbox and various other properties.
See the information below for more information on the bone symbol/impact/flag types

for nNode count loop:
-----------------------
bone box min                12 (3 floats)   
bone box max                12 (3 floats)   
bone impact type            1  (1 byte)
bone symbol flags           1  (1 byte)
bone parent index           1  (1 byte)
bone damage scalar          4  (float)      range between 0.0 and 1.0
bone flags                  4
end nNode count loop

hotpoint group count        4               ignored/unused in kex
hot point count             4

A hotpoint defines a location on the skinned mesh where to play particle effects (brain goo, blood gushing, etc)

for nHotpoint count loop:
-----------------------
origin                      12 (3 floats)   in local model space
flags                       4
bone ID                     2               which bone to associate this hotpoint to
particle effect id 1        2               if value reads 0xFFFF then it will deal damage
particle effect id 2        2               if effect ID 1 reads 0xFFFF then it will deal damage based on what's provided for this field
end nHotpoint count loop

layers                      4               ignored in kex
surface count               4               each surface is a draw call

for nSurface count loop
-----------------------
material file               string          (zero terminated)

begin while loop:
-----------------------
triangle index              2               if 0xFFFF then break
end nSurface count loop

vertex count                4

for nVertex count loop
-----------------------
xyz                         12 (3 floats)
uv coords                   8 (2 floats)    when read in TurokEX, the y coordinate is always read as 1.0f - UV.y   
normals                     12 (3 floats)
joint index                 2 (int16)
end nVertex count loop

//-----------------------------------------------------------------------------
//
// Bone Symbol Defines
//
//-----------------------------------------------------------------------------

Bone symbols are bit flags that describes the nature of that bone. Several attributes are packed together:

Bits 1 - 2: Bone type (head, arm, leg, etc)
Bits 3: Bone side (left side, right side)
Bits 4 - 6: Node count (unused in kex)
Bits 7 - 8: Node part (shoulder, hip, hand, neck, upper/lower torso, etc)

//-----------------------------------------------------------------------------
//
// Bone Flags
//
//-----------------------------------------------------------------------------

Bone flags specify whatever or not this bone should be interacted depending on attached models, such as
don't do collision if head has been blown off, etc. Each bit represents the attached model index. If that
bit is 1 then that bone can be interacted with that attached model.

//-----------------------------------------------------------------------------
//
// Bone Impact Types
//
//-----------------------------------------------------------------------------

0 - Default
1 - Water
2 - Metal
3 - Stone
4 - Flesh
5 - Creature Flesh
6 - Water Flesh
7 - Lava
8 - Slime
9 - Forcefield


//-----------------------------------------------------------------------------
//
// Bone Symbol C++ Defines
//
//-----------------------------------------------------------------------------

#define NODE_TYPE_BASE_OFFSET   0

//----------

#define NODE_TYPE_MASK          (0x03 << NODE_TYPE_BASE_OFFSET)
#define NODE_TYPE_OFFSET        (0 + NODE_TYPE_BASE_OFFSET)

#define NODE_TYPE_BODY          (0 << NODE_TYPE_OFFSET)
#define NODE_TYPE_HEAD          (1 << NODE_TYPE_OFFSET)
#define NODE_TYPE_ARM           (2 << NODE_TYPE_OFFSET)
#define NODE_TYPE_LEG           (3 << NODE_TYPE_OFFSET)

//----------

#define NODE_SIDE_MASK          (0x04 << NODE_TYPE_BASE_OFFSET)
#define NODE_SIDE_OFFSET        (2 + NODE_TYPE_BASE_OFFSET)

#define NODE_SIDE_LEFT          (0 << NODE_SIDE_OFFSET)
#define NODE_SIDE_RIGHT         (1 << NODE_SIDE_OFFSET)

//----------

#define NODE_COUNT_MASK         (0x38 << NODE_TYPE_BASE_OFFSET)
#define NODE_COUNT_OFFSET       (3 + NODE_TYPE_BASE_OFFSET)

#define NODE_COUNT_1            (0 << NODE_COUNT_OFFSET)
#define NODE_COUNT_2            (1 << NODE_COUNT_OFFSET)
#define NODE_COUNT_3            (2 << NODE_COUNT_OFFSET)
#define NODE_COUNT_4            (3 << NODE_COUNT_OFFSET)
#define NODE_COUNT_5            (4 << NODE_COUNT_OFFSET)
#define NODE_COUNT_6            (5 << NODE_COUNT_OFFSET)
#define NODE_COUNT_7            (6 << NODE_COUNT_OFFSET)
#define NODE_COUNT_8            (7 << NODE_COUNT_OFFSET)

//----------

#define NODE_PART_MASK          (0xC0 << NODE_TYPE_BASE_OFFSET)
#define NODE_PART_OFFSET        (6 + NODE_TYPE_BASE_OFFSET)

#define NODE_PART_1             (0 << NODE_PART_OFFSET)
#define NODE_PART_2             (1 << NODE_PART_OFFSET)
#define NODE_PART_3             (2 << NODE_PART_OFFSET)
#define NODE_PART_4             (3 << NODE_PART_OFFSET)

#define NODE_PART_SHOULDER      NODE_PART_1
#define NODE_PART_UPPER_ARM     NODE_PART_2
#define NODE_PART_LOWER_ARM     NODE_PART_3
#define NODE_PART_HAND          NODE_PART_4

#define NODE_PART_HIP           NODE_PART_1
#define NODE_PART_UPPER_LEG     NODE_PART_2
#define NODE_PART_LOWER_LEG     NODE_PART_3
#define NODE_PART_FOOT          NODE_PART_4

#define NODE_PART_SKULL         NODE_PART_1
#define NODE_PART_FACE          NODE_PART_2
#define NODE_PART_CHIN          NODE_PART_3
#define NODE_PART_NECK          NODE_PART_4

#define NODE_PART_ROOT          NODE_PART_1
#define NODE_PART_UPPER_TORSO   NODE_PART_2
#define NODE_PART_LOWER_TORSO   NODE_PART_3
#define NODE_PART_PELVIS        NODE_PART_4


//-----------------------------------------------------------------------------
//
// Hotpoint Flags
//
//-----------------------------------------------------------------------------

If an actor has a RenderMesh Component, it can set a hotpoint flag. When this flag is
set, it checks against all hotpoints in the skinned mesh model for any flags matching
the render mesh's hotpoint flag. If set, then that hotpoint will activate.

Example of enabling a hotpoint in a script:

self.RenderMeshComponent().ToggleHotPoint(20, true);

In the engine, this is equivalent to setting (1 << 20) on the render mesh's hotpoint flag.
It then scans all hotpoints via "if((hotpoint.flags & renderMeshHotpointFlag) != 0). If true
then the hotpoint will activate (or deactivate).

NOTE: Bit (1 << 6) is reserved for the cerebral bore effect and will be toggled directly by
the game engine.

The following bits apply additional damage on the owning actor:

Bit (1 << 23) - Deal 5 damage per frame
Bit (1 << 24) - Deal 10 damage per frame
Bit (1 << 25) - Deal 15 damage per frame
Bit (1 << 26) - Deal 20 damage per frame


//-----------------------------------------------------------------------------
//
// Animation Format
//
//-----------------------------------------------------------------------------

Animation files (.ANIM) are simple binary files that are read in a linear fashion.
The information below details the data, byte count and additional notes.

name                        bytes           notes   
---------------------------------------------------------
version                     4 (int)         always 1
anim block count            4 (int)

for nAnimBlock count loop
-----------------------
anim ID                     4 (int)         each anim ID has a special purpose and is used for special behaviors
frame count                 4 (int)
num node indexes            4 (int)
num nodes                   4 (int)
num translations            4 (int)
num rotations               4 (int)
num keyframe actions        4 (int)
frame scale                 4 (float)
blend length                2
blend start                 2
blend end                   2
anim speed                  4 (float)
loop frame                  2

Node index count should match the node count of the model using this animation

for node indexes loop
-----------------------
translation index           2 (int16)
rotation index              2 (int16)
end node indexes loop

The following is just a table for the 'binding' pose or default pose

for num nodes loop
-----------------------
initial translation         12 (3 floats)
initial rotation            16 (4 floats)
end num nodes loop

Create a float array based on frame count. This is used to physically rotate the actor playing this animation.

for num frames loop
-----------------------
yaw offsets                 4 (float)
end num frames loop

Create a translation table for every nTranslation. Each table should contain (vector3 * nFrames). This
table will be referenced by the node index table

for nTranslation loop
-----------------------
for nFrame count loop
-----------------------
translation                 12 (3 floats)

end nFrame count loop
end nTranslation loop

Create a rotation table for every nRotation. Each table should contain (vector4 * nFrames). This
table will be referenced by the node index table

for nRotation loop
-----------------------
for nFrame count loop
-----------------------
rotation                    16 (quaternion (4 floats))

end nFrame count loop
end nRotation loop

for nKeyFrame action loop
-----------------------
frame                       2               which frame this event occurs on
eventType                   2
joint                       2               which bone this event is associated with
offset                      12 (3 floats)   local-space offset vector
args                        32 (8 floats)

end nKeyFrame action loop

end nAnimBlock count loop

//-----------------------------------------------------------------------------
//
// Animation KeyFrame Event Types
//
//-----------------------------------------------------------------------------

0 - Play Sound (arg1 - sound ID)
1 - Spawn Particle (arg1 - particle ID)
2 - Inflict Normal Damage (arg1 - damage amount, arg2 - damage radius, arg3 - not used, arg4 - blood spray x, arg5 - blood spray y, arg6 - blood spray z)
3 - Inflict Normal Radial Damage (arg1 - damage amount, arg2 - damage radius, arg3 - not used, arg4 - blood spray x, arg5 - blood spray y, arg6 - blood spray z)
4 - Same as 3
5 - Unused/unknown
6 - Clear block status on sector/region
7 - Set block status on sector/region
8 - Same as 1
9 - Apply flash to player's hud (arg1 - alpha, arg2 - red, arg3 - green, arg4 - blue, arg5 - attack time, arg6 - sustain time, arg7 - decay time)
10 - Spawn trails (NOT IMPLEMENTED, was also unfinished from the original game)
11 - Fires weapon projectile (arg1 - particle ID)
12 - Apply sinewave screen shake (arg1 - x axis, arg2 - y axis, arg3 - z axis, arg4 - radius)
13 - Apply random screen shake (arg1 - x axis, arg2 - y axis, arg3 - z axis, arg4 - radius)
14 - Display text (NOT IMPLEMENTED, was also unfinished from the original game)
15 - Same as 3
16 - Same as 3
17 - Same as 3 except it deals explosive damage
18 - Same as 3 except it deals explosive damage
19 - Same as 3 except it deals extreme damage
20 - Same as 3 except it deals extreme damage
21 - Apply gamepad rumble (NOT IMPLEMENTED IN KEX ENGINE)
22 - User/script event
23 - Same as 0
24 - Same as 1
25 - Same as 3 except it deals explosion damage only if target is on the ground
26 - Turn on RenderMesh hotpoint (arg1 - hotpoint bit)
27 - Turn off RenderMesh hotpoint (arg1 - hotpoint bit)
28 - Spawns an actor (arg1 - actor type ID, arg2 - scale)
29 - Play sound based on material (arg1 - sound ID, arg2 - surface impact type ID)
30 - Plays a voice (arg1 - voice ID)
31 - Plays a looping sound (arg1 - sound ID)
32 - Stops a looping sound (arg1 - sound ID to stop)

// custom events for kex
33 - Nuke Explosion (arg1 - radius/damage, arg2 - damage radius, arg3 - not used, arg4 - blood spray x, arg5 - blood spray y, arg6 - blood spray z)
34 - Delete Actor

//-----------------------------------------------------------------------------
//
// Animation IDs
//
//-----------------------------------------------------------------------------

ANIM_GROUND_IDLE1 = 1,
ANIM_GROUND_IDLE2 = 2,
ANIM_GROUND_IDLE3 = 3,
ANIM_GROUND_IDLE4 = 4,
ANIM_GROUND_IDLE5 = 5,
ANIM_AIR_IDLE1 = 10,
ANIM_AIR_IDLE2 = 11,
ANIM_AIR_IDLE3 = 12,
ANIM_AIR_IDLE4 = 13,
ANIM_AIR_IDLE5 = 14,
ANIM_UNDERWATER_IDLE1 = 20,
ANIM_UNDERWATER_IDLE2 = 21,
ANIM_UNDERWATER_IDLE3 = 22,
ANIM_UNDERWATER_IDLE4 = 23,
ANIM_UNDERWATER_IDLE5 = 24,
ANIM_CEILING_IDLE1 = 30,
ANIM_CEILING_IDLE2 = 31,
ANIM_CEILING_IDLE3 = 32,
ANIM_CEILING_IDLE4 = 33,
ANIM_CEILING_IDLE5 = 34,
ANIM_LEFT_WALL_IDLE1 = 40,
ANIM_LEFT_WALL_IDLE2 = 41,
ANIM_LEFT_WALL_IDLE3 = 42,
ANIM_LEFT_WALL_IDLE4 = 43,
ANIM_LEFT_WALL_IDLE5 = 44,
ANIM_RIGHT_WALL_IDLE1 = 50,
ANIM_RIGHT_WALL_IDLE2 = 51,
ANIM_RIGHT_WALL_IDLE3 = 52,
ANIM_RIGHT_WALL_IDLE4 = 53,
ANIM_RIGHT_WALL_IDLE5 = 54,
ANIM_GROUND_INTERACTIVE_IDLE1 = 100,
ANIM_GROUND_INTERACTIVE_IDLE2 = 101,
ANIM_GROUND_INTERACTIVE_IDLE3 = 102,
ANIM_GROUND_INTERACTIVE_IDLE4 = 103,
ANIM_GROUND_INTERACTIVE_IDLE5 = 104,
ANIM_AIR_INTERACTIVE_IDLE1 = 110,
ANIM_AIR_INTERACTIVE_IDLE2 = 111,
ANIM_AIR_INTERACTIVE_IDLE3 = 112,
ANIM_AIR_INTERACTIVE_IDLE4 = 113,
ANIM_AIR_INTERACTIVE_IDLE5 = 114,
ANIM_UNDERWATER_INTERACTIVE_IDLE1 = 120,
ANIM_UNDERWATER_INTERACTIVE_IDLE2 = 121,
ANIM_UNDERWATER_INTERACTIVE_IDLE3 = 122,
ANIM_UNDERWATER_INTERACTIVE_IDLE4 = 123,
ANIM_UNDERWATER_INTERACTIVE_IDLE5 = 124,
ANIM_GROUND_ALERT1 = 200,
ANIM_GROUND_ALERT2 = 201,
ANIM_GROUND_ALERT3 = 202,
ANIM_GROUND_ALERT4 = 203,
ANIM_GROUND_ALERT5 = 204,
ANIM_AIR_ALERT1 = 210,
ANIM_AIR_ALERT2 = 211,
ANIM_AIR_ALERT3 = 212,
ANIM_AIR_ALERT4 = 213,
ANIM_AIR_ALERT5 = 214,
ANIM_UNDERWATER_ALERT1 = 220,
ANIM_UNDERWATER_ALERT2 = 221,
ANIM_UNDERWATER_ALERT3 = 222,
ANIM_UNDERWATER_ALERT4 = 223,
ANIM_UNDERWATER_ALERT5 = 224,
ANIM_GROUND_TAKE_COVER1 = 300,
ANIM_GROUND_TAKE_COVER2 = 301,
ANIM_GROUND_TAKE_COVER3 = 302,
ANIM_GROUND_TAKE_COVER4 = 303,
ANIM_GROUND_TAKE_COVER5 = 304,
ANIM_AIR_TAKE_COVER1 = 310,
ANIM_AIR_TAKE_COVER2 = 311,
ANIM_AIR_TAKE_COVER3 = 312,
ANIM_AIR_TAKE_COVER4 = 313,
ANIM_AIR_TAKE_COVER5 = 314,
ANIM_UNDERWATER_TAKE_COVER1 = 320,
ANIM_UNDERWATER_TAKE_COVER2 = 321,
ANIM_UNDERWATER_TAKE_COVER3 = 322,
ANIM_UNDERWATER_TAKE_COVER4 = 323,
ANIM_UNDERWATER_TAKE_COVER5 = 324,
ANIM_GROUND_TO_AIR = 1000,
ANIM_GROUND_TO_UNDERWATER = 1010,
ANIM_GROUND_TO_CEILING = 1020,
ANIM_AIR_TO_GROUND = 1100,
ANIM_AIR_TO_UNDERWATER = 1110,
ANIM_UNDERWATER_TO_GROUND = 1200,
ANIM_UNDERWATER_TO_AIR = 1210,
ANIM_CEILING_TO_GROUND = 1300,
ANIM_LEFT_WALL_TO_AIR = 1400,
ANIM_LEFT_WALL_TO_GROUND = 1410,
ANIM_LEFT_WALL_TO_CEILING = 1420,
ANIM_RIGHT_WALL_TO_AIR = 1500,
ANIM_RIGHT_WALL_TO_GROUND = 1510,
ANIM_RIGHT_WALL_TO_CEILING = 1520,
ANIM_GROUND_MOVE_SLOW1 = 2000,
ANIM_GROUND_MOVE_SLOW2 = 2001,
ANIM_GROUND_MOVE_SLOW3 = 2002,
ANIM_GROUND_MOVE_SLOW4 = 2003,
ANIM_GROUND_MOVE_SLOW5 = 2004,
ANIM_GROUND_MOVE1 = 2010,
ANIM_GROUND_MOVE2 = 2011,
ANIM_GROUND_MOVE3 = 2012,
ANIM_GROUND_MOVE4 = 2013,
ANIM_GROUND_MOVE5 = 2014,
ANIM_GROUND_BACKWARDS_MOVE1 = 2015,
ANIM_GROUND_BACKWARDS_MOVE2 = 2016,
ANIM_GROUND_BACKWARDS_MOVE3 = 2017,
ANIM_GROUND_BACKWARDS_MOVE4 = 2018,
ANIM_GROUND_BACKWARDS_MOVE5 = 2019,
ANIM_GROUND_MOVE_FAST1 = 2020,
ANIM_GROUND_MOVE_FAST2 = 2021,
ANIM_GROUND_MOVE_FAST3 = 2022,
ANIM_GROUND_MOVE_FAST4 = 2023,
ANIM_GROUND_MOVE_FAST5 = 2024,
ANIM_GROUND_JUMP1 = 2030,
ANIM_GROUND_JUMP2 = 2031,
ANIM_GROUND_JUMP3 = 2032,
ANIM_GROUND_JUMP4 = 2033,
ANIM_GROUND_JUMP5 = 2034,
ANIM_GROUND_LAND1 = 2040,
ANIM_GROUND_LAND2 = 2041,
ANIM_GROUND_LAND3 = 2042,
ANIM_GROUND_LAND4 = 2043,
ANIM_GROUND_LAND5 = 2044,
ANIM_GROUND_SIDE_STEP_LEFT1 = 2050,
ANIM_GROUND_SIDE_STEP_LEFT2 = 2051,
ANIM_GROUND_SIDE_STEP_LEFT3 = 2052,
ANIM_GROUND_SIDE_STEP_LEFT4 = 2053,
ANIM_GROUND_SIDE_STEP_LEFT5 = 2054,
ANIM_GROUND_SIDE_STEP_RIGHT1 = 2060,
ANIM_GROUND_SIDE_STEP_RIGHT2 = 2061,
ANIM_GROUND_SIDE_STEP_RIGHT3 = 2062,
ANIM_GROUND_SIDE_STEP_RIGHT4 = 2063,
ANIM_GROUND_SIDE_STEP_RIGHT5 = 2064,
ANIM_AIR_MOVE_SLOW1 = 2100,
ANIM_AIR_MOVE_SLOW2 = 2101,
ANIM_AIR_MOVE_SLOW3 = 2102,
ANIM_AIR_MOVE_SLOW4 = 2103,
ANIM_AIR_MOVE_SLOW5 = 2104,
ANIM_AIR_MOVE1 = 2110,
ANIM_AIR_MOVE2 = 2111,
ANIM_AIR_MOVE3 = 2112,
ANIM_AIR_MOVE4 = 2113,
ANIM_AIR_MOVE5 = 2114,
ANIM_AIR_MOVE_FAST1 = 2120,
ANIM_AIR_MOVE_FAST2 = 2121,
ANIM_AIR_MOVE_FAST3 = 2122,
ANIM_AIR_MOVE_FAST4 = 2123,
ANIM_AIR_MOVE_FAST5 = 2124,
ANIM_UNDERWATER_MOVE_SLOW1 = 2200,
ANIM_UNDERWATER_MOVE_SLOW2 = 2201,
ANIM_UNDERWATER_MOVE_SLOW3 = 2202,
ANIM_UNDERWATER_MOVE_SLOW4 = 2203,
ANIM_UNDERWATER_MOVE_SLOW5 = 2204,
ANIM_UNDERWATER_MOVE1 = 2210,
ANIM_UNDERWATER_MOVE2 = 2211,
ANIM_UNDERWATER_MOVE3 = 2212,
ANIM_UNDERWATER_MOVE4 = 2213,
ANIM_UNDERWATER_MOVE5 = 2214,
ANIM_UNDERWATER_BACKWARDS_MOVE1 = 2215,
ANIM_UNDERWATER_BACKWARDS_MOVE2 = 2216,
ANIM_UNDERWATER_BACKWARDS_MOVE3 = 2217,
ANIM_UNDERWATER_BACKWARDS_MOVE4 = 2218,
ANIM_UNDERWATER_BACKWARDS_MOVE5 = 2219,
ANIM_UNDERWATER_MOVE_FAST1 = 2220,
ANIM_UNDERWATER_MOVE_FAST2 = 2221,
ANIM_UNDERWATER_MOVE_FAST3 = 2222,
ANIM_UNDERWATER_MOVE_FAST4 = 2223,
ANIM_UNDERWATER_MOVE_FAST5 = 2224,
ANIM_CEILING_MOVE_SLOW1 = 2300,
ANIM_CEILING_MOVE1 = 2310,
ANIM_CEILING_MOVE_FAST1 = 2320,
ANIM_LEFT_WALL_MOVE_SLOW1 = 2400,
ANIM_LEFT_WALL_MOVE1 = 2410,
ANIM_LEFT_WALL_MOVE_FAST1 = 2420,
ANIM_RIGHT_WALL_MOVE_SLOW1 = 2500,
ANIM_RIGHT_WALL_MOVE1 = 2510,
ANIM_RIGHT_WALL_MOVE_FAST1 = 2520,
ANIM_GROUND_CRAWL_IDLE1 = 2600,
ANIM_GROUND_CRAWL_IDLE2 = 2601,
ANIM_GROUND_CRAWL_IDLE3 = 2602,
ANIM_GROUND_CRAWL_IDLE4 = 2603,
ANIM_GROUND_CRAWL_IDLE5 = 2604,
ANIM_GROUND_CRAWL1 = 2610,
ANIM_GROUND_CRAWL2 = 2611,
ANIM_GROUND_CRAWL3 = 2612,
ANIM_GROUND_CRAWL4 = 2613,
ANIM_GROUND_CRAWL5 = 2614,
ANIM_GROUND_BACKWARDS_CRAWL1 = 2615,
ANIM_GROUND_BACKWARDS_CRAWL2 = 2616,
ANIM_GROUND_BACKWARDS_CRAWL3 = 2617,
ANIM_GROUND_BACKWARDS_CRAWL4 = 2618,
ANIM_GROUND_BACKWARDS_CRAWL5 = 2619,
ANIM_CLIMB_IDLE1 = 2620,
ANIM_CLIMB_IDLE2 = 2621,
ANIM_CLIMB_IDLE3 = 2622,
ANIM_CLIMB_IDLE4 = 2623,
ANIM_CLIMB_IDLE5 = 2624,
ANIM_CLIMB1 = 2630,
ANIM_CLIMB2 = 2631,
ANIM_CLIMB3 = 2632,
ANIM_CLIMB4 = 2633,
ANIM_CLIMB5 = 2634,
ANIM_GROUND_FLEE1 = 2700,
ANIM_GROUND_FLEE2 = 2701,
ANIM_GROUND_FLEE3 = 2702,
ANIM_GROUND_FLEE4 = 2703,
ANIM_GROUND_FLEE5 = 2704,
ANIM_AIR_FLEE1 = 2710,
ANIM_AIR_FLEE2 = 2711,
ANIM_AIR_FLEE3 = 2712,
ANIM_AIR_FLEE4 = 2713,
ANIM_AIR_FLEE5 = 2714,
ANIM_UNDERWATER_FLEE1 = 2720,
ANIM_UNDERWATER_FLEE2 = 2721,
ANIM_UNDERWATER_FLEE3 = 2722,
ANIM_UNDERWATER_FLEE4 = 2723,
ANIM_UNDERWATER_FLEE5 = 2724,
ANIM_GROUND_IDLE1_TURNL90 = 2900,
ANIM_GROUND_IDLE2_TURNL90 = 2901,
ANIM_GROUND_IDLE3_TURNL90 = 2902,
ANIM_GROUND_IDLE4_TURNL90 = 2903,
ANIM_GROUND_IDLE5_TURNL90 = 2904,
ANIM_GROUND_IDLE1_TURNR90 = 2910,
ANIM_GROUND_IDLE2_TURNR90 = 2911,
ANIM_GROUND_IDLE3_TURNR90 = 2912,
ANIM_GROUND_IDLE4_TURNR90 = 2913,
ANIM_GROUND_IDLE5_TURNR90 = 2914,
ANIM_GROUND_MOVE_SLOW1_TURNL90 = 3000,
ANIM_GROUND_MOVE_SLOW2_TURNL90 = 3001,
ANIM_GROUND_MOVE_SLOW3_TURNL90 = 3002,
ANIM_GROUND_MOVE_SLOW4_TURNL90 = 3003,
ANIM_GROUND_MOVE_SLOW5_TURNL90 = 3004,
ANIM_GROUND_MOVE_SLOW1_TURNR90 = 3010,
ANIM_GROUND_MOVE_SLOW2_TURNR90 = 3011,
ANIM_GROUND_MOVE_SLOW3_TURNR90 = 3012,
ANIM_GROUND_MOVE_SLOW4_TURNR90 = 3013,
ANIM_GROUND_MOVE_SLOW5_TURNR90 = 3014,
ANIM_GROUND_MOVE_SLOW1_TURN180 = 3020,
ANIM_GROUND_MOVE_SLOW2_TURN180 = 3021,
ANIM_GROUND_MOVE_SLOW3_TURN180 = 3022,
ANIM_GROUND_MOVE_SLOW4_TURN180 = 3023,
ANIM_GROUND_MOVE_SLOW5_TURN180 = 3024,
ANIM_GROUND_MOVE1_TURNL90 = 3100,
ANIM_GROUND_MOVE2_TURNL90 = 3101,
ANIM_GROUND_MOVE3_TURNL90 = 3102,
ANIM_GROUND_MOVE4_TURNL90 = 3103,
ANIM_GROUND_MOVE5_TURNL90 = 3104,
ANIM_GROUND_MOVE1_TURNR90 = 3110,
ANIM_GROUND_MOVE2_TURNR90 = 3111,
ANIM_GROUND_MOVE3_TURNR90 = 3112,
ANIM_GROUND_MOVE4_TURNR90 = 3113,
ANIM_GROUND_MOVE5_TURNR90 = 3114,
ANIM_GROUND_MOVE1_TURN180 = 3120,
ANIM_GROUND_MOVE2_TURN180 = 3121,
ANIM_GROUND_MOVE3_TURN180 = 3122,
ANIM_GROUND_MOVE4_TURN180 = 3123,
ANIM_GROUND_MOVE5_TURN180 = 3124,
ANIM_GROUND_MOVE_FAST1_TURNL90 = 3200,
ANIM_GROUND_MOVE_FAST2_TURNL90 = 3201,
ANIM_GROUND_MOVE_FAST3_TURNL90 = 3202,
ANIM_GROUND_MOVE_FAST4_TURNL90 = 3203,
ANIM_GROUND_MOVE_FAST5_TURNL90 = 3204,
ANIM_GROUND_MOVE_FAST1_TURNR90 = 3210,
ANIM_GROUND_MOVE_FAST2_TURNR90 = 3211,
ANIM_GROUND_MOVE_FAST3_TURNR90 = 3212,
ANIM_GROUND_MOVE_FAST4_TURNR90 = 3213,
ANIM_GROUND_MOVE_FAST5_TURNR90 = 3214,
ANIM_GROUND_MOVE_FAST1_TURN180 = 3220,
ANIM_GROUND_MOVE_FAST2_TURN180 = 3221,
ANIM_GROUND_MOVE_FAST3_TURN180 = 3222,
ANIM_GROUND_MOVE_FAST4_TURN180 = 3223,
ANIM_GROUND_MOVE_FAST5_TURN180 = 3224,
ANIM_UNDERWATER_MOVE_SLOW1_TURNL90 = 3300,
ANIM_UNDERWATER_MOVE_SLOW1_TURNR90 = 3310,
ANIM_UNDERWATER_MOVE_SLOW1_TURN180 = 3320,
ANIM_UNDERWATER_MOVE1_TURNL90 = 3400,
ANIM_UNDERWATER_MOVE2_TURNL90 = 3401,
ANIM_UNDERWATER_MOVE3_TURNL90 = 3402,
ANIM_UNDERWATER_MOVE4_TURNL90 = 3403,
ANIM_UNDERWATER_MOVE5_TURNL90 = 3404,
ANIM_UNDERWATER_MOVE1_TURNR90 = 3410,
ANIM_UNDERWATER_MOVE2_TURNR90 = 3411,
ANIM_UNDERWATER_MOVE3_TURNR90 = 3412,
ANIM_UNDERWATER_MOVE4_TURNR90 = 3413,
ANIM_UNDERWATER_MOVE5_TURNR90 = 3414,
ANIM_UNDERWATER_MOVE1_TURN180 = 3420,
ANIM_UNDERWATER_MOVE2_TURN180 = 3421,
ANIM_UNDERWATER_MOVE3_TURN180 = 3422,
ANIM_UNDERWATER_MOVE4_TURN180 = 3423,
ANIM_UNDERWATER_MOVE5_TURN180 = 3424,
ANIM_UNDERWATER_MOVE_FAST1_TURNL90 = 3500,
ANIM_UNDERWATER_MOVE_FAST1_TURNR90 = 3510,
ANIM_UNDERWATER_MOVE_FAST1_TURN180 = 3520,
ANIM_AIR_MOVE_SLOW1_TURNL90 = 3600,
ANIM_AIR_MOVE_SLOW1_TURNR90 = 3610,
ANIM_AIR_MOVE_SLOW1_TURN180 = 3620,
ANIM_AIR_MOVE1_TURNL90 = 3700,
ANIM_AIR_MOVE2_TURNL90 = 3701,
ANIM_AIR_MOVE3_TURNL90 = 3702,
ANIM_AIR_MOVE4_TURNL90 = 3703,
ANIM_AIR_MOVE5_TURNL90 = 3704,
ANIM_AIR_MOVE1_TURNR90 = 3710,
ANIM_AIR_MOVE2_TURNR90 = 3711,
ANIM_AIR_MOVE3_TURNR90 = 3712,
ANIM_AIR_MOVE4_TURNR90 = 3713,
ANIM_AIR_MOVE5_TURNR90 = 3714,
ANIM_AIR_MOVE1_TURN180 = 3720,
ANIM_AIR_MOVE2_TURN180 = 3721,
ANIM_AIR_MOVE3_TURN180 = 3722,
ANIM_AIR_MOVE4_TURN180 = 3723,
ANIM_AIR_MOVE5_TURN180 = 3724,
ANIM_MOVE_FAST1_TURNL90 = 3800,
ANIM_MOVE_FAST1_TURNR90 = 3810,
ANIM_MOVE_FAST1_TURN180 = 3820,
ANIM_GROUND_ATTACK_COMBAT1 = 4000,
ANIM_GROUND_ATTACK_COMBAT2 = 4001,
ANIM_GROUND_ATTACK_COMBAT3 = 4002,
ANIM_GROUND_ATTACK_COMBAT4 = 4003,
ANIM_GROUND_ATTACK_COMBAT5 = 4004,
ANIM_AIR_ATTACK_COMBAT1 = 4010,
ANIM_AIR_ATTACK_COMBAT2 = 4011,
ANIM_AIR_ATTACK_COMBAT3 = 4012,
ANIM_AIR_ATTACK_COMBAT4 = 4013,
ANIM_AIR_ATTACK_COMBAT5 = 4014,
ANIM_UNDERWATER_ATTACK_COMBAT1 = 4020,
ANIM_UNDERWATER_ATTACK_COMBAT2 = 4021,
ANIM_UNDERWATER_ATTACK_COMBAT3 = 4022,
ANIM_UNDERWATER_ATTACK_COMBAT4 = 4023,
ANIM_UNDERWATER_ATTACK_COMBAT5 = 4024,
ANIM_CEILING_ATTACK_COMBAT1 = 4030,
ANIM_CEILING_ATTACK_COMBAT2 = 4031,
ANIM_CEILING_ATTACK_COMBAT3 = 4032,
ANIM_CEILING_ATTACK_COMBAT4 = 4033,
ANIM_CEILING_ATTACK_COMBAT5 = 4034,
ANIM_LEFT_WALL_ATTACK_COMBAT1 = 4040,
ANIM_LEFT_WALL_ATTACK_COMBAT2 = 4041,
ANIM_LEFT_WALL_ATTACK_COMBAT3 = 4042,
ANIM_LEFT_WALL_ATTACK_COMBAT4 = 4043,
ANIM_LEFT_WALL_ATTACK_COMBAT5 = 4044,
ANIM_RIGHT_WALL_ATTACK_COMBAT1 = 4050,
ANIM_RIGHT_WALL_ATTACK_COMBAT2 = 4051,
ANIM_RIGHT_WALL_ATTACK_COMBAT3 = 4052,
ANIM_RIGHT_WALL_ATTACK_COMBAT4 = 4053,
ANIM_RIGHT_WALL_ATTACK_COMBAT5 = 4054,
ANIM_GROUND_ATTACK_LEAP1 = 4100,
ANIM_GROUND_ATTACK_LEAP2 = 4101,
ANIM_GROUND_ATTACK_LEAP3 = 4102,
ANIM_GROUND_ATTACK_LEAP4 = 4103,
ANIM_GROUND_ATTACK_LEAP5 = 4104,
ANIM_AIR_ATTACK_LEAP1 = 4110,
ANIM_AIR_ATTACK_LEAP2 = 4111,
ANIM_AIR_ATTACK_LEAP3 = 4112,
ANIM_AIR_ATTACK_LEAP4 = 4113,
ANIM_AIR_ATTACK_LEAP5 = 4114,
ANIM_UNDERWATER_ATTACK_LEAP1 = 4120,
ANIM_UNDERWATER_ATTACK_LEAP2 = 4121,
ANIM_UNDERWATER_ATTACK_LEAP3 = 4122,
ANIM_UNDERWATER_ATTACK_LEAP4 = 4123,
ANIM_UNDERWATER_ATTACK_LEAP5 = 4124,
ANIM_CEILING_ATTACK_LEAP1 = 4130,
ANIM_CEILING_ATTACK_LEAP2 = 4131,
ANIM_CEILING_ATTACK_LEAP3 = 4132,
ANIM_CEILING_ATTACK_LEAP4 = 4133,
ANIM_CEILING_ATTACK_LEAP5 = 4134,
ANIM_LEFT_WALL_ATTACK_LEAP1 = 4140,
ANIM_LEFT_WALL_ATTACK_LEAP2 = 4141,
ANIM_LEFT_WALL_ATTACK_LEAP3 = 4142,
ANIM_LEFT_WALL_ATTACK_LEAP4 = 4143,
ANIM_LEFT_WALL_ATTACK_LEAP5 = 4144,
ANIM_RIGHT_WALL_ATTACK_LEAP1 = 4150,
ANIM_RIGHT_WALL_ATTACK_LEAP2 = 4151,
ANIM_RIGHT_WALL_ATTACK_LEAP3 = 4152,
ANIM_RIGHT_WALL_ATTACK_LEAP4 = 4153,
ANIM_RIGHT_WALL_ATTACK_LEAP5 = 4154,
ANIM_GROUND_ATTACK_DART1 = 4200,
ANIM_GROUND_ATTACK_DART2 = 4201,
ANIM_GROUND_ATTACK_DART3 = 4202,
ANIM_GROUND_ATTACK_DART4 = 4203,
ANIM_GROUND_ATTACK_DART5 = 4204,
ANIM_AIR_ATTACK_DART1 = 4210,
ANIM_AIR_ATTACK_DART2 = 4211,
ANIM_AIR_ATTACK_DART3 = 4212,
ANIM_AIR_ATTACK_DART4 = 4213,
ANIM_AIR_ATTACK_DART5 = 4214,
ANIM_UNDERWATER_ATTACK_DART1 = 4220,
ANIM_UNDERWATER_ATTACK_DART2 = 4221,
ANIM_UNDERWATER_ATTACK_DART3 = 4222,
ANIM_UNDERWATER_ATTACK_DART4 = 4223,
ANIM_UNDERWATER_ATTACK_DART5 = 4224,
ANIM_CEILING_ATTACK_DART1 = 4230,
ANIM_CEILING_ATTACK_DART2 = 4231,
ANIM_CEILING_ATTACK_DART3 = 4232,
ANIM_CEILING_ATTACK_DART4 = 4233,
ANIM_CEILING_ATTACK_DART5 = 4234,
ANIM_LEFT_WALL_ATTACK_DART1 = 4240,
ANIM_LEFT_WALL_ATTACK_DART2 = 4241,
ANIM_LEFT_WALL_ATTACK_DART3 = 4242,
ANIM_LEFT_WALL_ATTACK_DART4 = 4243,
ANIM_LEFT_WALL_ATTACK_DART5 = 4244,
ANIM_RIGHT_WALL_ATTACK_DART1 = 4250,
ANIM_RIGHT_WALL_ATTACK_DART2 = 4251,
ANIM_RIGHT_WALL_ATTACK_DART3 = 4252,
ANIM_RIGHT_WALL_ATTACK_DART4 = 4253,
ANIM_RIGHT_WALL_ATTACK_DART5 = 4254,
ANIM_GROUND_ATTACK_PROJECTILE1 = 4300,
ANIM_GROUND_ATTACK_PROJECTILE2 = 4301,
ANIM_GROUND_ATTACK_PROJECTILE3 = 4302,
ANIM_GROUND_ATTACK_PROJECTILE4 = 4303,
ANIM_GROUND_ATTACK_PROJECTILE5 = 4304,
ANIM_AIR_ATTACK_PROJECTILE1 = 4310,
ANIM_AIR_ATTACK_PROJECTILE2 = 4311,
ANIM_AIR_ATTACK_PROJECTILE3 = 4312,
ANIM_AIR_ATTACK_PROJECTILE4 = 4313,
ANIM_AIR_ATTACK_PROJECTILE5 = 4314,
ANIM_UNDERWATER_ATTACK_PROJECTILE1 = 4320,
ANIM_UNDERWATER_ATTACK_PROJECTILE2 = 4321,
ANIM_UNDERWATER_ATTACK_PROJECTILE3 = 4322,
ANIM_UNDERWATER_ATTACK_PROJECTILE4 = 4323,
ANIM_UNDERWATER_ATTACK_PROJECTILE5 = 4324,
ANIM_CEILING_ATTACK_PROJECTILE1 = 4330,
ANIM_CEILING_ATTACK_PROJECTILE2 = 4331,
ANIM_CEILING_ATTACK_PROJECTILE3 = 4332,
ANIM_CEILING_ATTACK_PROJECTILE4 = 4333,
ANIM_CEILING_ATTACK_PROJECTILE5 = 4334,
ANIM_LEFT_WALL_ATTACK_PROJECTILE1 = 4340,
ANIM_LEFT_WALL_ATTACK_PROJECTILE2 = 4341,
ANIM_LEFT_WALL_ATTACK_PROJECTILE3 = 4342,
ANIM_LEFT_WALL_ATTACK_PROJECTILE4 = 4343,
ANIM_LEFT_WALL_ATTACK_PROJECTILE5 = 4344,
ANIM_RIGHT_WALL_ATTACK_PROJECTILE1 = 4350,
ANIM_RIGHT_WALL_ATTACK_PROJECTILE2 = 4351,
ANIM_RIGHT_WALL_ATTACK_PROJECTILE3 = 4352,
ANIM_RIGHT_WALL_ATTACK_PROJECTILE4 = 4353,
ANIM_RIGHT_WALL_ATTACK_PROJECTILE5 = 4354,
ANIM_GROUND_ATTACK_WEAPON1 = 4400,
ANIM_GROUND_ATTACK_WEAPON2 = 4401,
ANIM_GROUND_ATTACK_WEAPON3 = 4402,
ANIM_GROUND_ATTACK_WEAPON4 = 4403,
ANIM_GROUND_ATTACK_WEAPON5 = 4404,
ANIM_GROUND_CRAWL_ATTACK_WEAPON1 = 4405,
ANIM_GROUND_CRAWL_ATTACK_WEAPON2 = 4406,
ANIM_GROUND_CRAWL_ATTACK_WEAPON3 = 4407,
ANIM_GROUND_CRAWL_ATTACK_WEAPON4 = 4408,
ANIM_GROUND_CRAWL_ATTACK_WEAPON5 = 4409,
ANIM_AIR_ATTACK_WEAPON1 = 4410,
ANIM_AIR_ATTACK_WEAPON2 = 4411,
ANIM_AIR_ATTACK_WEAPON3 = 4412,
ANIM_AIR_ATTACK_WEAPON4 = 4413,
ANIM_AIR_ATTACK_WEAPON5 = 4414,
ANIM_UNDERWATER_ATTACK_WEAPON1 = 4420,
ANIM_UNDERWATER_ATTACK_WEAPON2 = 4421,
ANIM_UNDERWATER_ATTACK_WEAPON3 = 4422,
ANIM_UNDERWATER_ATTACK_WEAPON4 = 4423,
ANIM_UNDERWATER_ATTACK_WEAPON5 = 4424,
ANIM_CEILING_ATTACK_WEAPON1 = 4430,
ANIM_CEILING_ATTACK_WEAPON2 = 4431,
ANIM_CEILING_ATTACK_WEAPON3 = 4432,
ANIM_CEILING_ATTACK_WEAPON4 = 4433,
ANIM_CEILING_ATTACK_WEAPON5 = 4434,
ANIM_LEFT_WALL_ATTACK_WEAPON1 = 4440,
ANIM_LEFT_WALL_ATTACK_WEAPON2 = 4441,
ANIM_LEFT_WALL_ATTACK_WEAPON3 = 4442,
ANIM_LEFT_WALL_ATTACK_WEAPON4 = 4443,
ANIM_LEFT_WALL_ATTACK_WEAPON5 = 4444,
ANIM_RIGHT_WALL_ATTACK_WEAPON1 = 4450,
ANIM_RIGHT_WALL_ATTACK_WEAPON2 = 4451,
ANIM_RIGHT_WALL_ATTACK_WEAPON3 = 4452,
ANIM_RIGHT_WALL_ATTACK_WEAPON4 = 4453,
ANIM_RIGHT_WALL_ATTACK_WEAPON5 = 4454,
ANIM_GROUND_LOOPING_ATTACK_WEAPON1 = 4500,
ANIM_GROUND_LOOPING_ATTACK_WEAPON2 = 4501,
ANIM_GROUND_LOOPING_ATTACK_WEAPON3 = 4502,
ANIM_GROUND_LOOPING_ATTACK_WEAPON4 = 4503,
ANIM_GROUND_LOOPING_ATTACK_WEAPON5 = 4504,
ANIM_AIR_LOOPING_ATTACK_WEAPON1 = 4510,
ANIM_AIR_LOOPING_ATTACK_WEAPON2 = 4511,
ANIM_AIR_LOOPING_ATTACK_WEAPON3 = 4512,
ANIM_AIR_LOOPING_ATTACK_WEAPON4 = 4513,
ANIM_AIR_LOOPING_ATTACK_WEAPON5 = 4514,
ANIM_UNDERWATER_LOOPING_ATTACK_WEAPON1 = 4520,
ANIM_UNDERWATER_LOOPING_ATTACK_WEAPON2 = 4521,
ANIM_UNDERWATER_LOOPING_ATTACK_WEAPON3 = 4522,
ANIM_UNDERWATER_LOOPING_ATTACK_WEAPON4 = 4523,
ANIM_UNDERWATER_LOOPING_ATTACK_WEAPON5 = 4524,
ANIM_CEILING_LOOPING_ATTACK_WEAPON1 = 4530,
ANIM_CEILING_LOOPING_ATTACK_WEAPON2 = 4531,
ANIM_CEILING_LOOPING_ATTACK_WEAPON3 = 4532,
ANIM_CEILING_LOOPING_ATTACK_WEAPON4 = 4533,
ANIM_CEILING_LOOPING_ATTACK_WEAPON5 = 4534,
ANIM_LEFT_WALL_LOOPING_ATTACK_WEAPON1 = 4540,
ANIM_LEFT_WALL_LOOPING_ATTACK_WEAPON2 = 4541,
ANIM_LEFT_WALL_LOOPING_ATTACK_WEAPON3 = 4542,
ANIM_LEFT_WALL_LOOPING_ATTACK_WEAPON4 = 4543,
ANIM_LEFT_WALL_LOOPING_ATTACK_WEAPON5 = 4544,
ANIM_RIGHT_WALL_LOOPING_ATTACK_WEAPON1 = 4550,
ANIM_RIGHT_WALL_LOOPING_ATTACK_WEAPON2 = 4551,
ANIM_RIGHT_WALL_LOOPING_ATTACK_WEAPON3 = 4552,
ANIM_RIGHT_WALL_LOOPING_ATTACK_WEAPON4 = 4553,
ANIM_RIGHT_WALL_LOOPING_ATTACK_WEAPON5 = 4554,
ANIM_GROUND_COMBO_END1 = 5000,
ANIM_GROUND_COMBO_END2 = 5001,
ANIM_GROUND_COMBO_END3 = 5002,
ANIM_GROUND_COMBO_END4 = 5003,
ANIM_GROUND_COMBO_END5 = 5004,
ANIM_AIR_COMBO_END1 = 5010,
ANIM_AIR_COMBO_END2 = 5011,
ANIM_AIR_COMBO_END3 = 5012,
ANIM_AIR_COMBO_END4 = 5013,
ANIM_AIR_COMBO_END5 = 5014,
ANIM_UNDERWATER_COMBO_END1 = 5020,
ANIM_UNDERWATER_COMBO_END2 = 5021,
ANIM_UNDERWATER_COMBO_END3 = 5022,
ANIM_UNDERWATER_COMBO_END4 = 5023,
ANIM_UNDERWATER_COMBO_END5 = 5024,
ANIM_GROUND_DEFEND_PUFFUP = 6000,
ANIM_AIR_DEFEND_PUFFUP = 6010,
ANIM_UNDERWATER_DEFEND_PUFFUP = 6020,
ANIM_GROUND_DEATH_NORMAL1 = 7000,
ANIM_GROUND_DEATH_NORMAL2 = 7001,
ANIM_GROUND_DEATH_NORMAL3 = 7002,
ANIM_GROUND_DEATH_NORMAL4 = 7003,
ANIM_GROUND_DEATH_NORMAL5 = 7004,
ANIM_GROUND_DEATH_CRAWL_NORMAL1 = 7005,
ANIM_GROUND_DEATH_CRAWL_NORMAL2 = 7006,
ANIM_GROUND_DEATH_CRAWL_NORMAL3 = 7007,
ANIM_GROUND_DEATH_CRAWL_NORMAL4 = 7008,
ANIM_GROUND_DEATH_CRAWL_NORMAL5 = 7009,
ANIM_AIR_DEATH_NORMAL1 = 7010,
ANIM_AIR_DEATH_NORMAL2 = 7011,
ANIM_AIR_DEATH_NORMAL3 = 7012,
ANIM_AIR_DEATH_NORMAL4 = 7013,
ANIM_AIR_DEATH_NORMAL5 = 7014,
ANIM_UNDERWATER_DEATH_NORMAL1_DYING = 7020,
ANIM_UNDERWATER_DEATH_NORMAL2_DYING = 7021,
ANIM_UNDERWATER_DEATH_NORMAL3_DYING = 7022,
ANIM_UNDERWATER_DEATH_NORMAL4_DYING = 7023,
ANIM_UNDERWATER_DEATH_NORMAL5_DYING = 7024,
ANIM_UNDERWATER_DEATH_NORMAL1_SINKING = 7030,
ANIM_UNDERWATER_DEATH_NORMAL2_SINKING = 7031,
ANIM_UNDERWATER_DEATH_NORMAL3_SINKING = 7032,
ANIM_UNDERWATER_DEATH_NORMAL4_SINKING = 7033,
ANIM_UNDERWATER_DEATH_NORMAL5_SINKING = 7034,
ANIM_UNDERWATER_DEATH_NORMAL1_ON_BED = 7040,
ANIM_UNDERWATER_DEATH_NORMAL2_ON_BED = 7041,
ANIM_UNDERWATER_DEATH_NORMAL3_ON_BED = 7042,
ANIM_UNDERWATER_DEATH_NORMAL4_ON_BED = 7043,
ANIM_UNDERWATER_DEATH_NORMAL5_ON_BED = 7044,
ANIM_GROUND_DEATH_VIOLENT1 = 7100,
ANIM_GROUND_DEATH_VIOLENT2 = 7101,
ANIM_GROUND_DEATH_VIOLENT3 = 7102,
ANIM_GROUND_DEATH_VIOLENT4 = 7103,
ANIM_GROUND_DEATH_VIOLENT5 = 7104,
ANIM_AIR_DEATH_VIOLENT1 = 7110,
ANIM_AIR_DEATH_VIOLENT2 = 7111,
ANIM_AIR_DEATH_VIOLENT3 = 7112,
ANIM_AIR_DEATH_VIOLENT4 = 7113,
ANIM_AIR_DEATH_VIOLENT5 = 7114,
ANIM_UNDERWATER_DEATH_VIOLENT1 = 7120,
ANIM_UNDERWATER_DEATH_VIOLENT2 = 7121,
ANIM_UNDERWATER_DEATH_VIOLENT3 = 7122,
ANIM_UNDERWATER_DEATH_VIOLENT4 = 7123,
ANIM_UNDERWATER_DEATH_VIOLENT5 = 7124,
ANIM_GROUND_DEATH_EXPLOSIVE1 = 7200,
ANIM_GROUND_DEATH_EXPLOSIVE2 = 7201,
ANIM_GROUND_DEATH_EXPLOSIVE3 = 7202,
ANIM_GROUND_DEATH_EXPLOSIVE4 = 7203,
ANIM_GROUND_DEATH_EXPLOSIVE5 = 7204,
ANIM_GROUND_DEATH_EXPLOSIVE_LAND1 = 7205,
ANIM_GROUND_DEATH_EXPLOSIVE_LAND2 = 7206,
ANIM_GROUND_DEATH_EXPLOSIVE_LAND3 = 7207,
ANIM_GROUND_DEATH_EXPLOSIVE_LAND4 = 7208,
ANIM_GROUND_DEATH_EXPLOSIVE_LAND5 = 7209,
ANIM_AIR_DEATH_EXPLOSIVE1 = 7210,
ANIM_AIR_DEATH_EXPLOSIVE2 = 7211,
ANIM_AIR_DEATH_EXPLOSIVE3 = 7212,
ANIM_AIR_DEATH_EXPLOSIVE4 = 7213,
ANIM_AIR_DEATH_EXPLOSIVE5 = 7214,
ANIM_UNDERWATER_DEATH_EXPLOSIVE1 = 7220,
ANIM_UNDERWATER_DEATH_EXPLOSIVE2 = 7221,
ANIM_UNDERWATER_DEATH_EXPLOSIVE3 = 7222,
ANIM_UNDERWATER_DEATH_EXPLOSIVE4 = 7223,
ANIM_UNDERWATER_DEATH_EXPLOSIVE5 = 7224,
ANIM_DEATH_EXTREME1_PART1 = 7300,
ANIM_DEATH_EXTREME1_PART2 = 7301,
ANIM_DEATH_EXTREME2_PART1 = 7305,
ANIM_DEATH_EXTREME2_PART2 = 7306,
ANIM_DEATH_EXTREME3_PART1 = 7310,
ANIM_DEATH_EXTREME3_PART2 = 7311,
ANIM_DEATH_EXTREME4_PART1 = 7315,
ANIM_DEATH_EXTREME4_PART2 = 7316,
ANIM_DEATH_EXTREME5_PART1 = 7320,
ANIM_DEATH_EXTREME5_PART2 = 7321,
ANIM_DEATH_PFM1 = 7325,
ANIM_DEATH_PFM2 = 7326,
ANIM_DEATH_PFM3 = 7327,
ANIM_DEATH_PFM4 = 7328,
ANIM_DEATH_PFM5 = 7329,
ANIM_DEATH_HEAD_BLOWN_OFF1 = 7335,
ANIM_DEATH_HEAD_BLOWN_OFF2 = 7336,
ANIM_DEATH_HEAD_BLOWN_OFF3 = 7337,
ANIM_DEATH_HEAD_BLOWN_OFF4 = 7338,
ANIM_DEATH_HEAD_BLOWN_OFF5 = 7339,
ANIM_DEATH_LEFT_ARM_BLOWN_OFF1 = 7345,
ANIM_DEATH_LEFT_ARM_BLOWN_OFF2 = 7346,
ANIM_DEATH_LEFT_ARM_BLOWN_OFF3 = 7347,
ANIM_DEATH_LEFT_ARM_BLOWN_OFF4 = 7348,
ANIM_DEATH_LEFT_ARM_BLOWN_OFF5 = 7349,
ANIM_DEATH_RIGHT_ARM_BLOWN_OFF1 = 7355,
ANIM_DEATH_RIGHT_ARM_BLOWN_OFF2 = 7356,
ANIM_DEATH_RIGHT_ARM_BLOWN_OFF3 = 7357,
ANIM_DEATH_RIGHT_ARM_BLOWN_OFF4 = 7358,
ANIM_DEATH_RIGHT_ARM_BLOWN_OFF5 = 7359,
ANIM_DEATH_BLINDED = 7365,
ANIM_DEATH_LAVA1 = 7400,
ANIM_DEATH_LAVA2 = 7401,
ANIM_DEATH_LAVA3 = 7402,
ANIM_DEATH_LAVA4 = 7403,
ANIM_DEATH_LAVA5 = 7404,
ANIM_GROUND_DEATH_MOVING1 = 7500,
ANIM_GROUND_DEATH_MOVING2 = 7501,
ANIM_GROUND_DEATH_MOVING3 = 7502,
ANIM_GROUND_DEATH_MOVING4 = 7503,
ANIM_GROUND_DEATH_MOVING5 = 7504,
ANIM_GROUND_DEATH_BACKWARDS_MOVING1 = 7505,
ANIM_GROUND_DEATH_BACKWARDS_MOVING2 = 7506,
ANIM_GROUND_DEATH_BACKWARDS_MOVING3 = 7507,
ANIM_GROUND_DEATH_BACKWARDS_MOVING4 = 7508,
ANIM_GROUND_DEATH_BACKWARDS_MOVING5 = 7509,
ANIM_AIR_DEATH_MOVING1 = 7510,
ANIM_AIR_DEATH_MOVING2 = 7511,
ANIM_AIR_DEATH_MOVING3 = 7512,
ANIM_AIR_DEATH_MOVING4 = 7513,
ANIM_AIR_DEATH_MOVING5 = 7514,
ANIM_UNDERWATER_DEATH_MOVING1 = 7520,
ANIM_UNDERWATER_DEATH_MOVING2 = 7521,
ANIM_UNDERWATER_DEATH_MOVING3 = 7522,
ANIM_UNDERWATER_DEATH_MOVING4 = 7523,
ANIM_UNDERWATER_DEATH_MOVING5 = 7524,
ANIM_GROUND_EVADE_LEFT1 = 8000,
ANIM_GROUND_EVADE_LEFT2 = 8001,
ANIM_GROUND_EVADE_LEFT3 = 8002,
ANIM_GROUND_EVADE_LEFT4 = 8003,
ANIM_GROUND_EVADE_LEFT5 = 8004,
ANIM_AIR_EVADE_LEFT1 = 8010,
ANIM_AIR_EVADE_LEFT2 = 8011,
ANIM_AIR_EVADE_LEFT3 = 8012,
ANIM_AIR_EVADE_LEFT4 = 8013,
ANIM_AIR_EVADE_LEFT5 = 8014,
ANIM_UNDERWATER_EVADE_LEFT1 = 8020,
ANIM_UNDERWATER_EVADE_LEFT2 = 8021,
ANIM_UNDERWATER_EVADE_LEFT3 = 8022,
ANIM_UNDERWATER_EVADE_LEFT4 = 8023,
ANIM_UNDERWATER_EVADE_LEFT5 = 8024,
ANIM_GROUND_EVADE_RIGHT1 = 8100,
ANIM_GROUND_EVADE_RIGHT2 = 8101,
ANIM_GROUND_EVADE_RIGHT3 = 8102,
ANIM_GROUND_EVADE_RIGHT4 = 8103,
ANIM_GROUND_EVADE_RIGHT5 = 8104,
ANIM_AIR_EVADE_RIGHT1 = 8110,
ANIM_AIR_EVADE_RIGHT2 = 8111,
ANIM_AIR_EVADE_RIGHT3 = 8112,
ANIM_AIR_EVADE_RIGHT4 = 8113,
ANIM_AIR_EVADE_RIGHT5 = 8114,
ANIM_UNDERWATER_EVADE_RIGHT1 = 8120,
ANIM_UNDERWATER_EVADE_RIGHT2 = 8121,
ANIM_UNDERWATER_EVADE_RIGHT3 = 8122,
ANIM_UNDERWATER_EVADE_RIGHT4 = 8123,
ANIM_UNDERWATER_EVADE_RIGHT5 = 8124,
ANIM_GROUND_EVADE_JUMP1 = 8200,
ANIM_GROUND_EVADE_JUMP2 = 8201,
ANIM_GROUND_EVADE_JUMP3 = 8202,
ANIM_GROUND_EVADE_JUMP4 = 8203,
ANIM_GROUND_EVADE_JUMP5 = 8204,
ANIM_AIR_EVADE_JUMP1 = 8210,
ANIM_AIR_EVADE_JUMP2 = 8211,
ANIM_AIR_EVADE_JUMP3 = 8212,
ANIM_AIR_EVADE_JUMP4 = 8213,
ANIM_AIR_EVADE_JUMP5 = 8214,
ANIM_UNDERWATER_EVADE_JUMP1 = 8220,
ANIM_UNDERWATER_EVADE_JUMP2 = 8221,
ANIM_UNDERWATER_EVADE_JUMP3 = 8222,
ANIM_UNDERWATER_EVADE_JUMP4 = 8223,
ANIM_UNDERWATER_EVADE_JUMP5 = 8224,
ANIM_GROUND_EVADE_SHIELD1 = 8300,
ANIM_GROUND_EVADE_SHIELD2 = 8301,
ANIM_GROUND_EVADE_SHIELD3 = 8302,
ANIM_GROUND_EVADE_SHIELD4 = 8303,
ANIM_GROUND_EVADE_SHIELD5 = 8304,
ANIM_AIR_EVADE_SHIELD1 = 8310,
ANIM_AIR_EVADE_SHIELD2 = 8311,
ANIM_AIR_EVADE_SHIELD3 = 8312,
ANIM_AIR_EVADE_SHIELD4 = 8313,
ANIM_AIR_EVADE_SHIELD5 = 8314,
ANIM_UNDERWATER_EVADE_SHIELD1 = 8320,
ANIM_UNDERWATER_EVADE_SHIELD2 = 8321,
ANIM_UNDERWATER_EVADE_SHIELD3 = 8322,
ANIM_UNDERWATER_EVADE_SHIELD4 = 8323,
ANIM_UNDERWATER_EVADE_SHIELD5 = 8324,
ANIM_GROUND_REACTION_EXPLOSION = 9000,
ANIM_AIR_REACTION_EXPLOSION = 9010,
ANIM_UNDERWATER_REACTION_EXPLOSION = 9020,
ANIM_GROUND_REACTION_BLINDED = 9100,
ANIM_AIR_REACTION_BLINDED = 9110,
ANIM_UNDERWATER_REACTION_BLINDED = 9120,
ANIM_GROUND_REACTION_SHOCKED = 9200,
ANIM_AIR_REACTION_SHOCKED = 9210,
ANIM_UNDERWATER_REACTION_SHOCKED = 9220,
ANIM_GROUND_REACTION_BORE_CLUNK = 9230,
ANIM_AIR_REACTION_BORE_CLUNK = 9240,
ANIM_UNDERWATER_REACTION_BORE_CLUNK = 9250,
ANIM_GROUND_REACTION_FALL_DOWN = 9300,
ANIM_AIR_REACTION_FALL_DOWN = 9310,
ANIM_UNDERWATER_REACTION_FALL_DOWN = 9320,
ANIM_GROUND_REACTION_GETUP = 9400,
ANIM_AIR_REACTION_GETUP = 9410,
ANIM_UNDERWATER_REACTION_GETUP = 9420,
ANIM_GROUND_SNATCHED = 9500,
ANIM_AIR_SNATCHED = 9510,
ANIM_UNDERWATER_SNATCHED = 9520,
ANIM_GROUND_WOUNDED_LEFT_ARM1 = 9600,
ANIM_GROUND_WOUNDED_LEFT_ARM2 = 9601,
ANIM_GROUND_WOUNDED_LEFT_ARM3 = 9602,
ANIM_GROUND_WOUNDED_LEFT_ARM4 = 9603,
ANIM_GROUND_WOUNDED_LEFT_ARM5 = 9604,
ANIM_AIR_WOUNDED_LEFT_ARM1 = 9610,
ANIM_AIR_WOUNDED_LEFT_ARM2 = 9611,
ANIM_AIR_WOUNDED_LEFT_ARM3 = 9612,
ANIM_AIR_WOUNDED_LEFT_ARM4 = 9613,
ANIM_AIR_WOUNDED_LEFT_ARM5 = 9614,
ANIM_UNDERWATER_WOUNDED_LEFT_ARM1 = 9620,
ANIM_UNDERWATER_WOUNDED_LEFT_ARM2 = 9621,
ANIM_UNDERWATER_WOUNDED_LEFT_ARM3 = 9622,
ANIM_UNDERWATER_WOUNDED_LEFT_ARM4 = 9623,
ANIM_UNDERWATER_WOUNDED_LEFT_ARM5 = 9624,
ANIM_GROUND_WOUNDED_RIGHT_ARM1 = 9630,
ANIM_GROUND_WOUNDED_RIGHT_ARM2 = 9631,
ANIM_GROUND_WOUNDED_RIGHT_ARM3 = 9632,
ANIM_GROUND_WOUNDED_RIGHT_ARM4 = 9633,
ANIM_GROUND_WOUNDED_RIGHT_ARM5 = 9634,
ANIM_AIR_WOUNDED_RIGHT_ARM1 = 9640,
ANIM_AIR_WOUNDED_RIGHT_ARM2 = 9641,
ANIM_AIR_WOUNDED_RIGHT_ARM3 = 9642,
ANIM_AIR_WOUNDED_RIGHT_ARM4 = 9643,
ANIM_AIR_WOUNDED_RIGHT_ARM5 = 9644,
ANIM_UNDERWATER_WOUNDED_RIGHT_ARM1 = 9650,
ANIM_UNDERWATER_WOUNDED_RIGHT_ARM2 = 9651,
ANIM_UNDERWATER_WOUNDED_RIGHT_ARM3 = 9652,
ANIM_UNDERWATER_WOUNDED_RIGHT_ARM4 = 9653,
ANIM_UNDERWATER_WOUNDED_RIGHT_ARM5 = 9654,
ANIM_GROUND_PICKUP_THROW_OBJECT = 10000,
ANIM_AIR_PICKUP_THROW_OBJECT = 10010,
ANIM_UNDERWATER_PICKUP_THROW_OBJECT = 10020,
ANIM_GROUND_DROP_OBJECT = 10100,
ANIM_AIR_DROP_OBJECT = 10110,
ANIM_UNDERWATER_DROP_OBJECT = 10120,
ANIM_AMBUSH1 = 11000,
ANIM_AMBUSH2 = 11001,
ANIM_AMBUSH3 = 11002,
ANIM_AMBUSH4 = 11003,
ANIM_AMBUSH5 = 11004,
ANIM_AMBUSH6 = 11005,
ANIM_AMBUSH7 = 11006,
ANIM_AMBUSH8 = 11007,
ANIM_AMBUSH1_NO_GRAVITY = 11020,
ANIM_AMBUSH2_NO_GRAVITY = 11021,
ANIM_AMBUSH3_NO_GRAVITY = 11022,
ANIM_AMBUSH4_NO_GRAVITY = 11023,
ANIM_AMBUSH5_NO_GRAVITY = 11024,
ANIM_AMBUSH6_NO_GRAVITY = 11025,
ANIM_AMBUSH7_NO_GRAVITY = 11026,
ANIM_AMBUSH8_NO_GRAVITY = 11027,
ANIM_AMBUSH1_IDLE = 11030,
ANIM_AMBUSH1_TRIGGERED = 11031,
ANIM_AMBUSH2_IDLE = 11040,
ANIM_AMBUSH2_TRIGGERED = 11041,
ANIM_AMBUSH3_IDLE = 11050,
ANIM_AMBUSH3_TRIGGERED = 11051,
ANIM_AMBUSH4_IDLE = 11060,
ANIM_AMBUSH4_TRIGGERED = 11061,
ANIM_AMBUSH5_IDLE = 11070,
ANIM_AMBUSH5_TRIGGERED = 11071,
ANIM_ABSOLUTE1 = 11100,
ANIM_ABSOLUTE2 = 11101,
ANIM_ABSOLUTE3 = 11102,
ANIM_ABSOLUTE4 = 11103,
ANIM_ABSOLUTE5 = 11104,
ANIM_ABSOLUTE6 = 11105,
ANIM_ABSOLUTE7 = 11106,
ANIM_ABSOLUTE8 = 11107,
ANIM_TELEPORT_IN = 11200,
ANIM_TELEPORT_OUT = 11210,
ANIM_REGENERATE = 11220,
ANIM_CLOAK_ACTIVATE = 11230,
ANIM_JOYPAD_TEST_IDLE = 11299,
ANIM_PAD1_U_JPAD = 11300,
ANIM_PAD1_D_JPAD = 11301,
ANIM_PAD1_L_JPAD = 11302,
ANIM_PAD1_R_JPAD = 11303,
ANIM_PAD1_U_CBUTTONS = 11304,
ANIM_PAD1_D_CBUTTONS = 11305,
ANIM_PAD1_L_CBUTTONS = 11306,
ANIM_PAD1_R_CBUTTONS = 11307,
ANIM_PAD1_L_TRIG = 11308,
ANIM_PAD1_R_TRIG = 11309,
ANIM_PAD1_Z_TRIG = 11310,
ANIM_PAD1_A_BUTTON = 11311,
ANIM_PAD1_B_BUTTON = 11312,
ANIM_PAD2_U_JPAD = 11400,
ANIM_PAD2_D_JPAD = 11401,
ANIM_PAD2_L_JPAD = 11402,
ANIM_PAD2_R_JPAD = 11403,
ANIM_PAD2_U_CBUTTONS = 11404,
ANIM_PAD2_D_CBUTTONS = 11405,
ANIM_PAD2_L_CBUTTONS = 11406,
ANIM_PAD2_R_CBUTTONS = 11407,
ANIM_PAD2_L_TRIG = 11408,
ANIM_PAD2_R_TRIG = 11409,
ANIM_PAD2_Z_TRIG = 11410,
ANIM_PAD2_A_BUTTON = 11411,
ANIM_PAD2_B_BUTTON = 11412,
ANIM_PAD3_U_JPAD = 11500,
ANIM_PAD3_D_JPAD = 11501,
ANIM_PAD3_L_JPAD = 11502,
ANIM_PAD3_R_JPAD = 11503,
ANIM_PAD3_U_CBUTTONS = 11504,
ANIM_PAD3_D_CBUTTONS = 11505,
ANIM_PAD3_L_CBUTTONS = 11506,
ANIM_PAD3_R_CBUTTONS = 11507,
ANIM_PAD3_L_TRIG = 11508,
ANIM_PAD3_R_TRIG = 11509,
ANIM_PAD3_Z_TRIG = 11510,
ANIM_PAD3_A_BUTTON = 11511,
ANIM_PAD3_B_BUTTON = 11512,
ANIM_THROWABLE_IDLE = 12000,
ANIM_THROWABLE_BEING_PICKED_UP = 12010,
ANIM_THROWABLE_FLYING = 12020,
ANIM_TURRET_ACTIVATE = 12130,
ANIM_TURRET_IDLE = 12100,
ANIM_TURRET_FIRE = 12110,
ANIM_TURRET_DEATH = 12120,
ANIM_WPN_ENTER = 20000,
ANIM_WPN_EXIT  = 20010,
ANIM_WPN_LASTAMMOEXIT = 20020,
ANIM_WPN_IDLE = 20100,
ANIM_WPN_RUN = 20110,
ANIM_WPN_CHARGE = 20200,
ANIM_WPN_ATK1 = 20210,
ANIM_WPN_ATK2 = 20220,
ANIM_WPN_ATK3 = 20230,
ANIM_WPN_ATK4 = 20240,
ANIM_WPN_FIREOUT = 20249,
ANIM_WPN_UNDERWATER_ENTER = 20300,
ANIM_WPN_UNDERWATER_EXIT = 20310,
ANIM_WPN_UNDERWATER_LASTAMMOEXIT = 20320,
ANIM_WPN_UNDERWATER_IDLE = 20400,
ANIM_WPN_UNDERWATER_SWIM = 20410,
ANIM_WPN_UNDERWATER_CHARGE = 20500,
ANIM_WPN_UNDERWATER_ATK1 = 20510,
ANIM_WPN_UNDERWATER_ATK2 = 20520,
ANIM_WPN_UNDERWATER_ATK3 = 20530,
ANIM_WPN_UNDERWATER_ATK4 = 20240,
ANIM_DOOR_OPEN = 21010,
ANIM_DOOR_CLOSE = 21020,
ANIM_PLATFORM_WAIT = 21100,
ANIM_PLATFORM_GO = 21110,
ANIM_PLATFORM_CRUMBLE = 21120,
ANIM_PLATFORM_COLLAPSE = 21130,
ANIM_PLATFORM_SINK = 21140,
ANIM_PLATFORM_VANISH = 21150,
ANIM_GENERATOR_WAIT = 21200,
ANIM_GENERATOR_PRODUCE = 21210,
ANIM_DESTRUCTIBLE_IDLE1 = 21300,
ANIM_DESTRUCTIBLE_IDLE2 = 21301,
ANIM_DESTRUCTIBLE_IDLE3 = 21302,
ANIM_DESTRUCTIBLE_IDLE4 = 21303,
ANIM_DESTRUCTIBLE_IDLE5 = 21304,
ANIM_DESTRUCTIBLE_IDLE6 = 21305,
ANIM_DESTRUCTIBLE_IDLE7 = 21306,
ANIM_DESTRUCTIBLE_IDLE8 = 21307,
ANIM_DESTRUCTIBLE_IDLE9 = 21308,
ANIM_DESTRUCTIBLE_IDLE10 = 21309,
ANIM_DESTRUCTIBLE_GO1 = 21310,
ANIM_DESTRUCTIBLE_GO2 = 21311,
ANIM_DESTRUCTIBLE_GO3 = 21312,
ANIM_DESTRUCTIBLE_GO4 = 21313,
ANIM_DESTRUCTIBLE_GO5 = 21314,
ANIM_DESTRUCTIBLE_GO6 = 21315,
ANIM_DESTRUCTIBLE_GO7 = 21316,
ANIM_DESTRUCTIBLE_GO8 = 21317,
ANIM_DESTRUCTIBLE_GO9 = 21318,
ANIM_DESTRUCTIBLE_GO10 = 21319,
ANIM_ACTION_IDLE1 = 21400,
ANIM_ACTION_IDLE2 = 21401,
ANIM_ACTION_IDLE3 = 21402,
ANIM_ACTION_IDLE4 = 21403,
ANIM_ACTION_IDLE5 = 21404,
ANIM_ACTION_IDLE6 = 21405,
ANIM_ACTION_IDLE7 = 21406,
ANIM_ACTION_IDLE8 = 21407,
ANIM_ACTION_IDLE9 = 21408,
ANIM_ACTION_IDLE10 = 21409,
ANIM_ACTION_GO1 = 21410,
ANIM_ACTION_GO2 = 21411,
ANIM_ACTION_GO3 = 21412,
ANIM_ACTION_GO4 = 21413,
ANIM_ACTION_GO5 = 21414,
ANIM_ACTION_GO6 = 21415,
ANIM_ACTION_GO7 = 21416,
ANIM_ACTION_GO8 = 21417,
ANIM_ACTION_GO9 = 21418,
ANIM_ACTION_GO10 = 21419,
ANIM_INTER_ANIM1 = 21500,
ANIM_INTER_ANIM2 = 21501,
ANIM_INTER_ANIM3 = 21502,
ANIM_INTER_ANIM4 = 21503,
ANIM_INTER_ANIM5 = 21504,
ANIM_INTER_ANIM6 = 21505,
ANIM_INTER_ANIM7 = 21506,
ANIM_INTER_ANIM8 = 21507,
ANIM_INTER_ANIM9 = 21508,
ANIM_INTER_ANIM10 = 21509,
ANIM_INTER_ANIM11 = 21520,
ANIM_INTER_ANIM12 = 21521,
ANIM_INTER_ANIM13 = 21522,
ANIM_INTER_ANIM14 = 21523,
ANIM_INTER_ANIM15 = 21524,
ANIM_INTER_ANIM16 = 21525,
ANIM_INTER_ANIM17 = 21526,
ANIM_INTER_ANIM18 = 21527,
ANIM_INTER_ANIM19 = 21528,
ANIM_INTER_ANIM20 = 21529
Dinosaur Hunter
"Its time to make tracks"
"You are tiny grasshopper"
"Suck it down"
"Boo, No soup for you"
"Arrrgghhhh"
"I live again"

Offline Jay Doomed

  • Global Moderator
  • *****
  • Posts: 992
  • T:REP 3072
    • View Profile
Re: Kaiser's Model/Animation Format (Technical Documentation) T2
« Reply #1 on: April 20, 2017, 12:21:35 PM »
Hopefully someone does this! Go Snake go! Anybody else looking into this? I'm a sprite kind of guy not models so sorry can't do anything here to help :/
« Last Edit: April 20, 2017, 12:22:09 PM by Jay Doomed »
"Whatever it is, it doesn't belong in this world."

Offline Dinomite

  • Chronoscepter
  • ******
  • Posts: 3148
  • T:REP 9566
    • View Profile
Re: Kaiser's Model/Animation Format (Technical Documentation) T2
« Reply #2 on: April 21, 2017, 04:29:04 PM »
Hopefully someone does this! Go Snake go! Anybody else looking into this? I'm a sprite kind of guy not models so sorry can't do anything here to help :/
Snakes looking too much into Turok, hes addicted and obsessed.   :-\

The most hated person on the internet.

Offline Smoke39

  • Endtrail
  • ****
  • Posts: 219
  • T:REP 695
    • View Profile
Re: Kaiser's Model/Animation Format (Technical Documentation) T2
« Reply #3 on: April 23, 2017, 02:42:07 PM »
As with the first game, I cobbled together some kinda pseudocode for the data structures.  You can find it in my notes, if anyone cares (also linked from my modding guide).

Offline Snake Plissken

  • Endtrail
  • ****
  • Posts: 195
  • T:REP 792
    • View Profile
Re: Kaiser's Model/Animation Format (Technical Documentation) T2
« Reply #4 on: April 25, 2017, 06:07:14 AM »
the diffrence between the two games is the files version checksum byte and a few other ( few ) in the header otherwise, once its completed it will also enable pulling models out of kex turok 1, runing them through the add on, basicly changing the version flag, excludeing unspported param bytes all done automaticly or with a " change version " button in the gui, and then export to turok 2 kex format but i am working on this however and as a shame as it would sound i must say " dont count on me " otherwise someone who can pull it off may read this and think, oh he gots it under control and is doing it " when in reality its not to snake like to not prepare for every contiguous situation.
i have taken this as a chance to learn python. i belive since it all continues to line up as  i study and continue to learn and put to, that- making a blender add-on or plugin is the way to go and .obj format is pretty straight forward, i found a tamplete that will import the .obj model and has features to allow for the user to customly define further header information from within a interface in blender and its quite articulate and indepth about it. but it seems operators need to be ajusted, the tamplete needs to be conformed to the latest version of blender, and i wish to edit the plugin to add and restrict the custom header features to acompany kex's model format that is pretty much the binary with a few custom bytes in this "header" that define params specific to thew model in the engine and engine runing the model. its a tuff road however and i prob wasnt the one to pick it up but hell i had to start sometime and... oh yeah no better time then with this here and now. its slow however, and just in case someone else is alive on this earth who can do it with such a quickness since there a pro and thus pull it off before i can; just in case of this i made a post on the blender forums under some request thread, as a back up plan, since we need this quick. i have no other goals at the momment in life other then pulling of some things i inivisioned and pulling them off in kex, and the support the creation of such a thing would lead to would enable it, there for i have nothing better to do, then try to see to its construction. btw smoke your a smart guy and your understanding of the code sheds light through the point of view it was written. perhaps if your intrested, i can show you my tamplete becuse, this work is straight forward and i know you could accomplish it, no worrys however we are all bizzy guys and gals so i can understand and hope others do when they sense me away for some time off the radar when really im working towards this 24/7 in that: all i do i see to my abilitys to do what im planing in kex ( through pulling this off to ) and when i get burnt out i run a video game, then back and forth. hang in there you guys will have the crazyest epic stuff happening in kex before you know it, or a bit after when you would of liked to have known of such a thing


Offline Dinomite

  • Chronoscepter
  • ******
  • Posts: 3148
  • T:REP 9566
    • View Profile
Re: Kaiser's Model/Animation Format (Technical Documentation) T2
« Reply #5 on: April 25, 2017, 06:45:10 AM »
the diffrence between the two games is the files version checksum byte and a few other ( few ) in the header otherwise, once its completed it will also enable pulling models out of kex turok 1, runing them through the add on, basicly changing the version flag, excludeing unspported param bytes all done automaticly or with a " change version " button in the gui, and then export to turok 2 kex format but i am working on this however and as a shame as it would sound i must say " dont count on me " otherwise someone who can pull it off may read this and think, oh he gots it under control and is doing it " when in reality its not to snake like to not prepare for every contiguous situation.
i have taken this as a chance to learn python. i belive since it all continues to line up as  i study and continue to learn and put to, that- making a blender add-on or plugin is the way to go and .obj format is pretty straight forward, i found a tamplete that will import the .obj model and has features to allow for the user to customly define further header information from within a interface in blender and its quite articulate and indepth about it. but it seems operators need to be ajusted, the tamplete needs to be conformed to the latest version of blender, and i wish to edit the plugin to add and restrict the custom header features to acompany kex's model format that is pretty much the binary with a few custom bytes in this "header" that define params specific to thew model in the engine and engine runing the model. its a tuff road however and i prob wasnt the one to pick it up but hell i had to start sometime and... oh yeah no better time then with this here and now. its slow however, and just in case someone else is alive on this earth who can do it with such a quickness since there a pro and thus pull it off before i can; just in case of this i made a post on the blender forums under some request thread, as a back up plan, since we need this quick. i have no other goals at the momment in life other then pulling of some things i inivisioned and pulling them off in kex, and the support the creation of such a thing would lead to would enable it, there for i have nothing better to do, then try to see to its construction. btw smoke your a smart guy and your understanding of the code sheds light through the point of view it was written. perhaps if your intrested, i can show you my tamplete becuse, this work is straight forward and i know you could accomplish it, no worrys however we are all bizzy guys and gals so i can understand and hope others do when they sense me away for some time off the radar when really im working towards this 24/7 in that: all i do i see to my abilitys to do what im planing in kex ( through pulling this off to ) and when i get burnt out i run a video game, then back and forth. hang in there you guys will have the crazyest epic stuff happening in kex before you know it, or a bit after when you would of liked to have known of such a thing
Go on Steam.

The most hated person on the internet.

Offline Deathsphere

  • Raptor
  • ***
  • Posts: 119
  • T:REP 357
    • View Profile
Re: Kaiser's Model/Animation Format (Technical Documentation) T2
« Reply #6 on: April 25, 2017, 03:17:06 PM »
Good luck Snake hope to see this happen. I think it could really benefit your guys mods if people try to get this working.

Offline BehemothProgrammer

  • Endtrail
  • ****
  • Posts: 228
  • T:REP 810
    • View Profile
Re: Kaiser's Model/Animation Format (Technical Documentation) T2
« Reply #7 on: May 05, 2017, 08:48:15 PM »
I made a quick implementation of this in Unity. If you have and know Unity then you can download the scripts for the editors here: https://www.dropbox.com/s/nvl8ebt73v1j1sj/T2%20Model%20Editor%20%28Unity%29.zip?dl=0 or through my sig. This allows you to more easily edit the values in .skinnedmesh and .anim files.
Turok 2 Co-Op Mod

QTurok | Turok: Mountain of the Sun | WolfenTurok 3D | and more...

Offline Jay Doomed

  • Global Moderator
  • *****
  • Posts: 992
  • T:REP 3072
    • View Profile
Re: Kaiser's Model/Animation Format (Technical Documentation) T2
« Reply #8 on: May 08, 2017, 01:21:48 PM »
I made a quick implementation of this in Unity. If you have and know Unity then you can download the scripts for the editors here: https://www.dropbox.com/s/nvl8ebt73v1j1sj/T2%20Model%20Editor%20%28Unity%29.zip?dl=0 or through my sig. This allows you to more easily edit the values in .skinnedmesh and .anim files.

Good job dude one step closer :) I'm going to get Unity just to toy with this.
"Whatever it is, it doesn't belong in this world."

Offline Smoke39

  • Endtrail
  • ****
  • Posts: 219
  • T:REP 695
    • View Profile
Re: Kaiser's Model/Animation Format (Technical Documentation) T2
« Reply #9 on: May 21, 2017, 06:11:16 PM »
Found an error in the static mesh notes: vertex count and vertex list are stored in one block after the surface loop, not one block per surface inside the surface loop.

The correction is reflected in my notes.

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal