global Map =
{
	Quiet = true, // this gets rid of all the goal initialization spam

	Ammo_Cabinet_allied_ammocabinet = "AMMOCAB_allied_ammocabinet",
	Ammo_Cabinet_axis_ammocabinet = "AMMOCAB_axis_ammocabinet",
	Health_Cabinet_allied_healthcabinet = "HEALTHCAB_allied_healthcabinet",
	Health_Cabinet_axis_healthcabinet = "HEALTHCAB_axis_healthcabinet",
	Call_Artillery_897 = "CALLARTILLERY_897",
	Artillery_D_353 = "ARTILLERY_D_353",
	Checkpoint_ForwardSpawn_flag = "CHECKPOINT_ForwardSpawn_flag",
	Build_Allied_Command_Post = "BUILD_Allied_Command_Post",
	Build_Axis_Command_Post = "BUILD_Axis_Command_Post",
	Plant_Allied_Command_Post = "PLANT_Allied_Command_Post",
	Plant_Axis_Command_Post = "PLANT_Axis_Command_Post",
	Plant_Communications_Tower = "PLANT_Communications_Tower",
	Plant_Gate_Hatch = "PLANT_Gate_Hatch",
	Plant_Warehouse_Entrance = "PLANT_Warehouse_Entrance",
/*	Explode_AlliesGarageRadio = "EXPLODE_AlliesGarageRadio",
	Explode_AlliesTowerRadio = "EXPLODE_AlliesTowerRadio",
	Explode_AxisSpawnRadio = "EXPLODE_AxisSpawnRadio",
	Explode_AxisTowerRadio = "EXPLODE_AxisTowerRadio",
	Explode_obj_block01 = "EXPLODE_obj_block01",
*/	Mount_354 = "MOUNTMG42_354",
	Mount_624 = "MOUNTMG42_624",
	Mount_647 = "MOUNTMG42_647",
	Mount_900 = "MOUNTMG42_900",
	Repair_354 = "REPAIRMG42_354",
	Repair_624 = "REPAIRMG42_624",
	Repair_647 = "REPAIRMG42_647",
	Repair_900 = "REPAIRMG42_900",
	Snipe_855 = "SNIPE_855",
	Snipe_877 = "SNIPE_877",
	Snipe_879 = "SNIPE_879",
	Snipe_886 = "SNIPE_886",
	Snipe_887 = "SNIPE_887",
	Snipe_888 = "SNIPE_888",
	Snipe_889 = "SNIPE_889",
	Snipe_890 = "SNIPE_890",
	Snipe_895 = "SNIPE_895",
	Snipe_axis_snipe = "SNIPE_axis_snipe",

	Allied_Command_Post_Built = function( trigger )
	{
		Util.EnableGoal("AMMOCAB_allied_ammocabinet");
		Util.EnableGoal("HEALTHCAB_allied_healthcabinet");
		Util.EnableGoal("HEALTHCAB_94");
		Util.EnableGoal("AMMOCAB_95");


		Util.MapDebugPrint( "Allied_Command_Post_Built" );
	},

	Axis_Command_Post_Built = function( trigger )
	{
		Util.EnableGoal("AMMOCAB_axis_ammocabinet");
		Util.EnableGoal("HEALTHCAB_axis_healthcabinet");
		Util.EnableGoal("HEALTH_470");
		Util.EnableGoal("AMMO_471");

		Util.MapDebugPrint("axis Command_Post_Built");
	},

	Allied_Command_Post_Destroyed = function( trigger )
	{
		Util.MapDebugPrint( "Allied_Command_Post_Destroyed" );
	},

	Axis_Command_Post_Destroyed = function( trigger )
	{
		Util.MapDebugPrint( "Axis_Command_Post_Destroyed" );
	},

	Communications_Tower_Destroyed = function( trigger )
	{
		Util.MapDebugPrint( "Communications_Tower_Destroyed" );
	},

	Gate_Hatch_Destroyed = function( trigger )
	{
		SetAvailableMapGoals( TEAM.AXIS, true, {
			"PLANT_Communications_Tower",
			"PLANT_Warehouse_Entrance",
			"ATTACK_t.*",
		});
		Wp.SetWaypointFlag( "hatch1", "closed", false );
		Util.MapDebugPrint("Gate hatch blown");

		Util.MapDebugPrint( "Gate_Hatch_Destroyed" );
	},

	Warehouse_Entrance_Destroyed = function( trigger )
	{
		SetAvailableMapGoals( TEAM.AXIS, true, "ROUTE_ax25" );

		Util.MapDebugPrint("warehouse  blown");
	},

	ForwardSpawn_flag_Axis_Captured = function( trigger )
	{
		Util.MapDebugPrint( "ForwardSpawn_flag_Axis_Captured" );
	},

	ForwardSpawn_flag_Allies_Captured = function( trigger )
	{
		Util.MapDebugPrint( "ForwardSpawn_flag_Allies_Captured" );
	},

	door_open = function(trigger)
	{

		vel = ToVector(trigger.Action);

		if ( vel.y > 0 )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, {
				"PLANT_Communications_Tower",
				"ATTACK_t.*",
			});
			SetAvailableMapGoals( TEAM.ALLIES, true, "CHECKPOINT_ForwardSpawn_flag" );
			//~	SetAvailableMapGoals( TEAM.ALLIES, true, "ARTILLERY_D_arty1" );
			//~	SetAvailableMapGoals( TEAM.ALLIES, true, "ARTILLERY_D_arty2" );
			SetAvailableMapGoals( TEAM.ALLIES, true, {
				"CALLARTILLERY_call1",
				"CALLARTILLERY_call2",
			});
			SetAvailableMapGoals( TEAM.AXIS, false, "SWITCH_door2" );
			SetAvailableMapGoals( TEAM.ALLIES, true, "SWITCH_door3" );

			Map.DoorStatus = 1;
			Util.MapDebugPrint( "door open" );
		}
		else if ( vel.y < 0 )
		{
				SetAvailableMapGoals( TEAM.ALLIES, false, "SWITCH_door3" );
				SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_door2" );
				Map.DoorStatus = 0;
				Util.MapDebugPrint("^1 door closed", true);
		}
	},

	hanger_open = function(trigger)
	{

		vel = ToVector(trigger.Action);

		if ( vel.y < 0 )
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "SWITCH_door1" );
			SetAvailableMapGoals( TEAM.ALLIES, true, "SWITCH_door1" );

			Util.MapDebugPrint( "hangerOpen", true );
		}
		else if ( vel.y > 0 )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_door1" );
			SetAvailableMapGoals( TEAM.ALLIES, false, "SWITCH_door1" );

			Util.MapDebugPrint("^1hangerClosed", true);
		}
	},
};

