PDA

View Full Version : RTW skeletons CRACKED!!



wlesmana
12-20-2009, 15:47
For a good part of the year or so, I have been working closely with Knight Errant, a programmer who wrote tools for M2TW modding, on cracking the ever elusive skeleton file of RTW.

First of all, let's review a bit about RTW's skeleton and animation system.
In data/animations folder, you get these files:
pack.dat
skeleton.dat
pack.idx
skeleton.idx

In these files, if you extract from them, you get the skeleton files such as fs_dagger, fs_archer, etc, and the animations (inside the data/animations folder in this folder) such as LIS 01 Stand Idle.cas. A brief explanation of what these are:

- Skeletons contains the location of bones, how many there are and entries on which animation to trigger during specific events such as attacking, dying, running, etc.

- Animation files, while also in the CAS format, is different than the CAS file for models. In this, the file only contains ROTATIONS of the bones. There is no data on the location of the bone or the animation of movement (except Scene Root).

To edit animations and skeletons, we must first extract them using Vercingetorix's XIDX tool. You will get all the skeletons (fs_swordsman, fs_archer, etc) and the animations (in the data folder). anim_list.txt is the list of animation CAS files to re-pack and list.txt is the list of skeletons to re-pack. Any changes made must be re-packed, otherwise they won't register since the game only reads the .dat and .idx files.

We can create a "new" skeleton by copying an existing skeleton (i.e. copy fs_swordsman into fs_backward_spear) then using Vercingetorix's XIDX tool, we can hack into it and replace certain lines. For instance, when hacking fs_swordsman, we can replace the line:
data/animations/LIS 18_03 Stabbing downwards
with
data/animations/LIJ 07 Javlin throw_FASTER.cas


This would replace the animation of stabbing with the animation of throwing the javelin. HOWEVER, the sound triggers will not change because we cannot alter that with Verc's XIDX. Replacing entries is about the limit of XIDX.

With that in mind, here are the basic problems with RTW animation and skeleton system:

1. You cannot add new bones, as in you cannot make a new skeleton type. Sure, you can export new bones on your model, or even export new animations with that new skeleton. But the game cannot recognize it because the skeleton file, the fs_whatever, will not accept the new bones. Case in point, fs_slinger_new, which has one extra bone. You cannot use the slinger's model on any other skeleton without first exporting it WITHOUT the extra bone, nor can you use the fs_slinger_new skeleton on any other model without first exporting the model WITH the extra bone. If you want to see this problem, try changing the skeleton type in DMB for slingers then see how they look in-game.

2. You cannot re-arrange bones. You're stuck with whatever skeletons already existed because in order to create "new" skeletons, you must copy from an existing fs_whatever. The animations also does not contain any positions of the bones, only their rotations (except for Scene Root). So far, with Vercingetorix's tool, you can only hack into the skeleton file and change animation entries.

3. You cannot add or remove sound triggers. Originally this is done via EVT files. But the skeleton does not care for this EVT files which contains the sound file's name and the time it is to be triggered. This is dilemmatic for my mod, where the wargs sound like horses because they use the same skeleton thus having the same sound triggers. You either use the horse sounds or none at all. The problem lies, again, in fs_whatever skeleton file.

4. You cannot mount riders on any other skeleton that does not already be designated as mounts. These are elephants, horses and camels (cavalry). You cannot put riders on dogs, pigs and humans even if you identify them as cavalry. For instance, my wargs use the skeleton of a horse but with new animations. My trolls are using human skeleton but listed as elephant, therefore the "crew" on this elephant is "missing", as in the game engine will not render them. This is because non-cavalry skeletons do not have a "mount bone", as I call it, a bone designated to be the mounting point. If you want to see this, just use the wardog entry in DMB and use it as a mount. The rider will be missing until the mount is killed, then the rider will pop into existence and start the death animation.

5. Incompletions of some skeletons. For instance, fs_archer cannot engage in melee (thus an archer DMB entry has 2 skeletons: fs_archer, fs_dagger) while fs_slinger_new could (the entry is fs_slinger_new, fs_slinger_new). But fs_slinger_new has no "battle reaction" animations. It's missing dodging, feigning and blocking. They just don't trigger and the soldier just stands there. You can't do anything since you can't add triggers, or even remove them.

Now, all of the problems stated above has been resolved, with a new tool written by Knight Errant. The tool is still in experimental stage and it requires a great deal of knowledge of the animations system and manual work to use it though. So I will try to share whatever knowledge and information I managed to extort from it.

NOTE: Keep in mind that this thread will focus on the skeleton editing and NOT on animations, packing or other parts of modding. Please do not clutter the thread with general questions about animating in MAX, modeling and those other stuff. There are already tutorial threads on those aspects of modding.

