
// ============================================================================
// original Map: Fueldump; Last update : 01/05/03 Sock
// original fueldump map modified by Teuthis; March 2021
// ============================================================================
game_manager
{
	spawn
	{
		// Game rules
		wm_axis_respawntime	10
		wm_allied_respawntime	15
		wm_number_of_objectives 7
		wm_set_round_timelimit	25		//30min it is chance to 25

		wm_objective_status 1 1 0		//Depotgate			-Allies		-default
		wm_objective_status 1 0 0		//Depotgate			-Axis		-default
		wm_objective_status 2 1 0		//steal tank			-Allies		-default
		wm_objective_status 2 0 0		//steal tank			-Axis		-default
		wm_objective_status 3 1 0		//Tunneldoor			-Allies		-default
		wm_objective_status 3 0 0		//Tunneldoor			-Axis		-default
		wm_objective_status 4 1 0		//Bridge			-Allies		-default
		wm_objective_status 4 0 0		//bridge			-Axis		-default
		wm_objective_status 5 1 0		//Escape Door			-Allies		-default
		wm_objective_status 5 0 0		//Escape Door			-Axis		-default
		wm_objective_status 6 1 0		//Axis CP			-Allies		-default
		wm_objective_status 6 0 0		//Axis CP			-Axis		-default
		wm_objective_status 7 1 0		//Allies CP			-Allies		-default
		wm_objective_status 7 0 0		//Allies CP			-Axis		-default

		wm_set_defending_team	0		// Stopwatch mode defending team (0=Axis, 1=Allies)	
		wm_setwinner	0			// Winner on expiration of round timer (0=Axis, 1=Allies)

		//**********************************************
		//****accums of game_manager script block*******
		//accum 1, check win conditions************
		//accum 2, announce certain vo only if depotdefences are not installed

		accum 1 set 0				// Accumulator to check win conditions
		
		wait 500
		setautospawn "Tunnel Store Room" 1	//this refers to the "Description" entry of the yellow team_wolf_objective of allies spawn1
		setautospawn "Axis Fuel Dump" 0		//this refers to the "Description" entry of the yellow team_wolf_objective of axis spawn1

		// Garage Doors
		globalaccum 4 set 0			// Flexible Door 1 status. (0=stationary, 1=moving)
		globalaccum 5 set 0			// Flexible Door 2 status. (0=stationary, 1=moving)

		// CP speakers
		disablespeaker axishq_sound
		disablespeaker alliedhq_sound

		wait 2000
		
		//**********************************************************************
		//*****voice commands at mapstart***modified by Teuthis*****************
		//**********************************************************************

		// *----------------------------------- vo ------------------------------------------*
		wm_addteamvoiceannounce 0 "fueldump_axis_gates_stop"		//add start vo: don't let them destroy the depotgates
		wm_addteamvoiceannounce 0 "goldrush_axis_tank_steal"		//add start vo: don't let them steal the tank
		wm_addteamvoiceannounce 0 "fueldump_axis_depotdef_construct"	//add start vo: construct the depot defences

		wm_addteamvoiceannounce 1 "fueldump_allies_depotdef_destroy"	//add start vo: destroy the depotdefences
		wm_addteamvoiceannounce 1 "goldrush_allies_tank_steal"		//add start vo: steal the tank
		

		wm_teamvoiceannounce 0 "fueldump_axis_gates_stop"		//play vo: don't let them destroy the depotgates
		wm_teamvoiceannounce 0 "goldrush_axis_tank_steal"		//play vo: don't let them steal the tank
		wm_teamvoiceannounce 0 "fueldump_axis_depotdef_construct"	//play vo: construct the depot defences
		wm_teamvoiceannounce 0 "axis_hq_compost_construct"		//play vo: construct the CP

		wm_teamvoiceannounce 1 "fueldump_allies_depotdef_destroy"	//play vo: destroy the depotdefences
		wm_teamvoiceannounce 1 "goldrush_allies_tank_steal"		//play vo: steal the tank
		wm_teamvoiceannounce 1 "allies_hq_compost_construct"		//play vo: construct the CP
		// *---------------------------------------------------------------------------------*
	}

	//-----------------------------------------------------------------------
	// Destroying the Axis Depot Gates.
	//-----------------------------------------------------------------------
	trigger objective1							//triggered when objective 1 is completed
	{
		wm_announce	"^2Allied team has breached the Depot Gates!"
		setstate depotgate_toi invisible				//toi no longer needed
		trigger self obj1_vo_check 					//play certain vo only if depotdefences are not yet installed

		// *----------------------------------- vo ------------------------------------------*
		wm_teamvoiceannounce 0 "fueldump_axis_gates_destroyed"		//play vo: they have destroyed the depotgates
		wm_teamvoiceannounce 0 "goldrush_axis_tank_steal"		//play vo: don't let them steal the tank

		wm_teamvoiceannounce 1 "fueldump_allies_gates_destroyed"	//play vo: depotgates destroyed
		wm_teamvoiceannounce 1 "fueldump_allies_depotdef_destroy"	//play vo: destroy the depotdefences
		wm_teamvoiceannounce 1 "goldrush_allies_tank_steal"		//play vo: steal the tank

		wm_removeteamvoiceannounce 0 "fueldump_axis_gates_stop"		//remove starting vo: don't let them destroy the depotgates
		// *---------------------------------------------------------------------------------*
	}

	trigger depotdef_const							//play certain vo only if depotdefences are not yet installed
	{
		
		accum 2 bitset 1						//depotfence constructed. no need to play certain start vo
	}

	trigger depotdef_destr							//play certain start vo only if depotdefences are not yet installed
	{
		
		accum 2 bitreset 0						//depotfence constructed. need to play certain vo
	}

	trigger obj1_vo_check							//play certain vo only if depotdefences are not yet installed
	{
		
		accum 2 abort_if_greater_than 0					// do not play if defences are constructed already
		// *----------------------------------- vo ------------------------------------------*
		wm_teamvoiceannounce 0 "fueldump_axis_depotdef_construct"	//play vo: construct the depot defences
		// *---------------------------------------------------------------------------------*
	}



	//-----------------------------------------------------------------------
	// stank stolen
	//-----------------------------------------------------------------------
	trigger objective2	
	{
		wm_announce	"^2Allied team has stolen the tank"
		
		// *----------------------------------- vo ------------------------------------------*
		wm_addteamvoiceannounce 1 "allies_escort_vehicle"			//add start vo: escort the vehicle

		wm_addteamvoiceannounce 0 "axis_disable_vehicle"			//play start vo: disable the vehicle

		wm_teamvoiceannounce 0 "goldrush_axis_tank_stolen"			//play vo: they have stolen the tank

		wm_teamvoiceannounce 1 "goldrush_allies_tank_stolen"			//play vo: we have stolen the tank		
		wm_teamvoiceannounce 1 "fueldump_allies_tank_reardepot"			//play vo: escort the tank to the rear of the depot

		wm_removeteamvoiceannounce 0 "fueldump_axis_gates_stop"			//remove starting vo: don't let them destroy the depotgates
		wm_removeteamvoiceannounce 0 "fueldump_axis_depotdef_construct"		//remove starting vo: construct the depotdefenecs
		wm_removeteamvoiceannounce 0 "goldrush_axis_tank_steal"			//dont let them steal the tank

		wm_removeteamvoiceannounce 1 "goldrush_axis_tank_steal"			//dont let them steal the tank
		wm_removeteamvoiceannounce 1 "fueldump_allies_depotdef_destroy"		//remove start vo: destroy the depotdefences
		wm_removeteamvoiceannounce 1 "goldrush_allies_tank_steal"		//remove start vo: steal the tank
		// *---------------------------------------------------------------------------------*
	}

	//-----------------------------------------------------------------------
	// Tank passed the Depotgate
	//-----------------------------------------------------------------------

	trigger gate_passed								//tank made it over spln33
	{
		wm_announce	"^2Allied team escorted the tank out of the depotgate"
		
		// *----------------------------------- vo ------------------------------------------*
		wm_addteamvoiceannounce 0 "fueldump_axis_tunnel_stop"			//play start vo: don't let them destroy the tunneldoors

		wm_teamvoiceannounce 0 "fueldump_axis_tunnel_stop"			//play vo: don't let them destroy the tunneldoors				
	
		wm_removeteamvoiceannounce 1 "fueldump_allies_tank_reardepot"		//remove starting vo: escort the tank to the rear of the depot
		// *---------------------------------------------------------------------------------*
	}

	//-----------------------------------------------------------------------
	// sidewall breached
	//-----------------------------------------------------------------------
	
	trigger sidewall
	{
		wm_announce	"^2Allied team destroyed the side entrance"
		
		// *----------------------------------- vo ------------------------------------------*
		wm_teamvoiceannounce 0 "fueldump_axis_wall_destroyed" 			//play vo: they have breached the side wall

		wm_teamvoiceannounce 1 "fueldump_allies_wall_destroyed"			//play vo: depotsidewall breached
		// *---------------------------------------------------------------------------------*
	}

	//-----------------------------------------------------------------------
	// Tank is in the tunnel and on the way to the tunneldoors
	//-----------------------------------------------------------------------

	trigger tank_tunnel								//tank is in the tunnel
	{
		wm_announce "^2the tank is in the tunnel"
		
		// *----------------------------------- vo ------------------------------------------*
		wm_teamvoiceannounce 0 "fueldump_axis_tunnel_stop"		//play vo: don't let them destroy the tunneldoors				
		wm_teamvoiceannounce 0 "fueldump_axis_tank_tunnel"		//play vo: the tank is in the tunnel
		// *---------------------------------------------------------------------------------*
	}


	//-----------------------------------------------------------------------
	// Destroying the Tunnel Doors.
	//-----------------------------------------------------------------------
	
	trigger objective3
	{
		wm_announce	"^2Allied team has breached the Tunnel Doors!"
		setstate tunneldoor_toi invisible

		setautospawn "Axis Entrance Spawn" 0				//here we switch the spawn for the Axis
	
		// *----------------------------------- vo ------------------------------------------*
		wm_addteamvoiceannounce 0 "fueldump_axis_bridge_stop"		//add start vo: don't let them construct the bridge

		wm_addteamvoiceannounce 1 "fueldump_allies_bridge_construct"	//add vo: construct the bridge
		wm_addteamvoiceannounce 1 "fueldump_allies_tank_bridge"		//add vo: escort the tank over the bridge

		wm_teamvoiceannounce 0 "fueldump_axis_tunnel_destroyed"		//play start vo: they have destroyed the tunnel doors
		wm_teamvoiceannounce 0 "fueldump_axis_bridge_stop"		//play start vo: don't let them construct the bridge

		wm_teamvoiceannounce 1 "fueldump_allies_bridge_construct"	//play vo: construct the bridge
		wm_teamvoiceannounce 1 "fueldump_allies_tank_bridge"		//play vo: escort the tank over the bridge
		
		wm_removeteamvoiceannounce 0 "fueldump_axis_tunnel_stop"	//remove start vo: don't let them destroy the tunneldoors
		wm_removeteamvoiceannounce 1 "allies_escort_vehicle"		//remove start vo: escort the vehicle
		// *---------------------------------------------------------------------------------*
	}

	//-----------------------------------------------------------------------
	// Constructing a Bridge over the frozen river
	//-----------------------------------------------------------------------
	
	trigger objective4
	{
		wm_announce "^2Allied team has constructed the bridge!"

		//*----------------------------------- vo ------------------------------------------*
		wm_addteamvoiceannounce 1 "allies_escort_vehicle"		//play start vo: escort the vehicle
		// *---------------------------------------------------------------------------------*
	}
	// ============================================================================
	// End sequence when Allies win
	// ============================================================================

	trigger allies_win				//entities for end sequence are external to main terrain 		
	{		
		wm_setwinner 1				//allies won
		wm_announce "^3Allies prevented the Axis from gaining information on their tank technology and cleared the path for an allied airstrike"
		wait 3000

		wm_endround				//finish the game
		wait 1000

		trigger self sound_move			//play sound
		alertentity rocket1			//fire rocket
		wait 2000

		alertentity rocket3			//fire rocket
		wait 1000
		alertentity explow			//activate explosion
		wait 500
		alertentity rocket4			//fire rocket
		wait 500
		alertentity explow2			//activate explosion
		wait 500
		alertentity rocket5			//fire rocket
		wait 500
		alertentity explow3			//activate explosion
		wait 500
		alertentity rocket2			//fire rocket		
		wait 500
		alertentity wall			//target_explosion
		wait 100
		setstate hole default			//make debris visible
		wm_announce "^2all rockets shot"

		wait 3000
		
		kill rocket1				//kill rocket
		kill rocket2				//kill rocket
		kill rocket3				//kill rocket
		kill rocket4				//kill rocket
		kill rocket5
			
		wait 200
		trigger self sound_stop			//all dead now	
	}

	trigger sound_move
	{
		stopsound
		playsound sound/vo/teuthonia/helicopter.wav looping volume 900
	}

	trigger sound_stop
	{
		stopsound
		playsound sound/vo/teuthonia/helicopter.wav volume 300
	}
}

hole			//func_static of debris. Get visible after the airstrike in the end sequence
{
	spawn
	{
		setstate hole invisible	//debris invisible unless targeted
	}
}

// *************************************************
// ******* Dynamite the Depotgate***Objective 1*****
// *************************************************

depotgate								// func_explosion - script adjusted from siwa oasis
{
	spawn
	{
		wait 200

		constructible_class 3					//only dynamite can destroy the gate
		setstate gate_broken invisible				//hole in gate invisible at map start
		wait 200
		trigger tank disable_stage4				//depotgate intact, block tank at spln29
	}

	death
	{

		trigger tank enable_stage4				//depotgate blown, do not block tank anymore at spln29

		setstate gate_broken default				//hole in wall now visible

		trigger game_manager objective1				//trigger some vo announcements

		wm_objective_status 		1 0 2			//depotgate	-axis	-failed
		wm_objective_status 		1 1 1			//depotgate	-allies	-completed

	}
}