global OnMapLoad = function()
{
	OnTrigger( "Allied Command Post constructed. Charge speed increased!", Map.Allied_Command_Post_Built );
	OnTrigger( "Axis Command Post constructed. Charge speed increased!", Map.Axis_Command_Post_Built );
	OnTrigger( "MISSING_STRING", Map.Allied_Command_Post_Destroyed );
	OnTrigger( "MISSING_STRING", Map.Axis_Command_Post_Destroyed );
	OnTrigger( "MISSING_STRING", Map.Communications_Tower_Destroyed );
	OnTrigger( "Axis team breached the Gate Hatch!", Map.Gate_Hatch_Destroyed );
	OnTrigger( "Axis team breached the Warehouse Door!", Map.Warehouse_Entrance_Destroyed );
	OnTrigger( "MISSING_STRING", Map.ForwardSpawn_flag_Axis_Captured );
	OnTrigger( "MISSING_STRING", Map.ForwardSpawn_flag_Allies_Captured );
	OnTrigger( "big_gate1_goto", Map.door_open );
	OnTrigger( "hangar_lever1_goto", Map.hanger_open );


	Util.DisableGoal(".*");
	SetAvailableMapGoals( TEAM.ALLIES, true, "DEFEND_def.*" );
	SetAvailableMapGoals( TEAM.ALLIES, false, "DEFEND_def_dyno" );

	SetAvailableMapGoals( TEAM.ALLIES, true, {
		"BUILD_Allied_Command_Post",
		"MOUNTMG42_354",
		"REPAIRMG42_354",
	});
//	SetAvailableMapGoals( TEAM.ALLIES, true, "GRENADE_ally2" );
//	SetAvailableMapGoals( TEAM.ALLIES, true, "GRENADE_ally1" );

	SetAvailableMapGoals( TEAM.AXIS, true, {
		"BUILD_Axis_Command_Post",
		"PLANT_Gate_Hatch",
		"CHECKPOINT_ForwardSpawn_flag",
		"GRENADE_g1",
		"GRENADE_radio",
		"GRENADE_axis4",
		"SNIPE_ax1",
		"SWITCH_door2",
		"SWITCH_door1",
		"MOUNTMG42_900",
		"REPAIRMG42_900",
	});

	SetAvailableMapGoals( TEAM.ALLIES, true, "SWITCH_door3" );


	Util.SetMaxUsers( 1, "DEFEND_.*" );
	Util.SetMaxUsers( 2, "CHECKPOINT_.*" );
	Util.SetMaxUsers( 1, "MOUNTMG42_.*" );
	Util.SetMaxUsers( 1, "REPAIRMG42_.*" );
	Util.SetMaxUsers( 1, "GRENADE_.*" );
	Util.SetMaxUsers( 1, "SWITCH_.*" );


	Util.SetGoalPosition( 1665.7, 2648.9, -279.875, "PLANT_Warehouse_Entrance" ) ;
	Util.SetGoalPosition( 988.66, 833.859, 114.125, "REPAIRMG42_900" ) ;


	SetMapGoalProperties( "DEFEND_.*", {MinCampTime=30, MaxCampTime=90} );
	SetMapGoalProperties( "MOUNT_.*", {MinCampTime=30, MaxCampTime=90} );
	SetMapGoalProperties( "MOBILEMG42_.*", {MinCampTime=30, MaxCampTime=90} );
	SetMapGoalProperties( "MOUNTMG42_.*", {MinCampTime=60, MaxCampTime=90} );
	SetMapGoalProperties( "ATTACK_.*", {MinCampTime=30, MaxCampTime=90} );
	SetMapGoalProperties( "SNIPE_.*", {MinCampTime=30, MaxCampTime=90} );



	SetGoalPriority( "PLANT_Warehouse_Entrance", 0.0, TEAM.AXIS, CLASS.COVERTOPS );
	SetGoalPriority( "SNIPE_.*", 0.95, TEAM.AXIS, CLASS.COVERTOPS );
	Util.EnableGoal("ROUTE_.*"); //enables for both teams
//	SetAvailableMapGoals( TEAM.AXIS, false, "ROUTE_ax25" );


	Wp.SetWaypointFlag( "hatch1", "closed", true );

	MapRoutes =

	{
		DEFEND_def1 =
		{
			ROUTE_a1  =
			{
				ROUTE_a2  =
				{
					ROUTE_a3  = {},
					ROUTE_a4  = {Weight = 4,},
						ROUTE_a199  =
						{
							ROUTE_ax15  =
							{
								ROUTE_a5  =
								{
									ROUTE_a6  =
									{
									},
								},
							},
						},

					ROUTE_a99  = {Weight = 2,},
						ROUTE_ax15  =
						{
							ROUTE_a5  =
							{
								ROUTE_a6  =
								{
								},
							},
						},

				},
			},
		},




		PLANT_Communications_Tower =
		{
			ROUTE_ax1  =
			{
				ROUTE_ax18  = {Weight = 2},
					ROUTE_18a  =
					{
						ROUTE_ax19  =
						{
							ROUTE_ax19a  =
							{
								ROUTE_ax20  =
								{
									ROUTE_ax21  =
									{
										ROUTE_ax22  =
										{
											ROUTE_ax23  =
											{
												ROUTE_ax24  =
												{
													ROUTE_ax25  =
													{
														ROUTE_a5  =
														{
															ROUTE_a6  =
															{
															},
														},
													},
												},
											},
										},
									},
								},
							},
						},
					},

				ROUTE_flag8  =
				{
					ROUTE_ax17  =
					{
						ROUTE_ax13  =
						{
							ROUTE_ax12  =
							{
								ROUTE_ax14  =
								{
									ROUTE_ax15  =
									{
										ROUTE_a5  =
										{
											ROUTE_a6  =
											{
											},
										},
									},
								},
							},
						},
					},
				},
				ROUTE_ax6  =
				{
					ROUTE_ax7  =
					{
						ROUTE_ax8  =
						{
							ROUTE_ax9  =
							{
								ROUTE_ax10  =
								{
									ROUTE_ax11  =
									{
										ROUTE_ax12  =
										{
											ROUTE_ax15  =
											{
												ROUTE_a5  =
												{
													ROUTE_a6  =
													{
													},
												},
											},
										},
									},
								},
							},
						},
					},
				},
			},
		},


		CHECKPOINT_ForwardSpawn_flag =
		{
			ROUTE_a1  =
			{
				ROUTE_flag1  =
				{
					ROUTE_flag2  =
					{
						ROUTE_flag3  =
						{
							ROUTE_flag4  =
							{
								ROUTE_flag5  =
								{
									ROUTE_flag6  =
									{
										ROUTE_flag7  =
										{
										},
										ROUTE_flag9  =
										{
										},
										ROUTE_flag8  =
										{
										},
									},
								},
							},
						},
					},
				},
			},
		},
	};

	MapRoutes.DEFEND_def2 = MapRoutes.DEFEND_def1;
	MapRoutes.DEFEND_def3 = MapRoutes.DEFEND_def1;
	MapRoutes.DEFEND_def4 = MapRoutes.DEFEND_def1;
	MapRoutes.DEFEND_def5 = MapRoutes.DEFEND_def1;
	MapRoutes.DEFEND_def6 = MapRoutes.DEFEND_def1;
	MapRoutes.BUILD_Allied_Command_Post = MapRoutes.DEFEND_def1;
	MapRoutes.ATTACK_t1 = MapRoutes.PLANT_Communications_Tower;
	MapRoutes.ATTACK_t2 = MapRoutes.PLANT_Communications_Tower;
	MapRoutes.ATTACK_t3 = MapRoutes.PLANT_Communications_Tower;
	MapRoutes.ATTACK_t4 = MapRoutes.PLANT_Communications_Tower;
	MapRoutes.ATTACK_t5 = MapRoutes.PLANT_Communications_Tower;
	MapRoutes.PLANT_Warehouse_Entrance = MapRoutes.PLANT_Communications_Tower;
	MapRoutes.SWITCH_door3 = MapRoutes.CHECKPOINT_ForwardSpawn_flag;

	Util.Routes(MapRoutes);
//~	Util.UpdateSwitchData();
	Util.MapDebugPrint("OnMapLoad");


	//copy some routes
	MapRoutes.DEFEND_def2 = MapRoutes.DEFEND_def1;
	MapRoutes.DEFEND_def3 = MapRoutes.DEFEND_def1;
	MapRoutes.DEFEND_def4 = MapRoutes.DEFEND_def1;
	MapRoutes.DEFEND_def5 = MapRoutes.DEFEND_def1;
	MapRoutes.DEFEND_def6 = MapRoutes.DEFEND_def1;

	MapRoutes.BUILD_Allied_Command_Post = MapRoutes.DEFEND_def1;
	MapRoutes.ATTACK_t1 = MapRoutes.PLANT_Communications_Tower;
	MapRoutes.ATTACK_t2 = MapRoutes.PLANT_Communications_Tower;
	MapRoutes.ATTACK_t3 = MapRoutes.PLANT_Communications_Tower;
	MapRoutes.ATTACK_t4 = MapRoutes.PLANT_Communications_Tower;
	MapRoutes.ATTACK_t5 = MapRoutes.PLANT_Communications_Tower;
	MapRoutes.PLANT_Warehouse_Entrance = MapRoutes.PLANT_Communications_Tower;

	Util.Routes(MapRoutes);
	Util.MapDebugPrint("OnMapLoad");
};

global OnBotJoin = function( bot )
{
	 bot.TargetBreakableDist = 100.0;
	 bot.MaxViewDistance = 3000.5;
};