This the tool: RTWskeletonconverter (http://badmojo.studiocyen.net/lotrmod/RTWskeletonconverter.py)
It requires you to have Python installed.
Put it in data/animation where you have all of the skeletons for easier use. This tool can do 2 things:
1. It will read, for instance, fs_dagger and create fs_dagger.txt. In other words, it converts the skeleton file into a text file which you can read and alter.
2. It can convert the text file back into skeleton file. For instance, you modified fs_dagger.txt and renamed it fs_twoknives.txt. The toll will convert it into fs_twoknives_modified. The "_modified" addition is done to keep it from overiding an existing skeleton by mistake.

Ok, now let's crack open fs_dagger and get fs_dagger.txt. If you open it up, you will see this:

+1.0000000
19
0 0 0 63 0 0 0 0 +0.0000000 +0.0000000 +0.0000000 -1
114 0 109 97 0 0 0 0 +0.0952390 +0.0007523 +0.0000001 0
0 0 0 0 0 0 0 0 +0.0234129 -0.4646038 -0.0049952 1
114 0 109 97 0 0 0 0 +0.0231562 -0.4006252 -0.0124050 2
32 0 32 32 0 0 0 0 -0.0000000 +0.2124624 -0.0000000 0
71 1 0 0 0 0 0 0 -0.0002945 +0.2115581 +0.0000000 4
59 1 59 59 0 0 0 0 -0.0000617 +0.2349734 +0.0000000 5
59 0 59 59 0 0 0 0 +0.0040140 -0.0843266 -0.2039877 5
59 0 59 59 0 0 0 0 +0.0000000 -0.2602941 -0.0697457 7
59 0 32 65 0 0 0 0 +0.0000000 -0.2600267 -0.0696740 8
10 0 59 13 0 0 0 0 +0.1786139 +0.0782279 -0.0239007 5
59 0 59 59 0 0 0 0 +0.3022083 +0.0110892 -0.0137860 10
59 0 59 59 5 0 0 0 +0.2838367 -0.0030067 +0.0263546 11
59 0 59 59 0 0 0 0 -0.1780248 +0.0782278 -0.0239007 5
78 0 95 66 0 0 0 0 -0.3022082 +0.0110892 -0.0137860 13
0 0 65 78 4 0 0 0 -0.2838367 -0.0030065 +0.0263547 14
66 0 69 78 0 0 0 0 -0.0952390 +0.0007524 +0.0000000 0
77 0 13 10 0 0 0 0 -0.0234127 -0.4646038 -0.0049953 16
116 0 109 97 0 0 0 0 -0.0231561 -0.4006253 -0.0124050 17
0 0 0 63
150
data/animations/LID_01_Standing~idle~new~actor.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0 0
data/animations/LID_01_Incidental_idle~01.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
5 0 0 0 14 0 14 0 scratch_head 0 0 0
data/animations/LID_01_Incidental_idle~02.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
5 0 0 0 6 0 6 0 clear_throat 0 0 0
data/animations/LID_01_Incidental_idle~03.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
1 0 0 0 4 0 8 0 ANIM_IDLE_CLOTH 0 1 0
data/animations/LID_01_Incidental_idle~04.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
5 0 0 0 9 0 9 0 neck_crack 0 0 0
5 0 0 0 10 0 14 0 stretch_arms 0 1 0
data/animations/LID_01_Incidental_idle~05.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
5 0 0 0 7 0 7 0 neck_crack 0 0 0
5 0 0 0 8 0 12 0 stretch_back 0 1 0
data/animations/LID_01_Incidental_idle~06.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
5 0 0 0 8 0 8 0 neck_crack 0 0 0
5 0 0 0 10 0 12 0 stretch_arms 0 1 0
data/animations/LID_01_Incidental_idle~07.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
5 0 0 0 2 0 2 0 stretch_arms 0 0 0
data/animations/LID_01_Incidental_idle~08.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
5 0 0 0 4 0 4 0 sneeze 0 0 0
data/animations/LID_01_Incidental_idle~09.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
5 0 0 0 16 0 16 0 scratch_head 0 0 0
data/animations/LID_08_Stand~2~90~right.cas 0 16383 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
3
2 0 0 0 12 0 16 0 unit_march 0 1 0
2 0 0 0 20 0 26 0 unit_march 0 1 0
2 0 0 0 30 0 32 0 unit_march 0 1 0 0
data/animations/LID_09_Stand~2~90~left.cas 0 49153 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
2 0 0 0 10 0 14 0 unit_march 0 1 0
2 0 0 0 20 0 24 0 unit_march 0 1 0 0
data/animations/LID_34~stand~2~March.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
2 0 0 0 16 0 20 0 unit_march 0 1 0
2 0 0 0 26 0 30 0 unit_march 0 1 0
data/animations/LID_03~March~loop.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
2 0 0 0 6 0 10 0 unit_march 0 1 0
2 0 0 0 16 0 20 0 unit_march 0 1 0
data/animations/LID_36~March~2~stand.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
2 0 0 0 6 0 8 0 unit_march 0 1 0
2 0 0 0 12 0 14 0 unit_march 0 1 0 0 0 0
data/animations/LID_35~Stand~2~Run.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
3
2 0 0 0 12 0 16 0 unit_run 0 1 0
2 0 0 0 18 0 22 0 unit_run 0 1 0
2 0 0 0 25 0 27 0 unit_march 0 1 0
data/animations/LID_04~Run~Loop.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
2 0 0 0 5 0 6 0 unit_run 0 1 0
2 0 0 0 10 0 11 0 unit_run 0 1 0
data/animations/LID_39~Run~2~Stand.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
5
2 0 0 0 6 0 8 0 unit_run 0 1 0
2 0 0 0 14 0 16 0 unit_run 0 1 0
2 0 0 0 22 0 24 0 unit_run 0 1 0
2 0 0 0 28 0 32 0 unit_march 0 1 0
2 0 0 0 34 0 38 0 unit_march 0 1 0
data/animations/LID_40~Run~2~march.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
3
2 0 0 0 6 0 8 0 unit_run 0 1 0
2 0 0 0 14 0 16 0 unit_run 0 1 0
2 0 0 0 24 0 28 0 unit_march 0 1 0
data/animations/LID_38~March~2~Run.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
3
2 0 0 0 8 0 12 0 unit_march 0 1 0
2 0 0 0 14 0 18 0 unit_march 0 1 0
2 0 0 0 24 0 26 0 unit_run 0 1 0
data/animations/LID_48_Standing~ready~2~STAND.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
2 0 0 0 14 0 15 0 unit_march 0 0 0
data/animations/LID_02_Standing~Ready.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0 0 0 0 0 0 0 0 0 0 0 0 0
data/animations/LIS~10~stand~ready~turn~90~right.cas 0 16384 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
2 0 0 0 6 0 7 0 unit_march 0 1 0
2 0 0 0 8 0 9 0 unit_march 0 1 0
data/animations/LIS~11~stand~ready~turn~90~left.cas 0 49152 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
2 0 0 0 6 0 7 0 unit_march 0 1 0
2 0 0 0 8 0 9 0 unit_march 0 1 0
data/animations/LID_33_STAND~2~Standing~ready.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
2 0 0 0 6 0 10 0 unit_march 0 1 0
data/animations/LID_50_Stand~Ready~2~Adance.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
2 0 0 0 24 0 28 0 unit_march 0 1 0
data/animations/LID_07_Adance.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
2 0 0 0 12 0 16 0 unit_march 0 1 0
2 0 0 0 28 0 32 0 unit_march 0 1 0
data/animations/LID_45_Advance~2~Stand~Ready.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
2 0 0 0 12 0 16 0 unit_march 0 1 0
data/animations/LID_49~Stand~ready~2~Retreat.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
2 0 0 0 22 0 24 0 unit_march 0 1 0
data/animations/LID_06_Retreat.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
2 0 0 0 16 0 20 0 unit_march 0 1 0
2 0 0 0 30 0 36 0 unit_march 0 1 0
data/animations/LID_44_Retreat~2~Stand~Ready.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
2 0 0 0 15 0 15 0 unit_march 0 0 0
data/animations/LID_25_Shuffle~forward.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
2 0 0 0 7 0 7 0 unit_march 0 0 0
2 0 0 0 12 0 12 0 unit_march 0 0 0
data/animations/LID_26_Shuffle~back.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
2 0 0 0 8 0 8 0 unit_march 0 0 0
2 0 0 0 14 0 14 0 unit_march 0 0 0
data/animations/LID_27_Shuffle~left.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
2 0 0 0 11 0 11 0 unit_march 0 0 0
2 0 0 0 16 0 16 0 unit_march 0 0 0
data/animations/LID_28_Shuffle~Right.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
2 0 0 0 9 0 9 0 unit_march 0 0 0
2 0 0 0 16 0 16 0 unit_march 0 0 0 0 0 0 0 0
data/animations/LID_18_Stabbing~move~downwards~45.cas 0 0 214 99 137 63 172 28 218 190 221 224 151 63 246 29 206 204 204 63 14 0 86 97 14 62 28 7 74 127 +0.0000 +0.0000 +1.0000
2
1 0 0 0 12 0 12 0 ANIM_SWOOSH 0 0 0
1 0 0 0 14 0 16 0 ANIM_SCRAPE 0 1 0
data/animations/LID_19_Slashing~Downwards~45.cas 0 0 153 114 233 190 106 188 244 190 234 78 196 63 58 244 206 204 204 63 15 0 194 210 131 62 28 7 74 127 +0.0000 +0.0000 +1.0000
2
1 0 0 0 14 0 14 0 ANIM_SWOOSH 0 0 0
1 0 0 0 15 0 16 0 ANIM_SCRAPE 0 1 0
data/animations/LID_12~horizontla~stab~attack.cas 0 0 192 177 46 62 205 204 140 62 236 161 203 63 90 4 205 204 204 63 12 0 149 28 205 62 28 7 74 127 +0.0000 +0.0000 +1.0000
2
1 0 0 0 10 0 10 0 ANIM_SWOOSH 0 0 0
1 0 0 0 12 0 14 0 ANIM_SCRAPE 0 1 0
data/animations/LID_13_Slashing~Attack~Horizontal.cas 0 0 101 119 222 61 188 116 147 60 213 83 204 63 197 2 205 204 204 63 14 0 98 25 189 62 28 7 74 127 +0.0000 +0.0000 +1.0000
2
1 0 0 0 12 0 16 0 ANIM_SCRAPE 0 1 0
1 0 0 0 12 0 12 0 ANIM_SWOOSH 0 0 0
data/animations/LID_15_Stabbing~upwards~45.cas 0 0 132 229 183 62 154 153 153 63 183 146 199 63 58 9 206 204 204 63 12 0 226 98 144 62 28 7 74 127 +0.0000 +0.0000 +1.0000
2
1 0 0 0 8 0 8 0 ANIM_SWOOSH 0 0 0
1 0 0 0 10 0 12 0 ANIM_SCRAPE 0 1 0
data/animations/LID_16_slashing~upwards~45.cas 0 0 205 189 13 191 248 83 147 63 147 37 192 63 154 241 205 204 204 63 14 0 2 82 36 63 28 7 74 127 +0.0000 +0.0000 +1.0000
3
4 0 0 0 10 0 12 0 INDIVIDUAL_ATTACK_GRUNT 0 1 0
1 0 0 0 14 0 14 0 ANIM_SWOOSH 0 0 0
1 0 0 0 14 0 18 0 ANIM_SCRAPE 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
data/animations/LIS~Run~attack.cas 0 0 149 241 225 190 180 200 118 190 51 219 196 63 157 244 205 204 204 63 10 0 185 203 49 64 28 7 74 127 +0.0000 +0.0000 +1.0000
6
4 0 0 0 1 0 5 0 INDIVIDUAL_ATTACK_SCREAM 0 1 0
2 0 0 0 4 0 6 0 unit_run 0 1 0
1 0 0 0 8 0 8 0 ANIM_SWOOSH 0 0 0
1 0 0 0 9 0 11 0 ANIM_SCRAPE 0 1 0
2 0 0 0 10 0 12 0 unit_run 0 1 0
2 0 0 0 16 0 18 0 unit_run 0 1 0 0 0 0
data/animations/DIE~02_03~stabbed~dying~forwards.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
4 0 0 0 2 0 2 0 INDIVIDUAL_DEATH 0 0 0
2 0 0 0 46 0 46 0 fall 0 0 0
data/animations/DIE~Forwards.cas 0 18210 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
4 0 0 0 2 0 2 0 INDIVIDUAL_DEATH 0 0 0
2 0 0 0 15 0 15 0 fall 0 0 0
data/animations/DIE~02_01~dying~backwards.cas 0 32990 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
4 0 0 0 2 0 2 0 Death_Cry 0 0 0
2 0 0 0 11 0 11 0 fall 0 0 0
data/animations/DIE~01~dying~Backwards2.cas 0 23260 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
4 0 0 0 2 0 2 0 INDIVIDUAL_DEATH 0 0 0
2 0 0 0 6 0 6 0 fall 0 0 0
data/animations/DIE~01~dying~to~his~right.cas 0 12923 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
4 0 0 0 2 0 2 0 INDIVIDUAL_DEATH 0 0 0
2 0 0 0 12 0 12 0 fall 0 0 0
data/animations/DIE~Back~right.cas 0 32944 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
4 0 0 0 2 0 2 0 INDIVIDUAL_DEATH 0 0 0
2 0 0 0 8 0 8 0 fall 0 0 0 0 0
data/animations/Flailing~Cycle.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
4 0 0 0 0 0 2 0 Fall_Scream 0 1 1
data/animations/Flailing~Cycle~to~land.cas 0 22126 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
1 0 0 0 2 0 2 0 ANIM_FALL_SQUASH 0 0 0
4 0 0 0 4 0 4 0 INDIVIDUAL_FALL_GRUNT 0 0 0 0
data/animations/man_trampled_down_roll_from_front.CAS 0 19220 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
3
4 0 0 0 2 0 2 0 Death_Cry 0 0 0
2 0 0 0 10 0 10 0 fall 0 0 0
2 0 0 0 20 0 20 0 fall 0 0 0 0 0 0 0
data/animations/LID_Charge~Death.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
4
2 0 0 0 4 0 4 0 unit_run 0 0 0
2 0 0 0 9 0 9 0 unit_run 0 0 0
4 0 0 0 10 0 10 0 Death_Cry 0 0 0
2 0 0 0 16 0 16 0 fall 0 0 0 0
data/animations/LID_05_Charge.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
2 0 0 0 4 0 6 0 unit_run 0 1 0
2 0 0 0 9 0 11 0 unit_run 0 1 0
data/animations/LID_51~stand~ready~2~charge.cas 0 60170 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
4
4 0 0 0 0 0 10 0 Inviduals_Charge 0 1 0
2 0 0 0 18 0 22 0 unit_march 0 1 0
2 0 0 0 24 0 26 0 unit_run 0 1 0
2 0 0 0 28 0 28 0 unit_run 0 1 0 0
data/animations/LID_41~Run~2~charge.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
3
4 0 0 0 0 0 10 0 Inviduals_Charge 0 1 0
2 0 0 0 4 0 6 0 unit_run 0 1 0
2 0 0 0 10 0 12 0 unit_run 0 1 0
data/animations/LID_42~charge~2~stand~ready.cas 0 5366 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
6
1 0 0 0 0 0 0 0 ANIM_ARCHER_AIM 0 0 0
2 0 0 0 4 0 4 0 unit_run 0 0 0
2 0 0 0 10 0 10 0 unit_run 0 0 0
2 0 0 0 14 0 14 0 unit_run 0 0 0
2 0 0 0 18 0 20 0 unit_march 0 1 0
2 0 0 0 22 0 22 0 unit_march 0 0 0
data/animations/LID_21_Charge~attack.cas 0 5486 184 193 17 190 250 126 106 62 234 252 203 63 95 252 204 204 204 63 16 0 106 148 119 64 28 7 74 127 +0.0000 +0.0000 +1.0000
10
4 0 0 0 2 0 14 0 INDIVIDUAL_ATTACK_SCREAM 0 1 0
2 0 0 0 4 0 6 0 unit_run 0 1 0
2 0 0 0 8 0 10 0 unit_run 0 1 0
1 0 0 0 13 0 13 0 ANIM_SWOOSH 0 0 0
2 0 0 0 14 0 16 0 unit_run 0 1 0
1 0 0 0 17 0 19 0 ANIM_SCRAPE 0 1 0
2 0 0 0 18 0 20 0 unit_run 0 1 0
2 0 0 0 26 0 28 0 unit_march 0 1 0
2 0 0 0 31 0 33 0 unit_march 0 1 0
2 0 0 0 34 0 36 0 unit_march 0 1 0
data/animations/LID_21_Charge~Jump~attack.cas 0 3596 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 21 0 112 6 132 64 28 7 74 127 +0.0000 +0.0000 +1.0000
6
2 0 0 0 4 0 4 0 unit_run 0 0 0
4 0 0 0 8 0 8 0 Attack_Scream 0 0 0
1 0 0 0 16 0 16 0 ANIM_SWOOSH 0 0 0
1 0 0 0 20 0 20 0 ANIM_SCRAPE 0 0 0
2 0 0 0 20 0 20 0 unit_run 0 0 0
2 0 0 0 21 0 21 0 unit_run 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
data/animations/LID~82~stand~to~hide.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/LID~83~hide.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/LID~84~hide~to~stand.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/LID_32~Stand~ready~back~impact.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
4 0 0 0 2 0 2 0 INDIVIDUAL_GRUNT 0 0 0
2 0 0 0 4 0 6 0 unit_march 0 1 0
data/animations/LID_32M~Stand~ready~back~impact.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
3
4 0 0 0 2 0 4 0 INDIVIDUAL_GRUNT 0 1 0
2 0 0 0 6 0 8 0 unit_march 0 1 0
2 0 0 0 8 0 10 0 unit_march 0 1 0
data/animations/LID_32~Stand~ready~back~right~impact.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
4 0 0 0 2 0 2 0 INDIVIDUAL_GRUNT 0 0 0
data/animations/LID_32M~Stand~ready~back~right~impact.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
2 0 0 0 6 0 6 0 unit_march 0 0 0
4 0 0 0 6 0 6 0 INDIVIDUAL_GRUNT 0 0 0
data/animations/LID_32~Stand~ready~front~impact.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
4 0 0 0 4 0 4 0 INDIVIDUAL_GRUNT 0 0 0
data/animations/LID_32M~Stand~ready~front~impact.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
3
4 0 0 0 2 0 2 0 INDIVIDUAL_GRUNT 0 0 0
2 0 0 0 6 0 6 0 unit_march 0 0 0
2 0 0 0 8 0 8 0 unit_march 0 0 0
data/animations/LID_32~Stand~ready~front~left~impact.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
4 0 0 0 2 0 2 0 INDIVIDUAL_GRUNT 0 0 0
data/animations/LID_32M~Stand~ready~front~left~impact.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
4 0 0 0 4 0 4 0 INDIVIDUAL_GRUNT 0 0 0
data/animations/Ladder_02~Climb~down.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
2 0 0 0 6 0 6 0 unit_march 0 0 0
2 0 0 0 14 0 14 0 unit_march 0 0 0
data/animations/Ladder_03~Idle~still.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/Ladder_01~Climb~up.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
2 0 0 0 6 0 6 0 unit_march 0 0 0
2 0 0 0 14 0 14 0 unit_march 0 0 0
data/animations/LID_53~Stand~idle~~to~climb~ladder.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
2 0 0 0 12 0 12 0 unit_march 0 0 0
2 0 0 0 20 0 20 0 unit_march 0 0 0
data/animations/LIS_102~Battlement~2~climb~ladder~leftside.cas 0 58739 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
3
2 0 0 0 9 0 9 0 unit_march 0 0 0
2 0 0 0 22 0 22 0 unit_march 0 0 0
2 0 0 0 32 0 32 0 unit_march 0 0 0
data/animations/LID_54~Climb~off~ladder~onto~left~bat~left~2~standready.cas 0 7673 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
2 0 0 0 12 0 12 0 unit_march 0 0 0
2 0 0 0 20 0 20 0 unit_march 0 0 0
data/animations/LID_56_Climb~down~ladder~2~Stand~ready.cas 0 7673 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
2 0 0 0 7 0 7 0 unit_march 0 0 0
2 0 0 0 20 0 20 0 unit_march 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
data/animations/carry_and_artillery/LIS~idle~to~Carry~idle.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/carry_and_artillery/Carry_01~Stand~idle~empty~hands.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/carry_and_artillery/Carry~idle~to~Stand~LIS~idle.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/carry_and_artillery/Carry_08~Empty~hands~2~carry~object.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
5 0 0 0 26 0 30 0 exert 0 1 0
data/animations/carry_and_artillery/Carry_02~Stand~carrying~object.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/carry_and_artillery/Carry_04~Stand~2~walk~carrying~object.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
2 0 0 0 16 0 20 0 unit_march 0 1 0
data/animations/carry_and_artillery/Carry_03~Walk~carrying~object.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
2 0 0 0 6 0 10 0 unit_march 0 1 0
2 0 0 0 20 0 24 0 unit_march 0 1 0
data/animations/carry_and_artillery/Carry_05~walk~2~stand~carrying~object.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
2 0 0 0 10 0 14 0 unit_march 0 1 0
data/animations/carry_and_artillery/Carry_09~Carry~object~2~Empty~hands.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
5 0 0 0 34 0 40 0 relief 0 1 0
data/animations/carry_and_artillery/Art_17~Stand~2~Push~heavy~object.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
3
2 0 0 0 26 0 28 0 unit_march 0 1 0
5 0 0 0 26 0 32 0 exert 0 1 0
2 0 0 0 84 0 86 0 unit_march 0 1 0
data/animations/carry_and_artillery/Art_18~Push~heavy~object~loop.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
3
5 0 0 0 1 0 13 0 exert 0 1 0
2 0 0 0 6 0 8 0 unit_march 0 1 0
2 0 0 0 12 0 13 0 unit_march 0 1 0
data/animations/carry_and_artillery/Art_19~Push~heavy~object~2~STAND.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
3
2 0 0 0 16 0 20 0 unit_march 0 1 0
5 0 0 0 20 0 26 0 relief 0 1 0
2 0 0 0 32 0 35 0 unit_march 0 1 0
data/animations/carry_and_artillery/Art_20~stand~2~~Pull.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
5
2 0 0 0 16 0 20 0 unit_march 0 1 0
2 0 0 0 34 0 38 0 unit_march 0 1 0
5 0 0 0 46 0 52 0 exert 0 0 0
2 0 0 0 65 0 67 0 unit_march 0 0 0
2 0 0 0 78 0 80 0 unit_march 0 1 0
data/animations/carry_and_artillery/Art_21~Pull~loop.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
3
2 0 0 0 6 0 10 0 unit_march 0 1 0
5 0 0 0 12 0 12 0 2 0 1 0
2 0 0 0 12 0 14 0 unit_march 0 1 0
data/animations/carry_and_artillery/Art_22~Pull~To~stand.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
3
2 0 0 0 10 0 14 0 unit_march 0 1 0
2 0 0 0 22 0 26 0 unit_march 0 1 0
2 0 0 0 38 0 42 0 unit_march 0 1 0
data/animations/carry_and_artillery/Art_23~carry~01~2~raise~hand~in~air.cas 0 58845 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/carry_and_artillery/Art_24~~raise~hand~in~air.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/carry_and_artillery/Art_25~~raise~hand~to~carry~01.cas 0 6638 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/carry_and_artillery/Art_26~carry~01~2~raise~hand~in~air.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/carry_and_artillery/Art_27~raised~hand~in~air~loop.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/carry_and_artillery/Art_28~raised~hand~to~carry~01.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/carry_and_artillery/ballista_crew_left_stand2crank.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
2 0 0 0 18 0 22 0 unit_march 0 1 0
data/animations/carry_and_artillery/ballista_crew_left_crank_loop.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/carry_and_artillery/ballista_crew_left_fire_idle.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/carry_and_artillery/ballista_crew_right_stand_2_crank.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
2 0 0 0 34 0 36 0 unit_march 0 1 0
data/animations/carry_and_artillery/ballista_crew_right_crank_loop.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/carry_and_artillery/ballista_crew_right_fire_idle.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/carry_and_artillery/scorpion_crew_01_stand2crank.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
2 0 0 0 11 0 13 0 unit_march 0 1 0
data/animations/carry_and_artillery/scorpion_crew_02_crank.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/carry_and_artillery/scorpion_crew_03_crank2fire_idle.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/carry_and_artillery/scorpion_crew_04_fire_idle.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/carry_and_artillery/scorpion_crew_05_fire_commence.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/carry_and_artillery/scorpion_crew_06_fire_recover.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/carry_and_artillery/Art_16~Stand~idle~release~crank.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
4
2 0 0 0 16 0 17 0 unit_march 0 1 0
2 0 0 0 21 0 23 0 unit_march 0 1 0
2 0 0 0 47 0 49 0 unit_march 0 1 0
2 0 0 0 58 0 60 0 unit_march 0 1 0
data/animations/LIS~01~Front~step.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
2 0 0 0 8 0 10 0 unit_march 0 1 0
2 0 0 0 19 0 21 0 unit_march 0 1 0
data/animations/LIS~01~Back~step.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
2 0 0 0 9 0 11 0 unit_march 0 1 0
2 0 0 0 20 0 22 0 unit_march 0 1 0
data/animations/LIS~01~Left~step.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
2 0 0 0 9 0 13 0 unit_march 0 1 0
2 0 0 0 20 0 24 0 unit_march 0 1 0
data/animations/LIS~01~Right~step.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
2 0 0 0 9 0 13 0 unit_march 0 1 0
2 0 0 0 20 0 24 0 unit_march 0 1 0
data/animations/LID_94_signal1.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/LID_97_signal4.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/LID_95_signal2.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/LID_96_signal3.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0 0 0 0 0
data/animations/carry_and_artillery/ballista_crew_left_fire_idle.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/carry_and_artillery/ballista_crew_left_fire_commence.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/carry_and_artillery/ballista_crew_left_fire_recover.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
2 0 0 0 33 0 36 0 unit_march 0 1 0
data/animations/carry_and_artillery/ballista_crew_right_fire_idle.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/carry_and_artillery/ballista_crew_right_fire_commence.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
2 0 0 0 16 0 19 0 unit_march 0 1 0
data/animations/carry_and_artillery/ballista_crew_right_fire_recover.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
2 0 0 0 20 0 23 0 unit_march 0 1 0
data/animations/LIS_108_guard_high.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/LIS_109_guard_low.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/LIS_112_dodge.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/LIS_112_dodge.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/LIS_111_feint.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
1 0 0 0 3 0 3 0 ANIM_SWOOSH 0 0 0
data/animations/LIS_111_feint.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
1 0 0 0 3 0 3 0 ANIM_SWOOSH 0 0 0
data/animations/LIS_110_combat_step_back.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
2 0 0 0 7 0 7 0 unit_march 0 0 0
data/animations/LIS_113_knockdown_launch.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
4 0 0 0 2 0 2 0 INDIVIDUAL_GRUNT 0 0 0
2 0 0 0 10 0 10 0 fall 0 0 0
data/animations/LIS_116_knockdown.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
2
4 0 0 0 2 0 2 0 INDIVIDUAL_GRUNT 0 0 0
2 0 0 0 8 0 8 0 fall 0 0 0
data/animations/LIS_114_knockdown_idle.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/LIS_115_knockdown_idle_2_Stand_ready.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
2 0 0 0 24 0 24 0 unit_march 0 0 0
data/animations/LID_57_06~Taunt~1.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
4 0 0 0 20 0 30 0 Taunting 0 1 0
data/animations/LID_57_04~Taunt~2.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
4 0 0 0 15 0 40 0 Taunting 0 1 0
data/animations/LID_57_07~Taunt~3.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
4 0 0 0 15 0 30 0 Taunting 0 1 0 0 0 0 0
data/animations/Screeching~Woman~Idle.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
1 0 0 0 0 0 20 0 ANIM_SCREECHERS 0 1 1
data/animations/Screeching~Woman~Idle2.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
1 0 0 0 0 0 20 0 ANIM_SCREECHERS 0 1 1
data/animations/LIS~74_06~celeb2.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
1
4 0 0 0 25 0 40 0 Celebration 0 1 0 0 0 0
data/animations/LID_swim_STAND2SWIM.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/LID_swim_SWIM2STAND.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/LIS_swim_treadwater.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/LIS_swim.cas 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/LIS_swim_shuffle_forward.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/LIS_swim_shuffle_backward.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/LIS_swim_shuffle_left.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/LIS_swim_shuffle_right.CAS 0 0 0 0 0 0 0 0 0 0 205 204 204 63 0 0 0 0 0 0 0 0 0 0 0 0 28 7 74 127 +0.0000 +0.0000 +1.0000
0
data/animations/LIS_swim_attack.CAS 0 0 71 15 49 61 0 0 0 0 170 185 204 63 26 1 206 204 204 63 15 0 182 108 183 61 28 7 74 127 +0.0000 +0.0000 +1.0000
0 0 0
+1.8240068 +4.9999900 +6.8308988 0 1


Somewhat daunting, I know. And there's no manual for it too, unlike many text files you can modify in RTW. There are only numbers, which we must try to interpret and explore what they do.

This is what I have found out about what they mean or might mean:
https://img130.imageshack.us/img130/1452/figure1.th.gif (https://img130.imageshack.us/i/figure1.gif/)

A. This is the size of the model. Verc's XIDX can resize a model by multiplying this number and E with the new size. You can use that for easiest resizing, or you can edit this number and the coordinates to get a resize.

B. This is the number of bones in the model, excluding Scene Root, which technically isn't a bone.

C. Now this, is still elusize. I have no idea what these numbers do. If they're for some reason does SOMETHING, most of them are unused in fs_slinger_new, which uses 0 instead of a number. So I have no idea what they do. Making them all 0 (which I did try) doesn't appear to change anything on the soldier's behavior, except during the firing of a missile. It's still too hard to notice anything right now.

D. This is pretty useful. 5 0 0 0 means it's the "right hand" so far only used as an attach point for pikes. Naturally it's on the right hand bone. If you change it to head bone, then pikes for pikemen units will be attached to the soldier's head. Making it all 0 will make pikes attached to Scene Root, aka. the pelvis (yes, it's juvile joy of watching your soldiers "raise" and "lower" his pike). 4 0 0 0 is used on the left hand bone. As of now, I have no idea what this is used for. 1 0 0 0 is the bone designated for the mounting of horse or camel. Basically it means 1 rider per mount and it follows the triggers of a horse type. 2 0 0 0 is used for elephant skeleton, so this is a mounting bone for a skeleton used as elephant. If you used this attribute on another bone, the engine will attach the crew/rider of the mount on that bone. So adding 1 0 0 0 on a bone will enable that skeleton to attach a horse rider on it. I have no idea if 3 0 0 0 is used at all since I couldn't find a skeleton that uses it.