// ***********************************************************
// ******* Dynamite the side wall*****************
// ***********************************************************

basewall								// func_explosion 
{
	spawn
	{
		wait 200

		constructible_class 3					//only dynamite can destroy the gate
		//setstate gate_broken invisible			//hole in gate invisible at map start
	}

	death
	{

		trigger game_manager sidewall				//need to call a few vo here
	}
}

// ============================================================================
// Reardump Barricades
// ============================================================================

frontdump		//this is the side opposite of where the tank leaves
{
	spawn
	{
		wait 200
		constructible_class 2				//only satchel and dynamite can destroy entity
		setstate frontdumpmaterials_stage1 default
		setstate frontdumpmaterials_stage2 default
		setstate frontdump1_trighurt invisible
		setstate frontdump2_trighurt invisible
	}

	//-----------------------------------------------------------------------
	// Stage 1 is BUILT
	//-----------------------------------------------------------------------
	built stage1
	{
		setstate frontdumpmaterials_stage1 invisible
		setstate frontdump1_trighurt default
	}

	//-----------------------------------------------------------------------
	// Stage 1 is DESTROYED
	//-----------------------------------------------------------------------
	death
	{
		setstate frontdumpmaterials_stage1 default
		setstate frontdump1_trighurt invisible

		// Some kind of UI pop-up to alert players
		wm_announce	"^2Allied team has destroyed the East Axis Base Fortification!"

		// *----------------------------------- vo ------------------------------------------*
		wm_teamvoiceannounce 0 "fueldump_axis_depotdef_destroyed"
		// *---------------------------------------------------------------------------------*
	}

	//-----------------------------------------------------------------------
	// Stage 2 is BUILT
	//-----------------------------------------------------------------------
	built final
	{
		setstate frontdumpmaterials_stage2 invisible
		setstate frontdump2_trighurt default

		// Some kind of UI pop-up to alert players
		wm_announce	"^2Axis team has constructed the East Axis Base Fortification!"

		// *----------------------------------- vo ------------------------------------------*
		wm_addteamvoiceannounce 1 "fueldump_allies_depotdef_destroy"

		wm_teamvoiceannounce 0 "fueldump_axis_depotdef_constructed"

		wm_teamvoiceannounce 1 "fueldump_allies_depotdef_destroy"

		wm_removeteamvoiceannounce 0 "fueldump_axis_depotdef_construct"
		// *---------------------------------------------------------------------------------*
	}

	//-----------------------------------------------------------------------
	// Stage 2 is DESTROYED, go back to stage 1
	//-----------------------------------------------------------------------
	destroyed final
	{
		setstate frontdumpmaterials_stage2 default
		setstate frontdump2_trighurt invisible

		// Some kind of UI pop-up to alert players
		wm_announce	"^2Allied team has damaged the East Axis Base Fortification!"

		// *----------------------------------- vo ------------------------------------------*
		wm_addteamvoiceannounce 0 "fueldump_axis_depotdef_construct"

		wm_teamvoiceannounce 0 "fueldump_axis_depotdef_breached"

		wm_teamvoiceannounce 1 "fueldump_allies_depotdef_destroyed"

		wm_removeteamvoiceannounce 1 "fueldump_allies_depotdef_destroy"
		// *---------------------------------------------------------------------------------*
	}
}

reardump		//this is the side where the tank leaves, modified by Teuthis for 1 stage only
{
	spawn
	{
		wait 200
		constructible_class 3				//only dynamite can blow the thing
		setstate reardumpmaterials_stage2 default
		setstate reardump_toi default

	}

	built
	{
		setstate reardumpmaterials_stage2 invisible
		setstate reardump_toi invisible
		wm_announce	"^2Allied team has constructed the West Axis Base Fortification!"
	

		wait 200
		trigger tank disable_stage1				//reardump gate intact, block tank
		trigger game_manager depotdef_const

		// *----------------------------------- vo ------------------------------------------*
		wm_addteamvoiceannounce 1 "fueldump_allies_depotdef_destroy"

		wm_teamvoiceannounce 0 "fueldump_axis_depotdef_constructed"

		wm_teamvoiceannounce 1 "fueldump_allies_depotdef_destroy"

		wm_removeteamvoiceannounce 0 "fueldump_axis_depotdef_construct"
		// *---------------------------------------------------------------------------------*
	}

	death
	{
		trigger tank enable_stage1				//reardump gate blown, do not block tank 
		setstate reardumpmaterials_stage2 default
		setstate reardump_toi default
		trigger game_manager depotdef_dest

		// Some kind of UI pop-up to alert players
		wm_announce	"^2Allied team has destroyed the West Axis Base Fortification!"

		// *----------------------------------- vo ------------------------------------------*
		wm_teamvoiceannounce 0 "fueldump_axis_depotdef_destroyed"	//play vo: Depotfence destroyed
		wm_teamvoiceannounce 1 "fueldump_allies_depotdef_destroyed"	//play vo: Depotdefences destroyed
		// *---------------------------------------------------------------------------------*
	}

	trigger remove			//needed for the tank stuff. Used to let the crates disappear after the tank reached spln3
	{
		setstate reardumpmaterials_stage2 invisible
		setstate reardump_toi invisible
	
		wm_objective_status 2 1 1				//steal tank	allies	completed
		wm_objective_status 2 0 2				//steal tank	axis	failed

		remove
	}

}

// ============================================================================
// Allied MG42 NEST next to the tank bay
// - on Axis side of the map
// ============================================================================
alliedsidemg42
{
	spawn
	{
		wait 200
		constructible_class 2
		setstate alliedsidemg42_sandbags invisible
		setstate alliedsidemg42_gun invisible
	}

	buildstart final
	{
		setstate alliedsidemg42_sandbags underconstruction
		setstate alliedsidemg42_gun underconstruction
	}

	built final
	{
		setstate alliedsidemg42_sandbags default
		setstate alliedsidemg42_gun default
		setstate sidetowermaterials invisible

		// Some kind of UI pop-up to alert players
		wm_announce	"^2Allied team has constructed the Side MG Nest!"
	}

	decayed final
	{
		setstate alliedsidemg42_sandbags invisible
		setstate alliedsidemg42_gun invisible
	}

	death
	{
		setstate alliedsidemg42_sandbags invisible
		setstate alliedsidemg42_gun invisible
		repairmg42 alliedsidemg42_gun

		setstate sidetowermaterials default

		// Some kind of UI pop-up to alert players
		wm_announce	"^2Axis team has destroyed the Side MG Nest!"
	}
}

// ============================================================================
// AXIS GUARD TOWER next to the tank bay
// - on Axis side of the map
// ============================================================================
axissidetower
{
	spawn
	{
		wait 200
		constructible_class 2
//		setstate axissidetower invisible	//when set causes a setstate error
		setstate axissidetowermg42 invisible	
		setstate sidetowermaterials default
	}

	buildstart final
	{
//		setstate axissidetower underconstruction	//when set causes a setstate error
		setstate axissidetowermg42 underconstruction
	}

	built final
	{
//		setstate axissidetower default			//when set causes a setstate error
		setstate axissidetowermg42 default
		setstate sidetowermaterials invisible

		// Some kind of UI pop-up to alert players
		wm_announce	"^2Axis team has constructed the Side MG Nest!"
	}

	decayed final
	{
//		setstate axissidetower invisible		//when set causes a setstate error
		setstate axissidetowermg42 invisible
	}

	death
	{
		trigger axissidetowerblast boom

//		setstate axissidetower invisible		//when set causes a setstate error
		setstate axissidetowermg42 invisible
		repairmg42 axissidetowermg42

		setstate sidetowermaterials default

		// Some kind of UI pop-up to alert players
		wm_announce	"^2Allied team has destroyed the Side MG Nest!"
	}
}

// Trigger hurt brush around the tower to catch all people
//  in the tower when it is destroyed.
axissidetowerblast
{
	spawn
	{
		wait 200
		setstate axissidetowerblast invisible
	}

	trigger boom
	{
		setstate axissidetowerblast default
		wait 500
		setstate axissidetowerblast invisible
	}
}

// ===========================================================================================
// Garage Doors for Tank
// ===========================================================================================
tbdoor1_trigger1
{
	spawn
	{
		accum 3 set 0				// Initial state of lever. (0=down, 1=up)
	}
	trigger main
	{
		trigger tbdoor1_trigger1 up
		trigger tbdoor1_trigger1 down
	}

	trigger up
	{
		accum 3 abort_if_not_equal 0		// Lever up already ?
		globalaccum 4 abort_if_not_equal 0	// Flexible Door moving ?
		resetscript

		globalaccum 4 set 1			// Door is opening ...
		accum 3 set 1				// Lever is in up position
		trigger tbflywheel1 start		// Set flywheel moving
		trigger tbflywheel1 clockwise		// Start turning
		trigger tbflywheel1_sound wheel1_run
		trigger tbdoor1_lever1 up		// Move lever
		trigger tbdoor1-9 open			// Start moving all the door sections
	}

	trigger down
	{
		accum 3 abort_if_not_equal 1		// Lever down already ?
		globalaccum 4 abort_if_not_equal 0	// Flexible Door moving ?
		resetscript

		globalaccum 4 set 1			// Door is opening ...
		accum 3 set 0				// Lever is in up position
		trigger tbflywheel1 start		// Set flywheel moving
		trigger tbflywheel1 anticlockwise	// Start turning
		trigger tbflywheel1_sound wheel1_run
		trigger tbdoor1_lever1 down		// Move lever
		trigger tbdoor1-9 close			// Start moving all the door sections
	}
}

tbdoor1_lever1
{
	trigger down
	{
		gotomarker tbdoor1_lever1_downpos 16
		playsound sound/movers/switches/butn2.wav
	}
	trigger up
	{
		gotomarker tbdoor1_lever1_uppos 16
		playsound sound/movers/switches/switch.wav
	}
}

tbflywheel1_sound
{
	trigger wheel1_run
	{
		trigger tbflywheel1 sound_start
		wait 400
		trigger tbflywheel1 sound_run
	}
}

tbflywheel1
{
	spawn
	{
		accum 3 set 0			// Flywheel moving (0=No, 1=Yes)
	}

	trigger sound_start
	{
		stopsound
		playsound sound/movers/motors/motor_start_01.wav volume 127
	}

	trigger sound_run
	{
		playsound sound/movers/motors/motor_loop_01.wav looping volume 512
	}

	trigger sound_stop
	{
		stopsound
		playsound sound/movers/motors/motor_end_01.wav volume 127
	}

	trigger clockwise
	{
		accum 3 abort_if_not_equal 1	// Flywheel moving ?
		faceangles 90 0 0 250 wait
		accum 3 abort_if_not_equal 1	// Flywheel moving ?
		faceangles 180 0 0 250 wait
		accum 3 abort_if_not_equal 1	// Flywheel moving ?
		faceangles 270 0 0 250 wait
		accum 3 abort_if_not_equal 1	// Flywheel moving ?
		faceangles 0 0 0 250 wait

		trigger tbflywheel1 clockwise
	}

	trigger anticlockwise
	{
		accum 3 abort_if_not_equal 1	// Flywheel moving ?
		faceangles 270 0 0 250 wait
		accum 3 abort_if_not_equal 1	// Flywheel moving ?
		faceangles 180 0 0 250 wait
		accum 3 abort_if_not_equal 1	// Flywheel moving ?
		faceangles 90 0 0 250 wait
		accum 3 abort_if_not_equal 1	// Flywheel moving ?
		faceangles 0 0 0 250 wait

		trigger tbflywheel1 anticlockwise
	}

	trigger start
	{
		accum 3 set 1			// Start wheel moving
	}

	trigger stop
	{
		accum 3 set 0			// Stop wheel moving

		trigger self sound_stop
	}
}

tbdoor1-9
{
	spawn
	{
		wait 200
		trigger tbdoor1_trigger1 up
	}

	trigger open
	{
		stopsound			// Kill all currently playing sounds belonging to this entity only
		playsound sound/movers/misc/garage_door_start_01.wav volume 96
		wait 50
		playsound sound/movers/misc/garage_door_loop_01.wav looping volume 512
		followpath 1 tbdrspln1-3 50 wait length 16
		followpath 1 tbdrspln1-4 50 wait length 16
		trigger tbflywheel1 stop	// Turn off flywheel
		globalaccum 4 set 0		// Flexible door 1 has stopped moving
		stopsound			// Kill all currently playing sounds belonging to this entity only
		playsound sound/movers/misc/garage_door_end_01.wav volume 96
	}

	trigger close
	{
		stopsound			// Kill all currently playing sounds belonging to this entity only
		playsound sound/movers/misc/garage_door_start_01.wav volume 96
		wait 50
		playsound sound/movers/misc/garage_door_loop_01.wav looping volume 512
		followpath 0 tbdrspln1-4 50 wait length 16
		followpath 0 tbdrspln1-3 50 wait length 16
		trigger tbflywheel1 stop	// Turn off flywheel
		globalaccum 4 set 0		// Flexible door 1 has stopped moving
		stopsound			// Kill all currently playing sounds belonging to this entity only
		playsound sound/movers/misc/garage_door_end_01.wav volume 96
	}
}

tbdoor1-8
{
	spawn
	{
		wait 100
		attatchtotrain tbdoor1-9 16
	}
}

tbdoor1-7
{
	spawn
	{
		wait 100
		attatchtotrain tbdoor1-8 16
	}
}

tbdoor1-6
{
	spawn
	{
		wait 100
		attatchtotrain tbdoor1-7 16
	}
}

tbdoor1-5
{
	spawn
	{
		wait 100
		attatchtotrain tbdoor1-6 16
	}
}

