
#define true	1
#define false	0

#define private		0
#define protected		1
#define public		2

#define TEast		0
#define TWest		1
#define TGuerrila		2
#define TCivilian		3
#define TSideUnknown		4
#define TEnemy		5
#define TFriendly		6
#define TLogic		7

#define WHEEL_STRENGTH 10
#define WHEEL_DAMPER 3
#define WHEEL_SPRINGS(MASS,WHEELS,STRENGTH,DAMPER) sprungMass = MASS/WHEELS; \
springStrength = (MASS/WHEELS)*STRENGTH^2; \
springDamperRate = DAMPER*2*((MASS/WHEELS)*STRENGTH^2*(MASS/WHEELS))^0.5;

#define PYLON_SLOT(a,b,c,d) class pylons##a##: pylons1 { \
	priority = a; \
	UIPosition[] = {0.##b##,0.##c##}; \
	attachment = d; \
};


enum {
	DESTRUCTENGINE = 2,
	DESTRUCTDEFAULT = 6,
	DESTRUCTWRECK = 7,
	DESTRUCTTREE = 3,
	DESTRUCTTENT = 4,
	STABILIZEDINAXISX = 1,
	STABILIZEDINAXESXYZ = 4,
	STABILIZEDINAXISY = 2,
	STABILIZEDINAXESBOTH = 3,
	DESTRUCTNO = 0,
	STABILIZEDINAXESNONE = 0,
	DESTRUCTMAN = 5,
	DESTRUCTBUILDING = 1,
};

class DefaultEventhandlers;	// External class reference

class CfgPatches {
	class vurtual_m998 {
		units[] = {};
		weapons[] = {};
		requiredVersion = 0.1;
		requiredAddons[] = {"vurtual_base","cba_main","A3_Soft_F","a3_weapons_f"};
	};
};

class CfgFunctions {
	
	class vurtual_m998 {
		tag = "vurtual_m998";
		class vurtual_m998Functions {
			file = "\vurtual_m998\fnc";
			class init {};
			class passenger {};
			class preinit {};
			class ammobox_gau {};
			class trailer {};
			class troopcargo {};
			class gun_fold {};
			class radar_fold {};
			class tow {};
		};
	};
};
#include "sym/acre_pos.hpp"
class CBA_Extended_EventHandlers_base;
class Extended_Preinit_EventHandlers {
	class vurtual_m998_preinit {
		init = "call vurtual_m998_fnc_preinit";
	};
};
class WeaponFireGun;	// External class reference
class WeaponCloudsGun;	// External class reference
class WeaponFireMGun;	// External class reference
class WeaponCloudsMGun;	// External class reference
class RCWSOptics;	// External class reference

class CfgMovesBasic {
	class DefaultDie;	// External class reference
	
	class ManActions {
		vurtual_m998_Driver = "vurtual_m998_Driver";
		vurtual_m998_Gunner03 = "vurtual_m998_Gunner03";
		vurtual_m998_stretcher = "vurtual_m998_stretcher";
		vurtual_m119_gunner = "vurtual_m119_gunner";
		vurtual_m119_commander = "vurtual_m119_commander";
		vurtual_m119_cargo = "vurtual_m119_cargo";
	};
};
class CfgMovesMaleSdr : CfgMovesBasic {
	class States {
		class Crew;	// External class reference
		class AmovPercMstpSnonWnonDnon;	// External class reference
		
		class vurtual_KIA_HMMWV_Driver : DefaultDie {
			actions = "DeadActions";
			file = "\vurtual_m998\Anim\KIA_HMMWV_Driver.rtm";
			speed = 0.5;
			looped = "false";
			terminal = true;
			connectTo[] = {"Unconscious", 0.1};
			soundEnabled = false;
		};
		class vurtual_KIA_M119: DefaultDie {
			actions = "DeadActions";
			file = "\vurtual_m998\Anim\Static_Dead.rtm";
			speed = 0.5;
			looped = "false";
			terminal = true;
			connectTo[] = {"Unconscious", 0.1};
			soundEnabled = false;
		};
		
		class vurtual_m998_Driver : Crew {
			file = "\vurtual_m998\Anim\HMMWV_Driver.rtm";
			interpolateTo[] = {"vurtual_KIA_HMMWV_Driver", 1};
			leftHandIKCurve[] = {1};
			rightHandIKCurve[] = {1};
		};
		class vurtual_m998_stretcher: crew {
			file = "a3\anims_f\data\anim\sdr\inj\ainjppnemstpsnonwnondnon.rtm";
			interpolateTo[] = {"Unconscious", 0.02};
			leftHandIKCurve[] = {};
			rightHandIKCurve[] = {};
		};
		class vurtual_m119_gunner : Crew {
			file = "\vurtual_m998\Anim\M119_Gunner.rtm";
			interpolateTo[] = {"vurtual_KIA_M119", 1};
			leftHandIKCurve[] = {1};
			rightHandIKCurve[] = {1};
		};
		class vurtual_m119_commander: vurtual_m119_gunner {
			file = "\vurtual_m998\anim\M119_commander.rtm";
		};
		class vurtual_m119_cargo: vurtual_m119_gunner {
			file = "\vurtual_m998\anim\M119_cargo.rtm";
		};
	};
};
class CfgVehicles {
	class LandVehicle;	// External class reference
	//class ThingX;
	class Car : LandVehicle {
		class AnimationSources;	// External class reference
		class NewTurret;	// External class reference
	};
	class Car_F : Car {
		class AnimationSources: AnimationSources {
			class HitLFWheel;
			class HitRFWheel;
			class HitLF2Wheel;
			class HitRF2Wheel;
			class HitGlass1;
		};
		class CargoTurret;
		class Components;
		class EventHandlers;
		class Turrets {
			class MainTurret : NewTurret {};
		};
		class ViewOptics;
		class HitPoints {
			class HitHull;
			class HitBody;
			class HitEngine;
			class HitFuel;
			class HitLFWheel;	// External class reference
			class HitLF2Wheel;	// External class reference
			class HitRFWheel;	// External class reference
			class HitRF2Wheel;	// External class reference
			class HitGlass1;	// External class reference
			class HitGlass2;	// External class reference
			class HitGlass3;	// External class reference
			class HitGlass4;	// External class reference
			class HitGlass5;	// External class reference
			class HitGlass6;	// External class reference
		};
	};
	/*class vurtual_trailer_hitch: ThingX {
		scope = 1;
		displayName = "Trailer Hitch";
		model = "\vurtual_m998\vurtual_trailer_hitch.p3d";
		simulation = "ThingX";
	};*/

