//==========================================================================================
//
//	uje_amsterdam_final.gm
//
//	Who  	When		What
//------------------------------------------------------------------------------------------
//	|TP|kaos	30 November 2011	r3 Script
//
//==========================================================================================
//

global Map =
{
	Debug = 0, // please set to zero before distributing your script

	Bank_Sewer_Door_Dyno = 0,
	Bank_side_door_Dyno = 0,
	Command_Post_Dyno = 0,
	Field_Radio_Dyno = 0,
	Safe_Dyno = 0,
	Tank_Barrier_1_Dyno = 0,
	Tank_Barrier_2_Dyno = 0,
	Talk = true,

	Ammo_Cabinet_ammo2 = "AMMOCAB_ammo2",
	Ammo_Cabinet_south_ammocabinet = "AMMOCAB_south_ammocabinet",
	Health_Cabinet_health2 = "HEALTHCAB_health2",
	Health_Cabinet_south_healthcabinet = "HEALTHCAB_south_healthcabinet",
	Call_Artillery_bar1 = "CALLARTILLERY_bar1",
	Call_Artillery_bar2 = "CALLARTILLERY_bar2",
	Artillery_D_bar1 = "ARTILLERY_D_bar1",
	Artillery_D_bar2 = "ARTILLERY_D_bar2",
	Flag_secret_documents = "FLAG_secret_documents",
	Cappoint_Fake = "CAPPOINT_Fake",
	Cappoint_Real = "CAPPOINT_Real",
	Build_Bank_Sewer_Door = "BUILD_Bank_Sewer_Door",
	Build_Bank_side_door = "BUILD_Bank_side_door",
	Build_Command_Post = "BUILD_Command_Post",
	Build_Field_Radio = "BUILD_Field_Radio",
	Build_Tank = "BUILD_Tank",
	Build_Tank_Barrier_1 = "BUILD_Tank_Barrier_1",
	Build_Tank_Barrier_2 = "BUILD_Tank_Barrier_2",
	Plant_Bank_Sewer_Door = "PLANT_Bank_Sewer_Door",
	Plant_Bank_side_door = "PLANT_Bank_side_door",
	Plant_Command_Post = "PLANT_Command_Post",
	Plant_Field_Radio = "PLANT_Field_Radio",
	Plant_Safe = "PLANT_Safe",
	Plant_Tank_Barrier_1 = "PLANT_Tank_Barrier_1",
	Plant_Tank_Barrier_2 = "PLANT_Tank_Barrier_2",
	Mobile_MG42_bar1 = "MOBILEMG42_bar1",
	Mobile_MG42_bar2 = "MOBILEMG42_bar2",
	Mover_tank = "MOVER_tank",

	Bank_Sewer_Door_Built = function( trigger )
	{
		SetAvailableMapGoals( TEAM.ALLIES, false, "DEFEND_bks1.*" );

		Util.MapDebugPrint( "Bank_Sewer_Door_Built" );
	},

	Bank_side_door_Built = function( trigger )
	{
		SetAvailableMapGoals( TEAM.ALLIES, false, "DEFEND_bks2.*" );

		Util.MapDebugPrint( "Bank_side_door_Built" );
	},

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

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

	Field_Radio_Built = function( trigger )
	{

		Map.Safe_Destroyed = 1; // if Safe destroyed...
		SetAvailableMapGoals( TEAM.AXIS, true, "CAPPOINT_Real" );
		SetAvailableMapGoals( TEAM.AXIS, false, "CAPPOINT_Fake" );
		SetAvailableMapGoals( TEAM.AXIS, true, {
			"ATTACK_ra_1",
			"ATTACK_ra_2",
		});

		Util.MapDebugPrint( "Field_Radio_Built" );
	},

	Tank_Built = function( trigger )
	{
		SetAvailableMapGoals( TEAM.AXIS, true, {
			"ESCORT_tank",
			"MOUNT_tank_Axis",
		});
		if ( Map.Talk && MAP_TALK )
		{
			Util.BotChat(TEAM.AXIS, "vsay", VOICE.ESCORT_VEHICLE, 1);
			Util.BotChat(TEAM.ALLIES, "vsay", VOICE.DESTROY_VEHICLE, 1);
		}

		Util.MapDebugPrint( "Tank_Built" );
	},

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

	Tank_Barrier_2_Built = function( trigger )
	{

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

		Util.MapDebugPrint( "Tank_Barrier_2_Built" );
	},

	Bank_Sewer_Door_Planted = function( trigger )
	{
		Map.Bank_Sewer_Door_Dyno += 1;
		Util.MapDebugPrint( "Bank_Sewer_Door_Planted" );
	},

	Bank_side_door_Planted = function( trigger )
	{
		Map.Bank_side_door_Dyno += 1;
		Util.MapDebugPrint( "Bank_side_door_Planted" );
	},

	Command_Post_Planted = function( trigger )
	{
		Map.Command_Post_Dyno += 1;
		Util.MapDebugPrint( "Command_Post_Planted" );
	},

	Field_Radio_Planted = function( trigger )
	{
		Map.Field_Radio_Dyno += 1;
		Util.MapDebugPrint( "Field_Radio_Planted" );
	},

	Safe_Planted = function( trigger )
	{
		Map.Safe_Dyno += 1;
		if ( Map.Talk && MAP_TALK )
		{
			foreach ( id and bot in BotTable )
			{
				if ( bot.GetTeam() == TEAM.AXIS )
				{
					bot.ExecCommand("vsay_team FTAttack");
				}
				if ( bot.GetTeam() == TEAM.ALLIES )
				{
					bot.SayVoice(VOICE.REINFORCE_DEF);
				}
			}
		}
		Util.MapDebugPrint( "Safe_Planted" );
	},

	Tank_Barrier_1_Planted = function( trigger )
	{
		Map.Tank_Barrier_1_Dyno += 1;
		Util.MapDebugPrint( "Tank_Barrier_1_Planted" );
	},

	Tank_Barrier_2_Planted = function( trigger )
	{
		Map.Tank_Barrier_2_Dyno += 1;
		Util.MapDebugPrint( "Tank_Barrier_2_Planted" );
	},

	Bank_Sewer_Door_Defused = function( trigger )
	{
		Map.Bank_Sewer_Door_Dyno -= 1;
		Util.MapDebugPrint( "Bank_Sewer_Door_Defused" );
	},

	Bank_side_door_Defused = function( trigger )
	{
		Map.Bank_side_door_Dyno -= 1;
		Util.MapDebugPrint( "Bank_side_door_Defused" );
	},

	Allied_Command_Post_Defused = function( trigger )
	{
		Map.Command_Post_Dyno -= 1;
		Util.MapDebugPrint( "Allied_Command_Post_Defused" );
	},

	Axis_Command_Post_Defused = function( trigger )
	{
		Map.Command_Post_Dyno -= 1;
		Util.MapDebugPrint( "Axis_Command_Post_Defused" );
	},

	Field_Radio_Defused = function( trigger )
	{
		Map.Field_Radio_Dyno -= 1;
		Util.MapDebugPrint( "Field_Radio_Defused" );
	},

	Safe_Defused = function( trigger )
	{
		Map.Safe_Dyno -= 1;
		Util.MapDebugPrint( "Safe_Defused" );
	},

	Tank_Barrier_1_Defused = function( trigger )
	{
		Map.Tank_Barrier_1_Dyno -= 1;
		Util.MapDebugPrint( "Tank_Barrier_1_Defused" );
	},

	Tank_Barrier_2_Defused = function( trigger )
	{
		Map.Tank_Barrier_2_Dyno -= 1;
		Util.MapDebugPrint( "Tank_Barrier_2_Defused" );
	},

	Bank_Sewer_Door_Destroyed = function( trigger )
	{
		Map.Bank_Sewer_Door_Dyno = 0;

		SetAvailableMapGoals( TEAM.ALLIES, true, "DEFEND_bks1.*" );

		Util.MapDebugPrint( "Bank_Sewer_Door_Destroyed" );
	},

	Bank_side_door_Destroyed = function( trigger )
	{
		Map.Bank_side_door_Dyno = 0;

		SetAvailableMapGoals( TEAM.ALLIES, true, "DEFEND_bks.2*" );

		Util.MapDebugPrint( "Bank_side_door_Destroyed" );
	},

	Allied_Command_Post_Destroyed = function( trigger )
	{
		Map.Command_Post_Dyno = 0;

		Util.MapDebugPrint( "Allied_Command_Post_Destroyed" );
	},

	Axis_Command_Post_Destroyed = function( trigger )
	{
		Map.Command_Post_Dyno = 0;

		Util.MapDebugPrint( "Axis_Command_Post_Destroyed" );
	},

	Field_Radio_Destroyed = function( trigger )
	{
		Map.Field_Radio_Dyno = 0;
		SetAvailableMapGoals( TEAM.AXIS, false, {
			"ATTACK_ra_1",
			"ATTACK_ra_2",
			"CAPPOINT_Real",
		});
		SetAvailableMapGoals( TEAM.AXIS, true, "CAPPOINT_Fake" );

		Util.MapDebugPrint( "Field_Radio_Destroyed" );
	},

	Safe_Destroyed = function( trigger )
	{
		Map.Safe_Dyno = 0;
		SetAvailableMapGoals( TEAM.AXIS, true, "CAPPOINT_Fake" );
		SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Safe" );
		SetAvailableMapGoals( TEAM.AXIS, true, "FLAG_secret_documents" );
		SetAvailableMapGoals( TEAM.AXIS, false, "MOUNT_tank_Axis" );
		SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Field_Radio" );

		Util.MapDebugPrint( "Safe_Destroyed" );
	},

	Tank_Barrier_1_Destroyed = function( trigger )
	{
		Map.Tank_Barrier_1_Dyno = 0;

		Util.MapDebugPrint( "Tank_Barrier_1_Destroyed" );
	},

	Tank_Barrier_2_Destroyed = function( trigger )
	{
		Map.Tank_Barrier_2_Dyno = 0;

		Util.MapDebugPrint( "Tank_Barrier_2_Destroyed" );
	},

	secret_documents_Taken = function( trigger )
	{

		SetAvailableMapGoals( TEAM.ALLIES, false, {
			"BUILD_Bank_Sewer_Door",
			"BUILD_Bank_side_door",
		});
		SetAvailableMapGoals( TEAM.ALLIES, true, "DEFEND_ra.*" );
		SetAvailableMapGoals( TEAM.ALLIES, false, {
			"DEFEND_bk.*",
			"DEFEND_bks.*",
		});
		SetAvailableMapGoals( TEAM.AXIS, false, "ATTACK_bk.*" );
		SetAvailableMapGoals( TEAM.AXIS, true, "ATTACK_ra.*" );
		SetGoalPriority( "DEFEND_ra.*", 0.90 );
		SetGoalPriority( "BUILD_Field_Radio", 1.0 );
		SetGoalPriority( "PLANT_Field_Radio", 1.0 );
		if ( Map.Talk && MAP_TALK )
		{
			Util.BotChat(TEAM.AXIS, "vsay", VOICE.LETS_GO, 1);
		}
		if ( Map.Field_Radio_Built == 1) // if FieldRadio constructed...
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "CAPPOINT_Fake" );
		}

		Util.MapDebugPrint( "secret_documents_Taken" );
	},

	secret_documents_Returned = function( trigger )
	{
		SetAvailableMapGoals( TEAM.ALLIES, true, {
			"BUILD_Bank_Sewer_Door",
			"BUILD_Bank_side_door",
		});
		SetAvailableMapGoals( TEAM.ALLIES, false, "DEFEND_ra.*" );
		SetAvailableMapGoals( TEAM.ALLIES, true, {
			"DEFEND_bk.*",
			"DEFEND_bks.*",
		});
		SetAvailableMapGoals( TEAM.AXIS, true, "ATTACK_bk.*" );
		SetAvailableMapGoals( TEAM.AXIS, false, "ATTACK_ra.*" );

		Util.MapDebugPrint( "secret_documents_Returned" );
	},

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

	Bridge1Passed =
 	{
 		Name="Bridge1Passed",
 		TriggerOnEntity = GetGoal("MOVER_tank").GetEntity(),
 		OnEnter = function(ent)
 		{
		},
 		OnExit = function(ent)
 		{
			SetAvailableMapGoals( TEAM.ALLIES, true, "CALLARTILLERY_bar1" );
			SetAvailableMapGoals( TEAM.ALLIES, false, "DEFEND_bri1.*" );
			SetAvailableMapGoals( TEAM.AXIS, false, "ATTACK_bri1.*" );
			SetAvailableMapGoals( TEAM.AXIS, true, "ATTACK_bar1.*" );

			Util.MapDebugPrint( "Bridge1Passed" );
 		},
	},

	Barrier1Passed =
 	{
 		Name="Barrier1Passed",
 		TriggerOnEntity = GetGoal("MOVER_tank").GetEntity(),
 		OnEnter = function(ent)
 		{
			SetGoalPriority( "PLANT_Tank_Barrier_1", 1.10, TEAM.AXIS, CLASS.ENGINEER );
			SetGoalPriority( "BUILD_Tank", 1.0 );
			SetGoalPriority( "MOUNT_tank_Axis", 0.98 );
			SetGoalPriority( "ESCORT_tank", 0.50 );
		},
 		OnExit = function(ent)
 		{
			SetAvailableMapGoals( TEAM.ALLIES, false, {
				"CALLARTILLERY_bar1",
				"MOBILEMG42_bar1",
				"DEFEND_bar1.*",
			});
			SetAvailableMapGoals( TEAM.ALLIES, true, {
				"DEFEND_bri2.*",
				"MOBILEMG42_bar2",
				"DEFEND_bar2.*",
				"BUILD_Tank_Barrier_2",
				"BUILD_Tank_Barrier_2",
				"BUILD_Command_Post",
			});
			SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Tank_Barrier_1" );
			SetAvailableMapGoals( TEAM.AXIS, false, "ATTACK_bar1.*" );
			SetAvailableMapGoals( TEAM.AXIS, true, {
				"ATTACK_bri2_1",
				"ATTACK_bri2_2",
				"ATTACK_bri2_3",
				"ATTACK_bri2_4",
			});
			SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Tank_Barrier_1" );
			SetAvailableMapGoals( TEAM.AXIS, true, {
				"PLANT_Tank_Barrier_2",
				"BUILD_Command_Post",
			});
			SetGoalPriority( "MOUNT_tank_Axis", 0.99 );
			SetGoalPriority( "ESCORT_tank", 0.98 );
			SetGoalPriority( "BUILD_Tank_Barrier_2", 1.0, TEAM.ALLIES, CLASS.ENGINEER );

 			Util.MapDebugPrint( "Barrier1Passed" );
 		},
	},

	Bridge2Passed =
 	{
 		Name="Bridge2Passed",
 		TriggerOnEntity = GetGoal("MOVER_tank").GetEntity(),
 		OnEnter = function(ent)
 		{
		},
 		OnExit = function(ent)
 		{
 			SetAvailableMapGoals( TEAM.ALLIES, true, "CALLARTILLERY_bar2" );
			SetAvailableMapGoals( TEAM.ALLIES, false, "DEFEND_bri2.*" );
			SetAvailableMapGoals( TEAM.AXIS, false, "ATTACK_bri2.*" );
			SetAvailableMapGoals( TEAM.AXIS, true, "ATTACK_bar2.*" );

			Util.MapDebugPrint( "Bridge2Passed" );
 		},
	},

	Barrier2Passed =
 	{
 		Name="Barrier2Passed",
 		TriggerOnEntity = GetGoal("MOVER_tank").GetEntity(),
 		OnEnter = function(ent)
 		{
			SetGoalPriority( "PLANT_Tank_Barrier_2", 1.10, TEAM.AXIS, CLASS.ENGINEER );
			SetGoalPriority( "BUILD_Tank", 1.0 );
			SetGoalPriority( "MOUNT_tank_Axis", 0.98 );
			SetGoalPriority( "ESCORT_tank", 0.50 );
		},
 		OnExit = function(ent)
 		{
			SetAvailableMapGoals( TEAM.ALLIES, false, {
				"CALLARTILLERY_bar2",
				"MOBILEMG42_bar2",
				"DEFEND_bar2.*",
			});
			SetAvailableMapGoals( TEAM.ALLIES, true, "DEFEND_bd.*" );
			SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Tank_Barrier_2" );
			SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Tank_Barrier_2" );
			SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Command_Post" );
			SetAvailableMapGoals( TEAM.AXIS, false, "ATTACK_bar2.*" );
			SetAvailableMapGoals( TEAM.AXIS, true, "ATTACK_bd.*" );
			SetGoalPriority( "BUILD_Tank", 1.0 );
			SetGoalPriority( "MOUNT_tank_Axis", 0.99 );
			SetGoalPriority( "ESCORT_tank", 0.98 );

  			Util.MapDebugPrint( "Barrier2Passed" );
 		},
	},

	New_Spawn_Allied = function( trigger )
	{
		SetAvailableMapGoals( TEAM.AXIS, false, {
			"ATTACK_bri2_1",
			"ATTACK_bri2_2",
			"ATTACK_bri2_3",
			"ATTACK_bri2_4",
		});
		SetAvailableMapGoals( TEAM.AXIS, true, {
			"ATTACK_bri2_5",
			"ATTACK_bri2_6",
			"ATTACK_bri2_7",
			"ATTACK_bri2_8",
		});

		Util.MapDebugPrint( "New_Spawn_Allied" );
	},

	Bank_Door_Destroyed = function( trigger )
	{
		SetAvailableMapGoals( TEAM.ALLIES, true, {
			"DEFEND_bk.*",
			"DEFEND_bks.*",
		});
		SetAvailableMapGoals( TEAM.ALLIES, false, {
			"DEFEND_bd.*",
			"MOUNT_tank_Axis",
		});
		SetAvailableMapGoals( TEAM.ALLIES, true, {
			"PLANT_Field_Radio",
			"BUILD_Bank_Sewer_Door",
			"BUILD_Bank_side_door",
		});
		SetAvailableMapGoals( TEAM.AXIS, false, {
			"BUILD_Tank",
			"ESCORT_tank",
			"MOUNT_tank_Axis",
			"MOVER_tank",
		});
		SetAvailableMapGoals( TEAM.AXIS, true, {
			"PLANT_Bank_Sewer_Door",
			"PLANT_Bank_side_door",
			"PLANT_Safe",
		});
		SetAvailableMapGoals( TEAM.AXIS, false, "ATTACK_bd.*" );
		SetAvailableMapGoals( TEAM.AXIS, true, "ATTACK_bk.*" );
		SetGoalPriority( "BUILD_Bank_Sewer_Door", 1.0, TEAM.ALLIES, CLASS.ENGINEER );
		SetGoalPriority( "BUILD_Bank_side_door", 1.0, TEAM.ALLIES, CLASS.ENGINEER );
		SetGoalPriority( "PLANT_Bank_Sewer_Door", 1.0, TEAM.AXIS, CLASS.COVERTOPS );
		SetGoalPriority( "PLANT_Bank_Sewer_Door", 1.0, TEAM.AXIS, CLASS.COVERTOPS );
		SetGoalPriority( "PLANT_Field_Radio", 1.0, TEAM.ALLIES, CLASS.COVERTOPS );
		SetGoalPriority( "PLANT_Safe", 1.10, TEAM.AXIS, CLASS.ENGINEER );

		Util.MapDebugPrint( "Bank_Door_Destroyed" );
	},

};