tbdoor1-4
{
	spawn
	{
		wait 100
		attatchtotrain tbdoor1-5 16
	}
}

tbdoor1-3
{
	spawn
	{
		wait 100
		attatchtotrain tbdoor1-4 16
	}
}

tbdoor1-2
{
	spawn
	{
		wait 100
		attatchtotrain tbdoor1-3 16
	}
}

tbdoor1-1
{
	spawn
	{
		wait 100
		attatchtotrain tbdoor1-2 16
	}
}

// ===========================================================================================
// Garage Doors for Tank
// ===========================================================================================

tbdoor2_trigger1
{
	spawn
	{
		accum 3 set 0			// Initial state of lever. (0=down, 1=up)
	}
	trigger main
	{
		trigger tbdoor2_trigger1 up
		trigger tbdoor2_trigger1 down
	}

	trigger up
	{
		accum 3 abort_if_not_equal 0		// Lever up already ?
		globalaccum 5 abort_if_not_equal 0	// Flexible Door moving ?
		resetscript

		globalaccum 5 set 1			// Door is opening ...
		accum 3 set 1				// Lever is in up position
		trigger tbflywheel2 start			// Set flywheel moving
		trigger tbflywheel2 clockwise		// Start turning
		trigger tbflywheel2_sound wheel2_run
		trigger tbdoor2_lever1 up		// Move lever
		trigger tbdoor2-9 open			// Start moving all the door sections
	}

	trigger down
	{
		accum 3 abort_if_not_equal 1		// Lever down already ?
		globalaccum 5 abort_if_not_equal 0	// Flexible Door moving ?
		resetscript

		globalaccum 5 set 1			// Door is opening ...
		accum 3 set 0				// Lever is in up position
		trigger tbflywheel2 start		// Set flywheel moving
		trigger tbflywheel2 anticlockwise	// Start turning
		trigger tbflywheel2_sound wheel2_run
		trigger tbdoor2_lever1 down		// Move lever
		trigger tbdoor2-9 close			// Start moving all the door sections
	}
}

tbdoor2_lever1
{
	trigger down
	{
		gotomarker tbdoor2_lever1_downpos 16
		playsound sound/movers/switches/butn2.wav
	}
	trigger up
	{
		gotomarker tbdoor2_lever1_uppos 16
		playsound sound/movers/switches/switch.wav
	}
}

tbflywheel2_sound
{
	trigger wheel2_run
	{
		trigger tbflywheel2 sound_start
		wait 400
		trigger tbflywheel2 sound_run
	}
}

tbflywheel2
{
	spawn
	{
		accum 3 set 0			// Flywheel moving (0=No, 1=Yes)
	}

	trigger sound_start
	{
		stopsound
		playsound sound/movers/motors/motor_start_01.wav volume 127
	}

	trigger sound_run
	{
		playsound sound/movers/motors/motor_loop_01.wav looping volume 512
	}

	trigger sound_stop
	{
		stopsound
		playsound sound/movers/motors/motor_end_01.wav volume 127
	}

	trigger clockwise
	{
		accum 3 abort_if_not_equal 1	// Flywheel moving ?
		faceangles 90 0 0 250 wait
		accum 3 abort_if_not_equal 1	// Flywheel moving ?
		faceangles 180 0 0 250 wait
		accum 3 abort_if_not_equal 1	// Flywheel moving ?
		faceangles 270 0 0 250 wait
		accum 3 abort_if_not_equal 1	// Flywheel moving ?
		faceangles 0 0 0 250 wait

		trigger tbflywheel2 clockwise
	}

	trigger anticlockwise
	{
		accum 3 abort_if_not_equal 1	// Flywheel moving ?
		faceangles 270 0 0 250 wait
		accum 3 abort_if_not_equal 1	// Flywheel moving ?
		faceangles 180 0 0 250 wait
		accum 3 abort_if_not_equal 1	// Flywheel moving ?
		faceangles 90 0 0 250 wait
		accum 3 abort_if_not_equal 1	// Flywheel moving ?
		faceangles 0 0 0 250 wait

		trigger tbflywheel2 anticlockwise
	}

	trigger start
	{
		accum 3 set 1			// Start wheel moving
	}
	trigger stop
	{
		accum 3 set 0			// Stop wheel moving

		trigger self sound_stop
	}
}

tbdoor2-9
{
	spawn
	{
		wait 200
		trigger tbdoor2_trigger1 up
	}

	trigger open
	{
		stopsound			// Kill all currently playing sounds belonging to this entity only
		playsound sound/movers/misc/garage_door_start_01.wav volume 96
		wait 50
		playsound sound/movers/misc/garage_door_loop_01.wav looping volume 512
		followpath 1 tbdrspln2-3 50 wait length 16
		followpath 1 tbdrspln2-4 50 wait length 16
		trigger tbflywheel2 stop	// Turn off flywheel
		globalaccum 5 set 0		// Flexible door 1 has stopped moving
		stopsound			// Kill all currently playing sounds belonging to this entity only
		playsound sound/movers/misc/garage_door_end_01.wav volume 96
	}

	trigger close
	{
		stopsound			// Kill all currently playing sounds belonging to this entity only
		playsound sound/movers/misc/garage_door_start_01.wav volume 96
		wait 50
		playsound sound/movers/misc/garage_door_loop_01.wav looping volume 512
		followpath 0 tbdrspln2-4 50 wait length 16
		followpath 0 tbdrspln2-3 50 wait length 16
		trigger tbflywheel2 stop	// Turn off flywheel
		globalaccum 5 set 0		// Flexible door 1 has stopped moving
		stopsound			// Kill all currently playing sounds belonging to this entity only
		playsound sound/movers/misc/garage_door_end_01.wav volume 96
	}
}

tbdoor2-8
{
	spawn
	{
		wait 100
		attatchtotrain tbdoor2-9 16
	}
}

tbdoor2-7
{
	spawn
	{
		wait 100
		attatchtotrain tbdoor2-8 16
	}
}

tbdoor2-6
{
	spawn
	{
		wait 100
		attatchtotrain tbdoor2-7 16
	}
}

tbdoor2-5
{
	spawn
	{
		wait 100
		attatchtotrain tbdoor2-6 16
	}
}

tbdoor2-4
{
	spawn
	{
		wait 100
		attatchtotrain tbdoor2-5 16
	}
}

tbdoor2-3
{
	spawn
	{
		wait 100
		attatchtotrain tbdoor2-4 16
	}
}

tbdoor2-2
{
	spawn
	{
		wait 100
		attatchtotrain tbdoor2-3 16
	}
}

tbdoor2-1
{
	spawn
	{
		wait 100
		attatchtotrain tbdoor2-2 16
	}
}

// ============================================================================
// Allied HQ bits and pieces
// ============================================================================
alliedhqradio_toi
{
	//-----------------------------------------------------------------------
	// Enable health/ammo cabinets, allied radio has been built
	//-----------------------------------------------------------------------
	trigger enable_hacabs
	{
		setstate tankbay_healthcabinet default
		setstate tankbay_ammocabinet default

		setstate tankbay_healthtrigger default
		setstate tankbay_ammotrigger default

		setstate tankbay_healthcabinet_dmg invisible
		setstate tankbay_ammocabinet_dmg invisible

		setstate tankbay_hacabinet_cm_marker default
		setstate tankbay_hacabinet_toi default
	}

	//-----------------------------------------------------------------------
	// Disable health/ammo cabinets, allied radio has been destroyed
	//-----------------------------------------------------------------------
	trigger disable_hacabs
	{
		setstate tankbay_healthcabinet invisible
		setstate tankbay_ammocabinet invisible

		setstate tankbay_healthtrigger invisible
		setstate tankbay_ammotrigger invisible

		setstate tankbay_healthcabinet_dmg default
		setstate tankbay_ammocabinet_dmg default

		setstate tankbay_hacabinet_cm_marker invisible
		setstate tankbay_hacabinet_toi invisible
	}

}

allied_radio_destroyed
{
	spawn
	{
		wait 200
		setstate allied_radio_destroyed invisible
		setstate allied_radio_destroyed_model invisible
	}
	trigger hide
	{
		setstate allied_radio_destroyed invisible
		setstate allied_radio_destroyed_model invisible
	}
	trigger show
	{
		setstate allied_radio_destroyed default
		setstate allied_radio_destroyed_model default
	}
}

allied_radio_closed
{
	spawn
	{
		wait 200
		setstate allied_radio_closed default
		setstate allied_radio_closed_model default
	}
	trigger hide
	{
		setstate allied_radio_closed invisible
		setstate allied_radio_closed_model invisible
	}
	trigger show
	{
		setstate allied_radio_closed default
		setstate allied_radio_closed_model default
	}
}

allied_radio_built
{
	spawn
	{
		wait 400
		constructible_class 2
		trigger allied_radio_built setup
	}

	trigger setup
	{
		setchargetimefactor 1 soldier 1
		setchargetimefactor 1 lieutenant 1
		setchargetimefactor 1 medic 1
		setchargetimefactor 1 engineer 1
		setchargetimefactor 1 covertops 1
		sethqstatus 1 0
		trigger alliedhqradio_toi disable_hacabs
	}

	buildstart final
	{
		trigger allied_radio_built_model trans
		trigger allied_radio_destroyed hide
		trigger allied_radio_closed hide
	}

	decayed final
	{
		trigger allied_radio_built_model hide
		trigger allied_radio_closed show
	}

	built final
	{
		trigger allied_radio_built_model show
		trigger allied_radio_closed hide
		trigger allied_radio_destroyed hide

		trigger allied_radio_built_model enable_allied_features
		enablespeaker alliedhq_sound
	}

	death
	{
		trigger allied_radio_built_model hide
		trigger allied_radio_destroyed show

		trigger allied_radio_built_model disable_allied_features
		disablespeaker alliedhq_sound
	}
}

allied_radio_built_model
{
	spawn
	{
		wait 400
		setstate allied_radio_built_model invisible

		accum 0 bitreset 0	// set if radio is built
		accum 0 bitreset 1	// set if goal should be ignored
	}

	trigger show
	{
		setstate allied_radio_built_model default
	}

	trigger hide
	{
		setstate allied_radio_built_model invisible
	}

	trigger trans
	{
		setstate allied_radio_built_model underconstruction
	}

	trigger enable_allied_features
	{
		trigger alliedhqradio_toi enable_hacabs
		//-----------------------------------------------------------------------
		// Increase Allies charge times
		//-----------------------------------------------------------------------
		setchargetimefactor 1 soldier 0.75
		setchargetimefactor 1 lieutenant 0.75
		setchargetimefactor 1 medic 0.75
		setchargetimefactor 1 engineer 0.75
		setchargetimefactor 1 covertops 0.75
		sethqstatus 1 1

		// *----------------------------------- vo ------------------------------------------*
		wm_teamvoiceannounce 0 "axis_hq_compost_constructed_allies"

		wm_teamvoiceannounce 1 "allies_hq_compost_constructed"

		wm_removeteamvoiceannounce 1 "allies_hq_compost_construct"
		// *---------------------------------------------------------------------------------*

		wm_objective_status 7 1 1	//Allied CP - Allies - Completed
		wm_objective_status 7 0 2	//Allied CP - Axis - failed

		wm_announce	"^2Allied Command Post constructed. Charge speed increased!"

		accum 0 bitset 0
	}

	trigger disable_allied_features
	{
		trigger alliedhqradio_toi disable_hacabs
		//-----------------------------------------------------------------------
		// Decrease Allies charge times
		//-----------------------------------------------------------------------
		setchargetimefactor 1 soldier 1
		setchargetimefactor 1 lieutenant 1
		setchargetimefactor 1 medic 1
		setchargetimefactor 1 engineer 1
		setchargetimefactor 1 covertops 1
		sethqstatus 1 1

		// *----------------------------------- vo ------------------------------------------*
		wm_teamvoiceannounce 1 "allies_hq_compost_damaged"

		wm_addteamvoiceannounce 1 "allies_hq_compost_construct"
		// *---------------------------------------------------------------------------------*

		wm_announce	"^2Axis team has destroyed the Allied Command Post!"
		wm_objective_status 7 0 0	//Allied CP - Axis - default
		wm_objective_status 7 1 0	//Allied CP - Allies - default

		accum 0 bitreset 0
	}
}

// ============================================================================
// Allied GUARD TOWER - on Allied side of the map
// ============================================================================
axistunneltower		// is now allied tower. I kept the script and targetname of axis for convenience reason only
{
	spawn
	{
		wait 200
		constructible_class 2
	//	setstate axistunneltower invisible		//when set causes a setstate error
		setstate axistunneltowermg42 invisible
		setstate tunneltowermaterials default
	}

	buildstart final
	{
	//	setstate axistunneltower underconstruction	//when set causes a setstate error
		setstate axistunneltowermg42 underconstruction
	}

	built final
	{
	//	setstate axistunneltower default		//when set causes a setstate error
		setstate axistunneltowermg42 default
		setstate tunneltowermaterials invisible

		// Some kind of UI pop-up to alert players
		wm_announce	"^2Allied team has constructed the Tunnel MG!"
	}

	decayed final
	{
	//	setstate axistunneltower invisible		//when set causes a setstate error
		setstate axistunneltowermg42 invisible
		setstate tunneltowermaterials default
	}

	death
	{
		trigger axistunneltowerblast boom

	//	setstate axistunneltower invisible		//when set causes a setstate error
		setstate axistunneltowermg42 invisible
		repairmg42 axistunneltowermg42

		setstate tunneltowermaterials default

		// Some kind of UI pop-up to alert players
		wm_announce	"^2Allied team has destroyed the Tunnel MG!"
	}
}

// Trigger hurt brush around the tower to catch all people
//  in the tower when it is destroyed.
axistunneltowerblast
{
	spawn
	{
		wait 200
		setstate axistunneltowerblast invisible
	}

	trigger boom
	{
		setstate axistunneltowerblast default
		wait 500
		setstate axistunneltowerblast invisible
	}
}