	class vurtual_hmmwv_base: Car_F { 
		vurtual_hmmwv_windows[] = {{"window_codriver",0}};
		vurtual_base_spares[] = {{"wheel_spare_axis","spare_hide","HitSpareWheel"}};
		cargoIsCoDriver[] = {0};
		vurtual_hmmwv_always_cargo = 0;
		cargoProxyIndexes[] = {4,5,6,7};
		driverCompartments = "Compartment1";
		cargoCompartments[] = {"Compartment2"};
		editorSubcategory = "EdSubCat_hmmwv";
		class SpeechVariants {
			class Default {
				speechSingular[] = {"veh_vehicle_car_s"};
				speechPlural[] = {"veh_vehicle_car_p"};
			};
		};
		vurtual_hmmwv_rear_curtain = 0;
		vurtual_hmmwv_cargo_cover = 0;
		class AcreIntercoms {
			/*class Intercom_1 {
				displayName = "Intercom";
				shortName = "Intercom";
				allowedPositions[] = {"driver",{"ffv",[0]}};
				masterPositions[] = {{"driver"}};
				limitedPositions[] = {};
				numLimitedPositions = 0;
				connectedByDefault = 1;
			};*/
		};
		class AcreRacks {
			class Rack_1 {
				displayName = "Dashboard Upper";
				shortName = "D.Up";
				componentName = "ACRE_VRC110";
				ACRE_POS_2DOOR
				disabledPositions[] = {};
				defaultComponents[] = {};
				mountedRadio = "";
				isRadioRemovable = 1;
				intercom[] = {};
			};
			class Rack_2 {
				displayName = "Dashboard Lower";
				shortName = "D.Low";
				componentName = "ACRE_VRC103";
				ACRE_POS_2DOOR
				disabledPositions[] = {};
				defaultComponents[] = {};
				mountedRadio = "ACRE_PRC117F";
				isRadioRemovable = 0;
				intercom[] = {};
			};
		};
		class AnimationSources: AnimationSources {
			class HitDoorL { source = "Hit"; raw = 1; hitpoint = "HitDoorL"; };
			class HitDoorR: HitDoorL { hitpoint = "HitDoorR"; };
			class HitDoorL2: HitDoorL { hitpoint = "HitDoorL2"; };
			class HitDoorR2: HitDoorL { hitpoint = "HitDoorR2"; };
			class HitGunnerShield: HitDoorL { hitpoint = "HitGunnerShield"; };
			class HitACargoL: HitDoorL { hitpoint = "HitACargoL"; };
			class HitACargoR: HitDoorL { hitpoint = "HitACargoR"; };
			class TurnSignal {
				source = "user";
				initPhase = 0.5;
				animPeriod = 0.1;
			};
			class LightSwitch {
				source = "user";
				initPhase = 0.75;
				animPeriod = 0.1;
			};
			class HighbeamSwitch {
				source = "user";
				initPhase = 0;
				animPeriod = 0.1;
			};
			class roof_rack_hide {
				source = "user";
				initPhase = 1;
				animPeriod = 0.1;
			};
			class spare_hide {
				displayName = "Remove spare";
				source = "user";
				initPhase = 1;
				animPeriod = 0.1;
			};
			//TODO check if this is unused
			class bedseat_hide {
				source = "user";
				initPhase = 0;
				animPeriod = 0.1;
			};
			class GunnerShield_hide {
				source = "user";
				initPhase = 0;
				animPeriod = 0.1;
				//displayName = "Remove Gunner Shield";
			};
			class GunnerTurnOut {
				source = "door";
				initPhase = 0;
				animPeriod = 0.1;
			};
			class GunnerTurnAround {
				source = "user";
				initPhase = 0;
				animPeriod = 2;
				sourceAddress = "loop";
			};
			class Hatch_Open {
				source = "user";
				initPhase = 0;
				animPeriod = 0.5;
			};
			class TurretRemoved {
				source = "user";
				initPhase = 0;
				animPeriod = 0.1;
			};
			class HitLFWheel: HitLFWheel {
				source = "Hit";
				hitpoint = "HitLFWheel";
				raw = 1;
			};
			class HitRFWheel: HitRFWheel {
				source = "Hit";
				hitpoint = "HitRFWheel";
				raw = 1;
			};
			class HitLF2Wheel: HitLF2Wheel {
				source = "Hit";
				hitpoint = "HitLF2Wheel";
				raw = 1;
			};
			class HitRF2Wheel: HitRF2Wheel {
				source = "Hit";
				hitpoint = "HitRF2Wheel";
				raw = 1;
			};
			class HitSpareWheel: HitLFWheel {
				source = "Hit";
				hitpoint = "HitSpareWheel";
				raw = 1;
			};
			class Door_Left2 {
				source = "door";
				initPhase = 0;
				animPeriod = 0.4;
			};
			class Door_Right2 {
				source = "door";
				initPhase = 0;
				animPeriod = 0.4;
			};
			class window_left {
				source = "door";
				initPhase = 0;
				animPeriod = 0.5;
			};
			class window_right {
				source = "door";
				initPhase = 0;
				animPeriod = 0.5;
			};
			class gmv_hide_radio {
				source = "user";
				initPhase = 0;
				animPeriod = 0.01;
				displayName = "Hide radio";
				forceAnimatePhase = 1;
				forceAnimate[] = {"gmv_hide_bft",1};
			};
			class gmv_hide_bft {
				source = "user";
				initPhase = 1;
				animPeriod = 0.01;
				displayName = "Hide BFT";
				forceAnimatePhase = 0;
				forceAnimate[] = {"gmv_hide_radio",0};
			};
			class gmv_hide_bumper {
				source = "user";
				initPhase = 0;
				animPeriod = 0.01;
				displayName = "Remove Brushguard";
			};
			class door_hide {
				displayName = "Remove Doors";
				source = "door";
				initPhase = 0;
				animPeriod = 0.01;
				forceAnimate[] = {"open_window",1};
				forceAnimatePhase = 1;
				onPhaseChanged = "(_this select 0) animateDoor ['door_hide',(_this select 1)]";
			};
			class cover_rear_fold {
				//displayName = "Store Crew Curtain";
				source = "user";
				initPhase = 0;
				animPeriod = 0.1;
				forceAnimate[] = {"roof_hide",0};
				forceAnimatePhase = 0;
				onPhaseChanged = "(_this select 0) animateSource ['cover_rear_fold',(_this select 1),true]";
			};
			class cover_4door_rear_fold {
				//displayName = "Store Cargo Curtain";
				source = "user";
				initPhase = 0;
				animPeriod = 0.1;
				forceAnimate[] = {"roof_hide",0,"cover_4door_hide",0};
				forceAnimatePhase = 0;
				onPhaseChanged = "(_this select 0) animateSource ['cover_4door_rear_fold',(_this select 1),true]";
			};
			class cover_4door_hide { //prevents switching from cargo mode
				//displayName = "Hide Cargo Cover"
				source = "user";
				initPhase = 1;
				animPeriod = 0.01;
				forceAnimate[] = {"bedseat_fold",1,"roof_hide",0};
				forceAnimatePhase = 0;
				onPhaseChanged = "(_this select 0) animateSource ['cover_4door_hide',(_this select 1),true];(_this select 0) setVariable ['vurtual_cargo_special',((_this select 1) == 0),true]; if ((_this select 1) == 0) then {[(_this select 0),true,true] call vurtual_base_fnc_cargobed;};";
			};
			/*
			class door_stored {
				displayName = "Add stowed doors";
				source = "door";
				initPhase = 0;
				animPeriod = 0.01;
				onPhaseChanged = "{(_this select 0) animateDoor [_x,(_this select 1)]} forEach ['door_hide','window_codriver','window_left','window_right','door_stored']";
			};
			*/
			class blackout_hide {
				displayName = "Turn blackout lights off";
				source = "user";
				initPhase = 1;
				animPeriod = 0.01;
				forceAnimatePhase = 0;
				forceAnimate[] = {"brakelight_normal_hide",1};
			};
			class brakelight_normal_hide {
				displayName = "Turn normal brake lights off";
				source = "user";
				initPhase = 0;
				animPeriod = 0.01;
				forceAnimatePhase = 0;
				forceAnimate[] = {"blackout_hide",1};
			};
			class cargoshell_open_rear {
				source = "user";
				initPhase = 0;
				animPeriod = 0.5;
			};
			class bedseat_fold {
				lockCargo[] = {1,2,3,4,5,6,7,8,9};
				lockCargoAnimationPhase = 1;
				source = "user";
				initPhase = 0;
				animPeriod = 1;
				displayName = "Enable cargo mode";
				onPhaseChanged = "[(_this select 0),((_this select 1)==1),true] call vurtual_base_fnc_cargobed;";
				forceAnimate[] = {"cover_4door_hide",1};
				forceAnimatePhase = 0;
			};
			class open_window {
				source = "user";
				initPhase = 0;
				animPeriod = 0.1;
				forceAnimate[] = {"door_hide",0};
				forceAnimatePhase = 0;
				displayName = "Open Windows";
				onPhaseChanged = "{(_this select 0) animateDoor [_x,(_this select 1),true]} forEach ['window_driver','window_codriver','window_left','window_right']";
			};
			class Door_Left {
				source = "door";
				initPhase = 0;
				animPeriod = 0.4;
			};
			class GunnerHandAdjust {
				source = "user";
				initPhase = 1;
				animPeriod = 0.1;
			};
			class roof_hide {
				source = "user";
				initPhase = 0;
				animPeriod = 0.1;
				displayName = "Remove Roof";
				onPhaseChanged = "(_this select 0) animateSource ['roof_hide',(_this select 1),true]";
				forceAnimate[] = {"cover_4door_hide",1};
				forceAnimatePhase = 1;
			};
			class Door_Right: Door_Left {
			};
			class tailgate_fold {
				source = "door";
				initPhase = 0;
				animPeriod = 0.5;
				//displayName = "Lower tailgate";
				onPhaseChanged = "(_this select 0) animateDoor ['tailgate_fold',(_this select 1),true]";
			};
			class tailgate_hide {
				source = "user";
				initPhase = 0;
				animPeriod = 0.1;
				displayName = "Remove Tailgate";
				onPhaseChanged = "(_this select 0) animateSource ['tailgate_hide',(_this select 1),true]";
			};
			class fordingkit_hide {
				source = "user";
				initPhase = 0;
				animPeriod = 0.1;
				displayName = "Remove fording kit";
				onPhaseChanged = "(_this select 0) animateSource ['fordingkit_hide',(_this select 1),true]";
			};
			class Seats_A1 {
				source = "user";
				initPhase = 0;
				animPeriod = 0.1;
				displayName = "Install A1 seats";
				onPhaseChanged = "(_this select 0) animateSource ['Seats_A1',(_this select 1),true]";
			};
			class armor_cargo_hide {
				source = "user";
				initPhase = 0;
				animPeriod = 0.1;
				//displayName = "Remove Cargo Armor";
			};
			class Seats_A2 {
				source = "user";
				initPhase = 0;
				animPeriod = 0.1;
				//displayName = "Install A2 seats";
				onPhaseChanged = "(_this select 0) animateSource ['Seats_A2',(_this select 1),true]";
				forceAnimatePhase = 1;
				forceAnimate[] = {"Seats_A1",1};
			};
			class Bumper_A2 {
				source = "user";
				initPhase = 0;
				animPeriod = 0.1;
				displayName = "Install A2 Bumper";
				onPhaseChanged = "(_this select 0) animateSource ['Bumper_A2',(_this select 1),true]";
			};
			class window_codriver {
				source = "door";
				initPhase = 0;
				animPeriod = 0.5;
			};
			class window_driver {
				source = "door";
				initPhase = 0;
				animPeriod = 0.5;
			};
			class door_armor_hide {
				source = "user";
				animPeriod = 0.1;
				initPhase = 1;
				//displayName = "Remove Door Armor";
			};
			class HitHood {
				source = "Hit";
				hitpoint = "HitHood";
				raw = 1;
			};
		};
		animationList[] =  {"bedseat_fold",0,"cover_4door_hide",1};
		VIVPassengers[] = {1,2,3,4,5,6,7,8,9}; //0 is front passenger, 1 and 2 are cargoTurret
		tf_RadioType = "tf_rt1523g";
		tf_hasLRradio = 1;
		tf_isolatedAmount = 0.1;
		tf_range=40000;
		maxSpeed = 105;
		slowSpeedForwardCoef = 0.15;
		normalSpeedForwardCoef = 0.84;
		acceleration = 15;
		textSingular = "$STR_A3_nameSound_veh_vehicle_armedcar_s";
		textPlural = "$STR_A3_nameSound_veh_vehicle_armedcar_p";
		nameSound = "veh_vehicle_armedcar_s";
		author = "vurtual";
		scope = private;
		Model = "\vurtual_m998\vvurtual_m998.p3d";
		Picture = "vurtual_m998\Data\hmmwv_ca.paa";
		Icon = "vurtual_m998\Data\icomap_hmwv_ca.paa";
		mapSize = 6;
		displayName = "M1151 (M2)";
		crew = "B_Soldier_F";
		typicalCargo[] = {"B_Soldier_F", "B_Soldier_F", "B_Soldier_F", "B_Soldier_F"};
		side = TWest;
		faction = BLU_F;
		wheelCircumference = 2.834;
		antiRollbarForceCoef = 12;
		antiRollbarForceLimit = 10;
		antiRollbarSpeedMin = 20;
		antiRollbarSpeedMax = 50;
		crewVulnerable = true;
		crewCrashProtection = 1;
		weapons[] = {"TruckHorn2"};
		magazines[] = {};
		damperSize = 0.2;	// max. damper amplitude
		damperForce = 1;	// larger number more stiffness dampers
		damperDamping = 1;	// larger number less movement in dampers
		armor = 80;
		armorStructural = 4;
		turnCoef = 2.5;
		steerAheadPlan = 0.2;
		steerAheadSimul = 0.4;
		predictTurnPlan = 0.9;
		predictTurnSimul = 0.5;
		brakeDistance = 1.0;	// vehicle movement precision
		terrainCoef = 1.5;
		wheelDamageThreshold = 0.7;
		wheelDestroyThreshold = 0.99;
		wheelDamageRadiusCoef = 0.95;
		wheelDestroyRadiusCoef = 0.45;
		cost = 200000;
		precision = 15;
		armorGlass = 0.99;
		armorWheels = 0.8;
		soundServo[] = {"A3\sounds_f\dummysound", db-40, 1.0, 10};
		soundEnviron[] = {"", db-5, 1};
		transportMaxBackpacks = 25;
		transportSoldier = 4;
		