global OnMapLoad = function()
{
	// Register callback functions
	OnTrigger( "Allied new spawn", Map.New_Spawn_Allied );
	OnTrigger( "The Sewer Door has been contructed", Map.Bank_Sewer_Door_Built );
	OnTrigger( "The Side Door has been contructed", Map.Bank_side_door_Built );
	OnTrigger( "Allied Command Post constructed. Charge speed increased!^3 CP Spawn activated!", Map.Allied_Command_Post_Built );
	OnTrigger( "Axis Command Post constructed. Charge speed increased!^3 CP Spawn activated!", Map.Axis_Command_Post_Built );
	OnTrigger( "^3The Axis Field Radio has been constructed.", Map.Field_Radio_Built );
	OnTrigger( "^3The Tank has been repaired!", Map.Tank_Built );
	OnTrigger( "^7Tank Barrier #1 has been constructed.", Map.Tank_Barrier_1_Built );
	OnTrigger( "^3Tank Barrier #2 has been constructed.", Map.Tank_Barrier_2_Built );
	OnTrigger( "Planted at the MISSING_STRING.", Map.Bank_Sewer_Door_Planted );
	OnTrigger( "Planted at the MISSING_STRING.", Map.Bank_side_door_Planted );
	OnTrigger( "Planted at the MISSING_STRING.", Map.Command_Post_Planted );
	OnTrigger( "Planted at the MISSING_STRING.", Map.Field_Radio_Planted );
	OnTrigger( "Planted at the Safe.", Map.Safe_Planted );
	OnTrigger( "Planted at the MISSING_STRING.", Map.Tank_Barrier_1_Planted );
	OnTrigger( "Planted at the MISSING_STRING.", Map.Tank_Barrier_2_Planted );
	OnTrigger( "Defused at the MISSING_STRING.", Map.Bank_Sewer_Door_Defused );
	OnTrigger( "Defused at the MISSING_STRING.", Map.Bank_side_door_Defused );
	OnTrigger( "Defused at the MISSING_STRING.", Map.Allied_Command_Post_Defused );
	OnTrigger( "Defused at the MISSING_STRING.", Map.Axis_Command_Post_Defused );
	OnTrigger( "Defused at the MISSING_STRING.", Map.Field_Radio_Defused );
	OnTrigger( "Defused at the MISSING_STRING.", Map.Safe_Defused );
	OnTrigger( "Defused at the MISSING_STRING.", Map.Tank_Barrier_1_Defused );
	OnTrigger( "Defused at the MISSING_STRING.", Map.Tank_Barrier_2_Defused );
	OnTrigger( "The Sewer Door has been destroyed", Map.Bank_Sewer_Door_Destroyed );
	OnTrigger( "The Side Door has been destroyed", Map.Bank_side_door_Destroyed );
	OnTrigger( "Axis team has destroyed the Allied Command Post!", Map.Allied_Command_Post_Destroyed );
	OnTrigger( "Allied team has destroyed the Axis Command Post!", Map.Axis_Command_Post_Destroyed );
	OnTrigger( "^3Allies have destroyed the Axis Field Radio.", Map.Field_Radio_Destroyed );
	OnTrigger( "Axis have destroyed the ^3Safe Door^1 !", Map.Safe_Destroyed );
	OnTrigger( "^7Tank Barrier #1 has been destroyed.", Map.Tank_Barrier_1_Destroyed );
	OnTrigger( "^3Tank Barrier #2 has been destroyed.", Map.Tank_Barrier_2_Destroyed );
	OnTrigger( "^3 Axis have Destroyed the Bank Door !", Map.Bank_Door_Destroyed );
	OnTrigger( "Axis have stolen The secret documents!", Map.secret_documents_Taken );
	OnTrigger( "Allies have returned The secret documents!", Map.secret_documents_Returned );
	OnTrigger( "MISSING_STRING", Map.secret_documents_Secured );

	Barrier1Passed = OnTriggerRegion(AABB(-3532.207,-1269.951,-222.875,-3122.713,-1108.878,-148.875),Map.Barrier1Passed);
	Bridge1Passed = OnTriggerRegion(AABB(-2634.015,-267.338,-222.875,-2594.771,13.855,-140.875),Map.Bridge1Passed);
	Barrier2Passed = OnTriggerRegion(AABB(-984.049,-2503.502,-222.875,-806.966,-2009.717,-140.875),Map.Barrier2Passed);
	Bridge2Passed = OnTriggerRegion(AABB(-1516.758,-2387.675,-222.875,-1468.109,-2090.337,-140.875),Map.Bridge2Passed);

	//~Util.DisableGoal( ".*", true ); // all but routes
	//~SetAvailableMapGoals( TEAM.AXIS, true, "ATTACK_.*" );
	//~SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_.*" );

	//START ALLIES
	SetAvailableMapGoals( TEAM.ALLIES, false, {
		"ATTACK_.*",
		"CALLARTILLERY_.*",
	});
	SetAvailableMapGoals( TEAM.ALLIES, true, {
		"DEFEND_bri1.*",
		"MOBILEMG42_bar1",
	});
	SetAvailableMapGoals( TEAM.ALLIES, false, {
		"DEFEND_bar1.*",
		"DEFEND_bri2.*",
	});
	SetAvailableMapGoals( TEAM.ALLIES, true, "DEFEND_bar1_4" );
	SetAvailableMapGoals( TEAM.ALLIES, false, {
		"MOBILEMG42_bar2",
		"DEFEND_bar2.*",
		"DEFEND_bd.*",
		"DEFEND_bk.*",
		"DEFEND_bks.*",
		"DEFEND_ra.*",
		"BUILD_Bank_Sewer_Door",
		"BUILD_Bank_side_door",
		"BUILD_Command_Post",
		"BUILD_Tank_Barrier_2",
		"PLANT_Field_Radio",
	});
	SetGoalPriority( "BUILD_Tank_Barrier_1", 1.0, TEAM.ALLIES, CLASS.ENGINEER );

	//START AXIS
	SetAvailableMapGoals( TEAM.AXIS, false, {
		"ATTACK_.*",
		"CALLARTILLERY_.*",
		"MOBILEMG42_.*",
		"DEFEND_.*",
		"FLAG_secret_documents",
		"CAPPOINT_Real",
		"CAPPOINT_Fake",
		"PLANT_Bank_Sewer_Door",
		"PLANT_Bank_side_door",
		"PLANT_Safe",
		"BUILD_Command_Post",
		"BUILD_Field_Radio",
		"PLANT_Tank_Barrier_2",
	});
	SetAvailableMapGoals( TEAM.AXIS, true, "ATTACK_bri1.*" );
	//Until the tank will not see smoke ...
	SetAvailableMapGoals( TEAM.AXIS, false, {
		"ESCORT_tank",
		"MOUNT_tank_Axis",
	});
	SetGoalPriority( "BUILD_Tank", 1.0, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "ESCORT_Tank", 0.55, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "MOUNT_tank_Axis", 0.30, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "BUILD_Command_Post", 0.50 );
	SetGoalPriority( "PLANT_Command_Post", 0.41 );

	// Max users per goal
	Util.SetMaxUsers( 1, "DEFEND_.*" );
	Util.SetMaxUsers( 1, "GRENADE_.*" );
	Util.SetMaxUsers( 1, "MOUNTMG42_.*" );
	Util.SetMaxUsers( 1, "MOUNT_tank_Axis" );
	Util.SetMaxUsers( 3, "ESCORT_tank" );
	Util.SetMaxUsers( 1, "PLANT_.*" );


	// Camp times
	SetMapGoalProperties( "MOUNTMG42_.*", {MinCampTime=15, MaxCampTime=90} );
	SetMapGoalProperties( "MOBILEMG42_.*", {MinCampTime=10, MaxCampTime=90} );
	SetMapGoalProperties( "DEFEND_.*", {MinCampTime=15, MaxCampTime=30} );
	SetMapGoalProperties( "ATTACK_.*", {MinCampTime=15, MaxCampTime=30} );


	//Barrier Dynos
	Util.SetGoalPosition( -3174.334, -1143.861, -199.875, "PLANT_Tank_Barrier_1" );
	Util.SetGoalPosition( -961.730, -2064.388, -199.875, "PLANT_Tank_Barrier_2" );

	//Field Radio Destroy
	Util.SetGoalPosition( -1595.619, -1756.549, -327.875, "PLANT_Field_Radio" );

	Util.MapDebugPrint( "Omni-bot map script for " + GetMapName() + " executed." );
};
