// GLOBAL ACCUMS
// =============
//
// GLOBALACCUM 0:	South Tunnel Cabinets (0-deactivated; 1-active)
// GLOBALACCUM 1:	Secure Axis flag when Side Wall destroyed (0-no; 1-yes)
// GLOBALACCUM 2:	Dynamically handle team voice announcements
//		BIT 0 = MAIN ENTRANCE DESTROYED
//		BIT 1 = SIDE_ENTRANCE_DESTROYED
// GLOBALACCUM 3:	Additional spawn slots at flag spawn (0-disabled; 1-enabled)

game_manager
{
	spawn
	{
		// Game rules
		wm_axis_respawntime 15
		wm_allied_respawntime 10
		wm_number_of_objectives 7
		wm_set_round_timelimit 12
		wm_set_defending_team 1
		wm_setwinner 1

		// Objectives
		// 1: Documents
		// 2: Forward Bunker
		// 3: Main Entrance
		// 4: Side Wall
		// 5: Guardtower
		// 6: Allied CP
		// 7: Axis CP

		wait 450

		// *----------------------------------- vo ------------------------------------------*
		wm_teamvoiceannounce 1 "ice_entrances1"
		wm_teamvoiceannounce 1 "ice_bunker1"
		wm_teamvoiceannounce 1 "allies_hq_compost_construct"
		wm_addteamvoiceannounce 1 "ice_entrances1"
		wm_addteamvoiceannounce 1 "ice_bunker1"
		wm_addteamvoiceannounce 1 "allies_hq_compost_construct"

		wm_teamvoiceannounce 0 "ice_entrances0"
		wm_teamvoiceannounce 0 "ice_bunker0"
		wm_teamvoiceannounce 0 "axis_hq_compost_construct"
		wm_addteamvoiceannounce 0 "ice_entrances0"
		wm_addteamvoiceannounce 0 "ice_bunker0"
		wm_addteamvoiceannounce 0 "axis_hq_compost_construct"
		// *---------------------------------------------------------------------------------*
		
		//====OPTIONAL SETTINGS==============================================================
		wait 1000
		// Toggle the line of the respective setting you want to change by (un-)commenting.
		//
		 globalaccum 0 set 1				// Additional health and ammo cabinets in the southern tunnel (default no)
		 globalaccum 1 set 1				// Secure Axis flag when Side Wall destroyed (default no)
		globalaccum 3 set 1				// Additional spawn slots at flag spawn. (default yes)
		// ===================================================================================
		
		trigger world_clip load_cabinets
	}

	trigger end_round
	{
		wm_setwinner 0
		
		// *----------------------------------- vo ------------------------------------------*
		wm_announce "^1The Axis have transmited the Secret War Documents!"		
		wm_teamvoiceannounce 0 "axis_hq_objective_captured"
		wm_teamvoiceannounce 1 "allies_hq_objective_captured"
		// *---------------------------------------------------------------------------------*	
	
		wm_objective_status 		1 0 1
		wm_objective_status 		1 1 2

		wait 1500
		wm_endround
	}
}

world_clip
{
	trigger load_cabinets
	{
		setstate health2 invisible
		setstate health2_model invisible
		setstate ammo2 invisible
		setstate ammo2_model invisible
		
		globalaccum 0 abort_if_equal 0
		setstate health2 default
		setstate health2_model default
		setstate ammo2 default
		setstate ammo2_model default
		setstate health2_dest invisible
		setstate ammo2_dest invisible
	}
}