E. Now this is the main attraction. This is the list of the bone's coordinates in respect to its parent. Changing the values of these will alter the appearance of a skeleton. You can extend arms, or the neck or create an entirely new skeleton.

F. This is the hierarchy of the bones, which bone is which bone's children, etc. I will explain how to make the list easily later in this post.

G. Unknown. Doesn't seem to do anything, really. fs_slinger_new and fs_archer even list them as all 0s.

H. The number of animation entries.

I. The entry for the animation to use. The list of animation triggers appear to be a set list. You cannot move stand_idle to the bottom and expects the engine to activate that for standing idle. It will always read the first entry as stand_idle. There appears to be a pre-determined set of trigger to be read when the engine reads a skeleton file.

J. Most of these is unknown. There's little difference between this entry's numbers and the others. There are some exceptions, most notable is the IMPACT FRAME number, where it indicated the frame an impact is supposed to occur when an attack animation is played so the opponent may react accordingly. This one is interesting because during my testing, if you put the impact frame to be 0, then the attack will not commence. If you put impact frame on all attacks to be 0, you will get a unit/soldier that CANNOT attack! Further research required.

K. This is the number of entries of sound triggers. If there is no sound to be activated, this number is set at 0.

L. I'm semi-certain the number here corresponds to the type of sound data banks. Further research required.

