The appearance.2da file lists all the individual model lines for different models. Some are parts based (eg; player models) and some are single models (eg; a Dragon, or a Badger).
Errors and appearance.2da: Shifted Lines
Siala reported on Discord that they were experiencing missing heads and arms from the vanilla assets after merging in some Custom Content head models. Siala found that the issue was caused by shifted columns in Appearance.2da. IF you experience this issue, this might be a good place to start troubleshooting.
Note, I have found Excimer's 2DA Combinulator and TextPad to be flawless tools for merging or working with 2DA files.
Adding a new model appearance for a creature? Recommendation is to copy an existing line and tweak if the model author didn't supply one.
|Column||Example Contents||Valid Values||Description and Notes|
|LABEL||Badger_Dire||Any string||Unused by the game. Used in the toolset if the STRING_REF column is blank. Can be in quotes (eg: "Cat, Domestic").|
|STRING_REF||1994||A dialog.tlk string refrence||Used by the toolset to show what the name of the appearance is, if blank then LABEL is used. Unused in game itself.|
|NAME||Badger||Any string||Unused by the game or toolset for humans only. You might notice a lot of them are silly like repeating "BASE", or simply a copy of the LABEL. evidence of copy/paste on Bioware's part. Presumably at one point this might have been floated as replacing the STRING_REF but instead LABEL does.|
Resref model name
If this is for a custom, dynamic character (i.e., a real PC model), this needs to be a single character corresponding to the race identifier (e.g., h for human, ‘e’ for elf, etc.).
For parts based models you'd get a full model name made up of:
EG: Dwarf, Female with "Normal" 0 phenotype is "pfd0.mdl" which loads the base look and reference to animations with setsupermodel (in this case it loads "a_dfa.mdl" which itself loads other setsupermodel references).
If you then want to load a part of the model, eg, chests, belts etc it's then:
EG: Dwarf, Female with "Normal" 0 phenotype is "pfd0", making a chest model (see caparts.2da for model names) be pfd0_chest001.mdl
Named environment map file. The filename without .tga at the end.
Note: This is ignored if a TXI file is used by the given model.
default can be used to add some additional "shiny" to metals and other materials on creatures if they don't have it already (according to the doc, "use the default environment map for the current
For custom ones see Environment Maps and Cubemaps for some further information. Some examples are in the column to the left and can be extracted from the game bifs. They refer to a texture file to use as an environment map.
If blanked (****) then no environment map will be used.
NOTE: For creatures with transparency (alpha channels) in their textures (e.g. a tattered cloak), this setting MUST be blanked (****) or else you will get shiny bits appearing on the model where the texture is supposed to be transparent.
|None removes the blood, the others apply particular VFX when hit with weapons/taking damage/exploding.|
P - Player/Parts
S - Simple
F - Full
L - Limited/Large
W - Wings allowed
T - Tails allowed
P = parts animation type (Has all the options) - creature model is composed of multiple body parts each with their own MDL and textured with PLTs. Model changes when armor is worn, and colors are selectable. See note of model names in RACE column above.
S = simple animations; creature model is a single MDL and textured with a single TGA or DDS texture file. PLT textures are not available. Model does not change when wearing armor. Weapons do not appear when equipped even with the correct nodes. Most animals have this, meaning they really only have their taunt animation plus attacks. These models use only creature animations like 'crun' and 'cwalk'. Example: Wolf, Dragon, Badger.
F = full animation (humanoid models, generally). They use the same animations as PCs like 'run' and 'walk'. Same as simple in regards to model, but weapon items and shields do appear when equipped in right or left hand inventory slots if they have the correct dummy nodes (rhand/lhand/lforearm). They usually have a supermodel that's an a_ba variant just like PCs. Example: Succubus, Bodak, Lich, Bartender.
L = limited creature animations - S with visible weapons and (cross)bow animations. They use the same animations as 'S' models (crun and cwalk, etc.) and can display weapons equipped in either hand as well as shields with the correct dummy nodes (rhand/lhand/lforearm). See Animations and Model Special Nodes for more info. These are for 'humanoid monsters' but are not necessarily any large creature. Dragons for example are "S" type because they don't wield weapons.
Additionally "L" model types can have full crossbow and bow animations. Sadly there are some hardcoded limitations on showing slings, throwing weapons or torches in their hands (likely to save adding more animation slots).
One other note: the WEAPONSCALE property in appearance.2da does scale the weapon visually for "L" types but does not add any additional range to melee attacks - the game assumes you've sized the creatures combat distance accurately to the weapon they (usually) weild, eg a Balor with his Greatsword.
You can optionally add on "W" and/or "T" to have:
W = Wings allowed (EG: the Succubus model has this). The model must have the appropriate "wing" dummy node.
T = Tails allowed (EG: the Kobold models have this). The model must have the appropriate "tail" dummy node.
|WEAPONSCALE||1.3||Float value. Human scaling is 1|
Amount to scale weapons so that they are appropriately sized for use by this model.
Size scaling factor to apply to weapon models equipped by creatures having this appearance. Only meaningful if MODELTYPE is not S
|WING_TAIL_SCALE||1||Float value. Human scaling is 1|
Amount to scale wings and tail so that they are appropriately sized for this model.
|HELMET_SCALE_M||1.2||Float value. Male human uses 1.15|
Size scaling to apply to helms equipped by male creatures. Only meaningful if MODELTYPE=P
|HELMET_SCALE_F||1.2||Float value. Female human uses 0.95|
Size scaling to apply to helms equipped by female creatures. Only meaningful if MODELTYPE=P
creaturespeed.2da "2DAName" column values, by default:
This sets the creatures speed if "Default" is used in the toolset. It can be overridden on a per-creature basis (on their blueprint or instance).
Note players get the PLAYER speed by default on character creation (or should - apparently this applies only to lines 0 to 6, where they define speed as "NORM" but the player gets "PLAYER"). You might want a player-only appearance with "PLAYER" as a speed to properly have custom race appearances or ones you use with SetAppearance, or change "NORM" speed to the same as "PLAYER" speed in creaturespeed.2da (with the knock on effect all creatures now move a bit faster).
The value "DEFAULT" actually refers to the toolset / CRE settable value that uses this to look it up, so it'd get confusing if you used DEFAULT here!
Distance in metres travelled by creature from the beginning of its walk animation to the end of its walk animation
Distance in metres travelled by creature from the beginning of its run animation to the end of its run animation
|PERSPACE||0.3||Float value||Personal Space. For more information see Creature Size. Used to pathfind around objects and walkmesh. Stops a creature from passing through another creature (by comparing each of their PERSPACE values).|
|CREPERSPACE||0.7||Float value||Creature Personal Space. For more information see Creature Size. Usually larger than PERSPACE. It determines pathfinding (and melee range) for moving around/past creatures in combat.|
Camera height when the PC is of this appearance. You'll find polymorph creature entries tend to have this set to something other than 1. The camera height is altered when a PC is polymorphed.
It also affects pathfinding as well...but not sure in what respects. The game docs say "Used for pathfinding under obstacles". See Creature Size.
When this creature is attacking another creature, subtract the HITDIST from the actual distance between attacker and target before comparing the distance to the PREFATCKDIST.
Preferred distance from which to attack a target. Creature will use short-range, normal-range, or long-range versions of its melee animations depending on distance of the target.
H = High
L = Low
Target height when hitting creatures having this appearance
H = normal height, used by most appearances
L = low, used by short appearances, such as badgers
Animation related. Which attacks - by default - do other creatures use on this targeted creature. IE: closeh is used if "H" is here, while closel is used is "L" is here.
Note: If the creature is knocked down, it uses the L animations regardless (ie; this column presumes L).
|ABORTONPARRY||1||1 or 0|
Abort On Parry. 1 if attack animation aborts when the attacked creature plays the parry animation
|RACIALTYPE||11||Integer - but references what?|
Likely unused by the game - The game docs say it is an index into racialtypes.2da but all the existing values are flat out wrong. May be toolset related instead? Who knows...but Humans are set to 11 which in racialtypes.2da is "Dragon". Maybe an old racialtypes.2da before release had many more entries.
|HASLEGS||1||1 or 0|
If it has legs, then Called Shot: Legs sub feat can work against this appearance.
|HASARMS||1||1 or 0|
If it has arms, then Called Shot: Arms sub feat can work against this appearance.
Note this does not affect if a creature can, say, use a potion or something. In any case Bears for instance have arms.
|PORTRAIT||po_poly||Portrait resref name|
Portrait file name used by default when the toolset uses this appearance. I think it's also used with SetAppearance on a creature.
Base ResRef of the default portrait for creatures having this appearance. Example: if PORTRAIT is po_badger, then use the portraits po_badger_h.tga, po_badger_l.tga, po_badger_m.tga, etc.
This value should not exceed 14 characters in length.
creaturesize.2da line reference, but essentially hardcoded numbers:
Don't use other integers in this column - they are invalid and will likely cause weird things.
|PERCEPTIONDIST||9||ranges.2da line reference|
This is strictly a ranges.2da entry when the creatures Perception Range is set to "Default" in the toolset / creature file.
Due to a bug the range is set back to this when a save game is loaded losing stuff put on the blueprint.
Most are 9 "PercepRngMed" - 20 meters sight and 20 meters (shorter than players).
Bosses (like Dragons) are 10 "PercepRngHigh" - 35 meters sight and 20 meters listen (same as players).
Players get a special line regardless of this setting (even when polymorphed), which is line 12 (35 meters sight, 20 meters listen).
See more at Creature Line of Sight and Perception for more information
|FOOTSTEPTYPE||0||footstepsounds.2da line reference|
Check footstepsounds.2da for different options. This is the sounds on each tile surface material.
Use -1 for "no sound" such as floating Will o' Wisps or Birds or Bats.
Footstep sounds fire when the animation event "snd_footstep" is registered against an animation in a MDL file, so even with this referenced it needs those present (eg in the "cwalk" animation) to fire.
|SOUNDAPPTYPE||0||appearancesndset.2da line reference|
Check appearancesndset.2da for different options.
1 for head tracking
0 for no head tracking
Does the head follow the current speaker.
0 doesn't necessarily mean "No animations available" (such as for the Chicken for instance, which has no real head node). It can also be for creatures that simply don't care to look - Golems for instance.
1 introduces head tracking - which unlocks the next two columns.
|HEAD_ARC_H||60||0 - 180, but usually 60 max||Horizontal range of head tracking in degrees. Lowering it can stop excessive clipping of heads with the rest of the model.|
|HEAD_ARC_V||30||0 - 180, but usually 30 max||Vertical range of head tracking in degrees. Lowering it can stop excessive clipping of heads with the rest of the model.|
|HEAD_NAME||head_g||Model node name|
The name of the head node used in the model, both for us looking at someone else (if HEADTRACK is 1) but also for other things looking at us. Defaults to head_g since most entries use this.
|BODY_BAG||6||bodybag.2da line reference|
See bodybag.2da. What gets left on the ground after the creature dies and the corpse is set to fade out.
1 - Targetable
0 - Not targetable
1 if the creature can be targetted, such as by mousing over it.
Line 298 "Invisible_Human_Male" sets this to 0. It affects if tab shows up the creature in any way as a highlightable object. If the model is not there and this is 0 then it should mean the PC can never click on it. Useful for narrator appearances and other things.