		castDriverShadow = "false";
		driverAction = "vurtual_m998_Driver";
		driverInAction = "vurtual_m998_Driver";
		cargoAction[] = {"passenger_low01"};
		
		accuracy = 0.32;	// accuracy needed to recognize type of this target
		
		// threat (VSoft, VArmor, VAir), how threatening vehicle is to unit types
		type = 0;
		threat[] = {0, 0, 0};
		//damageResistance=0;

		driverLeftHandAnimName = "";
		driverRightHandAnimName = "";
		
		class TransportMagazines {};
		
		class TransportItems {
			class _xx_FirstAidKit {
				count = 4;
				name = "FirstAidKit";
			};
		};
		
		class TransportWeapons {};

		brakeIdleSpeed = 1.78;
		fuelCapacity = 95;
		
		explosionShielding = 0.8;
		simulation = "carx";
		dampersBumpCoef = 6.0;
		differentialType = "all_limited";
		frontRearSplit = 0.5;
		frontBias = 1.3;
		rearBias = 1.3;
		centreBias = 1.3;
		clutchStrength = 20.0;
		dampingRateFullThrottle = 0.08;
		dampingRateZeroThrottleClutchEngaged = 2.0;
		dampingRateZeroThrottleClutchDisengaged = 0.35;
		