M. I'm semi-certain the first number is the frame the sound should start to trigger and the third number is the last frame the sound could trigger. Having the same numbers mean the sound is always triggered at that exact frame, having a range means they could be triggered at any time within the range. Note that this is still my speculation.

N. The name of the sound file/bank to derive the sound files from. This is what you change if you want this particular skeleton to produce a different sound than the one you copied it from.

O. This is still unknown. It appears to be relevant but I still don't know what they're for.

Then, we see this part:
https://img686.imageshack.us/img686/999/figure2.th.gif (https://img686.imageshack.us/i/figure2.gif/)

The "0 0 0" is from fs_dagger, which you cannot use for a missile unit. That "0 0 0" is actually 3 animation triggers that are deactivated, they are missile_aim, missile_hold and missile_fire, which can be seen at the figure below it from fs_archer. I have tested and copied the 3 entries from fs_archer and paste it on fs_dagger to make a new skeleton and it works. I can just use "fs_archerdagger, fs_archerdagger" for entry in DMB instead of "fs_archer, fs_dagger". I am unsure why CA would deactivate some animation triggers. Perhaps there's a limit on the number of triggers? Or perhaps they do it simply to make skeleton files less cluttered, as in less triggers better performance.

If we compare all of these entries then we find that each skeleton is read in a series of triggers. If the entry is simply "0" then the game would say "There's no entry for it, can't play, let's crash instead!" like if you used "fs_dagger, fs_dagger" for a unit with a missile attack since missile animations are missing from fs_dagger.

