/////sandstorm_beta3 script by foRza

game_manager
{
	spawn
	{
		remapshader "models/mapobjects/tanks_sd/mg42turret" "models/mapobjects/tanks_sd/mg42turret_2"
		
		remapshaderflush
		
		// Game rules
		wm_axis_respawntime	20
		wm_allied_respawntime	15
		wm_number_of_objectives 6
		wm_set_round_timelimit	45

		// Objectives
		// 1: Steal Tank
		// 2: Protect Tank
		// 3: Blow bank doors
		// 4: Steal Gold
		// 5: Escape with gold
		// 6: Command post

		// Current main objectives for each team (0=Axis, 1=Allies)
		wm_set_main_objective		1	0
		wm_set_main_objective		1	1

		wm_objective_status 1 0 0
		wm_objective_status 1 1 0
		wm_objective_status 2 0 0
		wm_objective_status 2 1 0
		wm_objective_status 3 0 0
		wm_objective_status 3 1 0
		wm_objective_status 4 0 0
		wm_objective_status 4 1 0
		wm_objective_status 5 0 0
		wm_objective_status 5 1 0
		wm_objective_status 6 0 0
		wm_objective_status 6 1 0

		// Stopwatch mode defending team (0=Axis, 1=Allies)
		wm_set_defending_team	0

		// Winner on expiration of round timer (0=Axis, 1=Allies)
		wm_setwinner	0

		// NEW SCRIPT SECTION

		wait 200

		setstate upperaxisspawnblob invisible
		setstate upperaxisspawn invisible
		setstate summitspawnblob invisible
		setstate summitspawn invisible
		setstate axisspawnblob invisible
		setstate axisspawn invisible
		setstate alliedspawn invisible

		setstate tankdepot_allied_spawns invisible

		setstate tankdepotblob default
		setstate tankdepot_axis_spawns default
		setstate allied_spawnblob default
		setstate allied_spawn default

		//END

		wait 500

		setautospawn	"Tank Depot"	0
		setautospawn	"Allied Spawn"	1

		//Accums
		accum 1 set 1
		accum 4 set 0 // have the Allies stolen the tank?

		// start triggered loops on/off as required (eg: command post radio sounds)
		disablespeaker allies_compost_sound
		disablespeaker axis_compost_sound
		disablespeaker allies_compost_sound_lms
		disablespeaker axis_compost_sound_lms

		wait 2000

		// *----------------------------------- vo ------------------------------------------*
		wm_addteamvoiceannounce 0 "sandstorm_beta2_axis_tank_steal"
		wm_addteamvoiceannounce 0 "axis_hq_compost_construct"

		wm_addteamvoiceannounce 1 "sandstorm_beta2_allies_tank_steal"
		wm_addteamvoiceannounce 1 "allies_hq_compost_construct"

		wm_teamvoiceannounce 0 "sandstorm_beta2_axis_tank_steal"
		wm_teamvoiceannounce 0 "axis_hq_compost_construct"

		wm_teamvoiceannounce 1 "sandstorm_beta2_allies_tank_steal"
		wm_teamvoiceannounce 1 "allies_hq_compost_construct"
		// *---------------------------------------------------------------------------------*
	}


	trigger allies_steal_tank
	{
		accum 4 abort_if_not_equal 0

		wm_announce "Allied team has stolen the Tank!"

		wm_objective_status 1 0 2
		wm_objective_status 1 1 1

		accum 4 set 1
		wm_set_main_objective		2	0
		wm_set_main_objective		2	1

		trigger game_manager allies_steal_tank_allied_msg
		trigger game_manager allies_steal_tank_axis_msg

	}

	trigger allies_steal_tank_allied_msg
	{
		// *----------------------------------- vo ------------------------------------------*
		wm_addteamvoiceannounce 1 "sandstorm_beta2_allies_tank_courtyard"

		wm_teamvoiceannounce 1 "sandstorm_beta2_allies_tank_stolen"
		wm_teamvoiceannounce 1 "sandstorm_beta2_allies_tankbars_destroy"
		wm_teamvoiceannounce 1 "sandstorm_beta2_allies_tank_courtyard"

		wm_removeteamvoiceannounce 1 "sandstorm_beta2_allies_tank_steal"
		// *---------------------------------------------------------------------------------*
	}

	trigger allies_steal_tank_axis_msg
	{
		// *----------------------------------- vo ------------------------------------------*
		wm_addteamvoiceannounce 0 "axis_hq_tank_stop"
		wm_addteamvoiceannounce 0 "sandstorm_beta2_axis_tankbars_construct"

		wm_teamvoiceannounce 0 "sandstorm_beta2_axis_tank_stolen"
		wm_teamvoiceannounce 0 "sandstorm_beta2_axis_tankbars_construct"

		wm_removeteamvoiceannounce 0 "sandstorm_beta2_axis_tank_steal"
		// *---------------------------------------------------------------------------------*
	}

////////////1ST BARRIER

	trigger 1st_barrier
	{

		wm_announce "The tank is past the 1st barrier! Allies spawn at the Tank Depot!"


		alertentity tankdepot_axis_spawns
		alertentity tankdepot_allied_spawns
		alertentity tankdepotblob		// Tank Depot team_WOLF_objective

		//NEW

		alertentity axisspawn
//		alertentity alliedspawn
//		alertentity axisspawnblob

		setstate axisspawnblob default
		setstate axisspawn default
		setstate tankdepot_allied_spawns default


		wait 200

		//END

		setautospawn	"Lower Base Spawn"	0
		setautospawn	"Tank Depot"	1


	}

////////////2nd BARRIER

	trigger 2nd_barrier
	{

		wm_announce "The tank is past the 2nd barrier! Allies spawn at Lower Axis Base!"


//		alertentity axisspawn
		alertentity alliedspawn
		alertentity axisspawnblob		// lower Axis base team_WOLF_objective

		//NEW

		alertentity upperaxisspawn
		alertentity summitspawn

		wait 200

		setstate upperaxisspawn default
		setstate upperaxisspawnblob default
		setstate summitspawn default
		setstate summitspawnblob default

		setstate alliedspawn default
		setstate axisspawn invisible //NEW

		//END


		setautospawn	"Upper Base Spawn"	0
		setautospawn	"Lower Base Spawn"	1

	}




//Objective Flags
	trigger obj1  //Capture of Axis Docs
      {
                  //Add to objective accum 1 so we know that the objective has been completed
                 	accum 1 inc 1

                 	//Call function called checkgame in game_manager to check if the round has been won
                 	trigger game_manager allied_checkgame
     	}

	trigger allied_checkgame // checks to see if Allied win requirements have been met
      {
                 	accum 1 abort_if_not_equal 2
                 	wm_setwinner 1
			wm_announce "Allied team escaped with the Gold!"

			wm_objective_status 5 0 2
			wm_objective_status 5 1 1

			wait 1500
                 	wm_endround
     	}

}

//End of Game_manager section

//Axis Docs. Allied team must capture and secure an Axis docs module containing critical codes
axis_docs //enter this as the scriptname value for the team_CTF_red/blueflag entity
{
	spawn
	{
	wait 200
	setstate axis_docs_captured invisible
	}

	trigger stolen

	{
	wm_announce "Allies have stolen the Gold!"
	setstate axis_docs_cm_marker invisible

	wm_objective_status 4 0 2
	wm_objective_status 4 1 1
	
	// *----------------------------------- vo ----*
		wm_teamvoiceannounce 0 "axis_obj_taken"
		wm_teamvoiceannounce 1 "allied_obj_taken"
	// *----------------------------------- vo ----*

	}

	trigger returned

	{
	wm_announce "The Axis have retrieved the Gold!"
	setstate axis_docs_cm_marker default

	wm_objective_status 4 0 1
	wm_objective_status 4 1 2
	
	// *----------------------------------- vo ----*
		wm_teamvoiceannounce 0 "axis_obj_returned"
		wm_teamvoiceannounce 1 "allied_obj_returned"
	// *----------------------------------- vo ----*

	}

	trigger captured

	{
	wm_announce "The Allies have secured the Axis Gold!"
	setstate axis_docs_red invisible
	setstate axis_docs_captured default

	wm_objective_status 5 0 2
	wm_objective_status 5 1 1
	
	// *----------------------------------- vo ------------------------------------------*
		wm_teamvoiceannounce 0 "axis_obj_lost"
		wm_teamvoiceannounce 1 "allied_obj_secured"
	// *----------------------------------- vo ------------------------------------------*

	}

}


axis_objectives //enter this as the scriptname value for the single trigger_flagonly_multiples entity 
{

death
	{
		trigger game_manager obj1
	}
}



// *************************************************
// ***************** TANK STUFF ********************
// *************************************************

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
	}
}

// digibob: converting truck script from goldrush over...
// ============================================================================
// accum 0, track state
// accum 1
//  - bit 0: barrier1 state		( 0 = not built,	1 = built		)
//  - bit 1: barrier2 state		( 0 = not built,	1 = built		)
//  - bit 2: spline status 		( 0 = not moving, 	1 = moving 		)
//  - bit 3: stuck check flag 	( 0 = not stuck, 	1 = stuck 		)
//  - bit 4: flag for message	( 0 = dont display, 1= display		)
//  - bit 5: blank				(									)
//  - 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
// ===========================================================================================
// spline points are spln2 -> spln78
// ===========================================================================================
// track events:
//  - tracks_forward
//  - tracks_stop
//  - tracks_turn_left
//  - tracks_turn_right


tank
{
	spawn
	{
		wait 400
		followspline 0 spln1 50000 length 32 wait

		trigger tank sound_idle
		trigger tank tracks_stop
	}

	// ========================================
	// sound stuff

	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 0 abort_if_equal 1
		accum 0 set 1

		remapshader models/mapobjects/tanks_sd/jag_tracks_left 	models/mapobjects/tanks_sd/jag_tracks_alt_forward
		remapshader models/mapobjects/tanks_sd/jag_tracks_right models/mapobjects/tanks_sd/jag_tracks_alt_forward
		remapshader models/mapobjects/tanks_sd/jag_wheels_left 	models/mapobjects/tanks_sd/jag_wheels_alt_forward
		remapshader models/mapobjects/tanks_sd/jag_wheels_right models/mapobjects/tanks_sd/jag_wheels_alt_forward
		remapshader models/mapobjects/tanks_sd/jag_cogs_left 	models/mapobjects/tanks_sd/jag_cogs_alt_forward
		remapshader models/mapobjects/tanks_sd/jag_cogs_right 	models/mapobjects/tanks_sd/jag_cogs_alt_forward

		remapshaderflush
	}

	trigger tracks_stop
	{
		accum 0 abort_if_equal 0
		accum 0 set 0

		remapshader models/mapobjects/tanks_sd/jag_tracks_left 	models/mapobjects/tanks_sd/jag_tracks_left
		remapshader models/mapobjects/tanks_sd/jag_tracks_right models/mapobjects/tanks_sd/jag_tracks_right
		remapshader models/mapobjects/tanks_sd/jag_wheels_left 	models/mapobjects/tanks_sd/jag_wheels_left
		remapshader models/mapobjects/tanks_sd/jag_wheels_right models/mapobjects/tanks_sd/jag_wheels_right
		remapshader models/mapobjects/tanks_sd/jag_cogs_left 	models/mapobjects/tanks_sd/jag_cogs_left
		remapshader models/mapobjects/tanks_sd/jag_cogs_right 	models/mapobjects/tanks_sd/jag_cogs_right

		remapshaderflush
	}

	trigger tracks_turn_left
	{
		accum 0 abort_if_equal 2
		accum 0 set 2

		remapshader models/mapobjects/tanks_sd/jag_tracks_left 	models/mapobjects/tanks_sd/jag_tracks_alt_backward
		remapshader models/mapobjects/tanks_sd/jag_tracks_right models/mapobjects/tanks_sd/jag_tracks_alt_forward
		remapshader models/mapobjects/tanks_sd/jag_wheels_left 	models/mapobjects/tanks_sd/jag_wheels_alt_backward
		remapshader models/mapobjects/tanks_sd/jag_wheels_right models/mapobjects/tanks_sd/jag_wheels_alt_forward
		remapshader models/mapobjects/tanks_sd/jag_cogs_left 	models/mapobjects/tanks_sd/jag_cogs_alt_backward
		remapshader models/mapobjects/tanks_sd/jag_cogs_right 	models/mapobjects/tanks_sd/jag_cogs_alt_forward

		remapshaderflush
	}

	trigger tracks_turn_right
	{
		accum 0 abort_if_equal 3
		accum 0 set 3

		remapshader models/mapobjects/tanks_sd/jag_tracks_left 	models/mapobjects/tanks_sd/jag_tracks_alt_forward
		remapshader models/mapobjects/tanks_sd/jag_tracks_right models/mapobjects/tanks_sd/jag_tracks_alt_backward
		remapshader models/mapobjects/tanks_sd/jag_wheels_left 	models/mapobjects/tanks_sd/jag_wheels_alt_forward
		remapshader models/mapobjects/tanks_sd/jag_wheels_right models/mapobjects/tanks_sd/jag_wheels_alt_backward
		remapshader models/mapobjects/tanks_sd/jag_cogs_left 	models/mapobjects/tanks_sd/jag_cogs_alt_forward
		remapshader models/mapobjects/tanks_sd/jag_cogs_right 	models/mapobjects/tanks_sd/jag_cogs_alt_backward

		remapshaderflush
	}

// ===========================================================================================
// ===========================================================================================

	trigger run_continue
	{
		accum 3 inc 1
		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
	}

	trigger run_0
	{
		trigger self tracks_forward
		accum 1 bitset 2
		followspline 0 spln2 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_1
	{
		trigger self tracks_forward
		trigger game_manager allies_steal_tank

		accum 1 bitset 2
		followspline 0 spln3 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_2
	{
		trigger self tracks_forward
		trigger defense1_toi rubble_corner1

		accum 1 bitset 2
		followspline 0 spln4 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_3
	{
		trigger self tracks_forward
		trigger defense1_toi rubble_corner2
		trigger defense2_toi rubble_corner3
		accum 1 bitset 2
		followspline 0 spln5 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_4
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln6 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_5
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln7 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_6
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln8 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_7
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln9 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_8
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln10 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_9
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln11 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_10
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln12 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_11
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln13 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_12
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln14 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_13
	{
		trigger self tracks_turn_right

		accum 1 bitset 2
		followspline 0 spln15 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_14
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln16 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_15
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln17 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_16
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln18 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_17
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln19 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_18
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln20 50 wait length 32
		accum 1 bitreset 2

		trigger tank stuck_check_barrier1_built_msg

		trigger self run_continue
	}

	trigger run_19
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln21 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_20
	{
		trigger self tracks_forward

		// **********************************
		trigger defense1 remove
		// **********************************

		accum 1 bitset 2
		followspline 0 spln22 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_21
	{
		trigger self tracks_forward

		// *----------------------------------- vo ------------------------------------------*
		wm_teamvoiceannounce 0 "sandstorm_beta2_axis_tank_barrier1"

		wm_teamvoiceannounce 1 "sandstorm_beta2_allies_tank_barrier1"
		// *---------------------------------------------------------------------------------*

		trigger game_manager 1st_barrier

		accum 1 bitset 2
		followspline 0 spln23 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_22
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln24 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_23
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln25 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_24
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln26 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_25
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln27 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_26
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln28 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_27
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln29 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_28
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln30 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_29
	{
		trigger self tracks_forward
//		trigger defense1_toi rubble_corner1
		trigger self tracks_turn_left

		accum 1 bitset 2
		followspline 0 spln31 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_30
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln32 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_31
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln33 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_32
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln34 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_33
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln35 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_34
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln36 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_35
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln37 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_36
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln38 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_37
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln39 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_38
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln40 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_39
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln41 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_40
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln42 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_41
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln43 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_42
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln44 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_43
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln45 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_44
	{
		trigger self tracks_forward
//		trigger defense1_toi rubble_corner2
//		trigger defense2_toi rubble_corner3

		accum 1 bitset 2
		followspline 0 spln46 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_45
	{
		trigger self tracks_turn_left

		accum 1 bitset 2
		followspline 0 spln47 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_46
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln48 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_47
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln49 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_48
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln50 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_49
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln51 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_50
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln52 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_51
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln53 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_52
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln54 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_53
	{
		trigger self tracks_turn_left

		accum 1 bitset 2
		followspline 0 spln55 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_54
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln56 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_55
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln57 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_56
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln58 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_57
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln59 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_58
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln60 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_59
	{
		trigger self tracks_forward

		// **********************************
		trigger defense2 remove
		// **********************************

		accum 1 bitset 2
		followspline 0 spln61 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_60
	{
		trigger self tracks_turn_left

		// *----------------------------------- vo ------------------------------------------*
		wm_teamvoiceannounce 0 "sandstorm_beta2_axis_tank_barrier2"

		wm_teamvoiceannounce 1 "sandstorm_beta2_allies_tank_barrier2"
		// *---------------------------------------------------------------------------------*

		trigger game_manager 2nd_barrier

		accum 1 bitset 2
		followspline 0 spln62 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_61
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln63 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_62
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln64 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_63
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln65 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_64
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln66 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_65
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln67 50 wait length 32
		accum 1 bitreset 2

		trigger tank stuck_check_barrier2_built_msg

		trigger self run_continue
	}

	trigger run_66
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln68 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_67
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln69 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_68
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln70 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_69
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln71 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_70
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln72 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_71
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln73 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_72
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln74 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_73
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln75 50 wait length 32
		accum 1 bitreset 2

		// *----------------------------------- vo ------------------------------------------*
		wm_addteamvoiceannounce 0 "sandstorm_beta2_axis_bank_courtyard"

		wm_addteamvoiceannounce 1 "sandstorm_beta2_allies_bank_courtyard"

		wm_teamvoiceannounce 0 "sandstorm_beta2_axis_bank_courtyard"

		wm_teamvoiceannounce 1 "sandstorm_beta2_allies_bank_courtyard"

		wm_removeteamvoiceannounce 1 "sandstorm_beta2_allies_tank_courtyard"
		// *---------------------------------------------------------------------------------*

		trigger self run_continue
	}

	trigger run_74
	{
		trigger self tracks_turn_left

		accum 1 bitset 2
		followspline 0 spln76 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_75
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln77 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_76
	{
		trigger self tracks_forward

		accum 1 bitset 2
		followspline 0 spln78 50 wait length 32
		accum 1 bitreset 2

		trigger self script_lockout

		trigger self 		tracks_stop
		trigger tank_sound 	stop

		wm_objective_status 2 0 2
		wm_objective_status 2 1 1

		startanimation 45 10 15 nolerp norandom
		wait 666
		startanimation 0 1 15 nolerp norandom

		wait 900

		trigger tank_turret turn

		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
	{
		accum 1 bitreset 3

		trigger self stuck_check_barrier1_built
		trigger self stuck_check_barrier2_built
		trigger self stuck_check_scriptlockout
		trigger self stuck_check_finished
	}

	trigger stuck_check_finished
	{
		accum 3 abort_if_less_than 77

		accum 1 bitset 3
	}

	trigger stuck_check_scriptlockout
	{
		accum 5 abort_if_equal 0

		accum 1 bitset 3
	}

	trigger stuck_check_barrier1_built
	{
		accum 3 abort_if_not_equal 20

		accum 1 abort_if_not_bitset 0

		accum 1 bitset 3
	}

	trigger stuck_check_barrier1_built_msg
	{
		accum 1 abort_if_not_bitset 0

		// *----------------------------------- vo ------------------------------------------*
		wm_teamvoiceannounce 1 "sandstorm_beta2_allies_tankbar_destroy"
		// *---------------------------------------------------------------------------------*
	}

	trigger stuck_check_barrier2_built
	{
		accum 3 abort_if_not_equal 59

		accum 1 abort_if_not_bitset 1

		accum 1 bitset 3
	}

	trigger stuck_check_barrier2_built_msg
	{
		accum 1 abort_if_not_bitset 1

		// *----------------------------------- vo ------------------------------------------*
		wm_teamvoiceannounce 1 "sandstorm_beta2_allies_tankbar_destroy"
		// *---------------------------------------------------------------------------------*
	}

// ===========================================================================================
// 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

		changemodel models/mapobjects/tanks_sd/jagdpanther_africa_tracks.md3

		setstate tank_smoke invisible

		// *----------------------------------- vo ------------------------------------------*
		wm_addteamvoiceannounce 0 "axis_hq_tank_stop"

		wm_teamvoiceannounce 0 "axis_hq_tank_repaired_allies"

		wm_teamvoiceannounce 1 "allies_hq_tank_repaired"

		wm_removeteamvoiceannounce 1 "allies_hq_tank_damaged_axis"
		// *---------------------------------------------------------------------------------*

		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

		trigger self deathcheck_message
		accum 1 bitset 4

		changemodel models/mapobjects/tanks_sd/jagdpanther_africa_tracks2.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 deathcheck_message
	{
		accum 1 abort_if_not_bitset 4

		wm_announce "The Tank has been damaged!"

		// *----------------------------------- vo ------------------------------------------*
		wm_addteamvoiceannounce 1 "allies_hq_tank_damaged_axis"

		wm_teamvoiceannounce 0 "axis_hq_tank_damaged"

		wm_teamvoiceannounce 1 "allies_hq_tank_damaged_axis"

		wm_removeteamvoiceannounce 0 "axis_hq_tank_stop"
		// *---------------------------------------------------------------------------------*
	}

	trigger startfire
	{
		startanimation 67 8 10 nolerp norandom noloop
	}

	trigger stopfire
	{
		startanimation 0 1 15 nolerp norandom
	}

	trigger enable_stage2
	{
		accum 1 bitreset 0
	}

	trigger disable_stage2
	{
		accum 1 bitset 0
	}

	trigger enable_stage4
	{
		accum 1 bitreset 1
	}

	trigger disable_stage4
	{
		accum 1 bitset 1
	}
}

tank_trigger
{
	spawn
	{
		wait 500

		attachtotag tank_shell tag_turret

		trigger tank_trigger bot_goal_loop
	}

	trigger bot_goal_loop
	{
		wait 4000	// check every 4 seconds
		trigger tank bot_active_check
		trigger tank_trigger bot_goal_loop
	}
}

tank_build
{
	spawn
	{
		wait 500

		attachtotag tank_shell tag_turret
	}
}

tank_construct
{
	spawn
	{
		wait 1000

		kill tank

		constructible_class 2
		constructible_health 1200
		constructible_constructxpbonus 10
		constructible_destructxpbonus 10
	}

	built final
	{
		alertentity tank

		wm_announce "The Tank has been repaired!"
	}
}

tank_shell
{
	spawn
	{
		wait 400
		attachtotag tank tag_tank
	}
}

tank_turret
{
	spawn
	{
		wait 500

		attachtotag tank_shell tag_turret
	}

	trigger turn
	{
		wait 1000

		playsound sound/vehicles/tank/turret_spin.wav looping
		faceangles 0 340 0 3000
		stopsound
		playsound sound/vehicles/tank/turret_end.wav

		wait 500

		trigger tank startfire
		playsound sound/vehicles/tank/tank_fire.wav
		trigger boomtrigger boom_all		// triggers the hurts around bank explosions (each has its own wait for timing)
		trigger tank_flash run
	}

	trigger blow_doors
	{
		setstate tank_flash invisible

		wait 200
		trigger tank stopfire

		alertentity bank_door1
		setstate doorframe invisible
		setstate doorframe_damaged default

		wm_announce "Allied team has destroyed the Bank Doors!"

		wm_objective_status 3 0 2
		wm_objective_status 3 1 1

		wm_set_main_objective		4	0
		wm_set_main_objective		4	1

		wait 100
		trigger bank_door2_damaged bankbackboom

		playsound sound/vehicles/tank/turret_spin.wav looping
		faceangles 0 0 0 3000
		stopsound
		playsound sound/vehicles/tank/turret_end.wav
		trigger tank sound_death
		trigger tank script_lockout_stop
	}
}

tank_flash
{
	spawn
	{
		setstate tank_flash invisible
	}

	trigger run
	{
		setstate tank_flash default
 		attachtotag tank_turret tag_flash
		faceangles 0 90 0 50

		wait 50

		trigger tank_turret blow_doors
	}
}

tank_disabler
{
	trigger run
	{
		trigger tank tank_disable
	}
}

tank_enabler
{
	trigger run
	{
		trigger tank tank_enable
	}
}

tank_smoke
{
	spawn
	{
		wait 300
		attachtotag tank_shell tag_smoke
		setstate tank_smoke invisible
	}
}

// *******************************
// ******* BANK EXPLOSION ********
// *******************************
doorframe
{
	spawn
	{
		setstate doorframe_damaged invisible
	}
}

bank_door2_damaged
{
	spawn
	{
		wait 200
		setstate bank_door2_damaged invisible
	}

	trigger bankbackboom
	{

		alertentity bank_door2
		setstate bank_door2_damaged default

		wait 2000

		// *----------------------------------- vo ------------------------------------------*
		wm_addteamvoiceannounce 0 "sandstorm_beta2_axis_gold_defend"

		wm_addteamvoiceannounce 1 "sandstorm_beta2_allies_gold_get"

		wm_teamvoiceannounce 0 "sandstorm_beta2_axis_bank_broken"
		wm_teamvoiceannounce 0 "sandstorm_beta2_axis_gold_defend"

		wm_teamvoiceannounce 1 "sandstorm_beta2_allies_gold_get"

		wm_removeteamvoiceannounce 0 "axis_hq_tank_stop"
		// *---------------------------------------------------------------------------------*
	}
}


// these cause timed damage from the tank barrel to the bank explosion
boomtrigger
{
	trigger boom_all		// this is called from the tank to trigger all hurts
	{
		trigger hurt_barrelblast1 boom
		trigger hurt_barrelblast2 boom
		trigger hurt_barrelblast3 boom
		trigger hurt_bankblast boom
		wait 450
		setstate bankdoors_toi invisible
		setstate bankdoors_cm_marker invisible
	}
}


hurt_barrelblast1
{
	spawn
	{
		wait 200
		setstate hurt_barrelblast1 invisible
	}

	trigger boom
	{
		setstate hurt_barrelblast1 default
		wait 100
		remove
	}
}

hurt_barrelblast2
{
	spawn
	{
		wait 200
		setstate hurt_barrelblast2 invisible
	}

	trigger boom
	{
		wait 165
		setstate hurt_barrelblast2 default
		wait 100
		remove
	}
}

hurt_barrelblast3
{
	spawn
	{
		wait 200
		setstate hurt_barrelblast3 invisible
	}

	trigger boom
	{
		wait 325
		setstate hurt_barrelblast3 default
		wait 100
		remove
	}
}

hurt_bankblast
{
	spawn
	{
		wait 200
		setstate hurt_bankblast invisible

		setstate hurt_barrelblast2 invisible
		setstate hurt_barrelblast3 invisible
	}

	trigger boom
	{
		wait 400
		setstate hurt_bankblast default
		wait 100
		remove
	}
}

// *********************************************
// *********** RUBBLE STTTUUUFFFF **************
// *********************************************

// *********************************************
// **************** CONSTRUCTIBLES *************
// *********************************************

defense1
{
	spawn
	{
		wait 400
		trigger defense1 setup

		constructible_class 3
	}

	trigger setup
	{
		setstate defense1_materials default
		setstate defense1_materials_clip default
		setstate defense1_flag default


		setstate defense1_teeth invisible
	}

	buildstart final
	{
		setstate defense1_materials default
		setstate defense1_materials_clip default
		setstate defense1_flag default


		setstate defense1_teeth underconstruction
	}

	built final
	{
		setstate defense1_materials invisible
		setstate defense1_materials_clip invisible
		setstate defense1_flag invisible


		setstate defense1_teeth default

		trigger tank disable_stage2

		wm_announce "Tank Barrier #1 has been constructed."

		// *----------------------------------- vo ------------------------------------------*
		wm_teamvoiceannounce 0 "sandstorm_beta2_axis_tankbar_constructed"

		wm_removeteamvoiceannounce 0 "sandstorm_beta2_axis_tankbar_construct"
		wm_removeteamvoiceannounce 0 "sandstorm_beta2_axis_tankbars_construct"
		// *---------------------------------------------------------------------------------*
	}

	decayed final
	{
		setstate defense1_materials default
		setstate defense1_materials_clip default
		setstate defense1_flag default


		setstate defense1_teeth invisible
	}

	death
	{
		setstate defense1_materials default
		setstate defense1_materials_clip default
		setstate defense1_flag default


		setstate defense1_teeth invisible

		trigger tank enable_stage2

		wm_announce "Tank Barrier #1 has been destroyed."

		// *----------------------------------- vo ------------------------------------------*
		wm_addteamvoiceannounce 0 "sandstorm_beta2_axis_tankbar_construct"

		wm_teamvoiceannounce 0 "sandstorm_beta2_axis_tankbar_destroyed"

		wm_teamvoiceannounce 1 "sandstorm_beta2_allies_tankbar_destroyed"
		// *---------------------------------------------------------------------------------*
	}

	trigger remove
	{
		setstate defense1_toi invisible
		setstate defense1_materials invisible
		setstate defense1_materials_clip invisible
		setstate defense1_flag invisible
		setstate defense1_teeth invisible

		remove
	}
}

defense2
{
	spawn
	{
		wait 400
		trigger defense2 setup

		constructible_class 3
	}

	trigger setup
	{
		setstate defense2_materials default
		setstate defense2_materials_clip default
		setstate defense2_flag default


		setstate defense2_teeth invisible
	}

	buildstart final
	{
		setstate defense2_materials default
		setstate defense2_materials_clip default
		setstate defense2_flag default


		setstate defense2_teeth underconstruction
	}

	built final
	{
		setstate defense2_materials invisible
		setstate defense2_materials_clip invisible
		setstate defense2_flag invisible


		setstate defense2_teeth default

		trigger tank disable_stage4

		wm_announce "Tank Barrier #2 has been constructed."

		// *----------------------------------- vo ------------------------------------------*
		wm_teamvoiceannounce 0 "sandstorm_beta2_axis_tankbar_constructed"

		wm_removeteamvoiceannounce 0 "sandstorm_beta2_axis_tankbar_construct"
		wm_removeteamvoiceannounce 0 "sandstorm_beta2_axis_tankbars_construct"
		// *---------------------------------------------------------------------------------*
	}

	decayed final
	{
		setstate defense2_materials default
		setstate defense2_materials_clip default
		setstate defense2_flag default


		setstate defense2_teeth invisible
	}

	death
	{
		setstate defense2_materials default
		setstate defense2_materials_clip default
		setstate defense2_flag default


		setstate defense2_teeth invisible

		trigger tank enable_stage4

		wm_announce "Tank Barrier #2 has been destroyed."

		// *----------------------------------- vo ------------------------------------------*
		wm_addteamvoiceannounce 0 "sandstorm_beta2_axis_tankbar_construct"

		wm_teamvoiceannounce 0 "sandstorm_beta2_axis_tankbar_destroyed"

		wm_teamvoiceannounce 1 "sandstorm_beta2_allies_tankbar_destroyed"
		// *---------------------------------------------------------------------------------*
	}

	trigger remove
	{
		setstate defense2_toi invisible
		setstate defense2_materials invisible
		setstate defense2_materials_clip invisible
		setstate defense2_flag invisible
		setstate defense2_teeth invisible

		// *----------------------------------- vo ------------------------------------------*
		wm_removeteamvoiceannounce 0 "sandstorm_beta2_axis_tankbar_construct"
		wm_removeteamvoiceannounce 0 "sandstorm_beta2_axis_tankbars_construct"

		wm_removeteamvoiceannounce 1 "sandstorm_beta2_allies_tankbar_destroy"
		wm_removeteamvoiceannounce 1 "sandstorm_beta2_allies_tankbars_destroy"
		// *---------------------------------------------------------------------------------*

		remove
	}
}


// -------------------------------------------------------
//
// Lift+Door Brush Scripting Example
//
// Map: tut02_lift2
// Author: Sock/djbob
// Last updated: 12-July-02
//
// -------------------------------------------------------
//------------------------------------------------------------------------------
//
// In SP the "func_inv_user" trigger brush is targeted by a "target_relay" entity.
// When the "target_relay" is used via "alertentity" it will turn the "func_inv_user" ON/OFF.
//
// In MP the "target_relay" is very hit and miss and sometimes will NOT re-enable the
// "func_inv_user" trigger brush so you are left with a broken lift.
//
// Another problem with "func_inv_user" trigger brushes is that when they are turned off
// the HINT cursor does not stop either. You do get a "Offnoise" but often you don't hear it.
//
// As the Lift uses "accum" variables for its position and direction its easier
// to use the script to determine if the "func_inv_user" trigger brushes work
// or not.
//
//------------------------------------------------------------------------------
lift01_top_trigger
{
	trigger main
	{
		trigger lift01 topfuncinv
	}
}
lift01_bot_trigger
{
	trigger main
	{
		trigger lift01 botfuncinv
	}
}
//lift01_mid_trigger
//{
//	trigger main
//	{
//		trigger lift01 midfuncinv
//	}
//}

//------------------------------------------------------------------------------
//
// Lift 1
//
// Lift and lever script_movers are all controlled from this routine.
// Due to the amount of touchfields in the lift shaft this routine can be re-entered several times.
//
//------------------------------------------------------------------------------
lift01
{
	spawn
	{
		accum 2 set 0				// Where lift is or heading (0=Up/Top, 1=Down/Bottom)
		accum 3 set 0				// Lift Moving ? (0=No, 1=Yes)
	}

	trigger topfuncinv
	{
		accum 3 abort_if_equal 1		// If lift moving, then return.
		accum 2 abort_if_equal 1		// If lift at bottom of liftshaft, then return.
		trigger lift01 checkdown		// Move lift down
	}
	trigger botfuncinv
	{
		accum 3 abort_if_equal 1		// If lift moving, then return.
		accum 2 abort_if_equal 0		// If lift at top of liftshaft, then return.
		trigger lift01 checkup			// Move lift up
	}

	trigger checkup
	{
		accum 2 abort_if_equal 0		// Lift at bottom of lift already ?

		trigger lift01 initialup		// Is this a first time request move ?
		trigger lift01 up			// Start move lift up
	}
	trigger checkdown
	{
		accum 2 abort_if_equal 1		// Lift at top of lift already ?

		trigger lift01 initialdown		// Is this a first time request move ?
		trigger lift01 down			// Start move lift down
	}

	trigger initialup				// Started journey upwards ...
	{
		accum 3 abort_if_equal 1		// Lift already Moving ?
		accum 3 set 1				// Lift's moving ...

		trigger lift01t_button in		// Disable BOTH button panel's, lift calling only works when lift stationary
		trigger lift01b_button in

		trigger lift01t_button lwaitgreen	// Enable lift call waiting light
	}
	trigger initialdown				// Started journey downwards ...
	{
		accum 3 abort_if_equal 1		// Lift already Moving ?
		accum 3 set 1				// Lift's moving baby ...

		trigger lift01t_button in		// Disable BOTH button panel's, lift calling only works when lift stationary
		trigger lift01b_button in

		trigger lift01b_button lwaitgreen	// Enable lift call waiting light
	}

	trigger up					// Going up
	{
		trigger lift01_lever stop		// Stop lever first, lift will catch up.
		halt					// If the routine has been re-entered, Stop lift.
		wait 500				// A little pause before direction change
		accum 2 set 0				// Set new driection of lift
		trigger lift01_lever forward		// Move lever forward and play sound.

		stopsound				// Kill all currently playing sounds belonging to this entity only
		playsound sound\movers\elevators\elev1_start.wav
		wait 5
		playsound sound\movers\elevators\elev1_loop.wav looping forever

		trigger lift01_lever up			// Trigger the lever to move down with the elevator.
		gotomarker lift01up2 300 wait		// Move lift fast to first point
		gotomarker lift01up1 50 deccel wait	// Slow down lift and stop at second point

		stopsound				// Kill all currently playing sounds belonging to this entity only
		playsound sound\movers\elevators\elev1_end.wav

		trigger lift01_lever stop		// Mover lever back to center.
		trigger lift01t_button lwaitred		// Switch light waiting back to red.
		trigger lift01b_button out		// Enable bottom calling button panel.
		accum 3 set 0				// Lift stopped at top
	}

	trigger down					// Going down
	{
		trigger lift01_lever stop		// Stop lever first, lift will catch up.
		halt					// If the routine has been re-entered, Stop lift.
		wait 500				// A little pause before direction change
		accum 2 set 1				// Set new driection of lift
		trigger lift01_lever backward		// Move lever backwards and play sound.

		stopsound				// Kill all currently playing sounds belonging to this entity only
		playsound sound\movers\elevators\elev1_start.wav
		wait 5
		playsound sound\movers\elevators\elev1_loop.wav looping forever

		trigger lift01_lever down		// Trigger the lever to move down with the elevator.
		gotomarker lift01down2 300 wait		// Move lift fast to first point
		gotomarker lift01down1 50 deccel wait	// Slow down lift and stop at second point

		stopsound				// Kill all currently playing sounds belonging to this entity only
		playsound sound\movers\elevators\elev1_end.wav

		trigger lift01_lever stop		// Mover lever back to center.
		trigger lift01b_button lwaitred		// Switch light waiting back to red.
		trigger lift01t_button out		// Enable top lift calling button panel.
		accum 3 set 0				// Lift stopped at bottom
	}

}

//------------------------------------------------------------------------------
//
// Lift 1 - Lever attached to lift
//
//------------------------------------------------------------------------------
lift01_lever
{
	trigger up
	{
		gotomarker lift01lever1up2 300 wait		// Move lift fast to first point
		gotomarker lift01lever1up1 50 deccel wait	// Slow down lift and stop at second point
	}

	trigger down
	{
		gotomarker lift01lever1down2 300 wait		// Move lift fast to first point
		gotomarker lift01lever1down1 50 deccel wait	// Slow down lift and stop at second point
	}
	trigger stop						// Moves lever to center
	{
		halt
		faceangles 0 0 0 150
		playsound sound\scenaric\rocket\elev_lever.wav
	}
	trigger forward						// Moves lever forward for up routine
	{
		faceangles 0 0 30 50		playsound sound\scenaric\rocket\elev_lever.wav

	}
	trigger backward					// Moves lever backwards for down routine
	{
		faceangles 0 0 -30 50		playsound sound\scenaric\rocket\elev_lever.wav

	}
}

//------------------------------------------------------------------------------
//
// lift01t/b_button_trig is the "target_script_trigger" entity infront of the switch entity.
// door01/02_left/right well they are the doors!
//
//------------------------------------------------------------------------------

lift01t_button_trig
{
	spawn
	{
		wait 500				// Wait for everything to settle
	}
	trigger main
	{
		trigger lift01 checkup			// Call lift if available
	}
}

lift01b_button_trig
{
	trigger main
	{
		trigger lift01 checkdown		// Call lift if available
	}
}

//------------------------------------------------------------------------------
//
// Lever at top of Lift 1
// The lift lights are made up from func_static entities connected to target_relay entities.
// Light set 1 - is on the button control panel. It tells the user if the panel is active or not.
// Light set 2 - is the call lift waiting light. It only works if the lift is stationary and not on the same floor as the button.
// The target_relay entities switch the func_static brushes on/off.
//
//------------------------------------------------------------------------------
lift01t_button
{
	spawn
	{
		accum 2 set 1				// Button Panel light (0=RED, 1=GREEN(def))
		accum 3 set 0				// Lift calling light (0=RED(def), 1=GREEN)

		wait 200				// Let everything settle
		trigger lift01t_button in		// Lift starts at top of lift shaft, disable top panel
	}
	trigger in
	{
		playsound sound/scenaric/general/misc_switch.wav
		gotomarker lift01t_buttonin 100 wait
		trigger lift01t_button bplightred	// Switch light to red, panel dead.
	}
	trigger out
	{
		playsound sound/scenaric/general/misc_switch.wav
		gotomarker lift01t_buttonout 100 wait
		trigger lift01t_button bplightgreen	// Switch light to green, panel alive
	}

//
// The following code for each light type is designed so that when you request a certain light
// type (eg. red/green) the correct colour is shown. It maybe a few more lines of script
// than necessary but it always works and that is more important.
//
	trigger bplightgreen
	{
		accum 2 abort_if_equal 1		// Green already ?
		alertentity lift01t_light_trig		// Switch button panel light to GREEN (default)
		accum 2 set 1
	}
	trigger bplightred
	{
		accum 2 abort_if_equal 0		// Red already ?
		alertentity lift01t_light_trig		// Switch button panel light to RED (default)
		accum 2 set 0
	}
	trigger lwaitgreen
	{
		accum 3 abort_if_equal 1		// Green already ?
		alertentity lift01t_call_light_trig	// Switch lift waiting light to GREEN
		accum 3 set 1
	}
	trigger lwaitred
	{
		accum 3 abort_if_equal 0		// Red already ?
		alertentity lift01t_call_light_trig	// Switch lift waiting light to RED (default)
		accum 3 set 0
	}
}

//------------------------------------------------------------------------------
//
// Lever at bottom of Lift 2
// The lift lights are made up from func_static entities connected to target_relay entities.
// Light set 1 - is on the button control panel. It tells the user if the panel is active or not.
// Light set 2 - is the call lift waiting light. It only works if the lift is stationary and not on the same floor as the button.
// The target_relay entities switch the func_static brushes on/off.
//
//------------------------------------------------------------------------------
lift01b_button
{
	spawn
	{
		accum 2 set 1				// Button Panel light (0=RED, 1=GREEN(def))
		accum 3 set 0				// Lift calling light (0=RED(def), 1=GREEN)
	}
	trigger in
	{
		playsound sound/scenaric/general/misc_switch.wav
		gotomarker lift01b_buttonin 100 wait
		trigger lift01b_button bplightred	// Switch light to red, panel dead.
	}
	trigger out
	{
		playsound sound/scenaric/general/misc_switch.wav
		gotomarker lift01b_buttonout 100 wait
		trigger lift01b_button bplightgreen	// Switch light to green, panel alive
	}

//
// The following code for each light type is designed so that when you request a certain light
// type (eg. red/green) the correct colour is shown. It maybe a few more lines of script
// than necessary but it always works and that is more important.
//
	trigger bplightgreen
	{
		accum 2 abort_if_equal 1		// Green already ?
		alertentity lift01b_light_trig		// Switch button panel light to GREEN (default)
		accum 2 set 1
	}
	trigger bplightred
	{
		accum 2 abort_if_equal 0		// Red already ?
		alertentity lift01b_light_trig		// Switch button panel light to RED (default)
		accum 2 set 0
	}
	trigger lwaitgreen
	{
		accum 3 abort_if_equal 1		// Green already ?
		alertentity lift01b_call_light_trig	// Switch lift waiting light to GREEN
		accum 3 set 1
	}
	trigger lwaitred
	{
		accum 3 abort_if_equal 0		// Red already ?
		alertentity lift01b_call_light_trig	// Switch lift waiting light to RED (default)
		accum 3 set 0
	}
}

//------------------------------------------------------------------------------`
//
// Upper Doors outside of Lift 1 taken out
//
//------------------------------------------------------------------------------

// NEUTRAL COMMAND POST ================================================
// FROM Goldrush Thx SD!!! prefab by seven 2003 

allied_compost_built
{
	spawn
	{
		wait 400
		trigger allied_compost_built setup

		constructible_class 2
	}

	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
	}

	buildstart final
	{
		setstate allied_compost_built_model underconstruction
		setstate neutral_compost_closed_clip invisible
		setstate neutral_compost_closed_model invisible
	}

	built final
	{
		setstate allied_compost_built_model default
		setstate neutral_compost_closed_clip invisible
		setstate neutral_compost_closed_model invisible

		trigger allied_compost_built_model enable_allied_features

		enablespeaker allies_compost_sound
	}

	decayed final
	{
		setstate allied_compost_built_model invisible
		setstate neutral_compost_closed_clip default
		setstate neutral_compost_closed_model default
	}

	death
	{
		setstate allied_compost_built_model invisible
		setstate neutral_compost_closed_clip default
		setstate neutral_compost_closed_model default

		trigger allied_compost_built_model disable_allied_features

		disablespeaker allies_compost_sound
	}
}

allied_compost_built_model
{
	spawn
	{
		wait 400
		setstate allied_compost_built_model invisible
	}

	trigger enable_allied_features
	{
		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

		wm_announce	"Allied Command Post constructed. Charge speed increased!"

		// *----------------------------------- 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 6 0 2
		wm_objective_status 6 1 1
	}

	trigger disable_allied_features
	{
		setchargetimefactor 1 soldier 1
		setchargetimefactor 1 lieutenant 1
		setchargetimefactor 1 medic 1
		setchargetimefactor 1 engineer 1
		setchargetimefactor 1 covertops 1
		sethqstatus 1 0

		wm_announce	"Axis team has destroyed the Allied Command Post!"

		// *----------------------------------- vo ------------------------------------------*
		wm_addteamvoiceannounce 0 "axis_hq_compost_construct"

		wm_addteamvoiceannounce 1 "allies_hq_compost_construct"

		wm_teamvoiceannounce 0 "axis_hq_compost_construct"

		wm_teamvoiceannounce 1 "allies_hq_compost_damaged"
		// *---------------------------------------------------------------------------------*

		wm_objective_status 6 0 0
		wm_objective_status 6 1 0
	}
}

axis_compost_built
{
	spawn
	{
		wait 400
		trigger axis_compost_built setup

		constructible_class 2
	}

	trigger setup
	{
		setchargetimefactor 0 soldier 1
		setchargetimefactor 0 lieutenant 1
		setchargetimefactor 0 medic 1
		setchargetimefactor 0 engineer 1
		setchargetimefactor 0 covertops 1
		sethqstatus 0 0
	}

	buildstart final
	{
		setstate axis_compost_built_model underconstruction
		setstate neutral_compost_closed_clip invisible
		setstate neutral_compost_closed_model invisible
	}

	built final
	{
		setstate axis_compost_built_model default
		setstate neutral_compost_closed_clip invisible
		setstate neutral_compost_closed_model invisible

		trigger axis_compost_built_model enable_axis_features

		enablespeaker axis_compost_sound
	}

	decayed final
	{
		setstate axis_compost_built_model invisible
		setstate neutral_compost_closed_clip default
		setstate neutral_compost_closed_model default
	}

	death
	{
		setstate axis_compost_built_model invisible
		setstate neutral_compost_closed_clip default
		setstate neutral_compost_closed_model default

		trigger axis_compost_built_model disable_axis_features

		disablespeaker axis_compost_sound
	}
}

axis_compost_built_model
{
	spawn
	{
		wait 400
		setstate axis_compost_built_model invisible
	}

	trigger enable_axis_features
	{
		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

		wm_announce	"Axis Command Post constructed. Charge speed increased!"

		// *----------------------------------- 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
		wm_objective_status 6 1 2
	}

	trigger disable_axis_features
	{
		setchargetimefactor 0 soldier 1
		setchargetimefactor 0 lieutenant 1
		setchargetimefactor 0 medic 1
		setchargetimefactor 0 engineer 1
		setchargetimefactor 0 covertops 1
		sethqstatus 0 0

		wm_announce	"Allied team has destroyed the Axis Command Post!"

		// *----------------------------------- vo ------------------------------------------*
		wm_addteamvoiceannounce 0 "axis_hq_compost_construct"

		wm_addteamvoiceannounce 1 "allies_hq_compost_construct"

		wm_teamvoiceannounce 0 "axis_hq_compost_damaged"

		wm_teamvoiceannounce 1 "allies_hq_compost_construct"
		// *---------------------------------------------------------------------------------*

		wm_objective_status 6 0 0
		wm_objective_status 6 1 0
	}
}


vent1
{
    spawn
    {
        wait 200
        constructible_class 2
    }

    death
    {
        wm_announce "Allies have destroyed the elevator shaft vent!"
        setstate vent1_toi invisible
    }
}

vent2
{
    spawn
    {
        wait 200
        constructible_class 2
    }

    death
    {
        wm_announce "Allies have destroyed the vault storage vent!"
        setstate vent2_toi invisible
    }
}

vent3
{
    spawn
    {
        wait 200
        constructible_class 2
    }

    death
    {
        wm_announce "Allies have destroyed the 2nd vault storage vent!"
        setstate vent3_toi invisible
    }
}

//Breakable windows

win1
{
    spawn
    {
        wait 200
        constructible_class 1
    }

    death
    {
    }
}

win2
{
    spawn
    {
        wait 200
        constructible_class 1
    }

    death
    {
    }
}

win3
{
    spawn
    {
        wait 200
        constructible_class 1
    }

    death
    {
    }
}

win4
{
    spawn
    {
        wait 200
        constructible_class 1
    }

    death
    {
    }
}

win5
{
    spawn
    {
        wait 200
        constructible_class 1
    }

    death
    {
    }
}

win6
{
    spawn
    {
        wait 200
        constructible_class 1
    }

    death
    {
    }
}

win7
{
    spawn
    {
        wait 200
        constructible_class 1
    }

    death
    {
    }
}

win8
{
    spawn
    {
        wait 200
        constructible_class 1
    }

    death
    {
    }
}