// ============================================================================
// The Bridge
// ============================================================================
thebridge
{
	spawn
	{
		accum 7 set 0	// Bridge stage construction and tank status
		wait 200

		constructible_class 3
		setstate bridgematerials_stage1 default
		setstate bridgematerials_stage2 default

		accum 7 bitset 1	// Tank NOT over bridge yet
	}

	//-----------------------------------------------------------------------
	// Stage 1 is BUILT
	//-----------------------------------------------------------------------
	built stage1
	{
		setstate bridgematerials_stage1 invisible	// Remove stage 1 construction items
		trigger game_manager objective4

		accum 7 abort_if_not_bitset 1	// Tank over bridge?

		// *----------------------------------- vo ------------------------------------------*
		wm_addteamvoiceannounce 0 "fueldump_axis_bridge_destroy"

		wm_addteamvoiceannounce 1 "fueldump_allies_bridge_reinforce"

		wm_teamvoiceannounce 0 "fueldump_axis_bridge_destroy"

		wm_teamvoiceannounce 1 "fueldump_allies_bridge_reinforce"

		wm_removeteamvoiceannounce 0 "fueldump_axis_bridge_stop"

		wm_removeteamvoiceannounce 1 "fueldump_allies_bridge_construct"
		// *---------------------------------------------------------------------------------*
	}

	//-----------------------------------------------------------------------
	// Stage 1 is DESTROYED
	//-----------------------------------------------------------------------
	death
	{
		setstate bridgematerials_stage1 default		// Restore stage 1 construction items
		togglespeaker bridge_expl			// Explosion

		trigger tank clearBridge

		// Some kind of UI pop-up to alert players
		wm_announce	"^2Axis team has destroyed the Bridge!"

		accum 7 abort_if_not_bitset 1	// Tank over bridge?

		// *----------------------------------- vo ------------------------------------------*
		wm_addteamvoiceannounce 0 "fueldump_axis_bridge_stop"

		wm_addteamvoiceannounce 1 "fueldump_allies_bridge_construct"

		wm_teamvoiceannounce 0 "fueldump_axis_bridge_destroyed"

		wm_teamvoiceannounce 1 "fueldump_allies_bridge_construct"

		wm_removeteamvoiceannounce 0 "fueldump_axis_bridge_destroy"

		wm_removeteamvoiceannounce 1 "fueldump_allies_bridge_reinforce"
		// *---------------------------------------------------------------------------------*
	}

	//-----------------------------------------------------------------------
	// Stage 2 is BUILT
	//-----------------------------------------------------------------------
	built final
	{
		setstate bridgematerials_stage2 invisible
		trigger tank setBridge

		// Some kind of UI pop-up to alert players
		wm_announce	"^2Allied team has reinforced the Bridge!"

		accum 7 abort_if_not_bitset 1	// Tank over bridge?

		// *----------------------------------- vo ------------------------------------------*
		wm_addteamvoiceannounce 0 "fueldump_axis_bridge_destroy"

		wm_addteamvoiceannounce 1 "fueldump_allies_tank_bridge"

		wm_teamvoiceannounce 0 "fueldump_axis_bridge_reinforced"

		wm_teamvoiceannounce 1 "fueldump_allies_bridge_reinforced"
		wm_teamvoiceannounce 1 "fueldump_allies_tank_bridge"

		wm_removeteamvoiceannounce 0 "fueldump_axis_bridge_stop"

		wm_removeteamvoiceannounce 1 "fueldump_allies_bridge_reinforce"
		// *---------------------------------------------------------------------------------*
	}

	//-----------------------------------------------------------------------
	// Stage 2 is DESTROYED, go back to stage 1
	//-----------------------------------------------------------------------
	destroyed final
	{
		setstate bridgematerials_stage2 default
		togglespeaker bridge_expl

		trigger tank clearBridge

		// Some kind of UI pop-up to alert players
		wm_announce	"^2Axis team has damaged the Bridge!"

		accum 7 abort_if_not_bitset 1	// Tank over bridge?

		// *----------------------------------- vo ------------------------------------------*
		wm_addteamvoiceannounce 0 "fueldump_axis_bridge_destroy"
		wm_addteamvoiceannounce 1 "fueldump_allies_bridge_reinforce"

		wm_teamvoiceannounce 0 "fueldump_axis_bridge_damaged"

		wm_teamvoiceannounce 1 "fueldump_allies_bridge_damaged"

		wm_removeteamvoiceannounce 1 "fueldump_allies_tank_bridge"
		// *---------------------------------------------------------------------------------*
	}

	//-----------------------------------------------------------------------
	// Tank has made it over the bridge a
	// remove all VO reference to the bridge construct/destruct
	//-----------------------------------------------------------------------
	trigger tank_passed
	{
		accum 7 bitreset 1	// Tank over bridge, no more announcements

		// *----------------------------------- vo ------------------------------------------*
		wm_removeteamvoiceannounce 0 "fueldump_axis_bridge_destroy"
		wm_removeteamvoiceannounce 0 "fueldump_axis_bridge_stop"

		wm_removeteamvoiceannounce 1 "fueldump_allies_bridge_construct"
		wm_removeteamvoiceannounce 1 "fueldump_allies_bridge_reinforce"
		wm_removeteamvoiceannounce 1 "fueldump_allies_tank_bridge"
		// *---------------------------------------------------------------------------------*


		wm_objective_status 4 1 1		//Escort tank over bridge	-Allies -completed
		wm_objective_status 4 0 2		//Escort tank over bridge	-Axis 	-failed
		
	}

}

// ============================================================================
// LMS stuff to remove from obj mode
// ============================================================================
thebridge_lms
{
	spawn
	{
		wait 100
		setstate thebridge_lms invisible			// this is part of the stag1 of the bridge

	//	setstate lms_hacabinet_cm_marker invisible		//when set causes setstate error
	//	setstate lms_hacabinet_toi invisible			//when set causes setstate error

	//	setstate lms_healthcabinet invisible			//when set causes setstate error
	//	setstate lms_ammocabinet invisible			//when set causes setstate error
	//	setstate lms_healthtrigger invisible			//when set causes setstate error
	//	setstate lms_ammotrigger invisible			//when set causes setstate error
	//	setstate lms_healthcabinet_clip invisible		//when set causes setstate error
	//	setstate lms_ammocabinet_clip invisible			//when set causes setstate error

	//	setstate lms_alliedstaircase invisible			//when set causes setstate error
	}
}


// ============================================================================
// Footbridge on Allied side of the map
// ============================================================================
footbridge
{
	spawn
	{
		wait 200
		constructible_class 2
		setstate footbridge invisible
		setstate footbridgematerials default
		setstate lms_footbridge invisible
	}

	buildstart final
	{
		setstate footbridge underconstruction
	}

	built final
	{
		setstate footbridge default
		setstate footbridgematerials invisible

		// Some kind of UI pop-up to alert players
		wm_announce	"^2Allied team has constructed the Foot Bridge!"
	}

	decayed final
	{
		setstate footbridge invisible
		setstate footbridgematerials default
	}

	death
	{
		setstate footbridge invisible
		setstate footbridgematerials default

		// Some kind of UI pop-up to alert players
		wm_announce	"^2Axis team has destroyed the Foot Bridge!"
	}
}

// ============================================================================
// AXIS HQ bits and pieces
// ============================================================================
axis_radio_destroyed
{
	spawn
	{
		wait 200
		setstate axis_radio_destroyed invisible
		setstate axis_radio_destroyed_model invisible
	}
	trigger hide
	{
		setstate axis_radio_destroyed invisible
		setstate axis_radio_destroyed_model invisible
	}
	trigger show
	{
		setstate axis_radio_destroyed default
		setstate axis_radio_destroyed_model default
	//	setstate axishqstuff invisible // Arial tower outside of building
	}
}

axis_radio_closed
{
	spawn
	{
		wait 200
		setstate axis_radio_closed default
		setstate axis_radio_closed_model default
	}
	trigger hide
	{
		setstate axis_radio_closed invisible
		setstate axis_radio_closed_model invisible
	}
	trigger show
	{
		setstate axis_radio_closed default
		setstate axis_radio_closed_model default
	}
}

axis_radio_built
{
	spawn
	{
		wait 400

		constructible_class 2

		trigger self setup
	//	setstate axishqstuff invisible

	}

	trigger setup
	{
		setchargetimefactor 0 soldier 0.75
		setchargetimefactor 0 lieutenant 0.75
		setchargetimefactor 0 medic 0.75
		setchargetimefactor 0 engineer 0.75
		setchargetimefactor 0 covertops 0.75
		sethqstatus 0 1
	}

	buildstart final
	{
		trigger axis_radio_built_model trans
		trigger axis_radio_destroyed hide
		trigger axis_radio_closed hide
	//	setstate axishqstuff underconstruction
	}

	decayed final
	{
		trigger axis_radio_built_model hide
		trigger axis_radio_closed show
	//	setstate axishqstuff invisible
	}

	built final
	{
		trigger axis_radio_built_model show
		trigger axis_radio_closed hide
		trigger axis_radio_destroyed hide

		trigger axis_radio_built_model enable_axis_features
	//	enablespeaker axishq_sound
		
	//	setstate axishqstuff default
	}

	death
	{
		trigger axis_radio_built_model hide
		trigger axis_radio_destroyed show

		trigger axis_radio_built_model disable_axis_features
	//	disablespeaker axishq_sound
	}
}

axis_radio_built_model
{
	spawn
	{
		wait 400
		setstate axis_radio_built_model invisible

		accum 0 bitreset 0	// set if radio is built
		accum 0 bitreset 1	// set if goal should be ignored
	}

	trigger show
	{
		setstate axis_radio_built_model default
	}

	trigger hide
	{
		setstate axis_radio_built_model invisible
	}

	trigger trans
	{
		setstate axis_radio_built_model underconstruction
	}

	trigger enable_axis_features
	{
		//-----------------------------------------------------------------------
		// Increase Allies charge times
		//-----------------------------------------------------------------------
		setchargetimefactor 0 soldier 0.75
		setchargetimefactor 0 lieutenant 0.75
		setchargetimefactor 0 medic 0.75
		setchargetimefactor 0 engineer 0.75
		setchargetimefactor 0 covertops 0.75
		sethqstatus 0 1

		// *----------------------------------- vo ------------------------------------------*
		wm_teamvoiceannounce 0 "axis_hq_compost_constructed"

		wm_teamvoiceannounce 1 "allies_hq_compost_constructed_axis"

		wm_removeteamvoiceannounce 0 "axis_hq_compost_construct"
		// *---------------------------------------------------------------------------------*

		wm_objective_status 6 0 1	//Allied CP - Axis - completed
		wm_objective_status 6 1 2	//Allied CP - Allies - failed
		wm_announce	"^2Axis Command Post constructed. Charge speed increased!"

		accum 0 bitset 0
	}

	trigger disable_axis_features
	{
		//-----------------------------------------------------------------------
		// Decrease Axis charge times
		//-----------------------------------------------------------------------
		setchargetimefactor 0 soldier 1
		setchargetimefactor 0 lieutenant 1
		setchargetimefactor 0 medic 1
		setchargetimefactor 0 engineer 1
		setchargetimefactor 0 covertops 1
		sethqstatus 0 0

		// *----------------------------------- vo ------------------------------------------*
		wm_addteamvoiceannounce 0 "axis_hq_compost_construct"

		wm_teamvoiceannounce 0 "axis_hq_compost_damaged"
		// *---------------------------------------------------------------------------------*

		wm_announce	"^2Allied team has destroyed the Axis Command Post!"

		wm_objective_status 6 0 0	//Allied CP - Allies - default
		wm_objective_status 6 1 0	//Allied CP - Allies - default

		accum 0 bitreset 0
	}
}

// ============================================================================
// Tank stuff starts here 
//New Teuthis: tank stops at spln 1 at reardump gate
//New Teuthis: tank stops at spln 33 at depotgate
//New Teuthis: tank stops at spln 78 at Cave front door
//New Teuthis: tank stops at spln 103 at bridge
// ============================================================================
tank_sound
{
	trigger start
	{
		trigger tank sound_start
		wait 3400
		trigger tank sound_move
	}

	trigger stop
	{
		trigger tank sound_stop
		wait 1400
		trigger tank sound_idle
	}

	trigger rebirth
	{
		trigger tank sound_rebirth
		wait 1400
		trigger tank sound_idle
	}
}

//********************************************************************************************
//***************tank stuff, including a real dynamite count by Teuthis***********************
//********************************************************************************************
// accum 0, blank		
// accum 1
//  - bit 0: bridge state		( 0 = not built,	1 = built		)
//  - bit 1: depotgate 			( 0 = not built,	1 = built		) 	//blocks tank to pass depotgate	
//  - bit 2: spline status 		( 0 = not moving, 	1 = moving 		)
//  - bit 3: stuck check flag 		( 0 = not stuck, 	1 = stuck 		)
//  - bit 4: reardump gate 		( 0 = not stuck, 	1 = stuck 		)	//blocks tank to leave fueldump area
//  - bit 5: track state		( 0 = stopped,		1 = forward		)
//  - bit 6: temp register 		(XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX		)
//  - bit 7: death status 		( 0 = alive, 		1 = dead		)
//  - bit 8: player check 		( 0 = players, 		1 = no players		)
//  - bit 9: visible state		( 0 = alive, 		1 = dead		)
// accum 2, blank
// accum 3, current movement loop position
// accum 4, stop counter
// accum 5, lockout ref counter
// accum 6, blank			
// accum 7, blank
// accum 8, dynamite check vo, only announce if we are stuck and a dynamite is planted. Announce only once	//Tank related
// accum 9, dynamite check at bridge, set to dynamitecount							//Tank related			
//
// track events:
//  - tracks_forward
//  - tracks_stop
//  - tracks_turningleft
//  - tracks_turningright