Ok, so let's get to the meat of the possibilities. What are really possible with this tool? Here's an example:

https://img41.imageshack.us/img41/2668/figure3.th.jpg (https://img41.imageshack.us/i/figure3.jpg/)
This is a screenshot of my testing of a completely different skeleton but a very simple one: a snake, which is just a straight line.

https://img130.imageshack.us/img130/4336/figure4n.th.jpg (https://img130.imageshack.us/i/figure4n.jpg/)
This is the model I quickly made up for this testing.

I made 1 animation to test and the result can be seen here:
https://www.youtube.com/watch?v=CiRFnRK3yTU

But what can a new kind of skeleton do for existing models/units? Well, we can now do what M2TW modders already did with adding new bones, like this:
https://www.youtube.com/watch?v=DNNNEie1nn4

Note that there is a drawback to this method, meaning the bow cannot be "hidden" by the engine when switching weapons. This is because it is animated, thus will not be read as "primary weapon" stand-alone object. We are also bound by the hardcode: there's a maximum of 24 bones per skeleton. I tried adding more and the game just CTD without error message.

Even though it only appears I added very few new animations on the archer, in fact ALL of the animations are new. Basically, I had to export every single animation to be used by the new skeleton (with 24 bones instead of the regular 19 bones) because the way the engine reads animations.

