#include maps\_utility;
#include common_scripts\utility;
#include maps\_vehicle_aianim;
#include maps\_vehicle;
#using_animtree( "vehicles" );
main( model, type )
{
	//SNDFILE=vehicle_coupe_car
	build_template( "policecar", model, type );
	build_localinit( ::init_local );
	
	build_destructible( "nx_vehicle_exfil_policecar", "nx_vehicle_exfil_policecar" );
	
	//build_deathmodel( "nx_vehicle_exfil_policecar", "nx_vehicle_exfil_policecar_destroy" );
	
	build_drive( %technical_driving_idle_forward, %technical_driving_idle_backward, 10 );

	build_treadfx();
	build_life( 1700, 1500, 1900 );
	build_team( "allies" );
	build_aianims( ::setanims, ::set_vehicle_anims );
	build_compassicon( "automobile", false );

    //police car fx/////
	level._effect[ "police_headlight_l" ]		= loadfx( "nx/lights/nx_exfil_car_headlight_l_01" );
	level._effect[ "police_headlight_r" ]		= loadfx( "nx/lights/nx_exfil_car_headlight_r_01" );
	level._effect[ "police_headlight_light" ]	= loadfx( "nx/lights/nx_exfil_car_headlight_02" );
	level._effect[ "police_light_blue" ]		= loadfx( "nx/misc/nx_copcar_light_blue_loop_01" );
	////////////////////////
	
	build_light( model, "coplight_headlight_l",  "TAG_LIGHT_LEFT_FRONT", "nx/lights/nx_exfil_car_headlight_l_01",     "headlight_l",     0.1 );
    build_light( model, "coplight_headlight_r",  "TAG_LIGHT_RIGHT_FRONT", "nx/lights/nx_exfil_car_headlight_l_01",     "headlight_r",     0.0 );
	build_light( model, "police_headlight_light", "TAG_LIGHT_RIGHT_FRONT", "nx/lights/nx_exfil_car_headlight_02",   "headlight_light",     0.1 );
}

init_local()
{
	//maps\_vehicle::lights_on( "headlight_l" );
	//maps\_vehicle::lights_on( "headlight_r" );
	//maps\_vehicle::lights_on( "headlight_light" );
	thread headlights();
	thread coplights();
}

//MO EDIT: Nate told me to put this in here ( from _uaz.gsc )
set_vehicle_anims( positions )
{


		positions[ 0 ].vehicle_getoutanim = %nx_vh_exfil_policecar_driver_door_open;
		positions[ 1 ].vehicle_getoutanim = %uaz_driver_exit_into_stand_door;
		

		positions[ 0 ].vehicle_getoutanim_clear = false;
		positions[ 1 ].vehicle_getoutanim_clear = false;
		
		//positions[ 0 ].vehicle_getinanim = %uaz_passenger_enter_from_huntedrun_door;
		//positions[ 1 ].vehicle_getinanim = %uaz_driver_enter_from_huntedrun_door;
		

		//positions[ 0 ].vehicle_getinsound = "truck_door_open";
		//positions[ 1 ].vehicle_getinsound = "truck_door_open";
		

		return positions;
}


#using_animtree( "generic_human" );
//MO EDIT: Nate told me to put this in here ( from _uaz.gsc )
setanims()
{

	positions = [];
	for ( i = 0;i < 2;i++ )
		positions[ i ] = spawnstruct();

	positions[ 0 ].sittag = "tag_passenger";
	positions[ 1 ].sittag = "tag_driver";

	positions[ 0 ].idle = %nx_tp_exfil_policecar_driver_idle;
	positions[ 1 ].idle = %uaz_driver_idle_drive;


	positions[ 0 ].getout = %nx_tp_exfil_policecar_driver_dismount;
	positions[ 1 ].getout = %uaz_driver_exit_into_stand;

	//positions[ 0 ].getin = %uaz_passenger_enter_from_huntedrun;
	//positions[ 1 ].getin = %uaz_driver_enter_from_huntedrun;



	return positions;


}