tank
{
	spawn
	{
		wait 50
		faceangles 0 180 0 50
		trigger self sound_idle

		accum 1 bitset 5
		trigger self tracks_stop

		// Reset the tank+turret into correct position
		followspline 0 spln0 10000 wait length -64
		followspline 1 spln0 10000 wait length -64

		// Instant test teleporter
		// accum 3 set 90
		
	}

// ===========================================================================================
	trigger startfire
	{
		startanimation 67 8 10 nolerp norandom
	}

	trigger stopfire
	{
		startanimation 0 1 15 nolerp norandom
	}
// ===========================================================================================
	trigger sound_idle
	{
		stopsound
		playsound sound/vehicles/tank/tank_idle.wav looping volume 512
	}

	trigger sound_start
	{
		stopsound
		playsound sound/vehicles/tank/tank_revup.wav volume 196
	}

	trigger sound_move
	{
		stopsound
		playsound sound/vehicles/tank/tank_move.wav looping volume 512
	}

	trigger sound_stop
	{
		stopsound
		playsound sound/vehicles/tank/tank_revdown.wav volume 196
	}

	trigger sound_death
	{
		stopsound
		playsound sound/vehicles/tank/tank_stop.wav volume 256
	}

	trigger sound_rebirth
	{
		stopsound
		playsound sound/vehicles/tank/tank_start.wav volume 196
	}
// ===========================================================================================
	trigger tracks_forward
	{
		accum 1 abort_if_bitset 5
		accum 1 bitset 5

		remapshader models/mapobjects/tanks_sd/bits_r models/mapobjects/tanks_sd/bits_forward
		remapshader models/mapobjects/tanks_sd/wheel_r models/mapobjects/tanks_sd/wheel_forward
		remapshader models/mapobjects/tanks_sd/bits_l models/mapobjects/tanks_sd/bits_forward
		remapshader models/mapobjects/tanks_sd/wheel_l models/mapobjects/tanks_sd/wheel_forward
		remapshaderflush
	}

	trigger tracks_turningleft
	{
		remapshader models/mapobjects/tanks_sd/bits_r models/mapobjects/tanks_sd/bits_forward
		remapshader models/mapobjects/tanks_sd/wheel_r models/mapobjects/tanks_sd/wheel_forward
		remapshader models/mapobjects/tanks_sd/bits_l models/mapobjects/tanks_sd/bits_backward
		remapshader models/mapobjects/tanks_sd/wheel_l models/mapobjects/tanks_sd/wheel_backward
		remapshaderflush
	}

	trigger tracks_turningright
	{
		remapshader models/mapobjects/tanks_sd/bits_r models/mapobjects/tanks_sd/bits_backward
		remapshader models/mapobjects/tanks_sd/wheel_r models/mapobjects/tanks_sd/wheel_backward
		remapshader models/mapobjects/tanks_sd/bits_l models/mapobjects/tanks_sd/bits_forward
		remapshader models/mapobjects/tanks_sd/wheel_l models/mapobjects/tanks_sd/wheel_forward
		remapshaderflush
	}

	trigger tracks_stop
	{
		accum 1 abort_if_not_bitset 5
		accum 1 bitreset 5

		remapshader models/mapobjects/tanks_sd/bits_r models/mapobjects/tanks_sd/bits_r
		remapshader models/mapobjects/tanks_sd/wheel_r models/mapobjects/tanks_sd/wheel_r
		remapshader models/mapobjects/tanks_sd/bits_l models/mapobjects/tanks_sd/bits_l
		remapshader models/mapobjects/tanks_sd/wheel_l models/mapobjects/tanks_sd/wheel_l
		remapshaderflush
	}
// ===========================================================================================
// ===========================================================================================
	trigger run_incpos
	{
		accum 3 inc 1
	}

	trigger run_continue
	{
		trigger self run_incpos
		trigger self deathcheck
		trigger self stopcheck
		trigger self move
	}
// ===========================================================================================
// ===========================================================================================
// movement
	trigger move_check
	{
		trigger self stuck_check
		accum 1 abort_if_bitset 3		

		trigger self dispatch
	}

	trigger move
	{
		trigger self move_check

		wait 500

		trigger self move
	}

	trigger dispatch
	{
		accum 3 trigger_if_equal 0 tank run_0
		accum 3 trigger_if_equal 1 tank run_1
		accum 3 trigger_if_equal 2 tank run_2
		accum 3 trigger_if_equal 3 tank run_3	
		accum 3 trigger_if_equal 4 tank run_4
		accum 3 trigger_if_equal 5 tank run_5
		accum 3 trigger_if_equal 6 tank run_6
		accum 3 trigger_if_equal 7 tank run_7
		accum 3 trigger_if_equal 8 tank run_8
		accum 3 trigger_if_equal 9 tank run_9
		accum 3 trigger_if_equal 10 tank run_10
		accum 3 trigger_if_equal 11 tank run_11
		accum 3 trigger_if_equal 12 tank run_12
		accum 3 trigger_if_equal 13 tank run_13
		accum 3 trigger_if_equal 14 tank run_14
		accum 3 trigger_if_equal 15 tank run_15
		accum 3 trigger_if_equal 16 tank run_16
		accum 3 trigger_if_equal 17 tank run_17
		accum 3 trigger_if_equal 18 tank run_18
		accum 3 trigger_if_equal 19 tank run_19
		accum 3 trigger_if_equal 20 tank run_20
		accum 3 trigger_if_equal 21 tank run_21
		accum 3 trigger_if_equal 22 tank run_22
		accum 3 trigger_if_equal 23 tank run_23
		accum 3 trigger_if_equal 24 tank run_24
		accum 3 trigger_if_equal 25 tank run_25
		accum 3 trigger_if_equal 26 tank run_26
		accum 3 trigger_if_equal 27 tank run_27
		accum 3 trigger_if_equal 28 tank run_28
		accum 3 trigger_if_equal 29 tank run_29
		accum 3 trigger_if_equal 30 tank run_30		
		accum 3 trigger_if_equal 31 tank run_31
		accum 3 trigger_if_equal 32 tank run_32
		accum 3 trigger_if_equal 33 tank run_33
		accum 3 trigger_if_equal 34 tank run_34
		accum 3 trigger_if_equal 35 tank run_35
		accum 3 trigger_if_equal 36 tank run_36
		accum 3 trigger_if_equal 37 tank run_37
		accum 3 trigger_if_equal 38 tank run_38
		accum 3 trigger_if_equal 39 tank run_39
		accum 3 trigger_if_equal 40 tank run_40
		accum 3 trigger_if_equal 41 tank run_41
		accum 3 trigger_if_equal 42 tank run_42
		accum 3 trigger_if_equal 43 tank run_43
		accum 3 trigger_if_equal 44 tank run_44
		accum 3 trigger_if_equal 45 tank run_45
		accum 3 trigger_if_equal 46 tank run_46
		accum 3 trigger_if_equal 47 tank run_47
		accum 3 trigger_if_equal 48 tank run_48
		accum 3 trigger_if_equal 49 tank run_49
		accum 3 trigger_if_equal 50 tank run_50
		accum 3 trigger_if_equal 51 tank run_51
		accum 3 trigger_if_equal 52 tank run_52
		accum 3 trigger_if_equal 53 tank run_53
		accum 3 trigger_if_equal 54 tank run_54
		accum 3 trigger_if_equal 55 tank run_55
		accum 3 trigger_if_equal 56 tank run_56
		accum 3 trigger_if_equal 57 tank run_57
		accum 3 trigger_if_equal 58 tank run_58
		accum 3 trigger_if_equal 59 tank run_59
		accum 3 trigger_if_equal 60 tank run_60
		accum 3 trigger_if_equal 61 tank run_61
		accum 3 trigger_if_equal 62 tank run_62
		accum 3 trigger_if_equal 63 tank run_63
		accum 3 trigger_if_equal 64 tank run_64
		accum 3 trigger_if_equal 65 tank run_65
		accum 3 trigger_if_equal 66 tank run_66
		accum 3 trigger_if_equal 67 tank run_67
		accum 3 trigger_if_equal 68 tank run_68
		accum 3 trigger_if_equal 69 tank run_69
		accum 3 trigger_if_equal 70 tank run_70
		accum 3 trigger_if_equal 71 tank run_71
		accum 3 trigger_if_equal 72 tank run_72
		accum 3 trigger_if_equal 73 tank run_73
		accum 3 trigger_if_equal 74 tank run_74
		accum 3 trigger_if_equal 75 tank run_75
		accum 3 trigger_if_equal 76 tank run_76
		accum 3 trigger_if_equal 77 tank run_77
		accum 3 trigger_if_equal 78 tank run_78
		accum 3 trigger_if_equal 79 tank run_79
		accum 3 trigger_if_equal 80 tank run_80
		accum 3 trigger_if_equal 81 tank run_81
		accum 3 trigger_if_equal 82 tank run_82
		accum 3 trigger_if_equal 83 tank run_83
		accum 3 trigger_if_equal 84 tank run_84
		accum 3 trigger_if_equal 85 tank run_85
		accum 3 trigger_if_equal 86 tank run_86
		accum 3 trigger_if_equal 87 tank run_87
		accum 3 trigger_if_equal 88 tank run_88
		accum 3 trigger_if_equal 89 tank run_89
		accum 3 trigger_if_equal 90 tank run_90
		accum 3 trigger_if_equal 91 tank run_91
		accum 3 trigger_if_equal 92 tank run_92
		accum 3 trigger_if_equal 93 tank run_93
		accum 3 trigger_if_equal 94 tank run_94
		accum 3 trigger_if_equal 95 tank run_95
		accum 3 trigger_if_equal 96 tank run_96
		accum 3 trigger_if_equal 97 tank run_97
		accum 3 trigger_if_equal 98 tank run_98
		accum 3 trigger_if_equal 99 tank run_99
		accum 3 trigger_if_equal 100 tank run_100
		accum 3 trigger_if_equal 101 tank run_101
		accum 3 trigger_if_equal 102 tank run_102
		accum 3 trigger_if_equal 103 tank run_103
		accum 3 trigger_if_equal 104 tank run_104
		accum 3 trigger_if_equal 105 tank run_105
		accum 3 trigger_if_equal 106 tank run_106
		accum 3 trigger_if_equal 107 tank run_107
		accum 3 trigger_if_equal 108 tank run_108
		accum 3 trigger_if_equal 109 tank run_109
		accum 3 trigger_if_equal 110 tank run_110
		accum 3 trigger_if_equal 111 tank run_111
		accum 3 trigger_if_equal 112 tank run_112
		accum 3 trigger_if_equal 113 tank run_113
		accum 3 trigger_if_equal 114 tank run_114
		accum 3 trigger_if_equal 115 tank run_115
		accum 3 trigger_if_equal 116 tank run_116
		accum 3 trigger_if_equal 117 tank run_117
		accum 3 trigger_if_equal 118 tank run_118
		accum 3 trigger_if_equal 119 tank run_119
		accum 3 trigger_if_equal 120 tank run_120
		accum 3 trigger_if_equal 121 tank run_121
		accum 3 trigger_if_equal 122 tank run_122
		accum 3 trigger_if_equal 123 tank run_123
		accum 3 trigger_if_equal 124 tank run_124
		accum 3 trigger_if_equal 125 tank run_125
		accum 3 trigger_if_equal 126 tank run_126
		accum 3 trigger_if_equal 127 tank run_127
		accum 3 trigger_if_equal 128 tank run_128
		accum 3 trigger_if_equal 129 tank run_129
		accum 3 trigger_if_equal 130 tank run_130
		accum 3 trigger_if_equal 131 tank run_131
		accum 3 trigger_if_equal 132 tank run_132
		accum 3 trigger_if_equal 133 tank run_133
		accum 3 trigger_if_equal 134 tank run_134
		accum 3 trigger_if_equal 135 tank run_135
		accum 3 trigger_if_equal 136 tank run_136
		accum 3 trigger_if_equal 137 tank run_137
	//	accum 3 trigger_if_equal 138 tank run_138
	//	accum 3 trigger_if_equal 139 tank run_139
	}

// ===========================================================================================
// ===========================================================================================
	trigger run_0
	{
		accum 1 bitset 2
		trigger tank_turret2 run_0
		followspline 0 spln0 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_1
	{
		trigger reardump remove			//reardump gate construction crates no longer needed
		accum 1 bitset 2
		trigger tank_turret2 run_1
		followspline 0 spln1 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_2					
	{
		trigger game_manager objective2		//need to call a few vo here
		accum 1 bitset 2
		trigger tank_turret2 run_2
		followspline 0 spln2 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_3
	{
		accum 1 bitset 2
		trigger tank_turret2 run_3
		followspline 0 spln3 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}
	
	trigger run_4
	{
		accum 1 bitset 2
		trigger tank_turret2 run_4
		followspline 0 spln4 60 wait length -64		
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_5
	{
		accum 1 bitset 2
		trigger tank_turret2 run_5
		followspline 0 spln5 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_6
	{
		accum 1 bitset 2
		trigger tank_turret2 run_6
		followspline 0 spln6 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_7
	{
		accum 1 bitset 2
		trigger tank_turret2 run_7
		followspline 0 spln7 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_8
	{
		accum 1 bitset 2
		trigger tank_turret2 run_8
		followspline 0 spln8 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_9
	{
		accum 1 bitset 2
		trigger tank_turret2 run_9
		followspline 0 spln9 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}
	
	trigger run_10
	{
		accum 1 bitset 2
		trigger tank_turret2 run_10
		followspline 0 spln10 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_11
	{
		accum 1 bitset 2
		trigger tank_turret2 run_11
		followspline 0 spln11 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_12
	{
		accum 1 bitset 2
		trigger tank_turret2 run_12
		followspline 0 spln12 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_13
	{
		accum 1 bitset 2
		trigger tank_turret2 run_13
		followspline 0 spln13 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_14
	{
		accum 1 bitset 2
		trigger tank_turret2 run_14
		followspline 0 spln14 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_15
	{
		accum 1 bitset 2
		trigger tank_turret2 run_15
		followspline 0 spln15 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_16
	{
		accum 1 bitset 2
		trigger tank_turret2 run_16
		followspline 0 spln16 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_17
	{
		accum 1 bitset 2
		trigger tank_turret2 run_17
		followspline 0 spln17 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_18
	{
		accum 1 bitset 2
		trigger tank_turret2 run_18
		followspline 0 spln18 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_19
	{
		accum 1 bitset 2
		trigger tank_turret2 run_19
		followspline 0 spln19 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_20
	{
		accum 1 bitset 2
		trigger tank_turret2 run_20
		followspline 0 spln20 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_21
	{
		accum 1 bitset 2
		trigger tank_turret2 run_21
		followspline 0 spln21 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_22
	{
		accum 1 bitset 2
		trigger tank_turret2 run_22
		followspline 0 spln22 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_23
	{
		accum 1 bitset 2
		trigger tank_turret2 run_23
		followspline 0 spln23 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_24
	{
		accum 1 bitset 2
		trigger tank_turret2 run_24
		followspline 0 spln24 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_25
	{
		accum 1 bitset 2
		trigger tank_turret2 run_25
		followspline 0 spln25 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_26
	{
		accum 1 bitset 2
		trigger tank_turret2 run_26
		followspline 0 spln26 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_27
	{
		accum 1 bitset 2
		trigger tank_turret2 run_27
		followspline 0 spln27 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_28
	{
		accum 1 bitset 2
		trigger tank_turret2 run_28
		followspline 0 spln28 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_29
	{
		accum 1 bitset 2
		trigger tank_turret2 run_29
		followspline 0 spln29 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_30
	{
		accum 1 bitset 2
		trigger tank_turret2 run_30
		followspline 0 spln30 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}


	trigger run_31
	{
		accum 1 bitset 2
		trigger tank_turret2 run_31
		followspline 0 spln31 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}


	trigger run_32
	{
		accum 1 bitset 2
		trigger tank_turret2 run_32
		followspline 0 spln32 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

//*****************************************************************************
//*******tank stops in front of depotgate at spln33****************************
//*****************************************************************************

	trigger run_33		//note that here we don't tell the tank to stop. This comes in the stuck_check
	{
		accum 1 bitset 2
		trigger tank_turret2 run_33
		followspline 0 spln33 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_34
	{
		accum 1 bitset 2
		trigger game_manager gate_passed	//need to call a few vo here
		trigger tank_turret2 run_34
		followspline 0 spln34 60 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_35
	{
		accum 1 bitset 2
		trigger tank_turret2 run_35
		followspline 0 spln35 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_36
	{
		accum 1 bitset 2
		trigger tank_turret2 run_36
		followspline 0 spln36 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_37
	{
		accum 1 bitset 2
		trigger tank_turret2 run_37
		followspline 0 spln37 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_38
	{
		accum 1 bitset 2
		trigger tank_turret2 run_38
		followspline 0 spln38 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_39
	{
		accum 1 bitset 2
		trigger tank_turret2 run_39
		followspline 0 spln39 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_40
	{
		accum 1 bitset 2
		trigger tank_turret2 run_40
		followspline 0 spln40 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_41
	{
		accum 1 bitset 2
		trigger tank_turret2 run_41
		followspline 0 spln41 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_42
	{
		accum 1 bitset 2
		trigger tank_turret2 run_42
		followspline 0 spln42 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_43
	{
		accum 1 bitset 2
		trigger tank_turret2 run_43
		followspline 0 spln43 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_44
	{
		accum 1 bitset 2
		trigger tank_turret2 run_44
		followspline 0 spln44 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_45
	{
		accum 1 bitset 2
		trigger tank_turret2 run_45
		followspline 0 spln45 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_46
	{
		accum 1 bitset 2
		trigger tank_turret2 run_46
		followspline 0 spln46 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_47
	{
		accum 1 bitset 2
		trigger tank_turret2 run_47
		followspline 0 spln47 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_48
	{
		accum 1 bitset 2
		trigger tank_turret2 run_48
		followspline 0 spln48 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_49
	{
		accum 1 bitset 2
		trigger tank_turret2 run_49
		followspline 0 spln49 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_50
	{
		accum 1 bitset 2
		trigger tank_turret2 run_50
		followspline 0 spln50 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_51
	{
		accum 1 bitset 2
		trigger tank_turret2 run_51
		followspline 0 spln51 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_52
	{
		accum 1 bitset 2
		trigger tank_turret2 run_52
		followspline 0 spln52 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_53
	{
		accum 1 bitset 2
		trigger tank_turret2 run_53
		followspline 0 spln53 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_54
	{
		accum 1 bitset 2
		trigger tank_turret2 run_54
		followspline 0 spln54 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_55
	{
		accum 1 bitset 2
		trigger tank_turret2 run_55
		followspline 0 spln55 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_56
	{
		accum 1 bitset 2
		trigger tank_turret2 run_56
		followspline 0 spln56 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_57
	{
		accum 1 bitset 2
		trigger tank_turret2 run_57
		followspline 0 spln57 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_58
	{
		accum 1 bitset 2
		trigger tank_turret2 run_8
		followspline 0 spln58 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_59
	{
		accum 1 bitset 2
		trigger tank_turret2 run_59
		followspline 0 spln59 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_60
	{
		accum 1 bitset 2
		trigger tank_turret2 run_60
		followspline 0 spln60 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_61
	{
		accum 1 bitset 2
		trigger tank_turret2 run_61
		followspline 0 spln61 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_62
	{
		accum 1 bitset 2
		trigger tank_turret2 run_62
		followspline 0 spln62 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_63
	{
		accum 1 bitset 2
		trigger tank_turret2 run_63
		followspline 0 spln63 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_64		//tank is in the tunnel
	{
		accum 1 bitset 2
		trigger game_manager tank_tunnel
		trigger tank_turret2 run_64
		followspline 0 spln64 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_65
	{
		accum 1 bitset 2
		trigger tank_turret2 run_65
		followspline 0 spln65 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_66
	{
		accum 1 bitset 2
		trigger tank_turret2 run_66
		followspline 0 spln66 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_67
	{
		accum 1 bitset 2
		trigger tank_turret2 run_67
		followspline 0 spln67 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_68
	{
		accum 1 bitset 2
		trigger tank_turret2 run_68
		followspline 0 spln68 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_69
	{
		accum 1 bitset 2
		trigger tank_turret2 run_69
		followspline 0 spln69 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}
	
	trigger run_70
	{
		accum 1 bitset 2
		trigger tank_turret2 run_70
		followspline 0 spln70 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_71
	{
		accum 1 bitset 2
		trigger tank_turret2 run_71
		followspline 0 spln71 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_72
	{
		accum 1 bitset 2
		trigger tank_turret2 run_72
		followspline 0 spln72 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_73
	{
		accum 1 bitset 2
		trigger tank_turret2 run_73
		followspline 0 spln73 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_74
	{
		accum 1 bitset 2
		trigger tank_turret2 run_74
		followspline 0 spln74 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_75
	{
		accum 1 bitset 2
		trigger tank_turret2 run_75
		followspline 0 spln75 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_76
	{
		accum 1 bitset 2
		trigger tank_turret2 run_76
		followspline 0 spln76 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_77
	{
		accum 1 bitset 2
		trigger tank_turret2 run_77
		followspline 0 spln77 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_78
	{
		accum 1 bitset 2
		trigger tank_turret2 run_78
		followspline 0 spln78 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	//-----------------------------------------------------------------------
	// Destroy cave front door, tank stops at spln 79 
	//-----------------------------------------------------------------------
	trigger run_79
	{
		accum 1 bitset 2
		trigger tank_turret2 run_79
		followspline 0 spln79 80 wait length -64
		accum 1 bitreset 2

		trigger self		script_lockout

		trigger self 		tracks_stop
		trigger tank_sound 	stop

		startanimation 45 	10 	15 nolerp norandom
		wait 666
		startanimation 0 	1 	15 nolerp norandom
		wait 900

		trigger self run_incpos
		trigger tank_turret turn	//needed to execute to blow up the door
	}

	trigger run_80
	{
		accum 1 bitset 2
		trigger tank_turret2 run_80
		followspline 0 spln80 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_81
	{
		accum 1 bitset 2
		trigger tank_turret2 run_81
		followspline 0 spln81 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_82
	{
		accum 1 bitset 2
		trigger tank_turret2 run_82
		followspline 0 spln82 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_83
	{
		accum 1 bitset 2
		trigger tank_turret2 run_83
		followspline 0 spln83 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_84
	{
		accum 1 bitset 2
		trigger tank_turret2 run_84
		followspline 0 spln84 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}
	
	trigger run_85
	{
		accum 1 bitset 2
		trigger tank_turret2 run_85
		followspline 0 spln85 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_86
	{
		accum 1 bitset 2
		trigger tank_turret2 run_86
		followspline 0 spln86 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_87
	{
		accum 1 bitset 2
		trigger tank_turret2 run_87
		followspline 0 spln87 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_88
	{
		accum 1 bitset 2
		trigger tank_turret2 run_88
		followspline 0 spln88 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_89
	{
		accum 1 bitset 2
		trigger tank_turret2 run_89
		followspline 0 spln89 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_90
	{
		accum 1 bitset 2
		trigger tank_turret2 run_90
		followspline 0 spln90 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_91
	{
		accum 1 bitset 2
		trigger tank_turret2 run_91
		followspline 0 spln91 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_92
	{
		accum 1 bitset 2
		trigger tank_turret2 run_92
		followspline 0 spln92 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_93
	{
		accum 1 bitset 2
		trigger tank_turret2 run_93
		followspline 0 spln93 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}


	trigger run_94
	{
		accum 1 bitset 2
		trigger tank_turret2 run_94
		followspline 0 spln94 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_95
	{
		accum 1 bitset 2
		trigger tank_turret2 run_95
		followspline 0 spln95 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_96
	{
		accum 1 bitset 2
		trigger tank_turret2 run_96
		followspline 0 spln96 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_97
	{
		accum 1 bitset 2
		trigger tank_turret2 run_97
		followspline 0 spln97 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_98
	{
		accum 1 bitset 2
		trigger tank_turret2 run_98
		followspline 0 spln98 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}


	trigger run_99
	{
		accum 1 bitset 2
		trigger tank_turret2 run_99
		followspline 0 spln99 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}


	trigger run_100
	{
		accum 1 bitset 2
		trigger tank_turret2 run_100
		followspline 0 spln100 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_101
	{
		accum 1 bitset 2
		trigger tank_turret2 run_101
		followspline 0 spln101 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_102
	{
		accum 1 bitset 2
		trigger tank_turret2 run_102
		followspline 0 spln102 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	//-----------------------------------------------------------------------
	// River bridge, tank stops at spln103. Note we don't tell the tank here to stop. this is done at the stuck_check
	//-----------------------------------------------------------------------
	trigger run_103		//here we tell the tank to move over multiple splns to not stop at the bridge. 			
	{
		accum 1 bitset 2
		trigger tank_turret2 run_103
		followspline 0 spln103 80 wait length -64
		followspline 0 spln104 80 wait length -64
		followspline 0 spln105 80 wait length -64
		followspline 0 spln106 80 wait length -64
		followspline 0 spln107 80 wait length -64
		followspline 0 spln108 80 wait length -64
		accum 1 bitreset 2

		// setup sounds
		trigger thebridge tank_passed	// Remove all bridge ref VO

		trigger self run_continue
	}

	trigger run_104
	{
		accum 1 bitset 2
		trigger tank_turret2 run_104
		followspline 0 spln109 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_105
	{
		accum 1 bitset 2
		trigger tank_turret2 run_105
		followspline 0 spln110 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_106
	{
		accum 1 bitset 2
		trigger tank_turret2 run_106
		followspline 0 spln111 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_107
	{
		accum 1 bitset 2
		trigger tank_turret2 run_107
		followspline 0 spln112 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_108
	{
		accum 1 bitset 2
		trigger tank_turret2 run_108
		followspline 0 spln113 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}
	trigger run_109
	{
		accum 1 bitset 2
		trigger tank_turret2 run_109
		followspline 0 spln114 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_110
	{
		accum 1 bitset 2
		trigger tank_turret2 run_110
		followspline 0 spln115 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_111
	{
		accum 1 bitset 2
		trigger tank_turret2 run_111
		followspline 0 spln116 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_112			
	{
		accum 1 bitset 2
		trigger tank_turret2 run_112
		followspline 0 spln117 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_113
	{
		accum 1 bitset 2
		trigger tank_turret2 run_113
		followspline 0 spln118 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_114
	{
		accum 1 bitset 2
		trigger tank_turret2 run_114
		followspline 0 spln119 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_115
	{
		accum 1 bitset 2
		trigger tank_turret2 run_115
		followspline 0 spln120 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_116
	{
		accum 1 bitset 2
		trigger tank_turret2 run_116
		followspline 0 spln121 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_117			
	{
		accum 1 bitset 2
		trigger tank_turret2 run_117
		followspline 0 spln122 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_118
	{
		accum 1 bitset 2
		trigger tank_turret2 run_118
		followspline 0 spln123 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_119
	{
		accum 1 bitset 2
		trigger tank_turret2 run_119
		followspline 0 spln124 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_120
	{
		accum 1 bitset 2
		trigger tank_turret2 run_120
		followspline 0 spln125 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_121
	{
		accum 1 bitset 2
		trigger tank_turret2 run_121
		followspline 0 spln126 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_122
	{
		accum 1 bitset 2
		trigger tank_turret2 run_122
		followspline 0 spln127 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_123
	{
		accum 1 bitset 2
		trigger tank_turret2 run_123
		followspline 0 spln128 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_124
	{
		accum 1 bitset 2
		trigger tank_turret2 run_124
		followspline 0 spln129 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_125
	{
		accum 1 bitset 2
		trigger tank_turret2 run_125
		followspline 0 spln130 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_126
	{
		accum 1 bitset 2
		trigger tank_turret2 run_126
		followspline 0 spln131 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_127
	{
		accum 1 bitset 2
		trigger tank_turret2 run_127
		followspline 0 spln132 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_128
	{
		accum 1 bitset 2
		trigger tank_turret2 run_128
		followspline 0 spln133 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_129
	{
		accum 1 bitset 2
		trigger tank_turret2 run_129
		followspline 0 spln134 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_130
	{
		accum 1 bitset 2
		trigger tank_turret2 run_130
		followspline 0 spln135 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_131
	{
		accum 1 bitset 2
		trigger tank_turret2 run_131
		followspline 0 spln136 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_132
	{
		accum 1 bitset 2
		trigger tank_turret2 run_132
		followspline 0 spln137 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_133
	{
		accum 1 bitset 2
		trigger tank_turret2 run_133
		followspline 0 spln138 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_134
	{
		accum 1 bitset 2
		trigger tank_turret2 run_134
		followspline 0 spln139 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_135
	{
		accum 1 bitset 2
		trigger tank_turret2 run_135
		followspline 0 spln140 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_136
	{
		accum 1 bitset 2
		trigger tank_turret2 run_136
		followspline 0 spln141 80 wait length -64
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_137		//here we stop the tank
	{
		accum 1 bitset 2
		trigger tank_turret2 run_137
		followspline 0 spln142 80 wait length -64
		accum 1 bitreset 2

		trigger self script_lockout

		trigger self 		tracks_stop
		trigger tank_sound 	stop

		wm_objective_status 5 0 2
		wm_objective_status 5 1 1

		startanimation 45 10 15 nolerp norandom
		wait 666
		startanimation 0 1 15 nolerp norandom

		wait 900

		trigger tank_turret turn2	//blow up escape door
		accum 3 inc 1
	}

// ===========================================================================================
// ===========================================================================================
// stuck checking
// digibob: since we cant return variables, just use bit 3 of accum 1 as a register... mmmm assembly...
	trigger stuck_check						//Teuthis. here we need to add the dynamite count for the bridge
	{
		accum 1 bitreset 3

		trigger self stuck_check_barrier1_built			//check if reardump gate still intact
		trigger self stuck_check_barrier2_built			//check if depotgate still intact
		trigger self stuck_check_bridge_built			//check if bridge is built
		trigger self stuck_check_scriptlockout
		trigger self stuck_check_finished			//check if we are done already
		trigger self stuck_check_dyna				//check if dynamite is planted at bridge
	}

	trigger stuck_check_finished			//we need to define here what happens after we reached the last spln
	{
		accum 3 abort_if_less_than 138		//Abort if we are still on track.

		accum 1 bitset 3			// we are stuck
	}

	trigger stuck_check_scriptlockout
	{
		accum 5 abort_if_equal 0		//stop if we didn't start yet, tank still at spln 0

		accum 1 bitset 3			// we are stuck
	}

	trigger stuck_check_bridge_built
	{
		accum 3 abort_if_not_equal 103		//stop at spln 103 here, which is at tank trigger run_103

		accum 1 abort_if_bitset 0

		accum 1 bitset 3			// we are stuck
	}

	trigger stuck_check_barrier1_built		//check if reardump gate is still intact
	{
		accum 3 abort_if_not_equal 1		//tank stops at spln0 if reardumpgate is alive, which is at tank trigger run_1

		accum 1 abort_if_not_bitset 4		//abort if reardump gate is blown already

		accum 1 bitset 3			// we are stuck
	}

	trigger stuck_check_barrier2_built		//check if depotgate is still intact
	{
		accum 3 abort_if_not_equal 33		//tank stops at spln33 if depotgate is alive, which is at tank trigger run_33

		accum 1 abort_if_not_bitset 1		//abort if depotgate is blown already

		accum 1 bitset 3			// we are stuck
	}

	
	trigger stuck_check_dyna				//trigger this if a dynamite is planted on the bridge
	{
		accum 3 abort_if_not_equal 103			//abort if we are not at the bridge at spln 103
		accum 9 set_to_dynamitecount bridgetarget	//bridgetarget is the targetname of the bridge func_constructable of the bridge
		accum 9 abort_if_equal 0			//abort if no dynamite is planted
		accum 1 bitset 3				//we are stuck

		trigger self bridge_announce			//tell us that we are stuck because of a dynamite
	}

	trigger bridge_announce					//tell us that tank is stuck at the bride because of a dynamite
	{
		wait 50

		accum 9 abort_if_equal 0			//abort if no dynamite is planted
		accum 1 abort_if_not_bitset 3			//abort if we are not stuck
		accum 8 abort_if_bitset 1			//abort if we announced already

		wm_announce "^2 The Truck is stuck because there is a dynamite planted on the bridge"

		accum 8 bitset 1				//announced done 	
	}
// ===========================================================================================
// ===========================================================================================
// stop check

	trigger stopcheck_setup
	{
		accum 1 bitset 6			// stop if we're stuck/no-one's pushing :)

		accum 1 abort_if_bitset 8		// no one in the trigger, abort

		trigger self stuck_check		// call the stop check function
		accum 1 abort_if_bitset 3		// we're stuck so break out

		accum 1 bitreset 6			// we're free to move
	}

	trigger stopcheck
	{
		trigger self stopcheck_setup
		accum 1 abort_if_not_bitset 6

		trigger self script_lockout

		// Any just stopped moving stuff goes here
		trigger tank_sound 	stop
		trigger self 		tracks_stop
		startanimation 45 	10 	15 nolerp norandom
		wait 666
		startanimation 0 	1 	15 nolerp norandom
		wait 900

		trigger self script_lockout_stop
		resetscript
	}

// ===========================================================================================
// ===========================================================================================
// script lockouts

	trigger script_lockout
	{
		accum 5 inc 1
	}

	trigger script_lockout_stop
	{
		accum 5 inc -1
	}

// ===========================================================================================
// ===========================================================================================
// enable/disable

	trigger tank_enable
	{
		trigger self stuck_check
		accum 1 abort_if_bitset 3 		// stuck check

		accum 4 set 0				// reset stop counter
		accum 1 bitreset 8			// reset stop check

		accum 1 abort_if_bitset 2 	// already following spline
		accum 5 abort_if_not_equal 0	// are we not in a script lockout?

		accum 1 abort_if_bitset 7 	// death check

		// Any just started moving stuff goes here

		trigger self script_lockout

		trigger tank_sound start

		startanimation 55 10 15 nolerp norandom
		wait 666
		startanimation 5 40 15 nolerp norandom
		wait 500
		trigger self tracks_forward

		trigger self script_lockout_stop

		trigger self move
	}

	trigger tank_disable
	{
		accum 4 inc 1				// up the stop counter
		accum 4 abort_if_less_than 4

		accum 1 bitset 8			// set stop check

		trigger self deathcheck
	}

// ===========================================================================================
// ===========================================================================================
// death / rebirth

	rebirth
	{
		accum 1 bitreset 9 // we're visibly alive
		accum 1 bitreset 7 // we're alive again

		trigger self script_lockout

		// *----------------------------------- vo ------------------------------------------*
		wm_teamvoiceannounce 0 "axis_hq_tank_repaired_allies"

		wm_teamvoiceannounce 1 "allies_hq_tank_repaired"
		// *---------------------------------------------------------------------------------*
		wm_announce "^2The Tank has been repaired"

		changemodel models/mapobjects/tanks_sd/churchhill.md3

		setstate tank_smoke invisible

		trigger tank_sound rebirth
		wait 500

		trigger self script_lockout_stop
	}

	death
	{
		accum 1 bitset 7
	}

	trigger deathcheck
	{
		accum 1 abort_if_not_bitset 7		// are we dead?
		accum 1 abort_if_bitset 9		// are we not already visibly dead?
		accum 1 abort_if_bitset 2		// are we not following a spline?
		accum 5 abort_if_not_equal 0		// are we not in a script lockout?

		accum 1 bitset 9				// we're now visibly dead

		// *----------------------------------- vo ------------------------------------------*
		wm_teamvoiceannounce 0 "axis_hq_tank_damaged"

		wm_teamvoiceannounce 1 "allies_hq_tank_damaged_axis"
		// *---------------------------------------------------------------------------------*

		wm_announce "^2The Tank has been damaged"

		changemodel models/mapobjects/tanks_sd/churchhill_broken.md3

		setstate tank_smoke default

		kill tank_construct

		trigger self sound_death
		trigger self tracks_stop

		trigger self script_lockout

		trigger self tracks_stop
		startanimation 45 10 15 nolerp norandom
		wait 666
		startanimation 0 1 15 nolerp norandom

		trigger self script_lockout_stop

		resetscript
	}

	trigger setBridge
	{
		accum 1 bitset 0
	}

	trigger clearBridge
	{
		accum 1 bitreset 0
	}

	trigger enable_stage4		//depotgate blown up, do no longer block tank
	{
		accum 1 bitreset 1
	}

	trigger disable_stage4		//depotgate intact at map start, block tank at spln33
	{
		accum 1 bitset 1
	}

	trigger enable_stage1		//reardump gate blown up, do no longer block tank
	{
		accum 1 bitreset 4
	}

	trigger disable_stage1		//reardump gate intact at map start, block tank at spln0
	{
		accum 1 bitset 4
	}
}

tank_disabler
{
	trigger run
	{
		trigger tank tank_disable
	}
}

tank_enabler
{
	trigger run
	{
		trigger tank tank_enable
	}
}

tank_trigger
{
     spawn
     {
          wait 100

          attachtotag tank tag_turret
     }
}

tank_build
{
     spawn
     {
          wait 100

          attachtotag tank tag_turret
     }
}

tank_construct
{
	spawn
	{
		wait 400

		constructible_class 2
		constructible_health 1200
	}

	built final
	{
		alertentity tank
	}

	trigger final_pos
	{
		constructible_constructxpbonus 3
		constructible_destructxpbonus 3
	}
}

//================================================================================
// Physical tank turret MODEL
//================================================================================
tank_turret
{
	spawn
	{
		wait 500
		attachtotag tank tag_turret
	}

	//-----------------------------------------------------------------------
	// CAVE FRONT DOOR
	//-----------------------------------------------------------------------
	trigger turn		//Teuthis: removed the turn, we just need to fire		
	{
		trigger tank startfire
		trigger tank_turret2 avre_fire
		trigger tank_flash run
	}

	trigger blow_door				//triggers explosion of tunnelgate
	{
		setstate tank_flash invisible
		wait 200
		trigger tank stopfire
		trigger cavedoor_solid switch
		trigger game_manager objective3

		setautospawn "Axis Entrance Spawn" 0
	
		wm_objective_status 3 1 1	//tunneldoor - Allies - completed
		wm_objective_status 3 0 2	//tunneldoor - Axis - failed

		wait 200

		trigger tank script_lockout_stop
	}

	//-----------------------------------------------------------------------
	// Escape DOOR, fire this to end the game
	//-----------------------------------------------------------------------
	trigger turn2			//Teuthis: removed the turn, we just need to fire		
	{
		trigger tank startfire
		trigger tank_turret2 avre_fire
		trigger tank_flash run2			//this one fires it up and executes blow_door 2
	}

	trigger blow_door2				//triggers explosion of tunnelgate
	{
		setstate tank_flash invisible
		wait 200
		trigger tank stopfire
		trigger escapedoor_solid switch
	
		wm_objective_status 5 1 1	//escape door - Allies - completed
		wm_objective_status 5 0 2	//escape door - Axis - failed

		wait 200
		trigger tank sound_death
		trigger tank script_lockout_stop

		wait 2000
		trigger game_manager allies_win
	}
}

//================================================================================
// Test brushage for the tank turret
//================================================================================
tank_turret2solid
{
	spawn
	{
		remove
	}
}

//================================================================================
// Metal CLIP brush tank turret
//================================================================================
tank_turret2
{
	spawn
	{
		wait 50
		// Reset the tank+turret into correct position
		followspline 0 spln0 10000 wait length -64
		followspline 1 spln0 10000 wait length -64
	}

	trigger avre_fire
	{
		playsound sound/vehicles/tank/tank_fire.wav volume 300
	}

	trigger spin_start
	{
		stopsound
		playsound sound/vehicles/tank/turret_spin.wav looping volume 127
	}

	trigger spin_stop
	{
		stopsound
		playsound sound/vehicles/tank/turret_end.wav volume 96
	}

	//-----------------------------------------------------------------------
	//-----------------------------------------------------------------------

	trigger run_0
	{
		followspline 0 spln0 60 wait length -64
	}

	trigger run_1
	{
		followspline 0 spln1 60 wait length -64
	}

	trigger run_2
	{
		followspline 0 spln2 60 wait length -64
	}

	trigger run_3
	{
		followspline 0 spln3 60 wait length -64
	}

	trigger run_4
	{
		followspline 0 spln4 60 wait length -64
	}

	trigger run_5
	{
		followspline 0 spln5 60 wait length -64
	}

	trigger run_6
	{
		followspline 0 spln6 60 wait length -64
	}

	trigger run_7
	{
		followspline 0 spln7 60 wait length -64
	}

	trigger run_8
	{
		followspline 0 spln8 60 wait length -64
	}

	trigger run_9
	{
		followspline 0 spln9 60 wait length -64
	}

	trigger run_10
	{
		followspline 0 spln10 60 wait length -64
	}

	trigger run_11
	{
		followspline 0 spln11 60 wait length -64
	}

	trigger run_12
	{
		followspline 0 spln12 60 wait length -64
	}

	trigger run_13
	{
		followspline 0 spln13 60 wait length -64
	}

	trigger run_14
	{
		followspline 0 spln14 60 wait length -64
	}

	trigger run_15
	{
		followspline 0 spln15 60 wait length -64
	}

	trigger run_16
	{
		followspline 0 spln16 60 wait length -64
	}

	trigger run_17
	{
		followspline 0 spln17 60 wait length -64
	}

	trigger run_18
	{
		followspline 0 spln18 60 wait length -64
	}

	trigger run_19
	{
		followspline 0 spln19 60 wait length -64
	}

	trigger run_20
	{
		followspline 0 spln20 60 wait length -64
	}

	trigger run_21
	{
		followspline 0 spln21 60 wait length -64
	}

	trigger run_22
	{
		followspline 0 spln22 60 wait length -64
	}

	trigger run_23
	{
		followspline 0 spln23 60 wait length -64
	}

	trigger run_24
	{
		followspline 0 spln24 60 wait length -64
	}

	trigger run_25
	{
		followspline 0 spln25 60 wait length -64
	}

	trigger run_26
	{
		followspline 0 spln26 60 wait length -64
	}

	trigger run_27
	{
		followspline 0 spln27 60 wait length -64
	}

	trigger run_28
	{
		followspline 0 spln28 60 wait length -64
	}

	trigger run_29		
	{
		followspline 0 spln29 60 wait length -64
	}

	trigger run_30
	{
		followspline 0 spln30 60 wait length -64
	}

	trigger run_31
	{
		followspline 0 spln31 60 wait length -64
	}

	trigger run_32
	{
		followspline 0 spln32 60 wait length -64
	}

	trigger run_33		//tank stops at spln33
	{
		followspline 0 spln33 60 wait length -64
	}

	trigger run_34
	{
		followspline 0 spln34 60 wait length -64
	}

	trigger run_35
	{
		followspline 0 spln35 80 wait length -64
	}

	trigger run_36
	{
		followspline 0 spln36 80 wait length -64
	}

	trigger run_37
	{
		followspline 0 spln37 80 wait length -64
	}

	trigger run_38
	{
		followspline 0 spln38 80 wait length -64
	}

	trigger run_39
	{
		followspline 0 spln39 80 wait length -64
	}

	trigger run_40
	{
		followspline 0 spln40 80 wait length -64
	}

	trigger run_41
	{
		followspline 0 spln41 80 wait length -64
	}

	trigger run_42
	{
		followspline 0 spln42 80 wait length -64
	}

	trigger run_43
	{
		followspline 0 spln43 80 wait length -64
	}

	trigger run_44
	{
		followspline 0 spln44 80 wait length -64
	}

	trigger run_45
	{
		followspline 0 spln45 80 wait length -64
	}

	trigger run_46
	{
		followspline 0 spln46 80 wait length -64
	}

	trigger run_47
	{
		followspline 0 spln47 80 wait length -64
	}

	trigger run_48
	{
		followspline 0 spln48 80 wait length -64
	}

	trigger run_49
	{
		followspline 0 spln49 80 wait length -64
	}

	trigger run_50
	{
		followspline 0 spln50 80 wait length -64
	}

	trigger run_51
	{
		followspline 0 spln51 80 wait length -64
	}

	trigger run_52
	{
		followspline 0 spln52 80 wait length -64
	}

	trigger run_53
	{
		followspline 0 spln53 80 wait length -64
	}

	trigger run_54
	{
		followspline 0 spln54 80 wait length -64
	}

	trigger run_55
	{
		followspline 0 spln55 80 wait length -64
	}

	trigger run_56
	{
		followspline 0 spln56 80 wait length -64
	}

	trigger run_57
	{
		followspline 0 spln57 80 wait length -64
	}

	trigger run_58
	{
		followspline 0 spln58 80 wait length -64
	}

	trigger run_59
	{
		followspline 0 spln59 80 wait length -64
	}

	trigger run_60
	{
		followspline 0 spln60 80 wait length -64
	}

	trigger run_61
	{
		followspline 0 spln61 80 wait length -64
	}

	trigger run_62
	{
		followspline 0 spln62 80 wait length -64
	}

	trigger run_63
	{
		followspline 0 spln63 80 wait length -64
	}

	trigger run_64
	{
		followspline 0 spln64 80 wait length -64
	}

	trigger run_65
	{
		followspline 0 spln65 80 wait length -64
	}

	trigger run_66
	{
		followspline 0 spln66 80 wait length -64
	}

	trigger run_67
	{
		followspline 0 spln67 80 wait length -64
	}

	trigger run_68
	{
		followspline 0 spln68 80 wait length -64
	}

	trigger run_69
	{
		followspline 0 spln69 80 wait length -64
	}

	trigger run_70
	{
		followspline 0 spln70 80 wait length -64
	}

	trigger run_71
	{
		followspline 0 spln71 80 wait length -64
	}

	trigger run_72
	{
		followspline 0 spln72 80 wait length -64
	}

	trigger run_73
	{
		followspline 0 spln73 80 wait length -64
	}

	trigger run_74
	{
		followspline 0 spln74 80 wait length -64
	}

	trigger run_75
	{
		followspline 0 spln75 80 wait length -64
	}

	trigger run_76
	{
		followspline 0 spln76 80 wait length -64
	}

	trigger run_77
	{
		followspline 0 spln77 80 wait length -64
	}

	trigger run_78
	{
		followspline 0 spln78 80 wait length -64
	}

	trigger run_79		//here we reached the tunneldoor
	{
		followspline 0 spln79 80 wait length -64
	}

	trigger run_80
	{
		followspline 0 spln80 80 wait length -64
	}

	trigger run_81
	{
		followspline 0 spln81 80 wait length -64
	}

	trigger run_82
	{
		followspline 0 spln82 80 wait length -64
	}

	trigger run_83
	{
		followspline 0 spln83 80 wait length -64
	}

	trigger run_84
	{
		followspline 0 spln84 80 wait length -64
	}

	trigger run_85
	{
		followspline 0 spln85 80 wait length -64
	}

	trigger run_86
	{
		followspline 0 spln86 80 wait length -64
	}

	trigger run_87
	{
		followspline 0 spln87 80 wait length -64
	}

	trigger run_88
	{
		followspline 0 spln88 80 wait length -64
	}

	trigger run_89
	{
		followspline 0 spln89 80 wait length -64
	}

	trigger run_90
	{
		followspline 0 spln90 80 wait length -64
	}

	trigger run_91
	{
		followspline 0 spln91 80 wait length -64
	}

	trigger run_92
	{
		followspline 0 spln92 80 wait length -64
	}

	trigger run_93
	{
		followspline 0 spln93 80 wait length -64
	}

	trigger run_94
	{
		followspline 0 spln94 80 wait length -64
	}

	trigger run_95
	{
		followspline 0 spln95 80 wait length -64
	}

	trigger run_96
	{
		followspline 0 spln96 80 wait length -64
	}

	trigger run_97
	{
		followspline 0 spln97 80 wait length -64
	}

	trigger run_98
	{
		followspline 0 spln98 80 wait length -64
	}

	trigger run_99
	{
		followspline 0 spln99 80 wait length -64
	}

	trigger run_100
	{
		followspline 0 spln100 80 wait length -64
	}

	trigger run_101
	{
		followspline 0 spln101 80 wait length -64
	}

	trigger run_102
	{
		followspline 0 spln102 80 wait length -64
	}

	trigger run_103		//we reached the bridge
	{
		followspline 0 spln103 80 wait length -64
		followspline 0 spln104 80 wait length -64
		followspline 0 spln105 80 wait length -64
		followspline 0 spln106 80 wait length -64
		followspline 0 spln107 80 wait length -64
		followspline 0 spln108 80 wait length -64
	}

	trigger run_104
	{
		followspline 0 spln109 80 wait length -64
	}

	trigger run_105
	{
		followspline 0 spln110 80 wait length -64
	}

	trigger run_106
	{
		followspline 0 spln111 80 wait length -64
	}

	trigger run_107
	{
		followspline 0 spln112 80 wait length -64
	}

	trigger run_108
	{
		followspline 0 spln113 80 wait length -64
	}

	
	trigger run_109
	{
		followspline 0 spln114 80 wait length -64
	}

	trigger run_110
	{
		followspline 0 spln115 80 wait length -64
	}

	trigger run_111
	{
		followspline 0 spln116 80 wait length -64
	}

	trigger run_112
	{
		followspline 0 spln117 80 wait length -64
	}

	trigger run_113
	{
		followspline 0 spln118 80 wait length -64
	}

	trigger run_114
	{
		followspline 0 spln119 80 wait length -64
	}

	trigger run_115
	{
		followspline 0 spln120 80 wait length -64
	}

	trigger run_116
	{
		followspline 0 spln121 80 wait length -64
	}

	trigger run_117
	{
		followspline 0 spln122 80 wait length -64
	}

	trigger run_118
	{
		followspline 0 spln123 80 wait length -64
	}

	trigger run_119
	{
		followspline 0 spln124 80 wait length -64
	}

	trigger run_120
	{
		followspline 0 spln125 80 wait length -64
	}

	trigger run_121
	{
		followspline 0 spln126 80 wait length -64
	}

	trigger run_122
	{
		followspline 0 spln127 80 wait length -64
	}

	trigger run_123
	{
		followspline 0 spln128 80 wait length -64
	}

	trigger run_124
	{
		followspline 0 spln129 80 wait length -64
	}

	trigger run_125
	{
		followspline 0 spln130 80 wait length -64
	}

	trigger run_126
	{
		followspline 0 spln131 80 wait length -64
	}

	trigger run_127
	{
		followspline 0 spln132 80 wait length -64
	}

	trigger run_128
	{
		followspline 0 spln133 80 wait length -64
	}

	trigger run_129
	{
		followspline 0 spln134 80 wait length -64
	}

	trigger run_130
	{
		followspline 0 spln135 80 wait length -64
	}

	trigger run_131
	{
		followspline 0 spln136 80 wait length -64
	}

	trigger run_132
	{
		followspline 0 spln137 80 wait length -64
	}

	trigger run_133
	{
		followspline 0 spln138 80 wait length -64
	}

	trigger run_134
	{
		followspline 0 spln139 80 wait length -64
	}

	trigger run_135
	{
		followspline 0 spln140 80 wait length -64
	}

	trigger run_136
	{
		followspline 0 spln141 80 wait length -64
	}

	trigger run_137
	{
		followspline 0 spln142 80 wait length -64
	}

//	trigger run_138
//	{
//		followspline 0 spln143 80 wait length -64
//	}
//
//	trigger run_139		//end of splns reached
//	{
//		followspline 0 spln144 80 wait length -64
//	}
}

tank_smoke
{
	spawn
	{
		wait 300
		attachtotag tank tag_turret
		setstate tank_smoke invisible
	}
}

tank_flash
{
	spawn
	{
		setstate tank_flash invisible
	}

	trigger run					//triggers explosion of tunneldoor
	{
		setstate tank_flash default
 		attachtotag tank_turret tag_flash
		faceangles 0 90 0 50

		wait 50

		trigger tank_turret blow_door		//triggers explosion of tunneldoor
		trigger game_manager spawn_switch
	}

	trigger run2					//triggers explosion of tunneldoor
	{
		setstate tank_flash default
 		attachtotag tank_turret tag_flash
		faceangles 0 90 0 50

		wait 50

		trigger tank_turret blow_door2		//triggers explosion of escapedoor
	}
}

// ----------------------------------------------------------------------------
// Tunnel door on Allied side of map
// ----------------------------------------------------------------------------
cavedoor_solid
{
	spawn
	{
		wait 200
		setstate cavedoor_solid default
		setstate cavedoor_dmg invisible
	}

	trigger switch
	{
		alertentity cavedoor_explo
		trigger hurt_cavedoorblast boom
		setstate cavedoor_solid invisible
		setstate cavedoor_dmg default
		alertentity cavedoor_rubble1
	}
}

hurt_cavedoorblast
{
	spawn
	{
		wait 200
		setstate hurt_cavedoorblast invisible
	}

	trigger boom
	{
		setstate hurt_cavedoorblast default
		wait 100
		remove
	}
}

// ----------------------------------------------------------------------------
// Escape door on Allied side of map
// ----------------------------------------------------------------------------
escapedoor_solid
{
	spawn
	{
		wait 200
		setstate escapedoor_solid default
		setstate escapedoor_dmg invisible
	}

	trigger switch
	{
		alertentity escapedoor_explo
		trigger hurt_escapedoorblast boom
		setstate escapedoor_solid invisible
		setstate escapedoor_dmg default
		alertentity escapedoor_rubble1
	}
}

hurt_escapedoorblast
{
	spawn
	{
		wait 200
		setstate hurt_escapedoorblast invisible
	}

	trigger boom
	{
		setstate hurt_escapedoorblast default
		wait 100
		remove
	}
}

// ============================================================================
// Axis MG42 Nest - on Allied side of the map
// ============================================================================

alliedbarnmg42nest		//is now axis mg. I kept the entity names as axis for convenience reason only
{
	spawn
	{
		wait 500

		constructible_class 2
		setstate alliedbarnmg42 invisible
		setstate alliedbarnmg42materials default
	}

	buildstart final
	{
		setstate alliedbarnmg42 underconstruction	
	}

	built final
	{
		setstate alliedbarnmg42 default
		setstate alliedbarnmg42materials invisible

		// Some kind of UI pop-up to alert players
		wm_announce	"^2Axis team has constructed the Road MG Nest!"
	}

	decayed final
	{
		setstate alliedbarnmg42 invisible
		setstate alliedbarnmg42materials default
	}

	death
	{
		setstate alliedbarnmg42 invisible
		setstate alliedbarnmg42materials default
		repairmg42 alliedbarnmg42

		// Some kind of UI pop-up to alert players
		wm_announce	"^2Allied team has destroyed the Road MG Nest!"
	}
}

