// GLOBAL ACCUMS
// =============
//
// GLOBALACCUM 0:	TANK BARRIER	(0=DESTROYED, 1=BUILT)
// GLOBALACCUM 1:
//		BIT 0 = MAIN ENTRANCE DESTROYED
//		BIT 1 = SIDE_ENTRANCE_DESTROYED
// GLOBALACCUM 2:	CP ALLIED		(0=DESTROYED, 1=BUILT)
// GLOBALACCUM 3:	GENERATOR		(0=DESTROYED, 1=BUILT)
// GLOBALACCUM 4:	FORWARD BUNKER	(0=AXIS, 1=ALLIED)
// GLOBALACCUM 5:	SECURE FORWARD BUNKER? (0=NO, 1=YES)

game_manager
{
	spawn
	{
		wait 200
		wm_number_of_objectives 5
		wm_axis_respawntime 10
		wm_allied_respawntime 15
		wm_set_defending_team 0
		wm_set_round_timelimit 20
		wm_setwinner 0
		
		// Objectives
		// 1: Transmitter
		// 2: Generator
		// 3: CP
		// 4: Forward Bunker
		// 5: Side Entrance 
		
		setautospawn "Forward Bunker" 0
		setautospawn "Allied Spawn" 1
		
		wm_set_main_objective 1 0
		wm_set_main_objective 1 1

		wait 2000
		
		// *----------------------------------- vo ------------------------------------------*
		wm_teamvoiceannounce 0 "axis_hq_tank_stop"
		wm_teamvoiceannounce 0 "radar_axis_entrances_defend"
		wm_teamvoiceannounce 0 "goldrush_axis_tankbar_construct"
		wm_teamvoiceannounce 0 "axis_hq_compost_construct"
		
		wm_addteamvoiceannounce 0 "axis_hq_tank_stop"
		wm_addteamvoiceannounce 0 "radar_axis_entrances_defend"
		wm_addteamvoiceannounce 0 "goldrush_axis_tankbar_construct"
		wm_addteamvoiceannounce 0 "axis_hq_compost_construct"
		
		wm_teamvoiceannounce 1 "allies_hq_tank_escort"
		wm_teamvoiceannounce 1 "radar_allies_entrances_destroy"
		wm_teamvoiceannounce 1 "fueldump_allies_bridge_construct"
		
		wm_addteamvoiceannounce 1 "allies_hq_tank_escort"
		wm_addteamvoiceannounce 1 "radar_allies_entrances_destroy"
		wm_addteamvoiceannounce 1 "fueldump_allies_bridge_construct"
		// *---------------------------------------------------------------------------------*
		
		//====OPTIONAL SETTINGS==============================================================
		wait 1000
		// Toggle the line of the respective setting you want to change by (un-)commenting.
		//
		// setdamagable tank 0			// Make tank invulnerable
		globalaccum 5 set 1				// Secure flag while Allies hold both CP and flag
		//===================================================================================
	}
	
	trigger allies_win
	{
		wm_setwinner 1
		wm_announce "^5Allied team has destroyed the transmitter"		
		wm_endround
	}
}

// === TANK BARRIER ===
barrier_models
{
	trigger remove
	{
		setstate barrier_models invisible
		remove
	}
}

barrier_materials
{
	trigger remove
	{
		setstate barrier_materials invisible
		remove
	}
}

barrier_materials_flag
{
	trigger remove
	{
		setstate barrier_materials_flag invisible
		remove
	}
}

barrier_hurt
{
	trigger remove
	{
		setstate barrier_hurt invisible
		remove
	}
}

barrier_toi
{
	trigger remove
	{
		setstate barrier_toi invisible
		remove
	}
}

barrier
{ 
	spawn 
	{ 
		wait 200
		constructible_class 3	// DYNOMITE
		
		setstate barrier_models invisible
		setstate barrier invisible
		setstate barrier_hurt invisible
	}
	
	buildstart
	{
		setstate barrier_models underconstruction
	}
	
	decayed
	{
		setstate barrier_models invisible
	}
	
	built
	{
		setstate barrier_models default
		setstate barrier_hurt default
		setstate barrier default
		setstate barrier_materials invisible
		setstate barrier_materials_flag invisible
		// setstate barrier_toi invisible
		
		globalaccum 0 set 1		// TANK BARRIER IS BUILT

		// *----------------------------------- vo ------------------------------------------*
		wm_announce "^1Axis team has built the Barrier!"
		
		wm_removeteamvoiceannounce 0 "goldrush_axis_tankbar_construct"
		wm_addteamvoiceannounce 1 "goldrush_allies_tankbar_destroy"

		wm_teamvoiceannounce 0 "goldrush_axis_tankbar_constructed"
		wm_teamvoiceannounce 1 "goldrush_allies_tankbar_destroy"
		// *---------------------------------------------------------------------------------*
	} 

	death 
	{ 
		setstate barrier_models invisible
		setstate barrier_hurt invisible
		setstate barrier invisible
		setstate barrier_materials default
		setstate barrier_materials_flag default
		// setstate barrier_toi default
		
		globalaccum 0 set 0		// TANK BARRIER IS DESTROYED

		// *----------------------------------- vo ------------------------------------------*
		wm_announce "^5Allied team has destroyed the Barrier!"
		
		wm_addteamvoiceannounce 0 "goldrush_axis_tankbar_construct"
		wm_removeteamvoiceannounce 1 "goldrush_allies_tankbar_destroy"

		wm_teamvoiceannounce 0 "goldrush_axis_tankbar_destroyed"
		wm_teamvoiceannounce 0 "goldrush_axis_tankbar_construct"
		wm_teamvoiceannounce 1 "goldrush_allies_tankbar_destroyed"
		// *---------------------------------------------------------------------------------*
	}

	trigger remove
	{
		trigger barrier_models remove
		trigger barrier_materials remove
		trigger barrier_materials_flag remove
		trigger barrier_toi remove
		trigger barrier_hurt remove
		
		// *----------------------------------- vo ------------------------------------------*
		wm_removeteamvoiceannounce 0 "goldrush_axis_tankbar_construct"
		// *---------------------------------------------------------------------------------*
		
		remove
	}
}

// === TANK ===
// ============================================================================
// ACCUM 1: TANK
//  - bit 0: script lockout			(0=not in lockout, 1=in lockout)
//  - bit 1: unused
//  - bit 2: spline status 			(0=not moving, 1=moving)
//  - bit 3: stuck check			(0=not stuck, 1=stuck)
//  - bit 4: blank
//  - bit 5: track state			(0=stopped, 1=forward)
//  - bit 6: stopcheck temp var
//  - bit 7: death status 			(0=alive, 1=dead)
//  - bit 8: players in trigger?	(0=players, 1=no players)
//  - bit 9: visible state			(0=alive, 1=dead)
// ACCUM 2: TANK STUCK MESSAGE		(0=not announced, 1=already announced)
// ACCUM 3: SPLN POSITION
// ACCUM 4: STOP COUNTER

