// Normandy Breakout game script
// Original by Tom "Menzel" Haskins, ET conversion by Ifurita
// Script edits by Mean Mr Mustard
// PW222 by Deteoni, adjusted by Firefly
// Church windows based on textures by Firefly
// Last Edited : 09/18/04


game_manager
{
	spawn
	{


		// Set scenario information

		// Set the respawn times

		wm_allied_respawntime		13
		wm_axis_respawntime		10

		wm_set_round_timelimit		30

		// Set the number of objectives for the map

		wm_number_of_objectives		5

		//Objective	1	"88 gun"
		//Objective	2	"Allied field ops"
		//Objective	3	"Capture the cafe"
		//Objective	4	"Capture the sewers"
		//Objective	5	"Capture the Hotel De Ville"
		//Objective	6	"Capture the Rue d'Isigny tunnel"

		wait 2000		// Mustard add

		// Current main objectives for each team (0=Axis, 1=Allies)
		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

		
		// If the round timer expires the map continues until a primary objective is destroyed
		// Set the round winner:  0 == AXIS, 1 == ALLIED -1 = Neither
		wm_setwinner  -1 

		// set the 2 primary objectives to 0 (no winner)
		globalaccum 1 set 0 // Allied objective counter
		globalaccum 2 set 0 // Axis objective counter

		globalaccum 3 set 0 // Allied dyno objective counter
		globalaccum 4 set 0 // Axis dyno objective counter
		
		setautospawn "West Gate" 1 
		setautospawn "Head Quarters" 0
	}

trigger axis_checkgame
       	{
		globalaccum 4 abort_if_equal 0

		wm_setwinner 0
		wait 1500
                wm_endround
        }

trigger allied_checkgame // mirrors axis_checkgame
   	{

		globalaccum 3 abort_if_equal 0

	  	wm_setwinner 1
		wait 1500
              	wm_endround
        }
}

// the Mustang plane attacks
attack1
{
	spawn
	{
	faceangles  0 0 0 1000
	gotomarker p1start 1000
	wait 3000
	}

trigger on
	{
		gotomarker p1spot1 200
		alertentity planesound1
		gotomarker p1spot2 500
		faceangles 0 0 -60 gototime
		gotomarker p1spot2b 500
		alertentity planesound2
		faceangles 0 -8 -50 gototime
		gotomarker p1spot2c 500
		faceangles 0 -12 -20 gototime
		gotomarker p1spot2d 500
		faceangles 0 -14 -25 gototime
		gotomarker p1spot2e 500
		faceangles 0 -18 -35 gototime
		gotomarker p1spot3 500
		faceangles 0 -22 -45 gototime
		gotomarker p1spot4 500
		alertentity planesound3
		faceangles 0 0 -5 gototime
		gotomarker p1roll 500
		faceangles 0 0 -180 gototime
		gotomarker p1attack1 500
		alertentity planesound4
		faceangles 10 0 -359 gototime
		gotomarker p1attack2 500
		alertentity axis_explode
		faceangles 0 0 0 gototime
		gotomarker p1attack3 500
		faceangles 0 0 60 gototime
		gotomarker p1attack4 500
		faceangles 0 0 60 gototime
		gotomarker p1attack5 500
		faceangles 0 0 40 gototime
		gotomarker p1attack6 500
		faceangles 0 0 15 gototime
		gotomarker p1attack7 500
		faceangles 0 0 0 gototime
		gotomarker p1return1 500
		faceangles 0 0 -60 gototime
		gotomarker p1return2 500
		faceangles 0 0 -90 gototime
		gotomarker p1return3 500
		faceangles 0 0 -60 gototime
		gotomarker p1return4 500
		faceangles 0 0 0 gototime
		gotomarker p1return5 500
		faceangles 0 0 0 gototime
		gotomarker p1return6 500
		faceangles 0 0 0 gototime
		gotomarker p1return7 500
		faceangles 0 0 0 gototime
		gotomarker p1return8 500
		faceangles 0 0 0 gototime
		gotomarker p1start 500
		faceangles 0 0 0 gototime
	}
}

attack_1
{
	trigger touch
	{
		trigger attack1 on
	
	}
}

