Vault-Tec Labs
Advertisement

Critter FRM nomenclature typically uses an 8 character naming system for animation files in the Fallout series prior to Fallout 3.


List of .LST files[]

The .LST files contain references to the names for pretty much everything used by the game engine to make the game playable. References include artwork, sound files, scripts, and proto files. I plan to expand this list with descriptions of each file and how to edit if necessary.

\critter.dat\art\critters\CRITTERS.LST
\master.dat\proto\TILES\PATTERNS\patterns.lst
\master.dat\proto\SCENERY\scenery.lst
\master.dat\proto\TILES\TILES.LST
\master.dat\proto\CRITTERS\critters.lst
\master.dat\proto\ITEMS\items.lst
\master.dat\proto\MISC\MISC.LST
\master.dat\art\walls\WALLS.LST
\master.dat\art\walls\NEW.LST
\master.dat\art\tiles\TILES.LST
\master.dat\art\skilldex\SKILLDEX.LST
\master.dat\art\inven\INVEN.LST
\master.dat\art\items\ITEMS.LST
\master.dat\art\misc\MISC.LST
\master.dat\art\inven\NEW.LST
\master.dat\art\items\NEW.LST
\master.dat\art\scenery\NEW.LST
\master.dat\art\scenery\SCENERY.LST
\master.dat\art\heads\HEADS.LST
\master.dat\art\intrface\INTRFACE.LST
\master.dat\art\backgrnd\BACKGRND.LST
\master.dat\sound\SFX\SNDLIST.LST
\master.dat\scripts\SCRIPTS.LST
\master.dat\proto\WALLS\walls.lst

art\critters\CRITTERS.LST[]

This is a list of all the .FRM animation files used to create a critter. New FRM files must be added to this list before they can be attached to a critter's proto file.

It has the format:

[FRM name (first 6 letters)], [Line number in CRITTERS.LST - used to reference Aimed Shot screen], [Whether Run animations are included]

The first few lines of CRITTERS.LST look like this:

reserv
hapowr,21,1
harobe,11,1

Line counting starts at 0 (zero), so "reserv" is on line 0, "hapowr,21,1" is on line 1, etc...

If an aimed shot screen is included with an animation, leaving the second number "blank?" will use that animation. Changing this number to reference a different line will change the Aimed Shot screen to whatever animation is listed on the referenced line, but will ignore any other lines referenced in the new one.

For example:

"hapowr" references line 21 and "harobe" references line 11. If "harobe" referenced line 1, the engine would try to pull the Aimed Shot screen for "hapower", NOT the screen from line 21. If "hapower" did not have an Aimed Shot screen, then the engine would use a blank screen instead of looking for line 21's reference.

[1]

Critter Naming System[]

When naming new FRM's for new Critters in Fallout 2, a specific naming convention is expected by the game so it recognizes which FRM to play during a specific action.

The naming convention works like this:

