Diablo II Animation Conversion Extended Tutorial

by Joel Falcou, Alkalund and Nefarius
for The Phrozen Keep

Chapter Two : Diablo II Animations Files

After getting your tools, we'll dig into the core rules that govern all the animation of Diablo II.

2.1 File Naming Conventions :

Launch CV5 and open d2data.mpq. Navigate to the data/global/monster folder.
Here you'll see a lot of folders named by a two alphanumerical caracters code.

This code is known as the Monster Token. It helps the game to locate and identify the correct animations to play for a given
monster. Take a quick look at monstats.txt, in the column 'Code', you'll see the same code as in this screenshot.

Now open the BH folder. It contains three folders itself.

What's the contents of these folders ?

If you look at another token folder, you'll see many other folders like RH,LH,SH etc ...
Whats the meaning of these codes ?

If you look at some animations like the Corrupted Rogues, you'll see that their RA and LA folders contain
different weapon animations. By selecting one of these, Diablo II generates all the variations of the Rogues
we all know. From now, we'll call every monster that has only one bodypart folder a One-Part Monster
and all monsters that get several body part folders will be called Multipart Monsters.

Back to our Blood Hawk, open the TR folder.

Look at the first file : BHTRLITA1HTH.DCC.
We recognize in this name the token BH and the body part TR.But what does the rest of the name stand for ??

Quickly: it contains the armor type, the animation mode and the weapon class the animation uses.

- first code is the monster/character token;
- second code is for body part;
- third code is armor type. They are lit=Lite armor, med=Medium armor, hvy=Heavy armor;
- fourth code is monster/player mode;
- fifth is the weapon/hit class.


Here is a list of the codes you can find :

Player & Monster Modes: Hit & Weapon Classes:
Name Token
Death DT
Neutral NU
Walk WL
Run RN
Get Hit GH
Town Neutral TN
Town Walk TW
Attack1 A1
Attack2 A2
Block BL
Cast SC
Throw TH
Kick KK
Skill1 S1
Skill2 S2
Skill3 S3
Skill4 S4
Dead DD
Sequence ??
Knock Back GH
 
Name Code
Hand-to-Hand HTH
One Hand Swing vs. Small 1hss
One Hand Swing vs. Large 1hsl
Two Hand Swing vs. Small 2hss
Two Hand Swing vs. Large 2hsl
One Hand Thrust 1ht
Two Hand Thrust 2ht
Club club
Staff staf
Bow bow
Crossbow xbow
Claw claw
Overlay over
Left Jab Right Swing 1js
Left Jab Right Thrust 1jt
Left Swing Right Swing 1ss
Left Swing Right Thrust 1st
One Hand-to-Hand ht1
Two Hand-to-Hand ht2

You can get these lists in PlrMode.txt, MonMode.txt, ObjMode.txt, HitClass.txt, and WeaponClass.txt.

Note that we could find dcc animations in the following MPQ files :

2.2 Animation Specifications :

Now we know where to find animations and how they are buildt, we gonna take a look at the animations specifications.

2.2.1 Directions :

Every Diablo II animation is composed of several directions. Each direction is facing a different point in
the virtual 3D isometric space. Commonly, we can find animations with 1, 2, 4, 8, 16 or 32 directions.

Here we look at one of the Clay Golem's [G1] animations. As we can see, it's composed of 8 directions :
South-West, North-West,North-East, South-East, South,West,North and West.

Here's an indexed list of the directions by framecounts :

2.2.2 Framecounts:

For every direction an animation has the same number of frames. For example, a 96-frame animation with 8 directions
has 12 frames per direction. REMEMBER THIS!!! It's very very important to remember this point because one
of the many, many errors that people do when converting animations is to remove or add a frame at the wrong spot, thus
violating the Frames per Direction rule.

Further discussion on the framecounts is held in Chapter 4.

2.2.3 Offsets :

When Diablo II displays an animation on the screen, it must know where to display it. In other words, the game keeps in its
memory the position of the monsters in a virtual map. Classicaly, it holds their bottom-left corners. For having a neat looking
animation on your screen, the game must calculate by how much pixels the animation must be drifted. This is the
purpose of the all mighty offsets.

With all these informations in mind, we'll hop to the Next Section : Converting Animations - Part I.