		class Wheels {
			class LF {
				boneName = "wheel_1_1";
				steering = 1;
				side = "left";
				center = "wheel_1_1_axis";
				boundary = "wheel_1_1_bound";
				width = 0.126;
				mass = 30;
				MOI = 12.8;
				dampingRate = 0.1;
				dampingRateDamaged = 0.5;
				dampingRateDestroyed = 1000;
				maxBrakeTorque = 10000;
				maxHandBrakeTorque = 0;
				suspTravelDirection[] = {0, -1, 0};
				suspForceAppPointOffset = "wheel_1_1_axis";
				tireForceAppPointOffset = "wheel_1_1_axis";
				maxCompression = 0.05;
				mMaxDroop = 0.1;
				WHEEL_SPRINGS(3500,4,WHEEL_STRENGTH,WHEEL_DAMPER)
				longitudinalStiffnessPerUnitGravity = 8000;
				latStiffX = 25;
				latStiffY = 180;
				frictionVsSlipGraph[] = {{0, 1}, {0.5, 1}, {1, 1}};
			};
			class LR: LF {
				boneName = "wheel_1_2";
				steering = 0;
				center = "wheel_1_2_axis";
				boundary = "wheel_1_2_bound";
				suspForceAppPointOffset = "wheel_1_2_axis";
				tireForceAppPointOffset = "wheel_1_2_axis";
				maxHandBrakeTorque = 3500;
			};
			class RF: LF {
				boneName = "wheel_2_1";
				center = "wheel_2_1_axis";
				boundary = "wheel_2_1_bound";
				suspForceAppPointOffset = "wheel_2_1_axis";
				tireForceAppPointOffset = "wheel_2_1_axis";
				steering = 1;
				side = "right";
			};
			class RR: RF {
				boneName = "wheel_2_2";
				steering = 0;
				center = "wheel_2_2_axis";
				boundary = "wheel_2_2_bound";
				suspForceAppPointOffset = "wheel_2_2_axis";
				tireForceAppPointOffset = "wheel_2_2_axis";
				maxHandBrakeTorque = 3500;
			};
		};
		attenuationEffectType = "OpenCarAttenuation";
		soundAttenuationCargo[] = {1,0};
		soundGetIn[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\getin", db-5, 1};
		soundGetOut[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\getout", db-5, 1, 40};
		soundDammage[] = {"", 0.562341, 1};
		soundEngineOnInt[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_int_start", 0.354813, 1.0};
		soundEngineOnExt[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_ext_start", 0.707946, 1.0, 200};
		soundEngineOffInt[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_int_stop", 0.354813, 1.0};
		soundEngineOffExt[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_ext_stop", 0.707946, 1.0, 200};
		buildCrash0[] = {"A3\sounds_f\Vehicles\soft\noises\crash_building_01", 1.0, 1, 200};
		buildCrash1[] = {"A3\sounds_f\Vehicles\soft\noises\crash_building_02", 1.0, 1, 200};
		buildCrash2[] = {"A3\sounds_f\Vehicles\soft\noises\crash_building_03", 1.0, 1, 200};
		buildCrash3[] = {"A3\sounds_f\Vehicles\soft\noises\crash_building_04", 1.0, 1, 200};
		soundBuildingCrash[] = {"buildCrash0", 0.25, "buildCrash1", 0.25, "buildCrash2", 0.25, "buildCrash3", 0.25};
		WoodCrash0[] = {"A3\sounds_f\Vehicles\soft\noises\crash_mix_wood_01", 1.0, 1, 200};
		WoodCrash1[] = {"A3\sounds_f\Vehicles\soft\noises\crash_mix_wood_02", 1.0, 1, 200};
		WoodCrash2[] = {"A3\sounds_f\Vehicles\soft\noises\crash_mix_wood_03", 1.0, 1, 200};
		WoodCrash3[] = {"A3\sounds_f\Vehicles\soft\noises\crash_mix_wood_04", 1.0, 1, 200};
		WoodCrash4[] = {"A3\sounds_f\Vehicles\soft\noises\crash_mix_wood_05", 1.0, 1, 200};
		WoodCrash5[] = {"A3\sounds_f\Vehicles\soft\noises\crash_mix_wood_06", 1.0, 1, 200};
		soundWoodCrash[] = {"woodCrash0", 0.166, "woodCrash1", 0.166, "woodCrash2", 0.166, "woodCrash3", 0.166, "woodCrash4", 0.166, "woodCrash5", 0.166};
		ArmorCrash0[] = {"A3\sounds_f\Vehicles\soft\noises\crash_vehicle_01", 1.0, 1, 200};
		ArmorCrash1[] = {"A3\sounds_f\Vehicles\soft\noises\crash_vehicle_02", 1.0, 1, 200};
		ArmorCrash2[] = {"A3\sounds_f\Vehicles\soft\noises\crash_vehicle_03", 1.0, 1, 200};
		ArmorCrash3[] = {"A3\sounds_f\Vehicles\soft\noises\crash_vehicle_04", 1.0, 1, 200};
		soundArmorCrash[] = {"ArmorCrash0", 0.25, "ArmorCrash1", 0.25, "ArmorCrash2", 0.25, "ArmorCrash3", 0.25};
		#include "legacySounds.hpp"

		hideProxyInCombat = 1;
		forceHideDriver = 1;
		viewDriverInExternal=1;
		vurtual_base_turnffv = 2;
		vurtual_base_turnsignal = 1;
		class Exhausts {
			class Exhaust1 {
				position = "vyfuk start";
				direction = "vyfuk konec";
				effect = "ExhaustEffectOffroad";
			};
		};
		class Turrets: Turrets {
			class MainTurret: MainTurret {
				body = "MainTurret";
				gun = "MainGun";
				optics = 0;
				selectionFireAnim = "muzzleflash";
				weapons[]={"vurtual_mk19"};
				magazines[] = {
					"vurtual_48Rnd_40mm_G_belt","vurtual_48Rnd_40mm_G_belt","vurtual_48Rnd_40mm_G_belt",
					"vurtual_48Rnd_40mm_G_belt","vurtual_48Rnd_40mm_G_belt","vurtual_48Rnd_40mm_G_belt",
					"vurtual_48Rnd_40mm_G_belt"
				};
				discreteDistance[] = {100, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500};
				discreteDistanceInitIndex = 1;
				gunBeg = "usti hlavne";
				gunEnd = "konec hlavne";
				soundServo[] = {"A3\sounds_f\dummysound", db-40, 1.0, 10};
				gunnerAction = "gunner_standup01";
				gunnerInAction = "gunner_standup01";
				viewGunnerInExternal = 1;
				castGunnerShadow = true;
				memoryPointGun="OtocHlaven";
				turretInfoType="RscOptics_Offroad_01";
				gunnerRightHandAnimName = "OtocHlavenGunnerHand";
				gunnerLeftHandAnimName = "OtocHlavenGunnerHand";
				class GunFire :WeaponCloudsMGun{interval = 0.01;};
				commanding = 0;
				personTurretAction = "vehicle_passenger_stand_2";
				animationSourceHatch = "gunnerTurnOut";
				primaryGunner = 1;
				primaryObserver = 0;
				maxOutElev=45;
				allowLauncherOut=1;
				minOutElev=-20;
				minOutTurn=-45;
				maxOutTurn=45;
				minElev = -10;
				outGunnerMayFire=0;
				isPersonTurret=1;
				gunnerName = "Gunner (Mk19)";
				inGunnerMayFire=1;
				
				LODOpticsIn = 1200;
				LODTurnedOut = 1200;
				LODTurnedIn= 1200;
				memoryPointsGetInGunner = "pos turret";
				memoryPointsGetInGunnerDir = "pos turret dir";
				gunnerOpticsModel = "\A3\weapons_f\reticle\optics_empty";
				startEngine=0;
				stabilizedInAxes=0;
				class ViewOptics {
					initAngleX = 0;
					minAngleX = -30;
					maxAngleX = 30;
					initAngleY = 0;
					minAngleY = -100;
					maxAngleY = 100;
					initFov = 0.7;
					minFov = 0.25;
					maxFov = 1.1;
				};
				class ViewGunner: ViewOptics {};
				class HitPoints {};
			};
			class CargoTurret_CoDriver: CargoTurret {
				gunnerDoor = "door_right";
				gunnerAction = "passenger_inside_2";
				gunnerInAction = "passenger_low01";
				memoryPointsGetInGunner = "pos codriver";
				memoryPointsGetInGunnerDir = "pos codriver dir";
				gunnerName = "Front passenger";
				gunnerCompartments = "Compartment1";
				ProxyIndex=1;
				isPersonTurret = 1;
				canHideGunner=0;
				forceHideGunner = 1;
				gunnerForceOptics=0;
				maxElev = 45;
				minElev = -45;
				maxTurn = -30;
				minTurn = -105;
				stabilizedInAxes = 0;
				enabledByAnimationSource = "window_codriver";
				commanding = 1;
				soundAttenuationTurret = "OpenCarAttenuation";
				disableSoundAttenuation = 0;
				class HitPoints {};
			};
			class CargoTurret_tailgate_L: CargoTurret {
				gunnerDoor = "tailgate_fold";
				gunnerAction = "passenger_inside_2";
				gunnerInAction = "passenger_inside_2"; //fixes standing up in steat
				memoryPointsGetInGunner = "pos cargo";
				memoryPointsGetInGunnerDir = "pos cargo dir";
				gunnerName = "Passenger (Tailgate Left)";
				gunnerCompartments = "Compartment2";
				proxyIndex = 9;
				isPersonTurret = 1;
				canHideGunner=0;
				gunnerForceOptics=0;
				forceHideGunner=1; //fixes being turned out in seat
				maxElev = 75;
				minElev = -30;
				maxTurn = 15;
				minTurn = -95;
				stabilizedInAxes=0;
				commanding = 1; //fixes seat switching
				class HitPoints {};

			};
			class CargoTurret_Tailgate_R: CargoTurret_Tailgate_L {
				memoryPointsGetInGunner = "pos tailgate";
				memoryPointsGetInGunnerDir = "pos tailgate dir";
				proxyIndex = 8;
				maxTurn = 95;
				minTurn = -15;
				gunnerName = "Passenger (Tailgate Right)";
			};
			class CargoTurret_Passenger_L: CargoTurret_CoDriver {
				gunnerName = "Left passenger";
				gunnerDoor = "door_left2";
				proxyIndex = 2;
				maxTurn = 105;
				minTurn = 30;
				memoryPointsGetInGunner = "pos leftseat";
				memoryPointsGetInGunnerDir = "pos leftseat dir";
				enabledByAnimationSource = "window_left";
			};
			class CargoTurret_Passenger_R: CargoTurret_CoDriver {
				gunnerName = "Right passenger";
				gunnerDoor = "door_right2";
				proxyIndex = 3;
				memoryPointsGetInGunner = "pos rightseat";
				memoryPointsGetInGunnerDir = "pos rightseat dir";
				enabledByAnimationSource = "window_right";
			};
			class CargoTurret_Tailgate_L_B: CargoTurret_Tailgate_L {
				gunnerName = "Passenger (Bedside Left)";
				proxyIndex = 4;
				memoryPointsGetInGunner = "pos leftside";
				memoryPointsGetInGunnerDir = "pos leftside dir";
				gunnerCompartments = "Compartment2";
				commanding = 0;
				maxElev = 75;
				minElev = -10;
				maxTurn = 95;
				minTurn = -15;
			};
			class CargoTurret_Tailgate_R_B: CargoTurret_Tailgate_R {
				gunnerName = "Passenger (Bedside Right)";
				proxyIndex = 5;
				memoryPointsGetInGunner = "pos rightside";
				memoryPointsGetInGunnerDir = "pos rightside dir";
				gunnerCompartments = "Compartment2";
				commanding = 0;
				maxElev = 75;
				minElev = -10;
				maxTurn = 15;
				minTurn = -95;
			};
			class CargoTurret_Roof: CargoTurret {
				gunnerDoor = "";
				gunnerAction = "gunner_standup01";
				gunnerInAction = "gunner_standup01";
				personTurretAction = "vehicle_passenger_stand_2";
				gunnerForceOptics=0;
				hideWeaponsGunner = 0;
				gunnerOpticsModel = "";
				stabilizedInAxes = 0;
				commanding = 1; //fixes seat switching
				canHideGunner= 1;
				disableSoundAttenuation = 1;
				forceHideGunner = 1;
				allowLauncherIn = 1;
				allowLauncherOut = 1;
				proxyType = "CPGunner";
				memoryPointsGetInGunner = "pos turret";
				memoryPointsGetInGunnerDir = "pos turret dir";
				gunnerGetInAction = "GetInHigh";
				gunnerGetOutAction = "GetOutHigh";
				gunnerName = "Gunner (Roof Hatch)";
				showAsCargo = 0; //makes getting in work properly without breaking shooting out
				gunnerCompartments = "Compartment1";
				proxyIndex = 1;
				isPersonTurret = 1;
				inGunnerMayFire = 1;
				primaryGunner = 1;
				maxElev=45;
				minElev=-20;
				minTurn=-90;
				maxTurn=90;
			};
		};
		driverDoor = "door_left";
		cargoDoors[] = {"tailgate_fold"};
		hiddenSelections[] = {"Camo", "Camo1", "Camo2", "Camo3", "Camo4","Camo5","Camo6","Camo7"};
		hiddenSelectionsTextures[] = {
			"\vurtual_m998\Data\hmmwv_body_canvas_1_co.paa",
			"\vurtual_m998\data\hmmwv_hood_canvas_co.paa",
			"\vurtual_m998\data\hmmwv_regular_1_co.paa",
			"\vurtual_m998\data\hmmwv_parts_1_ca.paa",
			"\vurtual_m998\data\hmmwv_canvas_1_co.paa",
			"\vurtual_m998\data\hmmwv_troopseat_sand_co.paa",
			"\vurtual_m998\data\hmmwv_body_co.paa",
			"\vurtual_m998\data\icv_des_co.paa"
		};
		class textureSources {
			class woodland_old {
				displayname = "Woodland (Worn)";
				author = "vurtual";
				textures[] = {
					"\vurtual_m998\Data\hmmwv_body_canvas_1_wl_co.paa",
					"\vurtual_m998\data\hmmwv_hood_canvas_wl_co.paa",
					"\vurtual_m998\data\hmmwv_regular_wl_1_co.paa",
					"\vurtual_m998\data\hmmwv_parts_wl_1_ca.paa",
					"\vurtual_m998\data\hmmwv_canvas_1_green_co.paa",
					"\vurtual_m998\data\hmmwv_troopseat_green_co.paa",
					"\vurtual_m998\data\hmmwv_body_wl_co.paa",
					"\vurtual_m998\data\icv_green_co.paa"
				};
				factions[] = {};
			};
			class woodland_new {
				displayname = "Woodland";
				author = "vurtual";
				textures[] = {
					"\vurtual_m998\Data\hmmwv_body_canvas_1_wl2_co.paa",
					"\vurtual_m998\data\hmmwv_hood_canvas_wl2_co.paa",
					"\vurtual_m998\data\hmmwv_regular_1_wl2_co.paa",
					"\vurtual_m998\data\hmmwv_parts_1_wl2_ca.paa",
					"\vurtual_m998\data\hmmwv_canvas_1_wl2_co.paa",
					"\vurtual_m998\data\hmmwv_troopseat_green_co.paa",
					"\vurtual_m998\data\hmmwv_body_wl2_co.paa",
					"\vurtual_m998\data\icv_green_co.paa"
				};
				factions[] = {};
			};
			class green {
				displayname = "Green";
				author = "vurtual";
				textures[] = {
					"\vurtual_m998\Data\hmmwv_body_canvas_1_green_co.paa",
					"\vurtual_m998\data\hmmwv_hood_canvas_green_co.paa",
					"\vurtual_m998\data\hmmwv_regular_1_green_co.paa", 
					"\vurtual_m998\data\hmmwv_parts_1_green_ca.paa",
					"\vurtual_m998\data\hmmwv_canvas_1_green_co.paa",
					"\vurtual_m998\data\hmmwv_troopseat_green_co.paa", 
					"\vurtual_m998\data\hmmwv_body_green_co.paa",
					"\vurtual_m998\data\icv_green_co.paa"
				};
				factions[] = {};
			};
			class desert {
				displayname = "Desert";
				author = "vurtual";
				textures[] = {
					"\vurtual_m998\Data\hmmwv_body_canvas_1_co.paa",
					"\vurtual_m998\data\hmmwv_hood_canvas_co.paa",
					"\vurtual_m998\data\hmmwv_regular_1_co.paa",
					"\vurtual_m998\data\hmmwv_parts_1_ca.paa",
					"\vurtual_m998\data\hmmwv_canvas_1_co.paa",
					"\vurtual_m998\data\hmmwv_troopseat_sand_co.paa",
					"\vurtual_m998\data\hmmwv_body_co.paa",
					"\vurtual_m998\data\icv_des_co.paa"
				};
				factions[] = {};
			};
		};
		selectionDamage = "-";
		class HitPoints : HitPoints {
			class HitDoorL {
				armorComponent = "armor_door_left";
				name = "hit_door_left_p";
				visual = "door_left";
				armor = -300*4;
				minimalHit = 0.075/4;
				passthrough = 0;
				explosionShielding = 0.6;
				radius = 0.15;
			};
			class HitDoorR: HitDoorL { armorComponent = "armor_door_right"; name = "hit_door_right_p"; visual = "door_right"; };
			class HitDoorL2: HitDoorL { armorComponent = "armor_door_left2"; name = "hit_door_left2_p"; visual = "door_left2"; };
			class HitDoorR2: HitDoorL { armorComponent = "armor_door_right2"; name = "hit_door_right2_p"; visual = "door_right2"; };
			class HitGunnerShield: HitDoorL { armorComponent = "GunnerShieldKit"; name = "hit_armor_shield_p"; visual = "GunnerShieldKit"; };
			class HitACargoL: HitDoorL { armorComponent = "armor_cargo_l"; name = "hit_armor_cargo_l_p"; visual = "armor_cargo_l" };
			class HitACargoR: HitDoorL { armorComponent = "armor_cargo_r"; name = "hit_armor_cargo_r_p"; visual = "armor_cargo_r" };
			class HitHull: HitHull {
				armorComponent = "hit_hull";
				name = "hit_hull_p";
				depends = "Total-0.1";
				armor = 999;
				passThrough = 0;
				explosionShielding = 0;
				minimalHit = 0;
				visual = "-";
			};
			class HitGlass1 : HitGlass1 {
				armor = 0.1;
				visual = "glass1";
			};
			
			class HitGlass2 : HitGlass2 {
				armor = 0.1;
				visual = "glass2";
			};
			
			class HitGlass3 : HitGlass3 {
				armor = 0.1;
				//convexComponent = "glass3_door";
				visual = "glass3";
			};
			
			class HitGlass4 : HitGlass4 {
				armor = 0.1;
				//convexComponent = "glass4_door";
				visual = "glass4";
			};
			
			class HitLFWheel: HitLFWheel {
				armor = -300;
				explosionShielding = 4;
				minimalHit = 0.0167;
				armorComponent = "wheel_1_1_hide";
			};
			
			class HitLF2Wheel: HitLF2Wheel {
				armor = -300;
				explosionShielding = 4;
				minimalHit = 0.0167;
				armorComponent = "wheel_1_2_hide";
			};
			
			class HitRFWheel: HitRFWheel {
				armor = -300;
				explosionShielding = 4;
				minimalHit = 0.0167;
				armorComponent = "wheel_2_1_hide";
			};
			
			class HitRF2Wheel: HitRF2Wheel {
				armor = -300;
				explosionShielding = 4;
				minimalHit = 0.0167;
				armorComponent = "wheel_2_2_hide";
			};
			class HitSpareWheel: HitLFWheel {
				name = "#wheel_spare_steering";
				armorComponent = "spare_wheel";
			};
			class HitFrame {
				passThrough = 1;
				name = "hit_frame_p";
				visual = "dmg_frame";
				explosionShielding = 0.5;
				armor = -2400;
				minimalHit = 0.005;
				radius = 0.15;
				armorComponent = "hit_frame";
			};
			class HitBody: HitBody {
				armor = -1200;
				explosionShielding = 0.2;
				passThrough = 0.2;
				name = "karoserie";
				armorComponent = "hit_body";
				radius = 0.15;
			};
			class HitFuel {
				armor = 1.4;
				material = -1;
				name = "palivo";
				visual = "-";
				passThrough = 0;
				armorComponent = "hit_fuel";
				radius = 0.15;
				explosionShielding = 0.1;
			};
			class HitEngine: HitEngine {
				passThrough = 0.2;
				radius = 0.01;
				armor = -300;
				visual = "dmg_engine";
				armorComponent = "hit_engine";
				name = "motor";
			};
			class HitHood {
				armor = -80*4;
				armorComponent = "hit_hood";
				radius = 0.15;
				name = "hit_hood_p";
				visual = "dmg_hood";
				explosionShielding = 0.25;
				passthrough = 0;
				minimalHit = 0.001/4;
			};
		};
		
		class Damage {
			tex[] = {};
			mat[] = {
				"vurtual_m998\Data\hmmwv_glass.rvmat",
				"A3\data_f\Glass_veh_damage.rvmat",
				"A3\data_f\Glass_veh_damage.rvmat",
				
				"vurtual_m998\Data\hmmwv_body_1.rvmat",
				"vurtual_m998\Data\hmmwv_body_damage.rvmat",
				"vurtual_m998\Data\hmmwv_body_destruct.rvmat",
				
				"vurtual_m998\Data\hmmwv_details.rvmat",
				"vurtual_m998\Data\hmmwv_details_damage.rvmat",
				"vurtual_m998\Data\hmmwv_details_destruct.rvmat",
				
				"vurtual_m998\data\hmmwv_regular_1.rvmat",
				"vurtual_m998\Data\hmmwv_body_damage.rvmat",
				"vurtual_m998\Data\hmmwv_body_destruct.rvmat",
				
				"vurtual_m998\data\hmmwv_hood.rvmat",
				"vurtual_m998\Data\hmmwv_body_damage.rvmat",
				"vurtual_m998\Data\hmmwv_body_destruct.rvmat",
				
				"vurtual_m998\data\hmmwv_parts_1.rvmat",
				"vurtual_m998\Data\hmmwv_body_damage.rvmat",
				"vurtual_m998\Data\hmmwv_body_destruct.rvmat",
				
				"vurtual_m998\data\hmmwv_canvas.rvmat",
				"vurtual_m998\Data\hmmwv_body_damage.rvmat",
				"vurtual_m998\Data\hmmwv_body_destruct.rvmat",
				
				"vurtual_m998\data\hmmwv_canvas_1.rvmat",
				"vurtual_m998\Data\hmmwv_body_damage.rvmat",
				"vurtual_m998\Data\hmmwv_body_destruct.rvmat",

				"vurtual_m998\data\hmmwv_gpk_tower.rvmat",
				"vurtual_m998\Data\hmmwv_gpk_tower_damage.rvmat",
				"vurtual_m998\Data\hmmwv_gpk_tower_destruct.rvmat"
			};
		};/*
		class DestructionEffects {
			class Smoke1 {
				simulation = "particles";
				type = "ObjectDestructionSmokeSmall";
				position = "SlingLoadCargo1"; //too lazy to add a new memory point for now
				intensity=0.15;
				interval=1;
				lifeTime = 1;
			};
			class Smoke1_2: Smoke1 {
				type = "ObjectDestructionSmoke1_2Small";
				lifeTime = 0.15;
				position = "destructionEffect1";
			};
			class Fire1 {
				simulation = "particles";
				type = "ObjectDestructionFire1Small";
				position = "destructionEffect1";
				interval=1;
				lifetime=0.15;
				intensity=0.15;
			};
		};
		fuelExplosionPower=0;*/
		class Reflectors {
			/*
			class LightCarHeadL01 {
				color[] = {1900, 1800, 1700};
				ambient[] = {5, 5, 5};
				position = "LightCarHeadL01";
				direction = "LightCarHeadL01_end";
				hitpoint = "Light_L";
				selection = "Light_L";
				size = 1;
				innerAngle = 45;
				outerAngle = 110;
				coneFadeCoef = 5;
				intensity = 1;
				useFlare = 1;
				dayLight = 0;
				flareSize = 1;
				
				class Attenuation {
					start = 1;
					constant = 0;
					linear = 0;
					quadratic = 0.25;
					hardLimitStart = 30;
					hardLimitEnd = 60;
				};
			};*/
			/*
			class LightCarHeadL02 : LightCarHeadL01 {
				position = "LightCarHeadL02";
				direction = "LightCarHeadL02_end";
				useFlare = 0;
				innerAngle = 45;
				outerAngle = 179;
			};*/
			class Light_L {
				color[] = {3800, 3600, 3400};
				ambient[] = {10, 10, 10};
				position = "Light_L";
				direction = "Light_L_end";
				hitpoint = "Light_L";
				selection = "Light_L";
				size = 1;
				innerAngle = 45;
				outerAngle = 110;
				coneFadeCoef = 5;
				intensity = 1;
				useFlare = 1;
				dayLight = 0;
				flareSize = 1;
				flareMaxDistance=2000;
				class Attenuation {
					start = 1;
					constant = 0;
					linear = 0;
					quadratic = 0.1;
					hardLimitStart = 400;
					hardLimitEnd = 450;
				};
			};
			
			class Light_R : Light_L {
				position = "Light_R";
				direction = "Light_R_end";
				hitpoint = "Light_R";
				selection = "Light_R";
			};
			/*
			class LightCarHeadR02 : LightCarHeadR01 {
				position = "LightCarHeadR02";
				direction = "LightCarHeadR02_end";
				useFlare = 0;
				innerAngle = 45;
				outerAngle = 179;
			};*/
			/*
			class LightCarHeadL01_high: LightCarHeadL01 {
				position = "LightCarHeadL01_long";
				direction = "LightCarHeadL01_long_end";
				color[] = {3800, 3600, 3400};
				ambient[] = {10, 10, 10};
				flareMaxDistance=2000;
				class Attenuation: Attenuation {
					quadratic = 0.1;
					hardLimitStart = 400;
					hardLimitEnd = 450;
				};
			};
			class LightCarHeadR01_high: LightCarHeadR01 {
				position = "LightCarHeadR01_long";
				direction = "LightCarHeadR01_long_end";
				color[] = {3800, 3600, 3400};
				ambient[] = {10, 10, 10};
				flareMaxDistance=2000;
				class Attenuation: Attenuation {
					quadratic = 0.1;
					hardLimitStart = 400;
					hardLimitEnd = 450;
				};
			};*/
			class BlackoutHeadlight {
				color[] = {19, 18, 17};
				ambient[] = {0.2, 0.2, 0.2};
				position = "BlackoutHeadlight";
				direction = "BlackoutHeadlight_end";
				hitpoint = "Light_B";
				selection = "Light_B";
				size = 1;
				innerAngle = 90;
				outerAngle = 110;
				coneFadeCoef = 10;
				intensity = 1;
				useFlare = 0;
				dayLight = 0;
				
				class Attenuation {
					start = 1;
					constant = 0;
					linear = 0;
					quadratic = 0.15;
					hardLimitStart = 5;
					hardLimitEnd = 20;
				};
			};
		};
		aggregateReflectors[] = {
			{"Light_L","Light_R"},
			//{"LightCarHeadL02","LightCarHeadR02"},
			//{"LightCarHeadL01_high","LightCarHeadR01_high"},
			{"BlackoutHeadlight"}
		};
		
		class RenderTargets {
			class LeftMirror {
				renderTarget = "rendertarget0";
				
				class CameraView1 {
					pointPosition = "PIP0_pos";
					pointDirection = "PIP0_dir";
					renderQuality = 2;
					renderVisionMode = 4;
					fov = 0.7;
				};
			};
			class RightMirror {
				renderTarget = "rendertarget2";
				
				class CameraView1 {
					pointPosition = "PIP2_pos";
					pointDirection = "PIP2_dir";
					renderQuality = 2;
					renderVisionMode = 4;
					fov = 0.7;
				};
			};
		};
		slingLoadCargoMemoryPoints[] = { "SlingLoadCargo1","SlingLoadCargo2","SlingLoadCargo3","SlingLoadCargo4"};
		class VehicleTransport {
			class Cargo {
				dimensions[]				= {"VTV_Cargo_Base","VTV_Cargo_Corner"};
				parachuteClass				= "B_Parachute_02_F";
				canBeTransported            = 1;
				parachuteHeightLimit		= 5;
			};
			class Carrier {
				cargoBayDimensions[]        = {"VTV_Carrier_Base", "VTV_Carrier_Corner"};
				cargoSpacing[]              = {0, 0, 0};
				cargoAlignment[]            = {"right","front"};
				maxLoadMass                 = 1100; //1100kg 998, 2300kg ECV
				disableHeightLimit			= 1;
				exits[]						= {"VTV_exit_1"};
				unloadingInterval			= 2;
				loadingDistance				= 0;
				loadingAngle				= 0;
				parachuteClassDefault       = "B_Parachute_02_F";
				parachuteHeightLimitDefault = 5;
			};
		};
		maxFordingDepth=1000; //no kit: 0.76m safe, 1.3m kill. kit: 1.5m safe, 1.9m kill.
		hasGunner = false;
		class EventHandlers: EventHandlers {
			init = "[_this select 0] call vurtual_m998_fnc_init";
			class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers_base {};
		};
		//3-speed transmission
		class complexGearbox {
				GearboxRatios[] = {"R1", -2.08, "N", 0, "D1", 2.48, "D2", 1.48, "D3", 1};
				//TransmissionRatios[] = {"High", 1*1.92*2.56};
				TransmissionRatios[] = {"High", 1*1.92*2.65};
				gearBoxMode = "auto";
				moveOffGear = 1;
				driveString = "D";
				neutralString = "N";
				reverseString = "R";
		};
		idleRpm = 650;
		redRpm = 3600;
		enginePower = 123;
		maxOmega = 377;
		peakTorque = 352;
		torqueCurve[] = {
			{0.0, "18/24"},
			{"16/36", "23/24"},
			{"20/36", "23.5/24"},
			{"21/36", "24/24"},
			{"24/36", "23.5/24"},
			{"28/36", "23.2/24"},
			{"30/36", "23/24"},
			{"36/36", "21/24"}
		};
		//changeGearMinEffectivity[] = {0.95, 0.15, 0.95, 0.95, 0.95};
		changeGearOmegaRatios[] = {
			36/36, 5/36, //R
			14/36, 0, //N
			28/36, 5/36, //1
			24/36, 16/36, //2
			37/36, 16/36 //3
		};
		changeGearType = "rpmratio";
		switchTime = 0.11;
		latency = 0.5;
	};
	class vurtual_hmmwv_base_a1: vurtual_hmmwv_base {
		class AnimationSources: AnimationSources {
			class Seats_A1: Seats_A1 {
				initPhase = 1;
			};
			class seats_a2: seats_a2 {};
			class door_hide: door_hide {};
			class bedseat_fold: bedseat_fold {};
			class open_window: open_window {};
			class tailgate_fold: tailgate_fold {};
			class fordingkit_hide: fordingkit_hide {};
		};
	};
	class vurtual_hmmwv_base_a2: vurtual_hmmwv_base_a1 {
		editorSubcategory = "EdSubCat_hmmwv_a2";
		//4-speed transmission
		class complexGearbox: complexGearbox {
				GearboxRatios[] = {"R1", -2.08, "N", 0, "D1", 2.48, "D2", 1.48, "D3", 1, "D4", 0.75};
				TransmissionRatios[] = {"High", 1*1.92*2.73};
		};
		//A2 cargo capacity
		class VehicleTransport: VehicleTransport {
			class Cargo: Cargo {
				dimensions[]				= {"VTV_Cargo_Base_A2","VTV_Cargo_Corner"};
			};
			class Carrier: Carrier {
				maxLoadMass = 2000;
			};
		};
		class Wheels: Wheels {
			class LF: LF {
				WHEEL_SPRINGS(4700,4,WHEEL_STRENGTH,WHEEL_DAMPER)
			};
			class RF: RF {
				WHEEL_SPRINGS(4700,4,WHEEL_STRENGTH,WHEEL_DAMPER)
			};
			class LR: LR {
				WHEEL_SPRINGS(4700,4,WHEEL_STRENGTH,WHEEL_DAMPER)
			};
			class RR: RR {
				WHEEL_SPRINGS(4700,4,WHEEL_STRENGTH,WHEEL_DAMPER)
			};
		};
		idleRpm = 725;
		redRpm = 3400;
		maxOmega = 356;
		peakTorque = 393;
		torqueCurve[] = {
			{0.0, "28/43"},
			{"10/34", "32/43"},
			{"18/34", "43/43"},
			{"22/34", "40/43"},
			{"25/34", "37/43"},
			{"34/34", "30/43"}
		};
		//changeGearMinEffectivity[] = {0.95, 0.15, 0.95, 0.95, 0.95, 0.95};
		changeGearOmegaRatios[] = {
			34/34, 5/34, //R
			14/34, 0, //N
			26/34, 5/34, //1
			24/34, 15/34, //2
			22/34, 16/34, //3
			35/34, 16/34 //4
		};
		switchTime = 0.11;
		latency = 0.5;
		class AnimationSources: AnimationSources {
			class Bumper_A2: Bumper_A2 {
				initPhase = 1;
				displayName = "";
			};
			class door_hide: door_hide {};
			class bedseat_fold: bedseat_fold {};
			class open_window: open_window {};
			class roof_hide: roof_hide {};
			class tailgate_hide: tailgate_hide {};
			class seats_a1: seats_a1 {};
			class seats_a2: seats_a2 {
				initPhase = 1;
			};
		};
	};
	#include "config_ecv.hpp"
};
#include "cfgFaction.hpp"