FRM names are usually 8 characters, letters and numbers are allowed (possibly other characters but I haven't tested yet). The last 2 characters (character numbers 7 and 8 afaik) are used to identify the animation type.

This is a list of the 2 character identifier used by the game to attach new animations to their critter.

Walk Animations only have 8 Frames

Run Animations have 10 Frames              

Here is a list of all of the appearances in critter.dat:


HA NPWR = Adv. Power Armor
HA POWR = Power Armor
HA ROBE = Purple Robes

HF CMBT = Fem Combat Armor
HF JMPS = Fem Vault13 Jump suit
HF LTHR = Fem Leather Armor
HF MAXX = Fem Leather Jacket
HF METL = Fem Metal Armor
HF PRIM = Fem Primitive

HM BJMP = Black Male Vault13 Jump suit
HM BMET = Black Male Metal Armor
HM CMBT = Male Combat Armor
HM JMPS = Male Vault13 Jump suit
HM LTHR = Male Leather Armor
HM MAXX = Male Leather Jacket
HM METL = Male Metal Armor
HM WARR = Male Primitive

MA ANTT = Ant
MA BOS2 = Franky Torso half
MA BOSS = Franky
MA BRAN = King rat
MA BROM = Brahmin
MA CLAW = Adult Deathclaw
MA CLW2 = Baby DeathClaw
MA CYBR = Robo Dog
MA DDOG = Dog
MA DEGG = Egg
MA DETH = Grey Deathclaw
MA FEYE = Eye Robot
MA FIRE = Fire Gecko
MA GCKO = Golden Gecko
MA GUN2 = Plasma Turret
MA GUNN = Mini Turret
MA HAND = Mr. Handy
MA LIEN = Alien/Wanamingo
MA MANT = Mantis
MA MRAT = Mole Rat
MA MTN2 = Super Mutant Leather
MA MTNT = Super Mutant
MA MURT = Pig Rat
MA PLNT = Mutant Plant
MA QUEN = Queen Wanamingo
MA ROBE = Goris
MA ROBO = Brain bot
MA ROBT = Assault bot
MA SCP2 = Baby Radscorpion
MA SCRP = Radscorpion
MA SPHN = Floater
MA SRAT = Rat
MA THNG = Centaur

NA BLUE = Blue Robe
NA BRWN = Brown Robe
NA CHLD = Child
NA GHUL = Ghoul
NA GLOW = Glow Ghoul
NA POWR = Power Armor w/o Helmet
NA ROBE = Rag robes
NA VGUL = Vault Ghoul
NA WHIT = Black Robe

NF ASIA = Asian Fem
NF BRLP = Fem Blonde Peasant
NF LYNN = Lynette
NF MAXX = Fem Leather Punkette
NF METL = Fem Redhead Metal Armor
NF NICE = Fem Blonde Renogirl
NF PEAS = Fem Redhead Peasant
NF PRIM = Fem Ponytail Primitive
NF TRMP = Fem Tramp
NF VALT = Fem Vaultsuit
NF VRED = Fem Vaultsuit Redhead

NM ASIA = Asian Male Peasant
NM BONC = Bouncer Bluesuit
NM BOXX = Boxer
NM BPEA = Black Male Peasant
NM BRLP = Male Peasant
NM BRSR = Bouncer Blacksuit
NM BSNP = Male Peasant Balding
NM COPP = Police Officer
NM DOCC = Doctor
NM FATT = Vic
NM GANG = Asian Blue Guard
NM GRCH = Midget
NM LABB = Labcoat
NM LOSR = Male Junkie
NM LTHR = Male Bald Leather Armor
NM MAXX = Male Longhair Leather Jacket
NM MEXI = Mordino Guard
NM MYRN = Myron
NM NICE = Male Tuxedo
NM OLDD = Old man McGee
NM PEAS = Male Hat Peasant
NM RGNG = Asian Red Guard
NM VALT = Male Vaultsuit
NM WARR = Male Primitve
RESERV = Funny flame guy

Answer by Ruin. (more details)

The meaning of the last two letters in frm names:

(A_) MOVEMENTS:
AA - IDLE
AB - WALK
AE - CLIMB
AG - WEARING/TAKING OFF ROBE (Goris ONLY)
AK - PICK UP
AL - USE
AN - DODGE
AO - HIT_FRONT
AP - HIT_BACK
AQ - PUNCH
AR - KICK
AS - THROW
AT - RUN
AU - UNKNOWN (???, check hmlthrau.frm, probably obsolete/redundant OR used in in-game NEW RENO cutscenes)

(B_) DEATH/UNCONSCIUOS:
BA - FALLING_BACK
BB - FALLING_FRONT
BC - FALLING_BACK (???, check hfcmbtbc.fr0-5, it's half-missing "ba - FALLING_BACK" animation)
BD - HOLE_IN_BODY
BE - FALLING_BACK_BURNED
BF - RIPPING_APART
BG - PERFORATED_DEATH
BH - FALLING_BACK_ELECTRIC_BURNED
BI - SLICE_IN_TWO
BJ - FALLING_FRONT_FIRE_BURNED
BK - ELECTRIC_BURNED_TO_ASHES
BL - BLOW_EXPLOSION
BM - MELTDOWN
BN - BURNING_DANCE (FIRE_DANCE)
BO - BLEEDING_BACK
BP - BLEEDING_FRONT

(c_) MOVEMENTS:
CH - GET_UP_FRONT
CJ - GET_UP_BACK

(d_) KNIFE ANIMATIONS:
DA - KNIFE_IDLE
DB - KNIFE_WALK
DC - KNIFE_PULL_OUT
DD - KNIFE_PUT_IN
DE - KNIFE_DODGE
DF - KNIFE_ATTACK_THRUST
DG - KNIFE_ATTACK_SWING
DM - KNIFE_ATTACK_THROW

(E_) MELEE WEAPONS ANIMATIONS:
EA - MELEE_IDLE
EB - MELEE_WALK
EC - MELEE_PULL_OUT
ED - MELEE_PUT_IN
EE - MELEE_DODGE
EF - MELEE_THRUST
EG - MELEE_SWING

(F_) HAMMER WEAPONS ANIMATIONS:
FA - HAMMER_IDLE
FB - HAMMER_WALK
FC - HAMMER_PULL_OUT
FD - HAMMER_PUT_IN
FE - HAMMER_DODGE
FF - HAMMER_THRUST
FG - HAMMER_SWING

(G_) SPEAR ANIMATIONS:
GA - SPEAR_IDLE
GB - SPEAR_WALK
GC - SPEAR_PULL_OUT
GD - SPEAR_PUT_IN
GE - SPEAR_DODGE
GF - SPEAR_ATTACK_THRUST
GG - SPEAR_ATTACK_SWING (???, check it in hfjmpsgg.frm)
GM - SPEAR_ATTACK_THROW

(H_) PISTOL WEAPONS ANIMATIONS:
HA - PISTOL_IDLE/RELOAD
HB - PISTOL_WALK
HC - PISTOL_PULL_OUT
HD - PISTOL_PUT_IN
HE - PISTOL_DODGE
HH - PISTOL_AIM
HI - PISTOL_PULL_DOWN
HJ - PISTOL_SHOT

(I_) SMG WEAPONS ANIMATIONS:
IA - SMG_IDLE/RELOAD
IB - SMG_WALK
IC - SMG_PULL_OUT
ID - SMG_PUT_IN
IE - SMG_DODGE
IH - SMG_AIM
II - SMG_PULL_DOWN
IJ - SMG_SHOT
IK - SMG_BURST

(J_) RIFLE WEAPONS ANIMATIONS:
JA - RIFLE_IDLE/RELOAD
JB - RIFLE_WALK
JC - RIFLE_PULL_OUT
JD - RIFLE_PUT_IN
JE - RIFLE_DODGE
JH - RIFLE_AIM
JI - RIFLE_PULL_DOWN
JJ - RIFLE_SHOT
JK - RIFLE_BURST

(K_) HEAVY_WEAPON WEAPONS ANIMATIONS:
KA - HEAVY_WEAPON_IDLE/RELOAD
KB - HEAVY_WEAPON_WALK
KC - HEAVY_WEAPON_PULL_OUT
KD - HEAVY_WEAPON_PUT_IN
KE - HEAVY_WEAPON_DODGE
KH - HEAVY_WEAPON_AIM
KI - HEAVY_WEAPON_PULL_DOWN
KJ - HEAVY_WEAPON_SHOT
KK - HEAVY_WEAPON_BURST
KL - FLAMER_SHOT

(L_) MINIGUN/GATTLING_LASER WEAPONS ANIMATIONS:
LA - MINIGUN/GATTLING_LASER_IDLE/RELOAD
LB - MINIGUN/GATTLING_LASER_WALK
LC - MINIGUN/GATTLING_LASER_PULL_OUT
LD - MINIGUN/GATTLING_LASER_PUT_IN
LE - MINIGUN/GATTLING_LASER_DODGE
LH - MINIGUN/GATTLING_LASER_AIM
LI - MINIGUN/GATTLING_LASER_PULL_DOWN
LK - MINIGUN/GATTLING_LASER_BURST

(M_) ROCKET_LAUNCHER WEAPONS ANIMATIONS:
MA - ROCKET_LAUNCHER_IDLE/RELOAD
MB - ROCKET_LAUNCHER_WALK
MC - ROCKET_LAUNCHER_PULL_OUT
MD - ROCKET_LAUNCHER_PUT_IN
ME - ROCKET_LAUNCHER_DODGE
MH - ROCKET_LAUNCHER_AIM
MI - ROCKET_LAUNCHER_PULL_DOWN
MJ - ROCKET_LAUNCHER_SHOT

(N_) TARGET_PICTURE:
na - TARGET PICTURE

(R_) DEAD_BODIES ANIMATIONS:
RA - DEAD_LYING_BACK
RB - DEAD_LYING_FRONT
RC - DEAD_LYING_BACK (???, it looks the same as ******ra.frm, check hfcmbtrc.frm, probably unused)
RD - DEAD_LYING_HOLE
RE - DEAD_LYING_BURNED
RF - DEAD_LYING_PERFORATED_FRONT
RG - DEAD_LYING_PERFORATED_BACK
RH - DEAD_LYING_BURNED (???, the same as ******re.frm, this was probably intended to be ELECTRIC_BURNED)
RI - DEAD_LYING_SLICE_IN_TWO
RJ - DEAD_LYING_ASHES
RK - ASHES (!!!literaly)
RL - DEAD_LYING_BLOW_EXPLOSION
RM - DEAD_LYING_MELTDOWN
RO - DEAD_LYING_BLEED_BACK
RP - DEAD_LYING_BLEED_FRONT

Answer by lisac2k.

The meaning of the first two letters in frm names:

HA = Hero Androgynous
HF = Hero Female
HM = Hero Male
NA = NPC Androgynous
NF = NPC Female
NM = NPC Male
MA = Monster Androgynous

Answer by Wild_qwerty and requiem_for_a_starfury (more details)

Talking Head FRM Index:

B = Bad mood
G = Good Mood
N = Nuetral Mood
f1 = Blink
f2 = Nod
f3 = Shake
(B,G,N)P = Talk
(B,G,N)(B,G,N) = Mood transition from (B,G,N) to (B,G,N)

Talking Head Example:

Lynetbf1.frm = Bad Blink
Lynetbf2.frm = Bad Nod
Lynetbf3.frm = Bad Head shake - speak
Lynetbn.frm = Transition - Bad to neutral
Lynetbp.frm = Bad Speak

Lynetgf1.frm = Good Blink
Lynetgf2.frm = Good Nod - speak
Lynetgf3.frm = Good Shake - smile
Lynetgn.frm = Transition - Good to neutral
Lynetgp.frm = Good Talk

Lynetnf1.frm = nuetral Blink
Lynetnf2.frm = nuetral nod
Lynetnf3.frm = nuetral shake
Lynetnb.frm = Transition - nuetral to Bad
Lynetng.frm = Transition - nuetral to Good
Lynetnp.frm = nuetral talk

Also see this thread.

Answer by Wild_qwerty (more details)

[2]

Target Screen (VATS/Aimed Shot/Called Shot)[]

   (N_) TARGET_PICTURE:

   na - TARGET PICTURE

For example, if your critter FRM set uses "MYCRITXX", you should name the new aimed shot FRM as MYCRITNA.frm. And in critters.lst, the line for your set should be like this:

Code:

152    MYCRIT,151,1

(the first number is the line number in your text editor.)

You also need to set up the hit location text for it in combat.msg:

Code:

{2510}{}{text_head}
{2511}{}{text_left_arm}
{2512}{}{text_right_arm}
{2513}{}{text_torso}
{2514}{}{text_right_leg}
{2515}{}{text_left_leg}
{2516}{}{text_eyes}
{2517}{}{text_groin}
{2518}{}{uncalled}

The message numbers are: 1000 + (second parameter in critters.lst) * 10 + (hit location) [3]

Scripting .frm in animations[]

ABel This article is based on "Script Animation-1" document by Communist.


To animate some action of a critter (punching, falling, running etc) it is sufficient to use the following sequence of commands:

Code:

{ Sequencing Critter1 to make some actions: } RegAnimFunc (2, <critter1_addr>); { Exact purpose is unknown, } RegAnimFunc (1, 1); { but this is how the animation is made in FO scripts. } RegAnimAnimate (<critter1_addr>, <action1_id>, -1); { Critter1 does Action1 } RegAnimAnimate (<critter1_addr>, <action2_id>, -1); { Critter1 does Action2 } ... and so on ... RegAnimAnimate (<critter1_addr>, <actionN_id>, -1); { Critter1 does ActionN } RegAnimFunc (3, 0); { This is also a standard call. }
{ Sequencing Critter2: } RegAnimFunc (2, <critter2_addr>); RegAnimFunc (1, 1); RegAnimAnimate (<critter2_addr>, <actionI_id>, -1); RegAnimAnimate (<critter2_addr>, <actionJ_id>, -1);
...
RegAnimAnimate (<critter2_addr>, <actionK_id>, -1); RegAnimFunc (3, 0);
{ Sequencing Critter3: }
...


In the above fragment, critter_addr is the address of any critter, for example, it could be Player (to make Chosen One dance), Self (in some creature's script) and so on.

Action Ids[]


Action_ids are determined from the following table:
CODE:

  AA  0     AK  10     BA  20     BK  30
  AB  1     AL  11     BB  21     BL  31
  AC  2     AM  12     BC  22     BM  32
  AD  3     AN  13     BD  23     BN  33
  AE  4     AO  14     BE  24     BO  34
  AF  5     AP  15     BF  25     BP  35
  AG  6     AQ  16     BG  26     CH  36
  AH  7     AR  17     BH  27     CJ  37
  AI  8     AS  18     BI  28     GC  38
  AJ  9     AT  19     BJ  29

The two letters here correspond to the suffix of a critter's FRM file, which visualizes the action.
Number in the second column is action_id of that action. For example, to show a punching Chosen One, the following code can be used:

Code:
   RegAnimFunc (2, Player);
   RegAnimFunc (1, 1);
   RegAnimAnimate (Player, 16, -1); { *** from table: 16 = AQ *** }
   RegAnimFunc (3, 0);

FRM file with punching tribal is called "HMWARRAQ.FRM", where HMWARR means "a tribal", and AQ - "punching". This is why 16 is used in this fragment.


When RegAnim* code is executed, all the critters in question start to make specified actions at the same time.
For example, critter1 is punching, and critter2 is evading meanwhile.
But separate actions are made by any given critter strictly successive.


In addition to RegAnimAnimate opcode there are

Code:
   RegAnimObjMoveToTile (<critter_addr>, <tile_number>, -1); - walking to specified tile
   RegAnimObjRunToTile (<critter_addr>, <tile_number>, -1); - running to a tile
   RegAnimAnimateReverse (<critter_addr>, <action_id>, -1); - reverse animation for an action

and some other.
Also there are SfxBuildCharName and RegAnimPlaySfx opcodes that allow to add sound effects to actions.

[4][5][6][7]

References[]

Advertisement