tank
{
	spawn
	{
		wait 50

		// Reset the tank into correct position
		followspline 0 spln_0 10000 wait length 32
		followspline 1 spln_0 10000 wait length 32

		stopsound
		playsound sound/vehicles/tank/tank_idle.wav looping volume 512
	
		remapshader models/mapobjects/etl_tanks/ht_whl 			models/mapobjects/etl_tanks/ht_whl_still
		remapshader models/mapobjects/etl_tanks/ht_tyre 		models/mapobjects/etl_tanks/ht_tyre_still
		remapshader models/mapobjects/etl_tanks/ht_b_whl 		models/mapobjects/etl_tanks/ht_b_whl_still
		remapshader models/mapobjects/etl_tanks/ht_b_whl_trim 	models/mapobjects/etl_tanks/ht_b_whl_trim_still
		remapshader models/mapobjects/etl_tanks/ht_track_two	models/mapobjects/etl_tanks/ht_track_two_still
		remapshaderflush
	}

	trigger tracks_forward
	{
		accum 1 abort_if_bitset 5	// ABORT_IF_TRACK_STATE_FORWARD
		accum 1 bitset 5			// TRACK_STATE_FORWARD

		remapshader models/mapobjects/etl_tanks/ht_whl 			models/mapobjects/etl_tanks/ht_whl
		remapshader models/mapobjects/etl_tanks/ht_tyre 		models/mapobjects/etl_tanks/ht_tyre
		remapshader models/mapobjects/etl_tanks/ht_b_whl 		models/mapobjects/etl_tanks/ht_b_whl
		remapshader models/mapobjects/etl_tanks/ht_b_whl_trim 	models/mapobjects/etl_tanks/ht_b_whl_trim
		remapshader models/mapobjects/etl_tanks/ht_track_two	models/mapobjects/etl_tanks/ht_track_two
		remapshaderflush
	}

	trigger tracks_stop
	{
		accum 1 abort_if_not_bitset 5	// ABORT_IF_TRACK_STATE_STOPPED
		accum 1 bitreset 5				// TRACK_STATE_STOPPED

		remapshader models/mapobjects/etl_tanks/ht_whl 			models/mapobjects/etl_tanks/ht_whl_still
		remapshader models/mapobjects/etl_tanks/ht_tyre 		models/mapobjects/etl_tanks/ht_tyre_still
		remapshader models/mapobjects/etl_tanks/ht_b_whl 		models/mapobjects/etl_tanks/ht_b_whl_still
		remapshader models/mapobjects/etl_tanks/ht_b_whl_trim 	models/mapobjects/etl_tanks/ht_b_whl_trim_still
		remapshader models/mapobjects/etl_tanks/ht_track_two	models/mapobjects/etl_tanks/ht_track_two_still
		remapshaderflush
	}

	trigger run_continue
	{
		accum 3 inc 1
		trigger self deathcheck
		trigger self stopcheck
		trigger self move
	}

	trigger move_check
	{
		trigger self stuck_check
		accum 1 abort_if_bitset 3	//ABORT_IF_STUCK
		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
	}

	trigger run_0
	{
		accum 1 bitset 2
		followspline 0 spln_0 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_1
	{
		accum 1 bitset 2
		followspline 0 spln_1 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_2
	{
		accum 1 bitset 2
		followspline 0 spln_2 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_3
	{
		accum 1 bitset 2
		followspline 0 spln_3 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}

	trigger run_4
	{
		accum 1 bitset 2
		followspline 0 spln_4 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}
	
	trigger run_5
	{
		accum 1 bitset 2
		followspline 0 spln_5 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}
	
	trigger run_6
	{
		accum 1 bitset 2
		followspline 0 spln_6 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}
	
	trigger run_7
	{
		accum 1 bitset 2
		followspline 0 spln_7 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}
	
	trigger run_8
	{
		accum 1 bitset 2
		followspline 0 spln_8 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}
	
	trigger run_9
	{
		accum 1 bitset 2
		followspline 0 spln_9 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}
	
	trigger run_10
	{
		accum 1 bitset 2
		followspline 0 spln_10 50 wait length 32
		accum 1 bitreset 2

		trigger barrier remove	// REMOVE BARRIER TO FREE UP ENTITY SLOTS
		
		trigger self run_continue
	}
	
	trigger run_11
	{
		accum 1 bitset 2
		followspline 0 spln_11 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}
	
	trigger run_12
	{
		accum 1 bitset 2
		followspline 0 spln_12 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}
	
	trigger run_13
	{
		accum 1 bitset 2
		followspline 0 spln_13 50 wait length 32
		accum 1 bitreset 2

		trigger self run_continue
	}
	
	trigger run_14
	{
		accum 1 bitset 2
		followspline 0 spln_14 50 wait length 32
		accum 1 bitreset 2
		
		accum 1 bitset 0			// ENTER_SCRIPT_LOCKOUT
		
		trigger plane start
		
		trigger self tracks_stop
		
		stopsound
		playsound sound/vehicles/tank/tank_revdown.wav volume 196
		startanimation 6 10 15 nolerp norandom
		wait 666
		stopsound
		playsound sound/vehicles/tank/tank_idle.wav looping volume 512
		startanimation 0 1 15 nolerp norandom
		
		startanimation 0 5 10 nolerp norandom noloop
		wait 900
		setstate tank_smoke default
		alertentity tank_shoot
		wait 333
		setstate tank_smoke invisible
		startanimation 0 1 15 nolerp norandom
		
		trigger main_entrance destroy

		wait 4500
		stopsound
		playsound sound/vehicles/tank/tank_revup.wav volume 196
		startanimation 15 10 15 nolerp norandom noloop	// starting
		wait 500
		playsound sound/vehicles/tank/tank_move.wav looping volume 512
		startanimation 25 30 15 nolerp norandom			// moving

		trigger self tracks_forward
		accum 1 bitset 2
		followspline 0 spln_15 50 wait length 32
		accum 1 bitreset 2
		
		trigger self tracks_stop
		
		stopsound
		playsound sound/vehicles/tank/tank_revdown.wav volume 196
		startanimation 6 10 15 nolerp norandom	// stopping
		wait 666
		stopsound
		playsound sound/vehicles/tank/tank_idle.wav looping volume 512
		startanimation 0 1 15 nolerp norandom	// stopped
		
		wait 100
		
		wm_objective_status 2 0 2			
		wm_objective_status 2 1 1
				
		accum 3 set -1
		
		accum 1 bitreset 0			// LEAVE_SCRIPT_LOCKOUT	
		
		wait 500
		changemodel models/mapobjects/etl_tanks/ht_tracks_stl.md3
		wait 500
		trigger tank_trigger remove
		trigger tank_disabler remove
		trigger tank_disabler_timer remove
		trigger tank_toi remove
		trigger tank_construct remove
		accum 1 bitset 3	// TANK STUCK
		
		// *----------------------------------- vo ------------------------------------------*
		wm_removeteamvoiceannounce 0 "axis_hq_tank_stop"
		wm_removeteamvoiceannounce 1 "allies_hq_tank_escort"
		// *---------------------------------------------------------------------------------*
	}

	trigger stuck_check
	{
		accum 1 bitreset 3				// NOT_STUCK
		accum 3 abort_if_not_equal 10	// SPLINE_POSITION
		globalaccum 0 abort_if_equal 0	// ABORT_IF_BARRIER_DESTROYED
		accum 1 bitset 3				// TANK STUCK
		
		accum 2 abort_if_equal 1
		accum 2 set 1
		// *----------------------------------- vo ------------------------------------------*
		wm_teamvoiceannounce 1 "goldrush_allies_tankbar_destroy"
		// *---------------------------------------------------------------------------------*
	}
	
	trigger stopcheck_setup
	{
		accum 1 bitset 6				// STOP_IF_STUCK_OR_NO_PLAYER_PUSHING

		accum 1 abort_if_bitset 8		// ABORT_IF_NO_PLAYERS_IN_TRIGGER

		trigger self stuck_check		// CHECK_IF_STUCK
		accum 1 abort_if_bitset 3		// ABORT_IF_STUCK

		accum 1 bitreset 6				// FREE TO MOVE
	}

	trigger stopcheck
	{
		trigger self stopcheck_setup
		accum 1 abort_if_not_bitset 6	// ABORT_IF_NO_STOP_REQUIRED

		// Any just stopped moving stuff goes here
		trigger self tracks_stop
		
		stopsound
		playsound sound/vehicles/tank/tank_revdown.wav volume 196
		startanimation 6 10 15 nolerp norandom	// stopping
		wait 666
		stopsound
		playsound sound/vehicles/tank/tank_idle.wav looping volume 512
		startanimation 0 1 15 nolerp norandom	// stopped

		resetscript
	}

	trigger tank_enable
	{
		trigger self stuck_check
		accum 1 abort_if_bitset 3 	// ABORT_IF_STUCK

		accum 4 set 0				// RESET STOP COUNTER
		accum 1 bitreset 8			// RESET STOP CHECK: PLAYER_IN_TRIGGER

		accum 1 abort_if_bitset 2 	// ABORT_IF_MOVING
		accum 1 abort_if_bitset 0	// ABORT_IF_IN_SCRIPT_LOCKOUT

		accum 1 abort_if_bitset 7 	// ABORT_IF_DEAD

		// Any just started moving stuff goes here
		accum 1 bitset 0			// ENTER_SCRIPT_LOCKOUT

		wait 666
		stopsound
		playsound sound/vehicles/tank/tank_revup.wav volume 196
		startanimation 15 10 15 nolerp norandom noloop	// starting
		wait 500
		stopsound
		playsound sound/vehicles/tank/tank_move.wav looping volume 512
		startanimation 25 30 15 nolerp norandom			// moving

		trigger self tracks_forward
		accum 1 bitreset 0			// LEAVE_SCRIPT_LOCKOUT
		trigger self move
	}

	trigger tank_disable
	{
		accum 4 inc 1					// INCREASE STOP COUNTER
		accum 4 abort_if_less_than 4

		accum 1 bitset 8				// NO_PLAYERS_IN_TRIGGER
		trigger self deathcheck
	}

	rebirth
	{
		accum 1 bitreset 9	// VISIBLY ALIVE
		accum 1 bitreset 7	// ALIVE AGAIN
		
		// *----------------------------------- vo ------------------------------------------*
		wm_announce "^5The Tank has been repaired!"
		
		wm_teamvoiceannounce 1 "allies_hq_tank_repaired"
		wm_teamvoiceannounce 0 "axis_hq_tank_repaired_allies"
		// *---------------------------------------------------------------------------------*

		accum 1 bitset 0	// ENTER_SCRIPT_LOCKOUT		
		changemodel models/mapobjects/etl_tanks/ht_tracks_ani.md3
		setstate tank_smoke invisible
		stopsound
		playsound sound/vehicles/tank/tank_start.wav volume 196
		wait 500
		playsound sound/vehicles/tank/tank_idle.wav looping volume 512
		accum 1 bitreset 0	// LEAVE_SCRIPT_LOCKOUT
	}

	death
	{
		accum 1 bitset 7

		//accum 3 abort_if_not_equal -1	// ABORT_IF_ESCORT_FINISHED
		trigger self deathcheck		
	}		

	trigger deathcheck
	{
		accum 1 abort_if_not_bitset 7	// ABORT_IF_ALREADY_DEAD
		accum 1 abort_if_bitset 9		// ABORT_IF_ALREADY_VISIBLY_DEAD
		accum 1 abort_if_bitset 2		// ABORT_IF_MOVING
		accum 1 abort_if_bitset 0		// ABORT_IF_IN_SCRIPT_LOCKOUT

		accum 1 bitset 9				// VISUALLY_DEAD

		// *----------------------------------- vo ------------------------------------------*
		wm_announce "^1The Tank has been damaged!"
		
		wm_teamvoiceannounce 1 "allies_hq_tank_damaged_axis"
		wm_teamvoiceannounce 0 "axis_hq_tank_damaged"
		// *---------------------------------------------------------------------------------*
		
		changemodel models/mapobjects/etl_tanks/ht_tracks_stl.md3
		
		setstate tank_smoke default

		kill tank_construct
		
		stopsound
		playsound sound/vehicles/tank/tank_stop.wav volume 256
		
		trigger self tracks_stop
		
		accum 1 bitset 0	// ENTER_SCRIPT_LOCKOUT
		startanimation 6 10 15 nolerp norandom
		wait 666
		startanimation 0 1 15 nolerp norandom
		accum 1 bitreset 0	// LEAVE_SCRIPT_LOCKOUT
		
		resetscript
	}
}

tank_trigger
{
	spawn
	{
		wait 500
		attachtotag tank tag_tank
	}
	
	activate
	{
		trigger tank tank_enable
	}
	
	trigger remove
	{
		setstate tank_trigger invisible
		remove
	}
}

tank_toi
{
	spawn
	{
		wait 500
		attachtotag tank tag_tank
	}
	
	trigger remove
	{
		setstate tank_toi invisible
		remove
	}
}

tank_construct
{
	spawn
	{
		wait 1000
		constructible_class 2
		constructible_health 1200
		constructible_constructxpbonus 10
		constructible_destructxpbonus 10
	}
	
	built final
	{
		globalaccum 1 abort_if_bitset 0	//ABORT IF FINISHED
		alertentity tank
	}
	
	trigger remove
	{
		setstate tank_construct invisible
		remove
	}
	
}

tank_disabler
{
	trigger run
	{
		trigger tank tank_disable 
	}
	
	trigger remove
	{
		setstate tank_disabler invisible
		remove
	}
}

tank_disabler_timer
{
	trigger remove
	{
		setstate tank_disabler_timer invisible
		remove
	}
}

tank_smoke
{
	spawn
	{
		wait 300
		attachtotag tank tag_rsmoke
		setstate tank_smoke invisible
	}
	
	trigger remove
	{
		remove
	}
}

ht_shell		
{
	spawn
	{
		wait 500
		attachtotag tank tag_tank
	}
}

ht_turret					
{
	spawn
	{
		wait 500
		attachtotag tank tag_turret
	}
}

ht_whl_r
{
	spawn
	{
		wait 500
		attachtotag tank tag_wheelfr
	}
}

ht_whl_l
{
	spawn
	{
		wait 500
		attachtotag tank tag_wheelfl
	}
}

// === AIRPLANE ===
plane
{
	spawn
	{
		wait 50
		// Reset airplane into correct position
		followspline 0 plane_spln0 10000 wait length 32
		followspline 1 plane_spln0 10000 wait length 32
	}

	trigger start
	{
		playsound sound/world/alarm_02.wav looping volume 512
		
		followspline 0 plane_spln0 2000 wait length -64
		followspline 0 plane_spln1 2000 wait length -64
		followspline 0 plane_spln2 2000 wait length -64
		trigger world_clip explosion
		followspline 0 plane_spln3 2000 wait length -64
		followspline 0 plane_spln4 2000 wait length -64
		followspline 0 plane_spln5 2000 wait length -64
		followspline 0 plane_spln6 2000 wait length -64
		
		setstate plane invisible
		remove
	}
}

tank_explode1
{
	trigger remove
	{
		remove
	}
	
}

tank_explode2
{
	trigger remove
	{
		remove
	}
	
}

tank_explode3
{
	trigger remove
	{
		remove
	}
	
}

// === WORLD CLIP === (acts as a relay for various things)
world_clip
{
	trigger command_post
	{
		globalaccum 2 abort_if_equal 1 	// CP ALREADY ALLIED
		// *----------------------------------- vo ------------------------------------------*
		wm_teamvoiceannounce 1 "allies_hq_compost_construct"
		wm_addteamvoiceannounce 1 "allies_hq_compost_construct"
		// *---------------------------------------------------------------------------------*	
	}
	
	trigger repair_generator
	{
		globalaccum 3 abort_if_equal 1	// ABORT_IF_ALREADY_BUILT
		wm_teamvoiceannounce 1 "bergen_allies_generator_repair"
		wm_addteamvoiceannounce 1 "bergen_allies_generator_repair"
	}
	
	trigger explosion
	{
		setdamagable tank 1					// Make tank vulnerable
		alertentity rocket
		wait 500
		setstate tank_smoke default
		stopsound
		alertentity tank_explode1
		wait 360
		alertentity tank_explode2
		wait 360
		alertentity tank_explode3
		
		trigger tank_explode1 remove
		trigger tank_explode2 remove
		trigger tank_explode3 remove
	}
}

lighthouse_light
{
	trigger secure_flag
	{
		globalaccum 5 abort_if_not_equal 1	// ABORT IF FLAG SHALL NEVER BE SECURED
		globalaccum 1 abort_if_not_bitset 0	// ABORT_IF_MAIN_ENTRANCE_ACTIVE
		globalaccum 4 abort_if_not_equal 1	// ABORT_IF_FLAG_ISN'T_ALLIED
		wm_announce "^5Allies holding the Forward Bunker to secure in 30s!"
		wait 10000
		globalaccum 4 abort_if_not_equal 1	// ABORT_IF_FLAG_ISN'T_ALLIED
		wm_announce "^5Allies holding the Forward Bunker to secure in 20s!"
		wait 10000
		globalaccum 4 abort_if_not_equal 1	// ABORT_IF_FLAG_ISN'T_ALLIED
		wm_announce "^5Allies holding the Forward Bunker to secure in 10s!"
		wait 10000
		globalaccum 4 abort_if_not_equal 1	// ABORT_IF_FLAG_ISN'T_ALLIED
		setstate forward_bunker invisible
		disablespeaker forward_spawn_sound
		wm_announce "^5The Allies have secured the Forward Bunker!"
	}
}
		
// === ALLIED MG ===
allied_mg
{
	spawn 
	{ 
		wait 200
		constructible_class 2	// SATCHEL
		
		setstate allied_mg_models invisible
		setstate allied_mg42 invisible
	}
	
	buildstart
	{
		setstate allied_mg_models underconstruction
		setstate allied_mg42 underconstruction
	}
	
	decayed
	{
		setstate allied_mg_models invisible
		setstate allied_mg42 invisible
	}
	
	built
	{
		setstate allied_mg_models default
		setstate allied_mg42 default
		setstate allied_mg_materials invisible
		setstate allied_mg_materials_flag invisible
	} 

	death 
	{ 
		setstate allied_mg_models invisible
		setstate allied_mg42 invisible
		setstate allied_mg_materials default
		setstate allied_mg_materials_flag default
	}
}

// === AXIS MG ===
axis_mg
{
	spawn 
	{ 
		wait 200
		constructible_class 2	// SATCHEL
		
		setstate axis_mg_models invisible
		setstate axis_mg42 invisible
	}
	
	buildstart
	{
		setstate axis_mg_models underconstruction
		setstate axis_mg42 underconstruction
	}
	
	decayed
	{
		setstate axis_mg_models invisible
		setstate axis_mg42 invisible
	}
	
	built
	{
		setstate axis_mg_models default
		setstate axis_mg42 default
		setstate axis_mg_materials invisible
		setstate axis_mg_materials_flag invisible
	} 

	death 
	{ 
		setstate axis_mg_models invisible
		setstate axis_mg42 invisible
		setstate axis_mg_materials default
		setstate axis_mg_materials_flag default
	}
}

// === FOOTBRIDGE ===
footbridge
{
	spawn 
	{ 
		wait 200
		constructible_class 2	// SATCHEL
		
		setstate footbridge invisible
		setstate footbridge_static invisible
	}
	
	buildstart
	{
		setstate footbridge underconstruction
		setstate footbridge_static underconstruction
	}
	
	decayed
	{
		setstate footbridge invisible
		setstate footbridge_static invisible
	}
	
	built
	{
		setstate footbridge default
		setstate footbridge_static default
		setstate footbridge_materials invisible
		setstate footbridge_materials_flag invisible
		
		// *----------------------------------- vo ------------------------------------------*
		wm_removeteamvoiceannounce 1 "fueldump_allies_bridge_construct"
		
		globalaccum 1 abort_if_bitset 1		// ABORT IF SIDE ENTRANCE IS DESTROYED -> REDUCE SPAM
		
		wm_announce   "^5The Allied team has constructed the Foot Bridge!" 
		
		wm_teamvoiceannounce 0 "fueldump_axis_bridge_destroy"
		wm_teamvoiceannounce 1 "fueldump_allies_bridge_constructed"
		
		wm_addteamvoiceannounce 0 "fueldump_axis_bridge_destroy"		
		// *---------------------------------------------------------------------------------*	
	} 

	death 
	{ 
		setstate footbridge invisible
		setstate footbridge_static invisible
		setstate footbridge_materials default
		setstate footbridge_materials_flag default
		
		// *----------------------------------- vo ------------------------------------------*
		wm_removeteamvoiceannounce 0 "fueldump_axis_bridge_destroy"
		
		globalaccum 1 abort_if_bitset 1		// ABORT IF SIDE ENTRANCE IS DESTROYED -> REDUCE SPAM
		
		wm_announce   "^1The Axis team has destroyed the Foot Bridge!" 
		
		wm_teamvoiceannounce 0 "fueldump_axis_bridge_damaged"
		wm_teamvoiceannounce 1 "fueldump_allies_bridge_damaged"
	
		wm_addteamvoiceannounce 1 "fueldump_allies_bridge_construct"
		// *---------------------------------------------------------------------------------*
	}
}

// === SIDE ENTRANCE ===
side_entrance
{
	spawn 
	{ 
		wait 320
		constructible_class 3	// DYNAMITE
	} 

	death 
	{ 
		setstate side_entrance_door invisible
		trigger side_entrance_door remove
		
		wm_objective_status 5 0 2
		wm_objective_status 5 1 1
		
		// *----------------------------------- vo ------------------------------------------*
		wm_announce   "^5The Allied team has destroyed the Side Entrance!" 
		
		wm_removeteamvoiceannounce 1 "radar_allies_entrances_destroy"
		wm_removeteamvoiceannounce 0 "radar_axis_entrances_defend"
		wm_removeteamvoiceannounce 1 "radar_allies_entrance2_destroy"
		wm_removeteamvoiceannounce 0 "radar_axis_entrance2_defend"
		wm_removeteamvoiceannounce 1 "fueldump_allies_bridge_construct"
		
		wm_teamvoiceannounce 1 "radar_allies_entrance2_destroyed"
		wm_teamvoiceannounce 0 "radar_axis_entrance2_destroyed"		
		// *---------------------------------------------------------------------------------*
		
		globalaccum 1 bitset 1				// SIDE ENTRANCE DESTROYED
		
		trigger world_clip repair_generator
		wait 200
		trigger world_clip command_post
	
		globalaccum 1 abort_if_bitset 0		// ABORT IF MAIN ENTRANCE DESTROYED
		
		wm_addteamvoiceannounce 1 "radar_allies_entrance1_destroy"
		wm_addteamvoiceannounce 0 "radar_axis_entrance1_defend"
		
		remove
	}
}

side_entrance_door
{
	trigger remove
	{
		remove
	}
}

// === MAIN ENTRANCE ===
main_entrance
{
	spawn 
	{ 
		wait 200
		setstate main_entrance_debris invisible
	} 

	trigger destroy 
	{ 
		// *----------------------------------- vo ------------------------------------------*
		wm_announce   "^5The Allied team has destroyed the Main Entrance!" 
		
		wm_removeteamvoiceannounce 1 "radar_allies_entrances_destroy"
		wm_removeteamvoiceannounce 0 "radar_axis_entrances_defend"
		wm_removeteamvoiceannounce 1 "radar_allies_entrance1_destroy"
		wm_removeteamvoiceannounce 0 "radar_axis_entrance1_defend"
		wm_removeteamvoiceannounce 1 "allies_hq_tank_escort"
		wm_removeteamvoiceannounce 0 "axis_hq_tank_stop"
		
		wm_teamvoiceannounce 1 "radar_allies_entrance1_destroyed"
		wm_teamvoiceannounce 1 "radar_allies_bunker_capture"
		wm_teamvoiceannounce 0 "radar_axis_entrance1_destroyed"
		wm_teamvoiceannounce 0 "radar_axis_bunker_stop"	

		wm_addteamvoiceannounce 1 "radar_allies_bunker_capture"
		wm_addteamvoiceannounce 0 "radar_axis_bunker_stop"
		// *---------------------------------------------------------------------------------*
		
		trigger world_clip repair_generator
		
		setstate main_entrance invisible
		setstate main_entrance_debris default
		alertentity main_entrance_explode
		
		wait 200
		trigger world_clip command_post
		trigger forward_bunker wakeup
		
		globalaccum 1 bitset 0				// MAIN ENTRANCE DESTROYED
		globalaccum 1 abort_if_bitset 1		// ABORT IF SIDE ENTRANCE DESTROYED
		
		wm_addteamvoiceannounce 1 "radar_allies_entrance2_destroy"
		wm_addteamvoiceannounce 0 "radar_axis_entrance2_defend"
	}
}

// === FORWARD BUNKER ===
// ACCUM 0: FLAG STATE - DEFAULT AXIS; 0=AXIS, 1=ALLIED
forward_bunker
{
	spawn
	{
		wait 360
		setstate forward_bunker default
		disablespeaker forward_spawn_sound
	}
	
	trigger wakeup
	{
		wait 360
		setstate forward_bunker default
	}
	
	trigger axis_capture
	{
		enablespeaker forward_spawn_sound
		globalaccum 4 abort_if_equal 0	//already AXIS?
		globalaccum 4 set 0				//set AXIS

		wm_objective_status 4 0 1
		wm_objective_status 4 1 2

		setautospawn "Forward Bunker" 0
		setautospawn "Allied Spawn" 1

		alertentity forward_bunker_wobj
		
		// *----------------------------------- vo ------------------------------------------*
		wm_announce "^1The Axis team has reclaimed the Forward Bunker!"
		
		wm_removeteamvoiceannounce 0 "radar_axis_bunker_stop"
		
		wm_teamvoiceannounce 0 "radar_axis_bunker_reclaimed"
		wm_teamvoiceannounce 1 "radar_allies_bunker_reclaimed"	

		wm_addteamvoiceannounce 1 "radar_allies_bunker_capture"
		// *---------------------------------------------------------------------------------*

	}

	trigger allied_capture
	{
		enablespeaker forward_spawn_sound
		globalaccum 4 abort_if_equal 1	//already ALLIED?
		globalaccum 4 set 1				//set ALLIED

		wm_objective_status 4 0 2
		wm_objective_status 4 1 1

		setautospawn "Axis Spawn" 0
		setautospawn "Forward Bunker" 1

		alertentity forward_bunker_wobj

		// *----------------------------------- vo ------------------------------------------*
		wm_announce "^5The Allied team has captured the Forward Bunker!"
		
		wm_removeteamvoiceannounce 0 "radar_axis_bunker_stop"
		wm_removeteamvoiceannounce 1 "radar_allies_bunker_capture"
		
		wm_teamvoiceannounce 0 "radar_axis_bunker_captured"
		wm_teamvoiceannounce 1 "radar_allies_bunker_captured"

		wm_addteamvoiceannounce 0 "radar_axis_bunker_captured"
		// *---------------------------------------------------------------------------------*
		
		trigger lighthouse_light secure_flag
	}
}

// === COMMAND POST ===
axis_cp
{
	spawn
	{
		wait 400
		constructible_class 2
		disablespeaker axis_cp_sound
		setstate axis_cp_model invisible
	}

	buildstart
	{
		setstate cp_closed invisible
		setstate axis_cp_model underconstruction
	}

	decayed
	{
		setstate cp_closed default
		setstate axis_cp_model invisible
	}

	built
	{
		setstate axis_cp_model default
		setstate cp_clip invisible		

		// *----------------------------------- vo ------------------------------------------*
		wm_announce "^1Axis Command Post constructed. Charge speed increased!"
		
		wm_removeteamvoiceannounce 1 "allies_hq_compost_construct"

		wm_teamvoiceannounce 0 "axis_hq_compost_constructed"
		wm_teamvoiceannounce 1 "allies_hq_compost_constructed_axis"
		// *---------------------------------------------------------------------------------*

		wm_objective_status 3 0 1
		wm_objective_status 3 1 2
		
		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
		
		enablespeaker axis_cp_sound
	}

	death
	{
		setstate axis_cp_model invisible
		setstate cp_closed default
		setstate cp_clip default

		// *----------------------------------- vo ------------------------------------------*
		wm_announce "^5The Allied team has destroyed the Axis Command Post!"

		wm_teamvoiceannounce 0 "axis_hq_compost_damaged"
		wm_teamvoiceannounce 1 "allies_hq_compost_damaged"
		
		wm_addteamvoiceannounce 0 "axis_hq_compost_construct"
		// *---------------------------------------------------------------------------------*

		wm_objective_status 3 0 0
		wm_objective_status 3 1 0
		
		setchargetimefactor 0 soldier 1
		setchargetimefactor 0 lieutenant 1
		setchargetimefactor 0 medic 1
		setchargetimefactor 0 engineer 1
		setchargetimefactor 0 covertops 1
		sethqstatus 0 0
		
		disablespeaker axis_cp_sound
	}
}

allied_cp
{
	spawn
	{
		wait 400
		constructible_class 2
		disablespeaker allied_cp_sound
		setstate allied_cp_model invisible
	}

	buildstart
	{
		setstate cp_closed invisible
		setstate allied_cp_model underconstruction
	}

	decayed
	{
		setstate cp_closed default
		setstate allied_cp_model invisible
	}

	built
	{
		setstate allied_cp_model default
		setstate cp_clip invisible
		
		globalaccum 2 set 1
		
		// *----------------------------------- vo ------------------------------------------*
		wm_announce "^5Allied Command Post constructed. Charge speed increased!"
		
		wm_removeteamvoiceannounce 1 "allies_hq_compost_construct"

		wm_teamvoiceannounce 0 "axis_hq_compost_constructed_allies"
		wm_teamvoiceannounce 1 "allies_hq_compost_constructed"
		// *---------------------------------------------------------------------------------*		

		wm_objective_status 3 0 2
		wm_objective_status 3 1 1
		
		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
		
		enablespeaker allied_cp_sound
	}

	death
	{
		setstate allied_cp_model invisible
		setstate cp_closed default
		setstate cp_clip default
		
		globalaccum 2 set 0

		// *----------------------------------- vo ------------------------------------------*
		wm_announce "^1The Axis team has destroyed the Allied Command Post!"

		wm_teamvoiceannounce 1 "allies_hq_compost_damaged"
		
		wm_addteamvoiceannounce 1 "allies_hq_compost_construct"
		// *---------------------------------------------------------------------------------*		
		
		wm_objective_status 3 0 0
		wm_objective_status 3 1 0
		
		setchargetimefactor 1 soldier 1
		setchargetimefactor 1 lieutenant 1
		setchargetimefactor 1 medic 1
		setchargetimefactor 1 engineer 1
		setchargetimefactor 1 covertops 1
		sethqstatus 1 0
		
		disablespeaker allied_cp_sound
	}
}

// === TRANSMITTER ===
transmitter_controls
{
	spawn
	{
		wait 100
		constructible_class 3 
	}
	
	death
	{
		trigger game_manager allies_win
		trigger transmitter collapse
		enablespeaker tower_falling
	}
}

transmitter
{
	spawn
	{
		wait 200
		faceangles 0 45 0 1
	}
	
	trigger collapse
	{
		alertentity transmitter_effect
		startanimation 0 30 10 nolerp norandom 
		wait 2800
		startanimation 30 1 1 norandom
		wait 4000
		setstate transmitter_effect invisible
	}
}

// === GENERATOR DOORS ===

// === FORWARD DOOR ===
forward_door_hint
{
	// spawn
	// {
		// wait 200
		// setstate forward_door_hint invisible
	// }
	
	activate
	{
		globalaccum 3 trigger_if_equal 0 forward_door_lever locked	// TRIGGER_IF_GENERATOR_DESTROYED
		globalaccum 3 abort_if_equal 0		// ABORT_IF_GENERATOR_DESTROYED
		trigger forward_door_lever activate
	}
}

forward_door_gauge
{
	spawn
	{
		wait 360
		faceangles 0 0 90 100
	}
	
	trigger enable
	{
		faceangles 0 0 225 600
		faceangles 0 0 315 400
		trigger self wobble
	}
	
	trigger wobble
	{
		faceangles 0 0 325 400
		faceangles 0 0 310 500
		faceangles 0 0 320 400
		faceangles 0 0 315 200
		trigger self wobble
	}
	
	trigger disable
	{
		halt
		faceangles 0 0 315 1
		faceangles 0 0 225 400
		faceangles 0 0 90 600
	}
}

forward_door
// ACCUM 0:	FORWARD_DOOR	(0=CLOSED, 1=OPENING, 2=OPEN, 3=CLOSING)
{
	trigger activate
	{
		globalaccum 3 abort_if_equal 0
		accum 0 trigger_if_equal 0 forward_door open				// IF_CLOSED
		accum 0 trigger_if_equal 1 forward_door stop_and_close		// IF_OPENING
		accum 0 trigger_if_equal 2 forward_door close				// IF_OPEN
		accum 0 trigger_if_equal 3 forward_door stop_and_open		// IF_CLOSING
	}
	
	trigger stop_and_close
	{
		halt
		stopsound
		playsound sound/movers/misc/big_gate3.wav volume 255
		wait 1968	// wait for wav to play
		trigger self close
	}
	
	trigger stop_and_open
	{
		halt
		stopsound
		playsound sound/movers/misc/big_gate3.wav volume 255
		wait 1968	// wait for wav to play
		trigger self open
	}
	
	trigger close
	{
		accum 0 set 3	// CLOSING
		playsound sound/movers/misc/big_gate2.wav looping  volume 255
		gotomarker forward_door_closed 8 wait
		accum 0 abort_if_not_equal 3	// ABORT_IF_NOT_CLOSING
		// setstate forward_door_hint invisible
		stopsound
		playsound sound/movers/misc/big_gate3.wav  volume 255
		wait 1968	// wait for wav to play
		accum 0 set 0	// CLOSED
		// setstate forward_door_hint default
	}
	
	trigger open
	{
		accum 0 set 1	// OPENING
		playsound sound/movers/misc/big_gate2.wav looping  volume 255
		gotomarker forward_door_open 16 wait
		accum 0 abort_if_not_equal 1	// ABORT_IF_NOT_OPENING
		// setstate forward_door_hint invisible
		stopsound
		playsound sound/movers/misc/big_gate3.wav  volume 255
		wait 1968	// wait for wav to play
		accum 0 set 2	// OPEN
		// setstate forward_door_hint default
	}
}

forward_door_lever
// ACCUM 0:	FORWARD_DOOR_LEVER	(0=CLOSED, 1=OPEN)
{
	spawn
	{
		wait 200
		gotomarker forward_door_lever_up 16 wait
		gotomarker forward_door_lever_down 16 wait
	}
	
	trigger activate
	{
		setstate forward_door_hint invisible
		accum 0 trigger_if_equal 0 forward_door_lever open		// TRIGGER_IF_CLOSED
		accum 0 trigger_if_equal 1 forward_door_lever close		// TRIGGER_IF_OPEN
	}	
	
	trigger close
	{
		halt
		playsound sound/movers/misc/garage_door_start_01.wav  volume 255
		gotomarker forward_door_lever_down 16 wait
		accum 0 set 0	// CLOSED
		stopsound
		trigger forward_door activate
		wait 1000
		setstate forward_door_hint default
	}
	
	trigger open
	{
		playsound sound/movers/misc/garage_door_start_01.wav  volume 255
		gotomarker forward_door_lever_up 16 wait
		accum 0 set 1		// OPEN
		stopsound
		trigger forward_door activate
		wait 1000
		setstate forward_door_hint default
	}
	
	trigger locked
	{
		setstate forward_door_hint invisible
		playsound sound/movers/misc/garage_door_end_01.wav  volume 255
		wait 2000
		setstate forward_door_hint default
	}
}
		
// === WEST DOOR ===
west_door_hint
{
	// spawn
	// {
		// wait 200
		// setstate west_door_hint invisible
	// }
	
	activate
	{
		globalaccum 3 trigger_if_equal 0 west_door_lever locked	// TRIGGER_IF_GENERATOR_DESTROYED
		globalaccum 3 abort_if_equal 0		// ABORT_IF_GENERATOR_DESTROYED
		trigger west_door_lever activate
	}
}

west_door_gauge_out
{
	spawn
	{
		wait 360
		faceangles 0 0 90 100
	}
	
	trigger enable
	{
		faceangles 0 0 225 600
		faceangles 0 0 315 400
		trigger self wobble
	}
	
	trigger wobble
	{
		faceangles 0 0 325 400
		faceangles 0 0 310 500
		faceangles 0 0 320 400
		faceangles 0 0 315 200
		trigger self wobble
	}
	
	trigger disable
	{
		halt
		faceangles 0 0 315 1
		faceangles 0 0 225 400
		faceangles 0 0 90 600
	}
}

west_door_gauge_in
{
	spawn
	{
		wait 360
		faceangles 0 0 270 100
	}
	
	trigger enable
	{
		faceangles 0 0 135 600
		faceangles 0 0 45 400
		trigger self wobble
	}
	
	trigger wobble
	{
		faceangles 0 0 55 400
		faceangles 0 0 40 500
		faceangles 0 0 50 400
		faceangles 0 0 45 200
		trigger self wobble
	}
	
	trigger disable
	{
		halt
		faceangles 0 0 45 1
		faceangles 0 0 135 400
		faceangles 0 0 270 600
	}
}

// ACCUM 0:	WEST_DOOR	(0=CLOSED, 1=OPENING, 2=OPEN, 3=CLOSING)
west_door
{
	trigger activate
	{
		globalaccum 3 abort_if_equal 0
		accum 0 trigger_if_equal 0 west_door open				// IF_CLOSED
		accum 0 trigger_if_equal 1 west_door stop_and_close		// IF_OPENING
		accum 0 trigger_if_equal 2 west_door close				// IF_OPEN
		accum 0 trigger_if_equal 3 west_door stop_and_open		// IF_CLOSING
	}
	
	trigger stop_and_close
	{
		halt
		stopsound
		playsound sound/movers/misc/big_gate3.wav volume 255
		wait 1968	// wait for wav to play
		trigger self close
	}
	
	trigger stop_and_open
	{
		halt
		stopsound
		playsound sound/movers/misc/big_gate3.wav volume 255
		wait 1968	// wait for wav to play
		trigger self open
	}
	
	trigger close
	{
		accum 0 set 3	// CLOSING
		playsound sound/movers/misc/big_gate2.wav looping  volume 255
		gotomarker west_door_closed 8 wait
		accum 0 abort_if_not_equal 3	// ABORT_IF_NOT_CLOSING
		// setstate west_door_hint invisible
		stopsound
		playsound sound/movers/misc/big_gate3.wav  volume 255
		wait 1968	// wait for wav to play
		accum 0 set 0	// CLOSED
		// setstate west_door_hint default
	}
	
	trigger open
	{
		accum 0 set 1	// OPENING
		playsound sound/movers/misc/big_gate2.wav looping  volume 255
		gotomarker west_door_open 16 wait
		accum 0 abort_if_not_equal 1	// ABORT_IF_NOT_OPENING
		// setstate west_door_hint invisible
		stopsound
		playsound sound/movers/misc/big_gate3.wav  volume 255
		wait 1968	// wait for wav to play
		accum 0 set 2	// OPEN
		// setstate west_door_hint default
	}
}

// ACCUM 0:	WEST_DOOR_LEVER	(0=CLOSED, 1=OPEN)
west_door_lever
{
	trigger activate
	{
		setstate west_door_hint invisible
		accum 0 trigger_if_equal 0 west_door_lever open		// TRIGGER_IF_CLOSED
		accum 0 trigger_if_equal 1 west_door_lever close	// TRIGGER_IF_OPEN
	}	
	
	trigger close
	{
		halt
		enablespeaker west_door_lever_sound
		gotomarker west_door_lever_down 16 wait
		disablespeaker west_door_lever_sound
		accum 0 set 0	// CLOSED
		stopsound
		trigger west_door activate
		wait 1000
		setstate west_door_hint default
	}
	
	trigger open
	{
		enablespeaker west_door_lever_sound
		gotomarker west_door_lever_up 16 wait
		disablespeaker west_door_lever_sound
		accum 0 set 1		// OPEN
		stopsound
		trigger west_door activate
		wait 1000
		setstate west_door_hint default
	}
	
	trigger locked
	{
		setstate west_door_hint invisible
		enablespeaker west_door_lever_locked
		wait 1047
		disablespeaker west_door_lever_locked
		wait 1000
		setstate west_door_hint default
	}
}

// === SOUTH DOOR ===
south_door_hint
{
	// spawn
	// {
		// wait 200
		// setstate south_door_hint invisible
	// }
	
	activate
	{
		globalaccum 3 trigger_if_equal 0 south_door_lever locked	// TRIGGER_IF_GENERATOR_DESTROYED
		globalaccum 3 abort_if_equal 0		// ABORT_IF_GENERATOR_DESTROYED
		trigger south_door_lever activate
	}
}

south_door_gauge_out
{
	spawn
	{
		wait 360
		faceangles 90 0 0 100
	}
	
	trigger enable
	{
		faceangles 225 0 0 600
		faceangles 315 0 0 400
		trigger self wobble
	}
	
	trigger wobble
	{
		faceangles 325 0 0 400
		faceangles 310 0 0 500
		faceangles 320 0 0 400
		faceangles 315 0 0 200
		trigger self wobble
	}
	
	trigger disable
	{
		halt
		faceangles 315 0 0 1
		faceangles 225 0 0 400
		faceangles 90 0 0 600
	}
}

south_door_gauge_in
{
	spawn
	{
		wait 360
		faceangles 270 0 0 100
	}
	
	trigger enable
	{
		faceangles 135 0 0 600
		faceangles 45 0 0 400
		trigger self wobble
	}
	
	trigger wobble
	{
		faceangles 55 0 0 400
		faceangles 40 0 0 500
		faceangles 50 0 0 400
		faceangles 45 0 0 200
		trigger self wobble
	}
	
	trigger disable
	{
		halt
		faceangles 45 0 0 1
		faceangles 135 0 0 400
		faceangles 270 0 0 600
	}
}

// ACCUM 0:	SOUTH_DOOR	(0=CLOSED, 1=OPENING, 2=OPEN, 3=CLOSING)
south_door
{
	trigger activate
	{
		globalaccum 3 abort_if_equal 0
		accum 0 trigger_if_equal 0 south_door open				// IF_CLOSED
		accum 0 trigger_if_equal 1 south_door stop_and_close	// IF_OPENING
		accum 0 trigger_if_equal 2 south_door close				// IF_OPEN
		accum 0 trigger_if_equal 3 south_door stop_and_open		// IF_CLOSING
	}
	
	trigger stop_and_close
	{
		halt
		stopsound
		playsound sound/movers/misc/big_gate3.wav volume 255
		wait 1968	// wait for wav to play
		trigger self close
	}
	
	trigger stop_and_open
	{
		halt
		stopsound
		playsound sound/movers/misc/big_gate3.wav volume 255
		wait 1968	// wait for wav to play
		trigger self open
	}
	
	trigger close
	{
		accum 0 set 3	// CLOSING
		playsound sound/movers/misc/big_gate2.wav looping  volume 255
		gotomarker south_door_closed 8 wait
		accum 0 abort_if_not_equal 3	// ABORT_IF_NOT_CLOSING
		// setstate south_door_hint invisible
		stopsound
		playsound sound/movers/misc/big_gate3.wav  volume 255
		wait 1968	// wait for wav to play
		accum 0 set 0	// CLOSED
		// setstate south_door_hint default
	}
	
	trigger open
	{
		accum 0 set 1	// OPENING
		playsound sound/movers/misc/big_gate2.wav looping  volume 255
		gotomarker south_door_open 16 wait
		accum 0 abort_if_not_equal 1	// ABORT_IF_NOT_OPENING
		// setstate south_door_hint invisible
		stopsound
		playsound sound/movers/misc/big_gate3.wav  volume 255
		wait 1968	// wait for wav to play
		accum 0 set 2	// OPEN
		// setstate south_door_hint default
	}
}

// ACCUM 0:	SOUTH_DOOR_LEVER	(0=CLOSED, 1=OPEN)
south_door_lever
{
	trigger activate
	{
		setstate south_door_hint invisible
		accum 0 trigger_if_equal 0 south_door_lever open	// TRIGGER_IF_CLOSED
		accum 0 trigger_if_equal 1 south_door_lever close	// TRIGGER_IF_OPEN
	}	
	
	trigger close
	{
		halt
		enablespeaker south_door_lever_sound
		gotomarker south_door_lever_down 16 wait
		disablespeaker south_door_lever_sound
		accum 0 set 0	// CLOSED
		stopsound
		trigger south_door activate
		wait 1000
		setstate south_door_hint default
	}
	
	trigger open
	{
		enablespeaker south_door_lever_sound
		gotomarker south_door_lever_up 16 wait
		disablespeaker south_door_lever_sound
		accum 0 set 1		// OPEN
		stopsound
		trigger south_door activate
		wait 1000
		setstate south_door_hint default
	}
	
	trigger locked
	{
		setstate south_door_hint invisible
		enablespeaker south_door_lever_locked
		wait 1047
		disablespeaker south_door_lever_locked
		wait 1000
		setstate south_door_hint default
	}
}

// === GENERATOR GAUGE ===
generator_gauge
{
	spawn
	{
		wait 360
		faceangles 90 0 0 100
	}
	
	trigger enable
	{
		faceangles 225 0 0 600
		faceangles 315 0 0 400
		trigger self wobble
	}
	
	trigger wobble
	{
		faceangles 325 0 0 400
		faceangles 310 0 0 500
		faceangles 320 0 0 400
		faceangles 315 0 0 200
		trigger self wobble
	}
	
	trigger disable
	{
		halt
		faceangles 315 0 0 1
		faceangles 225 0 0 400
		faceangles 90 0 0 600
	}
}

// === GENERATOR ===
generator
{ 
	spawn 
	{ 
		wait 200
		constructible_class 2	// SATCHEL
		constructible_chargebarreq 1.5
		constructible_constructxpbonus 10
		constructible_destructxpbonus 10
		setrotation 200 0 0
		
		setstate generator_belt invisible
		setstate generator invisible
		
		disablespeaker generator_loop
		disablespeaker generator_loop2
		
		wait 1000
		remapshader textures/etl_props/cable_m01		textures/etl_props/cable_m01
		remapshader textures/etl_lights/lights_neutral	textures/etl_lights/lights_red
		remapshaderflush
	}
	
	buildstart
	{
		setstate generator_belt underconstruction
		setstate generator underconstruction
	}
	
	decayed
	{
		setstate generator_belt invisible
		setstate generator invisible
	}
	
	built
	{
		setstate generator_belt default
		setstate generator default
		setstate generator default
		setstate generator_broken invisible
		
		trigger generator_turbine enable
		trigger generator_axis enable
		trigger forward_door_gauge enable
		trigger west_door_gauge_out enable
		trigger west_door_gauge_in enable
		trigger south_door_gauge_out enable
		trigger south_door_gauge_in enable
		trigger generator_gauge enable
		

		enablespeaker generator_loop
		enablespeaker generator_loop2
		
		remapshader textures/etl_lights/lights_neutral	textures/etl_lights/lights_green
		remapshader textures/etl_props/cable_m01		textures/etl_props/cable_moving
		// remapshader gfx/limbo/brg_gen_dest				gfx/limbo/brg_gen_rep
		remapshaderflush
		
		// *----------------------------------- vo ------------------------------------------*
		wm_announce "^5The Allied team has repaired the Generator!"
		
		wm_removeteamvoiceannounce 1 "bergen_allies_generator_repair"
		wm_addteamvoiceannounce 0 "bergen_axis_generator_destroy"

		wm_teamvoiceannounce 0 "battery_axis_generator_constructed"
		wm_teamvoiceannounce 1 "bergen_allies_generator_constructed"
		// *---------------------------------------------------------------------------------*
		
		wait 1000
		globalaccum 3 set 1		// GENERATOR IS BUILT
		// setstate forward_door_hint default
		// setstate west_door_hint default
		// setstate south_door_hint default
		
		wm_objective_status 2 0 2
		wm_objective_status 2 1 1
	} 

	death 
	{ 
		stopsound
		setstate generator_belt invisible
		setstate generator invisible
		setstate generator invisible
		setstate generator_broken default
		
		globalaccum 3 set 0		// GENERATOR IS DESTROYED
		
		trigger generator_turbine disable
		trigger generator_axis disable
		trigger forward_door_gauge disable
		trigger west_door_gauge_out disable
		trigger west_door_gauge_in disable
		trigger south_door_gauge_out disable
		trigger south_door_gauge_in disable
		trigger generator_gauge disable

		disablespeaker generator_loop
		disablespeaker generator_loop2
		
		remapshader textures/etl_lights/lights_neutral	textures/etl_lights/lights_red
		remapshader textures/etl_props/cable_m01		textures/etl_props/cable_m01
		// remapshader gfx/limbo/brg_gen_dest				gfx/limbo/brg_gen_dest
		remapshaderflush
		
		// *----------------------------------- vo ------------------------------------------*
		wm_announce "^1The Axis team has destroyed the Generator!"
		
		wm_addteamvoiceannounce 1 "bergen_allies_generator_repair"
		wm_removeteamvoiceannounce 0 "bergen_axis_generator_destroy"

		wm_teamvoiceannounce 1 "battery_allies_generator_destroyed"
		wm_teamvoiceannounce 0 "battery_axis_generator_destroyed"
		// *---------------------------------------------------------------------------------*
		
		// setstate forward_door_hint invisible
		// setstate west_door_hint invisible
		// setstate south_door_hint invisible
		trigger south_door stop_and_close
		trigger forward_door stop_and_close
		trigger west_door stop_and_close
		
		wm_objective_status 2 0 1
		wm_objective_status 2 1 2	
	}
}

// === GENERATOR MISC ===
generator_turbine
{
	trigger enable
	{
		setrotation 250 0 0
	}
	
	trigger disable
	{
		setrotation 135 0 0
		wait 1000
		setrotation 90 0 0
		wait 2000
		setrotation 45 0 0
		wait 2000
		setrotation 22 0 0
		wait 3000
		stoprotation
	}
}

generator_axis
{
	trigger enable
	{
		setrotation 250 0 0
	}
	
	trigger disable
	{
		setrotation 135 0 0
		wait 1000
		setrotation 90 0 0
		wait 2000
		setrotation 45 0 0
		wait 2000
		setrotation 22 0 0
		wait 3000
		stoprotation
	}
}

generator_perma
{
	spawn
	{
		wait 200
		setrotation 250 0 0
	}
}

generator_pistons1
{
	spawn
	{
		wait 100
		trigger self move
	}
	
	trigger move
	{
		faceangles 20 0 0 120 
		faceangles 0 0 0 120 
		trigger self move
	}
}

generator_pistons2
{
	spawn
	{
		wait 200
		trigger self move
	}
	
	trigger move
	{
		faceangles 20 0 0 120 
		faceangles 0 0 0 120 
		trigger self move
	}
}