// === ALLIED COMMAND POST ===
allied_cp
{
	spawn
	{
		wait 400
		constructible_class 2

		setstate allied_cp_built_model invisible
		setstate allied_cp_destroyed invisible
		setstate allied_cp_destroyed_model invisible
		disablespeaker allied_compost_sound
	}
	
	buildstart
	{
		setstate allied_cp_closed_model invisible
		setstate allied_cp_closed invisible
		setstate allied_cp_destroyed invisible
		setstate allied_cp_destroyed_model invisible
		setstate allied_cp_built_model underconstruction
	}

	decayed
	{
		setstate allied_cp_closed_model default
		setstate allied_cp_closed default
		setstate allied_cp_built_model invisible
	}

	built
	{
		setstate allied_cp_built_model default
		setstate allied_cp default

		// *----------------------------------- vo ------------------------------------------*
		wm_announce	"^5Allied Command Post constructed. Charge speed increased!"
		wm_teamvoiceannounce 0 "axis_hq_compost_constructed_allies"
		wm_teamvoiceannounce 1 "allies_hq_compost_constructed"

		wm_removeteamvoiceannounce 1 "allies_hq_compost_construct"	
		// *---------------------------------------------------------------------------------*

		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_objective_status	6 1 1
		wm_objective_status	6 0 2

		enablespeaker allied_compost_sound
	}

	death
	{
		setstate allied_cp_built_model invisible
		setstate allied_cp invisible
		setstate allied_cp_destroyed default
		setstate allied_cp_destroyed_model default

		// *----------------------------------- vo ------------------------------------------*
		wm_announce	"^1Axis team has destroyed the Allied Command Post!"
		wm_addteamvoiceannounce 0 "axis_hq_compost_construct"
		wm_addteamvoiceannounce 1 "allies_hq_compost_construct"

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

		setchargetimefactor 1 soldier 1
		setchargetimefactor 1 lieutenant 1
		setchargetimefactor 1 medic 1
		setchargetimefactor 1 engineer 1
		setchargetimefactor 1 covertops 1
		sethqstatus 1 0
		
		wm_objective_status	6 1 0
		wm_objective_status	6 0 0		

		disablespeaker allied_compost_sound
	}
}

// === AXIS COMMAND POST ===
axis_cp
{
	spawn
	{
		wait 400
		constructible_class 2

		setstate axis_cp_damaged_model invisible
		setstate axis_cp_built_model invisible
		setstate axis_cp_damaged invisible
		
		setstate health invisible
		setstate ammo invisible
		setstate health_trigger invisible
		setstate ammo_trigger invisible
		setstate health_dest default
		setstate ammo_dest default
		disablespeaker axis_compost_sound
	}

	buildstart
	{
		setstate axis_cp_damaged_model invisible
		setstate axis_cp_damaged invisible
		setstate axis_cp_closed_model invisible
		setstate axis_cp_closed invisible
		setstate axis_cp_built_model underconstruction
		
		setstate health_dest underconstruction
		setstate ammo_dest underconstruction
	}

	decayed
	{
		setstate axis_cp_closed_model default
		setstate axis_cp_closed default
		setstate axis_cp_built_model invisible
		
		setstate health_dest default
		setstate ammo_dest default
	}

	built
	{
		setstate axis_cp_built_model default
		setstate axis_cp default

		// *----------------------------------- vo ------------------------------------------*
		enablespeaker axis_compost_sound
		wm_announce	"^1Axis Command Post constructed. Charge speed increased!"
		
		wm_teamvoiceannounce 1 "allies_hq_compost_constructed_axis"
		wm_teamvoiceannounce 0 "axis_hq_compost_constructed"

		wm_removeteamvoiceannounce 0 "axis_hq_compost_construct"
		// *---------------------------------------------------------------------------------*

		wm_objective_status 		7 0 1
		wm_objective_status 		7 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
		
		setstate health default
		setstate ammo default
		setstate health_trigger default
		setstate ammo_trigger default
		setstate health_dest invisible
		setstate ammo_dest invisible
	}

	death
	{
		setstate axis_cp_built_model invisible
		setstate axis_cp invisible
		setstate axis_cp_damaged_model default
		setstate axis_cp_damaged default

		// *----------------------------------- vo ------------------------------------------*
		disablespeaker axis_compost_sound
		wm_announce	"^5The Allies have destroyed the Axis Command Post!"
		
		wm_addteamvoiceannounce 0 "axis_hq_compost_construct"

		wm_teamvoiceannounce 0 "axis_hq_compost_construct"
		wm_teamvoiceannounce 1 "allies_hq_compost_damaged"
		// *---------------------------------------------------------------------------------*

		wm_objective_status 		7 0 2
		wm_objective_status 		7 1 1
		
		setchargetimefactor 0 soldier 1
		setchargetimefactor 0 lieutenant 1
		setchargetimefactor 0 medic 1
		setchargetimefactor 0 engineer 1
		setchargetimefactor 0 covertops 1
		sethqstatus 0 0
		
		setstate health invisible
		setstate ammo invisible
		setstate health_trigger invisible
		setstate ammo_trigger invisible
		setstate health_dest default
		setstate ammo_dest default
	}
}

