Results 1 to 10 of 10

Thread: Coding custom gun into mohaa

  1. #1

    Default Coding custom gun into mohaa

    Hey guys, I need help.

    I'm currently trying to insert a completely independent gun into mohaa, so far the only way that I know to ad a gun at all is by associating it with an already existing weapon. Like sten_smg.tik but inside the file it has the same name and rank of the thompson.

    the gun in question is the moschetto, I edited the mike torso and created a seperate fps_anims.txt for it. The game recognizes that there is a submachinegun in the inventory but when I hit that slot to bring the gun up the map crashes and sends me to the main menu.

    In the console said "possible infinite state loop".

    I've been melting my brain over it but since scripting isn't my strong side I would like to ask your help in detecting the possible state loop.

    The edited mike_torso:

    Code:
    	// ======================================================= //
    	// Action state machine for Mike Powell, the hero of MoH PC //
    	// ======================================================= //
    
    // Authored by Carl glave and Michael Boon, 5-23-2000
    
    // The action state machine takes care of
    // a) all torso-only animations which are layer on top of leg animations
    // b) most full-body animations
    // c) which states are to take their full-body animations from the leg state
    //    machine.
    // The states which control only torso animations have "movetype legs" and 
    // animations under the token "action".  This allows the leg state to continue
    // controlling the leg animations.  The states which control the whole body have
    // movetype not legs and animations under the token "action". This overrides the
    // leg state machine. States such as STAND, below, which have "none" specified
    // as the torso animation, take the torso animation from the leg animaiton
    // specified in the legs state machine.
    
    //==============================================================================
    //==============================================================================
    //
    // Stand (really means not doing an action)
    //
    //==============================================================================
    
    state STAND
    {
    	movetype legs
    
    	camera behind
    
    	entrycommands
    	{
    		viewmodelanim idle
    	}
    	
    	action
    	{
    		none : default // no torso animation
    	}
    
    	states
    	{
    		KILLED					: KILLED
    		PAIN					: PAIN
    
    		VEHICLE_START			: IS_USING_VEHICLE
    		TURRET_START			: IS_USING_TURRET
    
    		// if we're on a ladder, make sure we're climbing the ladder
    		LADDER_IDLE_LEFT		: ON_LADDER
    
    		// Some grab and hang stuff will be implemented in the final game, probably 
    		// not all of this, but it's in here as a placeholder.
    //		CLIMB_LADDER			: ONGROUND +FORWARD !BACKWARD AT_LADDER
    
    //		CLIMB_LADDER_IMPACT		: !ONGROUND FORWARD !BACKWARD AT_LADDER	// For grabbing onto walls when
    													// flying through the air
    	
    		// Using objects is dictated by the object being used.  The three objects 
    		// here are for objects which trigger interactive actions when touched, 
    		// for objects which the player uses (such as doors), and for when the 
    		// player tries to use an object that is not usable.
    //		USE_USEANIM				: ONGROUND TOUCHEDUSEANIM
    //		USE_USEANIM				: ONGROUND USE AT_USEANIM
    		USE_LADDER				: ONGROUND +USE AT_LADDER CHECK_HEIGHT "stand"
    //		USE_LADDER				: ONGROUND AT_LADDER // this is full auto use of ladders
    		// latch onto ladder in mid-air
    		USE_LADDER				: +USE AT_LADDER CHECK_HEIGHT "stand" // can also latch onto a ladder in mid-air
    		// auto use of ladder when at the bottom (AT_LADDER check is last because it does a trace)
    		USE_LADDER				: ONGROUND FORWARD LOOKING_UP "35" !PUTAWAYMAIN !NEW_WEAPON !RELOAD !ATTACK_PRIMARY !ATTACK_SECONDARY AT_LADDER CHECK_HEIGHT "stand"
    		// auto use of ladder when at the top (AT_LADDER check is last because it does a trace)
    		USE_LADDER				: ONGROUND FORWARD !LOOKING_UP "-35" !PUTAWAYMAIN !NEW_WEAPON !RELOAD !ATTACK_PRIMARY !ATTACK_SECONDARY AT_LADDER CHECK_HEIGHT "stand"
    //		GENERIC_USE				: ONGROUND +USE
    
    		// This is not functional for the prototype, but is here as a placeholder for
    		// future functionality.
    		// While the player can only fire weapons with his right hand, he can switch them 
    		// to his left if he wants to use an item with his left.  Gameplay-wise, this should 
    		// be the same as putting the weapon away, but it will create a nice graphical "cool 
    		// factor" which is always good in computer games.
    		// When we have two items out, the game code will flag them both as putaway, and we 
    		// need to put the right one away first, followed by the left.
    		PUTAWAY_MAIN			: PUTAWAYMAIN	// Basic put weapon away move.
    		RAISE_WEAPON			: NEW_WEAPON
    
    		RELOAD_WEAPON			: RELOAD
    	
    		CHECK_PRIMARY_ATTACK_SEMIAUTO	: +ATTACK_PRIMARY IS_WEAPON_SEMIAUTO "mainhand" IS_WEAPON_READY_TO_FIRE "mainhand"
    		CHECK_PRIMARY_ATTACK_FULLAUTO	: ATTACK_PRIMARY !IS_WEAPON_SEMIAUTO "mainhand" IS_WEAPON_READY_TO_FIRE "mainhand"
    		CHECK_SECONDARY_ATTACK			: +ATTACK_SECONDARY
    	}
    }
    
    //==============================================================================
    //==============================================================================
    //
    // Primary Attacks - Full Auto
    //
    //==============================================================================
    
    state CHECK_PRIMARY_ATTACK_FULLAUTO
    {
    	movetype legs
    
    	action
    	{
    		none : default // stop torso animation
    	}
    
    	states
    	{
    		STAND					: KILLED
    //		PAIN					: PAIN
    	
    		STAND					: NEW_WEAPON
    		STAND					: RELOAD
    		STAND					: !IS_WEAPON_READY_TO_FIRE "mainhand"
    		
    //		ATTACK_PISTOL_PRIMARY	: IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "pistol"
    //		ATTACK_RIFLE_PRIMARY	: IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "rifle"
    //		CHARGE_ATTACK_GRENADE	: IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "grenade"
    		ATTACK_SMG_PRIMARY		: IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "smg"
    		ATTACK_SMG_PRIMARY		: IS_WEAPON_READY_TO_FIRE      "mainhand" "Moschetto"
    		ATTACK_MG_PRIMARY		: IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "mg"
    //		ATTACK_ITEM_PRIMARY		: IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "item"
    		
    //		STAND					: IS_WEAPON_ACTIVE "Error" // Generates an error if no appropriate
    															// attack state is chosen
    		STAND					: !ATTACK_PRIMARY
    	}
    }
    
    state ATTACK_SMG_PRIMARY
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim fire 1
    	}
    
    	action
    	{
    		mp40_stand_run_fire		: IS_WEAPON_ACTIVE "mainhand" "MP40" POSITION_TYPE "standing" MOVEMENT_TYPE "running"
    		mp40_crouch_run_fire	: IS_WEAPON_ACTIVE "mainhand" "MP40" POSITION_TYPE "crouching" MOVEMENT_TYPE "running"
    		mp40_crouch_fire		: IS_WEAPON_ACTIVE "mainhand" "MP40" POSITION_TYPE "crouching"
    		mp40_stand_fire			: IS_WEAPON_ACTIVE "mainhand" "MP40"
    
    		moschetto_stand_run_fire	: IS_WEAPON_ACTIVE "mainhand" "Moschetto" POSITION_TYPE "standing" MOVEMENT_TYPE "running"
    		moschetto_crouch_run_fire	: IS_WEAPON_ACTIVE "mainhand" "Moschetto" POSITION_TYPE "crouching" MOVEMENT_TYPE "running"
    		moschetto_crouch_fire		: IS_WEAPON_ACTIVE "mainhand" "Moschetto" POSITION_TYPE "crouching"
    		moschetto_stand_fire		: IS_WEAPON_ACTIVE "mainhand" "Moschetto"
    
    		smg_stand_run_fire		: POSITION_TYPE "standing" MOVEMENT_TYPE "running"
    		smg_crouch_run_fire		: POSITION_TYPE "crouching" MOVEMENT_TYPE "running"
    		smg_crouch_fire			: POSITION_TYPE "crouching"
    		smg_stand_fire			: default
    	}
    
    	states
    	{
    		STAND							: KILLED
    //		PAIN							: PAIN
    
    		STAND							: !ATTACK_PRIMARY ANIMDONE_TORSO 
    		STAND							: ANIMDONE_TORSO !IS_WEAPON_READY_TO_FIRE "mainhand"
    //		STAND							: RELOAD !ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
    		STAND							: RELOAD !ATTACK_PRIMARY
    //		STAND							: RELOAD !HAS_AMMO_IN_CLIP "mainhand" IS_WEAPON_READY_TO_FIRE "mainhand"
    		
    		CHECK_PRIMARY_ATTACK_FULLAUTO	: ATTACK_PRIMARY +IS_WEAPON_READY_TO_FIRE "mainhand"
    		CHECK_PRIMARY_ATTACK_FULLAUTO	: +ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
    	}
    }
    
    state ATTACK_MG_PRIMARY
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim fire 1
    	}
    
    	action
    	{
    		mp44_stand_run_fire		: IS_WEAPON_ACTIVE "mainhand" "StG 44" POSITION_TYPE "standing" MOVEMENT_TYPE "running"
    		mp44_crouch_run_fire	: IS_WEAPON_ACTIVE "mainhand" "StG 44" POSITION_TYPE "crouching" MOVEMENT_TYPE "running"
    		mp44_crouch_fire		: IS_WEAPON_ACTIVE "mainhand" "StG 44" POSITION_TYPE "crouching"
    		mp44_stand_fire			: IS_WEAPON_ACTIVE "mainhand" "StG 44"
    
    		mg_stand_run_fire		: POSITION_TYPE "standing" MOVEMENT_TYPE "running"
    		mg_crouch_run_fire		: POSITION_TYPE "crouching" MOVEMENT_TYPE "running"
    		mg_crouch_fire			: POSITION_TYPE "crouching"
    		mg_stand_fire			: default
    	}
    
    	states
    	{
    		STAND							: KILLED
    //		PAIN							: PAIN
    
    //		STAND							: !ATTACK_PRIMARY ANIMDONE_TORSO 
    //		STAND							: RELOAD !ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
    	
    		STAND							: !ATTACK_PRIMARY ANIMDONE_TORSO 
    		STAND							: ANIMDONE_TORSO !IS_WEAPON_READY_TO_FIRE "mainhand"
    //		STAND							: RELOAD !ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
    		STAND							: RELOAD !ATTACK_PRIMARY
    //		STAND							: RELOAD !HAS_AMMO_IN_CLIP "mainhand" IS_WEAPON_READY_TO_FIRE "mainhand"
    		
    		CHECK_PRIMARY_ATTACK_FULLAUTO	: ATTACK_PRIMARY +IS_WEAPON_READY_TO_FIRE "mainhand"
    		CHECK_PRIMARY_ATTACK_FULLAUTO	: +ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
    	}
    }
    
    //==============================================================================
    //==============================================================================
    //
    // Primary Attacks - Semi-Auto
    //
    //==============================================================================
    
    state CHECK_PRIMARY_ATTACK_SEMIAUTO
    {
    	movetype legs
    
    	action
    	{
    		none : default // stop torso animation
    	}
    
    	states
    	{
    		STAND					: KILLED
    //		PAIN					: PAIN
    	
    		STAND					: NEW_WEAPON
    		STAND					: RELOAD
    		STAND					: !IS_WEAPON_READY_TO_FIRE "mainhand"
    		
    		ATTACK_PISTOL_PRIMARY	: IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "pistol"
    		ATTACK_RIFLE_PRIMARY	: IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "rifle"
    		CHARGE_ATTACK_GRENADE	: IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "grenade"
    		ATTACK_ITEM_PRIMARY		: IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "item"
    		ATTACK_BAZOOKA_PRIMARY	: IS_WEAPON_ACTIVE "mainhand" "Bazooka"
    		ATTACK_BAZOOKA_PRIMARY	: IS_WEAPON_ACTIVE "mainhand" "Panzerschreck"
    		ATTACK_SHOTGUN_PRIMARY	: IS_WEAPON_ACTIVE "mainhand" "Shotgun"
    	
    //		STAND					: IS_WEAPON_ACTIVE "Error" // Generates an error if no appropriate
    											// attack state is chosen
    		STAND					: !ATTACK_PRIMARY
    	}
    }
    
    state ATTACK_RIFLE_PRIMARY
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim fire 1
    	}
    
    	action
    	{
    		// Fire from the hip when jogging,
    		// from the shoulder when walking or standing
    		rifle_stand_run_fire	: POSITION_TYPE "standing" MOVEMENT_TYPE "running"
    		rifle_crouch_run_fire	: POSITION_TYPE "crouching" MOVEMENT_TYPE "running"
    		rifle_stand_walk_fire	: POSITION_TYPE "standing" MOVEMENT_TYPE "walking"
    		rifle_crouch_fire		: POSITION_TYPE "crouching"
    		rifle_stand_fire		: default
    	}
    
    	states
    	{
    		STAND							: KILLED
    //		PAIN							: PAIN
    
    //		STAND							: !ATTACK_PRIMARY ANIMDONE_TORSO 
    		ATTACK_SPRINGFIELD_RECHAMBER	: ANIMDONE_TORSO IS_WEAPON_ACTIVE "mainhand" "Springfield '03 Sniper"
    		ATTACK_KAR98_RECHAMBER			: ANIMDONE_TORSO IS_WEAPON_ACTIVE "mainhand" "Mauser KAR 98K"
    		ATTACK_KAR98_RECHAMBER			: ANIMDONE_TORSO IS_WEAPON_ACTIVE "mainhand" "KAR98 - Sniper"		
    		STAND							: ANIMDONE_TORSO 
    		CHECK_PRIMARY_ATTACK_SEMIAUTO	: +ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
    	}
    }
    
    state ATTACK_SPRINGFIELD_RECHAMBER
    {
    	movetype legs
    	
    	entrycommands
    	{
    		viewmodelanim rechamber
    //		safezoom 0
    	}
    	
    //	exitcommands
    //	{
    //		safezoom 1
    //	}
    	
    	action
    	{
    		springfield_crouch_rechamber	: POSITION_TYPE "crouching"
    		springfield_stand_rechamber		: default
    	}
    	
    	states
    	{
    		STAND							: KILLED
    //		PAIN							: PAIN
    	
    		STAND							: ANIMDONE_TORSO 
    	}
    }
    
    state ATTACK_KAR98_RECHAMBER
    {
    	movetype legs
    	
    	entrycommands
    	{
    		viewmodelanim rechamber
    //		safezoom 0
    	}
    	
    //	exitcommands
    //	{
    //		safezoom 1
    //	}
    	
    	action
    	{
    		kar98_crouch_rechamber	: POSITION_TYPE "crouching"
    		kar98_stand_rechamber	: default
    	}
    	
    	states
    	{
    		STAND						: KILLED
    //		PAIN						: PAIN
    	
    		STAND						: ANIMDONE_TORSO 
    	}
    }
    
    state ATTACK_PISTOL_PRIMARY
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim fire 1
    	}
    
    	action
    	{
    		// Fire from the hip when jogging, from the shoulder when
    		// walking, or standing
    
    		pistol_silenced_stand_run_fire	: POSITION_TYPE "standing" MOVEMENT_TYPE "running" IS_WEAPON_ACTIVE "mainhand" "Hi-Standard Silenced"
    		pistol_silenced_crouch_run_fire	: POSITION_TYPE "crouching" MOVEMENT_TYPE "running" IS_WEAPON_ACTIVE "mainhand" "Hi-Standard Silenced"
    		pistol_silenced_crouch_fire		: POSITION_TYPE "crouching" IS_WEAPON_ACTIVE "mainhand" "Hi-Standard Silenced"
    		pistol_silenced_stand_fire		: IS_WEAPON_ACTIVE "mainhand" "Hi-Standard Silenced"
    
    		pistol_stand_run_fire	: POSITION_TYPE "standing" MOVEMENT_TYPE "running"
    		pistol_crouch_run_fire	: POSITION_TYPE "crouching" MOVEMENT_TYPE "running"
    		pistol_crouch_fire		: POSITION_TYPE "crouching"
    		pistol_stand_fire		: default
    	}
    
    	states
    	{
    		STAND							: KILLED
    //		PAIN							: PAIN
    
    //		STAND							: !ATTACK_PRIMARY ANIMDONE_TORSO 
    		STAND							: ANIMDONE_TORSO 
    		CHECK_PRIMARY_ATTACK_SEMIAUTO	: +ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
    
    		// allow pistol whip immediatly after firing
    		ATTACK_PISTOL_SECONDARY			: +ATTACK_SECONDARY IS_WEAPON_READY_TO_FIRE "mainhand"
    	}
    }
    
    state ATTACK_ITEM_PRIMARY
    {
    	movetype legs
    
    	entrycommands
    	{
    		weaponcommand mainhand anim fire
    	}
    	
    	states
    	{
    		STAND							: KILLED
    //		PAIN							: PAIN
    
    		STAND							: !ATTACK_PRIMARY
    		CHECK_PRIMARY_ATTACK_SEMIAUTO	: +ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
    	}
    }
    
    state ATTACK_BAZOOKA_PRIMARY
    {
    	movetype legs
    	
    	entrycommands
    	{
    		viewmodelanim fire 1
    	}
    	
    	action
    	{
    		bazooka_stand_run_fire	: POSITION_TYPE "standing" MOVEMENT_TYPE "running"
    		bazooka_crouch_run_fire	: POSITION_TYPE "crouching" MOVEMENT_TYPE "running"
    		bazooka_crouch_fire		: POSITION_TYPE "crouching"
    		bazooka_stand_fire		: default
    	}
    	
    	states
    	{
    		STAND							: KILLED
    //		PAIN							: PAIN
    
    		STAND							: !ATTACK_PRIMARY ANIMDONE_TORSO 
    		CHECK_PRIMARY_ATTACK_SEMIAUTO	: +ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
    	}
    }
    
    state ATTACK_SHOTGUN_PRIMARY
    {
    	movetype legs
    	
    	entrycommands
    	{
    		viewmodelanim fire 1
    	}
    	
    	action
    	{
    		shotgun_stand_run_fire	: POSITION_TYPE "standing" MOVEMENT_TYPE "running"
    		shotgun_crouch_run_fire	: POSITION_TYPE "crouching" MOVEMENT_TYPE "running"
    		shotgun_crouch_fire		: POSITION_TYPE "crouching"
    		shotgun_stand_fire		: default
    	}
    	
    	states
    	{
    		STAND							: KILLED
    //		PAIN							: PAIN
    
    		STAND							: !ATTACK_PRIMARY ANIMDONE_TORSO 
    		CHECK_PRIMARY_ATTACK_SEMIAUTO	: +ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
    	}
    }
    
    //==============================================================================
    //==============================================================================
    //
    // Secondary Attacks (Always Semi-Auto fire)
    //
    //==============================================================================
    state CHECK_SECONDARY_ATTACK
    {
    	movetype legs
    
    	action
    	{
    		none : default // no torso animation
    	}
    
    	states
    	{
    		STAND					: KILLED
    //		PAIN					: PAIN
    	
    		STAND					: RELOAD
    		
    		ATTACK_PISTOL_SECONDARY	: IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "pistol" "secondary"
    		
    //		ATTACK_RIFLE_2NDARY		: IS_WEAPON_ACTIVE "mainhand" "M1_Garand"
    //		ATTACK_GRENADE_2NDARY	: IS_WEAPON_ACTIVE "mainhand" "FragGrenade"
    //		ATTACK_RIFLE_2NDARY		: IS_WEAPON_ACTIVE "mainhand" "MP40"
    
    //		ATTACK_RIFLE_2NDARY		: IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "rifle" "secondary"
    
    		CHARGE_ATTACK_GRENADE_SECONDARY	: IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "grenade" "secondary"
    
    		PUT_AWAY_ITEM			: IS_WEAPON_ACTIVE "mainhand" "Spy Camera"
    		PUT_AWAY_ITEM			: IS_WEAPON_ACTIVE "mainhand" "Binoculars"
    	
    //		STAND					: IS_WEAPON_ACTIVE "Error"
    //		STAND					: !ATTACK_PRIMARY
    
    		STAND					: default
    	}
    }
    
    // Pistol whip for silent kills
    state ATTACK_PISTOL_SECONDARY
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim fire_secondary 1
    	}
    
    	action
    	{
    		pistol_butt	: default
    	}
    	
    	states
    	{
    		STAND	 	: KILLED
    		
    		STAND	 	: ANIMDONE_TORSO
    	}
    }
    
    // put away the item and pull out the last active weapon
    state PUT_AWAY_ITEM
    {
    	entrycommands
    	{
    //		deactivateweapon righthand
    		commanddelay 0.05 uselast
    	}
    
    	states
    	{
    		STAND		: default
    	}
    	
    //	exitcommands
    //	{
    //		uselast
    //	}
    }
    
    
    //==============================================================================
    //==============================================================================
    //
    // Primary Charge Up Attacks (grenades)
    //
    //==============================================================================
    
    state CHARGE_ATTACK_GRENADE
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim charge
    	}
    	
    	action
    	{
    		steilhandgranate_crouch_charge	: IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate" POSITION_TYPE "crouching"
    		steilhandgranate_stand_charge	: IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate"
    	
    		grenade_crouch_charge			: POSITION_TYPE "crouching"
    		grenade_stand_charge			: default
    	}
    
    	states
    	{
    //		RELEASE_ATTACK_GRENADE	: PAIN	// This would make the player 
    										// drop a grenade when he gets hit
    //		RELEASE_ATTACK_GRENADE	: KILLED
    		RELEASE_KILLED_FRAG		: KILLED
    		RELEASE_ATTACK_GRENADE	: !ATTACK_PRIMARY MIN_CHARGE_TIME_MET "mainhand"
    	}
    }
    
    state RELEASE_ATTACK_GRENADE
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim fire
    	}
    
    	action
    	{
    		steilhandgranate_crouch_fire	: IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate" POSITION_TYPE "crouching"
    		steilhandgranate_stand_fire		: IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate"
    	
    		grenade_crouch_fire				: POSITION_TYPE "crouching"
    		grenade_stand_fire				: default
    	}
    
    	states
    	{
    		RELEASE_KILLED_FRAG : KILLED MIN_CHARGE_TIME_MET "mainhand" // killed before the grenade was released
    		STAND	 			: KILLED
    
    		STAND 				: ANIMDONE_TORSO
    	}
    }
    
    state CHARGE_ATTACK_GRENADE_SECONDARY
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim charge
    	}
    	
    	action
    	{
    		steilhandgranate_crouch_charge_secondary	: IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate" POSITION_TYPE "crouching"
    		steilhandgranate_stand_charge_secondary		: IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate"
    	
    		grenade_crouch_charge_secondary				: POSITION_TYPE "crouching"
    		grenade_stand_charge_secondary				: default
    	}
    
    	states
    	{
    //		RELEASE_ATTACK_GRENADE_SECONDARY		: PAIN	// This would make the player 
    														// drop a grenade when he gets hit
    //		RELEASE_ATTACK_GRENADE_SECONDARY		: KILLED
    		RELEASE_KILLED_FRAG						: KILLED
    		RELEASE_ATTACK_GRENADE_SECONDARY		: !ATTACK_SECONDARY MIN_CHARGE_TIME_MET "mainhand"
    	}
    }
    
    state RELEASE_ATTACK_GRENADE_SECONDARY
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim fire
    	}
    
    	action
    	{
    		steilhandgranate_crouch_fire_secondary	: IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate" POSITION_TYPE "crouching"
    		steilhandgranate_stand_fire_secondary	: IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate"
    	
    		grenade_crouch_fire_secondary			: POSITION_TYPE "crouching"
    		grenade_stand_fire_secondary			: default
    	}
    
    	states
    	{
    		RELEASE_KILLED_FRAG : KILLED MIN_CHARGE_TIME_MET "mainhand" // killed before the grenade was released
    		STAND	 			: KILLED
    
    		STAND 				: ANIMDONE_TORSO
    	}
    }
    
    // killed while charging a frag grenade
    state RELEASE_KILLED_FRAG
    {
    	entrycommands
    	{
    		charge mainhand secondary // prep to drop the grenade
    		releasefire mainhand secondary // drop the grenade
    	}
    	
    	states
    	{
    		STAND	: default
    	}
    }
    
    
    //==============================================================================
    //==============================================================================
    //
    // PUTAWAY
    //
    //==============================================================================
    
    state PUTAWAY_MAIN
    {
    //	movetype legs
    
    	entrycommands
    	{
    		zoomoff
    		viewmodelanim putaway
    	}
    
    	states
    	{
    		// don't go through the putaway anim if 
    		// we're switching to another weapon
    		// only do if g_immediateswitch is set
    		PUTAWAY_SKIPANIM	: IMMEDIATE_SWITCH NEW_WEAPON
    	
    		PUTAWAY_PISTOL		: IS_WEAPONCLASS_ACTIVE "mainhand" "pistol"
    		PUTAWAY_RIFLE		: IS_WEAPONCLASS_ACTIVE "mainhand" "rifle"
    		PUTAWAY_GRENADE		: IS_WEAPONCLASS_ACTIVE "mainhand" "grenade"
    		PUTAWAY_SMG			: IS_WEAPONCLASS_ACTIVE "mainhand" "smg"
     	           PUTAWAY_SMG				: IS_WEAPON_ACTIVE      "mainhand" "Moschetto"
    		PUTAWAY_MG			: IS_WEAPONCLASS_ACTIVE "mainhand" "mg"
    //		PUTAWAY_PISTOL		: IS_WEAPONCLASS_ACTIVE "mainhand" "item" // hold all items like a pistol for now
    		PUTAWAY_HEAVY		: IS_WEAPONCLASS_ACTIVE "mainhand" "heavy"
    
    		// Catchall at the end		
    //		PUTAWAY_RIFLE		: default
    		PUTAWAY_NOANIM		: default
    	}
    }
    
    // called when we want to skip the putaway anim
    state PUTAWAY_SKIPANIM
    {
    	entrycommands
    	{
    		deactivateweapon righthand
    	}
    	
    	states
    	{
    		RAISE_WEAPON	: default
    	}
    }
    
    state PUTAWAY_NOANIM
    {
    	entrycommands
    	{
    		deactivateweapon righthand
    	}
    
    	states
    	{
    		RAISE_WEAPON	: NEW_WEAPON
    		STAND			: default
    	}
    }
    
    state PUTAWAY_PISTOL
    {
    //	movetype legs
    	
    	action
    	{
    		pistol_crouch_lower	: POSITION_TYPE "crouching"
    		pistol_stand_lower	: default
    	}
    	legs
    	{
    		pistol_stand_idle	: ON_LADDER
    	}
    	
    	states
    	{
    		STAND	 			: KILLED
    		
    		GET_ON_LADDER		: ANIMDONE_TORSO ON_LADDER
    		STAND	 			: ANIMDONE_TORSO
    	}
    }
    
    state PUTAWAY_RIFLE
    {
    //	movetype legs
    	
    	action
    	{
    		rifle_crouch_lower	: POSITION_TYPE "crouching"
    		rifle_stand_lower	: default
    	}
    	legs
    	{
    		rifle_stand_idle	: ON_LADDER
    	}
    	
    	states
    	{
    		STAND	 			: KILLED
    		
    		GET_ON_LADDER		: ANIMDONE_TORSO ON_LADDER
    		STAND	 			: ANIMDONE_TORSO
    	}
    }
    
    state PUTAWAY_SMG
    {
    //	movetype legs
    	
    	action
    	{
    		mp40_crouch_lower	: IS_WEAPON_ACTIVE "mainhand" "MP40" POSITION_TYPE "crouching"
    		mp40_stand_lower	: IS_WEAPON_ACTIVE "mainhand" "MP40"
    
    		moschetto_crouch_lower	      : IS_WEAPON_ACTIVE "mainhand" "Moschetto" POSITION_TYPE "crouching"
    		moschetto_stand_lower	      : IS_WEAPON_ACTIVE "mainhand" "Moschetto"
    
    		smg_crouch_lower	: POSITION_TYPE "crouching"
    		smg_stand_lower		: default
    	}
    	legs
    	{
    		mp40_stand_idle		: IS_WEAPON_ACTIVE "mainhand" "MP40" ON_LADDER
                    moschetto_stand_idle	: IS_WEAPON_ACTIVE "mainhand" "Moschetto" ON_LADDER
    
    		smg_stand_idle		: ON_LADDER
    	}
    	
    	states
    	{
    		STAND	 			: KILLED
    		
    		GET_ON_LADDER		: ANIMDONE_TORSO ON_LADDER
    		STAND	 			: ANIMDONE_TORSO
    	}
    }
    
    state PUTAWAY_MG
    {
    //	movetype legs
    	
    	action
    	{
    		mp44_crouch_lower	: IS_WEAPON_ACTIVE "mainhand" "StG 44" POSITION_TYPE "crouching"
    		mp44_stand_lower	: IS_WEAPON_ACTIVE "mainhand" "StG 44"
    
    		mg_crouch_lower		: POSITION_TYPE "crouching"
    		mg_stand_lower		: default
    	}
    	legs
    	{
    		mp44_stand_idle		: IS_WEAPON_ACTIVE "mainhand" "StG 44" ON_LADDER
    	
    		mg_stand_idle		: ON_LADDER
    	}
    	
    	states
    	{
    		STAND	 			: KILLED
    		
    		GET_ON_LADDER		: ANIMDONE_TORSO ON_LADDER
    		STAND	 			: ANIMDONE_TORSO
    	}
    }
    
    state PUTAWAY_GRENADE
    {
    //	movetype legs
    	
    	action
    	{
    		steilhandgranate_crouch_lower	: IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate" POSITION_TYPE "crouching"
    		steilhandgranate_stand_lower	: IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate"
    	
    		grenade_crouch_lower			: POSITION_TYPE "crouching"
    		grenade_stand_lower				: default
    	}
    	legs
    	{
    		steilhandgranate_stand_idle		: IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate"
    		
    		grenade_stand_idle				: ON_LADDER
    	}
    	
    	states
    	{
    		STAND	 				: KILLED
    		
    		GET_ON_LADDER			: ANIMDONE_TORSO ON_LADDER
    		STAND	 				: ANIMDONE_TORSO
    	}
    }
    
    state PUTAWAY_HEAVY
    {
    //	movetype legs
    	
    	action
    	{
    //		shotgun_crouch_lower	: POSITION_TYPE "crouching" IS_WEAPON_ACTIVE "mainhand" "Shotgun"
    //		shotgun_stand_lower		: IS_NEW_WEAPON "mainhand" "Shotgun"
    		shotgun_crouch_lower	: POSITION_TYPE "crouching" IS_WEAPON_ACTIVE "mainhand" "Shotgun"
    		shotgun_stand_lower		: IS_WEAPON_ACTIVE "mainhand" "Shotgun"
    		
    		bazooka_crouch_lower	: POSITION_TYPE "crouching"
    		bazooka_stand_lower		: default
    	}
    	legs
    	{
    		shotgun_stand_idle		: ON_LADDER IS_WEAPON_ACTIVE "mainhand" "Shotgun"
    		
    		bazooka_stand_idle		: ON_LADDER
    	}
    	
    	states
    	{
    		STAND	 				: KILLED
    		
    		GET_ON_LADDER			: ANIMDONE_TORSO ON_LADDER
    		STAND	 				: ANIMDONE_TORSO
    	}
    }
    
    //==============================================================================
    //==============================================================================
    //
    // RAISE_WEAPON
    //
    //==============================================================================
    
    state RAISE_WEAPON
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim pullout
    
    		// just to make sure nothing funky's 
    		// attached that shouldn't be.
    		correctweaponattachments
    	}
    
    	states
    	{
    		RAISE_PISTOL		: IS_NEW_WEAPONCLASS "mainhand" "pistol"
    		RAISE_RIFLE			: IS_NEW_WEAPONCLASS "mainhand" "rifle"
    		RAISE_GRENADE		: IS_NEW_WEAPONCLASS "mainhand" "grenade"
    		RAISE_SMG			: IS_NEW_WEAPONCLASS "mainhand" "smg"
                	RAISE_SMG			: IS_NEW_WEAPON      "mainhand" "Moschetto"
    		RAISE_MG			: IS_NEW_WEAPONCLASS "mainhand" "mg"
    //		RAISE_PISTOL		: IS_NEW_WEAPONCLASS "mainhand" "item" // hold all items like a pistol for now
    		RAISE_HEAVY			: IS_NEW_WEAPONCLASS "mainhand" "heavy"
    		RAISE_PAPERS		: IS_NEW_WEAPON "mainhand" "Papers"
    		
    //		RAISE_RIFLE			: default
    		RAISE_NOANIM		: default
    	}
    }
    
    state RAISE_NOANIM
    {
    	entrycommands
    	{
    		// delay the activation for a frame so that the player
    		// spends at least one frame without a weapon, thus 
    		// letting the legs state know that we've switched
    		commanddelay 0.05 activatenewweapon
    		commanddelay 0.05 forcetorsostate "STAND"
    	}
    
    //	states
    //	{
    //		STAND		: default
    //	}
    }
    
    state RAISE_RIFLE
    {
    	movetype legs
    	
    	action
    	{
    		rifle_crouch_raise	: POSITION_TYPE "crouching"
    		rifle_stand_raise	: default
    	}
    	
    	states
    	{
    		STAND	 			: KILLED
    		
    		STAND	 			: ANIMDONE_TORSO
    		
    		// allow immediate switching to a different weapon instead
    		RAISE_ABORT			: +NEW_WEAPON
    	}
    }
    
    state RAISE_SMG
    {
    	movetype legs
    	
    	action
    	{
    		moschetto_crouch_raise  	: IS_NEW_WEAPON "mainhand" "Moschetto" POSITION_TYPE "crouching"
    		moschetto_stand_raise		: IS_NEW_WEAPON "mainhand" "Moschetto" 
    
    		mp40_crouch_raise	: IS_NEW_WEAPON "mainhand" "MP40" POSITION_TYPE "crouching"
    		mp40_stand_raise	: IS_NEW_WEAPON "mainhand" "MP40"
    
    		smg_crouch_raise	: POSITION_TYPE "crouching"
    		smg_stand_raise		: default
    	}
    	
    	states
    	{
    		STAND	 			: KILLED
    		
    		STAND	 			: ANIMDONE_TORSO
    		
    		// allow immediate switching to a different weapon instead
    		RAISE_ABORT			: +NEW_WEAPON
    	}
    }
    
    state RAISE_MG
    {
    	movetype legs
    	
    	action
    	{
    		mp44_crouch_raise	: IS_NEW_WEAPON "mainhand" "StG 44" POSITION_TYPE "crouching"
    		mp44_stand_raise	: IS_NEW_WEAPON "mainhand" "StG 44"
    
    		mg_crouch_raise	: POSITION_TYPE "crouching"
    		mg_stand_raise	: default
    	}
    	
    	states
    	{
    		STAND	 			: KILLED
    		
    		STAND	 			: ANIMDONE_TORSO
    		
    		// allow immediate switching to a different weapon instead
    		RAISE_ABORT			: +NEW_WEAPON
    	}
    }
    
    state RAISE_PISTOL
    {
    	movetype legs
    	
    	action
    	{
    		pistol_crouch_raise	: POSITION_TYPE "crouching"
    		pistol_stand_raise	: default
    	}
    	
    	states
    	{
    		STAND	 			: KILLED
    		
    		STAND	 			: ANIMDONE_TORSO
    		
    		// allow immediate switching to a different weapon instead
    		RAISE_ABORT			: +NEW_WEAPON
    	}
    }
    
    state RAISE_GRENADE
    {
    	movetype legs
    	
    	action
    	{
    		steilhandgranate_crouch_raise	: IS_NEW_WEAPON "mainhand" "Stielhandgranate" POSITION_TYPE "crouching"
    		steilhandgranate_stand_raise	: IS_NEW_WEAPON "mainhand" "Stielhandgranate"
    	
    		grenade_crouch_raise	: POSITION_TYPE "crouching"
    		grenade_stand_raise		: default
    	}
    	
    	states
    	{
    		STAND	 			: KILLED
    		
    		STAND	 			: ANIMDONE_TORSO
    		
    		// allow immediate switching to a different weapon instead
    		RAISE_ABORT			: +NEW_WEAPON
    	}
    }
    
    state RAISE_HEAVY
    {
    	movetype legs
    	
    	action
    	{
    		shotgun_crouch_raise	: POSITION_TYPE "crouching" IS_NEW_WEAPON "mainhand" "Shotgun"
    		shotgun_stand_raise		: IS_NEW_WEAPON "mainhand" "Shotgun"
    		
    		bazooka_crouch_raise	: POSITION_TYPE "crouching"
    		bazooka_stand_raise		: default
    	}
    	
    	states
    	{
    		STAND	 			: KILLED
    		
    		STAND	 			: ANIMDONE_TORSO
    		
    		// allow immediate switching to a different weapon instead
    		RAISE_ABORT			: +NEW_WEAPON
    	}
    }
    
    state RAISE_PAPERS
    {
    	movetype legs
    	
    	action
    	{
    		show_papers	: default
    	}
    	
    	states
    	{
    		STAND		: KILLED
    		
    		STAND		: ANIMDONE_TORSO
    		
    		// allow immediate switching to a different weapon instead
    		RAISE_ABORT			: +NEW_WEAPON
    	}
    }
    
    // This state allows the player to abort the raising 
    // of a weapon in favor of a different new weapon.
    state RAISE_ABORT
    {
    	entrycommands
    	{
    		deactivateweapon righthand
    	}
    	
    	states
    	{
    		RAISE_WEAPON	: default
    	}
    }
    
    //==============================================================================
    //==============================================================================
    //
    // Weapon Reloading
    //
    //==============================================================================
    
    state RELOAD_WEAPON
    {
    	states
    	{
    		RELOAD_SPRINGFIELD	: IS_WEAPON_ACTIVE "mainhand" "Springfield '03 Sniper"
    		RELOAD_SPRINGFIELD	: IS_WEAPON_ACTIVE "mainhand" "KAR98 - Sniper"
    		RELOAD_SHOTGUN		: IS_WEAPON_ACTIVE "mainhand" "Shotgun"
    
    		RELOAD_PISTOL		: IS_WEAPONCLASS_ACTIVE "mainhand" "pistol"
    		RELOAD_RIFLE		: IS_WEAPONCLASS_ACTIVE "mainhand" "rifle"
    		RELOAD_SMG			: IS_WEAPONCLASS_ACTIVE "mainhand" "smg"
    		RELOAD_MG			: IS_WEAPONCLASS_ACTIVE "mainhand" "mg"
    		RELOAD_GRENADE		: IS_WEAPONCLASS_ACTIVE "mainhand" "grenade"
    //		RELOAD_PISTOL		: IS_WEAPONCLASS_ACTIVE "mainhand" "item" // hold all items like a pistol for now
    		RELOAD_HEAVY		: IS_WEAPONCLASS_ACTIVE "mainhand" "heavy"
    
    		RELOAD_RIFLE		: default	
    	}
    }
    
    state RELOAD_RIFLE
    {
    	movetype legs
    
    	entrycommands
    	{
    		zoomoff
    		viewmodelanim reload
    	}
    
    	action
    	{
    		kar98_reload		: IS_WEAPON_ACTIVE "mainhand" "Mauser KAR 98K"
    		rifle_reload		: default
    	}
    
    	states
    	{
    		STAND	 			: KILLED
    		STAND				: ANIMDONE_TORSO
    		RELOAD_INTERUPTED	: NEW_WEAPON
    		
    		RELOAD_INTERUPTED	: IS_USING_VEHICLE
    		RELOAD_INTERUPTED	: IS_USING_TURRET
    	}
    }
    
    state RELOAD_SMG
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim reload
    	}
    
    	action
    	{
    		mp40_reload			: IS_WEAPON_ACTIVE "mainhand" "MP40"
    	        moschetto_reload          	: IS_WEAPON_ACTIVE "mainhand" "Moschetto"
    		smg_reload			: default
    	}
    
    	states
    	{
    		STAND	 			: KILLED
    		STAND				: ANIMDONE_TORSO
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: NEW_WEAPON
    		
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: IS_USING_VEHICLE
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: IS_USING_TURRET
    	}
    }
    
    state RELOAD_MG
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim reload
    	}
    
    	action
    	{
    		mp44_reload			: IS_WEAPON_ACTIVE "mainhand" "StG 44"
    		mg_reload			: default
    	}
    
    	states
    	{
    		STAND	 			: KILLED
    		STAND				: ANIMDONE_TORSO
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: NEW_WEAPON
    		
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: IS_USING_VEHICLE
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: IS_USING_TURRET
    	}
    }
    
    state RELOAD_PISTOL
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim reload
    	}
    
    	action
    	{
    		p38_reload			: IS_WEAPON_ACTIVE "mainhand" "Walther P38"
    		histandard_reload	: IS_WEAPON_ACTIVE "mainhand" "Hi-Standard Silenced"
    		pistol_reload		: default
    	}
    
    	states
    	{
    		STAND	 			: KILLED
    		STAND				: ANIMDONE_TORSO
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: NEW_WEAPON
    		
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: IS_USING_VEHICLE
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: IS_USING_TURRET
    	}
    }
    
    state RELOAD_GRENADE
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim reload
    	}
    
    	action
    	{
    		steilhandgranate_reload	: IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate"
    		grenade_reload			: default
    	}
    
    	states
    	{
    		STAND	 				: KILLED
    		STAND					: ANIMDONE_TORSO
    //		RELOAD_INTERUPTED		: NEW_WEAPON // so quick, don't bother with interupting it
    	}
    }
    
    state RELOAD_HEAVY
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim reload
    	}
    
    	action
    	{
    		panzerschreck_reload	: IS_WEAPON_ACTIVE "mainhand" "Panzerschreck"
    		bazooka_reload			: default
    	}
    
    	states
    	{
    		STAND	 				: KILLED
    		STAND					: ANIMDONE_TORSO
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: NEW_WEAPON
    		
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: IS_USING_VEHICLE
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: IS_USING_TURRET
    	}
    }
    
    
    // start of reloading the springfield
    state RELOAD_SPRINGFIELD
    {
    	movetype legs
    
    	entrycommands
    	{
    		zoomoff
    		viewmodelanim reload
    	}
    
    	action
    	{
    		springfield_reload_start	: default
    	}
    
    	states
    	{
    		STAND	 					: KILLED
    		RELOAD_SPRINGFIELD_SINGLE	: ANIMDONE_TORSO
    		RELOAD_INTERUPTED			: NEW_WEAPON
    		
    		RELOAD_INTERUPTED	: IS_USING_VEHICLE
    		RELOAD_INTERUPTED	: IS_USING_TURRET
    	}
    }
    
    // loads in a single bullet
    state RELOAD_SPRINGFIELD_SINGLE
    {
    	movetype legs
    	
    	entrycommands
    	{
    		viewmodelanim reload_single 1
    	}
    	
    	action
    	{
    		springfield_reload_loop				: default
    	}
    	
    	states
    	{
    		STAND	 							: KILLED
    //		RELOAD_INTERUPTED					: NEW_WEAPON
    		RELOAD_SPRINGFIELD_END				: NEW_WEAPON
    		
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: IS_USING_VEHICLE
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: IS_USING_TURRET
    
    		// allow early out
    		RELOAD_SPRINGFIELD_END				: +ATTACK_PRIMARY HAS_AMMO_IN_CLIP "mainhand" !RELOAD
    		RELOAD_SPRINGFIELD_END				: PUTAWAYMAIN
    
    		RELOAD_SPRINGFIELD_CHECK_CONTINUE	: ANIMDONE_TORSO
    	}
    }
    
    // this check to see if the springfield should continue reloading, or if it's done
    state RELOAD_SPRINGFIELD_CHECK_CONTINUE
    {
    	movetype legs
    
    	entrycommands
    	{
    		reload // this makes the weapon want to continue reloading if it can
    	}
    	
    	action
    	{
    		none					: default
    	}
    	
    	states
    	{
    //		RELOAD_INTERUPTED			: NEW_WEAPON
    
    		RELOAD_SPRINGFIELD_SINGLE	: RELOAD
    		RELOAD_SPRINGFIELD_END		: default
    	}
    }
    
    // this is the end of the shotgun reload sequence
    state RELOAD_SPRINGFIELD_END
    {
    	movetype legs
    	
    	entrycommands
    	{
    		viewmodelanim reload_end
    
    		// just in case we interupted a shell reload
    //		correctweaponattachments
    	}
    	
    	action
    	{
    		springfield_reload_end	: default
    	}
    
    	states
    	{
    		STAND	 				: KILLED
    		STAND	 				: ANIMDONE_TORSO
    //		RELOAD_INTERUPTED		: NEW_WEAPON
    	}
    }
    
    
    // start of reloading the shotgun
    state RELOAD_SHOTGUN
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim reload
    	}
    
    	action
    	{
    		shotgun_reload_start	: default
    	}
    
    	states
    	{
    		STAND	 				: KILLED
    		RELOAD_SHOTGUN_SINGLE	: ANIMDONE_TORSO
    		RELOAD_INTERUPTED		: NEW_WEAPON
    		
    		RELOAD_INTERUPTED	: IS_USING_VEHICLE
    		RELOAD_INTERUPTED	: IS_USING_TURRET
    	}
    }
    
    // loads in a single shotgun shell
    state RELOAD_SHOTGUN_SINGLE
    {
    	movetype legs
    	
    	entrycommands
    	{
    		viewmodelanim reload_single 1
    	}
    	
    	action
    	{
    		shotgun_reload_loop				: default
    	}
    	
    	states
    	{
    		STAND	 						: KILLED
    //		RELOAD_INTERUPTED				: NEW_WEAPON
    		RELOAD_SHOTGUN_END				: NEW_WEAPON
    		
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: IS_USING_VEHICLE
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: IS_USING_TURRET
    
    		// allow early out
    		RELOAD_SHOTGUN_END				: +ATTACK_PRIMARY HAS_AMMO_IN_CLIP "mainhand" !RELOAD
    		RELOAD_SHOTGUN_END				: PUTAWAYMAIN
    		
    		RELOAD_SHOTGUN_CHECK_CONTINUE	: ANIMDONE_TORSO
    	}
    }
    
    // this check to see if the shotgun should continue reloading, or if it's done
    state RELOAD_SHOTGUN_CHECK_CONTINUE
    {
    	movetype legs
    
    	entrycommands
    	{
    		reload // this makes the weapon want to continue reloading if it can
    	}
    	
    	action
    	{
    		none					: default
    	}
    	
    	states
    	{
    		RELOAD_SHOTGUN_SINGLE	: RELOAD
    
    //		RELOAD_INTERUPTED		: NEW_WEAPON
    		
    		RELOAD_SHOTGUN_END		: default
    	}
    }
    
    // this is the end of the shotgun reload sequence
    state RELOAD_SHOTGUN_END
    {
    	movetype legs
    	
    	entrycommands
    	{
    		viewmodelanim reload_end
    		
    		// just in case we interupted a shell reload
    //		correctweaponattachments
    	}
    	
    	action
    	{
    		shotgun_reload_end	: default
    	}
    
    	states
    	{
    		STAND	 			: KILLED
    		STAND	 			: ANIMDONE_TORSO
    //		RELOAD_INTERUPTED	: NEW_WEAPON
    	}
    }
    
    state RELOAD_INTERUPTED
    {
    	states
    	{
    		STAND	: default
    	}
    }
    
    state RELOAD_INTERUPTED_CORRECT_ATTACHMENTS
    {
    	entrycommands
    	{
    		correctweaponattachments
    	}
    	
    	states
    	{
    		STAND	: default
    	}
    }
    
    //==============================================================================
    //==============================================================================
    //
    // Pain
    //
    //==============================================================================
    
    state PAIN
    {
    	movetype legs
    
     	entrycommands
    	{
    		// clear the pain out
    		nextpaintime 0.05
    	}
    
    	states
    	{
    		PAIN_SHOTGUN	: IS_WEAPON_ACTIVE "mainhand" "Shotgun"
    
    		PAIN_PISTOL		: IS_WEAPONCLASS_ACTIVE "mainhand" "pistol"
    		PAIN_RIFLE		: IS_WEAPONCLASS_ACTIVE "mainhand" "rifle"
    		PAIN_SMG		: IS_WEAPONCLASS_ACTIVE "mainhand" "smg"
    		PAIN_MG			: IS_WEAPONCLASS_ACTIVE "mainhand" "mg"
    		PAIN_GRENADE	: IS_WEAPONCLASS_ACTIVE "mainhand" "grenade"
    		PAIN_HEAVY		: IS_WEAPONCLASS_ACTIVE "mainhand" "heavy"
    
    		PAIN_RIFLE		: default	
    	}
    }
    
    state PAIN_SHOTGUN
    {
    	action
    	{
    		shotgun_pain_ducked		: POSITION_TYPE "crouching"
    		shotgun_pain			: default
    	}
    
    	states
    	{
    		PAIN_WAIT_TILL_DONE		: default
    	}
    
    }
    
    state PAIN_PISTOL
    {
    	action
    	{
    		pistol_pain_ducked		: POSITION_TYPE "crouching"
    		pistol_pain				: default
    	}
    
    	states
    	{
    		PAIN_WAIT_TILL_DONE		: default
    	}
    }
    
    state PAIN_RIFLE
    {
    	action
    	{
    		rifle_pain_ducked		: POSITION_TYPE "crouching"
    		rifle_pain				: default
    	}
    
    	states
    	{
    		PAIN_WAIT_TILL_DONE		: default
    	}
    }
    
    state PAIN_SMG
    {
    	action
    	{
    		smg_pain_ducked			: POSITION_TYPE "crouching"
    		smg_pain				: default
    	}
    
    	states
    	{
    		PAIN_WAIT_TILL_DONE		: default
    	}
    }
    
    state PAIN_MG
    {
    	action
    	{
    		mg_pain_ducked		: POSITION_TYPE "crouching"
    		mg_pain				: default
    	}
    
    	states
    	{
    		PAIN_WAIT_TILL_DONE		: default
    	}
    }
    
    state PAIN_GRENADE
    {
    	action
    	{
    		mg_pain_ducked		: POSITION_TYPE "crouching"
    		mg_pain				: default
    	}
    
    	states
    	{
    		PAIN_WAIT_TILL_DONE		: default
    	}
    }
    
    state PAIN_HEAVY
    {
    	action
    	{
    		mg_pain_ducked		: POSITION_TYPE "crouching"
    		mg_pain				: default
    	}
    
    	states
    	{
    		PAIN_WAIT_TILL_DONE		: default
    	}
    }
    
    state PAIN_WAIT_TILL_DONE
    {
    	states
    	{
    		KILLED							: KILLED
    		PAIN							: PAIN
    
    		// allow the player to interupt a pain animation with an attack
    		CHECK_PRIMARY_ATTACK_SEMIAUTO	: +ATTACK_PRIMARY IS_WEAPON_SEMIAUTO "mainhand" IS_WEAPON_READY_TO_FIRE "mainhand"
    		CHECK_PRIMARY_ATTACK_FULLAUTO	: ATTACK_PRIMARY !IS_WEAPON_SEMIAUTO "mainhand" IS_WEAPON_READY_TO_FIRE "mainhand"
    		CHECK_SECONDARY_ATTACK			: +ATTACK_SECONDARY
    		
    		STAND							: ANIMDONE_TORSO
    	}
    }
    
    //==============================================================================
    //
    // Death
    //
    //==============================================================================
    
    state KILLED
    {
    	movetype anim
    
    	entrycommands
    	{
    		nextpaintime -1 // allow all pain calls to work properly for death anim selection
    	}
    
    	states
    	{
    		EXPLOSION_KILLED	: PAIN_TYPE "explosion"
    		EXPLOSION_KILLED	: PAIN_TYPE "grenade"
    		EXPLOSION_KILLED	: PAIN_TYPE "rocket"
    		KILLED_GENERIC		: default
    	}
    }
    
    state KILLED_GENERIC
    {
    	states
    	{
    		KILLED_RUNNING		: FORWARD_VELOCITY "130"
    		KILLED_CROUCHING	: POSITION_TYPE "crouching"
    		KILLED_STANDING		: default
    	}
    }
    
    state KILLED_RUNNING
    {
    	action
    	{
    		death_knockedup		: PAIN_DIRECTION "front" PAIN_THRESHOLD "50" CHANCE "30"
    		death_chest			: PAIN_DIRECTION "front" PAIN_THRESHOLD "50"
    		death_run			: default
    	}
    	
    	states
    	{
    		KILLED_WAIT_FOR_DONE	: default
    	}
    }
    
    state KILLED_CROUCHING
    {
    	action
    	{
    		death_frontcrouch	: PAIN_DIRECTION "rear"
    		rifle_pain_kneestodeath : default
    	}
    
    	states
    	{
    		KILLED_WAIT_FOR_DONE	: default
    	}
    }
    
    state KILLED_STANDING
    {
    	states
    	{
    		KILLED_LOWER_TORSO	: PAIN_LOCATION "pelvis"
    		KILLED_LOWER_TORSO	: PAIN_LOCATION "torso_lower"
    		KILLED_UPPER_TORSO	: PAIN_LOCATION "torso_mid"
    		KILLED_UPPER_TORSO	: PAIN_LOCATION "torso_upper"
    		KILLED_NECK			: PAIN_LOCATION "neck"
    		KILLED_HEAD			: PAIN_LOCATION "head"
    		KILLED_HEAD			: PAIN_LOCATION "helmet"
    		KILLED_RIGHT_ARM	: PAIN_LOCATION "r_arm_upper"
    		KILLED_RIGHT_ARM	: PAIN_LOCATION "r_arm_lower"
    		KILLED_RIGHT_ARM	: PAIN_LOCATION "r_hand"
    		KILLED_LEFT_ARM		: PAIN_LOCATION "l_arm_upper"
    		KILLED_LEFT_ARM		: PAIN_LOCATION "l_arm_lower"
    		KILLED_LEFT_ARM		: PAIN_LOCATION "l_hand"
    		KILLED_LEG			: PAIN_LOCATION "r_leg_upper"
    		KILLED_LEG			: PAIN_LOCATION "r_leg_lower"
    		KILLED_LEG			: PAIN_LOCATION "r_foot"
    		KILLED_LEG			: PAIN_LOCATION "l_leg_upper"
    		KILLED_LEG			: PAIN_LOCATION "l_leg_lower"
    		KILLED_LEG			: PAIN_LOCATION "l_foot"
    
    		KILLED_UPPER_TORSO	: default
    	}
    }
    
    state KILLED_LOWER_TORSO
    {
    	action
    	{
    		death_back			: PAIN_DIRECTION "front" CHANCE "60"
    		death_knockedup		: PAIN_DIRECTION "rear" CHANCE "35"
    		death_run			: PAIN_DIRECTION "rear" CHANCE "70"
    		death_crotch		: CHANCE "60"
    		death_chest			: default
    	}
    
    	states
    	{
    		KILLED_WAIT_FOR_DONE	: default
    	}
    }
    
    state KILLED_UPPER_TORSO
    {
    	action
    	{
    		death_knockedup		: PAIN_DIRECTION "front" CHANCE "20"
    		death_back			: PAIN_DIRECTION "front" CHANCE "60"
    		death_run			: PAIN_DIRECTION "rear" CHANCE "40"
    		death_frontchoke	: CHANCE "30"
    		death_shoot			: CHANCE "60"
    		death_chest			: default
    	}
    
    	states
    	{
    		KILLED_WAIT_FOR_DONE	: default
    	}
    }
    
    state KILLED_NECK
    {
    	action
    	{
    		death_frontchoke	: CHANCE "50"
    		death_choke			: default
    	}
    
    	states
    	{
    		KILLED_WAIT_FOR_DONE	: default
    	}
    }
    
    state KILLED_HEAD
    {
    	action
    	{
    		death_back			: PAIN_DIRECTION "front" CHANCE "50"
    		death_head_flyforward : PAIN_DIRECTION "rear" CHANCE "30"
    		death_headpistol	: CHANCE "20"
    		death_twist			: CHANCE "25"
    		death_shoot			: CHANCE "33"
    		death_fall_to_knees	: CHANCE "50"
    		death_collapse		: default
    	}
    
    	states
    	{
    		KILLED_WAIT_FOR_DONE	: default
    	}
    }
    
    state KILLED_RIGHT_ARM
    {
    	action
    	{
    		death_twist			: PAIN_DIRECTION "rear" CHANCE "50"
    		death_fall_back		: CHANCE "30"
    		death_shoot			: CHANCE "50"
    		death_chest			: default
    	}
    
    	states
    	{
    		KILLED_WAIT_FOR_DONE	: default
    	}
    }
    
    state KILLED_LEFT_ARM
    {
    	action
    	{
    		death_twist			: PAIN_DIRECTION "front" CHANCE "50"
    		death_fall_back		: CHANCE "30"
    		death_shoot			: CHANCE "50"
    		death_chest			: default
    	}
    
    	states
    	{
    		KILLED_WAIT_FOR_DONE	: default
    	}
    }
    
    state KILLED_LEG
    {
    	action
    	{
    		death_knockedup	: PAIN_DIRECTION "rear" CHANCE "50"
    		death_fall_back		: CHANCE "25"
    		death_shoot			: CHANCE "33"
    		death_fall_to_knees	: CHANCE "50"
    		death_chest			: default
    	}
    
    	states
    	{
    		KILLED_WAIT_FOR_DONE	: default
    	}
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    //state KILLED_GENERIC
    //{
    //	action
    //	{
    //		death_crouch	: POSITION_TYPE "crouching"
    //		
    //		death 			: default
    //	}
    //	
    //	states
    //	{
    //		KILLED_WAIT_FOR_DONE	: default
    //	}
    //}
    
    state EXPLOSION_KILLED
    {
    	action
    	{
    		death_explosion_large	: PAIN_THRESHOLD "150"
    //		death_explosion_small	: PAIN_THRESHOLD "130"
    		
    		// directional death animations of in middle damage range
    //		death_explosion_front	: PAIN_DIRECTION "rear"
    		death_explosion_back	: PAIN_DIRECTION "front"
    		death_explosion_left	: PAIN_DIRECTION "left"
    		death_explosion_right	: PAIN_DIRECTION "right"
    		
    		death_explosion_small	: default // a just-in-case catch-all
    	}
    	
    	states
    	{
    		KILLED_WAIT_FOR_DONE	: default
    	}
    }
    
    state KILLED_WAIT_FOR_DONE
    {
    	states
    	{
    		KILLED_DONE		: ANIMDONE_TORSO
    	}
    
    	exitcommands
    	{
    		dead	// Frees up resources and tells everyone I'm dead.
    	}
    }
    
    state KILLED_DONE
    {
    	movetype anim
    }
    
    
    //==============================================================================
    //==============================================================================
    //
    // Ladder Climbing
    //
    //==============================================================================
    
    state USE_LADDER
    {
    	movetype climbwall
    	
    	entrycommands
    	{
    		safeholster 1 // put our weapon away
    		attachtoladder // gets the ladder we're going to be climbing
    	}
    	
    //	action
    //	{
    //		none : default
    //	}
    	
    	states 
    	{
    //		PUTAWAY_MAIN		: PUTAWAYMAIN
    		LADDER_PUTAWAY		: PUTAWAYMAIN
    		LATCH_ONTO_LADDER	: !ONGROUND 
    		GET_ON_LADDER		: default
    	}
    }
    
    state LADDER_PUTAWAY
    {
    	entrycommands
    	{
    		deactivateweapon righthand
    	}
    	
    	states
    	{
    		LATCH_ONTO_LADDER	: !ONGROUND 
    		GET_ON_LADDER		: default
    	}
    }
    
    state GET_ON_LADDER
    {
    	movetype climbwall
    
    
    	// these entry commands ensure that the player 
    	// will be standing when he gets off the ladder
    	entrycommands
    	{
    		modheight "stand"
    		movementstealth "1.0"
    		moveposflags "standing"
    	}
    
    	action
    	{
    		ladder_geton_top		: AT_TOP_OF_LADDER
    		ladder_geton_bottom		: default
    	}
    	
    	states
    	{
    //		STAND					: KILLED
    		FINISHED_GET_OFF_LADDER	: KILLED
    	
    		// we go to LADDER_LEFT because the left hand will be up once we're on
    		LADDER_IDLE_LEFT		: ANIMDONE_TORSO
    	}
    }
    
    // This is for when the player grabs the ladder while not on the ground
    state LATCH_ONTO_LADDER
    {
    	movetype climbwall
    
    	// these entry commands ensure that the player 
    	// will be standing when he gets off the ladder
    	entrycommands
    	{
    		modheight "stand"
    		movementstealth "1.0"
    		moveposflags "standing"
    		tweakladderpos // make sure we're positioned properly on the ladder
    	}
    	
    	states
    	{
    //		LADDER_IDLE_LEFT		: default
    		LADDER_DOWN_LEFT		: default
    	}
    }
    
    state GET_OFF_LADDER_TOP
    {
    	movetype climbwall
    	
    	action
    	{
    		ladder_getoff_top		: default
    	}
    	
    	states
    	{
    		FINISHED_GET_OFF_LADDER	: KILLED
    		
    		FINISHED_GET_OFF_LADDER	: ANIMDONE_TORSO
    	}
    }
    
    state GET_OFF_LADDER_BOTTOM
    {
    	movetype climbwall
    	
    	action
    	{
    		ladder_getoff_bottom	: default
    	}
    	
    	states
    	{
    		FINISHED_GET_OFF_LADDER	: KILLED
    	
    		FINISHED_GET_OFF_LADDER	: ANIMDONE_TORSO
    	}
    }
    
    state FINISHED_GET_OFF_LADDER
    {
    	movetype legs
    	
    	entrycommands
    	{
    		unattachfromladder
    		safeholster 0 // pull weapon back out if we put it away to get on the ladder
    	}
    
    	states
    	{
    		STAND					: default
    	}
    }
    
    // same as FINISHED_GET_OFF_LADDER, except that the player is jumping off
    state JUMP_OFF_LADDER
    {
    	movetype legs
    	
    	entrycommands
    	{
    		unattachfromladder
    		safeholster 0 // pull weapon back out if we put it away to get on the ladder
    		jumpxy -70 0 150
    	}
    
    	states
    	{
    		STAND			: default
    	}
    }
    
    // idling on a ladder with the left hand high
    state LADDER_IDLE_LEFT
    {
    	movetype climbwall
    
    	entrycommands
    	{
    //		viewmodelanim idle
    		tweakladderpos // make sure we're positioned properly on the ladder
    	}
    	
    	action
    	{
    		ladder_idle_left		: default
    	}
    
    	states
    	{
    //		STAND					: KILLED
    		FINISHED_GET_OFF_LADDER	: KILLED
    		
    		// check for emergency getaway
    		JUMP_OFF_LADDER			: +JUMP
    		
    		PUTAWAY_MAIN			: PUTAWAYMAIN	// just in case the weapon isn't put away yet
    		
    		// check for getting off top of the ladder
    		GET_OFF_LADDER_TOP		: FORWARD LOOKING_UP "-30" CAN_GET_OFF_LADDER_TOP
    		GET_OFF_LADDER_TOP		: BACKWARD !LOOKING_UP "-30" CAN_GET_OFF_LADDER_TOP
    
    		// check for getting off bottom of the ladder
    		GET_OFF_LADDER_BOTTOM	: FORWARD !LOOKING_UP "-30" CAN_GET_OFF_LADDER_BOTTOM
    		GET_OFF_LADDER_BOTTOM	: BACKWARD LOOKING_UP "-30" CAN_GET_OFF_LADDER_BOTTOM
    		
    		LADDER_UP_RIGHT			: FORWARD LOOKING_UP "-30" CAN_CLIMB_UP_LADDER
    		LADDER_UP_RIGHT			: BACKWARD !LOOKING_UP "-30" CAN_CLIMB_UP_LADDER
    		
    		LADDER_DOWN_LEFT		: FORWARD !LOOKING_UP "-30" CAN_CLIMB_DOWN_LADDER
    		LADDER_DOWN_LEFT		: BACKWARD LOOKING_UP "-30" CAN_CLIMB_DOWN_LADDER
    		
    //		LADDER_SLIDE			: CROUCH
    		
    //		GET_OFF_LADDER			: +USE
    	}
    }
    
    // idling on a ladder with the right hand high
    state LADDER_IDLE_RIGHT
    {
    	movetype climbwall
    	
    	entrycommands
    	{
    //		viewmodelanim idle
    		tweakladderpos // make sure we're positioned properly on the ladder
    	}
    	
    	action
    	{
    		ladder_idle_right		: default
    	}
    	
    	states
    	{
    //		STAND					: KILLED
    		FINISHED_GET_OFF_LADDER	: KILLED
    	
    		// check for emergency getaway
    		JUMP_OFF_LADDER			: +JUMP
    		
    		PUTAWAY_MAIN			: PUTAWAYMAIN	// just in case the weapon isn't put away yet
    		
    		// check for getting off top of the ladder
    		GET_OFF_LADDER_TOP		: FORWARD LOOKING_UP "-30" CAN_GET_OFF_LADDER_TOP
    		GET_OFF_LADDER_TOP		: BACKWARD !LOOKING_UP "-30" CAN_GET_OFF_LADDER_TOP
    
    		// check for getting off bottom of the ladder
    		GET_OFF_LADDER_BOTTOM	: FORWARD !LOOKING_UP "-30" CAN_GET_OFF_LADDER_BOTTOM
    		GET_OFF_LADDER_BOTTOM	: BACKWARD LOOKING_UP "-30" CAN_GET_OFF_LADDER_BOTTOM
    		
    		LADDER_UP_LEFT			: FORWARD LOOKING_UP "-30" CAN_CLIMB_UP_LADDER
    		LADDER_UP_LEFT			: BACKWARD !LOOKING_UP "-30" CAN_CLIMB_UP_LADDER
    		
    		LADDER_DOWN_RIGHT		: FORWARD !LOOKING_UP "-30" CAN_CLIMB_DOWN_LADDER
    		LADDER_DOWN_RIGHT		: BACKWARD LOOKING_UP "-30" CAN_CLIMB_DOWN_LADDER
    		
    //		LADDER_SLIDE			: CROUCH
    
    //		GET_OFF_LADDER			: +USE
    	}
    }
    
    state LADDER_UP_LEFT
    {
    	movetype climbwall
    	
    	entrycommands
    	{
    //		tweakladderpos // make sure we're positioned properly on the ladder
    	}
    	
    	action
    	{
    		ladder_up_left			: default
    	}
    	
    	states
    	{
    //		STAND					: KILLED
    		FINISHED_GET_OFF_LADDER	: KILLED
    		
    //		LADDER_SLIDE			: CROUCH
    		
    		// check for emergency getaway
    		JUMP_OFF_LADDER			: +JUMP
    		
    		LADDER_IDLE_LEFT		: ANIMDONE_TORSO
    	}
    }
    
    state LADDER_UP_RIGHT
    {
    	movetype climbwall
    	
    	entrycommands
    	{
    //		tweakladderpos // make sure we're positioned properly on the ladder
    	}
    	
    	action
    	{
    		ladder_up_right			: default
    	}
    	
    	states
    	{
    //		STAND					: KILLED
    		FINISHED_GET_OFF_LADDER	: KILLED
    		
    //		LADDER_SLIDE			: CROUCH
    		
    		// check for emergency getaway
    		JUMP_OFF_LADDER			: +JUMP
    		
    		LADDER_IDLE_RIGHT		: ANIMDONE_TORSO
    	}
    }
    
    state LADDER_DOWN_LEFT
    {
    	movetype climbwall
    	
    	entrycommands
    	{
    //		tweakladderpos // make sure we're positioned properly on the ladder
    	}
    	
    	action
    	{
    		ladder_down_left		: default
    	}
    	
    	states
    	{
    //		STAND					: KILLED
    		FINISHED_GET_OFF_LADDER	: KILLED
    		
    //		LADDER_SLIDE			: CROUCH
    		
    		// check for emergency getaway
    		JUMP_OFF_LADDER			: +JUMP
    		
    		LADDER_IDLE_RIGHT		: ANIMDONE_TORSO
    	}
    }
    
    state LADDER_DOWN_RIGHT
    {
    	movetype climbwall
    	
    	entrycommands
    	{
    //		tweakladderpos // make sure we're positioned properly on the ladder
    	}
    	
    	action
    	{
    		ladder_down_right		: default
    	}
    	
    	states
    	{
    //		STAND					: KILLED
    		FINISHED_GET_OFF_LADDER	: KILLED
    		
    //		LADDER_SLIDE			: CROUCH
    		
    		// check for emergency getaway
    		JUMP_OFF_LADDER			: +JUMP
    		
    		LADDER_IDLE_LEFT		: ANIMDONE_TORSO
    	}
    }
    
    state LADDER_SLIDE
    {
    	movetype climbwall
    	
    	action
    	{
    		ladder_slide			: default
    	}
    	
    	states
    	{
    //		STAND					: KILLED
    		FINISHED_GET_OFF_LADDER	: KILLED
    		
    		// check for emergency getaway
    		FINISHED_GET_OFF_LADDER	: +JUMP
    		
    		FINISHED_GET_OFF_LADDER	: ONGROUND
    		LADDER_IDLE_LEFT		: !CROUCH
    	}
    }
    
    //==============================================================================
    //==============================================================================
    //
    // Generic Use
    //
    //==============================================================================
    
    state GENERIC_USE
    {
    	entrycommands
    	{
    		usestuff
    	}
    
    	states
    	{
    		STAND	: default
    	}
    }
    
    
    //==============================================================================
    //==============================================================================
    //
    // Vehicles
    //
    //==============================================================================
    
    state VEHICLE_PUTAWAY
    {
    	entrycommands
    	{
    		deactivateweapon righthand
    	}
    	
    	states
    	{
    		VEHICLE_IDLE	: default
    	}
    }
    
    state VEHICLE_START
    {
    //	movetype anim
    	
    //	action
    //	{
    //		vehicle_idle			: default
    //	}
    	
    	states
    	{
    		VEHICLE_PUTAWAY	: PUTAWAYMAIN	// Basic put weapon away move.
    		VEHICLE_IDLE	: default
    	}
    }
    
    state VEHICLE_IDLE
    {
    	movetype anim
    	
    	action
    	{
    		vehicle_idle	: default
    	}
    	
    	states
    	{
    		VEHICLE_USE		: +USE
    		STAND			: !IS_USING_VEHICLE
    	}
    }
    
    state VEHICLE_USE
    {
    	movetype anim
    
    //	entrycommands
    //	{
    //		usestuff
    //	}
    
    	action
    	{
    		vehicle_idle			: default
    	}
    
    	states
    	{
    		VEHICLE_IDLE	: default
    	}
    }
    
    
    //==============================================================================
    //==============================================================================
    //
    // Turrets
    //
    //==============================================================================
    
    state TURRET_PUTAWAY
    {
    	entrycommands
    	{
    		deactivateweapon righthand
    	}
    	
    	states
    	{
    		TURRET_IDLE		: default
    	}
    }
    
    state TURRET_START
    {
    //	movetype anim
    	
    //	action
    //	{
    //		turret_idle		: default
    //	}
    	
    	states
    	{
    		TURRET_PUTAWAY	: PUTAWAYMAIN	// Basic put weapon away move.
    		TURRET_IDLE		: default
    	}
    }
    
    state TURRET_IDLE
    {
    	movetype anim
    	
    	action
    	{
    		turret_idle		: default
    	}
    	
    	states
    	{
    //		TURRET_USE		: +USE
    //		GENERIC_USE		: +USE
    		STAND			: !IS_USING_TURRET
    	}
    }
    
    //state TURRET_USE
    //{
    //	movetype anim
    //
    //	entrycommands
    //	{
    //		usestuff
    //	}
    //
    //	action
    //	{
    //		turret_idle		: default
    //	}
    //
    //	states
    //	{
    //		TURRET_IDLE	: default
    //	}
    //}
    Last edited by Soares93; August 26th, 2021 at 08:33 PM.

  2. #2

    Default

    I think it is because the weaponclass of the Moschetto is "smg"
    and you are calling the same state twice when checking if the weaponclass is "smg" and when checking if the weaponname is "Moschetto"
    Like this:
    Code:
    RAISE_SMG        : IS_NEW_WEAPONCLASS "mainhand" "smg"
    RAISE_SMG        : IS_NEW_WEAPON      "mainhand" "Moschetto"
    So probably if you want to customize all the animations you will need to change all the WEAPONCLASS checks to WEAPON checks for every "smg" weapon in the game.


    Also try adding an "iprint" with the name of the current state to the entrycommands{} block of all states in your mike_torso.
    Or add an entrycommands{} block if the state doesn't have one
    (e.g. iprint "state ATTACK_SMG_PRIMARY" 1 in the ATTACK_SMG_PRIMARY state)

    That may help you to debug and see what states are being called while in game

  3. #3

  4. #4

    Default

    Hey zappa, I loaded the game each time I created a new line.

    I don't know what else to do, this is as far as I could go without crashing the game.

    As it stands the game recognizes the weapon in the slot, it fires, reloads, etc. but has no fps animations whatsoever.

    The lines that created the "possible infinite state loop" have the "//"
    Mike_torso.st
    Code:
    // ======================================================= //
    	// Action state machine for Mike Powell, the hero of MoH PC //
    	// ======================================================= //
    
    // Authored by Carl glave and Michael Boon, 5-23-2000
    
    // The action state machine takes care of
    // a) all torso-only animations which are layer on top of leg animations
    // b) most full-body animations
    // c) which states are to take their full-body animations from the leg state
    //    machine.
    // The states which control only torso animations have "movetype legs" and 
    // animations under the token "action".  This allows the leg state to continue
    // controlling the leg animations.  The states which control the whole body have
    // movetype not legs and animations under the token "action". This overrides the
    // leg state machine. States such as STAND, below, which have "none" specified
    // as the torso animation, take the torso animation from the leg animaiton
    // specified in the legs state machine.
    
    //==============================================================================
    //==============================================================================
    //
    // Stand (really means not doing an action)
    //
    //==============================================================================
    
    state STAND
    {
    	movetype legs
    
    	camera behind
    
    	entrycommands
    	{
    		viewmodelanim idle
    	}
    	
    	action
    	{
    		none : default // no torso animation
    	}
    
    	states
    	{
    		KILLED					: KILLED
    		PAIN					: PAIN
    
    		VEHICLE_START			: IS_USING_VEHICLE
    		TURRET_START			: IS_USING_TURRET
    
    		// if we're on a ladder, make sure we're climbing the ladder
    		LADDER_IDLE_LEFT		: ON_LADDER
    
    		// Some grab and hang stuff will be implemented in the final game, probably 
    		// not all of this, but it's in here as a placeholder.
    //		CLIMB_LADDER			: ONGROUND +FORWARD !BACKWARD AT_LADDER
    
    //		CLIMB_LADDER_IMPACT		: !ONGROUND FORWARD !BACKWARD AT_LADDER	// For grabbing onto walls when
    													// flying through the air
    	
    		// Using objects is dictated by the object being used.  The three objects 
    		// here are for objects which trigger interactive actions when touched, 
    		// for objects which the player uses (such as doors), and for when the 
    		// player tries to use an object that is not usable.
    //		USE_USEANIM				: ONGROUND TOUCHEDUSEANIM
    //		USE_USEANIM				: ONGROUND USE AT_USEANIM
    		USE_LADDER				: ONGROUND +USE AT_LADDER CHECK_HEIGHT "stand"
    //		USE_LADDER				: ONGROUND AT_LADDER // this is full auto use of ladders
    		// latch onto ladder in mid-air
    		USE_LADDER				: +USE AT_LADDER CHECK_HEIGHT "stand" // can also latch onto a ladder in mid-air
    		// auto use of ladder when at the bottom (AT_LADDER check is last because it does a trace)
    		USE_LADDER				: ONGROUND FORWARD LOOKING_UP "35" !PUTAWAYMAIN !NEW_WEAPON !RELOAD !ATTACK_PRIMARY !ATTACK_SECONDARY AT_LADDER CHECK_HEIGHT "stand"
    		// auto use of ladder when at the top (AT_LADDER check is last because it does a trace)
    		USE_LADDER				: ONGROUND FORWARD !LOOKING_UP "-35" !PUTAWAYMAIN !NEW_WEAPON !RELOAD !ATTACK_PRIMARY !ATTACK_SECONDARY AT_LADDER CHECK_HEIGHT "stand"
    //		GENERIC_USE				: ONGROUND +USE
    
    		// This is not functional for the prototype, but is here as a placeholder for
    		// future functionality.
    		// While the player can only fire weapons with his right hand, he can switch them 
    		// to his left if he wants to use an item with his left.  Gameplay-wise, this should 
    		// be the same as putting the weapon away, but it will create a nice graphical "cool 
    		// factor" which is always good in computer games.
    		// When we have two items out, the game code will flag them both as putaway, and we 
    		// need to put the right one away first, followed by the left.
    		PUTAWAY_MAIN			: PUTAWAYMAIN	// Basic put weapon away move.
    		RAISE_WEAPON			: NEW_WEAPON
    
    		RELOAD_WEAPON			: RELOAD
    	
    		CHECK_PRIMARY_ATTACK_SEMIAUTO	: +ATTACK_PRIMARY IS_WEAPON_SEMIAUTO "mainhand" IS_WEAPON_READY_TO_FIRE "mainhand"
    		CHECK_PRIMARY_ATTACK_FULLAUTO	: ATTACK_PRIMARY !IS_WEAPON_SEMIAUTO "mainhand" IS_WEAPON_READY_TO_FIRE "mainhand"
    		CHECK_SECONDARY_ATTACK			: +ATTACK_SECONDARY
    	}
    }
    
    //==============================================================================
    //==============================================================================
    //
    // Primary Attacks - Full Auto
    //
    //==============================================================================
    
    state CHECK_PRIMARY_ATTACK_FULLAUTO
    {
    	movetype legs
    
    	action
    	{
    		none : default // stop torso animation
    	}
    
    	states
    	{
    		STAND					: KILLED
    //		PAIN					: PAIN
    	
    		STAND					: NEW_WEAPON
    		STAND					: RELOAD
    		STAND					: !IS_WEAPON_READY_TO_FIRE "mainhand"
    		
    //		ATTACK_PISTOL_PRIMARY	: IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "pistol"
    //		ATTACK_RIFLE_PRIMARY	: IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "rifle"
    //		CHARGE_ATTACK_GRENADE	: IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "grenade"
    		ATTACK_SMG_PRIMARY		: IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "smg"
    		ATTACK_SMG_PRIMARY		: IS_WEAPON_READY_TO_FIRE      "mainhand" "Moschetto"
    		ATTACK_MG_PRIMARY		: IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "mg"
    //		ATTACK_ITEM_PRIMARY		: IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "item"
    		
    //		STAND					: IS_WEAPON_ACTIVE "Error" // Generates an error if no appropriate
    															// attack state is chosen
    		STAND					: !ATTACK_PRIMARY
    	}
    }
    
    state ATTACK_SMG_PRIMARY
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim fire 1
    	}
    
    	action
    	{
    		mp40_stand_run_fire		: IS_WEAPON_ACTIVE "mainhand" "MP40" POSITION_TYPE "standing" MOVEMENT_TYPE "running"
    		mp40_crouch_run_fire		: IS_WEAPON_ACTIVE "mainhand" "MP40" POSITION_TYPE "crouching" MOVEMENT_TYPE "running"
    		mp40_crouch_fire		: IS_WEAPON_ACTIVE "mainhand" "MP40" POSITION_TYPE "crouching"
    		mp40_stand_fire			: IS_WEAPON_ACTIVE "mainhand" "MP40"
    
    //		moschetto_stand_run_fire	: IS_WEAPON_ACTIVE "mainhand" "Moschetto" POSITION_TYPE "standing" MOVEMENT_TYPE "running"
    //		moschetto_crouch_run_fire	: IS_WEAPON_ACTIVE "mainhand" "Moschetto" POSITION_TYPE "crouching" MOVEMENT_TYPE "running"
    //		moschetto_crouch_fire		: IS_WEAPON_ACTIVE "mainhand" "Moschetto" POSITION_TYPE "crouching"
    //		moschetto_stand_fire		: IS_WEAPON_ACTIVE "mainhand" "Moschetto"
    
    		smg_stand_run_fire		: POSITION_TYPE "standing" MOVEMENT_TYPE "running"
    		smg_crouch_run_fire		: POSITION_TYPE "crouching" MOVEMENT_TYPE "running"
    		smg_crouch_fire			: POSITION_TYPE "crouching"
    		smg_stand_fire			: default
    	}
    
    	states
    	{
    		STAND							: KILLED
    //		PAIN							: PAIN
    
    		STAND							: !ATTACK_PRIMARY ANIMDONE_TORSO 
    		STAND							: ANIMDONE_TORSO !IS_WEAPON_READY_TO_FIRE "mainhand"
    //		STAND							: RELOAD !ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
    		STAND							: RELOAD !ATTACK_PRIMARY
    //		STAND							: RELOAD !HAS_AMMO_IN_CLIP "mainhand" IS_WEAPON_READY_TO_FIRE "mainhand"
    		
    		CHECK_PRIMARY_ATTACK_FULLAUTO	: ATTACK_PRIMARY +IS_WEAPON_READY_TO_FIRE "mainhand"
    		CHECK_PRIMARY_ATTACK_FULLAUTO	: +ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
    	}
    }
    
    state ATTACK_MG_PRIMARY
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim fire 1
    	}
    
    	action
    	{
    		mp44_stand_run_fire		: IS_WEAPON_ACTIVE "mainhand" "StG 44" POSITION_TYPE "standing" MOVEMENT_TYPE "running"
    		mp44_crouch_run_fire	: IS_WEAPON_ACTIVE "mainhand" "StG 44" POSITION_TYPE "crouching" MOVEMENT_TYPE "running"
    		mp44_crouch_fire		: IS_WEAPON_ACTIVE "mainhand" "StG 44" POSITION_TYPE "crouching"
    		mp44_stand_fire			: IS_WEAPON_ACTIVE "mainhand" "StG 44"
    
    		mg_stand_run_fire		: POSITION_TYPE "standing" MOVEMENT_TYPE "running"
    		mg_crouch_run_fire		: POSITION_TYPE "crouching" MOVEMENT_TYPE "running"
    		mg_crouch_fire			: POSITION_TYPE "crouching"
    		mg_stand_fire			: default
    	}
    
    	states
    	{
    		STAND							: KILLED
    //		PAIN							: PAIN
    
    //		STAND							: !ATTACK_PRIMARY ANIMDONE_TORSO 
    //		STAND							: RELOAD !ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
    	
    		STAND							: !ATTACK_PRIMARY ANIMDONE_TORSO 
    		STAND							: ANIMDONE_TORSO !IS_WEAPON_READY_TO_FIRE "mainhand"
    //		STAND							: RELOAD !ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
    		STAND							: RELOAD !ATTACK_PRIMARY
    //		STAND							: RELOAD !HAS_AMMO_IN_CLIP "mainhand" IS_WEAPON_READY_TO_FIRE "mainhand"
    		
    		CHECK_PRIMARY_ATTACK_FULLAUTO	: ATTACK_PRIMARY +IS_WEAPON_READY_TO_FIRE "mainhand"
    		CHECK_PRIMARY_ATTACK_FULLAUTO	: +ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
    	}
    }
    
    //==============================================================================
    //==============================================================================
    //
    // Primary Attacks - Semi-Auto
    //
    //==============================================================================
    
    state CHECK_PRIMARY_ATTACK_SEMIAUTO
    {
    	movetype legs
    
    	action
    	{
    		none : default // stop torso animation
    	}
    
    	states
    	{
    		STAND					: KILLED
    //		PAIN					: PAIN
    	
    		STAND					: NEW_WEAPON
    		STAND					: RELOAD
    		STAND					: !IS_WEAPON_READY_TO_FIRE "mainhand"
    		
    		ATTACK_PISTOL_PRIMARY	: IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "pistol"
    		ATTACK_RIFLE_PRIMARY	: IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "rifle"
    		CHARGE_ATTACK_GRENADE	: IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "grenade"
    		ATTACK_ITEM_PRIMARY		: IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "item"
    		ATTACK_BAZOOKA_PRIMARY	: IS_WEAPON_ACTIVE "mainhand" "Bazooka"
    		ATTACK_BAZOOKA_PRIMARY	: IS_WEAPON_ACTIVE "mainhand" "Panzerschreck"
    		ATTACK_SHOTGUN_PRIMARY	: IS_WEAPON_ACTIVE "mainhand" "Shotgun"
    	
    //		STAND					: IS_WEAPON_ACTIVE "Error" // Generates an error if no appropriate
    											// attack state is chosen
    		STAND					: !ATTACK_PRIMARY
    	}
    }
    
    state ATTACK_RIFLE_PRIMARY
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim fire 1
    	}
    
    	action
    	{
    		// Fire from the hip when jogging,
    		// from the shoulder when walking or standing
    		rifle_stand_run_fire	: POSITION_TYPE "standing" MOVEMENT_TYPE "running"
    		rifle_crouch_run_fire	: POSITION_TYPE "crouching" MOVEMENT_TYPE "running"
    		rifle_stand_walk_fire	: POSITION_TYPE "standing" MOVEMENT_TYPE "walking"
    		rifle_crouch_fire		: POSITION_TYPE "crouching"
    		rifle_stand_fire		: default
    	}
    
    	states
    	{
    		STAND							: KILLED
    //		PAIN							: PAIN
    
    //		STAND							: !ATTACK_PRIMARY ANIMDONE_TORSO 
    		ATTACK_SPRINGFIELD_RECHAMBER	: ANIMDONE_TORSO IS_WEAPON_ACTIVE "mainhand" "Springfield '03 Sniper"
    		ATTACK_KAR98_RECHAMBER			: ANIMDONE_TORSO IS_WEAPON_ACTIVE "mainhand" "Mauser KAR 98K"
    		ATTACK_KAR98_RECHAMBER			: ANIMDONE_TORSO IS_WEAPON_ACTIVE "mainhand" "KAR98 - Sniper"		
    		STAND							: ANIMDONE_TORSO 
    		CHECK_PRIMARY_ATTACK_SEMIAUTO	: +ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
    	}
    }
    
    state ATTACK_SPRINGFIELD_RECHAMBER
    {
    	movetype legs
    	
    	entrycommands
    	{
    		viewmodelanim rechamber
    //		safezoom 0
    	}
    	
    //	exitcommands
    //	{
    //		safezoom 1
    //	}
    	
    	action
    	{
    		springfield_crouch_rechamber	: POSITION_TYPE "crouching"
    		springfield_stand_rechamber		: default
    	}
    	
    	states
    	{
    		STAND							: KILLED
    //		PAIN							: PAIN
    	
    		STAND							: ANIMDONE_TORSO 
    	}
    }
    
    state ATTACK_KAR98_RECHAMBER
    {
    	movetype legs
    	
    	entrycommands
    	{
    		viewmodelanim rechamber
    //		safezoom 0
    	}
    	
    //	exitcommands
    //	{
    //		safezoom 1
    //	}
    	
    	action
    	{
    		kar98_crouch_rechamber	: POSITION_TYPE "crouching"
    		kar98_stand_rechamber	: default
    	}
    	
    	states
    	{
    		STAND						: KILLED
    //		PAIN						: PAIN
    	
    		STAND						: ANIMDONE_TORSO 
    	}
    }
    
    state ATTACK_PISTOL_PRIMARY
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim fire 1
    	}
    
    	action
    	{
    		// Fire from the hip when jogging, from the shoulder when
    		// walking, or standing
    
    		pistol_silenced_stand_run_fire	: POSITION_TYPE "standing" MOVEMENT_TYPE "running" IS_WEAPON_ACTIVE "mainhand" "Hi-Standard Silenced"
    		pistol_silenced_crouch_run_fire	: POSITION_TYPE "crouching" MOVEMENT_TYPE "running" IS_WEAPON_ACTIVE "mainhand" "Hi-Standard Silenced"
    		pistol_silenced_crouch_fire		: POSITION_TYPE "crouching" IS_WEAPON_ACTIVE "mainhand" "Hi-Standard Silenced"
    		pistol_silenced_stand_fire		: IS_WEAPON_ACTIVE "mainhand" "Hi-Standard Silenced"
    
    		pistol_stand_run_fire	: POSITION_TYPE "standing" MOVEMENT_TYPE "running"
    		pistol_crouch_run_fire	: POSITION_TYPE "crouching" MOVEMENT_TYPE "running"
    		pistol_crouch_fire		: POSITION_TYPE "crouching"
    		pistol_stand_fire		: default
    	}
    
    	states
    	{
    		STAND							: KILLED
    //		PAIN							: PAIN
    
    //		STAND							: !ATTACK_PRIMARY ANIMDONE_TORSO 
    		STAND							: ANIMDONE_TORSO 
    		CHECK_PRIMARY_ATTACK_SEMIAUTO	: +ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
    
    		// allow pistol whip immediatly after firing
    		ATTACK_PISTOL_SECONDARY			: +ATTACK_SECONDARY IS_WEAPON_READY_TO_FIRE "mainhand"
    	}
    }
    
    state ATTACK_ITEM_PRIMARY
    {
    	movetype legs
    
    	entrycommands
    	{
    		weaponcommand mainhand anim fire
    	}
    	
    	states
    	{
    		STAND							: KILLED
    //		PAIN							: PAIN
    
    		STAND							: !ATTACK_PRIMARY
    		CHECK_PRIMARY_ATTACK_SEMIAUTO	: +ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
    	}
    }
    
    state ATTACK_BAZOOKA_PRIMARY
    {
    	movetype legs
    	
    	entrycommands
    	{
    		viewmodelanim fire 1
    	}
    	
    	action
    	{
    		bazooka_stand_run_fire	: POSITION_TYPE "standing" MOVEMENT_TYPE "running"
    		bazooka_crouch_run_fire	: POSITION_TYPE "crouching" MOVEMENT_TYPE "running"
    		bazooka_crouch_fire		: POSITION_TYPE "crouching"
    		bazooka_stand_fire		: default
    	}
    	
    	states
    	{
    		STAND							: KILLED
    //		PAIN							: PAIN
    
    		STAND							: !ATTACK_PRIMARY ANIMDONE_TORSO 
    		CHECK_PRIMARY_ATTACK_SEMIAUTO	: +ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
    	}
    }
    
    state ATTACK_SHOTGUN_PRIMARY
    {
    	movetype legs
    	
    	entrycommands
    	{
    		viewmodelanim fire 1
    	}
    	
    	action
    	{
    		shotgun_stand_run_fire	: POSITION_TYPE "standing" MOVEMENT_TYPE "running"
    		shotgun_crouch_run_fire	: POSITION_TYPE "crouching" MOVEMENT_TYPE "running"
    		shotgun_crouch_fire		: POSITION_TYPE "crouching"
    		shotgun_stand_fire		: default
    	}
    	
    	states
    	{
    		STAND							: KILLED
    //		PAIN							: PAIN
    
    		STAND							: !ATTACK_PRIMARY ANIMDONE_TORSO 
    		CHECK_PRIMARY_ATTACK_SEMIAUTO	: +ATTACK_PRIMARY IS_WEAPON_READY_TO_FIRE "mainhand"
    	}
    }
    
    //==============================================================================
    //==============================================================================
    //
    // Secondary Attacks (Always Semi-Auto fire)
    //
    //==============================================================================
    state CHECK_SECONDARY_ATTACK
    {
    	movetype legs
    
    	action
    	{
    		none : default // no torso animation
    	}
    
    	states
    	{
    		STAND					: KILLED
    //		PAIN					: PAIN
    	
    		STAND					: RELOAD
    		
    		ATTACK_PISTOL_SECONDARY	: IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "pistol" "secondary"
    		
    //		ATTACK_RIFLE_2NDARY		: IS_WEAPON_ACTIVE "mainhand" "M1_Garand"
    //		ATTACK_GRENADE_2NDARY	: IS_WEAPON_ACTIVE "mainhand" "FragGrenade"
    //		ATTACK_RIFLE_2NDARY		: IS_WEAPON_ACTIVE "mainhand" "MP40"
    
    //		ATTACK_RIFLE_2NDARY		: IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "rifle" "secondary"
    
    		CHARGE_ATTACK_GRENADE_SECONDARY	: IS_WEAPONCLASS_READY_TO_FIRE "mainhand" "grenade" "secondary"
    
    		PUT_AWAY_ITEM			: IS_WEAPON_ACTIVE "mainhand" "Spy Camera"
    		PUT_AWAY_ITEM			: IS_WEAPON_ACTIVE "mainhand" "Binoculars"
    	
    //		STAND					: IS_WEAPON_ACTIVE "Error"
    //		STAND					: !ATTACK_PRIMARY
    
    		STAND					: default
    	}
    }
    
    // Pistol whip for silent kills
    state ATTACK_PISTOL_SECONDARY
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim fire_secondary 1
    	}
    
    	action
    	{
    		pistol_butt	: default
    	}
    	
    	states
    	{
    		STAND	 	: KILLED
    		
    		STAND	 	: ANIMDONE_TORSO
    	}
    }
    
    // put away the item and pull out the last active weapon
    state PUT_AWAY_ITEM
    {
    	entrycommands
    	{
    //		deactivateweapon righthand
    		commanddelay 0.05 uselast
    	}
    
    	states
    	{
    		STAND		: default
    	}
    	
    //	exitcommands
    //	{
    //		uselast
    //	}
    }
    
    
    //==============================================================================
    //==============================================================================
    //
    // Primary Charge Up Attacks (grenades)
    //
    //==============================================================================
    
    state CHARGE_ATTACK_GRENADE
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim charge
    	}
    	
    	action
    	{
    		steilhandgranate_crouch_charge	: IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate" POSITION_TYPE "crouching"
    		steilhandgranate_stand_charge	: IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate"
    	
    		grenade_crouch_charge			: POSITION_TYPE "crouching"
    		grenade_stand_charge			: default
    	}
    
    	states
    	{
    //		RELEASE_ATTACK_GRENADE	: PAIN	// This would make the player 
    										// drop a grenade when he gets hit
    //		RELEASE_ATTACK_GRENADE	: KILLED
    		RELEASE_KILLED_FRAG		: KILLED
    		RELEASE_ATTACK_GRENADE	: !ATTACK_PRIMARY MIN_CHARGE_TIME_MET "mainhand"
    	}
    }
    
    state RELEASE_ATTACK_GRENADE
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim fire
    	}
    
    	action
    	{
    		steilhandgranate_crouch_fire	: IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate" POSITION_TYPE "crouching"
    		steilhandgranate_stand_fire		: IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate"
    	
    		grenade_crouch_fire				: POSITION_TYPE "crouching"
    		grenade_stand_fire				: default
    	}
    
    	states
    	{
    		RELEASE_KILLED_FRAG : KILLED MIN_CHARGE_TIME_MET "mainhand" // killed before the grenade was released
    		STAND	 			: KILLED
    
    		STAND 				: ANIMDONE_TORSO
    	}
    }
    
    state CHARGE_ATTACK_GRENADE_SECONDARY
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim charge
    	}
    	
    	action
    	{
    		steilhandgranate_crouch_charge_secondary	: IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate" POSITION_TYPE "crouching"
    		steilhandgranate_stand_charge_secondary		: IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate"
    	
    		grenade_crouch_charge_secondary				: POSITION_TYPE "crouching"
    		grenade_stand_charge_secondary				: default
    	}
    
    	states
    	{
    //		RELEASE_ATTACK_GRENADE_SECONDARY		: PAIN	// This would make the player 
    														// drop a grenade when he gets hit
    //		RELEASE_ATTACK_GRENADE_SECONDARY		: KILLED
    		RELEASE_KILLED_FRAG						: KILLED
    		RELEASE_ATTACK_GRENADE_SECONDARY		: !ATTACK_SECONDARY MIN_CHARGE_TIME_MET "mainhand"
    	}
    }
    
    state RELEASE_ATTACK_GRENADE_SECONDARY
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim fire
    	}
    
    	action
    	{
    		steilhandgranate_crouch_fire_secondary	: IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate" POSITION_TYPE "crouching"
    		steilhandgranate_stand_fire_secondary	: IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate"
    	
    		grenade_crouch_fire_secondary			: POSITION_TYPE "crouching"
    		grenade_stand_fire_secondary			: default
    	}
    
    	states
    	{
    		RELEASE_KILLED_FRAG : KILLED MIN_CHARGE_TIME_MET "mainhand" // killed before the grenade was released
    		STAND	 			: KILLED
    
    		STAND 				: ANIMDONE_TORSO
    	}
    }
    
    // killed while charging a frag grenade
    state RELEASE_KILLED_FRAG
    {
    	entrycommands
    	{
    		charge mainhand secondary // prep to drop the grenade
    		releasefire mainhand secondary // drop the grenade
    	}
    	
    	states
    	{
    		STAND	: default
    	}
    }
    
    
    //==============================================================================
    //==============================================================================
    //
    // PUTAWAY
    //
    //==============================================================================
    
    state PUTAWAY_MAIN
    {
    //	movetype legs
    
    	entrycommands
    	{
    		zoomoff
    		viewmodelanim putaway
    	}
    
    	states
    	{
    		// don't go through the putaway anim if 
    		// we're switching to another weapon
    		// only do if g_immediateswitch is set
    		PUTAWAY_SKIPANIM	: IMMEDIATE_SWITCH NEW_WEAPON
    	
    		PUTAWAY_PISTOL		: IS_WEAPONCLASS_ACTIVE "mainhand" "pistol"
    		PUTAWAY_RIFLE		: IS_WEAPONCLASS_ACTIVE "mainhand" "rifle"
    		PUTAWAY_GRENADE		: IS_WEAPONCLASS_ACTIVE "mainhand" "grenade"
    		PUTAWAY_SMG		: IS_WEAPONCLASS_ACTIVE "mainhand" "smg"
                	PUTAWAY_SMG		: IS_WEAPON_ACTIVE      "mainhand" "Moschetto"
    		PUTAWAY_MG			: IS_WEAPONCLASS_ACTIVE "mainhand" "mg"
    //		PUTAWAY_PISTOL		: IS_WEAPONCLASS_ACTIVE "mainhand" "item" // hold all items like a pistol for now
    		PUTAWAY_HEAVY		: IS_WEAPONCLASS_ACTIVE "mainhand" "heavy"
    
    		// Catchall at the end		
    //		PUTAWAY_RIFLE		: default
    		PUTAWAY_NOANIM		: default
    	}
    }
    
    // called when we want to skip the putaway anim
    state PUTAWAY_SKIPANIM
    {
    	entrycommands
    	{
    		deactivateweapon righthand
    	}
    	
    	states
    	{
    		RAISE_WEAPON	: default
    	}
    }
    
    state PUTAWAY_NOANIM
    {
    	entrycommands
    	{
    		deactivateweapon righthand
    	}
    
    	states
    	{
    		RAISE_WEAPON	: NEW_WEAPON
    		STAND			: default
    	}
    }
    
    state PUTAWAY_PISTOL
    {
    //	movetype legs
    	
    	action
    	{
    		pistol_crouch_lower	: POSITION_TYPE "crouching"
    		pistol_stand_lower	: default
    	}
    	legs
    	{
    		pistol_stand_idle	: ON_LADDER
    	}
    	
    	states
    	{
    		STAND	 			: KILLED
    		
    		GET_ON_LADDER		: ANIMDONE_TORSO ON_LADDER
    		STAND	 			: ANIMDONE_TORSO
    	}
    }
    
    state PUTAWAY_RIFLE
    {
    //	movetype legs
    	
    	action
    	{
    		rifle_crouch_lower	: POSITION_TYPE "crouching"
    		rifle_stand_lower	: default
    	}
    	legs
    	{
    		rifle_stand_idle	: ON_LADDER
    	}
    	
    	states
    	{
    		STAND	 			: KILLED
    		
    		GET_ON_LADDER		: ANIMDONE_TORSO ON_LADDER
    		STAND	 			: ANIMDONE_TORSO
    	}
    }
    
    state PUTAWAY_SMG
    {
    //	movetype legs
    	
    	action
    	{
    		mp40_crouch_lower	: IS_WEAPON_ACTIVE "mainhand" "MP40" POSITION_TYPE "crouching"
    		mp40_stand_lower	: IS_WEAPON_ACTIVE "mainhand" "MP40"
    
    //		moschetto_crouch_lower	      : IS_WEAPON_ACTIVE "mainhand" "Moschetto" POSITION_TYPE "crouching"
    //		moschetto_stand_lower	      : IS_WEAPON_ACTIVE "mainhand" "Moschetto"
    
    		smg_crouch_lower	: POSITION_TYPE "crouching"
    		smg_stand_lower		: default
    	}
    	legs
    	{
    		mp40_stand_idle		: IS_WEAPON_ACTIVE "mainhand" "MP40" ON_LADDER
    //             	moschetto_stand_idle	: IS_WEAPON_ACTIVE "mainhand" "Moschetto" ON_LADDER
    
    		smg_stand_idle		: ON_LADDER
    	}
    	
    	states
    	{
    		STAND	 			: KILLED
    		
    		GET_ON_LADDER		: ANIMDONE_TORSO ON_LADDER
    		STAND	 			: ANIMDONE_TORSO
    	}
    }
    
    state PUTAWAY_MG
    {
    //	movetype legs
    	
    	action
    	{
    		mp44_crouch_lower	: IS_WEAPON_ACTIVE "mainhand" "StG 44" POSITION_TYPE "crouching"
    		mp44_stand_lower	: IS_WEAPON_ACTIVE "mainhand" "StG 44"
    
    		mg_crouch_lower		: POSITION_TYPE "crouching"
    		mg_stand_lower		: default
    	}
    	legs
    	{
    		mp44_stand_idle		: IS_WEAPON_ACTIVE "mainhand" "StG 44" ON_LADDER
    	
    		mg_stand_idle		: ON_LADDER
    	}
    	
    	states
    	{
    		STAND	 			: KILLED
    		
    		GET_ON_LADDER		: ANIMDONE_TORSO ON_LADDER
    		STAND	 			: ANIMDONE_TORSO
    	}
    }
    
    state PUTAWAY_GRENADE
    {
    //	movetype legs
    	
    	action
    	{
    		steilhandgranate_crouch_lower	: IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate" POSITION_TYPE "crouching"
    		steilhandgranate_stand_lower	: IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate"
    	
    		grenade_crouch_lower			: POSITION_TYPE "crouching"
    		grenade_stand_lower				: default
    	}
    	legs
    	{
    		steilhandgranate_stand_idle		: IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate"
    		
    		grenade_stand_idle				: ON_LADDER
    	}
    	
    	states
    	{
    		STAND	 				: KILLED
    		
    		GET_ON_LADDER			: ANIMDONE_TORSO ON_LADDER
    		STAND	 				: ANIMDONE_TORSO
    	}
    }
    
    state PUTAWAY_HEAVY
    {
    //	movetype legs
    	
    	action
    	{
    //		shotgun_crouch_lower	: POSITION_TYPE "crouching" IS_WEAPON_ACTIVE "mainhand" "Shotgun"
    //		shotgun_stand_lower		: IS_NEW_WEAPON "mainhand" "Shotgun"
    		shotgun_crouch_lower	: POSITION_TYPE "crouching" IS_WEAPON_ACTIVE "mainhand" "Shotgun"
    		shotgun_stand_lower		: IS_WEAPON_ACTIVE "mainhand" "Shotgun"
    		
    		bazooka_crouch_lower	: POSITION_TYPE "crouching"
    		bazooka_stand_lower		: default
    	}
    	legs
    	{
    		shotgun_stand_idle		: ON_LADDER IS_WEAPON_ACTIVE "mainhand" "Shotgun"
    		
    		bazooka_stand_idle		: ON_LADDER
    	}
    	
    	states
    	{
    		STAND	 				: KILLED
    		
    		GET_ON_LADDER			: ANIMDONE_TORSO ON_LADDER
    		STAND	 				: ANIMDONE_TORSO
    	}
    }
    
    //==============================================================================
    //==============================================================================
    //
    // RAISE_WEAPON
    //
    //==============================================================================
    
    state RAISE_WEAPON
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim pullout
    
    		// just to make sure nothing funky's 
    		// attached that shouldn't be.
    		correctweaponattachments
    	}
    
    	states
    	{
    		RAISE_PISTOL		: IS_NEW_WEAPONCLASS "mainhand" "pistol"
    		RAISE_RIFLE			: IS_NEW_WEAPONCLASS "mainhand" "rifle"
    		RAISE_GRENADE		: IS_NEW_WEAPONCLASS "mainhand" "grenade"
    		RAISE_SMG			: IS_NEW_WEAPONCLASS "mainhand" "smg"
                	RAISE_SMG			: IS_NEW_WEAPON      "mainhand" "Moschetto"
    		RAISE_MG			: IS_NEW_WEAPONCLASS "mainhand" "mg"
    //		RAISE_PISTOL		: IS_NEW_WEAPONCLASS "mainhand" "item" // hold all items like a pistol for now
    		RAISE_HEAVY			: IS_NEW_WEAPONCLASS "mainhand" "heavy"
    		RAISE_PAPERS		: IS_NEW_WEAPON "mainhand" "Papers"
    		
    //		RAISE_RIFLE			: default
    		RAISE_NOANIM		: default
    	}
    }
    
    state RAISE_NOANIM
    {
    	entrycommands
    	{
    		// delay the activation for a frame so that the player
    		// spends at least one frame without a weapon, thus 
    		// letting the legs state know that we've switched
    		commanddelay 0.05 activatenewweapon
    		commanddelay 0.05 forcetorsostate "STAND"
    	}
    
    //	states
    //	{
    //		STAND		: default
    //	}
    }
    
    state RAISE_RIFLE
    {
    	movetype legs
    	
    	action
    	{
    		rifle_crouch_raise	: POSITION_TYPE "crouching"
    		rifle_stand_raise	: default
    	}
    	
    	states
    	{
    		STAND	 			: KILLED
    		
    		STAND	 			: ANIMDONE_TORSO
    		
    		// allow immediate switching to a different weapon instead
    		RAISE_ABORT			: +NEW_WEAPON
    	}
    }
    
    state RAISE_SMG
    {
    	movetype legs
    	
    	action
    	{
    		mp40_crouch_raise	: IS_NEW_WEAPON "mainhand" "MP40" POSITION_TYPE "crouching"
    		mp40_stand_raise	: IS_NEW_WEAPON "mainhand" "MP40"
    
    //		moschetto_crouch_raise  	: IS_NEW_WEAPON "mainhand" "Moschetto" POSITION_TYPE "crouching"
    //		moschetto_stand_raise		: IS_NEW_WEAPON "mainhand" "Moschetto" 
    
    		smg_crouch_raise	: POSITION_TYPE "crouching"
    		smg_stand_raise		: default
    	}
    	
    	states
    	{
    		STAND	 			: KILLED
    		
    		STAND	 			: ANIMDONE_TORSO
    		
    		// allow immediate switching to a different weapon instead
    		RAISE_ABORT			: +NEW_WEAPON
    	}
    }
    
    state RAISE_MG
    {
    	movetype legs
    	
    	action
    	{
    		mp44_crouch_raise	: IS_NEW_WEAPON "mainhand" "StG 44" POSITION_TYPE "crouching"
    		mp44_stand_raise	: IS_NEW_WEAPON "mainhand" "StG 44"
    
    		mg_crouch_raise	: POSITION_TYPE "crouching"
    		mg_stand_raise	: default
    	}
    	
    	states
    	{
    		STAND	 			: KILLED
    		
    		STAND	 			: ANIMDONE_TORSO
    		
    		// allow immediate switching to a different weapon instead
    		RAISE_ABORT			: +NEW_WEAPON
    	}
    }
    
    state RAISE_PISTOL
    {
    	movetype legs
    	
    	action
    	{
    		pistol_crouch_raise	: POSITION_TYPE "crouching"
    		pistol_stand_raise	: default
    	}
    	
    	states
    	{
    		STAND	 			: KILLED
    		
    		STAND	 			: ANIMDONE_TORSO
    		
    		// allow immediate switching to a different weapon instead
    		RAISE_ABORT			: +NEW_WEAPON
    	}
    }
    
    state RAISE_GRENADE
    {
    	movetype legs
    	
    	action
    	{
    		steilhandgranate_crouch_raise	: IS_NEW_WEAPON "mainhand" "Stielhandgranate" POSITION_TYPE "crouching"
    		steilhandgranate_stand_raise	: IS_NEW_WEAPON "mainhand" "Stielhandgranate"
    	
    		grenade_crouch_raise	: POSITION_TYPE "crouching"
    		grenade_stand_raise		: default
    	}
    	
    	states
    	{
    		STAND	 			: KILLED
    		
    		STAND	 			: ANIMDONE_TORSO
    		
    		// allow immediate switching to a different weapon instead
    		RAISE_ABORT			: +NEW_WEAPON
    	}
    }
    
    state RAISE_HEAVY
    {
    	movetype legs
    	
    	action
    	{
    		shotgun_crouch_raise	: POSITION_TYPE "crouching" IS_NEW_WEAPON "mainhand" "Shotgun"
    		shotgun_stand_raise		: IS_NEW_WEAPON "mainhand" "Shotgun"
    		
    		bazooka_crouch_raise	: POSITION_TYPE "crouching"
    		bazooka_stand_raise		: default
    	}
    	
    	states
    	{
    		STAND	 			: KILLED
    		
    		STAND	 			: ANIMDONE_TORSO
    		
    		// allow immediate switching to a different weapon instead
    		RAISE_ABORT			: +NEW_WEAPON
    	}
    }
    
    state RAISE_PAPERS
    {
    	movetype legs
    	
    	action
    	{
    		show_papers	: default
    	}
    	
    	states
    	{
    		STAND		: KILLED
    		
    		STAND		: ANIMDONE_TORSO
    		
    		// allow immediate switching to a different weapon instead
    		RAISE_ABORT			: +NEW_WEAPON
    	}
    }
    
    // This state allows the player to abort the raising 
    // of a weapon in favor of a different new weapon.
    state RAISE_ABORT
    {
    	entrycommands
    	{
    		deactivateweapon righthand
    	}
    	
    	states
    	{
    		RAISE_WEAPON	: default
    	}
    }
    
    //==============================================================================
    //==============================================================================
    //
    // Weapon Reloading
    //
    //==============================================================================
    
    state RELOAD_WEAPON
    {
    	states
    	{
    		RELOAD_SPRINGFIELD	: IS_WEAPON_ACTIVE "mainhand" "Springfield '03 Sniper"
    		RELOAD_SPRINGFIELD	: IS_WEAPON_ACTIVE "mainhand" "KAR98 - Sniper"
    		RELOAD_SHOTGUN		: IS_WEAPON_ACTIVE "mainhand" "Shotgun"
    
    		RELOAD_PISTOL		: IS_WEAPONCLASS_ACTIVE "mainhand" "pistol"
    		RELOAD_RIFLE		: IS_WEAPONCLASS_ACTIVE "mainhand" "rifle"
    		RELOAD_SMG			: IS_WEAPONCLASS_ACTIVE "mainhand" "smg"
    		RELOAD_MG			: IS_WEAPONCLASS_ACTIVE "mainhand" "mg"
    		RELOAD_GRENADE		: IS_WEAPONCLASS_ACTIVE "mainhand" "grenade"
    //		RELOAD_PISTOL		: IS_WEAPONCLASS_ACTIVE "mainhand" "item" // hold all items like a pistol for now
    		RELOAD_HEAVY		: IS_WEAPONCLASS_ACTIVE "mainhand" "heavy"
    
    		RELOAD_RIFLE		: default	
    	}
    }
    
    state RELOAD_RIFLE
    {
    	movetype legs
    
    	entrycommands
    	{
    		zoomoff
    		viewmodelanim reload
    	}
    
    	action
    	{
    		kar98_reload		: IS_WEAPON_ACTIVE "mainhand" "Mauser KAR 98K"
    		rifle_reload		: default
    	}
    
    	states
    	{
    		STAND	 			: KILLED
    		STAND				: ANIMDONE_TORSO
    		RELOAD_INTERUPTED	: NEW_WEAPON
    		
    		RELOAD_INTERUPTED	: IS_USING_VEHICLE
    		RELOAD_INTERUPTED	: IS_USING_TURRET
    	}
    }
    
    state RELOAD_SMG
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim reload
    	}
    
    	action
    	{
    		mp40_reload			: IS_WEAPON_ACTIVE "mainhand" "MP40"
    //            	moschetto_reload          	: IS_WEAPON_ACTIVE "mainhand" "Moschetto"
    		smg_reload			: default
    	}
    
    	states
    	{
    		STAND	 			: KILLED
    		STAND				: ANIMDONE_TORSO
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: NEW_WEAPON
    		
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: IS_USING_VEHICLE
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: IS_USING_TURRET
    	}
    }
    
    state RELOAD_MG
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim reload
    	}
    
    	action
    	{
    		mp44_reload			: IS_WEAPON_ACTIVE "mainhand" "StG 44"
    		mg_reload			: default
    	}
    
    	states
    	{
    		STAND	 			: KILLED
    		STAND				: ANIMDONE_TORSO
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: NEW_WEAPON
    		
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: IS_USING_VEHICLE
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: IS_USING_TURRET
    	}
    }
    
    state RELOAD_PISTOL
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim reload
    	}
    
    	action
    	{
    		p38_reload			: IS_WEAPON_ACTIVE "mainhand" "Walther P38"
    		histandard_reload	: IS_WEAPON_ACTIVE "mainhand" "Hi-Standard Silenced"
    		pistol_reload		: default
    	}
    
    	states
    	{
    		STAND	 			: KILLED
    		STAND				: ANIMDONE_TORSO
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: NEW_WEAPON
    		
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: IS_USING_VEHICLE
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: IS_USING_TURRET
    	}
    }
    
    state RELOAD_GRENADE
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim reload
    	}
    
    	action
    	{
    		steilhandgranate_reload	: IS_WEAPON_ACTIVE "mainhand" "Stielhandgranate"
    		grenade_reload			: default
    	}
    
    	states
    	{
    		STAND	 				: KILLED
    		STAND					: ANIMDONE_TORSO
    //		RELOAD_INTERUPTED		: NEW_WEAPON // so quick, don't bother with interupting it
    	}
    }
    
    state RELOAD_HEAVY
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim reload
    	}
    
    	action
    	{
    		panzerschreck_reload	: IS_WEAPON_ACTIVE "mainhand" "Panzerschreck"
    		bazooka_reload			: default
    	}
    
    	states
    	{
    		STAND	 				: KILLED
    		STAND					: ANIMDONE_TORSO
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: NEW_WEAPON
    		
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: IS_USING_VEHICLE
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: IS_USING_TURRET
    	}
    }
    
    
    // start of reloading the springfield
    state RELOAD_SPRINGFIELD
    {
    	movetype legs
    
    	entrycommands
    	{
    		zoomoff
    		viewmodelanim reload
    	}
    
    	action
    	{
    		springfield_reload_start	: default
    	}
    
    	states
    	{
    		STAND	 					: KILLED
    		RELOAD_SPRINGFIELD_SINGLE	: ANIMDONE_TORSO
    		RELOAD_INTERUPTED			: NEW_WEAPON
    		
    		RELOAD_INTERUPTED	: IS_USING_VEHICLE
    		RELOAD_INTERUPTED	: IS_USING_TURRET
    	}
    }
    
    // loads in a single bullet
    state RELOAD_SPRINGFIELD_SINGLE
    {
    	movetype legs
    	
    	entrycommands
    	{
    		viewmodelanim reload_single 1
    	}
    	
    	action
    	{
    		springfield_reload_loop				: default
    	}
    	
    	states
    	{
    		STAND	 							: KILLED
    //		RELOAD_INTERUPTED					: NEW_WEAPON
    		RELOAD_SPRINGFIELD_END				: NEW_WEAPON
    		
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: IS_USING_VEHICLE
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: IS_USING_TURRET
    
    		// allow early out
    		RELOAD_SPRINGFIELD_END				: +ATTACK_PRIMARY HAS_AMMO_IN_CLIP "mainhand" !RELOAD
    		RELOAD_SPRINGFIELD_END				: PUTAWAYMAIN
    
    		RELOAD_SPRINGFIELD_CHECK_CONTINUE	: ANIMDONE_TORSO
    	}
    }
    
    // this check to see if the springfield should continue reloading, or if it's done
    state RELOAD_SPRINGFIELD_CHECK_CONTINUE
    {
    	movetype legs
    
    	entrycommands
    	{
    		reload // this makes the weapon want to continue reloading if it can
    	}
    	
    	action
    	{
    		none					: default
    	}
    	
    	states
    	{
    //		RELOAD_INTERUPTED			: NEW_WEAPON
    
    		RELOAD_SPRINGFIELD_SINGLE	: RELOAD
    		RELOAD_SPRINGFIELD_END		: default
    	}
    }
    
    // this is the end of the shotgun reload sequence
    state RELOAD_SPRINGFIELD_END
    {
    	movetype legs
    	
    	entrycommands
    	{
    		viewmodelanim reload_end
    
    		// just in case we interupted a shell reload
    //		correctweaponattachments
    	}
    	
    	action
    	{
    		springfield_reload_end	: default
    	}
    
    	states
    	{
    		STAND	 				: KILLED
    		STAND	 				: ANIMDONE_TORSO
    //		RELOAD_INTERUPTED		: NEW_WEAPON
    	}
    }
    
    
    // start of reloading the shotgun
    state RELOAD_SHOTGUN
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim reload
    	}
    
    	action
    	{
    		shotgun_reload_start	: default
    	}
    
    	states
    	{
    		STAND	 				: KILLED
    		RELOAD_SHOTGUN_SINGLE	: ANIMDONE_TORSO
    		RELOAD_INTERUPTED		: NEW_WEAPON
    		
    		RELOAD_INTERUPTED	: IS_USING_VEHICLE
    		RELOAD_INTERUPTED	: IS_USING_TURRET
    	}
    }
    
    // loads in a single shotgun shell
    state RELOAD_SHOTGUN_SINGLE
    {
    	movetype legs
    	
    	entrycommands
    	{
    		viewmodelanim reload_single 1
    	}
    	
    	action
    	{
    		shotgun_reload_loop				: default
    	}
    	
    	states
    	{
    		STAND	 						: KILLED
    //		RELOAD_INTERUPTED				: NEW_WEAPON
    		RELOAD_SHOTGUN_END				: NEW_WEAPON
    		
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: IS_USING_VEHICLE
    		RELOAD_INTERUPTED_CORRECT_ATTACHMENTS	: IS_USING_TURRET
    
    		// allow early out
    		RELOAD_SHOTGUN_END				: +ATTACK_PRIMARY HAS_AMMO_IN_CLIP "mainhand" !RELOAD
    		RELOAD_SHOTGUN_END				: PUTAWAYMAIN
    		
    		RELOAD_SHOTGUN_CHECK_CONTINUE	: ANIMDONE_TORSO
    	}
    }
    
    // this check to see if the shotgun should continue reloading, or if it's done
    state RELOAD_SHOTGUN_CHECK_CONTINUE
    {
    	movetype legs
    
    	entrycommands
    	{
    		reload // this makes the weapon want to continue reloading if it can
    	}
    	
    	action
    	{
    		none					: default
    	}
    	
    	states
    	{
    		RELOAD_SHOTGUN_SINGLE	: RELOAD
    
    //		RELOAD_INTERUPTED		: NEW_WEAPON
    		
    		RELOAD_SHOTGUN_END		: default
    	}
    }
    
    // this is the end of the shotgun reload sequence
    state RELOAD_SHOTGUN_END
    {
    	movetype legs
    	
    	entrycommands
    	{
    		viewmodelanim reload_end
    		
    		// just in case we interupted a shell reload
    //		correctweaponattachments
    	}
    	
    	action
    	{
    		shotgun_reload_end	: default
    	}
    
    	states
    	{
    		STAND	 			: KILLED
    		STAND	 			: ANIMDONE_TORSO
    //		RELOAD_INTERUPTED	: NEW_WEAPON
    	}
    }
    
    state RELOAD_INTERUPTED
    {
    	states
    	{
    		STAND	: default
    	}
    }
    
    state RELOAD_INTERUPTED_CORRECT_ATTACHMENTS
    {
    	entrycommands
    	{
    		correctweaponattachments
    	}
    	
    	states
    	{
    		STAND	: default
    	}
    }
    
    //==============================================================================
    //==============================================================================
    //
    // Pain
    //
    //==============================================================================
    
    state PAIN
    {
    	movetype legs
    
     	entrycommands
    	{
    		// clear the pain out
    		nextpaintime 0.05
    	}
    
    	states
    	{
    		PAIN_SHOTGUN	: IS_WEAPON_ACTIVE "mainhand" "Shotgun"
    
    		PAIN_PISTOL		: IS_WEAPONCLASS_ACTIVE "mainhand" "pistol"
    		PAIN_RIFLE		: IS_WEAPONCLASS_ACTIVE "mainhand" "rifle"
    		PAIN_SMG		: IS_WEAPONCLASS_ACTIVE "mainhand" "smg"
    		PAIN_MG			: IS_WEAPONCLASS_ACTIVE "mainhand" "mg"
    		PAIN_GRENADE	: IS_WEAPONCLASS_ACTIVE "mainhand" "grenade"
    		PAIN_HEAVY		: IS_WEAPONCLASS_ACTIVE "mainhand" "heavy"
    
    		PAIN_RIFLE		: default	
    	}
    }
    
    state PAIN_SHOTGUN
    {
    	action
    	{
    		shotgun_pain_ducked		: POSITION_TYPE "crouching"
    		shotgun_pain			: default
    	}
    
    	states
    	{
    		PAIN_WAIT_TILL_DONE		: default
    	}
    
    }
    
    state PAIN_PISTOL
    {
    	action
    	{
    		pistol_pain_ducked		: POSITION_TYPE "crouching"
    		pistol_pain				: default
    	}
    
    	states
    	{
    		PAIN_WAIT_TILL_DONE		: default
    	}
    }
    
    state PAIN_RIFLE
    {
    	action
    	{
    		rifle_pain_ducked		: POSITION_TYPE "crouching"
    		rifle_pain				: default
    	}
    
    	states
    	{
    		PAIN_WAIT_TILL_DONE		: default
    	}
    }
    
    state PAIN_SMG
    {
    	action
    	{
    		smg_pain_ducked			: POSITION_TYPE "crouching"
    		smg_pain				: default
    	}
    
    	states
    	{
    		PAIN_WAIT_TILL_DONE		: default
    	}
    }
    
    state PAIN_MG
    {
    	action
    	{
    		mg_pain_ducked		: POSITION_TYPE "crouching"
    		mg_pain				: default
    	}
    
    	states
    	{
    		PAIN_WAIT_TILL_DONE		: default
    	}
    }
    
    state PAIN_GRENADE
    {
    	action
    	{
    		mg_pain_ducked		: POSITION_TYPE "crouching"
    		mg_pain				: default
    	}
    
    	states
    	{
    		PAIN_WAIT_TILL_DONE		: default
    	}
    }
    
    state PAIN_HEAVY
    {
    	action
    	{
    		mg_pain_ducked		: POSITION_TYPE "crouching"
    		mg_pain				: default
    	}
    
    	states
    	{
    		PAIN_WAIT_TILL_DONE		: default
    	}
    }
    
    state PAIN_WAIT_TILL_DONE
    {
    	states
    	{
    		KILLED							: KILLED
    		PAIN							: PAIN
    
    		// allow the player to interupt a pain animation with an attack
    		CHECK_PRIMARY_ATTACK_SEMIAUTO	: +ATTACK_PRIMARY IS_WEAPON_SEMIAUTO "mainhand" IS_WEAPON_READY_TO_FIRE "mainhand"
    		CHECK_PRIMARY_ATTACK_FULLAUTO	: ATTACK_PRIMARY !IS_WEAPON_SEMIAUTO "mainhand" IS_WEAPON_READY_TO_FIRE "mainhand"
    		CHECK_SECONDARY_ATTACK			: +ATTACK_SECONDARY
    		
    		STAND							: ANIMDONE_TORSO
    	}
    }
    
    //==============================================================================
    //
    // Death
    //
    //==============================================================================
    
    state KILLED
    {
    	movetype anim
    
    	entrycommands
    	{
    		nextpaintime -1 // allow all pain calls to work properly for death anim selection
    	}
    
    	states
    	{
    		EXPLOSION_KILLED	: PAIN_TYPE "explosion"
    		EXPLOSION_KILLED	: PAIN_TYPE "grenade"
    		EXPLOSION_KILLED	: PAIN_TYPE "rocket"
    		KILLED_GENERIC		: default
    	}
    }
    
    state KILLED_GENERIC
    {
    	states
    	{
    		KILLED_RUNNING		: FORWARD_VELOCITY "130"
    		KILLED_CROUCHING	: POSITION_TYPE "crouching"
    		KILLED_STANDING		: default
    	}
    }
    
    state KILLED_RUNNING
    {
    	action
    	{
    		death_knockedup		: PAIN_DIRECTION "front" PAIN_THRESHOLD "50" CHANCE "30"
    		death_chest			: PAIN_DIRECTION "front" PAIN_THRESHOLD "50"
    		death_run			: default
    	}
    	
    	states
    	{
    		KILLED_WAIT_FOR_DONE	: default
    	}
    }
    
    state KILLED_CROUCHING
    {
    	action
    	{
    		death_frontcrouch	: PAIN_DIRECTION "rear"
    		rifle_pain_kneestodeath : default
    	}
    
    	states
    	{
    		KILLED_WAIT_FOR_DONE	: default
    	}
    }
    
    state KILLED_STANDING
    {
    	states
    	{
    		KILLED_LOWER_TORSO	: PAIN_LOCATION "pelvis"
    		KILLED_LOWER_TORSO	: PAIN_LOCATION "torso_lower"
    		KILLED_UPPER_TORSO	: PAIN_LOCATION "torso_mid"
    		KILLED_UPPER_TORSO	: PAIN_LOCATION "torso_upper"
    		KILLED_NECK			: PAIN_LOCATION "neck"
    		KILLED_HEAD			: PAIN_LOCATION "head"
    		KILLED_HEAD			: PAIN_LOCATION "helmet"
    		KILLED_RIGHT_ARM	: PAIN_LOCATION "r_arm_upper"
    		KILLED_RIGHT_ARM	: PAIN_LOCATION "r_arm_lower"
    		KILLED_RIGHT_ARM	: PAIN_LOCATION "r_hand"
    		KILLED_LEFT_ARM		: PAIN_LOCATION "l_arm_upper"
    		KILLED_LEFT_ARM		: PAIN_LOCATION "l_arm_lower"
    		KILLED_LEFT_ARM		: PAIN_LOCATION "l_hand"
    		KILLED_LEG			: PAIN_LOCATION "r_leg_upper"
    		KILLED_LEG			: PAIN_LOCATION "r_leg_lower"
    		KILLED_LEG			: PAIN_LOCATION "r_foot"
    		KILLED_LEG			: PAIN_LOCATION "l_leg_upper"
    		KILLED_LEG			: PAIN_LOCATION "l_leg_lower"
    		KILLED_LEG			: PAIN_LOCATION "l_foot"
    
    		KILLED_UPPER_TORSO	: default
    	}
    }
    
    state KILLED_LOWER_TORSO
    {
    	action
    	{
    		death_back			: PAIN_DIRECTION "front" CHANCE "60"
    		death_knockedup		: PAIN_DIRECTION "rear" CHANCE "35"
    		death_run			: PAIN_DIRECTION "rear" CHANCE "70"
    		death_crotch		: CHANCE "60"
    		death_chest			: default
    	}
    
    	states
    	{
    		KILLED_WAIT_FOR_DONE	: default
    	}
    }
    
    state KILLED_UPPER_TORSO
    {
    	action
    	{
    		death_knockedup		: PAIN_DIRECTION "front" CHANCE "20"
    		death_back			: PAIN_DIRECTION "front" CHANCE "60"
    		death_run			: PAIN_DIRECTION "rear" CHANCE "40"
    		death_frontchoke	: CHANCE "30"
    		death_shoot			: CHANCE "60"
    		death_chest			: default
    	}
    
    	states
    	{
    		KILLED_WAIT_FOR_DONE	: default
    	}
    }
    
    state KILLED_NECK
    {
    	action
    	{
    		death_frontchoke	: CHANCE "50"
    		death_choke			: default
    	}
    
    	states
    	{
    		KILLED_WAIT_FOR_DONE	: default
    	}
    }
    
    state KILLED_HEAD
    {
    	action
    	{
    		death_back			: PAIN_DIRECTION "front" CHANCE "50"
    		death_head_flyforward : PAIN_DIRECTION "rear" CHANCE "30"
    		death_headpistol	: CHANCE "20"
    		death_twist			: CHANCE "25"
    		death_shoot			: CHANCE "33"
    		death_fall_to_knees	: CHANCE "50"
    		death_collapse		: default
    	}
    
    	states
    	{
    		KILLED_WAIT_FOR_DONE	: default
    	}
    }
    
    state KILLED_RIGHT_ARM
    {
    	action
    	{
    		death_twist			: PAIN_DIRECTION "rear" CHANCE "50"
    		death_fall_back		: CHANCE "30"
    		death_shoot			: CHANCE "50"
    		death_chest			: default
    	}
    
    	states
    	{
    		KILLED_WAIT_FOR_DONE	: default
    	}
    }
    
    state KILLED_LEFT_ARM
    {
    	action
    	{
    		death_twist			: PAIN_DIRECTION "front" CHANCE "50"
    		death_fall_back		: CHANCE "30"
    		death_shoot			: CHANCE "50"
    		death_chest			: default
    	}
    
    	states
    	{
    		KILLED_WAIT_FOR_DONE	: default
    	}
    }
    
    state KILLED_LEG
    {
    	action
    	{
    		death_knockedup	: PAIN_DIRECTION "rear" CHANCE "50"
    		death_fall_back		: CHANCE "25"
    		death_shoot			: CHANCE "33"
    		death_fall_to_knees	: CHANCE "50"
    		death_chest			: default
    	}
    
    	states
    	{
    		KILLED_WAIT_FOR_DONE	: default
    	}
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    //state KILLED_GENERIC
    //{
    //	action
    //	{
    //		death_crouch	: POSITION_TYPE "crouching"
    //		
    //		death 			: default
    //	}
    //	
    //	states
    //	{
    //		KILLED_WAIT_FOR_DONE	: default
    //	}
    //}
    
    state EXPLOSION_KILLED
    {
    	action
    	{
    		death_explosion_large	: PAIN_THRESHOLD "150"
    //		death_explosion_small	: PAIN_THRESHOLD "130"
    		
    		// directional death animations of in middle damage range
    //		death_explosion_front	: PAIN_DIRECTION "rear"
    		death_explosion_back	: PAIN_DIRECTION "front"
    		death_explosion_left	: PAIN_DIRECTION "left"
    		death_explosion_right	: PAIN_DIRECTION "right"
    		
    		death_explosion_small	: default // a just-in-case catch-all
    	}
    	
    	states
    	{
    		KILLED_WAIT_FOR_DONE	: default
    	}
    }
    
    state KILLED_WAIT_FOR_DONE
    {
    	states
    	{
    		KILLED_DONE		: ANIMDONE_TORSO
    	}
    
    	exitcommands
    	{
    		dead	// Frees up resources and tells everyone I'm dead.
    	}
    }
    
    state KILLED_DONE
    {
    	movetype anim
    }
    
    
    //==============================================================================
    //==============================================================================
    //
    // Ladder Climbing
    //
    //==============================================================================
    
    state USE_LADDER
    {
    	movetype climbwall
    	
    	entrycommands
    	{
    		safeholster 1 // put our weapon away
    		attachtoladder // gets the ladder we're going to be climbing
    	}
    	
    //	action
    //	{
    //		none : default
    //	}
    	
    	states 
    	{
    //		PUTAWAY_MAIN		: PUTAWAYMAIN
    		LADDER_PUTAWAY		: PUTAWAYMAIN
    		LATCH_ONTO_LADDER	: !ONGROUND 
    		GET_ON_LADDER		: default
    	}
    }
    
    state LADDER_PUTAWAY
    {
    	entrycommands
    	{
    		deactivateweapon righthand
    	}
    	
    	states
    	{
    		LATCH_ONTO_LADDER	: !ONGROUND 
    		GET_ON_LADDER		: default
    	}
    }
    
    state GET_ON_LADDER
    {
    	movetype climbwall
    
    
    	// these entry commands ensure that the player 
    	// will be standing when he gets off the ladder
    	entrycommands
    	{
    		modheight "stand"
    		movementstealth "1.0"
    		moveposflags "standing"
    	}
    
    	action
    	{
    		ladder_geton_top		: AT_TOP_OF_LADDER
    		ladder_geton_bottom		: default
    	}
    	
    	states
    	{
    //		STAND					: KILLED
    		FINISHED_GET_OFF_LADDER	: KILLED
    	
    		// we go to LADDER_LEFT because the left hand will be up once we're on
    		LADDER_IDLE_LEFT		: ANIMDONE_TORSO
    	}
    }
    
    // This is for when the player grabs the ladder while not on the ground
    state LATCH_ONTO_LADDER
    {
    	movetype climbwall
    
    	// these entry commands ensure that the player 
    	// will be standing when he gets off the ladder
    	entrycommands
    	{
    		modheight "stand"
    		movementstealth "1.0"
    		moveposflags "standing"
    		tweakladderpos // make sure we're positioned properly on the ladder
    	}
    	
    	states
    	{
    //		LADDER_IDLE_LEFT		: default
    		LADDER_DOWN_LEFT		: default
    	}
    }
    
    state GET_OFF_LADDER_TOP
    {
    	movetype climbwall
    	
    	action
    	{
    		ladder_getoff_top		: default
    	}
    	
    	states
    	{
    		FINISHED_GET_OFF_LADDER	: KILLED
    		
    		FINISHED_GET_OFF_LADDER	: ANIMDONE_TORSO
    	}
    }
    
    state GET_OFF_LADDER_BOTTOM
    {
    	movetype climbwall
    	
    	action
    	{
    		ladder_getoff_bottom	: default
    	}
    	
    	states
    	{
    		FINISHED_GET_OFF_LADDER	: KILLED
    	
    		FINISHED_GET_OFF_LADDER	: ANIMDONE_TORSO
    	}
    }
    
    state FINISHED_GET_OFF_LADDER
    {
    	movetype legs
    	
    	entrycommands
    	{
    		unattachfromladder
    		safeholster 0 // pull weapon back out if we put it away to get on the ladder
    	}
    
    	states
    	{
    		STAND					: default
    	}
    }
    
    // same as FINISHED_GET_OFF_LADDER, except that the player is jumping off
    state JUMP_OFF_LADDER
    {
    	movetype legs
    	
    	entrycommands
    	{
    		unattachfromladder
    		safeholster 0 // pull weapon back out if we put it away to get on the ladder
    		jumpxy -70 0 150
    	}
    
    	states
    	{
    		STAND			: default
    	}
    }
    
    // idling on a ladder with the left hand high
    state LADDER_IDLE_LEFT
    {
    	movetype climbwall
    
    	entrycommands
    	{
    //		viewmodelanim idle
    		tweakladderpos // make sure we're positioned properly on the ladder
    	}
    	
    	action
    	{
    		ladder_idle_left		: default
    	}
    
    	states
    	{
    //		STAND					: KILLED
    		FINISHED_GET_OFF_LADDER	: KILLED
    		
    		// check for emergency getaway
    		JUMP_OFF_LADDER			: +JUMP
    		
    		PUTAWAY_MAIN			: PUTAWAYMAIN	// just in case the weapon isn't put away yet
    		
    		// check for getting off top of the ladder
    		GET_OFF_LADDER_TOP		: FORWARD LOOKING_UP "-30" CAN_GET_OFF_LADDER_TOP
    		GET_OFF_LADDER_TOP		: BACKWARD !LOOKING_UP "-30" CAN_GET_OFF_LADDER_TOP
    
    		// check for getting off bottom of the ladder
    		GET_OFF_LADDER_BOTTOM	: FORWARD !LOOKING_UP "-30" CAN_GET_OFF_LADDER_BOTTOM
    		GET_OFF_LADDER_BOTTOM	: BACKWARD LOOKING_UP "-30" CAN_GET_OFF_LADDER_BOTTOM
    		
    		LADDER_UP_RIGHT			: FORWARD LOOKING_UP "-30" CAN_CLIMB_UP_LADDER
    		LADDER_UP_RIGHT			: BACKWARD !LOOKING_UP "-30" CAN_CLIMB_UP_LADDER
    		
    		LADDER_DOWN_LEFT		: FORWARD !LOOKING_UP "-30" CAN_CLIMB_DOWN_LADDER
    		LADDER_DOWN_LEFT		: BACKWARD LOOKING_UP "-30" CAN_CLIMB_DOWN_LADDER
    		
    //		LADDER_SLIDE			: CROUCH
    		
    //		GET_OFF_LADDER			: +USE
    	}
    }
    
    // idling on a ladder with the right hand high
    state LADDER_IDLE_RIGHT
    {
    	movetype climbwall
    	
    	entrycommands
    	{
    //		viewmodelanim idle
    		tweakladderpos // make sure we're positioned properly on the ladder
    	}
    	
    	action
    	{
    		ladder_idle_right		: default
    	}
    	
    	states
    	{
    //		STAND					: KILLED
    		FINISHED_GET_OFF_LADDER	: KILLED
    	
    		// check for emergency getaway
    		JUMP_OFF_LADDER			: +JUMP
    		
    		PUTAWAY_MAIN			: PUTAWAYMAIN	// just in case the weapon isn't put away yet
    		
    		// check for getting off top of the ladder
    		GET_OFF_LADDER_TOP		: FORWARD LOOKING_UP "-30" CAN_GET_OFF_LADDER_TOP
    		GET_OFF_LADDER_TOP		: BACKWARD !LOOKING_UP "-30" CAN_GET_OFF_LADDER_TOP
    
    		// check for getting off bottom of the ladder
    		GET_OFF_LADDER_BOTTOM	: FORWARD !LOOKING_UP "-30" CAN_GET_OFF_LADDER_BOTTOM
    		GET_OFF_LADDER_BOTTOM	: BACKWARD LOOKING_UP "-30" CAN_GET_OFF_LADDER_BOTTOM
    		
    		LADDER_UP_LEFT			: FORWARD LOOKING_UP "-30" CAN_CLIMB_UP_LADDER
    		LADDER_UP_LEFT			: BACKWARD !LOOKING_UP "-30" CAN_CLIMB_UP_LADDER
    		
    		LADDER_DOWN_RIGHT		: FORWARD !LOOKING_UP "-30" CAN_CLIMB_DOWN_LADDER
    		LADDER_DOWN_RIGHT		: BACKWARD LOOKING_UP "-30" CAN_CLIMB_DOWN_LADDER
    		
    //		LADDER_SLIDE			: CROUCH
    
    //		GET_OFF_LADDER			: +USE
    	}
    }
    
    state LADDER_UP_LEFT
    {
    	movetype climbwall
    	
    	entrycommands
    	{
    //		tweakladderpos // make sure we're positioned properly on the ladder
    	}
    	
    	action
    	{
    		ladder_up_left			: default
    	}
    	
    	states
    	{
    //		STAND					: KILLED
    		FINISHED_GET_OFF_LADDER	: KILLED
    		
    //		LADDER_SLIDE			: CROUCH
    		
    		// check for emergency getaway
    		JUMP_OFF_LADDER			: +JUMP
    		
    		LADDER_IDLE_LEFT		: ANIMDONE_TORSO
    	}
    }
    
    state LADDER_UP_RIGHT
    {
    	movetype climbwall
    	
    	entrycommands
    	{
    //		tweakladderpos // make sure we're positioned properly on the ladder
    	}
    	
    	action
    	{
    		ladder_up_right			: default
    	}
    	
    	states
    	{
    //		STAND					: KILLED
    		FINISHED_GET_OFF_LADDER	: KILLED
    		
    //		LADDER_SLIDE			: CROUCH
    		
    		// check for emergency getaway
    		JUMP_OFF_LADDER			: +JUMP
    		
    		LADDER_IDLE_RIGHT		: ANIMDONE_TORSO
    	}
    }
    
    state LADDER_DOWN_LEFT
    {
    	movetype climbwall
    	
    	entrycommands
    	{
    //		tweakladderpos // make sure we're positioned properly on the ladder
    	}
    	
    	action
    	{
    		ladder_down_left		: default
    	}
    	
    	states
    	{
    //		STAND					: KILLED
    		FINISHED_GET_OFF_LADDER	: KILLED
    		
    //		LADDER_SLIDE			: CROUCH
    		
    		// check for emergency getaway
    		JUMP_OFF_LADDER			: +JUMP
    		
    		LADDER_IDLE_RIGHT		: ANIMDONE_TORSO
    	}
    }
    
    state LADDER_DOWN_RIGHT
    {
    	movetype climbwall
    	
    	entrycommands
    	{
    //		tweakladderpos // make sure we're positioned properly on the ladder
    	}
    	
    	action
    	{
    		ladder_down_right		: default
    	}
    	
    	states
    	{
    //		STAND					: KILLED
    		FINISHED_GET_OFF_LADDER	: KILLED
    		
    //		LADDER_SLIDE			: CROUCH
    		
    		// check for emergency getaway
    		JUMP_OFF_LADDER			: +JUMP
    		
    		LADDER_IDLE_LEFT		: ANIMDONE_TORSO
    	}
    }
    
    state LADDER_SLIDE
    {
    	movetype climbwall
    	
    	action
    	{
    		ladder_slide			: default
    	}
    	
    	states
    	{
    //		STAND					: KILLED
    		FINISHED_GET_OFF_LADDER	: KILLED
    		
    		// check for emergency getaway
    		FINISHED_GET_OFF_LADDER	: +JUMP
    		
    		FINISHED_GET_OFF_LADDER	: ONGROUND
    		LADDER_IDLE_LEFT		: !CROUCH
    	}
    }
    
    //==============================================================================
    //==============================================================================
    //
    // Generic Use
    //
    //==============================================================================
    
    state GENERIC_USE
    {
    	entrycommands
    	{
    		usestuff
    	}
    
    	states
    	{
    		STAND	: default
    	}
    }
    
    
    //==============================================================================
    //==============================================================================
    //
    // Vehicles
    //
    //==============================================================================
    
    state VEHICLE_PUTAWAY
    {
    	entrycommands
    	{
    		deactivateweapon righthand
    	}
    	
    	states
    	{
    		VEHICLE_IDLE	: default
    	}
    }
    
    state VEHICLE_START
    {
    //	movetype anim
    	
    //	action
    //	{
    //		vehicle_idle			: default
    //	}
    	
    	states
    	{
    		VEHICLE_PUTAWAY	: PUTAWAYMAIN	// Basic put weapon away move.
    		VEHICLE_IDLE	: default
    	}
    }
    
    state VEHICLE_IDLE
    {
    	movetype anim
    	
    	action
    	{
    		vehicle_idle	: default
    	}
    	
    	states
    	{
    		VEHICLE_USE		: +USE
    		STAND			: !IS_USING_VEHICLE
    	}
    }
    
    state VEHICLE_USE
    {
    	movetype anim
    
    //	entrycommands
    //	{
    //		usestuff
    //	}
    
    	action
    	{
    		vehicle_idle			: default
    	}
    
    	states
    	{
    		VEHICLE_IDLE	: default
    	}
    }
    
    
    //==============================================================================
    //==============================================================================
    //
    // Turrets
    //
    //==============================================================================
    
    state TURRET_PUTAWAY
    {
    	entrycommands
    	{
    		deactivateweapon righthand
    	}
    	
    	states
    	{
    		TURRET_IDLE		: default
    	}
    }
    
    state TURRET_START
    {
    //	movetype anim
    	
    //	action
    //	{
    //		turret_idle		: default
    //	}
    	
    	states
    	{
    		TURRET_PUTAWAY	: PUTAWAYMAIN	// Basic put weapon away move.
    		TURRET_IDLE		: default
    	}
    }
    
    state TURRET_IDLE
    {
    	movetype anim
    	
    	action
    	{
    		turret_idle		: default
    	}
    	
    	states
    	{
    //		TURRET_USE		: +USE
    //		GENERIC_USE		: +USE
    		STAND			: !IS_USING_TURRET
    	}
    }
    
    //state TURRET_USE
    //{
    //	movetype anim
    //
    //	entrycommands
    //	{
    //		usestuff
    //	}
    //
    //	action
    //	{
    //		turret_idle		: default
    //	}
    //
    //	states
    //	{
    //		TURRET_IDLE	: default
    //	}
    //}
    moschetto.tik :
    Code:
    TIKI
    setup
    {
    	scale 0.52			// Set default scale to 16/30.5 since world is in 16 units per foot and model is in cm's
    	path models/weapons/moscheto
    	skelmodel moscheto.skd
    	surface material1 shader moscheto
    	surface material2 shader moscheto
    	surface Clip shader moscheto
    
    }
    
    init
    {
    	server
    	{
    		classname		Weapon
    		weapontype		smg
    		name			"Moschetto"
    		rank			410 410
    
    		pickupsound		mp40_snd_pickup
    		ammopickupsound	mp40_snd_pickup_ammo
    		noammosound		mp40_snd_noammo
    
    		// Holstering info
    //		holstertag		"Bip01 Spine2"
    //		holsteroffset	"8.0 -7.75 6.5"
    //		holsterangles	"0 185 -25"
    //		holsterScale	1.0
    
    		// Primary fire type info
    		firetype		bullet
    		ammotype		"smg"
    		meansofdeath	bullet
    		bulletcount		1
    		clipsize		40
    		startammo		20
    		ammorequired	1
    //		firedelay		0.12 //(500 rpm) In game seems slow for 500 rpm...
    		firedelay 		0.095 //Adjusted test value
    
    		//========================================//
    		//		WEAPON ACCURACY MODELLING	//
    		//========================================//
    
    //		MP-40: Max Eff. Range is 50 yds with a muzzle velocity of 805 ft/s. (9mm Parabellum round)
    
    		bulletrange		4000	 			//the range at which bulletspread is applied
    		bulletspread	53 53 70 70 		//minpitch minyaw maxpitch maxyaw
    		bulletdamage 	23.5
    		firespreadmult	0.08 0.35 200 0.25 	//add falloff cap maxtime
    		movementspeed 	1.0
    
    		tracerfrequency 2
    
    		crosshair		1
    
    		airange			short
    
    		// AI animation group info
    		weapongroup		mp40
    
    		// DM Attributes
    		dmbulletcount	1
    		dmstartammo		200
    		dmammorequired	1
    		dmfiredelay		0.086
    
    		dmbulletrange	4000
    		dmbulletspread	38 38 50 50	 	//30 30 50 50 		//25 25 48 48 		//25 25 45 45		//50 50 89 89 		//50 50 120 120
    		dmfirespreadmult	0.3 0.6 150 0.25	//0.3 0.8 150 0.4		//0.08 0.35 200 0.25 	//0.3 0.8 200 0.4 original
    		dmbulletdamage	25			//26	//33
    		dmmovementspeed	0.96
    
    		dmcrosshair		1
    
    		// this is attached to the player during reload
    		cache models/ammo/mp40_clip.tik
    	}
    	client
    	{
    		cache tracer.spr
    		cache muzsprite.spr
    		cache corona_util.spr
    		cache models/fx/muzflash.tik
    		cache models/ammo/pistolshell.tik
    	}
    }
    
    animations
    {
    	idle	moscheto_dummy.skc
    	reload	moscheto_reload.skc
    	{
    		server
    		{
    			10 surface clip +nodraw
    			48 surface clip -nodraw
    			last idle
    		}
    		client
    		{
    			entry sound mp40_snd_reload item
    		}
    	}
    	fire	moscheto_fire.skc
    	{
    		server
    		{
    			entry shoot
    		}
    		client
    		{
    			entry stopaliaschannel mp40_snd_fire
    			entry sound mp40_snd_fire
    
    			// By now, the server has already fired the weapon, so it's
    			// ok to apply the view kick apon entry to avoid problems
    			// with multiple application on single frame animations.
    
    			////////////////////////////////////////////////////////////////////////////////////////
    			// View Kicking
    			//
    			// View Kicking works based on the assumptions that every weapon has its own tendencies to kick in
    			// a paticular fashion. In MOH we call then scatter patterns. Currently we have 2 scatter patterns which
    			// will be explained.
    			// Scatter Patterns:
    			// "V" - the cone. The longer you shoot the more random your shots will be in the horizontal axis.
    			// "T" - the T shape. The gun has a tendancy to push in a paticular direction.
    			//
    			//
    			//             		+-------------------------------------------- Scatter Pitch Min
    			//              		|    +--------------------------------------- Scatter Pitch Max
    			//              		|    |       +------------------------------- Scatter Yaw Min
    			//             		|    |       |   +--------------------------- Scatter Yaw Max
    			//             		|    |       |   |     +--------------------- The Recentering speed in fraction per second
    			//              		|    |       |   |     |    +---------------- The Scatter Pattern
    			//              		|    |       |   |     |    |     +---------- The absolute pitch min/max
    			//              		|    |       |   |     |    |     |  +------- The absolute yaw min/max
    			//              		|    |       |   |     |    |     |  | +----- This is the pitch at which you loose all
    			//              		|    |       |   |     |    |     |  | |      control of the weapon and its behavior is
    			//             	 	|    |       |   |     |    |     |  | |      purely random.
    			//				V    V       V   V     V    V     V  V V
    
    			entry viewkick 	    -1.65 -1.65  -0.12 0.12  1   "V"   8.5 8.6 16.0
    //			entry viewkick 	    -1.65 -1.65  -0.04 0.04  1   "V"   8.5 8.6 16.0 (Nov 10 2001)
    //			entry viewkick 	    -1.58 -1.58  -0.16 -0.16 0.9   "V"   8.5 8.6 16.0 (Thompson Nov 10 2001)
    
    
    			// muzzle flash
    			entry tagdlight tag_barrel 0.25 0.2 0.15 110 0.11
    
    /////BIG ONE START
    			entry tagspawn tag_barrel
    			(
    				count 1
    				model models/fx/muzflash.tik
    				color 1.00 1.00 1.00
    				alpha 0.30
    				scale 0.45
    				life 0.05
    				offsetalongaxis 5 1 0
    				fade
    				randomroll
    			)
    
    			entry tagspawn tag_barrel
    			(
    				count 1
    				model muzsprite.spr
    				alpha 0.70
    				color 1.00 1.00 1.00
    				scale 0.50
    				life 0.05
    				offsetalongaxis 5 0 0
    				fade
    				randomroll
    			)
    
    //			entry tagspawn tag_barrel
    //			(
    //				count 1
    //				model corona_util.spr
    //				color 1.00 1.00 1.00
    //				scale 0.10
    //				life 0.05
    //				scalerate 11.00
    //				fade
    //				randomroll
    //			)
    /////BIG ONE END
    			entry tagspawn tag_barrel
    			(
    				model vsssource.spr
    				count 3
    				alpha 0.40
    				color 0.50 0.50 0.50
    				spritegridlighting
    				scale 0.20
    //				life 0.90
    				life 0.30 //orig 1.0
    				scalerate 3.00
    				radius 6.00
    				velocity 23.00
    				accel 0.00 0.00 20.00
    				friction 3.00
    				fade
    				sphere
    			)
    
    //			entry tagspawn tag_barrel
    //			(
    //				count 1
    //				model muzsprite.spr
    //				color 1.00 1.00 1.00
    //				life 0.06
    //				scalerate 56.00
    //				velocity 2555.00
    //				offsetalongaxis 5 0 0
    //				angles 0 0 crandom -90
    //				avelocity 0 0 crandom -80
    //				scalemin 0.04
    //				scalemax 0.08
    //				fade
    //			)
    
    //			entry tagspawn tag_barrel
    //			(
    //				count 1
    //				model models/fx/muzflash.tik
    //				color 1.00 1.00 1.00
    //				scale 0.20
    //				life 0.05
    //				velocity 213.00
    //				offset random 2 0 0
    //				angles -180 0 0
    //				alignstretch 0.10
    //			)
    
    			// smoke puff
    			entry commanddelay 0.1 tagspawn tag_eject
    			(
    				count 1
    				model vsssource.spr
    				alpha 0.20
    				color 1.00 1.00 1.00
    				spritegridlighting
    				scale 0.10
    //				life 0.90
    				life 0.30 //orig 1.0
    				scalerate 14.00
    				velocity 79.00
    				offsetalongaxis 0 0 -12
    				angles 0 0 range 180 360
    				fade
    			)
    
    			// shell eject
    			entry commanddelay 0.1 tagspawn tag_eject
    			(
    				count 1
    				model models/ammo/pistolshell.tik
    				spawnrange 1024
    				scale .75
    				velocity 50
    				randvel crandom 10 crandom 10 random 20
    				emitterangles 0 0 0
    				avelocity crandom 90 crandom 90 0
    				accel 0 0 -800
    				physicsrate 20
    				life 2.0
    				fadedelay 1.7
    				collision
    				offsetalongaxis 0 0 -12
    				bouncefactor 0.2
    				bouncesoundonce snd_pistol_shell
    			)
    		}
    	}
    
    
    
    	guardfire_a	moscheto.skc
    	{
    
    		client
    		{
    			entry stopaliaschannel mp40_snd_fire
    			entry sound mp40_snd_fire
    
    			// By now, the server has already fired the weapon, so it's
    			// ok to apply the view kick apon entry to avoid problems
    			// with multiple application on single frame animations.
    
    			////////////////////////////////////////////////////////////////////////////////////////
    			// View Kicking
    			//
    			// View Kicking works based on the assumptions that every weapon has its own tendencies to kick in
    			// a paticular fashion. In MOH we call then scatter patterns. Currently we have 2 scatter patterns which
    			// will be explained.
    			// Scatter Patterns:
    			// "V" - the cone. The longer you shoot the more random your shots will be in the horizontal axis.
    			// "T" - the T shape. The gun has a tendancy to push in a paticular direction.
    			//
    			//
    			//             		+-------------------------------------------- Scatter Pitch Min
    			//              		|    +--------------------------------------- Scatter Pitch Max
    			//              		|    |       +------------------------------- Scatter Yaw Min
    			//             		|    |       |   +--------------------------- Scatter Yaw Max
    			//             		|    |       |   |     +--------------------- The Recentering speed in fraction per second
    			//              		|    |       |   |     |    +---------------- The Scatter Pattern
    			//              		|    |       |   |     |    |     +---------- The absolute pitch min/max
    			//              		|    |       |   |     |    |     |  +------- The absolute yaw min/max
    			//              		|    |       |   |     |    |     |  | +----- This is the pitch at which you loose all
    			//              		|    |       |   |     |    |     |  | |      control of the weapon and its behavior is
    			//             	 	|    |       |   |     |    |     |  | |      purely random.
    			//				V    V       V   V     V    V     V  V V
    			entry viewkick 	    -1.75 -1.75  -0.04 0.04  1   "V"   8.5 8.6 16.0
    
    //			entry viewkick 	    -1.2 -1.2    -0.2  0.2   1   "V"   3.0 1.0 1.6 (Colt .45 Pistol
    //			entry viewkick -2.5 -3.0   -0.8 0.8 (original setting)
    
    			// muzzle flash
    			entry tagdlight tag_barrel 0.25 0.2 0.05 110 0.11
    
    /////BIG ONE START
    			entry tagspawn tag_barrel
    			(
    				count 1
    				model models/fx/muzflash.tik
    				color 1.00 1.00 1.00
    				scale 0.60
    				life 0.05
    				offsetalongaxis -5 0 0
    				fade
    				randomroll
    			)
    
    			entry tagspawn tag_barrel
    			(
    				count 1
    				model muzsprite.spr
    				alpha 0.70
    				color 1.00 1.00 1.00
    				scale 0.60
    				life 0.05
    				offsetalongaxis 3 0 0
    				fade
    				randomroll
    			)
    
    			entry tagspawn tag_barrel
    			(
    				count 1
    				model corona_util.spr
    				color 1.00 1.00 1.00
    				scale 0.10
    				life 0.05
    				scalerate 11.00
    				fade
    				randomroll
    			)
    /////BIG ONE END
    			entry tagspawn tag_barrel
    			(
    				model vsssource.spr
    				count 3
    				alpha 0.40
    				color 0.50 0.50 0.50
    				scale 0.20
    				life 0.90
    				scalerate 3.00
    				radius 6.00
    				velocity 23.00
    				accel 0.00 0.00 20.00
    				friction 3.00
    				fade
    				sphere
    			)
    
    			entry tagspawn tag_barrel
    			(
    				count 1
    				model muzsprite.spr
    				color 1.00 1.00 1.00
    				life 0.06
    				scalerate 56.00
    				velocity 2555.00
    				offsetalongaxis 5 0 0
    				angles 0 0 crandom -90
    				avelocity 0 0 crandom -80
    				scalemin 0.04
    				scalemax 0.08
    				fade
    			)
    
    			entry tagspawn tag_barrel
    			(
    				count 1
    				model models/fx/muzflash.tik
    				color 1.00 1.00 1.00
    				scale 0.20
    				life 0.05
    				velocity 213.00
    				offset random 2 0 0
    				angles -180 0 0
    				alignstretch 0.10
    			)
    
    			// shell eject
    			entry commanddelay 0.1 tagspawn tag_eject
    			(
    				count 1
    				model models/ammo/pistolshell.tik
    				spawnrange 1024
    				scale .75
    				velocity 50
    				randvel crandom 10 crandom 10 random 20
    				emitterangles 0 0 0
    				avelocity crandom 90 crandom 90 0
    				accel 0 0 -800
    				physicsrate 20
    				life 2.0
    				fadedelay 1.7
    				collision
    				offsetalongaxis 0 0 -12
    				bouncefactor 0.2
    				bouncesoundonce snd_pistol_shell
    			)
    
    			// smoke puff
    			entry commanddelay 0.1 tagspawn tag_eject
    			(
    				count 1
    				model vsssource.spr
    				alpha 0.20
    				color 1.00 1.00 1.00
    				scale 0.10
    				life 0.90
    				scalerate 14.00
    				velocity 79.00
    				offsetalongaxis 0 0 -12
    				angles 0 0 range 180 360
    				fade
    			)
    		}
    	}
    
    	guardfire_b	moscheto.skc
    	{
    
    		client
    		{
    			entry stopaliaschannel mp40_snd_fire
    			entry sound mp40_snd_fire
    
    			// By now, the server has already fired the weapon, so it's
    			// ok to apply the view kick apon entry to avoid problems
    			// with multiple application on single frame animations.
    
    			////////////////////////////////////////////////////////////////////////////////////////
    			// View Kicking
    			//
    			// View Kicking works based on the assumptions that every weapon has its own tendencies to kick in
    			// a paticular fashion. In MOH we call then scatter patterns. Currently we have 2 scatter patterns which
    			// will be explained.
    			// Scatter Patterns:
    			// "V" - the cone. The longer you shoot the more random your shots will be in the horizontal axis.
    			// "T" - the T shape. The gun has a tendancy to push in a paticular direction.
    			//
    			//
    			//             		+-------------------------------------------- Scatter Pitch Min
    			//              		|    +--------------------------------------- Scatter Pitch Max
    			//              		|    |       +------------------------------- Scatter Yaw Min
    			//             		|    |       |   +--------------------------- Scatter Yaw Max
    			//             		|    |       |   |     +--------------------- The Recentering speed in fraction per second
    			//              		|    |       |   |     |    +---------------- The Scatter Pattern
    			//              		|    |       |   |     |    |     +---------- The absolute pitch min/max
    			//              		|    |       |   |     |    |     |  +------- The absolute yaw min/max
    			//              		|    |       |   |     |    |     |  | +----- This is the pitch at which you loose all
    			//              		|    |       |   |     |    |     |  | |      control of the weapon and its behavior is
    			//             	 	|    |       |   |     |    |     |  | |      purely random.
    			//				V    V       V   V     V    V     V  V V
    			entry viewkick 	    -1.75 -1.75  -0.04 0.04  1   "V"   8.5 8.6 16.0
    
    //			entry viewkick 	    -1.2 -1.2    -0.2  0.2   1   "V"   3.0 1.0 1.6 (Colt .45 Pistol
    //			entry viewkick -2.5 -3.0   -0.8 0.8 (original setting)
    
    			// muzzle flash
    			entry tagdlight tag_barrel 0.25 0.2 0.05 110 0.11
    
    /////BIG ONE START
    			entry tagspawn tag_barrel
    			(
    				count 1
    				model models/fx/muzflash.tik
    				color 1.00 1.00 1.00
    				scale 0.60
    				life 0.05
    				offsetalongaxis -5 0 0
    				fade
    				randomroll
    			)
    
    			entry tagspawn tag_barrel
    			(
    				count 1
    				model muzsprite.spr
    				alpha 0.70
    				color 1.00 1.00 1.00
    				scale 0.60
    				life 0.05
    				offsetalongaxis 3 0 0
    				fade
    				randomroll
    			)
    
    			entry tagspawn tag_barrel
    			(
    				count 1
    				model corona_util.spr
    				color 1.00 1.00 1.00
    				scale 0.10
    				life 0.05
    				scalerate 11.00
    				fade
    				randomroll
    			)
    /////BIG ONE END
    			entry tagspawn tag_barrel
    			(
    				model vsssource.spr
    				count 3
    				alpha 0.40
    				color 0.50 0.50 0.50
    				scale 0.20
    				life 0.90
    				scalerate 3.00
    				radius 6.00
    				velocity 23.00
    				accel 0.00 0.00 20.00
    				friction 3.00
    				fade
    				sphere
    			)
    
    			entry tagspawn tag_barrel
    			(
    				count 1
    				model muzsprite.spr
    				color 1.00 1.00 1.00
    				life 0.06
    				scalerate 56.00
    				velocity 2555.00
    				offsetalongaxis 5 0 0
    				angles 0 0 crandom -90
    				avelocity 0 0 crandom -80
    				scalemin 0.04
    				scalemax 0.08
    				fade
    			)
    
    			entry tagspawn tag_barrel
    			(
    				count 1
    				model models/fx/muzflash.tik
    				color 1.00 1.00 1.00
    				scale 0.20
    				life 0.05
    				velocity 213.00
    				offset random 2 0 0
    				angles -180 0 0
    				alignstretch 0.10
    			)
    
    			// shell eject
    			entry commanddelay 0.1 tagspawn tag_eject
    			(
    				count 1
    				model models/ammo/pistolshell.tik
    				spawnrange 1024
    				scale .75
    				velocity 50
    				randvel crandom 10 crandom 10 random 20
    				emitterangles 0 0 0
    				avelocity crandom 90 crandom 90 0
    				accel 0 0 -800
    				physicsrate 20
    				life 2.0
    				fadedelay 1.7
    				collision
    				offsetalongaxis 0 0 -12
    				bouncefactor 0.2
    				bouncesoundonce snd_pistol_shell
    			)
    
    			// smoke puff
    			entry commanddelay 0.1 tagspawn tag_eject
    			(
    				count 1
    				model vsssource.spr
    				alpha 0.20
    				color 1.00 1.00 1.00
    				scale 0.10
    				life 0.90
    				scalerate 14.00
    				velocity 79.00
    				offsetalongaxis 0 0 -12
    				angles 0 0 range 180 360
    				fade
    			)
    		}
    	}
    
    }
    
    /*QUAKED playerweapon_german_mp40 (0.0 0.0 1.0) (-8 -8 -8) (8 8 8)
    German submachinegun - MP40
    */
    anims_Moschetto.txt
    Code:
    animations
    {
    	$path models/human/animation
    
    	//========================
    	// Reload 
    	//========================
    	moschetto_reload		viewmodel/MP40/reload_mp40_stand.skc	crossblend 0.3
    	{
    		server
    		{
    			first reloadweapon													// tell the weapon that we're reloading
    			10	attachmodel models/ammo/mp40_clip.tik tag_weapon_left			// put the ammo clip in the left hand
    			48	removeattachedmodel tag_weapon_left 0 models/ammo/mp40_clip.tik	// remove the clip model from the left hand
    			64	weaponcommand mainhand clip_fill								// put the clip ammo into the gun
    		}
    	}
    
    	//========================
    	// Walking/Cautious
    	//========================
    	moschetto_stand_walk_fwd		multiplayer/mp_rifle_curious_walk_forward.skc		//autosteps_walk		
    	moschetto_stand_walk_back		multiplayer/mp_rifle_curious_walk_backwards.skc		//autosteps_walk
    	moschetto_stand_walk_left		multiplayer/mp_rifle_curious_walk_left.skc		//autosteps_walk
    	moschetto_stand_walk_right			multiplayer/mp_rifle_curious_walk_right.skc		//autosteps_walk
    
    	//========================
    	// Jogging/Relaxed
    	//========================
    	moschetto_stand_run_fwd		weapon_rifle/walks_runs/rifle_jog.skc		autosteps_run
    	moschetto_stand_run_back		multiplayer/mp_rifle_jog_back.skc			autosteps_run
    	moschetto_stand_run_left		multiplayer/mp_rifle_run_left.skc		autosteps_run
    	moschetto_stand_run_right		multiplayer/mp_rifle_run_right.skc		autosteps_run
    
    	//========================
    	// Standing
    	//========================
    	
    	moschetto_stand_idle	 		multiplayer/mp_rifle_stand_curious.skc			crossblend 0.2	
    	
    	//========================
    	// Crouching
    	//========================
    	moschetto_crouch_idle		weapon_rifle/crouch/rifle_crouch.skc		crossblend 0.2
    	moschetto_crouch_walk_fwd		viewmodel/mp40/walk_mp40_crouch.skc		crossblend 0.2 //autosteps_walk
    	moschetto_crouch_walk_back		multiplayer/mp_rifle_crouch_walk_back.skc	crossblend 0.2 //autosteps_walk
    	moschetto_crouch_walk_left		multiplayer/mp_rifle_crouch_walk_left.skc	crossblend 0.2 //autosteps_walk
    	moschetto_crouch_walk_right  	multiplayer/mp_rifle_crouch_walk_right.skc	crossblend 0.2 //autosteps_walk
    
    	moschetto_crouch_run_fwd		multiplayer/mp_rifle_crouchrun.skc		crossblend 0.1 autosteps_run
    	moschetto_crouch_run_back	viewmodel/mp40/run_mp40_crouch.skc		crossblend 0.1 autosteps_run
    	moschetto_crouch_run_left	weapon_rifle/walks_runs/rifle_crouchrun_left.skc		crossblend 0.1 autosteps_run
    	moschetto_crouch_run_right	weapon_rifle/walks_runs/rifle_crouchrun_right.skc		crossblend 0.1 autosteps_run
    
    	//========================
    	// smg Firing
    	//========================
    
    	moschetto_stand_fire		viewmodel/mp40/mp40_stand_fire.skc	crossblend 0.05
    	{
    		server
    		{
    			entry fire
    		}
    	}
    	moschetto_stand_run_fire	viewmodel/mp40/firerun_mp40_stand.skc	crossblend 0.05
    	{
    		server
    		{
    			entry fire
    		}
    	}
    	moschetto_stand_walk_fire	viewmodel/mp40/mp40_stand_fire.skc	crossblend 0.05
    	{
    		server
    		{
    			entry fire
    		}
    	}
    	moschetto_crouch_fire		viewmodel/mp40/mp40_stand_fire.skc	crossblend 0.05
    	{
    		server
    		{
    			entry fire
    		}
    	}
    	moschetto_crouch_run_fire	viewmodel/mp40/firerun_mp40_stand.skc	crossblend 0.05
    	{
    		server
    		{
    			entry fire
    		}
    	}
    
    	//===============================
    	// Raise Animations for moschetto
    	//===============================
    
    	moschetto_stand_raise		viewmodel/mp40/raise_mp40_stand.skc
    	{
    		server
    		{
    //			first activatenewweapon tommyhand // Tommyhand is currently not used
    			first activatenewweapon lefthand
    		}
    		client
    		{
    			enter sound snd_rifle_pullout
    		}
    	}
    	// THESE ARE ALL PLACEHOLDER ANIMATIONS!!!!!
    	moschetto_crouch_raise		viewmodel/mp40/raise_mp40_stand.skc
    	{
    		server
    		{
    //			first activatenewweapon tommyhand // Tommyhand is currently not used
    			first activatenewweapon lefthand
    		}
    		client
    		{
    			enter sound snd_rifle_pullout
    		}
    	}
    
    	//========================
    	// Lower
    	//========================
    	// THESE ARE ALL PLACEHOLDER ANIMATIONS!!!!!
    
    	$path models/human/protoanimations
    
    	moschetto_stand_lower			lower_rifle_standplayer.skc
    	{
    		server
    		{
    			last deactivateweapon righthand
    		}
    		client
    		{
    			enter sound snd_rifle_putaway
    		}
    	}
    	moschetto_crouch_lower			lower_rifle_standplayer.skc
    	{
    		server
    		{
    			last deactivateweapon righthand
    		}
    		client
    		{
    			enter sound snd_rifle_putaway
    		}
    	}
    	
    	//========================
    	// Jumping & Falling
    	//========================
    	moschetto_jump_takeoff			jump_takeoff.skc			crossblend 0.1
    	{
    		server
    		{
    			first ai_event	footstep
    		}
    		client
    		{
    			first footstep	"Bip01 R Foot" run
    		}
    	}
    	moschetto_jump_run_takeoff		jump_takeoff.skc			crossblend 0.1
    	{
    		server
    		{
    			first ai_event	footstep
    		}
    		client
    		{
    			first footstep	"Bip01 R Foot" run
    		}
    	}
    	moschetto_fall				jump_stretch_loop.skc			crossblend 0.2
    	moschetto_land				jump_land.skc					crossblend 0.1
    	{
    		client
    		{
    			first landing
    		}
    	}
    	moschetto_land_hard			jump_land.skc			crossblend 0.1
    	{
    		client
    		{
    			first landing
    		}
    	}
    	
    	//========================
    	// Pain
    	//========================
    	moschetto_stand_hit_uppertorso02					jump_land.skc				crossblend 0.1
    	moschetto_crouch_hit_uppertorso02			jump_tuck_loop.skc			crossblend 0.1
    	
    	//========================
    	// Misc
    	//========================
    	moschetto_run_into_wall			jump_land.skc			crossblend 0.1
    }
    fps_anims_smg.txt
    Code:
    animations
    {
    	$path models/human/animation
    
    	//========================
    	// Thompson Anims
    	//========================
    	thompson_idle1	 		viewmodel/smg/idle_tommy_stand.skc		crossblend 0.1	weight 1.0
    	thompson_fire			viewmodel/smg/fire_tommy_stand.skc		crossblend 0
    	thompson_reload			viewmodel/smg/reload_tommy_stand.skc	crossblend 0.3
    	thompson_pullout		viewmodel/smg/raise_tommy_stand.skc
    	{
    		client
    		{
    			enter sound snd_rifle_pullout
    		}
    	}
    	$path models/human/protoanimations
    	thompson_putaway		lower_rifle_standplayer.skc
    	{
    		client
    		{
    			enter sound snd_rifle_putaway
    		}
    	}
    	$path models/human/animation
    
    	
    	//========================
    	// MP40 Anims
    	//========================
    	mp40_idle1	 		viewmodel/mp40/mp40_stand_idle.skc		crossblend 0.25		weight 1.0
    	mp40_idle2	 		viewmodel/mp40/mp40_stand_idle_a.skc	crossblend 0.25		weight 1.0	dontrepeate
    	mp40_idle3	 		viewmodel/mp40/mp40_stand_idle_b.skc	crossblend 0.25		weight 1.0
    	mp40_idle4	 		viewmodel/mp40/mp40_stand_idle_c.skc	crossblend 0.25		weight 1.0
    	mp40_fire			viewmodel/mp40/mp40_stand_fire.skc		crossblend 0.05
    	mp40_reload			viewmodel/MP40/reload_mp40_stand.skc	crossblend 0.1
    	mp40_pullout		viewmodel/mp40/raise_mp40_stand.skc
    	{
    		client
    		{
    			enter sound snd_rifle_pullout
    		}
    	}
    	$path models/human/protoanimations
    	mp40_putaway		lower_rifle_standplayer.skc
    	{
    		client
    		{
    			enter sound snd_rifle_putaway
    		}
    	}
    	$path models/human/animation
    	
    
    	//========================
    	// Moschetto Anims
    	//========================
    	moschetto_idle	 		viewmodel/moschetto/idle_fps.skc		crossblend 0.25		weight 1.0
    	moschetto_fire			viewmodel/moschetto/fire_fps.skc		crossblend 0.05
    	moschetto_reload			viewmodel/moschetto/reload_fps.skc	crossblend 0.1
    	moschetto_pullout		viewmodel/moschetto/pullout_fps.skc
    	{
    		client
    		{
    			enter sound snd_rifle_pullout
    		}
    	}
    
    	moschetto_putaway		viewmodel/moschetto/putaway_fps.skc
    	{
    		client
    		{
    			enter sound snd_rifle_putaway
    		}
    	}
    	$path models/human/animation
    }
    Last edited by Soares93; August 28th, 2021 at 12:20 PM.

  5. #5

    Default

    I just did some testing and I think the problem is not in mike_torso
    The problem is in the animation files.

    I have two theories

    1. You are missing or misspelling the name of an animation. But I don't think this is the case
    or
    2. The .skc files from Breakthrough are incompatible with mohaa

    I've never modded anything from Spearhead or Breakthrough but when you export an animation file from Lightray3D you have a checkbox to mark the file as an Spearhead animation , so there must be some incompatibility between mohaa and SH/BT .skc files
    No idea if it's even possible to import BT animations to Lightray. never tried it

  6. #6

    Default

    No breakthrough animations were used and I double checked the animation names.

    I'm using fps animations from the Italian weapon mod v2 wich replaces german weapons in regular mohaa for the italian weapons from breacktrhough, all models and animations were converted to mohaa by the original creator.

  7. #7

    Default

    Soares have a look on this mod because they are SH/BT weapons converted to AA.

    Look how the mod works and you will problably find out how to fix your problem.

    EDIT: Forgot to give credit to Shadow to helping me on finding this mod lol
    Attached Files Attached Files
    Last edited by DoubleKill; August 29th, 2021 at 11:43 AM. Reason: credit

  8. #8

    Default

    Thank you DoubleKill, I'll see if I can wrap my head arround it.

  9. #9

    Default

    Quote Originally Posted by DoubleKill View Post
    Soares have a look on this mod because they are SH/BT weapons converted to AA.

    Look how the mod works and you will problably find out how to fix your problem.

    EDIT: Forgot to give credit to Shadow to helping me on finding this mod lol
    That is just a Server side pk3? Or does it need a script to work?

  10. #10

    Default

    Is client and serverside.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •