// ============================================================================
//						States / Rtm Functions
// ============================================================================ 
// Functions used to declare classes

	// ============================================================================
	//						Generic Variable lists
	// ============================================================================ 
	// used for variants, connect and interpolate lists
	// #define list ECA_ANIM_VARLIST3(State,Stance,Suffix1,Num1,Suffix2,Suffix3,Prob) returns :
	// #define list [StateStance][Suffix1][Num1][Suffix2]1[Suffix3],[Prob],[StateStance][Suffix1][Num1][Suffix2]2[Suffix3],[Prob],[StateStance][Suffix1][Num1][Suffix2]3[Suffix3]
	
		// this define a single item of a var list
		#define ECA_ANIM_VARLISTITEM(State,Stance,Suffix1,Num1,Suffix2,Num2,Suffix3) ##State##Stance##Suffix1##Num1##Suffix2##Num2##Suffix3##
			// define 1 item varlist
				// complete list
				#define ECA_ANIM_VARLIST1(State,Stance,Suffix1,Num1,Suffix2,Suffix3) \
				ECA_ANIM_VARLISTITEM(State,Stance,Suffix1,Num1,Suffix2,1,Suffix3)
			// define 2 item varlist
				// complete list
				#define ECA_ANIM_VARLIST2(State,Stance,Suffix1,Num1,Suffix2,Suffix3,Prob) \
				ECA_ANIM_VARLISTITEM(State,Stance,Suffix1,Num1,Suffix2,1,Suffix3),Prob, \
				ECA_ANIM_VARLISTITEM(State,Stance,Suffix1,Num1,Suffix2,2,Suffix3)
			// define 3 item varlist
				// complete list
				#define ECA_ANIM_VARLIST3(State,Stance,Suffix1,Num1,Suffix2,Suffix3,Prob) \
				ECA_ANIM_VARLIST2(State,Stance,Suffix1,Num1,Suffix2,Suffix3,Prob),Prob, \
				ECA_ANIM_VARLISTITEM(State,Stance,Suffix1,Num1,Suffix2,3,Suffix3)
			// define 4 item varlist
				// complete list
				#define ECA_ANIM_VARLIST4(State,Stance,Suffix1,Num1,Suffix2,Suffix3,Prob) \
				ECA_ANIM_VARLIST3(State,Stance,Suffix1,Num1,Suffix2,Suffix3,Prob),Prob, \
				ECA_ANIM_VARLISTITEM(State,Stance,Suffix1,Num1,Suffix2,4,Suffix3)
			// define 5 item varlist
				// complete list
				#define ECA_ANIM_VARLIST5(State,Stance,Suffix1,Num1,Suffix2,Suffix3,Prob) \
				ECA_ANIM_VARLIST4(State,Stance,Suffix1,Num1,Suffix2,Suffix3,Prob),Prob, \
				ECA_ANIM_VARLISTITEM(State,Stance,Suffix1,Num1,Suffix2,5,Suffix3)
			// define 6 item varlist
				// complete list
				#define ECA_ANIM_VARLIST6(State,Stance,Suffix1,Num1,Suffix2,Suffix3,Prob) \
				ECA_ANIM_VARLIST5(State,Stance,Suffix1,Num1,Suffix2,Suffix3,Prob),Prob, \
				ECA_ANIM_VARLISTITEM(State,Stance,Suffix1,Num1,Suffix2,6,Suffix3)
			// define 7 item varlist
				// complete list
				#define ECA_ANIM_VARLIST7(State,Stance,Suffix1,Num1,Suffix2,Suffix3,Prob) \
				ECA_ANIM_VARLIST6(State,Stance,Suffix1,Num1,Suffix2,Suffix3,Prob),Prob, \
				ECA_ANIM_VARLISTITEM(State,Stance,Suffix1,Num1,Suffix2,7,Suffix3)
			// define 8 item varlist
				// complete list
				#define ECA_ANIM_VARLIST8(State,Stance,Suffix1,Num1,Suffix2,Suffix3,Prob) \
				ECA_ANIM_VARLIST7(State,Stance,Suffix1,Num1,Suffix2,Suffix3,Prob),Prob, \
				ECA_ANIM_VARLISTITEM(State,Stance,Suffix1,Num1,Suffix2,8,Suffix3)
			// define 9 item varlist
				// complete list
				#define ECA_ANIM_VARLIST9(State,Stance,Suffix1,Num1,Suffix2,Suffix3,Prob) \
				ECA_ANIM_VARLIST8(State,Stance,Suffix1,Num1,Suffix2,Suffix3,Prob),Prob, \
				ECA_ANIM_VARLISTITEM(State,Stance,Suffix1,Num1,Suffix2,9,Suffix3)
			// define 10 item varlist
				// complete list
				#define ECA_ANIM_VARLIST10(State,Stance,Suffix1,Num1,Suffix2,Suffix3,Prob) \
				ECA_ANIM_VARLIST9(State,Stance,Suffix1,Num1,Suffix2,Suffix3,Prob),Prob, \
				ECA_ANIM_VARLISTITEM(State,Stance,Suffix1,Num1,Suffix2,10,Suffix3)


	// ============================================================================
	//						Dying
	// ============================================================================ 

		// ***********   Connect/interpolate lists  ***********
			// ECA_ANIM_VARLIST : [State][Stance][Suffix1][Num1][Suffix2]1[Suffix3],[Prob]
			// define DyingI interpolate lists
				#define ECA_ANIM_DYINGI1(State,Stance) ECA_ANIM_VARLIST1(State,Stance,Dying,,,iStart),0.1
				#define ECA_ANIM_DYINGI2(State,Stance) ECA_ANIM_VARLIST2(State,Stance,Dying,,,iStart,0.1),0.1
				#define ECA_ANIM_DYINGI3(State,Stance) ECA_ANIM_VARLIST3(State,Stance,Dying,,,iStart,0.1),0.1
				#define ECA_ANIM_DYINGI4(State,Stance) ECA_ANIM_VARLIST4(State,Stance,Dying,,,iStart,0.1),0.1
				#define ECA_ANIM_DYINGI5(State,Stance) ECA_ANIM_VARLIST5(State,Stance,Dying,,,iStart,0.1),0.1
			// define DyingC connect lists
				#define ECA_ANIM_DYINGC1(State,Stance) ECA_ANIM_VARLIST1(State,Stance,Dying,,,C),0.1
				#define ECA_ANIM_DYINGC2(State,Stance) ECA_ANIM_VARLIST2(State,Stance,Dying,,,C,0.1),0.1
				#define ECA_ANIM_DYINGC3(State,Stance) ECA_ANIM_VARLIST3(State,Stance,Dying,,,C,0.1),0.1
				#define ECA_ANIM_DYINGC4(State,Stance) ECA_ANIM_VARLIST4(State,Stance,Dying,,,C,0.1),0.1
				#define ECA_ANIM_DYINGC5(State,Stance) ECA_ANIM_VARLIST5(State,Stance,Dying,,,C,0.1),0.1
			// define RunFDyingI interpolate lists
				#define ECA_ANIM_RUNFDYING1(State,Stance) ECA_ANIM_VARLIST1(State,Stance,RunFDying,,,iStart),0.1
				#define ECA_ANIM_RUNFDYING2(State,Stance) ECA_ANIM_VARLIST2(State,Stance,RunFDying,,,iStart,0.1),0.1
			// define RunBDyingI interpolate lists
				#define ECA_ANIM_RUNBDYING1(State,Stance) ECA_ANIM_VARLIST1(State,Stance,RunBDying,,,iStart),0.1
				#define ECA_ANIM_RUNBDYING2(State,Stance) ECA_ANIM_VARLIST2(State,Stance,RunBDying,,,iStart,0.1),0.1
			
		// ***********   variant lists (used for variants player and variants AI)  ***********
			// define default dead variant lists
				#define ECA_ANIM_DYING1VAR(State,Stance) ECA_ANIM_VARLIST1(State,Stance,Dead,,,)
				#define ECA_ANIM_DYING2VAR(State,Stance) ECA_ANIM_VARLIST2(State,Stance,Dead,,,,0.5)
				#define ECA_ANIM_DYING3VAR(State,Stance) ECA_ANIM_VARLIST3(State,Stance,Dead,,,,0.3333)
				#define ECA_ANIM_DYING4VAR(State,Stance) ECA_ANIM_VARLIST4(State,Stance,Dead,,,,0.25)
				#define ECA_ANIM_DYING5VAR(State,Stance) ECA_ANIM_VARLIST5(State,Stance,Dead,,,,0.2)
			// define RunF dead variant lists
				#define ECA_ANIM_RUNFDYING1VAR(State,Stance) ECA_ANIM_VARLIST1(State,Stance,RunFDead,,,)
				#define ECA_ANIM_RUNFDYING2VAR(State,Stance) ECA_ANIM_VARLIST2(State,Stance,RunFDead,,,,0.5)
			// define RunB dead variant lists
				#define ECA_ANIM_RUNBDYING1VAR(State,Stance) ECA_ANIM_VARLIST1(State,Stance,RunBDead,,,)
				#define ECA_ANIM_RUNBDYING2VAR(State,Stance) ECA_ANIM_VARLIST2(State,Stance,RunBDead,,,,0.5)
			
		// ***********   Base classes  ***********
			// declare the base class (used in class actions), requires list of variants
				// class CivilStandDead:RTM_xxxStandDead1
				#define ECA_ANIM_ALLDIEBASE(StateConst,State,Stance,Suffix,RTMState,DeadVariants) \
				class ##State##Stance##Suffix##Dead:RTM_##RTMState##Stance##Suffix##Dead1 \
				{ \
					variantsPlayer[]={##DeadVariants##}; \
					variantsAI[]={##DeadVariants##}; \
					StateConst \
				}
			// declares a variant , DeadX, DyingXi and DyingXiStart
				// class CivilStandDead1:RTM_xxxStandDead1
				// class CivilStandDying1iStart:RTM_xxxStandDying1iStart
				// class CivilStandDying1i:RTM_xxxStandDying1i
				#define ECA_ANIM_ALLDIEVAR(StateConst,State,Stance,Suffix,RTMState,VarNum) \
				class ##State##Stance##Suffix##Dead##VarNum##:RTM_##RTMState##Stance##Suffix##Dead##VarNum## \
				{ \
					equivalentTo=##State##Stance##Suffix##Dead; \
					StateConst \
				}; \
				class ##State##Stance##Suffix##Dying##VarNum##iStart:RTM_##RTMState##Stance##Suffix##Dying##VarNum##iStart \
				{ \
					connectTo[]={##State##Stance##Suffix##Dying##VarNum##i,0}; \
					StateConst \
				}; \
				class ##State##Stance##Suffix##Dying##VarNum##i:RTM_##RTMState##Stance##Suffix##Dying##VarNum##i \
				{ \
					connectTo[]={##State##Stance##Suffix##Dead##VarNum##,0}; \
					StateConst \
				}
			// declares a variant's connect anim DyingXC
				// class CivilStandDying1C:RTM_xxxStandDying1C
				#define ECA_ANIM_ALLDIEVARCONNECT(StateConst,State,Stance,Suffix,RTMState,VarNum) \
				class ##State##Stance##Suffix##Dying##VarNum##C:RTM_##RTMState##Stance##Suffix##Dying##VarNum##C \
				{ \
					connectTo[]={##State##Stance##Suffix##Dead##VarNum##,0}; \
					StateConst \
				}
			// declares a variant and its connect anim : DeadX, DyingXi, DyingXiStart and DyingXC
				#define ECA_ANIM_ALLDIEVARC(StateConst,State,Stance,Suffix,RTMState,VarNum) \
				ECA_ANIM_ALLDIEVAR(StateConst,State,Stance,Suffix,RTMState,VarNum); \
				ECA_ANIM_ALLDIEVARCONNECT(StateConst,State,Stance,Suffix,RTMState,VarNum)
			
		// ***********   declare default death anims  ***********
			// declare death with 1 var
				#define ECA_ANIM_DEATH1VAR(StateConst,State,Stance,RTMState) \
				ECA_ANIM_ALLDIEBASE(StateConst,State,Stance,,RTMState,ECA_ANIM_DYING1VAR(State,Stance)); \
				ECA_ANIM_ALLDIEVARC(StateConst,State,Stance,,RTMState,1)
			// declare death with 2 var
				#define ECA_ANIM_DEATH2VAR(StateConst,State,Stance,RTMState) \
				ECA_ANIM_ALLDIEBASE(StateConst,State,Stance,,RTMState,ECA_ANIM_DYING2VAR(State,Stance)); \
				ECA_ANIM_ALLDIEVARC(StateConst,State,Stance,,RTMState,1); \
				ECA_ANIM_ALLDIEVARC(StateConst,State,Stance,,RTMState,2)
			// declare death with 3 var
				#define ECA_ANIM_DEATH3VAR(StateConst,State,Stance,RTMState) \
				ECA_ANIM_ALLDIEBASE(StateConst,State,Stance,,RTMState,ECA_ANIM_DYING3VAR(State,Stance)); \
				ECA_ANIM_ALLDIEVARC(StateConst,State,Stance,,RTMState,1); \
				ECA_ANIM_ALLDIEVARC(StateConst,State,Stance,,RTMState,2); \
				ECA_ANIM_ALLDIEVARC(StateConst,State,Stance,,RTMState,3)	
			// declare death with 4 var
				#define ECA_ANIM_DEATH4VAR(StateConst,State,Stance,RTMState) \
				ECA_ANIM_ALLDIEBASE(StateConst,State,Stance,,RTMState,ECA_ANIM_DYING4VAR(State,Stance)); \
				ECA_ANIM_ALLDIEVARC(StateConst,State,Stance,,RTMState,1); \
				ECA_ANIM_ALLDIEVARC(StateConst,State,Stance,,RTMState,2); \
				ECA_ANIM_ALLDIEVARC(StateConst,State,Stance,,RTMState,3); \
				ECA_ANIM_ALLDIEVARC(StateConst,State,Stance,,RTMState,4)
			// declare death with 5 var
				#define ECA_ANIM_DEATH5VAR(StateConst,State,Stance,RTMState) \
				ECA_ANIM_ALLDIEBASE(StateConst,State,Stance,,RTMState,ECA_ANIM_DYING5VAR(State,Stance)); \
				ECA_ANIM_ALLDIEVARC(StateConst,State,Stance,,RTMState,1); \
				ECA_ANIM_ALLDIEVARC(StateConst,State,Stance,,RTMState,2); \
				ECA_ANIM_ALLDIEVARC(StateConst,State,Stance,,RTMState,3); \
				ECA_ANIM_ALLDIEVARC(StateConst,State,Stance,,RTMState,4); \
				ECA_ANIM_ALLDIEVARC(StateConst,State,Stance,,RTMState,5)

		// ***********   declare RunF death anims  ***********
			// declare death with 1 var
				#define ECA_ANIM_RUNFDEATH1VAR(StateConst,State,Stance,RTMState) \
				ECA_ANIM_ALLDIEBASE(StateConst,State,Stance,RunF,RTMState,ECA_ANIM_RUNFDYING1VAR(State,Stance)); \
				ECA_ANIM_ALLDIEVAR(StateConst,State,Stance,RunF,RTMState,1)
			// declare death with 2 var
				#define ECA_ANIM_RUNFDEATH2VAR(StateConst,State,Stance,RTMState) \
				ECA_ANIM_ALLDIEBASE(StateConst,State,Stance,RunF,RTMState,ECA_ANIM_RUNFDYING2VAR(State,Stance)); \
				ECA_ANIM_ALLDIEVAR(StateConst,State,Stance,RunF,RTMState,1); \
				ECA_ANIM_ALLDIEVAR(StateConst,State,Stance,RunF,RTMState,2)

		// ***********   declare RunB death anims  ***********
			// declare death with 1 var
				#define ECA_ANIM_RUNBDEATH1VAR(StateConst,State,Stance,RTMState) \
				ECA_ANIM_ALLDIEBASE(StateConst,State,Stance,RunB,RTMState,ECA_ANIM_RUNBDYING1VAR(State,Stance)); \
				ECA_ANIM_ALLDIEVAR(StateConst,State,Stance,RunB,RTMState,1)
			// declare death with 2 var
				#define ECA_ANIM_RUNBDEATH2VAR(StateConst,State,Stance,RTMState) \
				ECA_ANIM_ALLDIEBASE(StateConst,State,Stance,RunB,RTMState,ECA_ANIM_RUNBDYING2VAR(State,Stance)); \
				ECA_ANIM_ALLDIEVAR(StateConst,State,Stance,RunB,RTMState,1); \
				ECA_ANIM_ALLDIEVAR(StateConst,State,Stance,RunB,RTMState,2)
	
	// ============================================================================
	//							Default / Relaxed states and loop and variants
	// ============================================================================

		// ***********   variant lists (used for variants player and variants AI)  ***********
			// varbase lists
				// define 1 varbase list
					#define ECA_ANIM_BASE1VARLIST(State,Stance,Suffix) \
					ECA_ANIM_VARLIST1(State,Stance,Suffix,,,)
				// define 2 varbase list
					#define ECA_ANIM_BASE2VARLIST(State,Stance,Suffix) \
					ECA_ANIM_VARLIST2(State,Stance,Suffix,,,,0.5)
				// define 3 varbase list
					#define ECA_ANIM_BASE3VARLIST(State,Stance,Suffix) \
					ECA_ANIM_VARLIST3(State,Stance,Suffix,,,,0.3333)
					
			// varmove lists
				// defines probability of each varmove. prob is 0.9/ count so change of base move has 0.1 chance of probability
					#define ECA_VARMOVEPROB(count) (0.9/count)
				// define 1 varmove list
					#define ECA_ANIM_BASE1VARMOVELIST(State,Stance,Suffix,Num1) \
					ECA_ANIM_VARLIST1(State,Stance,Suffix,Num1,_v,),ECA_VARMOVEPROB(1)
				// define 2 varmove list
					#define ECA_ANIM_BASE2VARMOVELIST(State,Stance,Suffix,Num1) \
					ECA_ANIM_VARLIST2(State,Stance,Suffix,Num1,_v,,ECA_VARMOVEPROB(2)),ECA_VARMOVEPROB(2)
				// define 3 varmove list
					#define ECA_ANIM_BASE3VARMOVELIST(State,Stance,Suffix,Num1) \
					ECA_ANIM_VARLIST3(State,Stance,Suffix,Num1,_v,,ECA_VARMOVEPROB(3)),ECA_VARMOVEPROB(3)
				// define 4 varmove list
					#define ECA_ANIM_BASE4VARMOVELIST(State,Stance,Suffix,Num1) \
					ECA_ANIM_VARLIST4(State,Stance,Suffix,Num1,_v,,ECA_VARMOVEPROB(4)),ECA_VARMOVEPROB(4)
				// define 5 varmove list
					#define ECA_ANIM_BASE5VARMOVELIST(State,Stance,Suffix,Num1) \
					ECA_ANIM_VARLIST5(State,Stance,Suffix,Num1,_v,,ECA_VARMOVEPROB(5)),ECA_VARMOVEPROB(5)
				// define 6 varmove list
					#define ECA_ANIM_BASE6VARMOVELIST(State,Stance,Suffix,Num1) \
					ECA_ANIM_VARLIST6(State,Stance,Suffix,Num1,_v,,ECA_VARMOVEPROB(6)),ECA_VARMOVEPROB(6)
				// define 7 varmove list
					#define ECA_ANIM_BASE7VARMOVELIST(State,Stance,Suffix,Num1) \
					ECA_ANIM_VARLIST7(State,Stance,Suffix,Num1,_v,,ECA_VARMOVEPROB(7)),ECA_VARMOVEPROB(7)
				// define 8 varmove list
					#define ECA_ANIM_BASE8VARMOVELIST(State,Stance,Suffix,Num1) \
					ECA_ANIM_VARLIST8(State,Stance,Suffix,Num1,_v,,ECA_VARMOVEPROB(8)),ECA_VARMOVEPROB(8)
				// define 9 varmove list
					#define ECA_ANIM_BASE9VARMOVELIST(State,Stance,Suffix,Num1) \
					ECA_ANIM_VARLIST9(State,Stance,Suffix,Num1,_v,,ECA_VARMOVEPROB(9)),ECA_VARMOVEPROB(9)
				// define 10 varmove list
					#define ECA_ANIM_BASE10VARMOVELIST(State,Stance,Suffix,Num1) \
					ECA_ANIM_VARLIST10(State,Stance,Suffix,Num1,_v,,ECA_VARMOVEPROB(10)),ECA_VARMOVEPROB(10)	

		// ***********   Base classes  ***********

			// BASE
				// defines a base state, potential loop variants
					// class CivilStand or class RifleStandRelaxed
					#define ECA_ANIM_ALLBASE(StateConst,State,Stance,Suffix,RTMState,RTMSuffix,DyingC,DyingI,BaseVar) \
					class ##State##Stance##Suffix##:RTM_##RTMState##Stance##RTMSuffix## \
						{ \
						actions=##State##Stance##Actions; \
						connectTo[]={DyingC}; \
						interpolateTo[]={##State##Stance##,0.1,DyingI}; \
						interpolateFrom[]={##State##Stance##,0.1}; \
						variantsAI[]={BaseVar}; \
						variantAfter[]={0,0,0}; \
						StateConst \
						}
				// defines a base change, this is used by the variants to change to a different base variant
					// class CivilStandBaseChange
					#define ECA_ANIM_ALLBASECHANGE(StateConst,State,Stance,Suffix,RTMState,RTMSuffix,BaseVar) \
					class ##State##Stance##Suffix##BaseChange:RTM_##RTMState##Stance##RTMSuffix## \
						{ \
						actions=##State##Stance##Actions; \
						variantsAI[]={BaseVar}; \
						variantAfter[]={0,0,0}; \
						StateConst \
						}
				// defines a base state loop (no variants, just one loop)
					// class CivilStand_loop
					#define ECA_ANIM_ALLBASELOOP(StateConst,State,Stance,Suffix,RTMState,RTMSuffix) \
					class ##State##Stance##Suffix##_loop:RTM_##RTMState##Stance##RTMSuffix##_loop \
						{ \
						actions=##State##Stance##Actions; \
						interpolationSpeed=1000; \
						interpolateTo[]={##State##Stance##Suffix##,0}; \
						connectFrom[]={##State##Stance##Suffix##,0}; \
						StateConst \
						}
						
			// VARBASE	
			// defines a base variant
				// class CivilStand1
				#define ECA_ANIM_ALLBASEVAR(StateConst,State,Stance,Suffix,VarNum,RTMState,RTMSuffix,DyingI) \
				class ##State##Stance##Suffix##VarNum##:RTM_##RTMState##Stance##RTMSuffix##VarNum## \
					{ \
					actions=##State##Stance##Suffix##VarNum##Actions; \
					variantsAI[]={##State##Stance##Suffix##VarNum##_loop}; \
					variantAfter[]={0,0,0}; \
					InterpolateTo[]={##State##Stance##Suffix##,0,##State##Stance##,0,DyingI}; \
					InterpolateFrom[]={##State##Stance##Suffix##,0,##State##Stance##,0}; \
					equivalentTo=##State##Stance##Suffix##BaseChange; \
					StateConst \
					}
				// define base with 1 varbase
					#define ECA_ANIM_ALLBASE1VAR(StateConst,State,Stance,Suffix,RTMState,RTMSuffix,DyingI) \
					ECA_ANIM_ALLBASE(StateConst,State,Stance,Suffix,RTMState,RTMSuffix,,DyingI,ECA_ANIM_BASE1VARLIST(State,Stance,Suffix)); \
					ECA_ANIM_ALLBASECHANGE(StateConst,State,Stance,Suffix,RTMState,RTMSuffix,ECA_ANIM_BASE1VARLIST(State,Stance,Suffix)); \
					ECA_ANIM_ALLBASEVAR(StateConst,State,Stance,Suffix,1,RTMState,RTMSuffix,DyingI)
				// define base with 2 varbase
					#define ECA_ANIM_ALLBASE2VAR(StateConst,State,Stance,Suffix,RTMState,RTMSuffix,DyingI) \
					ECA_ANIM_ALLBASE(StateConst,State,Stance,Suffix,RTMState,RTMSuffix,,DyingI,ECA_ANIM_BASE2VARLIST(State,Stance,Suffix)); \
					ECA_ANIM_ALLBASECHANGE(StateConst,State,Stance,Suffix,RTMState,RTMSuffix,ECA_ANIM_BASE2VARLIST(State,Stance,Suffix)); \
					ECA_ANIM_ALLBASEVAR(StateConst,State,Stance,Suffix,1,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVAR(StateConst,State,Stance,Suffix,2,RTMState,RTMSuffix,DyingI)
				// define base with 3 varbase
					#define ECA_ANIM_ALLBASE3VAR(StateConst,State,Stance,Suffix,RTMState,RTMSuffix,DyingI) \
					ECA_ANIM_ALLBASE(StateConst,State,Stance,Suffix,RTMState,RTMSuffix,,DyingI,ECA_ANIM_BASE3VARLIST(State,Stance,Suffix)); \
					ECA_ANIM_ALLBASECHANGE(StateConst,State,Stance,Suffix,RTMState,RTMSuffix,ECA_ANIM_BASE3VARLIST(State,Stance,Suffix)); \
					ECA_ANIM_ALLBASEVAR(StateConst,State,Stance,Suffix,1,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVAR(StateConst,State,Stance,Suffix,2,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVAR(StateConst,State,Stance,Suffix,3,RTMState,RTMSuffix,DyingI)

			// VARMOVE
				// defines a base variant's loop
					// class CivilStand1_loop
					#define ECA_ANIM_ALLBASEVARLOOP(StateConst,State,Stance,Suffix,VarNum,RTMState,RTMSuffix,MoveVar,DyingI) \
					class ##State##Stance##Suffix##VarNum##_loop:RTM_##RTMState##Stance##RTMSuffix##VarNum##_loop \
						{ \
						actions=##State##Stance##Suffix##VarNum##Actions; \
						variantsAI[]={MoveVar,##State##Stance##Suffix##BaseChange}; \
						variantAfter[]={2,5,10}; \
						InterpolateTo[]={##State##Stance##Suffix##VarNum##,0,DyingI}; \
						ConnectFrom[]={##State##Stance##Suffix##VarNum##,0}; \
						StateConst \
						}
				// defines a variant move of a base variant loop
					// class CivilStand1_v1
					#define ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,MoveNum,RTMState,RTMSuffix,DyingI) \
					class ##State##Stance##Suffix##VarNum##_v##MoveNum##:RTM_##RTMState##Stance##RTMSuffix##VarNum##_v##MoveNum## \
					{ \
						actions=##State##Stance##Suffix##VarNum##Actions; \
						InterpolateTo[]={##State##Stance##Suffix##,0.1,DyingI}; \
						ConnectFrom[]={##State##Stance##Suffix##VarNum##,0}; \
						ConnectTo[]={##State##Stance##Suffix##VarNum##,0}; \
						StateConst \
					}
					
				// define varbaseloop with 1 varmove
					#define ECA_ANIM_ALLBASEVAR1MOVE(StateConst,State,Stance,Suffix,VarNum,RTMState,RTMSuffix,DyingI) \
					ECA_ANIM_ALLBASEVARLOOP(StateConst,State,Stance,Suffix,VarNum,RTMState,RTMSuffix,ECA_ANIM_BASE1VARMOVELIST(State,Stance,Suffix,VarNum),DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,1,RTMState,RTMSuffix,DyingI); \
				// define varbaseloop with 2 varmove
					#define ECA_ANIM_ALLBASEVAR2MOVE(StateConst,State,Stance,Suffix,VarNum,RTMState,RTMSuffix,DyingI) \
					ECA_ANIM_ALLBASEVARLOOP(StateConst,State,Stance,Suffix,VarNum,RTMState,RTMSuffix,ECA_ANIM_BASE2VARMOVELIST(State,Stance,Suffix,VarNum),DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,1,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,2,RTMState,RTMSuffix,DyingI)
				// define varbaseloop with 3 varmove
					#define ECA_ANIM_ALLBASEVAR3MOVE(StateConst,State,Stance,Suffix,VarNum,RTMState,RTMSuffix,DyingI) \
					ECA_ANIM_ALLBASEVARLOOP(StateConst,State,Stance,Suffix,VarNum,RTMState,RTMSuffix,ECA_ANIM_BASE3VARMOVELIST(State,Stance,Suffix,VarNum),DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,1,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,2,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,3,RTMState,RTMSuffix,DyingI)
				// define varbaseloop with 4 varmove
					#define ECA_ANIM_ALLBASEVAR4MOVE(StateConst,State,Stance,Suffix,VarNum,RTMState,RTMSuffix,DyingI) \
					ECA_ANIM_ALLBASEVARLOOP(StateConst,State,Stance,Suffix,VarNum,RTMState,RTMSuffix,ECA_ANIM_BASE4VARMOVELIST(State,Stance,Suffix,VarNum),DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,1,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,2,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,3,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,4,RTMState,RTMSuffix,DyingI)
				// define varbaseloop with 5 varmove
					#define ECA_ANIM_ALLBASEVAR5MOVE(StateConst,State,Stance,Suffix,VarNum,RTMState,RTMSuffix,DyingI) \
					ECA_ANIM_ALLBASEVARLOOP(StateConst,State,Stance,Suffix,VarNum,RTMState,RTMSuffix,ECA_ANIM_BASE5VARMOVELIST(State,Stance,Suffix,VarNum),DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,1,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,2,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,3,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,4,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,5,RTMState,RTMSuffix,DyingI)
				// define varbaseloop with 6 varmove
					#define ECA_ANIM_ALLBASEVAR6MOVE(StateConst,State,Stance,Suffix,VarNum,RTMState,RTMSuffix,DyingI) \
					ECA_ANIM_ALLBASEVARLOOP(StateConst,State,Stance,Suffix,VarNum,RTMState,RTMSuffix,ECA_ANIM_BASE6VARMOVELIST(State,Stance,Suffix,VarNum),DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,1,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,2,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,3,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,4,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,5,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,6,RTMState,RTMSuffix,DyingI)
				// define varbaseloop with 7 varmove
					#define ECA_ANIM_ALLBASEVAR7MOVE(StateConst,State,Stance,Suffix,VarNum,RTMState,RTMSuffix,DyingI) \
					ECA_ANIM_ALLBASEVARLOOP(StateConst,State,Stance,Suffix,VarNum,RTMState,RTMSuffix,ECA_ANIM_BASE7VARMOVELIST(State,Stance,Suffix,VarNum),DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,1,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,2,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,3,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,4,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,5,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,6,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,7,RTMState,RTMSuffix,DyingI)
				// define varbaseloop with 8 varmove
					#define ECA_ANIM_ALLBASEVAR8MOVE(StateConst,State,Stance,Suffix,VarNum,RTMState,RTMSuffix,DyingI) \
					ECA_ANIM_ALLBASEVARLOOP(StateConst,State,Stance,Suffix,VarNum,RTMState,RTMSuffix,ECA_ANIM_BASE8VARMOVELIST(State,Stance,Suffix,VarNum),DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,1,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,2,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,3,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,4,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,5,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,6,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,7,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,8,RTMState,RTMSuffix,DyingI)
				// define varbaseloop with 9 varmove
					#define ECA_ANIM_ALLBASEVAR9MOVE(StateConst,State,Stance,Suffix,VarNum,RTMState,RTMSuffix,DyingI) \
					ECA_ANIM_ALLBASEVARLOOP(StateConst,State,Stance,Suffix,VarNum,RTMState,RTMSuffix,ECA_ANIM_BASE9VARMOVELIST(State,Stance,Suffix,VarNum),DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,1,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,2,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,3,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,4,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,5,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,6,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,7,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,8,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,9,RTMState,RTMSuffix,DyingI)
				// define varbaseloop with 10 varmove
					#define ECA_ANIM_ALLBASEVAR10MOVE(StateConst,State,Stance,Suffix,VarNum,RTMState,RTMSuffix,DyingI) \
					ECA_ANIM_ALLBASEVARLOOP(StateConst,State,Stance,Suffix,VarNum,RTMState,RTMSuffix,ECA_ANIM_BASE10VARMOVELIST(State,Stance,Suffix,VarNum),DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,1,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,2,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,3,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,4,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,5,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,6,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,7,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,8,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,9,RTMState,RTMSuffix,DyingI); \
					ECA_ANIM_ALLBASEVARMOVE(StateConst,State,Stance,Suffix,VarNum,10,RTMState,RTMSuffix,DyingI)
				
			
			
		// ***********  default state classes  ***********
			// define base no loop, no variants
				#define ECA_ANIM_DEFAULTBASE(StateConst,State,Stance,RTMState,DyingC) \
				ECA_ANIM_ALLBASE(StateConst,State,Stance,,RTMState,Default,DyingC,,)
			// define base with loop, no variants
				#define ECA_ANIM_DEFAULTBASEWITHLOOP(StateConst,State,Stance,RTMState,DyingC) \
				ECA_ANIM_ALLBASE(StateConst,State,Stance,,RTMState,Default,DyingC,,); \
				ECA_ANIM_ALLBASELOOP(StateConst,State,Stance,,RTMState,Default)
			// define base with varbases
				// define base with 1 varbase
				#define ECA_ANIM_DEFAULTBASE1VAR(StateConst,State,Stance,RTMState,DyingI) \
				ECA_ANIM_ALLBASE1VAR(StateConst,State,Stance,,RTMState,Default,DyingI)
				// define base with 2 varbase
				#define ECA_ANIM_DEFAULTBASE2VAR(StateConst,State,Stance,RTMState,DyingI) \
				ECA_ANIM_ALLBASE2VAR(StateConst,State,Stance,,RTMState,Default,DyingI)
				// define base with 3 varbase
				#define ECA_ANIM_DEFAULTBASE3VAR(StateConst,State,Stance,RTMState,DyingI) \
				ECA_ANIM_ALLBASE3VAR(StateConst,State,Stance,,RTMState,Default,DyingI)
			// define variant moves and base variant loop. for example :
			// Default1, Default1_loop, Default1_v1, Default1_v2 etc...
				// define 1 variant move of a base variant loop
					#define ECA_ANIM_DEFAULT1VARMOVE(StateConst,State,Stance,VarNum,RTMState,DyingI) \
					ECA_ANIM_ALLBASEVAR1MOVE(StateConst,State,Stance,,VarNum,RTMState,Default,DyingI)
				// define 2 variant move of a base variant loop
					#define ECA_ANIM_DEFAULT2VARMOVE(StateConst,State,Stance,VarNum,RTMState,DyingI) \
					ECA_ANIM_ALLBASEVAR2MOVE(StateConst,State,Stance,,VarNum,RTMState,Default,DyingI)
				// define 3 variant move of a base variant loop
					#define ECA_ANIM_DEFAULT3VARMOVE(StateConst,State,Stance,VarNum,RTMState,DyingI) \
					ECA_ANIM_ALLBASEVAR3MOVE(StateConst,State,Stance,,VarNum,RTMState,Default,DyingI)
				// define 4 variant move of a base variant loop
					#define ECA_ANIM_DEFAULT4VARMOVE(StateConst,State,Stance,VarNum,RTMState,DyingI) \
					ECA_ANIM_ALLBASEVAR4MOVE(StateConst,State,Stance,,VarNum,RTMState,Default,DyingI)
				// define 5 variant move of a base variant loop
					#define ECA_ANIM_DEFAULT5VARMOVE(StateConst,State,Stance,VarNum,RTMState,DyingI) \
					ECA_ANIM_ALLBASEVAR5MOVE(StateConst,State,Stance,,VarNum,RTMState,Default,DyingI)
				// define 6 variant move of a base variant loop
					#define ECA_ANIM_DEFAULT6VARMOVE(StateConst,State,Stance,VarNum,RTMState,DyingI) \
					ECA_ANIM_ALLBASEVAR6MOVE(StateConst,State,Stance,,VarNum,RTMState,Default,DyingI)
				// define 7 variant move of a base variant loop
					#define ECA_ANIM_DEFAULT7VARMOVE(StateConst,State,Stance,VarNum,RTMState,DyingI) \
					ECA_ANIM_ALLBASEVAR7MOVE(StateConst,State,Stance,,VarNum,RTMState,Default,DyingI)
				// define 8 variant move of a base variant loop
					#define ECA_ANIM_DEFAULT8VARMOVE(StateConst,State,Stance,VarNum,RTMState,DyingI) \
					ECA_ANIM_ALLBASEVAR8MOVE(StateConst,State,Stance,,VarNum,RTMState,Default,DyingI)
				// define 9 variant move of a base variant loop
					#define ECA_ANIM_DEFAULT9VARMOVE(StateConst,State,Stance,VarNum,RTMState,DyingI) \
					ECA_ANIM_ALLBASEVAR9MOVE(StateConst,State,Stance,,VarNum,RTMState,Default,DyingI)
				// define 10 variant move of a base variant loop
					#define ECA_ANIM_DEFAULT10VARMOVE(StateConst,State,Stance,VarNum,RTMState,DyingI) \
					ECA_ANIM_ALLBASEVAR10MOVE(StateConst,State,Stance,,VarNum,RTMState,Default,DyingI)
		
		// ***********  AI relaxed state classes  ***********
			// define base no loop, no variants
				#define ECA_ANIM_RELAXEDBASE(StateConst,State,Stance,RTMState,DyingI) \
				ECA_ANIM_ALLBASE(StateConst,State,Stance,Relaxed,RTMState,Relaxed,,DyingI,)
			// define base with loop, no variants
				#define ECA_ANIM_RELAXEDBASEWITHLOOP(StateConst,State,Stance,RTMState,DyingI) \
				ECA_ANIM_ALLBASE(StateConst,State,Stance,Relaxed,RTMState,Relaxed,,DyingI,); \
				ECA_ANIM_ALLBASELOOP(StateConst,State,Stance,Relaxed,RTMState,Relaxed)
			// define base with varbases
				// define base with 1 varbase
				#define ECA_ANIM_RELAXEDBASE1VAR(StateConst,State,Stance,RTMState,DyingI) \
				ECA_ANIM_ALLBASE1VAR(StateConst,State,Stance,Relaxed,RTMState,Relaxed,DyingI)
				// define base with 2 varbase
				#define ECA_ANIM_RELAXEDBASE2VAR(StateConst,State,Stance,RTMState,DyingI) \
				ECA_ANIM_ALLBASE2VAR(StateConst,State,Stance,Relaxed,RTMState,Relaxed,DyingI)
				// define base with 3 varbase
				#define ECA_ANIM_RELAXEDBASE3VAR(StateConst,State,Stance,RTMState,DyingI) \
				ECA_ANIM_ALLBASE3VAR(StateConst,State,Stance,Relaxed,RTMState,Relaxed,DyingI)
			// define variant moves of base variant loop. for example :
			// CivilStandRelaxed1_v1, CivilStandRelaxed1_v2 etc...
				// define 1 variant move of a base variant loop
					#define ECA_ANIM_RELAXED1VARMOVE(StateConst,State,Stance,VarNum,RTMState,DyingI) \
					ECA_ANIM_ALLBASEVAR1MOVE(StateConst,State,Stance,Relaxed,VarNum,RTMState,Relaxed,DyingI)
				// define 2 variant move of a base variant loop
					#define ECA_ANIM_RELAXED2VARMOVE(StateConst,State,Stance,VarNum,RTMState,DyingI) \
					ECA_ANIM_ALLBASEVAR2MOVE(StateConst,State,Stance,Relaxed,VarNum,RTMState,Relaxed,DyingI)
				// define 3 variant move of a base variant loop
					#define ECA_ANIM_RELAXED3VARMOVE(StateConst,State,Stance,VarNum,RTMState,DyingI) \
					ECA_ANIM_ALLBASEVAR3MOVE(StateConst,State,Stance,Relaxed,VarNum,RTMState,Relaxed,DyingI)
				// define 4 variant move of a base variant loop
					#define ECA_ANIM_RELAXED4VARMOVE(StateConst,State,Stance,VarNum,RTMState,DyingI) \
					ECA_ANIM_ALLBASEVAR4MOVE(StateConst,State,Stance,Relaxed,VarNum,RTMState,Relaxed,DyingI)
				// define 5 variant move of a base variant loop
					#define ECA_ANIM_RELAXED5VARMOVE(StateConst,State,Stance,VarNum,RTMState,DyingI) \
					ECA_ANIM_ALLBASEVAR5MOVE(StateConst,State,Stance,Relaxed,VarNum,RTMState,Relaxed,DyingI)
				// define 6 variant move of a base variant loop
					#define ECA_ANIM_RELAXED6VARMOVE(StateConst,State,Stance,VarNum,RTMState,DyingI) \
					ECA_ANIM_ALLBASEVAR6MOVE(StateConst,State,Stance,Relaxed,VarNum,RTMState,Relaxed,DyingI)
				// define 7 variant move of a base variant loop
					#define ECA_ANIM_RELAXED7VARMOVE(StateConst,State,Stance,VarNum,RTMState,DyingI) \
					ECA_ANIM_ALLBASEVAR7MOVE(StateConst,State,Stance,Relaxed,VarNum,RTMState,Relaxed,DyingI)
				// define 8 variant move of a base variant loop
					#define ECA_ANIM_RELAXED8VARMOVE(StateConst,State,Stance,VarNum,RTMState,DyingI) \
					ECA_ANIM_ALLBASEVAR8MOVE(StateConst,State,Stance,Relaxed,VarNum,RTMState,Relaxed,DyingI)
				// define 9 variant move of a base variant loop
					#define ECA_ANIM_RELAXED9VARMOVE(StateConst,State,Stance,VarNum,RTMState,DyingI) \
					ECA_ANIM_ALLBASEVAR9MOVE(StateConst,State,Stance,Relaxed,VarNum,RTMState,Relaxed,DyingI)
				// define 10 variant move of a base variant loop
					#define ECA_ANIM_RELAXED10VARMOVE(StateConst,State,Stance,VarNum,RTMState,DyingI) \
					ECA_ANIM_ALLBASEVAR10MOVE(StateConst,State,Stance,Relaxed,VarNum,RTMState,Relaxed,DyingI)

	// ============================================================================
	//							Transitions
	// ============================================================================	
				
		// basic transition declaration
			#define ECA_ANIM_ALLTRANSITIONS(StateConst,StateFrom,StanceFrom,StateTo,StanceTo,RTMStateFrom,RTMStateTo,RTMStanceTo,DyingI) \
				class ##StateFrom##StanceFrom##To##StateTo##StanceTo##:RTM_##RTMStateFrom##StanceFrom##To##RTMStateTo##RTMStanceTo## \
				{ \
					actions=##StateTo##StanceTo##Actions; \
					connectfrom[]={##StateFrom##StanceFrom##,0.5}; \
					connectTo[]={##StateTo##StanceTo##,0.5}; \
					InterpolateTo[]={DyingI}; \
					StateConst \
				}
		
		// Stance transition
		// for example stand to crouch, crouch to lying etc...
			#define ECA_ANIM_STANCETRANSITION(StateConst,State,Stance,StanceTo,RTMState,DyingI) \
				ECA_ANIM_ALLTRANSITIONS(StateConst,State,Stance,State,StanceTo,RTMState,,StanceTo,DyingI)
		
		// State transition
		// for example RifleStand to RifleSafeStand
			#define ECA_ANIM_STATETRANSITION(StateConst,State,Stance,StateTo,RTMState,DyingI) \
				ECA_ANIM_ALLTRANSITIONS(StateConst,State,Stance,StateTo,Stance,RTMState,StateTo,,DyingI)
			#define ECA_ANIM_STATETRANSITIONTOLYING(StateConst,State,Stance,StateTo,RTMState,DyingI) \
				ECA_ANIM_ALLTRANSITIONS(StateConst,State,Stance,StateTo,Lying,RTMState,StateTo,Lying,DyingI)

		// multistep transition
			#define ECA_ANIM_TRANSITIONFIRSTSTEP(StateConst,State,StateTo,Stance,StanceTo,cost,RTMfile,DyingI) \
				class ##State##Stance##To##StateTo##StanceTo##1:RTM_##RTMfile## \
				{ \
					actions=##StateTo##StanceTo##Actions; \
					connectfrom[]={##State##Stance##,##cost##}; \
					connectTo[]={##State##Stance##To##StateTo##StanceTo##2,##cost##}; \
					InterpolateTo[]={DyingI}; \
					StateConst \
				}
			#define ECA_ANIM_TRANSITIONSTEP(StateConst,State,StateTo,Stance,StanceTo,Step,NextStep,cost,RTMfile,DyingI) \
				class ##State##Stance##To##StateTo##StanceTo##Step##:RTM_##RTMfile## \
				{ \
					actions=##StateTo##StanceTo##Actions; \
					connectTo[]={##State##Stance##To##StateTo##StanceTo##NextStep##,##cost##}; \
					InterpolateTo[]={DyingI}; \
					StateConst \
				}
			#define ECA_ANIM_TRANSITIONLASTSTEP(StateConst,State,StateTo,Stance,StanceTo,Step,cost,RTMfile,DyingI) \
				class ##State##Stance##To##StateTo##StanceTo##Step##:RTM_##RTMfile## \
				{ \
					actions=##StateTo##StanceTo##Actions; \
					connectTo[]={##StateTo##StanceTo##,##cost##}; \
					InterpolateTo[]={DyingI}; \
					StateConst \
				}
		
		// 2 steps
		#define ECA_ANIM_TRANSITION1OF2(StateConst,State,StateTo,Stance,StanceTo,RTMfile,DyingI) \
			ECA_ANIM_TRANSITIONFIRSTSTEP(StateConst,State,StateTo,Stance,StanceTo,0.5,RTMfile,DyingI)
		#define ECA_ANIM_TRANSITION2OF2(StateConst,State,StateTo,Stance,StanceTo,RTMfile,DyingI) \
			ECA_ANIM_TRANSITIONLASTSTEP(StateConst,State,StateTo,Stance,StanceTo,2,0.5,RTMfile,DyingI)
			
		// 3 steps
		#define ECA_ANIM_TRANSITION1OF3(StateConst,State,StateTo,Stance,StanceTo,RTMfile,DyingI) \
			ECA_ANIM_TRANSITIONFIRSTSTEP(StateConst,State,StateTo,Stance,StanceTo,0.33,RTMfile,DyingI)
		#define ECA_ANIM_TRANSITION2OF3(StateConst,State,StateTo,Stance,StanceTo,RTMfile,DyingI) \
			ECA_ANIM_TRANSITIONSTEP(StateConst,State,StateTo,Stance,StanceTo,2,3,0.33,RTMfile,DyingI)
		#define ECA_ANIM_TRANSITION3OF3(StateConst,State,StateTo,Stance,StanceTo,RTMfile,DyingI) \
			ECA_ANIM_TRANSITIONLASTSTEP(StateConst,State,StateTo,Stance,StanceTo,3,0.33,RTMfile,DyingI)
		
		// 4 steps
		#define ECA_ANIM_TRANSITION1OF4(StateConst,State,StateTo,Stance,StanceTo,RTMfile,DyingI) \
			ECA_ANIM_TRANSITIONFIRSTSTEP(StateConst,State,StateTo,Stance,StanceTo,0.25,RTMfile,DyingI)
		#define ECA_ANIM_TRANSITION2OF4(StateConst,State,StateTo,Stance,StanceTo,RTMfile,DyingI) \
			ECA_ANIM_TRANSITIONSTEP(StateConst,State,StateTo,Stance,StanceTo,2,3,0.25,RTMfile,DyingI)
		#define ECA_ANIM_TRANSITION3OF4(StateConst,State,StateTo,Stance,StanceTo,RTMfile,DyingI) \
			ECA_ANIM_TRANSITIONSTEP(StateConst,State,StateTo,Stance,StanceTo,3,4,0.25,RTMfile,DyingI)
		#define ECA_ANIM_TRANSITION4OF4(StateConst,State,StateTo,Stance,StanceTo,RTMfile,DyingI) \
			ECA_ANIM_TRANSITIONLASTSTEP(StateConst,State,StateTo,Stance,StanceTo,4,0.25,RTMfile,DyingI)
			
		// 5 steps
		#define ECA_ANIM_TRANSITION1OF5(StateConst,State,StateTo,Stance,StanceTo,RTMfile,DyingI) \
			ECA_ANIM_TRANSITIONFIRSTSTEP(StateConst,State,StateTo,Stance,StanceTo,0.2,RTMfile,DyingI)
		#define ECA_ANIM_TRANSITION2OF5(StateConst,State,StateTo,Stance,StanceTo,RTMfile,DyingI) \
			ECA_ANIM_TRANSITIONSTEP(StateConst,State,StateTo,Stance,StanceTo,2,3,0.2,RTMfile,DyingI)
		#define ECA_ANIM_TRANSITION3OF5(StateConst,State,StateTo,Stance,StanceTo,RTMfile,DyingI) \
			ECA_ANIM_TRANSITIONSTEP(StateConst,State,StateTo,Stance,StanceTo,3,4,0.2,RTMfile,DyingI)
		#define ECA_ANIM_TRANSITION4OF5(StateConst,State,StateTo,Stance,StanceTo,RTMfile,DyingI) \
			ECA_ANIM_TRANSITIONSTEP(StateConst,State,StateTo,Stance,StanceTo,4,5,0.2,RTMfile,DyingI)
		#define ECA_ANIM_TRANSITION5OF5(StateConst,State,StateTo,Stance,StanceTo,RTMfile,DyingI) \
			ECA_ANIM_TRANSITIONLASTSTEP(StateConst,State,StateTo,Stance,StanceTo,5,0.2,RTMfile,DyingI)
		
	// ============================================================================
	//							Binoc animations
	// ============================================================================

		#define ECA_ANIM_BINOC(StateConst,State,Stance,RTMState,DyingI) \
				class ##State##Stance##Binoc:RTM_##RTMState##Stance##Binoc \
				{ \
					actions=##State##Stance##BinocActions; \
					InterpolateTo[]={DyingI}; \
					enableBinocular=1; \
					StateConst \
				}

	// ============================================================================
	//							Reload animations
	// ============================================================================
		
		// generic reload anim
			#define ECA_ANIM_ALLRELOAD(StateConst,State,Stance,Name,RTMState,DyingI) \
				class ##State##Stance##Name##:RTM_##RTMState##Stance##Name## \
				{ \
					actions=##State##Stance##Actions; \
					connectfrom[]={##State##Stance##,1}; \
					connectTo[]={##State##Stance##,1}; \
					InterpolateTo[]={DyingI}; \
					StateConst \
				}
		// reload AT
			#define ECA_ANIM_RELOADAT(StateConst,State,Stance,RTMState,DyingI) \
				ECA_ANIM_ALLRELOAD(StateConst,State,Stance,ReloadAT,RTMState,DyingI)
		// reload Magazine
			#define ECA_ANIM_RELOADMAGAZINE(StateConst,State,Stance,RTMState,DyingI) \
				ECA_ANIM_ALLRELOAD(StateConst,State,Stance,ReloadMagazine,RTMState,DyingI)
		// reload Mgun
			#define ECA_ANIM_RELOADMGUN(StateConst,State,Stance,RTMState,DyingI) \
				ECA_ANIM_ALLRELOAD(StateConst,State,Stance,ReloadMgun,RTMState,DyingI)
		// reload mortar
			#define ECA_ANIM_RELOADMORTAR(StateConst,State,Stance,RTMState,DyingI) \
				ECA_ANIM_ALLRELOAD(StateConst,State,Stance,ReloadMortar,RTMState,DyingI)
		// reload bolt
			#define ECA_ANIM_RELOADBOLT(StateConst,State,Stance,RTMState,DyingI) \
				ECA_ANIM_ALLRELOAD(StateConst,State,Stance,ReloadBolt,RTMState,DyingI)
				
			
	// ============================================================================
	//							Throw grenade animations
	// ============================================================================
	
		// generic throw grenade
			#define ECA_ANIM_THROWGRENADE(StateConst,State,Stance,RTMState,DyingI) \
				class ##State##Stance##ThrowGrenadeStart:RTM_##RTMState##Stance##ThrowGrenadeStart \
				{ \
					actions=##State##Stance##Actions; \
					connectfrom[]={##State##Stance##,1}; \
					connectTo[]={##State##Stance##ThrowGrenadeEnd,1}; \
					InterpolateTo[]={DyingI}; \
					StateConst \
				} \
				class ##State##Stance##ThrowGrenadeEnd:RTM_##RTMState##Stance##ThrowGrenadeEnd \
				{ \
					actions=##State##Stance##Actions; \
					connectfrom[]={##State##Stance##ThrowGrenadeStart,1}; \
					connectTo[]={##State##Stance##,1}; \
					InterpolateTo[]={DyingI}; \
					StateConst \
				}
		// generic Run throw grenade
			#define ECA_ANIM_RUNTHROWGRENADE(StateConst,State,Stance,RTMState,DyingI) \
				class ##State##Stance##RunThrowGrenadeStartC:RTM_##RTMState##Stance##RunThrowGrenadeStartC \
				{ \
					actions=##State##Stance##RunFActions; \
					interpolatefrom[]={##State##Stance##RunF,0.1}; \
					connectTo[]={##State##Stance##RunThrowGrenadeStart,0.1}; \
					InterpolateTo[]={DyingI}; \
					StateConst \
				} \
				class ##State##Stance##RunThrowGrenadeStart:RTM_##RTMState##Stance##RunThrowGrenadeStart \
				{ \
					actions=##State##Stance##RunFActions; \
					connectfrom[]={##State##Stance##RunThrowGrenadeStartC,0.1}; \
					connectTo[]={##State##Stance##RunThrowGrenadeEnd,0.1}; \
					InterpolateTo[]={DyingI}; \
					StateConst \
				} \
				class ##State##Stance##RunThrowGrenadeEnd:RTM_##RTMState##Stance##RunThrowGrenadeEnd \
				{ \
					actions=##State##Stance##RunFActions; \
					connectfrom[]={##State##Stance##RunThrowGrenadeStart,0.1}; \
					connectTo[]={##State##Stance##RunF,0.1}; \
					InterpolateTo[]={DyingI}; \
					StateConst \
				}
		// crouch throw grenade
			#define ECA_ANIM_CROUCHTHROWGRENADE(StateConst,State,RTMState,DyingI) \
				class ##State##CrouchThrowGrenadeStart:##State##StandThrowGrenadeStart \
				{ \
					connectfrom[]={##State##Stand,1}; \
					connectTo[]={##State##StandThrowGrenadeEnd,1}; \
					StateConst \
				}
		// crouch Run throw grenade
			#define ECA_ANIM_CROUCHRUNTHROWGRENADE(StateConst,State,RTMState,DyingI) \
				class ##State##CrouchRunThrowGrenadeStart:##State##StandRunThrowGrenadeStart \
				{ \
					connectfrom[]={##State##StandRunF,1}; \
					connectTo[]={##State##StandRunThrowGrenadeEnd,1}; \
					StateConst \
				}
		
	// ============================================================================
	//							Run/RunAim/Sprint/Walk/Crawl anims
	// ============================================================================

		// ***********   interpolate lists  ***********
			// base list item for all dir
				#define ECA_ANIM_RUNI(State,Stance,Name,Dir) ##State##Stance##Name##Dir##,0.1
			// base list to connect to base
				#define ECA_ANIM_RUNIBASE(State,Stance,Suffix) ##State##Stance##Suffix##,0
			// basic Direction interpolations
				// Safe Run/Walk, Combat Run,RunAim F
					#define ECA_ANIM_ALLSRUNIF(State,Stance,Name) \
						ECA_ANIM_RUNI(State,Stance,Name,RF), \
						ECA_ANIM_RUNI(State,Stance,Name,LF), \
						ECA_ANIM_RUNI(State,Stance,Name,B)
				// Safe Run/Walk, Combat Run,RunAim RF
					#define ECA_ANIM_ALLSRUNIRF(State,Stance,Name) \
						ECA_ANIM_RUNI(State,Stance,Name,R), \
						ECA_ANIM_RUNI(State,Stance,Name,LB)
				// Safe Run/Walk, Combat Run,RunAim LF
					#define ECA_ANIM_ALLSRUNILF(State,Stance,Name) \
						ECA_ANIM_RUNI(State,Stance,Name,L), \
						ECA_ANIM_RUNI(State,Stance,Name,RB)
				// Safe Run/Walk, Combat Run,RunAim R
					#define ECA_ANIM_ALLSRUNIR(State,Stance,Name) \
						ECA_ANIM_RUNI(State,Stance,Name,RF)
				// Safe Run/Walk, Combat Run,RunAim L
					#define ECA_ANIM_ALLSRUNIL(State,Stance,Name) \
						ECA_ANIM_RUNI(State,Stance,Name,LF)
				// Safe Run/Walk, Combat Run,RunAim RB
					#define ECA_ANIM_ALLSRUNIRB(State,Stance,Name) \
						ECA_ANIM_RUNI(State,Stance,Name,LF), \
						ECA_ANIM_RUNI(State,Stance,Name,B)
				// Safe Run/Walk, Combat Run,RunAim LB
					#define ECA_ANIM_ALLSRUNILB(State,Stance,Name) \
						ECA_ANIM_RUNI(State,Stance,Name,RF), \
						ECA_ANIM_RUNI(State,Stance,Name,B)
				// Safe Run/Walk, Combat Run,RunAim B
					#define ECA_ANIM_ALLSRUNIB(State,Stance,Name) \
						ECA_ANIM_RUNI(State,Stance,Name,LB), \
						ECA_ANIM_RUNI(State,Stance,Name,RB)
				// Combat Walk R
					#define ECA_ANIM_ALLCRUNIR(State,Stance,Name) \
						ECA_ANIM_RUNI(State,Stance,Name,RF), \
						ECA_ANIM_RUNI(State,Stance,Name,L), \
						ECA_ANIM_RUNI(State,Stance,Name,RB)
				// Combat Walk L
					#define ECA_ANIM_ALLCRUNIL(State,Stance,Name) \
						ECA_ANIM_RUNI(State,Stance,Name,R), \
						ECA_ANIM_RUNI(State,Stance,Name,LF), \
						ECA_ANIM_RUNI(State,Stance,Name,LB)
				// Combat Walk RB
					#define ECA_ANIM_ALLCRUNIRB(State,Stance,Name) \
						ECA_ANIM_RUNI(State,Stance,Name,R), \
						ECA_ANIM_RUNI(State,Stance,Name,LF), \
						ECA_ANIM_RUNI(State,Stance,Name,B)
				// Combat Walk LB
					#define ECA_ANIM_ALLCRUNILB(State,Stance,Name) \
						ECA_ANIM_RUNI(State,Stance,Name,L), \
						ECA_ANIM_RUNI(State,Stance,Name,RF), \
						ECA_ANIM_RUNI(State,Stance,Name,B)
			// Specific Direction interpolations
				// SafeWalk Interpolations
					#define ECA_ANIM_SAFEWALKIF(State,Stance)		ECA_ANIM_ALLSRUNIF(State,Stance,Walk),ECA_ANIM_RUNI(State,Stance,Run,F),ECA_ANIM_RUNIBASE(State,Stance,)
					#define ECA_ANIM_SAFEWALKIRF(State,Stance)		ECA_ANIM_ALLSRUNIRF(State,Stance,Walk),ECA_ANIM_RUNI(State,Stance,Run,RF)
					#define ECA_ANIM_SAFEWALKILF(State,Stance)		ECA_ANIM_ALLSRUNILF(State,Stance,Walk),ECA_ANIM_RUNI(State,Stance,Run,LF)
					#define ECA_ANIM_SAFEWALKIR(State,Stance)		ECA_ANIM_ALLSRUNIR(State,Stance,Walk),ECA_ANIM_RUNI(State,Stance,Run,R)
					#define ECA_ANIM_SAFEWALKIL(State,Stance)		ECA_ANIM_ALLSRUNIL(State,Stance,Walk),ECA_ANIM_RUNI(State,Stance,Run,L)
					#define ECA_ANIM_SAFEWALKIRB(State,Stance)		ECA_ANIM_ALLSRUNIRB(State,Stance,Walk),ECA_ANIM_RUNI(State,Stance,Run,RB)
					#define ECA_ANIM_SAFEWALKILB(State,Stance)		ECA_ANIM_ALLSRUNILB(State,Stance,Walk),ECA_ANIM_RUNI(State,Stance,Run,LB)
					#define ECA_ANIM_SAFEWALKIB(State,Stance)		ECA_ANIM_ALLSRUNIB(State,Stance,Walk),ECA_ANIM_RUNI(State,Stance,Run,B),ECA_ANIM_RUNIBASE(State,Stance,)
				// SafeRun Interpolations
					#define ECA_ANIM_SAFERUNIF(State,Stance)		ECA_ANIM_ALLSRUNIF(State,Stance,Run),ECA_ANIM_RUNIBASE(State,Stance,)
					#define ECA_ANIM_SAFERUNIRF(State,Stance)		ECA_ANIM_ALLSRUNIRF(State,Stance,Run)
					#define ECA_ANIM_SAFERUNILF(State,Stance)		ECA_ANIM_ALLSRUNILF(State,Stance,Run)
					#define ECA_ANIM_SAFERUNIR(State,Stance)		ECA_ANIM_ALLSRUNIR(State,Stance,Run)
					#define ECA_ANIM_SAFERUNIL(State,Stance)		ECA_ANIM_ALLSRUNIL(State,Stance,Run)
					#define ECA_ANIM_SAFERUNIRB(State,Stance)		ECA_ANIM_ALLSRUNIRB(State,Stance,Run)
					#define ECA_ANIM_SAFERUNILB(State,Stance)		ECA_ANIM_ALLSRUNILB(State,Stance,Run)
					#define ECA_ANIM_SAFERUNIB(State,Stance)		ECA_ANIM_ALLSRUNIB(State,Stance,Run),ECA_ANIM_RUNIBASE(State,Stance,)
				// SafeSprint Interpolations
					#define ECA_ANIM_SAFESPRINTIF(State,Stance)		ECA_ANIM_ALLSRUNIF(State,Stance,Sprint),ECA_ANIM_RUNI(State,Stance,Run,F),ECA_ANIM_RUNIBASE(State,Stance,),ECA_ANIM_RUNIBASE(State,Stance,Relaxed)
					#define ECA_ANIM_SAFESPRINTIRF(State,Stance)	ECA_ANIM_ALLSRUNIRF(State,Stance,Sprint),ECA_ANIM_RUNI(State,Stance,Run,RF)
					#define ECA_ANIM_SAFESPRINTILF(State,Stance)	ECA_ANIM_ALLSRUNILF(State,Stance,sprint),ECA_ANIM_RUNI(State,Stance,Run,LF)
				// SafeSprint Interpolations
					#define ECA_ANIM_SAFESPRINTIF(State,Stance)			ECA_ANIM_ALLSRUNIF(State,Stance,Sprint),ECA_ANIM_RUNI(State,Stance,Run,F)
					#define ECA_ANIM_SAFESPRINTIRF(State,Stance)		ECA_ANIM_RUNI(State,Stance,Run,RF)
					#define ECA_ANIM_SAFESPRINTILF(State,Stance)		ECA_ANIM_RUNI(State,Stance,Run,LF)
					#define ECA_ANIM_SAFESPRINTIFVAR(State,Stance,Num)	ECA_ANIM_ALLSRUNIF(State,Stance,Sprint),ECA_ANIM_RUNI(State,Stance,RunF_V,Num)
				// CombatWalk interpolations
					#define ECA_ANIM_COMBATWALKIF(State,Stance)		ECA_ANIM_ALLSRUNIF(State,Stance,Walk),ECA_ANIM_RUNI(State,Stance,Run,F),ECA_ANIM_RUNIBASE(State,Stance,)
					#define ECA_ANIM_COMBATWALKIRF(State,Stance)	ECA_ANIM_ALLSRUNIRF(State,Stance,Walk),ECA_ANIM_RUNI(State,Stance,Run,RF)
					#define ECA_ANIM_COMBATWALKILF(State,Stance)	ECA_ANIM_ALLSRUNILF(State,Stance,Walk),ECA_ANIM_RUNI(State,Stance,Run,LF)
					#define ECA_ANIM_COMBATWALKIR(State,Stance)		ECA_ANIM_ALLCRUNIR(State,Stance,Walk),ECA_ANIM_RUNI(State,Stance,Run,R)
					#define ECA_ANIM_COMBATWALKIL(State,Stance)		ECA_ANIM_ALLCRUNIL(State,Stance,Walk),ECA_ANIM_RUNI(State,Stance,Run,L)
					#define ECA_ANIM_COMBATWALKIRB(State,Stance)	ECA_ANIM_ALLCRUNIRB(State,Stance,Walk),ECA_ANIM_RUNI(State,Stance,Run,RB)
					#define ECA_ANIM_COMBATWALKILB(State,Stance)	ECA_ANIM_ALLCRUNILB(State,Stance,Walk),ECA_ANIM_RUNI(State,Stance,Run,LB)
					#define ECA_ANIM_COMBATWALKIB(State,Stance)		ECA_ANIM_ALLSRUNIB(State,Stance,Walk),ECA_ANIM_RUNI(State,Stance,Run,B),ECA_ANIM_RUNIBASE(State,Stance,)
				// CombatRun Interpolations
					#define ECA_ANIM_COMBATRUNIF(State,Stance)		ECA_ANIM_ALLSRUNIF(State,Stance,Run),ECA_ANIM_RUNIBASE(State,Stance,),ECA_ANIM_RUNIBASE(State,Stance,Relaxed)
					#define ECA_ANIM_COMBATRUNIRF(State,Stance)		ECA_ANIM_ALLSRUNIRF(State,Stance,Run)
					#define ECA_ANIM_COMBATRUNILF(State,Stance)		ECA_ANIM_ALLSRUNILF(State,Stance,Run)
					#define ECA_ANIM_COMBATRUNIR(State,Stance)		ECA_ANIM_ALLSRUNIR(State,Stance,Run)
					#define ECA_ANIM_COMBATRUNIL(State,Stance)		ECA_ANIM_ALLSRUNIL(State,Stance,Run)
					#define ECA_ANIM_COMBATRUNIRB(State,Stance)		ECA_ANIM_ALLSRUNIRB(State,Stance,Run)
					#define ECA_ANIM_COMBATRUNILB(State,Stance)		ECA_ANIM_ALLSRUNILB(State,Stance,Run)
					#define ECA_ANIM_COMBATRUNIB(State,Stance)		ECA_ANIM_ALLSRUNIB(State,Stance,Run),ECA_ANIM_RUNIBASE(State,Stance,),ECA_ANIM_RUNIBASE(State,Stance,Relaxed)
				// CombatRunAim Interpolations
					#define ECA_ANIM_COMBATRUNAIMIF(State,Stance)		ECA_ANIM_ALLSRUNIF(State,Stance,RunAim),ECA_ANIM_RUNI(State,Stance,Run,F),ECA_ANIM_RUNI(State,Stance,Walk,F)
					#define ECA_ANIM_COMBATRUNAIMIRF(State,Stance)		ECA_ANIM_ALLSRUNIRF(State,Stance,RunAim),ECA_ANIM_RUNI(State,Stance,Run,RF),ECA_ANIM_RUNI(State,Stance,Walk,RF)
					#define ECA_ANIM_COMBATRUNAIMILF(State,Stance)		ECA_ANIM_ALLSRUNILF(State,Stance,RunAim),ECA_ANIM_RUNI(State,Stance,Run,LF),ECA_ANIM_RUNI(State,Stance,Walk,LF)
					#define ECA_ANIM_COMBATRUNAIMIR(State,Stance)		ECA_ANIM_ALLSRUNIR(State,Stance,RunAim),ECA_ANIM_RUNI(State,Stance,Run,R),ECA_ANIM_RUNI(State,Stance,Walk,R)
					#define ECA_ANIM_COMBATRUNAIMIL(State,Stance)		ECA_ANIM_ALLSRUNIL(State,Stance,RunAim),ECA_ANIM_RUNI(State,Stance,Run,L),ECA_ANIM_RUNI(State,Stance,Walk,L)
					#define ECA_ANIM_COMBATRUNAIMIRB(State,Stance)		ECA_ANIM_ALLSRUNIRB(State,Stance,RunAim),ECA_ANIM_RUNI(State,Stance,Run,RB),ECA_ANIM_RUNI(State,Stance,Walk,RB)
					#define ECA_ANIM_COMBATRUNAIMILB(State,Stance)		ECA_ANIM_ALLSRUNILB(State,Stance,RunAim),ECA_ANIM_RUNI(State,Stance,Run,LB),ECA_ANIM_RUNI(State,Stance,Walk,LB)
					#define ECA_ANIM_COMBATRUNAIMIB(State,Stance)		ECA_ANIM_ALLSRUNIB(State,Stance,RunAim),ECA_ANIM_RUNI(State,Stance,Run,B),ECA_ANIM_RUNI(State,Stance,Walk,B)
				// CombatSprint Interpolations
					#define ECA_ANIM_COMBATSPRINTIF(State,Stance)			ECA_ANIM_ALLSRUNIF(State,Stance,Sprint),ECA_ANIM_RUNI(State,Stance,Run,F)
					#define ECA_ANIM_COMBATSPRINTIRF(State,Stance)			ECA_ANIM_RUNI(State,Stance,Run,RF)
					#define ECA_ANIM_COMBATSPRINTILF(State,Stance)			ECA_ANIM_RUNI(State,Stance,Run,LF)
					#define ECA_ANIM_COMBATSPRINTIFVAR(State,Stance,Num)	ECA_ANIM_ALLSRUNIF(State,Stance,Sprint),ECA_ANIM_RUNI(State,Stance,RunF_V,Num)

		//***********   base classes ***********
			// Run all dir novar
				#define ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Name,Dir,Interpolation,RTMState,DyingI) \
					class ##State##Stance##Name##Dir##: RTM_##RTMState##Stance##Name##Dir## \
					{ \
						actions=##State##Stance##Name##Dir##Actions; \
						interpolationSpeed=8; \
						interpolateTo[]={##Interpolation##,DyingI}; \
						interpolateFrom[]={##Interpolation##}; \
						connectTo[]={##State##Stance##Name##Dir##,0}; \
						looped=1; \
						StateConst \
					}
			// Run all dir varbase. variant list passed as parameters
				#define ECA_ANIM_ALLRUNDIRVARBASE(StateConst,State,Stance,Name,Dir,Variants,RTMState) \
					class ##State##Stance##Name##Dir##: RTM_##RTMState##Stance##Name##Dir## \
					{ \
						actions=##State##Stance##Name##Dir##Actions; \
						variantsAI[]={Variants}; \
						variantAfter[]={0,0,0}; \
						looped=1; \
						StateConst \
					}
			// Run all dir variant _Vx
				#define ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Name,Dir,Num,Interpolation,RTMState,DyingI) \
					class ##State##Stance##Name##Dir##_V##Num##: RTM_##RTMState##Stance##Name##Dir##_V##Num## \
					{ \
						actions=##State##Stance##Name##Dir##_V##Num##Actions; \
						interpolationSpeed=8; \
						interpolateTo[]={Interpolation,DyingI}; \
						interpolateFrom[]={Interpolation,##State##Stance##Name##Dir##,0.05}; \
						connectTo[]={##State##Stance##Name##Dir##_V##Num##,0}; \
						looped=1; \
						StateConst \
					}

		//*********** classes ***********
			// walk, run etc... base (all dir except forward)
				// Base Safe Walk
					#define ECA_ANIM_SAFEWALKBASE(StateConst,State,Stance,RTMState,DyingI) \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Walk,RF,ECA_ANIM_SAFEWALKIRF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Walk,LF,ECA_ANIM_SAFEWALKILF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Walk,R,ECA_ANIM_SAFEWALKIR(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Walk,L,ECA_ANIM_SAFEWALKIL(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Walk,RB,ECA_ANIM_SAFEWALKIRB(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Walk,LB,ECA_ANIM_SAFEWALKILB(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Walk,B,ECA_ANIM_SAFEWALKIB(State,Stance),RTMState,DyingI)
				// Base Safe Run
					#define ECA_ANIM_SAFERUNBASE(StateConst,State,Stance,RTMState,RunFDying,RunBDying) \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Run,RF,ECA_ANIM_SAFERUNIRF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Run,LF,ECA_ANIM_SAFERUNILF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Run,R,ECA_ANIM_SAFERUNIR(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Run,L,ECA_ANIM_SAFERUNIL(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Run,RB,ECA_ANIM_SAFERUNIRB(State,Stance),RTMState,RunBDying); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Run,LB,ECA_ANIM_SAFERUNILB(State,Stance),RTMState,RunBDying); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Run,B,ECA_ANIM_SAFERUNIB(State,Stance),RTMState,RunBDying)
				// Base Safe Sprint
					#define ECA_ANIM_SAFESPRINTBASE(StateConst,State,Stance,RTMState,DyingI) \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Sprint,F,ECA_ANIM_SAFESPRINTIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Sprint,RF,ECA_ANIM_SAFESPRINTIRF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Sprint,LF,ECA_ANIM_SAFESPRINTILF(State,Stance),RTMState,DyingI)
				// Base Combat Walk
					#define ECA_ANIM_COMBATWALKBASE(StateConst,State,Stance,RTMState,DyingI) \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Walk,RF,ECA_ANIM_COMBATWALKIRF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Walk,LF,ECA_ANIM_COMBATWALKILF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Walk,R,ECA_ANIM_COMBATWALKIR(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Walk,L,ECA_ANIM_COMBATWALKIL(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Walk,RB,ECA_ANIM_COMBATWALKIRB(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Walk,LB,ECA_ANIM_COMBATWALKILB(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Walk,B,ECA_ANIM_COMBATWALKIB(State,Stance),RTMState,DyingI)
				// Base Combat Run
					#define ECA_ANIM_COMBATRUNBASE(StateConst,State,Stance,RTMState,RunFDying,RunBDying) \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Run,RF,ECA_ANIM_COMBATRUNIRF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Run,LF,ECA_ANIM_COMBATRUNILF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Run,R,ECA_ANIM_COMBATRUNIR(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Run,L,ECA_ANIM_COMBATRUNIL(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Run,RB,ECA_ANIM_COMBATRUNIRB(State,Stance),RTMState,RunBDying); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Run,LB,ECA_ANIM_COMBATRUNILB(State,Stance),RTMState,RunBDying); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Run,B,ECA_ANIM_COMBATRUNIB(State,Stance),RTMState,RunBDying)
				// Base Combat RunAim
					#define ECA_ANIM_COMBATRUNAIMBASE(StateConst,State,Stance,RTMState,RunFDying,RunBDying) \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,RunAim,RF,ECA_ANIM_COMBATRUNAIMIRF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,RunAim,LF,ECA_ANIM_COMBATRUNAIMILF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,RunAim,R,ECA_ANIM_COMBATRUNAIMIR(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,RunAim,L,ECA_ANIM_COMBATRUNAIMIL(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,RunAim,RB,ECA_ANIM_COMBATRUNAIMIRB(State,Stance),RTMState,RunBDying); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,RunAim,LB,ECA_ANIM_COMBATRUNAIMILB(State,Stance),RTMState,RunBDying); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,RunAim,B,ECA_ANIM_COMBATRUNAIMIB(State,Stance),RTMState,RunBDying)
				// Base Combat Sprint
					#define ECA_ANIM_COMBATSPRINTBASE(StateConst,State,Stance,RTMState,DyingI) \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Sprint,F,ECA_ANIM_COMBATSPRINTIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Sprint,RF,ECA_ANIM_COMBATSPRINTIRF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Sprint,LF,ECA_ANIM_COMBATSPRINTILF(State,Stance),RTMState,DyingI)
			// walk, run etc... (all dir inc. forward and variants)
				// Safe Walk
					#define ECA_ANIM_SAFEWALK(StateConst,State,Stance,RTMState,DyingI) \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Walk,F,ECA_ANIM_SAFEWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_SAFEWALKBASE(StateConst,State,Stance,RTMState,DyingI)
				// Safe Walk 2 var
					#define ECA_ANIM_SAFEWALK2VAR(StateConst,State,Stance,RTMState,DyingI) \
						ECA_ANIM_ALLRUNDIRVARBASE(StateConst,State,Stance,Walk,F,ECA_ANIM_VARLIST2(State,Stance,WalkF,,_V,,0.5),RTMState); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,1,ECA_ANIM_SAFEWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,2,ECA_ANIM_SAFEWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_SAFEWALKBASE(StateConst,State,Stance,RTMState,DyingI)
				// Safe Walk 3 var
					#define ECA_ANIM_SAFEWALK3VAR(StateConst,State,Stance,RTMState,DyingI) \
						ECA_ANIM_ALLRUNDIRVARBASE(StateConst,State,Stance,Walk,F,ECA_ANIM_VARLIST3(State,Stance,WalkF,,_V,,0.33),RTMState); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,1,ECA_ANIM_SAFEWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,2,ECA_ANIM_SAFEWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,3,ECA_ANIM_SAFEWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_SAFEWALKBASE(StateConst,State,Stance,RTMState,DyingI)
				// Safe Walk 4 var
					#define ECA_ANIM_SAFEWALK4VAR(StateConst,State,Stance,RTMState,DyingI) \
						ECA_ANIM_ALLRUNDIRVARBASE(StateConst,State,Stance,Walk,F,ECA_ANIM_VARLIST4(State,Stance,WalkF,,_V,,0.25),RTMState); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,1,ECA_ANIM_SAFEWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,2,ECA_ANIM_SAFEWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,3,ECA_ANIM_SAFEWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,4,ECA_ANIM_SAFEWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_SAFEWALKBASE(StateConst,State,Stance,RTMState,DyingI)
				// Safe Walk 5 var
					#define ECA_ANIM_SAFEWALK5VAR(StateConst,State,Stance,RTMState,DyingI) \
						ECA_ANIM_ALLRUNDIRVARBASE(StateConst,State,Stance,Walk,F,ECA_ANIM_VARLIST5(State,Stance,WalkF,,_V,,0.2),RTMState); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,1,ECA_ANIM_SAFEWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,2,ECA_ANIM_SAFEWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,3,ECA_ANIM_SAFEWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,4,ECA_ANIM_SAFEWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,5,ECA_ANIM_SAFEWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_SAFEWALKBASE(StateConst,State,Stance,RTMState,DyingI)
				// Safe Run/Sprint
					#define ECA_ANIM_SAFERUN(StateConst,State,Stance,RTMState,RunFDying,RunBDying) \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Run,F,ECA_ANIM_SAFERUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_SAFERUNBASE(StateConst,State,Stance,RTMState,RunFDying,RunBDying); \
						ECA_ANIM_SAFESPRINTBASE(StateConst,State,Stance,RTMState,RunFDying)
				// Safe Run/Sprint 2 var
					#define ECA_ANIM_SAFERUN2VAR(StateConst,State,Stance,RTMState,RunFDying,RunBDying) \
						ECA_ANIM_ALLRUNDIRVARBASE(StateConst,State,Stance,Run,F,ECA_ANIM_VARLIST2(State,Stance,RunF,,_V,,0.5),RTMState); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,1,ECA_ANIM_SAFERUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,2,ECA_ANIM_SAFERUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_SAFERUNBASE(StateConst,State,Stance,RTMState,RunFDying,RunBDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,1,ECA_ANIM_SAFESPRINTIFVAR(State,Stance,1),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,2,ECA_ANIM_SAFESPRINTIFVAR(State,Stance,1),RTMState,RunFDying); \
						ECA_ANIM_SAFESPRINTBASE(StateConst,State,Stance,RTMState,RunFDying)
				// Safe Run/Sprint 3 var
					#define ECA_ANIM_SAFERUN3VAR(StateConst,State,Stance,RTMState,RunFDying,RunBDying) \
						ECA_ANIM_ALLRUNDIRVARBASE(StateConst,State,Stance,Run,F,ECA_ANIM_VARLIST3(State,Stance,RunF,,_V,,0.33),RTMState); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,1,ECA_ANIM_SAFERUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,2,ECA_ANIM_SAFERUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,3,ECA_ANIM_SAFERUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_SAFERUNBASE(StateConst,State,Stance,RTMState,RunFDying,RunBDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,1,ECA_ANIM_SAFESPRINTIFVAR(State,Stance,1),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,2,ECA_ANIM_SAFESPRINTIFVAR(State,Stance,2),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,3,ECA_ANIM_SAFESPRINTIFVAR(State,Stance,3),RTMState,RunFDying); \
						ECA_ANIM_SAFESPRINTBASE(StateConst,State,Stance,RTMState,RunFDying)
				// Safe Run4/Sprint var
					#define ECA_ANIM_SAFERUN4VAR(StateConst,State,Stance,RTMState,RunFDying,RunBDying) \
						ECA_ANIM_ALLRUNDIRVARBASE(StateConst,State,Stance,Run,F,ECA_ANIM_VARLIST4(State,Stance,RunF,,_V,,0.25),RTMState); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,1,ECA_ANIM_SAFERUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,2,ECA_ANIM_SAFERUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,3,ECA_ANIM_SAFERUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,4,ECA_ANIM_SAFERUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_SAFERUNBASE(StateConst,State,Stance,RTMState,RunFDying,RunBDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,1,ECA_ANIM_SAFESPRINTIFVAR(State,Stance,1),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,2,ECA_ANIM_SAFESPRINTIFVAR(State,Stance,2),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,3,ECA_ANIM_SAFESPRINTIFVAR(State,Stance,3),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,4,ECA_ANIM_SAFESPRINTIFVAR(State,Stance,4),RTMState,RunFDying); \
						ECA_ANIM_SAFESPRINTBASE(StateConst,State,Stance,RTMState,RunFDying)
				// Safe Run5/Sprint var
					#define ECA_ANIM_SAFERUN5VAR(StateConst,State,Stance,RTMState,RunFDying,RunBDying) \
						ECA_ANIM_ALLRUNDIRVARBASE(StateConst,State,Stance,Run,F,ECA_ANIM_VARLIST5(State,Stance,RunF,,_V,,0.2),RTMState); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,1,ECA_ANIM_SAFERUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,2,ECA_ANIM_SAFERUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,3,ECA_ANIM_SAFERUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,4,ECA_ANIM_SAFERUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,5,ECA_ANIM_SAFERUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_SAFERUNBASE(StateConst,State,Stance,RTMState,RunFDying,RunBDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,1,ECA_ANIM_SAFESPRINTIFVAR(State,Stance,1),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,2,ECA_ANIM_SAFESPRINTIFVAR(State,Stance,2),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,3,ECA_ANIM_SAFESPRINTIFVAR(State,Stance,3),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,4,ECA_ANIM_SAFESPRINTIFVAR(State,Stance,4),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,5,ECA_ANIM_SAFESPRINTIFVAR(State,Stance,5),RTMState,RunFDying); \
						ECA_ANIM_SAFESPRINTBASE(StateConst,State,Stance,RTMState,RunFDying)
				// Combat Walk
					#define ECA_ANIM_COMBATWALK(StateConst,State,Stance,RTMState,DyingI) \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Walk,F,ECA_ANIM_COMBATWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_COMBATWALKBASE(StateConst,State,Stance,RTMState,DyingI)
				// Combat Walk 2 var
					#define ECA_ANIM_COMBATWALK2VAR(StateConst,State,Stance,RTMState,DyingI) \
						ECA_ANIM_ALLRUNDIRVARBASE(StateConst,State,Stance,Walk,F,ECA_ANIM_VARLIST2(State,Stance,WalkF,,_V,,0.5),RTMState); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,1,ECA_ANIM_COMBATWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,2,ECA_ANIM_COMBATWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_COMBATWALKBASE(StateConst,State,Stance,RTMState,DyingI)
				// Combat Walk 3 var
					#define ECA_ANIM_COMBATWALK3VAR(StateConst,State,Stance,RTMState,DyingI) \
						ECA_ANIM_ALLRUNDIRVARBASE(StateConst,State,Stance,Walk,F,ECA_ANIM_VARLIST3(State,Stance,WalkF,,_V,,0.33),RTMState); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,1,ECA_ANIM_COMBATWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,2,ECA_ANIM_COMBATWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,3,ECA_ANIM_COMBATWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_COMBATWALKBASE(StateConst,State,Stance,RTMState,DyingI)
				// Combat Walk 4 var
					#define ECA_ANIM_COMBATWALK4VAR(StateConst,State,Stance,RTMState,DyingI) \
						ECA_ANIM_ALLRUNDIRVARBASE(StateConst,State,Stance,Walk,F,ECA_ANIM_VARLIST4(State,Stance,WalkF,,_V,,0.25),RTMState); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,1,ECA_ANIM_COMBATWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,2,ECA_ANIM_COMBATWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,3,ECA_ANIM_COMBATWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,4,ECA_ANIM_COMBATWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_COMBATWALKBASE(StateConst,State,Stance,RTMState,DyingI)
				// Combat Walk 5 var
					#define ECA_ANIM_COMBATWALK5VAR(StateConst,State,Stance,RTMState,DyingI) \
						ECA_ANIM_ALLRUNDIRVARBASE(StateConst,State,Stance,Walk,F,ECA_ANIM_VARLIST5(State,Stance,WalkF,,_V,,0.2),RTMState); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,1,ECA_ANIM_COMBATWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,2,ECA_ANIM_COMBATWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,3,ECA_ANIM_COMBATWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,4,ECA_ANIM_COMBATWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Walk,F,5,ECA_ANIM_COMBATWALKIF(State,Stance),RTMState,DyingI); \
						ECA_ANIM_COMBATWALKBASE(StateConst,State,Stance,RTMState,DyingI)
				// Combat Run/Sprint
					#define ECA_ANIM_COMBATRUN(StateConst,State,Stance,RTMState,RunFDying,RunBDying) \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,Run,F,ECA_ANIM_COMBATRUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_COMBATRUNBASE(StateConst,State,Stance,RTMState,RunFDying,RunBDying); \
						ECA_ANIM_COMBATSPRINTBASE(StateConst,State,Stance,RTMState,RunFDying)
				// Combat Run/Sprint 2 var
					#define ECA_ANIM_COMBATRUN2VAR(StateConst,State,Stance,RTMState,RunFDying,RunBDying) \
						ECA_ANIM_ALLRUNDIRVARBASE(StateConst,State,Stance,Run,F,ECA_ANIM_VARLIST2(State,Stance,RunF,,_V,,0.5),RTMState); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,1,ECA_ANIM_COMBATRUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,2,ECA_ANIM_COMBATRUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_COMBATRUNBASE(StateConst,State,Stance,RTMState,RunFDying,RunBDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,1,ECA_ANIM_COMBATSPRINTIFVAR(State,Stance,1),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,2,ECA_ANIM_COMBATSPRINTIFVAR(State,Stance,2),RTMState,RunFDying); \
						ECA_ANIM_COMBATSPRINTBASE(StateConst,State,Stance,RTMState,RunFDying)
				// Combat Run/Sprint 3 var
					#define ECA_ANIM_COMBATRUN3VAR(StateConst,State,Stance,RTMState,RunFDying,RunBDying) \
						ECA_ANIM_ALLRUNDIRVARBASE(StateConst,State,Stance,Run,F,ECA_ANIM_VARLIST3(State,Stance,RunF,,_V,,0.33),RTMState); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,1,ECA_ANIM_COMBATRUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,2,ECA_ANIM_COMBATRUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,3,ECA_ANIM_COMBATRUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_COMBATRUNBASE(StateConst,State,Stance,RTMState,RunFDying,RunBDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,1,ECA_ANIM_COMBATSPRINTIFVAR(State,Stance,1),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,2,ECA_ANIM_COMBATSPRINTIFVAR(State,Stance,2),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,3,ECA_ANIM_COMBATSPRINTIFVAR(State,Stance,3),RTMState,RunFDying); \
						ECA_ANIM_COMBATSPRINTBASE(StateConst,State,Stance,RTMState,RunFDying)
				// Combat Run4/Sprint var
					#define ECA_ANIM_COMBATRUN4VAR(StateConst,State,Stance,RTMState,RunFDying,RunBDying) \
						ECA_ANIM_ALLRUNDIRVARBASE(StateConst,State,Stance,Run,F,ECA_ANIM_VARLIST4(State,Stance,RunF,,_V,,0.25),RTMState); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,1,ECA_ANIM_COMBATRUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,2,ECA_ANIM_COMBATRUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,3,ECA_ANIM_COMBATRUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,4,ECA_ANIM_COMBATRUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_COMBATRUNBASE(StateConst,State,Stance,RTMState,RunFDying,RunBDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,1,ECA_ANIM_COMBATSPRINTIFVAR(State,Stance,1),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,2,ECA_ANIM_COMBATSPRINTIFVAR(State,Stance,2),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,3,ECA_ANIM_COMBATSPRINTIFVAR(State,Stance,3),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,4,ECA_ANIM_COMBATSPRINTIFVAR(State,Stance,4),RTMState,RunFDying); \
						ECA_ANIM_COMBATSPRINTBASE(StateConst,State,Stance,RTMState,RunFDying)
				// Combat Run5/Sprint var
					#define ECA_ANIM_COMBATRUN5VAR(StateConst,State,Stance,RTMState,RunFDying,RunBDying) \
						ECA_ANIM_ALLRUNDIRVARBASE(StateConst,State,Stance,Run,F,ECA_ANIM_VARLIST5(State,Stance,RunF,,_V,,0.2),RTMState); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,1,ECA_ANIM_COMBATRUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,2,ECA_ANIM_COMBATRUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,3,ECA_ANIM_COMBATRUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,4,ECA_ANIM_COMBATRUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Run,F,5,ECA_ANIM_COMBATRUNIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_COMBATRUNBASE(StateConst,State,Stance,RTMState,RunFDying,RunBDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,1,ECA_ANIM_COMBATSPRINTIFVAR(State,Stance,1),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,2,ECA_ANIM_COMBATSPRINTIFVAR(State,Stance,2),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,3,ECA_ANIM_COMBATSPRINTIFVAR(State,Stance,3),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,4,ECA_ANIM_COMBATSPRINTIFVAR(State,Stance,4),RTMState,RunFDying); \
						ECA_ANIM_ALLRUNDIRVAR(StateConst,State,Stance,Sprint,F,5,ECA_ANIM_COMBATSPRINTIFVAR(State,Stance,5),RTMState,RunFDying); \
						ECA_ANIM_COMBATSPRINTBASE(StateConst,State,Stance,RTMState,RunFDying)
				// Combat RunAim
					#define ECA_ANIM_COMBATRUNAIM(StateConst,State,Stance,RTMState,RunFDying,RunBDying) \
						ECA_ANIM_ALLRUNDIR(StateConst,State,Stance,RunAim,F,ECA_ANIM_COMBATRUNAIMIF(State,Stance),RTMState,RunFDying); \
						ECA_ANIM_COMBATRUNAIMBASE(StateConst,State,Stance,RTMState,RunFDying,RunBDying)

	// ============================================================================
	//							run related transitions
	// ============================================================================
			// Base Classes
				#define ECA_ANIM_ALLRUNDIRTOSTANCE(StateConst,State,Stance,StanceTo,Name,Dir,RTMState,DyingI) \
					class ##State##Stance##Name##Dir##To##StanceTo##: RTM_##RTMState##Stance##Name##Dir## \
					{ \
						actions=##State##Stance##Name##Dir##Actions; \
						interpolationSpeed=1; \
						interpolateTo[]={##State##StanceTo##Name##Dir##,0.5,DyingI}; \
						interpolateFrom[]={##State##Stance##Name##Dir##,0.5}; \
						looped=1; \
						StateConst \
					}
			// Base Class all Dir
				#define ECA_ANIM_ALLRUNTOSTANCE(StateConst,State,Stance,StanceTo,Name,RTMState,DyingF,DyingB) \
					ECA_ANIM_ALLRUNDIRTOSTANCE(StateConst,State,Stance,StanceTo,Name,F,RTMState,DyingF); \
					ECA_ANIM_ALLRUNDIRTOSTANCE(StateConst,State,Stance,StanceTo,Name,RF,RTMState,DyingF); \
					ECA_ANIM_ALLRUNDIRTOSTANCE(StateConst,State,Stance,StanceTo,Name,LF,RTMState,DyingF); \
					ECA_ANIM_ALLRUNDIRTOSTANCE(StateConst,State,Stance,StanceTo,Name,R,RTMState,DyingF); \
					ECA_ANIM_ALLRUNDIRTOSTANCE(StateConst,State,Stance,StanceTo,Name,L,RTMState,DyingF); \
					ECA_ANIM_ALLRUNDIRTOSTANCE(StateConst,State,Stance,StanceTo,Name,RB,RTMState,DyingB); \
					ECA_ANIM_ALLRUNDIRTOSTANCE(StateConst,State,Stance,StanceTo,Name,LB,RTMState,DyingB); \
					ECA_ANIM_ALLRUNDIRTOSTANCE(StateConst,State,Stance,StanceTo,Name,B,RTMState,DyingB)
			// Walk Stance To Walk StanceTo
				#define ECA_ANIM_WALKTO(StateConst,State,Stance,StanceTo,RTMState,DyingI) \
					ECA_ANIM_ALLRUNTOSTANCE(StateConst,State,Stance,StanceTo,Walk,RTMState,DyingI,DyingI)
			// Run Stance To Run StanceTo
				#define ECA_ANIM_RUNTO(StateConst,State,Stance,StanceTo,RTMState,DyingF,DyingB) \
					ECA_ANIM_ALLRUNTOSTANCE(StateConst,State,Stance,StanceTo,Run,RTMState,DyingF,DyingB)
			// RunAim Stance To RunAim StanceTo
				#define ECA_ANIM_RUNAIMTO(StateConst,State,Stance,StanceTo,RTMState,DyingF,DyingB) \
					ECA_ANIM_ALLRUNTOSTANCE(StateConst,State,Stance,StanceTo,RunAim,RTMState,DyingF,DyingB)


	// ============================================================================
	//							Crawl anims
	// ============================================================================
	
		// Crawl Interpolations
			#define ECA_ANIM_CRAWLI(State) \
				##State##Lying,0.1,##State##LyingCrawlF,0.1,##State##LyingCrawlRF,0.1, \
				##State##LyingCrawlLF,0.1,##State##LyingCrawlR,0.1,##State##LyingCrawlL,0.1, \
				##State##LyingCrawlRB,0.1,##State##LyingCrawlLB,0.1,##State##LyingCrawlB,0.1
		// CrawlFast Interpolations
			#define ECA_ANIM_CRAWLFASTI(State)		##State##LyingCrawlF,0.1
		// Crawl all dir no var
			#define ECA_ANIM_ALLCRAWLDIR(StateConst,State,Name,Dir,Interpolation,RTMState,DyingI) \
				class ##State##Lying##Name##Dir##: RTM_##RTMState##Lying##Name##Dir## \
				{ \
					actions=##State##LyingActions; \
					interpolationSpeed=12; \
					interpolateTo[]={##Interpolation##,DyingI}; \
					interpolateFrom[]={##Interpolation##}; \
					connectTo[]={##State##Lying##Name##Dir##,0.1}; \
					looped=1; \
					StateConst \
				}
		// Crawl, CrawlFast
				#define ECA_ANIM_CRAWL(StateConst,State,RTMState,DyingI) \
					ECA_ANIM_ALLCRAWLDIR(StateConst,State,CrawlFast,F,ECA_ANIM_CRAWLFASTI(State),RTMState,DyingI); \
					ECA_ANIM_ALLCRAWLDIR(StateConst,State,Crawl,F,ECA_ANIM_CRAWLI(State),RTMState,DyingI); \
					ECA_ANIM_ALLCRAWLDIR(StateConst,State,Crawl,RF,ECA_ANIM_CRAWLI(State),RTMState,DyingI); \
					ECA_ANIM_ALLCRAWLDIR(StateConst,State,Crawl,LF,ECA_ANIM_CRAWLI(State),RTMState,DyingI); \
					ECA_ANIM_ALLCRAWLDIR(StateConst,State,Crawl,R,ECA_ANIM_CRAWLI(State),RTMState,DyingI); \
					ECA_ANIM_ALLCRAWLDIR(StateConst,State,Crawl,L,ECA_ANIM_CRAWLI(State),RTMState,DyingI); \
					ECA_ANIM_ALLCRAWLDIR(StateConst,State,Crawl,RB,ECA_ANIM_CRAWLI(State),RTMState,DyingI); \
					ECA_ANIM_ALLCRAWLDIR(StateConst,State,Crawl,LB,ECA_ANIM_CRAWLI(State),RTMState,DyingI); \
					ECA_ANIM_ALLCRAWLDIR(StateConst,State,Crawl,B,ECA_ANIM_CRAWLI(State),RTMState,DyingI)

	// ============================================================================
	//							neutral animations
	// ============================================================================
	
		// neutral base class. all the neutral anims connect to and from this anim
			#define ECA_ANIM_NEUTRALBASE(StateConst,State,Stance,DyingC) \
				class ##State##Stance##Neutral: RTM_Civil##Stance##Default \
				{ \
					actions=##State##Stance##Actions; \
					connectTo[]={DyingC}; \
					StateConst \
				}
		
		// get in/out of vehicle
			#define ECA_ANIM_NEUTRALGETINOUT(StateConst,State,DyingI) \
			class ##State##StandGetInCar:RTM_CivilStandGetInCar \
				{ \
				actions=##State##StandNeutralActions; \
				connectFrom[]={##State##StandNeutral,1}; \
				interpolateTo[]={DyingI}; \
				StateConst \
				}; \
			class ##State##StandGetInTank:RTM_CivilStandGetInTank \
				{ \
				actions=##State##StandNeutralActions; \
				connectFrom[]={##State##StandNeutral,1}; \
				interpolateTo[]={DyingI}; \
				StateConst \
				}; \
			class ##State##StandGetOutTank:RTM_CivilStandGetOutTank \
				{ \
				actions=##State##StandNeutralActions; \
				connectTo[]={##State##StandNeutral,1}; \
				interpolateTo[]={DyingI}; \
				StateConst \
				}
			
		// ladder anims
			#define ECA_ANIM_NEUTRALLADDER(StateConst,State,DyingI) \
			class ##State##StandLadderStatic: RTM_CivilStandLadderStatic \
			{ \
				actions=##State##StandLadderActions; \
				duty=-1; \
				legs=legsNo; \
				onLadder=1; \
				StateConst \
			}; \
			class ##State##StandLadderUpStart: RTM_CivilStandLadderUpStart \
			{ \
				actions=##State##StandLadderUpActions; \
				duty=-0.5; \
				legs=legsNo; \
				onLadder=1; \
				connectFrom[]={##State##StandNeutral,1}; \
				connectTo[]={##State##StandLadderStatic,1}; \
				StateConst \
			}; \
			class ##State##StandLadderUpLoop: RTM_CivilStandLadderUpLoop \
			{ \
				actions=##State##StandLadderUpActions; \
				duty=-0.5; \
				legs=legsNo; \
				onLadder=1; \
				looped=1; \
				interpolateWith[]={##State##StandLadderStatic,1}; \
				StateConst \
			}; \
			class ##State##StandLadderUpEnd: RTM_CivilStandLadderUpEnd \
			{ \
				actions=##State##StandNeutralActions; \
				legs=legsNo; \
				onLadder=0; \
				connectFrom[]={##State##StandLadderStatic,1}; \
				connectTo[]={##State##StandNeutral,1}; \
				StateConst \
			}; \
			class ##State##StandLadderDownStart: RTM_CivilStandLadderDownStart \
			{ \
				actions=##State##StandLadderDownActions; \
				duty =-0.5; \
				legs=legsNo; \
				onLadder=1; \
				connectFrom[]={##State##StandNeutral,1}; \
				connectTo[]={##State##StandLadderStatic,1}; \
				StateConst \
			}; \
			class ##State##StandLadderDownLoop: RTM_CivilStandLadderDownLoop \
			{ \
				actions=##State##StandLadderDownActions; \
				duty=-0.5; \
				legs=legsNo; \
				onLadder=1; \
				looped=1; \
				interpolateWith[]={##State##LadderStatic,1}; \
				StateConst \
			}; \
			class ##State##StandLadderDownEnd: RTM_CivilStandLadderDownEnd \
			{ \
				actions=##State##StandNeutralActions; \
				duty=-0.5; \
				legs=legsNo; \
				onLadder=0; \
				connectFrom[]={##State##StandLadderStatic,1}; \
				connectTo[]={##State##StandNeutral,0.9}; \
				StateConst \
			}
		
		// all neutral anims for all stance of one state
		#define ECA_ANIM_ALLNEUTRAL(StateConst,State,StandDyingI,StandDyingC,CrouchDyingI,CrouchDyingC,LyingDyingI,LyingDyingC) \
		ECA_ANIM_NEUTRALBASE(StateConst,State,Stand,StandDyingC); \
			ECA_ANIM_NEUTRALGETINOUT(StateConst,State,StandDyingI); \
			ECA_ANIM_NEUTRALLADDER(StateConst,State,StandDyingI); \
		ECA_ANIM_NEUTRALBASE(StateConst,State,Crouch,CrouchDyingC); \
		ECA_ANIM_NEUTRALBASE(StateConst,State,Lying,LyingDyingC)
	
	
	
	
	
	
	
	
	
	