// === FORWARD BUNKER ===
forward_bunker
{
	// ACCUM 0: Flag (0-Axis; 1-Allied)
	spawn
	{
		wait 200
		setstate forward_bunker_wobj invisible
		setstate forward_bunker_marker invisible
		accum 0 set -1
		
		disablespeaker forward_bunker
	}
		
	trigger axis_capture
	{
		accum 0 abort_if_equal 0
		accum 0 set 0
		setstate forward_bunker_wobj default
		setstate forward_bunker_marker default

		setautospawn "Forward Bunker" 0
		
		wm_objective_status 2 0 1
		wm_objective_status 2 1 2

		// *----------------------------------- vo ------------------------------------------*
		enablespeaker forward_bunker
		wm_announce "^1The Axis have captured the Forward Bunker!"
		
		wm_removeteamvoiceannounce 0 "ice_bunker0"
		wm_removeteamvoiceannounce 1 "ice_bunker1"

		wm_teamvoiceannounce 0 "ice_bunkercaptured0"
		wm_teamvoiceannounce 1 "ice_bunkercaptured1"

		wm_addteamvoiceannounce 1 "ice_bunkercaptured1"
		// *---------------------------------------------------------------------------------*
	}

	trigger allied_capture
	{
		accum 0 set 1
		setstate forward_bunker_wobj invisible
		setstate forward_bunker_marker invisible

		wm_objective_status 2 0 2
		wm_objective_status 2 1 1

		// *----------------------------------- vo ------------------------------------------*
		disablespeaker forward_bunker
		wm_announce "^5The Allies have reclaimed the Forward Bunker!"
		
		wm_removeteamvoiceannounce 1 "ice_bunkercaptured1"

		wm_teamvoiceannounce 0 "ice_bunkerreclaimed0"
		wm_teamvoiceannounce 1 "ice_bunkerreclaimed1"

		wm_addteamvoiceannounce 0 "ice_bunker0"
		wm_addteamvoiceannounce 1 "ice_bunker1"
		// *---------------------------------------------------------------------------------*
	}
	
	trigger secure
	{
		setstate forward_bunker invisible
		disablespeaker forward_bunker
		
		// *----------------------------------- vo ------------------------------------------*
		wm_announce "^1The Axis have secured the Forward Bunker!"
		
		wm_removeteamvoiceannounce 0 "ice_bunker0"
		wm_removeteamvoiceannounce 1 "ice_bunker1"

		accum 0 abort_if_equal 0

		wm_teamvoiceannounce 0 "ice_bunkercaptured0"
		wm_teamvoiceannounce 1 "ice_bunkercaptured1"
		// *---------------------------------------------------------------------------------*
		
		alertentity forward_bunker_spawn
		setstate forward_bunker_wobj default
		setstate forward_bunker_marker default

		setautospawn "Forward Bunker" 0
		
		wm_objective_status 2 0 1
		wm_objective_status 2 1 2

		
		accum 0 set 0
	}
}

forward_bunker_spawn_west
{
	spawn
	{
		wait 200
		globalaccum 3 abort_if_equal 1
		remove
	}
}

