Look at the 1.85 commented config. Notice under the civilian women's classes (Woman1, etc) they have moves=CfgMovesMCWoman. So, let's look at cfgMovesMCWoman.
Code:
class CfgMovesMCWoman: CfgMovesMC
{
class StatesExt
{
class CivilBase: Default
{
aiming="aimingNo";
actions="CivilActions";
duty=-1;
disableWeapons=1;
interpolateTo[]={"CivilDying",0.100000,"CivilDyingVer2",0.100000};
interpolationSpeed=3;
};
class Civil: CivilBase
{
file="\o\anim\zenskastojistat.rtm";
speed=10000000000.000000;
looped=1;
soundEnabled=0;
variantAfter[]={1,3,6};
variantsAI[]={"Civil",0.200000,"CivilStillV1",0.800000};
equivalentTo="Civil";
interpolateTo[]={"CombatThrowGrenadeStart",1,"CombatRunThrowGrenadeStart",1,"CivilDying",0.100000,"CivilDyingVer2",0.100000};
interpolateFrom[]={"CombatThrowGrenadeEnd",1};
};
etc...
This means that instead of playing the CivilBase or Civil states from CfgMovesMC, they use the CivilBase and Civil states defined here in CfgMovesMCWoman. This is very useful when you want to change something minor about an animation state for a certain unit like the animation file it uses, speed, or etc without changing the ENTIRE cfgMovesMC.
One caveat is that you cannot build off of classes that are under states in CfgMoves, only "DEFAULT". This means if I want to modify a state whose parent is not DEFAULT, I have to include its parent states in StatesExt. See example 2 below.
Example 1 - if I wanted to modify the "Combat" state:
Code:
Class MyCfgMoves: CfgMovesMC
{
class StatesExt
{
class Combat:Default
{
actions="CombatActions";
preload=1;
file="\MyAnims\MyNewCombatAnim.rtm";
speed=1e+10;
looped=1;
soundEnabled=0;
duty=-1;
variantsPlayer[]={"CombatStillPlayer", 0.500000, "Combat"};
variantsAI[]={"CombatStillPlayer", 0.300000, "CombatStillV1", 0.500000, "Combat"};
};
}
}
Example 2 - If I wanted to modify the Crouch state - notice that Crouch builds off of COMBAT and not DEFAULT. If you do not include Combat in statesExt, you will get an "undefined base class" error. If you include Combat in StatesExt, but not the full config entry, like Combat: Default {};, your "Combat" state will become identical to the "Default" state.
Code:
Class MyCfgMoves: CfgMovesMC
{
class StatesExt
{
class Combat:Default
{
actions="CombatActions";
preload=1;
file="sstanistat.rtm";
speed=1e+10;
looped=1;
soundEnabled=0;
duty=-1;
variantsPlayer[]={"CombatStillPlayer", 0.500000, "Combat"};
variantsAI[]={"CombatStillPlayer", 0.300000, "CombatStillV1", 0.500000, "Combat"};
};
class Crouch:Combat
{
preload=1;
actions="CrouchActions";
file="\MyAnims\MyCrouch.rtm";
speed=1e+10;
variantsPlayer[]={};
variantsAI[]={};
visibleSize=0.6;
aimPrecision=0.5;
recoilSuffix="halffixed";
};
}
}
Another thing to note is that you cannot add "new" classes to StatesExt because the game will never use them. Truly new animation states should be placed in CfgMovesMC. StatesExt only modifies states that already exist in CfgMovesMC.