// the Mustang plane attacks
attack2
{
	spawn
	{
	faceangles   0 180 0 1000
	gotomarker p2start 1000
	wait 3000
	}
	
	trigger on
	{
		alertentity plane2sound1
		gotomarker p2step1 500
		faceangles 0 180 0 gototime
		alertentity plane2sound2
		gotomarker p2step2 500
		faceangles 0 180 90 gototime
		gotomarker p2step3 500
		faceangles 0 -270 90 gototime
		gotomarker p2step4 500
		faceangles 0 -330 65 gototime
		gotomarker p2step5 500
		alertentity plane2sound3
		faceangles 0 -330 30 gototime
		gotomarker p2step6 500
		faceangles 0 -345 -20 gototime
		gotomarker p2step6b 500
		faceangles 0 -360 0 gototime
		gotomarker p2step7 500
		faceangles 0  -360 -45 gototime
		alertentity bomb1att2
		gotomarker p2step7b 500
		faceangles 0  -350 -45 gototime
		gotomarker p2step8 500
		faceangles 0 -330 -40 gototime
		gotomarker p2step9 500
		alertentity bomb2att2
		faceangles 0 -330 -45 gototime
		gotomarker p1attack7 500
		faceangles -350 0 0 gototime
		gotomarker p1return1 500
		faceangles 0 0 -60 gototime
		gotomarker p1return2 500
		faceangles 0 0 -90 gototime
		gotomarker p1return3 500
		faceangles 0 0 -60 gototime
		gotomarker p1return4 500
		faceangles 0 0 0 gototime
		gotomarker p2start 500
		faceangles 0 180 0 gototime
	}
}

attack_2
{
	trigger touch
	{
		trigger attack2 on
	
	}
}


churchbells
{
	trigger strike
	{
		//trigger the bells & damage on

		alertentity strike1
		wait 400
		alertentity strike1
		wait 1700
		alertentity strike2
		wait 400
		alertentity strike2
		wait 1500	
		alertentity strike3
		wait 400
		alertentity strike3

	}
}

// ======================================================
// Destructibles
// ======================================================

allied_obj1 //The 88 German gun
{
	spawn
	{
		wait 200 
		constructible_class 3 

		setstate obj_axis_88 invisible
		setstate obj_axis_88_toi invisible
		setstate 88_damaged invisible
	}

	death
	{
		globalaccum 3 set 1

		// pop-up to alert players, kill the func_timer for the 88 and start the smoke
		wm_announce	"Allies have disabled the German 88!"
		alertentity start88
		alertentity 881

		// *----------------------------------- vo ----*
		wm_teamvoiceannounce 0 "breakout_axis_obj_lost"
		wm_teamvoiceannounce 1 "breakout_allied_obj_destroyed"
		// *----------------------------------- vo ----*

		// Call function to check if the round has been won
		trigger game_manager allied_checkgame

		// Display status marker
		setstate obj_axis_88 default
		setstate obj_axis_88_toi default
		setstate 88_damaged default

		wm_objective_status 1 0 2
		wm_objective_status 1 1 1
	}

}

axis_obj1 //The field ops
{
	spawn
	{
		wait 200 
		constructible_class 3 

		setstate obj_alliedHQ invisible
		setstate obj_alliedHQ_toi invisible
		setstate hq_damaged invisible
	}

	death
	{
		globalaccum 4 set 1

		wm_announce	"Axis team destroyed the Allied Field Operations!"

		// *----------------------------------- vo ----*
		wm_teamvoiceannounce 0 "breakout_axis_obj_destroyed"
		wm_teamvoiceannounce 1 "breakout_allied_obj_lost"
		// *----------------------------------- vo ----*

		// Call function to check if the round has been won
		trigger game_manager axis_checkgame

		// Display status marker
		setstate obj_alliedHQ default
		setstate obj_alliedHQ_toi default
		setstate hq_damaged default

		wm_objective_status 2 0 1
		wm_objective_status 2 1 2
	}
}

// ============================================================================ 
// 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 allied_cp_speaker
		setstate allied_cp_two	default
		alertentity allied_cp_blob
	}

	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 allied_cp_speaker
		alertentity allied_cp_blob
		setstate allied_cp_two	invisible		
	}
}

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
        setautospawn "Hotel De Ville" 1   // Set Allies to forward spawn 
		
		wm_announce	"Allied Command Post constructed in the Hotel De Ville!
   

		// *----------------------------------- 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 5 0 2
		wm_objective_status 5 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 5 0 0
		wm_objective_status 5 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_cp_speaker
		setstate axis_cp_two	default
		alertentity axis_cp_blob
	}

	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_cp_speaker
		setstate axis_cp_two	invisible
		alertentity axis_cp_blob
	}
}

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
		setautospawn "Hotel De Ville" 0 // Set Axis to forward spawn 

		wm_announce	"Axis Command Post constructed in the Hotel De Ville!"

     


		// *----------------------------------- 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 5 0 1
		wm_objective_status 5 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 5 0 0
		wm_objective_status 5 1 0
	}
}