// === GUARDTOWER ===
guardtower
{
	spawn 
	{ 
		wait 200
		constructible_class 2	// SATCHEL
		setstate guardtower invisible
	}
	
	buildstart
	{
		setstate guardtower underconstruction
	}
	
	decayed
	{
		setstate guardtower invisible
	}
	
	built
	{
		setstate guardtower default
		setstate guardtower_materials invisible
		setstate guardtower_materials_flag invisible
		
		wm_objective_status 5 0 2
		wm_objective_status 5 1 1
		
		// *----------------------------------- vo ------------------------------------------*		
		wm_announce "^5The Allies have constructed the Guardtower!"
		wm_teamvoiceannounce 1 "ice_conconst1"
		wm_teamvoiceannounce 0 "ice_conconst0"
		// *---------------------------------------------------------------------------------*	
	} 

	death 
	{ 
		setstate guardtower invisible
		setstate guardtower_materials default
		setstate guardtower_materials_flag default
		
		wm_objective_status 5 0 1
		wm_objective_status 5 1 2
				
		// *----------------------------------- vo ------------------------------------------*
		wm_announce "^1The Axis have destroyed the Guardtower!"
		
		wm_teamvoiceannounce 1 "ice_hq_condest1"
		wm_teamvoiceannounce 0 "ice_hq_condest0"
		// *---------------------------------------------------------------------------------*
	}
}

// === MAIN ENTRANCE ===
main_entrance
{
	spawn 
	{ 
		wait 320
		constructible_class 3	// DYNAMITE
	} 

	death 
	{ 		
		wm_objective_status 3 0 1
		wm_objective_status 3 1 2
		
		// *----------------------------------- vo ------------------------------------------*
		wm_announce "^1The Axis have destroyed the Main Entrance!"
		
		wm_removeteamvoiceannounce 0 "ice_entrances0"
		wm_removeteamvoiceannounce 1 "ice_entrances1"
		wm_removeteamvoiceannounce 0 "ice_entrance0"
		wm_removeteamvoiceannounce 1 "ice_entrance1"

		wm_teamvoiceannounce 0 "ice_entrancedest0"
		wm_teamvoiceannounce 1 "ice_entrancedest1"
		
		alertentity sound_alarm
		
		globalaccum 2 bitset 0				// MAIN ENTRANCE IS DESTROYED
		globalaccum 2 abort_if_bitset 1		// ABORT_IF_SIDE_WALL_DESTROYED
		wm_addteamvoiceannounce 1 "ice_wall1"
		wm_addteamvoiceannounce 0 "ice_wall0"
		// *---------------------------------------------------------------------------------*
	}
}

//	=== DOCUMENTS ===
documents
{
	trigger stolen
	{
		setstate documents_marker invisible
		setstate documents_toi invisible
	}

	trigger returned
	{
		setstate documents_marker default
		setstate documents_toi default 		
	}
}

transmitter
{
	death
	{
		trigger game_manager end_round
	}
}

// === SIDE WALL ===
side_wall
{
	spawn 
	{ 
		wait 320
		constructible_class 3	// DYNAMITE
		setstate side_wall_debris invisible
	} 

	death 
	{ 
		setstate side_wall_debris default
		
		wm_objective_status 4 0 1
		wm_objective_status 4 1 2
		
		globalaccum 1 trigger_if_equal 1 forward_bunker secure
		
		// *----------------------------------- vo ------------------------------------------*
		wm_announce "^1The Axis have breached the Side Wall!"
		
		wm_removeteamvoiceannounce 0 "ice_entrances0"
		wm_removeteamvoiceannounce 1 "ice_entrances1"
		wm_removeteamvoiceannounce 0 "ice_wall0"
		wm_removeteamvoiceannounce 1 "ice_wall1"

		wm_teamvoiceannounce 0 "ice_walldest0"
		wm_teamvoiceannounce 1 "ice_walldest1"
		
		globalaccum 2 bitset 1				// SIDE WALL IS DESTROYED
		globalaccum 2 abort_if_bitset 0		// ABORT_IF_MAIN_ENTRANCE_DESTROYED
		wm_addteamvoiceannounce 1 "ice_entrance1"
		wm_addteamvoiceannounce 0 "ice_entrance0"
		// *---------------------------------------------------------------------------------*
	}
}