The RTW engine (which I think was rectified in M2TW) reads every bone in the skeleton by a set list. For the regular skeleton RTW use, this is the list:

bone_pelvis
bone_abs
bone_torso
bone_cloak_top
bone_cloak_mid
bone_cloak_bottom
bone_head
bone_Lupperarm
bone_Lelbow
bone_Lhand
bone_Rupperarm
bone_Relbow
bone_Rhand
bone_LThigh
bone_Llowerleg
bone_Lfoot
bone_RThigh
bone_Rlowerleg
bone_Rfoot

The list's coordinates can be seen in part E above. If you convert fs_archer and fs_slinger_new you will see the difference. The slinger has an extra bone after bone_Rhand called bone_Weapon. Note that the names of bones are irrelevant. The engine ignores the names and only reads from the list. Meaning if you used a regular skeleton's animation (19 bones) on a slinger (20 bones), the rotation value of bone_Rthigh will be applied to the slinger's bone_Weapon and so on, until the slinger's last bone, bone_Rfoot, receives no rotation. Importing a slinger's animation on a skeleton with less than 20 bones will cause an error on the MAX script. You can easily test this in MAX: open the slinger's model, then import a regular animation, it will show up weird. Now try it again but delete bone_Weapon before importing the same animation. The slinger model should animate normally.