// ============================================================================ 
// Command Post Spawns ========================================================
// ============================================================================ 

allied_cp_two
{
	spawn
	{
		wait 100
		setstate allied_cp_two invisible
	}
}

axis_cp_two
{
	spawn
	{
		wait 100
		setstate axis_cp_two invisible
	}
}

// ======================================================
// Constructibles
// ======================================================

//Sewer Gate

sewergate_script
{ 
	spawn 
	{ 
		wait 200 
		constructible_class 2 
		trigger self startup 
	} 

	buildstart final 
	{ 
	} 

	built final 
	{ 
		setstate sewergate_target default
		setstate sewergate_materials invisible 
		setstate obj_sewergate default
		setstate obj_sewergate_toi default

		wm_announce "The Sewer Gate has been rebuilt" 

		wm_objective_status 4 0 1
		wm_objective_status 4 1 2
	} 

	decayed final 
	{ 
		setstate sewergate_target invisible
		setstate sewergate_materials default  
	} 

	death 
	{ 
		setstate sewergate_materials default
		setstate sewergate_target invisible
		setstate obj_sewergate invisible
		setstate obj_sewergate_toi invisible

		wm_announce "The Allies have breached the Sewer Gate" 

		wm_objective_status 4 0 2
		wm_objective_status 4 1 1
	} 

	trigger startup 
	{ 
		setstate sewergate_target default
		setstate sewergate_materials invisible
		setstate obj_sewergate default
		setstate obj_sewergate_toi default
	} 
}

//Back Wall

backwall_script
{ 
	spawn 
	{ 
		wait 200 
		constructible_class 2 
		trigger self startup 
	} 

	buildstart final 
	{ 
	} 

	built final 
	{ 
		setstate backwall_target default
		setstate backwall_materials invisible 
		setstate obj_backwall default
		setstate obj_backwall_toi default

		wm_announce "The back alley wall has been rebuilt" 

		wm_objective_status 3 0 1
		wm_objective_status 3 1 2
	} 

	decayed final 
	{ 
		setstate backwall_target invisible
		setstate backwall_materials default 
	} 

	death 
	{ 
		setstate backwall_materials default
		setstate backwall_target invisible
		setstate obj_backwall invisible
		setstate obj_backwall_toi invisible

		wm_announce "The Axis have breached the back alley wall" 

		wm_objective_status 3 0 2
		wm_objective_status 3 1 1
	} 

	trigger startup 
	{ 
		setstate backwall_target default
		setstate backwall_materials invisible 
		setstate obj_backwall default
		setstate obj_backwall_toi default
	} 
}
// ======================================================
// Levers and movers
// ======================================================

// Sewer Gate 
slever1
{
	spawn
	{
	}

	trigger down
	{
		gotomarker slever1_downpos 16
		trigger sgate close 
	}

	trigger up
	{
		gotomarker slever1_uppos 16
		trigger sgate open 
	}
}

slever2
{
	spawn
	{
	}

	trigger down
	{
		gotomarker slever2_downpos 16
	}

	trigger up
	{
		gotomarker slever2_uppos 16
	}
}
sgate_trigger1 // sgate_trigger1
{
	spawn
	{
			accum 5 set 1
	}

	trigger slever1up
	{
			accum 5 abort_if_not_equal 1
			trigger slever1 up
			trigger slever2 up
			accum 5 set 0
			wait 8000
			trigger sgate_trigger2 setaccum0
	}

	trigger setaccum0
	{
			accum 5 set 0
	}

	trigger setaccum1
	{
			accum 5 set 1
	}
}

sgate_trigger2
{
	spawn
	{
			accum 5 set 1
	}

	trigger slever1down
	{
			accum 5 abort_if_not_equal 0
			trigger slever1 down
			trigger slever2 down
			accum 5 set 1
			wait 8000
			trigger sgate_trigger1 setaccum1
	}

	trigger setaccum0
	{
			accum 5 set 0
	}

	trigger setaccum1
	{
			accum 5 set 1
	}
}

sgate
{
	spawn
	{
	}

	trigger open
	{
		wait 500
		playsound sound/movers/doors/door6_open.wav looping
		wait 400
      		playsound sound/movers/doors/door6_open.wav looping
		gotomarker sgate_uppos 16 wait
		stopsound
	}

	trigger close
	{
		wait 500
      		playsound sound/movers/doors/door6_open.wav looping
		wait 400
      		playsound sound/movers/doors/door6_open.wav looping
		gotomarker sgate_downpos 16 wait
		stopsound
	}
}