headlights()
{
	common_scripts\_destructible::PlayFxOnTag_KillOnDestructibleSwap( getfx( "police_headlight_l" ), self, "TAG_light_left_front" );
	common_scripts\_destructible::PlayFxOnTag_KillOnDestructibleSwap( getfx( "police_headlight_r" ), self, "TAG_light_right_front" );

	//apm: disabling till i figure out why it does not always kill the fx 
	/*
	self endon( "turn_off_headlight" );
	self endon( "death" );
	self endon( "explode" );

	//self endon( "exploded" );	
	ent_flag_init( "lights" );	
	ent_flag_set( "lights" );
	for ( ;; )
	{
		ent_flag_wait( "lights" );
		common_scripts\_destructible::PlayFxOnTag_KillOnDestructibleSwap( getfx( "police_headlight_l" ), self, "TAG_light_left_front" );
		common_scripts\_destructible::PlayFxOnTag_KillOnDestructibleSwap( getfx( "police_headlight_r" ), self, "TAG_light_right_front" );
		ent_flag_waitopen( "lights" );
		stopFXontag( getfx( "police_headlight_l" ), self, "TAG_light_left_front" );
		stopFXontag( getfx( "police_headlight_r" ), self, "TAG_light_right_front" );
	}
	*/
}

coplights()
{

	wait RandomFloatRange( 0.1, 0.9 );
	common_scripts\_destructible::PlayFxOnTag_KillOnDestructibleSwap( getfx( "police_light_blue" ), self, "TAG_FX_LIGHT_01" );
	wait (0.2);
	common_scripts\_destructible::PlayFxOnTag_KillOnDestructibleSwap( getfx( "police_light_blue" ), self, "TAG_FX_LIGHT_02" );
	wait (0.2);
	common_scripts\_destructible::PlayFxOnTag_KillOnDestructibleSwap( getfx( "police_light_blue" ), self, "TAG_FX_LIGHT_03" );
	wait (0.2);
	common_scripts\_destructible::PlayFxOnTag_KillOnDestructibleSwap( getfx( "police_light_blue" ), self, "TAG_FX_LIGHT_04" );
	wait (0.2);
	common_scripts\_destructible::PlayFxOnTag_KillOnDestructibleSwap( getfx( "police_light_blue" ), self, "TAG_FX_LIGHT_05" );

	/*
	self endon( "turn_off_coplight" );
	self endon( "death" );
	self endon( "explode" );

	ent_flag_init( "cop_lights" );	
	ent_flag_set( "cop_lights" );
	for ( ;; )
	{
		ent_flag_wait( "cop_lights" );
			wait RandomFloatRange( 0.1, 0.9 );
			common_scripts\_destructible::PlayFxOnTag_KillOnDestructibleSwap( getfx( "police_light_blue" ), self, "TAG_FX_LIGHT_01" );
			wait (0.2);
			common_scripts\_destructible::PlayFxOnTag_KillOnDestructibleSwap( getfx( "police_light_blue" ), self, "TAG_FX_LIGHT_02" );
			wait (0.2);
			common_scripts\_destructible::PlayFxOnTag_KillOnDestructibleSwap( getfx( "police_light_blue" ), self, "TAG_FX_LIGHT_03" );
			wait (0.2);
			common_scripts\_destructible::PlayFxOnTag_KillOnDestructibleSwap( getfx( "police_light_blue" ), self, "TAG_FX_LIGHT_04" );
			wait (0.2);
			common_scripts\_destructible::PlayFxOnTag_KillOnDestructibleSwap( getfx( "police_light_blue" ), self, "TAG_FX_LIGHT_05" );

		ent_flag_waitopen( "cop_lights" );
			stopFXontag( getfx( "police_light_blue" ), self, "TAG_FX_LIGHT_01" );
			wait (0.01);
			stopFXontag( getfx( "police_light_blue" ), self, "TAG_FX_LIGHT_02" );
			wait (0.01);
			stopFXontag( getfx( "police_light_blue" ), self, "TAG_FX_LIGHT_03" );
			wait (0.01);
			stopFXontag( getfx( "police_light_blue" ), self, "TAG_FX_LIGHT_04" );
			wait (0.01);
			stopFXontag( getfx( "police_light_blue" ), self, "TAG_FX_LIGHT_05" );
	}
	*/
}

/*QUAKED script_vehicle_nx_exfil_policecar (1 0 0) (-16 -16 -24) (16 16 32) USABLE SPAWNER


maps\_nx_policecar::main( "nx_vehicle_exfil_policecar" );


include,nx_vehicle_exfil_policecar
include,nx_destructible_vehicle_exfil_policecar_destructible
sound,vehicle_policecar_lapd,vehicle_standard,all_sp
sound,vehicle_car_exp,vehicle_standard,all_sp

defaultmdl="nx_vehicle_exfil_policecar"
default:"vehicletype" "policecar"
default:"script_team" "axis"
*/