So making a new skeleton for RTW has its drawback: you have to make every single animation it's going to use. Sure, it's not really that hard since in my case, I just imported existing animations, add in the new bones then export them. Only 3 animations are using the new bones: readying the bow, holding the bow and firing the arrow. It's a time-consuming labor mostly.

So, in summary, to create a new skeleton, this is what you must do:

1. Make the model with the new skeleton.
2. Export it as a CAS model, then press F11.
3. Copy the data shown by the scipt, this is important.
4. Make all the new animations you want to use on your new skeleton, export them with all the bones.
5. Extract all the skeletons and animations.
6. Pick the closest skeleton you want to use, copy it and rename.
7. Convert the new skeleton into text file, open it.
8. At the bone coordinate part and hierarchy, use the data from part 3. However, be sure to convert the coordinates rom (x, y, z) in MAX to (-x, z, -y) for the skeleton.
9. Change all the animations into the new animations. Change any sound trigger if you want.
10. Convert the edited skeleton text file into skeleton file. Delete the old one, rename the new one.
11. Add the new skeleton name in list.txt.
12. Add all the new animations in anim_list.txt
13. Repack skeletons and animations.
14. Use the new skeleton in DMB.

Now let's get crackin' and figure out what else can we uncover from this!

Many thanks to Knight Errant for writing this wonderful tool and putting up with my endless nagging for revisions and info.

PS. Also from Knigh Errant, a fix for Vencingetorix's CAS Export/Import tool here: CAS_IE_b79_modbyKE_ver3.ms (http://badmojo.studiocyen.net/lotrmod/CAS_IE_b79_modbyKE_ver3.ms)
This updated tool does nothing for the average modder who only deals with models. The fixes are for animations. It fixes the animation glitch where soldiers will not reach their actual destination if the walking animation is edited. They will now reach their intended spots. Also fixed is the glitch where the soldier have to do a 90 degrees turn and the engine cannot turn them partially. They can now do so without glitching. One more glitch still exists though, which is the not-reaching-destination glitch for mounted units.

PatricianS
12-21-2009, 19:43
Maybe it's me, but I'm getting an error when trying to launch "RTWskeletonconverter.py".

I have Python 2.6 installed
I placed the file in "RTW\FOE\Data\animations" (where FOE is the modfolder)
My skeletons and animations are both unpacked

This is the error I get:
https://img685.imageshack.us/img685/3762/errorq.jpg

Any idea?

wlesmana
12-22-2009, 15:42
You need Python 3.0 for the converter.
Sorry about this but the org's forum is being buggy for me (and others too I think :embarassed:) and I'm having problems accessing TWC so if anyone would like to ask more questions about the converter, I'd be happy to help and discuss all the possibilities and findings at my forum at this thread: http://lotr-tw.net/viewtopic.php?p=55294#55294
You do have to register to make a post though but it's an easy process.

Rahwana
01-18-2010, 12:22
Hmm, so could you made us a two handed spear (but not pike) animation who has slashing with spearhead animation? means use the spear almost like a halberd.... Well, a lot of Nusantara TW units use long headed spears (such as keris headed - like kraton spears, or blade headed malayan spears)

wlesmana
01-19-2010, 04:34
Yes, that won't even need the use of a new skeleton, just new animation of existing skeleton. I can't think of anything in Nusantara mod that would require a new skeleton. Do they carry banners back then? I'm planning to add animated banners to banner carriers.

Rahwana
01-19-2010, 11:19
Yes, that won't even need the use of a new skeleton, just new animation of existing skeleton. I can't think of anything in Nusantara mod that would require a new skeleton. Do they carry banners back then? I'm planning to add animated banners to banner carriers.

No default two handed spear / pikemen I think (I'll ask CW then)

inane
12-23-2010, 19:41
Would you care to explain the hierarchy of parent and children bones? I couldnt find a post about that.

wlesmana
01-21-2011, 15:36
To put it simply, a child bone is a bone that is attached to another bone, which is called a parent bone. The child bone's position will depend on the parent, and that parent's depends on its parent, if any. For instance, bone_head, bone_Lupperarm and bone_Rupperarm are all children of bone_torso. bone_Llowerarm is the child of bone_Lupperarm.