//==========================================================================================
//
//	apennines_b2.gm
//
//	Who      		When		What
//------------------------------------------------------------------------------------------
//	Qiki			07 March 2011	Initial Script
//	Native12		18 March 2011	Start scripting
//	Native12		19 May 2011	First release
//	Native12		21 May 2011	Add routes
//	Native12		27 May 2011	Add routes, change of priorities....,release
//	Native12		15.05.2012	Reduced count of waypoints, minor fix in gm & goals
//
//------------------------------------------------------------------------------------------
//	apennines_b2.way	15.05.2012
//	apennines_b2_goals.gm	15.05.2012
//==========================================================================================

global Map =
{
	Talk = true,
	talk = 1,
	DefendingTeam = TEAM.AXIS,

	garagedoor1 = true,
	AxisDoor = true,
	garagedoor2 = 0,
	AlliedFlag = 0,
	AxisGarageRoofMG42 = 0,
	AlliedGarageRoofMG42 = 0,
	Generator = 1,
	AxisCP = 0,
	AlliedCP = 0,
	WindowMG42 = 0,
	CabinMG42 = 0,
	BridgeBuild = 0,
	CellarEntrance = true,
	AlliesPastRiver = 0,
	AlliedEngPastRiver = 0,
	AlliedCovertPastRiver = 0,
	ComplexMG42 = false,
	Footbridge = 0,
	CellarMG42 = 0,
	AxisChangeSpawn = 0,
	AlliedEngInComplex = 0,
	AlliesInComplex = 0,
	AlliesInCanyon = 0,
	AlliedEngInCanyon = 0,
	ReSpawn = 0,
	AxisEngPastRiver = 0,
	AxisEngInCanyon = 0,

	Axis_Door_Dyno = 0,
	Bridge_Dyno = 0,
	Cabin_MG42_Dyno = 0,
	Cellar_Entrance_Dyno = 0,
	Cellar_MG42_Dyno = 0,
	Command_Post_Dyno = 0,
	Communications_Radio_Dyno = 0,
	Complex_Roof_MG42_Dyno = 0,
	Footbridge_Dyno = 0,
	Garage_Door_Dyno = 0,
	Garage_Roof_MG42_Dyno = 0,
	Generator_Dyno = 0,
	Window_MG42_Dyno = 0,

	Navigation =
	{
		//  	/bot waypoint_setproperty paththrough Navigation_PT:ladder
		ladder =
		{
			navigate = function(_this)
			{
				wpTable = {};
				Wp.GetWaypointByName("Axis_Spawn_Ladder", wpTable);
				if ( _this.Goto(wpTable.position) == EVENT.PATH_SUCCESS )
				{
					_this.AddAimRequest(Priority.VeryHigh, "facing", wpTable.facing);
					_this.Bot.HoldButton(BTN.FORWARD, 0.5);
					sleep(0.5);
					_this.AddAimRequest( Priority.VeryHigh, "facing",Vector3( -0.011860, 0.034844, -0.999322 ) );
					_this.Bot.HoldButton(BTN.FORWARD, 1);
					sleep(1);
					_this.AddAimRequest( Priority.VeryHigh, "facing",Vector3( -0.014307,-0.962692,-0.270222 ) );
					_this.Bot.HoldButton(BTN.FORWARD, 0.7);
					sleep(0.7);
				}
			},
		},
	},

	Garage_Door_Planted = function( trigger )
	{
		Map.Garage_Door_Dyno += 1;

		SetAvailableMapGoals( TEAM.AXIS, false, {
			"AIRSTRIKE_Axis_Start_1",
			"AIRSTRIKE_Axis_Start_6",
		});

		SetAvailableMapGoals( TEAM.AXIS, true, {
			"SMOKEBOMB_Axis_GarageDoorPlanted",
			"DEFEND_Axis_Start_.*",
			"BUILD_Complex_Roof_MG42",
		});

		Util.MapDebugPrint( "^5Garage_Door_Planted" );
	},

	Garage_Door_Defused = function( trigger )
	{
		Map.Garage_Door_Dyno -= 1;

		if ( Map.Garage_Door_Dyno == 0 )
		{
			SetAvailableMapGoals( TEAM.AXIS, false, {
				"DEFEND_Axis_Start_.*",
				"SMOKEBOMB_Axis_GarageDoorPlanted",
			});

			if ( Map.garagedoor1 )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, {
					"AIRSTRIKE_Axis_Start_1",
					"AIRSTRIKE_Axis_Start_6",
				});
			}
		}

		Util.MapDebugPrint( "^5Garage_Door_Defused" );
	},

	Garage_Door_Destroyed = function( trigger )
	{

		if ( Map.Garage_Door_Dyno > 0 )
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Garage_Door_.*" );
		}

		Map.Garage_Door_Dyno = 0;
		Map.garagedoor1 = false;

		SetAvailableMapGoals( TEAM.ALLIES, false, {
			"PLANT_Garage_Door",
			".*_Allied_Start_.*",
			".*_Allied_StartBack_.*",
		});

		SetAvailableMapGoals( TEAM.AXIS, false, {
			"SMOKEBOMB_Axis_GarageDoorPlanted",
			"SMOKEBOMB_Axis_Start_13",
			"AIRSTRIKE_Axis_Start_1",
			"AIRSTRIKE_Axis_Start_6",
			"ARTILLERY_S_Axis_Start_5",
			"ARTILLERY_S_Axis_Start_8",
			"CALLARTILLERY_Axis_Start_4",
			"CALLARTILLERY_Axis_Start_10",
			".*_Axis_StartFront_.*",
		});

		SetAvailableMapGoals( TEAM.AXIS, true, {
			"SMOKEBOMB_Axis_Start_25",
			"AIRSTRIKE_Axis_Start_28",
			"ARTILLERY_S_Axis_Start_27",
			"CALLARTILLERY_Axis_Start_26",
		});

		Util.MapDebugPrint( "^5Garage_Door_Destroyed" );

		if ( Map.AlliedFlag == 1 )	//bunker is Allied
		{
			SetAvailableMapGoals( TEAM.AXIS, false, {
				".*_Axis_Start_.*",
				".*_Axis_StartBack_.*",
				"BUILD_Generator",
				"PLANTMINE_Axis_Start_20",
				"PLANTMINE_Axis_Start_21",
				"PLANTMINE_Axis_Start_22",
				"PLANTMINE_Axis_Start_23",
				"PLANTMINE_Axis_Start_24",
			});

			if ( Map.BridgeBuild == 0 )	//destroyed
			{
				SetAvailableMapGoals( TEAM.AXIS, true, {
					"PLANTMINE_Axis_CellarEntrance_.*",
					"PLANTMINE_Axis_NearBridge_.*",
					".*_Axis_NearBridge_.*",
					"AMMOCAB_south_ammocabinet_1",
					"HEALTHCAB_south_healthcabinet_1",
				});

				if ( Map.ComplexMG42 )	//built
				{
					SetAvailableMapGoals( TEAM.AXIS, true, {
						"MOUNTMG42_Complex_Roof_MG42",
						"REPAIRMG42_Complex_Roof_MG42",
					});
				}
				else	//destroyed
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Complex_Roof_MG42" );
				}
				if ( Map.CellarMG42 == 0 )	//destroyed
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Cellar_MG42" );
				}

				Util.MapDebugPrint( "^5Garage_Door_Destroyed, bunker is Allied, Bridge destroyed" );
			}
		}
		else	//bunker is Axis
		{
			if ( Map.BridgeBuild == 0 )	//destroyed
			{
				SetAvailableMapGoals( TEAM.AXIS, true, {
					"PLANTMINE_Axis_CellarEntrance_.*",
					"PLANTMINE_Axis_NearBridge_.*",
					"AMMOCAB_south_ammocabinet_1",
					"HEALTHCAB_south_healthcabinet_1",
				});

				if ( Map.ComplexMG42 )	//built
				{
					SetAvailableMapGoals( TEAM.AXIS, true, {
						"MOUNTMG42_Complex_Roof_MG42",
						"REPAIRMG42_Complex_Roof_MG42",
					});
				}
				else	//destroyed
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Complex_Roof_MG42" );
				}
				if ( Map.CellarMG42 == 0 )	//destroyed
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Cellar_MG42" );
				}

				Util.MapDebugPrint( "^5Garage_Door_Destroyed, bunker is Axis, Bridge destroyed" );
			}
		}

		SetGoalPriority( "BUILD_Garage_Roof_MG42", 0.90, TEAM.ALLIES, CLASS.ENGINEER );

		if ( Map.BridgeBuild == 0 )	//destroyed
		{
			SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Bridge" );
			SetGoalPriority( "BUILD_Bridge", 0.91, TEAM.ALLIES, CLASS.ENGINEER );
			yield();
			SetAvailableMapGoals( TEAM.ALLIES, true, {
				"BUILD_Bridge",
				".*_Allied_NearBridge_.*",
			});
		}

		if ( Map.AxisDoor )	//intact
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, {
				"SWITCH_GarageDoor2",
				"CHECKPOINT_checkpoint",
				"AMMOCAB_south_ammocabinet",
				"HEALTHCAB_south_healthcabinet",
			});

			if ( Map.AxisGarageRoofMG42 == 1 )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Garage_Roof_MG42" );
			}

			if ( Map.AlliedGarageRoofMG42 == 0 and Map.AxisGarageRoofMG42 == 0 )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Garage_Roof_MG42" );
			}

			if ( Map.Generator == 1 )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Generator" );
			}

			if ( Map.AxisCP == 1 )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Command_Post" );
			}

			if ( Map.AlliedCP == 0 and Map.AxisCP == 0 )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Command_Post" );
			}

			SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Axis_Door" );
			SetGoalPriority( "PLANT_Axis_Door", 0.4, TEAM.ALLIES, CLASS.ENGINEER );
			yield();
			SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_Door" );

			Util.MapDebugPrint( "^5Garage_Door_Destroyed, Axisdoor intact" );
		}
	},

	Cabin_MG42_Built = function( trigger )
	{

		Map.CabinMG42 = 1;

		SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Cabin_MG42" );

		SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Cabin_MG42" );

		if ( Map.AlliedFlag == 0 )
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, {
				"REPAIRMG42_Cabin_MG42",
				"MOUNTMG42_Cabin_MG42",
			});
		}
		else
		{
			SetAvailableMapGoals( TEAM.ALLIES, false, {
				"REPAIRMG42_Cabin_MG42",
				"MOUNTMG42_Cabin_MG42",
			});
		}

		Util.MapDebugPrint( "^5Cabin_MG42_Built" );
	},

	Cabin_MG42_Planted = function( trigger )
	{
		Map.Cabin_MG42_Dyno += 1;

		SetAvailableMapGoals( TEAM.ALLIES, false, "DEFUSE_Cabin_MG42_.*" );

		Util.MapDebugPrint( "^5Cabin_MG42_Planted" );
	},

	Cabin_MG42_Defused = function( trigger )
	{
		Map.Cabin_MG42_Dyno -= 1;

		Util.MapDebugPrint( "^5Cabin_MG42_Defused" );
	},

	Cabin_MG42_Destroyed = function( trigger )
	{
		Map.Cabin_MG42_Dyno = 0;
		Map.CabinMG42 = 0;

		SetAvailableMapGoals( TEAM.ALLIES, false, {
			"REPAIRMG42_Cabin_MG42",
			"MOUNTMG42_Cabin_MG42",
		});

		SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Cabin_MG42" );

		if ( Map.AlliedFlag == 0 )
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Cabin_MG42" );
		}
		else
		{
			SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Cabin_MG42" );
		}

		Util.MapDebugPrint( "^5Cabin_MG42_Destroyed" );
	},

	Window_MG42_Built = function( trigger )
	{

		Map.WindowMG42 = 1;

		SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Window_MG42" );

		SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Window_MG42" );

		if ( Map.AlliedFlag == 0 )
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, {
				"REPAIRMG42_Window_MG42",
				"MOUNTMG42_Window_MG42",
			});
		}
		else
		{
			SetAvailableMapGoals( TEAM.ALLIES, false, {
				"REPAIRMG42_Window_MG42",
				"MOUNTMG42_Window_MG42",
			});
		}

		Util.MapDebugPrint( "^5Window_MG42_Built" );
	},

	Window_MG42_Planted = function( trigger )
	{
		Map.Window_MG42_Dyno += 1;

		SetAvailableMapGoals( TEAM.ALLIES, false, "DEFUSE_Window_MG42_.*" );

		Util.MapDebugPrint( "^5Window_MG42_Planted" );
	},

	Window_MG42_Defused = function( trigger )
	{
		Map.Window_MG42_Dyno -= 1;

		Util.MapDebugPrint( "^5Window_MG42_Defused" );
	},

	Window_MG42_Destroyed = function( trigger )
	{
		Map.Window_MG42_Dyno = 0;
		Map.WindowMG42 = 0;

		SetAvailableMapGoals( TEAM.ALLIES, false, {
			"REPAIRMG42_Window_MG42",
			"MOUNTMG42_Window_MG42",
		});

		SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Window_MG42" );

		if ( Map.AlliedFlag == 0 )
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Window_MG42" );
		}
		else
		{
			SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Window_MG42" );
		}

		Util.MapDebugPrint( "^5Window_MG42_Destroyed" );
	},

	Axis_Garage_Roof_MG42_Built = function( trigger )
	{

		Map.AxisGarageRoofMG42 = 1;

		Util.SetGoalPosition(943.226440, -1458.586426, 920.125122, "PLANT_Garage_Roof_MG42");
		Wp.SetWaypointFlag( "Tower_1", "closed", false);

		SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Garage_Roof_MG42" );

		if ( Map.garagedoor1 )
		{
			if ( Map.AlliedFlag == 0 )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, {
					"SMOKEBOMB_Axis_GarageRoofMG42",
					"REPAIRMG42_axisgarage_mg42_actual",
					"MOUNTMG42_axisgarage_mg42_actual",
				});
			}
			else
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Garage_Roof_MG42" );
			}
		}
		else
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Garage_Roof_MG42" );
		}

		Util.MapDebugPrint( "^5Axis_Garage_Roof_MG42_Built" );
	},

	Allied_Garage_Roof_MG42_Built = function( trigger )
	{
		Map.AlliedGarageRoofMG42 = 1;

		Util.SetGoalPosition(943.043579, -1333.470825, 920.128357, "PLANT_Garage_Roof_MG42");
		Wp.SetWaypointFlag( "Tower_2", "closed", false);

		SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Garage_Roof_MG42" );

		SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Garage_Roof_MG42" );

		SetAvailableMapGoals( TEAM.ALLIES, true, {
			"REPAIRMG42_Garage_Roof_MG42",
			"MOUNTMG42_Garage_Roof_MG42",
		});

		Util.MapDebugPrint( "^5Allied_Garage_Roof_MG42_Built" );
	},

	Garage_Roof_MG42_Planted = function( trigger )
	{
		Map.Garage_Roof_MG42_Dyno += 1;

		SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Garage_Roof_MG42_.*" );

		SetAvailableMapGoals( TEAM.ALLIES, false, "DEFUSE_Garage_Roof_MG42_.*" );

		Util.MapDebugPrint( "^5Garage_Roof_MG42_Planted" );
	},

	Garage_Roof_MG42_Defused = function( trigger )
	{
		Map.Garage_Roof_MG42_Dyno -= 1;

		Util.MapDebugPrint( "^5Garage_Roof_MG42_Defused" );
	},

	Axis_Garage_Roof_MG42_Destroyed = function( trigger )
	{
		Map.Garage_Roof_MG42_Dyno = 0;
		Map.AxisGarageRoofMG42 = 0;
		Wp.SetWaypointFlag( "Tower_1", "closed", true);

		SetAvailableMapGoals( TEAM.AXIS, false, {
			"REPAIRMG42_axisgarage_mg42_actual",
			"MOUNTMG42_axisgarage_mg42_actual",
			"SMOKEBOMB_Axis_GarageRoofMG42",
		});

		SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Garage_Roof_MG42" );

		if ( Map.garagedoor1 )
		{
			if ( Map.AlliedFlag == 0 )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Garage_Roof_MG42" );
			}
			else
			{
				SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Garage_Roof_MG42" );

				SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Garage_Roof_MG42" );
			}
		}
		else
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Garage_Roof_MG42" );
		}

		Util.MapDebugPrint( "^5Axis_Garage_Roof_MG42_Destroyed" );
	},

	Allied_Garage_Roof_MG42_Destroyed = function( trigger )
	{
		Map.Garage_Roof_MG42_Dyno = 0;
		Map.AlliedGarageRoofMG42 = 0;
		Wp.SetWaypointFlag( "Tower_2", "closed", true);

		SetAvailableMapGoals( TEAM.ALLIES, false, {
			"REPAIRMG42_Garage_Roof_MG42",
			"MOUNTMG42_Garage_Roof_MG42",
		});

		SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Garage_Roof_MG42" );

		if ( Map.garagedoor1 )
		{
			if ( Map.AlliedFlag == 1 )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Garage_Roof_MG42" );
			}
			else
			{
				SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Garage_Roof_MG42" );

				SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Garage_Roof_MG42" );
			}
		}
		else
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Garage_Roof_MG42" );

			SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Garage_Roof_MG42" );
		}

		Util.MapDebugPrint( "^5Allied_Garage_Roof_MG42_Destroyed" );
	},

	Axis_Door_Planted = function( trigger )
	{
		Map.Axis_Door_Dyno += 1;

		if ( Map.garagedoor1 )
		{
			if ( Map.AlliedFlag == 0 )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "DEFUSE_Axis_Door_.*" );
			}
			else
			{
				SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Axis_Door_.*" );
			}
		}
		else
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Axis_Door_.*" );
		}

		Util.MapDebugPrint( "^5Axis_Door_Planted" );
	},

	Axis_Door_Defused = function( trigger )
	{
		Map.Axis_Door_Dyno -= 1;

		Util.MapDebugPrint( "^5Axis_Door_Defused" );
	},

	Axis_Door_Destroyed = function( trigger )
	{
		Map.Axis_Door_Dyno = 0;
		Map.AxisDoor = false;

		Wp.SetWaypointFlag( "Axis_Door_1", "axis", false);
		Wp.SetWaypointFlag( "Axis_Door_1", "door", false);
		Wp.SetWaypointFlag( "Axis_Door", "axis", false);
		Wp.SetWaypointFlag( "Axis_Door", "door", false);

		SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Axis_Door" );

		SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Axis_Door_.*" );

		Util.MapDebugPrint( "^5Axis_Door_Destroyed" );

		if ( Map.garagedoor1 )	//intact
		{
			sleep(1.5);
			SetAvailableMapGoals( TEAM.ALLIES, true, {
				"SWITCH_GarageDoor2",
				"CHECKPOINT_checkpoint",
				"AMMOCAB_south_ammocabinet",
				"HEALTHCAB_south_healthcabinet",
			});

			if ( Map.AxisGarageRoofMG42 == 1 )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Garage_Roof_MG42" );
			}

			if ( Map.AlliedGarageRoofMG42 == 0 and Map.AxisGarageRoofMG42 == 0 )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Garage_Roof_MG42" );
			}

			if ( Map.Generator == 1 )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Generator" );
			}

			if ( Map.AxisCP == 1 )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Command_Post" );
			}

			if ( Map.AlliedCP == 0 and Map.AxisCP == 0 )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Command_Post" );
			}

			Util.MapDebugPrint( "^5Axis_Door_Destroyed, Garagedoor intact" );
		}
	},

	checkpoint_Allies_Captured = function( trigger )
	{

		Map.AlliedFlag = 1;

		if ( Map.ReSpawn == 1 )
		{
			Map.ReSpawn = 0;
		}

		SetAvailableMapGoals( TEAM.ALLIES, false, {
			"CHECKPOINT_checkpoint",
			"REPAIRMG42_Cabin_MG42",
			"MOUNTMG42_Cabin_MG42",
			"REPAIRMG42_Window_MG42",
			"MOUNTMG42_Window_MG42",
		});

		SetAvailableMapGoals( TEAM.AXIS, true, "CHECKPOINT_checkpoint" );

		if ( Map.garagedoor1 )	//intact
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_Start_.*" );
		}
		else	//destroyed
		{
			SetAvailableMapGoals( TEAM.ALLIES, false, {
				".*_Allied_StartBack_.*",
				".*_Allied_Start_.*",
			});
		}

		if ( Map.AxisGarageRoofMG42 == 1 )	//built
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Garage_Roof_MG42" );

			SetAvailableMapGoals( TEAM.AXIS, false, {
				"REPAIRMG42_axisgarage_mg42_actual",
				"MOUNTMG42_axisgarage_mg42_actual",
				"SMOKEBOMB_Axis_GarageRoofMG42",
			});
		}

		if ( Map.AlliedGarageRoofMG42 == 1 )	//built
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, {
				"REPAIRMG42_Garage_Roof_MG42",
				"MOUNTMG42_Garage_Roof_MG42",
			});
		}

		if ( Map.AlliedGarageRoofMG42 == 0 and Map.AxisGarageRoofMG42 == 0 )	//both destroyed
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Garage_Roof_MG42" );
		}

		if ( Map.Generator == 1 )	//built
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Generator" );
		}
		else	//destroyed
		{
			//SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_InfrontofWall_.*" );
		}

		if ( Map.AxisCP == 1 )	//built
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Command_Post" );
		}

		if ( Map.AlliedCP == 0 and Map.AxisCP == 0 )	//both destroyed
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Command_Post" );
		}

		if ( Map.WindowMG42 == 0 )	//destroyed
		{
			SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Window_MG42" );
		}
		else	//built
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Window_MG42" );
		}

		if ( Map.CabinMG42 == 0 )	//destroyed
		{
			SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Cabin_MG42" );
		}
		else	//built
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Cabin_MG42" );
		}

		Util.MapDebugPrint( "^5Allies_Captured_Garage" );

		sleep(35);

		if ( Map.AxisChangeSpawn == 0 )
		{
			if ( !Map.garagedoor1 )	//destroyed
			{
				if ( Map.AlliedFlag == 1 )	//Garage is Allied
				{
					SetAvailableMapGoals( TEAM.AXIS, false, {
						"BUILD_Generator",
						"AMMOCAB_south_ammocabinet",
						"HEALTHCAB_south_healthcabinet",
						"BUILD_Command_Post",
						"BUILD_Garage_Roof_MG42",
						".*_Axis_Start_.*",
						".*_Axis_StartBack_.*",
						"SWITCH_GarageDoor2",
						"CHECKPOINT_checkpoint",
						"PLANTMINE_Axis_Start_20",
						"PLANTMINE_Axis_Start_21",
						"PLANTMINE_Axis_Start_22",
						"PLANTMINE_Axis_Start_23",
						"PLANTMINE_Axis_Start_24",
					});
					yield;
					SetGoalPriority( "CHECKPOINT_checkpoint", 0.4, TEAM.AXIS, 0 );
					SetGoalPriority( "CHECKPOINT_checkpoint", 0.75, TEAM.AXIS, CLASS.COVERTOPS );

					SetAvailableMapGoals( TEAM.AXIS, true, "CHECKPOINT_checkpoint" );

					Util.ChangeSpawn( TEAM.AXIS, 2 );
					Map.AxisChangeSpawn = 1;

					Util.MapDebugPrint( "^5Axis_not_Recaptured_Garage" );

					if ( Map.BridgeBuild == 0 )	//destroyed
					{
						SetAvailableMapGoals( TEAM.AXIS, true, {
							"PLANTMINE_Axis_NearBridge_.*",
							"PLANTMINE_Axis_CellarEntrance_.*",
							".*_Axis_NearBridge_.*",
							"AMMOCAB_south_ammocabinet_1",
							"HEALTHCAB_south_healthcabinet_1",
						});

						if ( Map.ComplexMG42 )	//built
						{
							SetAvailableMapGoals( TEAM.AXIS, true, {
								"MOUNTMG42_Complex_Roof_MG42",
								"REPAIRMG42_Complex_Roof_MG42",
							});
						}
						else	//destroyed
						{
							SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Complex_Roof_MG42" );
						}
						if ( Map.CellarMG42 == 0 )	//destroyed
						{
							SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Cellar_MG42" );
						}
						else	//built
						{
							if ( !Map.CellarEntrance )	//destroyed
							{
								if ( Map.AlliesInCanyon > 0 )	//Allies are in canyon
								{
									SetAvailableMapGoals( TEAM.AXIS, true, {
										"MOUNTMG42_Cellar_MG42",
										"REPAIRMG42_Cellar_MG42",
									});
								}
							}
						}

						Util.MapDebugPrint( "^5Axis_not_Recaptured_Garage, Bridge destroyed" );
					}
				}
			}
			else	//Garagedoor intact
			{
				SetAvailableMapGoals( TEAM.AXIS, true, {
					"BUILD_Complex_Roof_MG42",
					"BUILD_Cellar_MG42",
					"PLANTMINE_Axis_CellarEntrance_.*",
					"PLANTMINE_Axis_NearBridge_.*",
				});

				Util.MapDebugPrint( "^5Allies_Captured_Garage, Garagedoor intact" );
			}
		}
		else
		{
			if ( Map.AlliedFlag == 1 )	//Garage is Allied
			{
				SetAvailableMapGoals( TEAM.AXIS, false, {
					".*_Axis_Start_.*",
					".*_Axis_StartBack_.*",
					"AMMOCAB_south_ammocabinet",
					"HEALTHCAB_south_healthcabinet",
					"SWITCH_GarageDoor2",
				});

				Util.MapDebugPrint( "^5Axis lost Garage" );
			}
		}
	},

	checkpoint_Axis_Captured = function( trigger )
	{

		Map.AlliedFlag = 0;

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

		SetAvailableMapGoals( TEAM.AXIS, false, "CHECKPOINT_checkpoint" );

		if ( Map.AlliedGarageRoofMG42 == 1 )	//built
		{
			if ( Map.garagedoor1 )	//intact
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Garage_Roof_MG42" );
			}

			SetAvailableMapGoals( TEAM.ALLIES, false, {
				"REPAIRMG42_Garage_Roof_MG42",
				"MOUNTMG42_Garage_Roof_MG42",
			});
		}

		if ( Map.AxisGarageRoofMG42 == 1 )	//built
		{
			if ( Map.garagedoor1 )	//intact
			{
				SetAvailableMapGoals( TEAM.AXIS, true, {
					"SMOKEBOMB_Axis_GarageRoofMG42",
					"REPAIRMG42_axisgarage_mg42_actual",
					"MOUNTMG42_axisgarage_mg42_actual",
				});
			}
		}

		if ( Map.AlliedGarageRoofMG42 == 0 and Map.AxisGarageRoofMG42 == 0 )	//both destroyed
		{
			SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Garage_Roof_MG42" );

			if ( Map.garagedoor1 )	//intact
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Garage_Roof_MG42" );
			}
		}

		if ( Map.Generator == 0 )	//destroyed
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Generator" );

		}
		else	//built
		{
			if ( Map.garagedoor1 and Map.AxisDoor )	//both intact
			{
				SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Generator" );
			}
			else	//destroyed
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Generator" );
			}
		}

		if ( Map.AlliedCP == 1 )	//built
		{
			if ( Map.garagedoor1 )	//intact
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Command_Post" );
			}
		}

		if ( Map.AlliedCP == 0 and Map.AxisCP == 0 )	//both destroyed
		{
			if ( Map.garagedoor1 and Map.AxisDoor )	//both intact
			{
				SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Command_Post" );
			}

			if ( Map.garagedoor1 )	//intact
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Command_Post" );
			}
		}

		if ( Map.WindowMG42 == 0 )	//destroyed
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Window_MG42" );
		}
		else	//built
		{
			//disabled - suicidal mission :o))
			//SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Window_MG42" );

			SetAvailableMapGoals( TEAM.ALLIES, true, {
				"REPAIRMG42_Window_MG42",
				"MOUNTMG42_Window_MG42",
			});
		}

		if ( Map.CabinMG42 == 0 )	//destroyed
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Cabin_MG42" );
		}
		else	//built
		{
			//disabled - suicidal mission :o))
			//SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Cabin_MG42" );

			SetAvailableMapGoals( TEAM.ALLIES, true, {
				"REPAIRMG42_Cabin_MG42",
				"MOUNTMG42_Cabin_MG42",
			});
		}

		if ( Map.AxisChangeSpawn == 0 )
		{
			Util.ChangeSpawn( TEAM.AXIS, 3 );

			Util.MapDebugPrint( "^5Axis_Captured_Garage" );
		}
		else
		{
			if ( Map.AlliesPastRiver == 0 and Map.BridgeBuild == 0 and Map.AlliesInCanyon == 0 and Map.Generator == 1 )
			{
				if ( Map.AxisChangeSpawn == 1 )
				{
					Util.ChangeSpawn( TEAM.AXIS, 3 );
					Map.ReSpawn = 1;

					Map.AxisChangeSpawn = 0;

					SetAvailableMapGoals( TEAM.AXIS, false, {
						".*_Axis_Radio_.*",
						"AMMOCAB_south_ammocabinet_1",
						"HEALTHCAB_south_healthcabinet_1",
						"MOUNTMG42_Complex_Roof_MG42",
						"REPAIRMG42_Complex_Roof_MG42",
						"BUILD_Complex_Roof_MG42",
						"MOUNTMG42_Cellar_MG42",
						"REPAIRMG42_Cellar_MG42",
						"BUILD_Cellar_MG42",
						".*_Axis_NearBridge_.*",
						".*_Axis_NearFootBridge_.*",
						".*_Axis_CellarEntrance_.*",
					});

					SetAvailableMapGoals( TEAM.ALLIES, false, {
						".*_Allied_Radio_.*",
						"PLANT_Communications_Radio",
						"AMMOCAB_south_ammocabinet_1",
						"HEALTHCAB_south_healthcabinet_1",
						"PLANT_Complex_Roof_MG42",
						"PLANT_Cellar_MG42",
						"PLANT_Cellar_Entrance",
						".*_Allied_NearBridge_.*",
						".*_Allied_NearFootBridge_.*",
						".*_Allied_NearCellarEntrance_.*",
					});

					SetAvailableMapGoals( TEAM.AXIS, true, {
						".*_Axis_Start_.*",
						".*_Axis_StartBack_.*",
						"AMMOCAB_south_ammocabinet",
						"HEALTHCAB_south_healthcabinet",
					});

					if ( Map.garagedoor2 )
					{
						if ( Map.garagedoor1 )
						{
							SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
						}
						else
						{
							if ( Map.AxisChangeSpawn == 0 )
							{
								SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
							}
							else
							{
								if ( Map.ReSpawn == 1 )
								{
									SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
								}
							}
						}
					}

					if ( !Map.garagedoor1 )
					{
						SetAvailableMapGoals( TEAM.AXIS, false, {
							"PLANTMINE_Axis_Start_1.*",
							"SMOKEBOMB_Axis_Start_13",
							"AIRSTRIKE_Axis_Start_1",
							"AIRSTRIKE_Axis_Start_6",
							"ARTILLERY_S_Axis_Start_5",
							"ARTILLERY_S_Axis_Start_8",
							"CALLARTILLERY_Axis_Start_4",
							"CALLARTILLERY_Axis_Start_10",
						});
					}
					else
					{
						SetAvailableMapGoals( TEAM.AXIS, false, {
							"SMOKEBOMB_Axis_Start_25",
							"AIRSTRIKE_Axis_Start_28",
							"ARTILLERY_S_Axis_Start_27",
							"CALLARTILLERY_Axis_Start_26",
							".*_Axis_Start_7",
							".*_Axis_Start_9",
							".*_Axis_Start_10",
							".*_Axis_Start_11",
							".*_Axis_Start_12",
							".*_Axis_Start_14",
						});
					}

					if ( !Map.garagedoor2 )
					{
						if ( !Map.garagedoor1 or !Map.AxisDoor )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "SWITCH_GarageDoor2" );
						}
					}

					SetAvailableMapGoals( TEAM.ALLIES, true, {
						"CHECKPOINT_checkpoint",
						".*_Allied_Start_.*",
						".*_Allied_StartBack_.*",
						"BUILD_Bridge",
						"PLANT_Generator",
					});

					if ( Map.garagedoor1 )
					{
						SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Garage_Door" );
					}

					if ( Map.AxisDoor )
					{
						SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_Door" );
					}

					if ( Map.WindowMG42 == 0 )
					{
						SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Window_MG42" );
					}
					else
					{
						SetAvailableMapGoals( TEAM.ALLIES, true, {
							"REPAIRMG42_Window_MG42",
							"MOUNTMG42_Window_MG42",
						});
					}

					if ( Map.CabinMG42 == 0 )
					{
						SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Cabin_MG42" );
					}
					else
					{
						SetAvailableMapGoals( TEAM.ALLIES, true, {
							"REPAIRMG42_Cabin_MG42",
							"MOUNTMG42_Cabin_MG42",
						});
					}

					Util.MapDebugPrint( "^5Axis_Re-Captured_Garage" );
				}
				else
				{
					SetAvailableMapGoals( TEAM.AXIS, false, {
						".*_Axis_Radio_.*",
						"AMMOCAB_south_ammocabinet_1",
						"HEALTHCAB_south_healthcabinet_1",
						"MOUNTMG42_Complex_Roof_MG42",
						"REPAIRMG42_Complex_Roof_MG42",
						"BUILD_Complex_Roof_MG42",
						"MOUNTMG42_Cellar_MG42",
						"REPAIRMG42_Cellar_MG42",
						"BUILD_Cellar_MG42",
						".*_Axis_NearBridge_.*",
						".*_Axis_NearFootBridge_.*",
						".*_Axis_CellarEntrance_.*",
					});

					SetAvailableMapGoals( TEAM.ALLIES, false, {
						".*_Allied_Radio_.*",
						"PLANT_Communications_Radio",
						"AMMOCAB_south_ammocabinet_1",
						"HEALTHCAB_south_healthcabinet_1",
						"PLANT_Complex_Roof_MG42",
						"PLANT_Cellar_MG42",
						"PLANT_Cellar_Entrance",
						".*_Allied_NearBridge_.*",
						".*_Allied_NearFootBridge_.*",
						".*_Allied_NearCellarEntrance_.*",
					});

					SetAvailableMapGoals( TEAM.AXIS, true, {
						".*_Axis_Start_.*",
						".*_Axis_StartBack_.*",
						"AMMOCAB_south_ammocabinet",
						"HEALTHCAB_south_healthcabinet",
					});

					if ( Map.garagedoor2 )
					{
						if ( Map.garagedoor1 )
						{
							SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
						}
						else
						{
							if ( Map.AxisChangeSpawn == 0 )
							{
								SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
							}
							else
							{
								if ( Map.ReSpawn == 1 )
								{
									SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
								}
							}
						}
					}

					if ( !Map.garagedoor1 )
					{
						SetAvailableMapGoals( TEAM.AXIS, false, {
							"PLANTMINE_Axis_Start_1.*",
							"SMOKEBOMB_Axis_Start_13",
							"AIRSTRIKE_Axis_Start_1",
							"AIRSTRIKE_Axis_Start_6",
							"ARTILLERY_S_Axis_Start_5",
							"ARTILLERY_S_Axis_Start_8",
							"CALLARTILLERY_Axis_Start_4",
							"CALLARTILLERY_Axis_Start_10",
						});
					}
					else
					{
						SetAvailableMapGoals( TEAM.AXIS, false, {
							"SMOKEBOMB_Axis_Start_25",
							"AIRSTRIKE_Axis_Start_28",
							"ARTILLERY_S_Axis_Start_27",
							"CALLARTILLERY_Axis_Start_26",
							".*_Axis_Start_7",
							".*_Axis_Start_9",
							".*_Axis_Start_10",
							".*_Axis_Start_11",
							".*_Axis_Start_12",
							".*_Axis_Start_14",
						});
					}

					if ( !Map.garagedoor2 )
					{
						if ( !Map.garagedoor1 or !Map.AxisDoor )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "SWITCH_GarageDoor2" );
						}
					}

					SetAvailableMapGoals( TEAM.ALLIES, true, {
						"CHECKPOINT_checkpoint",
						".*_Allied_Start_.*",
						".*_Allied_StartBack_.*",
						"BUILD_Bridge",
						"PLANT_Generator",
					});

					if ( Map.garagedoor1 )
					{
						SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Garage_Door" );

						if ( Map.AxisDoor )
						{
							if ( Map.Generator == 1 )
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Generator" );
							}
						}
					}

					if ( Map.AxisDoor )
					{
						SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_Door" );
					}

					if ( Map.WindowMG42 == 0 )
					{
						SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Window_MG42" );
					}
					else
					{
						SetAvailableMapGoals( TEAM.ALLIES, true, {
							"REPAIRMG42_Window_MG42",
							"MOUNTMG42_Window_MG42",
						});
					}

					if ( Map.CabinMG42 == 0 )
					{
						SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Cabin_MG42" );
					}
					else
					{
						SetAvailableMapGoals( TEAM.ALLIES, true, {
							"REPAIRMG42_Cabin_MG42",
							"MOUNTMG42_Cabin_MG42",
						});
					}

					Util.MapDebugPrint( "^5AAAA" );
				}
			}
			else
			{
				Util.ChangeSpawn( TEAM.AXIS, 2 );

				Util.MapDebugPrint( "^5Axis_Captured_Garage" );
			}
		}
	},

	Bridge_Built = function( trigger )
	{

		Map.BridgeBuild = 1;

		SetAvailableMapGoals( TEAM.ALLIES, false, {
			"BUILD_Bridge",
			".*_Allied_NearBridge_.*",
		});

		SetAvailableMapGoals( TEAM.AXIS, false, "PLANTMINE_Axis_Start_1.*" );

		SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Bridge" );

		SetAvailableMapGoals( TEAM.ALLIES, true, {
			"PLANT_Communications_Radio",
			"AMMOCAB_south_ammocabinet_1",
			"HEALTHCAB_south_healthcabinet_1",
			"CALLARTILLERY_Allied_NearBridge_2",
			"ARTILLERY_S_Allied_NearBridge_3",
			".*_Allied_Radio_.*",
		});

		if ( Map.ComplexMG42 )	//built
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Complex_Roof_MG42" );
		}
		if ( Map.CellarMG42 == 1 )	//built
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Cellar_MG42" );
		}
		if ( Map.CellarEntrance )	//intact
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Cellar_Entrance" );
		}

		Util.MapDebugPrint( "^5Bridge_Built" );

		if ( Map.garagedoor1 )	//intact
		{
			if ( Map.AlliedEngInComplex == 0 )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, {
					"PLANTMINE_Axis_CellarEntrance_.*",
					"PLANTMINE_Axis_NearBridge_.*",
					".*_Axis_NearBridge_2",
					".*_Axis_NearBridge_3",
					".*_Axis_NearBridge_7",
					"AMMOCAB_south_ammocabinet_1",
					"HEALTHCAB_south_healthcabinet_1",
				});

				if ( Map.ComplexMG42 )	//built
				{
					SetAvailableMapGoals( TEAM.AXIS, true, {
						"MOUNTMG42_Complex_Roof_MG42",
						"REPAIRMG42_Complex_Roof_MG42",
					});
				}
				else	//destroyed
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Complex_Roof_MG42" );
				}
				if ( Map.CellarMG42 == 0 )	//destroyed
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Cellar_MG42" );
				}

				Util.MapDebugPrint( "^5Bridge_Built, Garagedoor intact, Allies are not in complex" );
			}
		}
		else	//destroyed
		{
			if ( Map.AlliedEngInComplex == 0 )	//Allied engs are not in complex
			{
				if ( Map.AlliedFlag == 1 )	//bunker is Allied
				{
					SetAvailableMapGoals( TEAM.AXIS, false, {
						".*_Axis_Start_.*",
						".*_Axis_StartBack_.*",
						"BUILD_Generator",
					});

					SetAvailableMapGoals( TEAM.AXIS, true, {
						"PLANTMINE_Axis_CellarEntrance_.*",
						".*_Axis_NearBridge_.*",
						"AMMOCAB_south_ammocabinet_1",
						"HEALTHCAB_south_healthcabinet_1",
					});

					if ( Map.ComplexMG42 )	//built
					{
						SetAvailableMapGoals( TEAM.AXIS, true, {
							"MOUNTMG42_Complex_Roof_MG42",
							"REPAIRMG42_Complex_Roof_MG42",
						});
					}
					else	//destroyed
					{
						SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Complex_Roof_MG42" );
					}
					if ( Map.CellarMG42 == 0 )	//destroyed
					{
						SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Cellar_MG42" );
					}

					Util.MapDebugPrint( "^5Bridge_Built, Garagedoor destroyed, Allies are not in complex, Bunker is Allied" );
				}
				else	//bunker is Axis
				{
					SetAvailableMapGoals( TEAM.AXIS, true, {
						"PLANTMINE_Axis_CellarEntrance_.*",
						"PLANTMINE_Axis_NearBridge_.*",
						".*_Axis_NearBridge_2",
						".*_Axis_NearBridge_7",
						"AMMOCAB_south_ammocabinet_1",
						"HEALTHCAB_south_healthcabinet_1",
					});

					if ( Map.ComplexMG42 )	//built
					{
						SetAvailableMapGoals( TEAM.AXIS, true, {
							"MOUNTMG42_Complex_Roof_MG42",
							"REPAIRMG42_Complex_Roof_MG42",
						});
					}
					else	//destroyed
					{
						SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Complex_Roof_MG42" );
					}
					if ( Map.CellarMG42 == 0 )	//destroyed
					{
						SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Cellar_MG42" );
					}

					Util.MapDebugPrint( "^5Bridge_Built, Garagedoor destroyed, Allies are not in complex, Bunker is Axis" );
				}
			}
		}
	},

	Bridge_Planted = function( trigger )
	{
		Map.Bridge_Dyno += 1;

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

		Util.MapDebugPrint( "^5Bridge_Planted" );
	},

	Bridge_Defused = function( trigger )
	{
		Map.Bridge_Dyno -= 1;

		Util.MapDebugPrint( "^5Bridge_Defused" );
	},

	Bridge_Destroyed = function( trigger )
	{
		Map.Bridge_Dyno = 0;
		Map.BridgeBuild = 0;

		SetAvailableMapGoals( TEAM.ALLIES, false, "DEFUSE_Bridge_.*" );

		SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Bridge" );

		SetAvailableMapGoals( TEAM.AXIS, true, {
			"PLANTMINE_Axis_Start_1.*",
			"PLANTMINE_Axis_NearBridge_.*",
		});

		if ( !Map.garagedoor1 )	//destroyed
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, ".*_Allied_NearBridge_.*" );

			SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Bridge" );
			SetGoalPriority( "BUILD_Bridge", 0.91, TEAM.ALLIES, CLASS.ENGINEER );
			yield();
			SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Bridge" );

			Util.MapDebugPrint( "^5Bridge_Destroyed, garage door destroyed" );
		}
		else	//intact
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Bridge" );

			Util.MapDebugPrint( "^5Bridge_Destroyed, garage door intact" );
		}

		if ( Map.AlliesPastRiver == 0 )	//Allies donīt cross river
		{
			if ( Map.AlliedFlag == 0 )	//Bunker is Axis
			{
				SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_NearBridge_.*" );

				Util.MapDebugPrint( "^5Bridge_Destroyed, Allies donīt cross river, Bunker is Axis" );
			}

			if ( Map.AlliesInCanyon == 0 )
			{
				if ( Map.Footbridge == 0 )	//destroyed
				{
					SetAvailableMapGoals( TEAM.ALLIES, false, {
						"PLANT_Communications_Radio",
						"AMMOCAB_south_ammocabinet_1",
						"HEALTHCAB_south_healthcabinet_1",
						".*_Allied_Radio_.*",
						".*_Allied_NearCellarEntrance_.*",
					});

					SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_NearFootBridge_.*" );

					if ( Map.Generator == 1 )	//built
					{
						SetAvailableMapGoals( TEAM.ALLIES, false, {
							".*_Allied_NearFootBridge_.*",
							".*_Allied_NearCellarEntrance_.*",
							"BUILD_Footbridge",
						});
					}
					else
					{
						SetAvailableMapGoals( TEAM.ALLIES, true, {
							"BUILD_Footbridge",
							".*_Allied_NearFootBridge_.*",
						});
					}

					if ( Map.CellarEntrance )	//intact
					{
						SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_Entrance" );
					}
					if ( Map.ComplexMG42 )	//built
					{
						SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Complex_Roof_MG42" );
					}
					if ( Map.CellarMG42 == 1 )	//built
					{
						SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_MG42" );
					}

					Util.MapDebugPrint( "^5Bridge_Destroyed, Allies donīt cross river, Allies are not in Canyon, Footbridge destroyed" );
				}
				else	//Footbridge built
				{
					if ( Map.Generator == 1 )	//built
					{
						SetAvailableMapGoals( TEAM.ALLIES, false, {
							"PLANT_Communications_Radio",
							"AMMOCAB_south_ammocabinet_1",
							"HEALTHCAB_south_healthcabinet_1",
							".*_Allied_Radio_.*",
						});

						SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_NearFootBridge_.*" );

						if ( Map.CellarEntrance )	//intact
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_Entrance" );
						}
						if ( Map.ComplexMG42 )	//built
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Complex_Roof_MG42" );
						}
						if ( Map.CellarMG42 == 1 )	//built
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_MG42" );
						}

						Util.MapDebugPrint( "^5Bridge_Destroyed, Allies donīt cross river, Allies are not in Canyon, Footbridge built, Generator built" );
					}
					else	//Generator destroyed
					{
						if ( Map.CellarEntrance )	//intact
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, {
								"PLANT_Communications_Radio",
								"AMMOCAB_south_ammocabinet_1",
								"HEALTHCAB_south_healthcabinet_1",
								".*_Allied_Radio_.*",
							});

							SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_NearBridge_.*" );

							if ( Map.ComplexMG42 )	//built
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Complex_Roof_MG42" );
							}
							if ( Map.CellarMG42 == 1 )	//built
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_MG42" );
							}

							SetAvailableMapGoals( TEAM.ALLIES, true, {
								"PLANT_Cellar_Entrance",
								"ATTACK_Allied_NearCellarEntrance_.*",
							});

							Util.MapDebugPrint( "^5Bridge_Destroyed, Allies donīt cross river, Allies are not in Canyon, Footbridge built, Generator destroyed, Cellarentrance intact" );
						}
					}
				}
			}
			else	//Allies are in Canyon
			{
				if ( Map.Footbridge == 0 )	//destroyed
				{
					if ( Map.AlliedEngInCanyon == 0 )
					{
						SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Communications_Radio" );

						if ( Map.CellarEntrance )	//intact
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_Entrance" );
						}
						if ( Map.ComplexMG42 )	//built
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Complex_Roof_MG42" );
						}
						if ( Map.CellarMG42 == 1 )	//built
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_MG42" );
						}
					}

					Util.MapDebugPrint( "^5Bridge_Destroyed, Allies donīt cross river, Allies are in Canyon, Footbridge destroyed, Allied engs are not in Canyon" );
				}
				else	//built
				{
					if ( Map.Generator == 1 )	//built
					{
						if ( Map.AlliedEngInCanyon == 0 )
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Communications_Radio" );

							if ( Map.CellarEntrance )	//intact
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_Entrance" );
							}
							if ( Map.ComplexMG42 )	//built
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Complex_Roof_MG42" );
							}
							if ( Map.CellarMG42 == 1 )	//built
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_MG42" );
							}

							Util.MapDebugPrint( "^5Bridge_Destroyed, Allies donīt cross river, Allies are in Canyon, Footbridge built, Generator built, Allied engs are not in Canyon" );
						}
					}
				}
			}
		}
		else	//Allies cross river
		{
			if ( Map.AlliesInCanyon == 0 )
			{
				if ( Map.Footbridge == 0 )	//destroyed
				{
					if ( Map.AlliedEngPastRiver == 0 )
					{
						SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Communications_Radio" );

						if ( Map.CellarEntrance )	//intact
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_Entrance" );
						}

						Util.MapDebugPrint( "^5Bridge_Destroyed, Allies cross river, Allies are not in Canyon, Footbridge destroyed, Allied engs donīt cross river" );

						if ( Map.AlliedCovertPastRiver == 0 )
						{
							if ( Map.ComplexMG42 )	//built
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Complex_Roof_MG42" );
							}
							if ( Map.CellarMG42 == 1 )	//built
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_MG42" );
							}

							Util.MapDebugPrint( "^5Bridge_Destroyed, Allies cross river, Allies are not in Canyon, Footbridge destroyed, Allied engs donīt cross river, Allied covertops donīt cross river" );
						}
					}
				}
				else
				{
					if ( Map.Generator == 1 )	//built
					{
						if ( Map.AlliedEngPastRiver == 0 )
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Communications_Radio" );

							if ( Map.CellarEntrance )	//intact
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_Entrance" );
							}

							Util.MapDebugPrint( "^5Bridge_Destroyed, Allies cross river, Allies are not in Canyon, Footbridge built, Generator built, Allied engs donīt cross river" );

							if ( Map.AlliedCovertPastRiver == 0 )
							{
								if ( Map.ComplexMG42 )	//built
								{
									SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Complex_Roof_MG42" );
								}
								if ( Map.CellarMG42 == 1 )	//built
								{
									SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_MG42" );
								}

								Util.MapDebugPrint( "^5Bridge_Destroyed, Allies cross river, Allies are not in Canyon, Footbridge built, Generator built, Allied engs donīt cross river, Allied covertops donīt cross river" );
							}
						}
					}
				}
			}
			else
			{
				if ( Map.Footbridge == 0 )	//destroyed
				{
					if ( Map.AlliedEngInCanyon == 0 )
					{
						if ( Map.AlliedEngPastRiver == 0 )
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Communications_Radio" );

							if ( Map.CellarEntrance )	//intact
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_Entrance" );
							}

							Util.MapDebugPrint( "^5Bridge_Destroyed, Allies cross river, Allies are in Canyon, Footbridge destroyed, Allied engs are not in Canyon, Allied engs donīt cross river" );

							if ( Map.AlliedCovertPastRiver == 0 )
							{
								if ( Map.ComplexMG42 )	//built
								{
									SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Complex_Roof_MG42" );
								}
								if ( Map.CellarMG42 == 1 )	//built
								{
									SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_MG42" );
								}

								Util.MapDebugPrint( "^5Bridge_Destroyed, Allies cross river, Allies are in Canyon, Footbridge destroyed, Allied engs are not in Canyon, Allied engs donīt cross river, Allied covertops donīt cross river" );
							}
						}
					}
				}
				else
				{
					if ( Map.Generator == 1 )	//built
					{
						if ( Map.AlliedEngInCanyon == 0 )
						{
							if ( Map.AlliedEngPastRiver == 0 )
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Communications_Radio" );

								if ( Map.CellarEntrance )	//intact
								{
									SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_Entrance" );
								}

								Util.MapDebugPrint( "^5Bridge_Destroyed, Allies cross river, Allies are in Canyon, Footbridge built, Generator built, Allied engs are not in Canyon, Allied engs donīt cross river" );

								if ( Map.AlliedCovertPastRiver == 0 )
								{
									if ( Map.ComplexMG42 )	//built
									{
										SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Complex_Roof_MG42" );
									}
									if ( Map.CellarMG42 == 1 )	//built
									{
										SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_MG42" );
									}

									Util.MapDebugPrint( "^5Bridge_Destroyed, Allies cross river, Allies are in Canyon, Footbridge built, Generator built, Allied engs are not in Canyon, Allied engs donīt cross river, Allied covertops donīt cross river" );
								}
							}
						}
					}
				}
			}
		}

		if ( Map.AlliesPastRiver == 0 and Map.Generator == 1 and Map.AlliesInCanyon == 0 and Map.AlliedFlag == 0 )
		{
			if ( Map.AxisChangeSpawn == 1 )
			{
				Util.ChangeSpawn( TEAM.AXIS, 3 );
				Map.ReSpawn = 1;

				Map.AxisChangeSpawn = 0;

				SetAvailableMapGoals( TEAM.AXIS, false, {
					".*_Axis_Radio_.*",
					"AMMOCAB_south_ammocabinet_1",
					"HEALTHCAB_south_healthcabinet_1",
					"MOUNTMG42_Complex_Roof_MG42",
					"REPAIRMG42_Complex_Roof_MG42",
					"BUILD_Complex_Roof_MG42",
					"MOUNTMG42_Cellar_MG42",
					"REPAIRMG42_Cellar_MG42",
					"BUILD_Cellar_MG42",
					".*_Axis_NearBridge_.*",
					".*_Axis_NearFootBridge_.*",
					".*_Axis_CellarEntrance_.*",
				});

				SetAvailableMapGoals( TEAM.ALLIES, false, {
					".*_Allied_Radio_.*",
					"PLANT_Communications_Radio",
					"AMMOCAB_south_ammocabinet_1",
					"HEALTHCAB_south_healthcabinet_1",
					"PLANT_Complex_Roof_MG42",
					"PLANT_Cellar_MG42",
					"PLANT_Cellar_Entrance",
					".*_Allied_NearBridge_.*",
					".*_Allied_NearFootBridge_.*",
					".*_Allied_NearCellarEntrance_.*",
				});

				SetAvailableMapGoals( TEAM.AXIS, true, {
					".*_Axis_Start_.*",
					".*_Axis_StartBack_.*",
					"AMMOCAB_south_ammocabinet",
					"HEALTHCAB_south_healthcabinet",
				});

				if ( Map.garagedoor2 )
				{
					if ( Map.garagedoor1 )
					{
						SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
					}
					else
					{
						if ( Map.AxisChangeSpawn == 0 )
						{
							SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
						}
						else
						{
							if ( Map.ReSpawn == 1 )
							{
								SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
							}
						}
					}
				}

				if ( !Map.garagedoor1 )
				{
					SetAvailableMapGoals( TEAM.AXIS, false, {
						"PLANTMINE_Axis_Start_1.*",
						"SMOKEBOMB_Axis_Start_13",
						"AIRSTRIKE_Axis_Start_1",
						"AIRSTRIKE_Axis_Start_6",
						"ARTILLERY_S_Axis_Start_5",
						"ARTILLERY_S_Axis_Start_8",
						"CALLARTILLERY_Axis_Start_4",
						"CALLARTILLERY_Axis_Start_10",
					});
				}
				else
				{
					SetAvailableMapGoals( TEAM.AXIS, false, {
						"SMOKEBOMB_Axis_Start_25",
						"AIRSTRIKE_Axis_Start_28",
						"ARTILLERY_S_Axis_Start_27",
						"CALLARTILLERY_Axis_Start_26",
						".*_Axis_Start_7",
						".*_Axis_Start_9",
						".*_Axis_Start_10",
						".*_Axis_Start_11",
						".*_Axis_Start_12",
						".*_Axis_Start_14",
					});
				}

				if ( !Map.garagedoor2 )
				{
					if ( !Map.garagedoor1 or !Map.AxisDoor )
					{
						SetAvailableMapGoals( TEAM.ALLIES, true, "SWITCH_GarageDoor2" );
					}
				}

				SetAvailableMapGoals( TEAM.ALLIES, true, {
					"CHECKPOINT_checkpoint",
					".*_Allied_Start_.*",
					".*_Allied_StartBack_.*",
					"BUILD_Bridge",
					"PLANT_Generator",
				});

				if ( Map.garagedoor1 )
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Garage_Door" );
				}

				if ( Map.AxisDoor )
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_Door" );
				}

				if ( Map.WindowMG42 == 0 )
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Window_MG42" );
				}
				else
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, {
						"REPAIRMG42_Window_MG42",
						"MOUNTMG42_Window_MG42",
					});
				}

				if ( Map.CabinMG42 == 0 )
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Cabin_MG42" );
				}
				else
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, {
						"REPAIRMG42_Cabin_MG42",
						"MOUNTMG42_Cabin_MG42",
					});
				}

				Util.MapDebugPrint( "^5Axis_Re-Captured_Garage" );
			}
			else
			{
				SetAvailableMapGoals( TEAM.AXIS, false, {
					".*_Axis_Radio_.*",
					"AMMOCAB_south_ammocabinet_1",
					"HEALTHCAB_south_healthcabinet_1",
					"MOUNTMG42_Complex_Roof_MG42",
					"REPAIRMG42_Complex_Roof_MG42",
					"BUILD_Complex_Roof_MG42",
					"MOUNTMG42_Cellar_MG42",
					"REPAIRMG42_Cellar_MG42",
					"BUILD_Cellar_MG42",
					".*_Axis_NearBridge_.*",
					".*_Axis_NearFootBridge_.*",
					".*_Axis_CellarEntrance_.*",
				});

				SetAvailableMapGoals( TEAM.ALLIES, false, {
					".*_Allied_Radio_.*",
					"PLANT_Communications_Radio",
					"AMMOCAB_south_ammocabinet_1",
					"HEALTHCAB_south_healthcabinet_1",
					"PLANT_Complex_Roof_MG42",
					"PLANT_Cellar_MG42",
					"PLANT_Cellar_Entrance",
					".*_Allied_NearBridge_.*",
					".*_Allied_NearFootBridge_.*",
					".*_Allied_NearCellarEntrance_.*",
				});

				SetAvailableMapGoals( TEAM.AXIS, true, {
					".*_Axis_Start_.*",
					".*_Axis_StartBack_.*",
					"AMMOCAB_south_ammocabinet",
					"HEALTHCAB_south_healthcabinet",
				});

				if ( Map.garagedoor2 )
				{
					if ( Map.garagedoor1 )
					{
						SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
					}
					else
					{
						if ( Map.AxisChangeSpawn == 0 )
						{
							SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
						}
						else
						{
							if ( Map.ReSpawn == 1 )
							{
								SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
							}
						}
					}
				}

				if ( !Map.garagedoor1 )
				{
					SetAvailableMapGoals( TEAM.AXIS, false, {
						"PLANTMINE_Axis_Start_1.*",
						"SMOKEBOMB_Axis_Start_13",
						"AIRSTRIKE_Axis_Start_1",
						"AIRSTRIKE_Axis_Start_6",
						"ARTILLERY_S_Axis_Start_5",
						"ARTILLERY_S_Axis_Start_8",
						"CALLARTILLERY_Axis_Start_4",
						"CALLARTILLERY_Axis_Start_10",
					});
				}
				else
				{
					SetAvailableMapGoals( TEAM.AXIS, false, {
						"SMOKEBOMB_Axis_Start_25",
						"AIRSTRIKE_Axis_Start_28",
						"ARTILLERY_S_Axis_Start_27",
						"CALLARTILLERY_Axis_Start_26",
						".*_Axis_Start_7",
						".*_Axis_Start_9",
						".*_Axis_Start_10",
						".*_Axis_Start_11",
						".*_Axis_Start_12",
						".*_Axis_Start_14",
					});
				}

				if ( !Map.garagedoor2 )
				{
					if ( !Map.garagedoor1 or !Map.AxisDoor )
					{
						SetAvailableMapGoals( TEAM.ALLIES, true, "SWITCH_GarageDoor2" );
					}
				}

				SetAvailableMapGoals( TEAM.ALLIES, true, {
					"CHECKPOINT_checkpoint",
					".*_Allied_Start_.*",
					".*_Allied_StartBack_.*",
					"BUILD_Bridge",
					"PLANT_Generator",
				});

				if ( Map.garagedoor1 )
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Garage_Door" );

					if ( Map.AxisDoor )
					{
						if ( Map.Generator == 1 )
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Generator" );
						}
					}
				}

				if ( Map.AxisDoor )
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_Door" );
				}

				if ( Map.WindowMG42 == 0 )
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Window_MG42" );
				}
				else
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, {
						"REPAIRMG42_Window_MG42",
						"MOUNTMG42_Window_MG42",
					});
				}

				if ( Map.CabinMG42 == 0 )
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Cabin_MG42" );
				}
				else
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, {
						"REPAIRMG42_Cabin_MG42",
						"MOUNTMG42_Cabin_MG42",
					});
				}

				Util.MapDebugPrint( "^5BBBB" );
			}
		}
		else
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "MOUNTMG42_Complex_Roof_MG42" );

			if ( Map.AlliesInComplex == 0 )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_NearBridge_.*" );
			}

			Util.MapDebugPrint( "^5ZZZZ" );
		}
	},

	Generator_Built = function( trigger )
	{

		Map.Generator = 1;

		SetAvailableMapGoals( TEAM.AXIS, false, {
			"BUILD_Generator",
			"DEFEND_Axis_InfrontofWall_.*",
			"ROUTE_Wall",
		});

		Util.MapDebugPrint( "^5Generator_Built" );

		if ( !Map.garagedoor1 or !Map.AxisDoor or Map.AlliedFlag == 1 )
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Generator" );
		}

		if ( Map.BridgeBuild == 0 )	//Bridge destroyed
		{
			if ( Map.AlliesInCanyon == 0 )	//Allies are not in canyon
			{
				SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Footbridge" );

				Util.MapDebugPrint( "^5Generator_Built, Bridge destroyed, Allies are not in Canyon" );

				if ( Map.AlliesPastRiver == 0 )	//Allies donīt cross river
				{
					SetAvailableMapGoals( TEAM.ALLIES, false, {
						".*_Allied_Radio_.*",
						"PLANT_Communications_Radio",
						"ATTACK_Allied_NearCellarEntrance_.*",
						".*_Allied_NearFootBridge_.*",
					});

					if ( Map.AlliedFlag == 0 )	//Bunker is Axis
					{
						SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_NearBridge_.*" );

						Util.MapDebugPrint( "^5Generator built, Bridge destroyed, Allies are not in canyon, Allies donīt cross river, Bunker is Axis" );
					}

					if ( Map.CellarEntrance )	//intact
					{
						SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_Entrance" );
					}

					if ( Map.ComplexMG42 )	//built
					{
						SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Complex_Roof_MG42" );
					}
					if ( Map.CellarMG42 == 1 )	//built
					{
						SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_MG42" );
					}
					if ( Map.Footbridge == 0 )	//destroyed
					{
						SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Footbridge" );
					}

					SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_NearFootBridge_.*" );

					Util.MapDebugPrint( "^5Generator_Built, Bridge destroyed, Allies are not in Canyon, Allies donīt cross river" );
				}
				else	//Allies cross river
				{
					if ( Map.AlliedEngPastRiver == 0 )	//Allied engs donīt cross river
					{
						SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Communications_Radio" );

						if ( Map.CellarEntrance )	//intact
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_Entrance" );

							SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_NearFootBridge_.*" );
						}
						else	//Cellarentrance destroyed
						{
							SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_NearFootBridge_.*" );
							SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_NearFootBridge_2" );
						}

						Util.MapDebugPrint( "^5Generator_Built, Bridge destroyed, Allies are not in Canyon, Allies cross river, Allied engs donīt cross river" );

						if ( Map.AlliedCovertPastRiver == 0 )	//Allied covertops donīt cross river
						{
							if ( Map.ComplexMG42 )	//built
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Complex_Roof_MG42" );
							}
							if ( Map.CellarMG42 == 1 )	//built
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_MG42" );
							}

							Util.MapDebugPrint( "^5Generator_Built, Bridge destroyed, Allies are not in Canyon, Allies cross river, Allied engs donīt cross river, Allied covertops donīt cross river" );
						}
					}
				}
			}
			else	//Allies are in canyon
			{
				if ( Map.AlliedEngInCanyon == 0 )	//Allied engs are not in canyon
				{
					if ( Map.Footbridge == 0 )	//Footbridge destroyed
					{
						SetAvailableMapGoals( TEAM.ALLIES, false, {
							"BUILD_Footbridge",
							".*_Allied_NearFootBridge_.*",
						});

						SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_NearFootBridge_.*" );

						Util.MapDebugPrint( "^5Generator_Built, Bridge destroyed, Allies are in Canyon, Allied engs are not in Canyon, Footbridge destroyed" );
					}

					if ( Map.AlliesPastRiver == 0 )	//Allies donīt cross river
					{
						SetAvailableMapGoals( TEAM.ALLIES, false, {
							".*_Allied_Radio_.*",
							"PLANT_Communications_Radio",
						});

						if ( Map.AlliedFlag == 0 )	//Bunker is Axis
						{
							SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_NearBridge_.*" );

							Util.MapDebugPrint( "^5Generator built, Bridge destroyed, Allies are in canyon, Allies donīt cross river, Bunker is Axis" );
						}

						if ( Map.ComplexMG42 )	//built
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Complex_Roof_MG42" );
						}
						if ( Map.CellarMG42 == 1 )	//built
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_MG42" );
						}
						if ( Map.CellarEntrance )	//intact
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, {
								"PLANT_Cellar_Entrance",
								".*_Allied_NearCellarEntrance_.*",
							});
						}
						else	//Cellarentrance destroyed
						{
							SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_NearFootBridge_.*" );
							SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_NearFootBridge_2" );
						}

						Util.MapDebugPrint( "^5Generator_Built, Bridge destroyed, Allies are in Canyon, Allied engs are not in Canyon, Allies donīt cross river" );
					}
					else	//Allies cross river
					{
						if ( Map.AlliedEngPastRiver == 0 )	//Allied engs donīt cross river
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Communications_Radio" );

							if ( Map.Footbridge == 0 )	//Footbridge destroyed
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, {
									"BUILD_Footbridge",
									".*_Allied_NearFootBridge_.*",
								});

								SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_NearFootBridge_.*" );
							}
							if ( Map.CellarEntrance )	//intact
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, {
									"PLANT_Cellar_Entrance",
									".*_Allied_NearCellarEntrance_.*",
								});

								SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_NearFootBridge_.*" );
							}
							else	//Cellarentrance destroyed
							{
								SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_NearFootBridge_.*" );
								SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_NearFootBridge_2" );
							}

							Util.MapDebugPrint( "^5Generator_Built, Bridge destroyed, Allies are in Canyon, Allied engs are not in Canyon, Allies cross river, Allied engs donīt cross river" );

							if ( Map.AlliedCovertPastRiver == 0 )	//Allied covertops donīt cross river
							{
								if ( Map.ComplexMG42 )	//built
								{
									SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Complex_Roof_MG42" );
								}
								if ( Map.CellarMG42 == 1 )	//built
								{
									SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_MG42" );
								}

								Util.MapDebugPrint( "^5Generator_Built, Bridge destroyed, Allies are in Canyon, Allied engs are not in Canyon, Allies cross river, Allied engs donīt cross river, Allied covertops donīt cross river" );
							}
						}
					}
				}
			}
		}
		else	//Bridge built
		{
			if ( Map.AlliesInCanyon == 0 )	//Allies are not in canyon
			{
				SetAvailableMapGoals( TEAM.ALLIES, false, {
					"BUILD_Footbridge",
					".*_Allied_NearFootBridge_.*",
				});

				SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_NearFootBridge_.*" );
				SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_NearFootBridge_2" );

				Util.MapDebugPrint( "^5Generator_Built, Bridge built, Allies are not in Canyon" );

				if ( Map.CellarEntrance )	//intact
				{
					SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allied_NearCellarEntrance_.*" );

					SetAvailableMapGoals( TEAM.ALLIES, true, {
						".*_Allied_NearCellarEntrance_2",
						".*_Allied_NearCellarEntrance_3",
					});

					Util.MapDebugPrint( "^5Generator_Built, Bridge built, Allies are not in Canyon, Cellarentrance intact" );
				}
			}
			else	//Allies are in canyon
			{
				if ( Map.AlliedEngInCanyon == 0 )	//Allied engs are not in canyon
				{
					if ( Map.Footbridge == 0 )	//Footbridge destroyed
					{
						SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Footbridge" );
					}

					SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allied_NearFootBridge_.*" );

					SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_NearFootBridge_.*" );
					SetAvailableMapGoals( TEAM.AXIS, true, {
						".*_Axis_NearFootBridge_1",
						".*_Axis_NearFootBridge_2",
					});

					Util.MapDebugPrint( "^5Generator_Built, Bridge built, Allies are in Canyon, Allied engs are not in Canyon" );

					if ( Map.CellarEntrance )	//intact
					{
						SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allied_NearCellarEntrance_.*" );

						SetAvailableMapGoals( TEAM.ALLIES, true, {
							".*_Allied_NearCellarEntrance_2",
							".*_Allied_NearCellarEntrance_3",
						});

						Util.MapDebugPrint( "^5Generator_Built, Bridge built, Allies are in Canyon, Allied engs are not in Canyon, Cellarentrance intact" );
					}
				}
			}
		}

		if ( Map.AlliesPastRiver == 0 and Map.BridgeBuild == 0 and Map.AlliesInCanyon == 0 and Map.AlliedFlag == 0 )
		{
			if ( Map.AxisChangeSpawn == 1 )
			{
				Util.ChangeSpawn( TEAM.AXIS, 3 );
				Map.ReSpawn = 1;

				Map.AxisChangeSpawn = 0;

				SetAvailableMapGoals( TEAM.AXIS, false, {
					".*_Axis_Radio_.*",
					"AMMOCAB_south_ammocabinet_1",
					"HEALTHCAB_south_healthcabinet_1",
					"MOUNTMG42_Complex_Roof_MG42",
					"REPAIRMG42_Complex_Roof_MG42",
					"BUILD_Complex_Roof_MG42",
					"MOUNTMG42_Cellar_MG42",
					"REPAIRMG42_Cellar_MG42",
					"BUILD_Cellar_MG42",
					".*_Axis_NearBridge_.*",
					".*_Axis_NearFootBridge_.*",
					".*_Axis_CellarEntrance_.*",
				});

				SetAvailableMapGoals( TEAM.ALLIES, false, {
					".*_Allied_Radio_.*",
					"PLANT_Communications_Radio",
					"AMMOCAB_south_ammocabinet_1",
					"HEALTHCAB_south_healthcabinet_1",
					"PLANT_Complex_Roof_MG42",
					"PLANT_Cellar_MG42",
					"PLANT_Cellar_Entrance",
					".*_Allied_NearBridge_.*",
					".*_Allied_NearFootBridge_.*",
					".*_Allied_NearCellarEntrance_.*",
				});

				SetAvailableMapGoals( TEAM.AXIS, true, {
					".*_Axis_Start_.*",
					".*_Axis_StartBack_.*",
					"AMMOCAB_south_ammocabinet",
					"HEALTHCAB_south_healthcabinet",
				});

				if ( Map.garagedoor2 )
				{
					if ( Map.garagedoor1 )
					{
						SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
					}
					else
					{
						if ( Map.AxisChangeSpawn == 0 )
						{
							SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
						}
						else
						{
							if ( Map.ReSpawn == 1 )
							{
								SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
							}
						}
					}
				}

				if ( !Map.garagedoor1 )
				{
					SetAvailableMapGoals( TEAM.AXIS, false, {
						"PLANTMINE_Axis_Start_1.*",
						"SMOKEBOMB_Axis_Start_13",
						"AIRSTRIKE_Axis_Start_1",
						"AIRSTRIKE_Axis_Start_6",
						"ARTILLERY_S_Axis_Start_5",
						"ARTILLERY_S_Axis_Start_8",
						"CALLARTILLERY_Axis_Start_4",
						"CALLARTILLERY_Axis_Start_10",
					});
				}
				else
				{
					SetAvailableMapGoals( TEAM.AXIS, false, {
						"SMOKEBOMB_Axis_Start_25",
						"AIRSTRIKE_Axis_Start_28",
						"ARTILLERY_S_Axis_Start_27",
						"CALLARTILLERY_Axis_Start_26",
						".*_Axis_Start_7",
						".*_Axis_Start_9",
						".*_Axis_Start_10",
						".*_Axis_Start_11",
						".*_Axis_Start_12",
						".*_Axis_Start_14",
					});
				}

				if ( !Map.garagedoor2 )
				{
					if ( !Map.garagedoor1 or !Map.AxisDoor )
					{
						SetAvailableMapGoals( TEAM.ALLIES, true, "SWITCH_GarageDoor2" );
					}
				}

				SetAvailableMapGoals( TEAM.ALLIES, true, {
					"CHECKPOINT_checkpoint",
					".*_Allied_Start_.*",
					".*_Allied_StartBack_.*",
					"BUILD_Bridge",
					"PLANT_Generator",
				});

				if ( Map.garagedoor1 )
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Garage_Door" );
				}

				if ( Map.AxisDoor )
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_Door" );
				}

				if ( Map.WindowMG42 == 0 )
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Window_MG42" );
				}
				else
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, {
						"REPAIRMG42_Window_MG42",
						"MOUNTMG42_Window_MG42",
					});
				}

				if ( Map.CabinMG42 == 0 )
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Cabin_MG42" );
				}
				else
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, {
						"REPAIRMG42_Cabin_MG42",
						"MOUNTMG42_Cabin_MG42",
					});
				}

				Util.MapDebugPrint( "^5Axis_Re-Captured_Garage" );
			}
			else
			{
				SetAvailableMapGoals( TEAM.AXIS, false, {
					".*_Axis_Radio_.*",
					"AMMOCAB_south_ammocabinet_1",
					"HEALTHCAB_south_healthcabinet_1",
					"MOUNTMG42_Complex_Roof_MG42",
					"REPAIRMG42_Complex_Roof_MG42",
					"BUILD_Complex_Roof_MG42",
					"MOUNTMG42_Cellar_MG42",
					"REPAIRMG42_Cellar_MG42",
					"BUILD_Cellar_MG42",
					".*_Axis_NearBridge_.*",
					".*_Axis_NearFootBridge_.*",
					".*_Axis_CellarEntrance_.*",
				});

				SetAvailableMapGoals( TEAM.ALLIES, false, {
					".*_Allied_Radio_.*",
					"PLANT_Communications_Radio",
					"AMMOCAB_south_ammocabinet_1",
					"HEALTHCAB_south_healthcabinet_1",
					"PLANT_Complex_Roof_MG42",
					"PLANT_Cellar_MG42",
					"PLANT_Cellar_Entrance",
					".*_Allied_NearBridge_.*",
					".*_Allied_NearFootBridge_.*",
					".*_Allied_NearCellarEntrance_.*",
				});

				SetAvailableMapGoals( TEAM.AXIS, true, {
					".*_Axis_Start_.*",
					".*_Axis_StartBack_.*",
					"AMMOCAB_south_ammocabinet",
					"HEALTHCAB_south_healthcabinet",
				});

				if ( Map.garagedoor2 )
				{
					if ( Map.garagedoor1 )
					{
						SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
					}
					else
					{
						if ( Map.AxisChangeSpawn == 0 )
						{
							SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
						}
						else
						{
							if ( Map.ReSpawn == 1 )
							{
								SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
							}
						}
					}
				}

				if ( !Map.garagedoor1 )
				{
					SetAvailableMapGoals( TEAM.AXIS, false, {
						"PLANTMINE_Axis_Start_1.*",
						"SMOKEBOMB_Axis_Start_13",
						"AIRSTRIKE_Axis_Start_1",
						"AIRSTRIKE_Axis_Start_6",
						"ARTILLERY_S_Axis_Start_5",
						"ARTILLERY_S_Axis_Start_8",
						"CALLARTILLERY_Axis_Start_4",
						"CALLARTILLERY_Axis_Start_10",
					});
				}
				else
				{
					SetAvailableMapGoals( TEAM.AXIS, false, {
						"SMOKEBOMB_Axis_Start_25",
						"AIRSTRIKE_Axis_Start_28",
						"ARTILLERY_S_Axis_Start_27",
						"CALLARTILLERY_Axis_Start_26",
						".*_Axis_Start_7",
						".*_Axis_Start_9",
						".*_Axis_Start_10",
						".*_Axis_Start_11",
						".*_Axis_Start_12",
						".*_Axis_Start_14",
					});
				}

				if ( !Map.garagedoor2 )
				{
					if ( !Map.garagedoor1 or !Map.AxisDoor )
					{
						SetAvailableMapGoals( TEAM.ALLIES, true, "SWITCH_GarageDoor2" );
					}
				}

				SetAvailableMapGoals( TEAM.ALLIES, true, {
					"CHECKPOINT_checkpoint",
					".*_Allied_Start_.*",
					".*_Allied_StartBack_.*",
					"BUILD_Bridge",
					"PLANT_Generator",
				});

				if ( Map.garagedoor1 )
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Garage_Door" );

					if ( Map.AxisDoor )
					{
						if ( Map.Generator == 1 )
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Generator" );
						}
					}
				}

				if ( Map.AxisDoor )
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_Door" );
				}

				if ( Map.WindowMG42 == 0 )
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Window_MG42" );
				}
				else
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, {
						"REPAIRMG42_Window_MG42",
						"MOUNTMG42_Window_MG42",
					});
				}

				if ( Map.CabinMG42 == 0 )
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Cabin_MG42" );
				}
				else
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, {
						"REPAIRMG42_Cabin_MG42",
						"MOUNTMG42_Cabin_MG42",
					});
				}

				Util.MapDebugPrint( "^5CCCC" );
			}
		}
		else
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "MOUNTMG42_Complex_Roof_MG42" );

			if ( Map.AlliesInComplex == 0 )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_NearBridge_.*" );
			}

			Util.MapDebugPrint( "^5YYYY" );
		}
	},

	Generator_Planted = function( trigger )
	{
		Map.Generator_Dyno += 1;

		if ( Map.AlliedFlag == 0 )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "DEFUSE_Generator_.*" );
		}
		else
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Generator_.*" );
		}

		Util.MapDebugPrint( "^5Generator_Planted" );
	},

	Generator_Defused = function( trigger )
	{
		Map.Generator_Dyno -= 1;

		Util.MapDebugPrint( "^5Generator_Defused" );
	},

	Generator_Destroyed = function( trigger )
	{
		Map.Generator_Dyno = 0;
		Map.Generator = 0;

		SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Generator" );

		SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Generator_.*" );

		SetGoalPriority( "BUILD_Footbridge", 0.91, TEAM.ALLIES, CLASS.ENGINEER );

		Util.MapDebugPrint( "^5Generator_Destroyed" );

		if ( Map.AlliesInCanyon == 0 )	//Allies are not in Canyon
		{
			if ( Map.Footbridge == 1 )	//built
			{
				if ( Map.AlliedFlag == 0 )	//bunker is Axis
				{
					if ( Map.CellarEntrance )	//intact
					{
						SetAvailableMapGoals( TEAM.AXIS, true, {
							".*_Axis_NearFootBridge_3",
							".*_Axis_NearFootBridge_4",
							"DEFEND_Axis_InfrontofWall_.*",
							"PLANTMINE_Axis_CellarEntrance_.*",
						});

						Util.MapDebugPrint( "^5Generator destroyed, Allies are not in canyon, Footbridge built, Bunker is Axis, Cellarentrance intact" );
					}
					else	//destroyed
					{
						SetAvailableMapGoals( TEAM.AXIS, true, {
							".*_Axis_NearFootBridge_.*",
							"DEFEND_Axis_InfrontofWall_1",
							"DEFEND_Axis_InfrontofWall_2",
							"PLANTMINE_Axis_CellarEntrance_.*",
						});

						Util.MapDebugPrint( "^5Generator destroyed, Allies are not in canyon, Footbridge built, Bunker is Axis, Cellarentrance destroyed" );
					}
				}
				else	//bunker is Allied
				{
					SetAvailableMapGoals( TEAM.AXIS, true, {
						"DEFEND_Axis_InfrontofWall_1",
						"DEFEND_Axis_InfrontofWall_2",
						".*_Axis_NearFootBridge_3",
						".*_Axis_NearFootBridge_4",
						".*_Axis_NearFootBridge_5",
						".*_Axis_NearFootBridge_6",
						"PLANTMINE_Axis_CellarEntrance_.*",
					});

					Util.MapDebugPrint( "^5Generator destroyed, Allies are not in canyon, Footbridge built, Bunker is Allied" );
				}
			}
			else	//Footbridge destroyed
			{
				if ( Map.AlliedFlag == 0 )	//bunker is Axis
				{
					SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_NearFootBridge_.*" );

					SetAvailableMapGoals( TEAM.AXIS, true, {
						"DEFEND_Axis_InfrontofWall_.*",
						"PLANTMINE_Axis_CellarEntrance_.*",
					});

					Util.MapDebugPrint( "^5Generator destroyed, Allies are not in canyon, Footbridge destroyed, Bunker is Axis" );
				}
				else	//bunker is Allied
				{
					SetAvailableMapGoals( TEAM.AXIS, true, {
						"DEFEND_Axis_InfrontofWall_1",
						"DEFEND_Axis_InfrontofWall_2",
						".*_Axis_NearFootBridge_3",
						".*_Axis_NearFootBridge_4",
						".*_Axis_NearFootBridge_5",
						".*_Axis_NearFootBridge_6",
						"PLANTMINE_Axis_CellarEntrance_.*",
					});

					Util.MapDebugPrint( "^5Generator destroyed, Allies are not in canyon, Footbridge destroyed, Bunker is Allied" );
				}
			}
		}
		else	//Allies are in Canyon
		{
			if ( Map.AlliedEngInCanyon == 0 )	//Allied engs are not in canyon
			{
				if ( Map.Footbridge == 1 )	//built
				{
					if ( Map.AlliedFlag == 0 )	//bunker is Axis
					{
						if ( Map.CellarEntrance )	//intact
						{
							SetAvailableMapGoals( TEAM.AXIS, true, {
								".*_Axis_NearFootBridge_1",
								".*_Axis_NearFootBridge_3",
								"DEFEND_Axis_InfrontofWall_.*",
								"PLANTMINE_Axis_CellarEntrance_.*",
							});

							Util.MapDebugPrint( "^5Generator destroyed, Allies are in canyon, Allied engs are not in canyon, Footbridge built, Bunker is Axis, Cellarentrance intact" );
						}
						else	//destroyed
						{
							SetAvailableMapGoals( TEAM.AXIS, true, {
								".*_Axis_NearFootBridge_.*",
								"DEFEND_Axis_InfrontofWall_1",
								"DEFEND_Axis_InfrontofWall_2",
								"PLANTMINE_Axis_CellarEntrance_.*",
							});

							Util.MapDebugPrint( "^5Generator destroyed, Allies are in canyon, Allied engs are not in canyon, Footbridge built, Bunker is Axis, Cellarentrance destroyed" );
						}
					}
					else	//bunker is Allied
					{
						SetAvailableMapGoals( TEAM.AXIS, true, {
							"DEFEND_Axis_InfrontofWall_1",
							"DEFEND_Axis_InfrontofWall_2",
							".*_Axis_NearFootBridge_1",
							".*_Axis_NearFootBridge_3",
							".*_Axis_NearFootBridge_5",
							".*_Axis_NearFootBridge_6",
							"PLANTMINE_Axis_CellarEntrance_.*",
						});

						Util.MapDebugPrint( "^5Generator destroyed, Allies are in canyon, Allied engs are not in canyon, Footbridge built, Bunker is Allied" );
					}
				}
				else	//Footbridge destroyed
				{
					if ( Map.AlliedFlag == 0 )	//bunker is Axis
					{
						SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_NearFootBridge_.*" );

						SetAvailableMapGoals( TEAM.AXIS, true, {
							".*_Axis_NearFootBridge_3",
							"DEFEND_Axis_InfrontofWall_.*",
							"PLANTMINE_Axis_CellarEntrance_.*",
						});

						Util.MapDebugPrint( "^5Generator destroyed, Allies are in canyon, Allied engs are not in canyon, Footbridge destroyed, Bunker is Axis" );
					}
					else	//bunker is Allied
					{
						SetAvailableMapGoals( TEAM.AXIS, true, {
							"DEFEND_Axis_InfrontofWall_1",
							"DEFEND_Axis_InfrontofWall_2",
							".*_Axis_NearFootBridge_3",
							".*_Axis_NearFootBridge_4",
							".*_Axis_NearFootBridge_5",
							".*_Axis_NearFootBridge_6",
							"PLANTMINE_Axis_CellarEntrance_.*",
						});

						Util.MapDebugPrint( "^5Generator destroyed, Allies are in canyon, Allied engs are not in canyon, Footbridge destroyed, Bunker is Allied" );
					}
				}
			}
		}

		sleep(23);

		SetAvailableMapGoals( TEAM.AXIS, true, "ROUTE_Wall" );

		if ( Map.Footbridge == 0 )	//destroyed
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, {
				"BUILD_Footbridge",
				".*_Allied_NearFootBridge_.*",
			});

			Util.MapDebugPrint( "^5Generator_Destroyed, Footbridge destroyed" );
		}
		else	//Footbridge built
		{
			if ( Map.CellarEntrance )	//intact
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, ".*_Allied_NearCellarEntrance_.*" );

				SetGoalPriority( "PLANT_Cellar_Entrance", 0.92, TEAM.ALLIES, CLASS.ENGINEER );

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

				Util.MapDebugPrint( "^5Generator_Destroyed, Footbridge built, Cellarentrance intact" );
			}
			else	//Cellarentrance destroyed
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, {
					"AMMOCAB_south_ammocabinet_1",
					"HEALTHCAB_south_healthcabinet_1",
					".*_Allied_Radio_.*",
					"PLANT_Communications_Radio",
				});

				if ( Map.ComplexMG42 )	//built
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Complex_Roof_MG42" );
				}
				if ( Map.CellarMG42 == 1 )	//built
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Cellar_MG42" );
				}

				Util.MapDebugPrint( "^5Generator_Destroyed, Footbridge built, Cellarentrance destroyed" );
			}
		}
	},

	Footbridge_Built = function( trigger )
	{

		Map.Footbridge = 1;

		SetAvailableMapGoals( TEAM.ALLIES, false, {
			"BUILD_Footbridge",
			".*_Allied_NearFootBridge_.*",
		});

		SetAvailableMapGoals( TEAM.AXIS, true, {
			"PLANT_Footbridge",
			"ROUTE_Footbridge",
		});

		Util.MapDebugPrint( "^5Footbridge_Built" );

		if ( Map.AlliesInCanyon == 0 )	//Allies are not in Canyon
		{
			if ( Map.Generator == 0 )	//Generator destroyed
			{
				if ( Map.AlliedFlag == 0 )	//bunker is Axis
				{
					if ( Map.CellarEntrance )	//intact
					{
						SetAvailableMapGoals( TEAM.AXIS, true, {
							".*_Axis_NearFootBridge_3",
							".*_Axis_NearFootBridge_4",
							"DEFEND_Axis_InfrontofWall_.*",
							"PLANTMINE_Axis_CellarEntrance_.*",
						});

						SetAvailableMapGoals( TEAM.ALLIES, true, ".*_Allied_NearCellarEntrance_.*" );
						SetGoalPriority( "PLANT_Cellar_Entrance", 0.92, TEAM.ALLIES, CLASS.ENGINEER );
						SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Cellar_Entrance" );

						Util.MapDebugPrint( "^5Footbridge built, Allies are not in canyon, Generator destroyed, Bunker is Axis, Cellarentrance intact" );
					}
					else	//Cellarentrance destroyed
					{
						SetAvailableMapGoals( TEAM.AXIS, true, {
							".*_Axis_NearFootBridge_.*",
							"DEFEND_Axis_InfrontofWall_1",
							"DEFEND_Axis_InfrontofWall_2",
							"PLANTMINE_Axis_CellarEntrance_.*",
						});

						SetAvailableMapGoals( TEAM.ALLIES, true, {
							"PLANT_Communications_Radio",
							"AMMOCAB_south_ammocabinet_1",
							"HEALTHCAB_south_healthcabinet_1",
							".*_Allied_Radio_.*",
						});

						if ( Map.ComplexMG42 )	//built
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Complex_Roof_MG42" );
						}
						if ( Map.CellarMG42 == 1 )	//built
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Cellar_MG42" );
						}

						Util.MapDebugPrint( "^5Footbridge built, Allies are not in canyon, Generator destroyed, Bunker is Axis, Cellarentrance destroyed" );
					}
				}
				else	//bunker is Allied
				{
					SetAvailableMapGoals( TEAM.AXIS, true, {
						"DEFEND_Axis_InfrontofWall_1",
						"DEFEND_Axis_InfrontofWall_2",
						".*_Axis_NearFootBridge_.*",
						"PLANTMINE_Axis_CellarEntrance_.*",
					});

					Util.MapDebugPrint( "^5Footbridge built, Allies are not in canyon, Generator destroyed, Bunker is Allied" );

					if ( Map.CellarEntrance )	//intact
					{
						SetAvailableMapGoals( TEAM.ALLIES, true, ".*_Allied_NearCellarEntrance_.*" );
						SetGoalPriority( "PLANT_Cellar_Entrance", 0.92, TEAM.ALLIES, CLASS.ENGINEER );
						SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Cellar_Entrance" );

						Util.MapDebugPrint( "^5Footbridge built, Allies are not in canyon, Generator destroyed, Bunker is Allied, Cellarentrance intact" );
					}
					else	//Cellarentrance destroyed
					{
						SetAvailableMapGoals( TEAM.ALLIES, true, {
							"PLANT_Communications_Radio",
							"AMMOCAB_south_ammocabinet_1",
							"HEALTHCAB_south_healthcabinet_1",
							".*_Allied_Radio_.*",
						});

						if ( Map.ComplexMG42 )	//built
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Complex_Roof_MG42" );
						}
						if ( Map.CellarMG42 == 1 )	//built
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Cellar_MG42" );
						}

						Util.MapDebugPrint( "^5Footbridge built, Allies are not in canyon, Generator destroyed, Bunker is Allied, Cellarentrance destroyed" );
					}
				}
			}
			else	//Generator built
			{
				if ( Map.CellarEntrance )	//intact
				{
					SetAvailableMapGoals( TEAM.AXIS, true, {
						".*_Axis_NearFootBridge_1",
						".*_Axis_NearFootBridge_2",
						".*_Axis_NearFootBridge_3",
						"PLANTMINE_Axis_CellarEntrance_.*",
					});

					SetAvailableMapGoals( TEAM.ALLIES, true, ".*_Allied_NearCellarEntrance_.*" );
					SetGoalPriority( "PLANT_Cellar_Entrance", 0.92, TEAM.ALLIES, CLASS.ENGINEER );
					SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Cellar_Entrance" );

					Util.MapDebugPrint( "^5Footbridge built, Allies are not in canyon, Generator built, Cellarentrance intact" );

					sleep(15);	//waiting if allied eng enter into canyon

					if ( Map.AlliesPastRiver == 0 and Map.BridgeBuild == 0 and Map.AlliedEngInCanyon == 0 and Map.Generator == 1 and Map.CellarEntrance )
					{
						SetAvailableMapGoals( TEAM.ALLIES, false, {
							"PLANT_Cellar_Entrance",
							".*_Allied_NearCellarEntrance_.*",
						});

						SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_NearFootBridge_.*" );

						Util.MapDebugPrint( "^5DFootbridge_Built, Allies donīt cross river, Bridge destroyed, Allied engs are not in canyon, Generator built, Cellarentrance intact" );
					}
				}
				else	//cellarentrance destroyed
				{
					SetAvailableMapGoals( TEAM.AXIS, true, {
						".*_Axis_NearFootBridge_1",
						".*_Axis_NearFootBridge_2",
						".*_Axis_NearFootBridge_3",
						"PLANTMINE_Axis_CellarEntrance_.*",
					});

					SetAvailableMapGoals( TEAM.ALLIES, true, {
						"PLANT_Communications_Radio",
						"AMMOCAB_south_ammocabinet_1",
						"HEALTHCAB_south_healthcabinet_1",
						".*_Allied_Radio_.*",
					});

					if ( Map.ComplexMG42 )	//built
					{
						SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Complex_Roof_MG42" );
					}
					if ( Map.CellarMG42 == 1 )	//built
					{
						SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Cellar_MG42" );
					}

					Util.MapDebugPrint( "^5Footbridge built, Allies are not in canyon, Generator built, Cellarentrance destroyed" );

					sleep(15);	//waiting if allied eng enter into canyon

					if ( Map.AlliesPastRiver == 0 and Map.BridgeBuild == 0 and Map.AlliedEngInCanyon == 0 and Map.Generator == 1 )
					{
						SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Communications_Radio" );

						if ( Map.ComplexMG42 )	//built
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Complex_Roof_MG42" );
						}
						if ( Map.CellarMG42 == 1 )	//built
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_MG42" );
						}

						Util.MapDebugPrint( "^5DFootbridge_Built, Allies donīt cross river, Bridge destroyed, Allied engs are not in canyon, Generator built, Cellarentrance destroyed" );

						if ( Map.AlliesInCanyon == 0 )	//Allies are not in canyon
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, {
								"AMMOCAB_south_ammocabinet_1",
								"HEALTHCAB_south_healthcabinet_1",
								".*_Allied_Radio_.*",
							});

							SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_NearFootBridge_.*" );

							Util.MapDebugPrint( "^5DFootbridge_Built, Allies donīt cross river, Bridge destroyed, Allies are not in canyon, Generator built, Cellarentrance destroyed" );
						}
					}
				}
			}
		}
		else	//Allies are in Canyon
		{
			if ( Map.AlliedEngInCanyon == 0 )	//Allied engs are not in canyon
			{
				if ( Map.Generator == 0 )	//Generator destroyed
				{
					SetAvailableMapGoals( TEAM.AXIS, true, {
						".*_Axis_NearFootBridge_.*",
						"DEFEND_Axis_InfrontofWall_1",
						"DEFEND_Axis_InfrontofWall_2",
						"PLANTMINE_Axis_CellarEntrance_.*",
					});

					Util.MapDebugPrint( "^5Footbridge built, Allies are in canyon, Allied engs are not in canyon, Generator destroyed, Bunker is Axis" );

					if ( Map.CellarEntrance )	//intact
					{
						SetAvailableMapGoals( TEAM.ALLIES, true, ".*_Allied_NearCellarEntrance_.*" );
						SetGoalPriority( "PLANT_Cellar_Entrance", 0.92, TEAM.ALLIES, CLASS.ENGINEER );
						SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Cellar_Entrance" );

						Util.MapDebugPrint( "^5Footbridge built, Allies are in canyon, Allied engs are not in canyon, Generator destroyed, Bunker is Axis, Cellarentrance intact" );
					}
					else	//Cellarentrance destroyed
					{
						SetAvailableMapGoals( TEAM.ALLIES, true, {
							"PLANT_Communications_Radio",
							"AMMOCAB_south_ammocabinet_1",
							"HEALTHCAB_south_healthcabinet_1",
							".*_Allied_Radio_.*",
						});

						if ( Map.ComplexMG42 )	//built
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Complex_Roof_MG42" );
						}
						if ( Map.CellarMG42 == 1 )	//built
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Cellar_MG42" );
						}

						Util.MapDebugPrint( "^5Footbridge built, Allies are in canyon, Allied engs are not in canyon, Generator destroyed, Bunker is Axis, Cellarentrance destroyed" );
					}
				}
				else	//Generator built
				{
					SetAvailableMapGoals( TEAM.AXIS, true, {
						".*_Axis_NearFootBridge_1",
						".*_Axis_NearFootBridge_2",
						".*_Axis_NearFootBridge_3",
						"PLANTMINE_Axis_CellarEntrance_.*",
					});

					Util.MapDebugPrint( "^5Footbridge built, Allies are in canyon, Allied engs are not in canyon, Generator built" );

					if ( Map.CellarEntrance )	//intact
					{
						SetAvailableMapGoals( TEAM.ALLIES, true, ".*_Allied_NearCellarEntrance_.*" );
						SetGoalPriority( "PLANT_Cellar_Entrance", 0.92, TEAM.ALLIES, CLASS.ENGINEER );
						SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Cellar_Entrance" );

						Util.MapDebugPrint( "^5Footbridge built, Allies are in canyon, Allied engs are not in canyon, Generator built, Cellarentrance intact" );

						sleep(15);	//waiting if allied eng enter into canyon

						if ( Map.AlliesPastRiver == 0 and Map.BridgeBuild == 0 and Map.AlliedEngInCanyon == 0 and Map.Generator == 1 and Map.CellarEntrance )
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, {
								"PLANT_Cellar_Entrance",
								".*_Allied_NearCellarEntrance_.*",
							});

							SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_NearFootBridge_.*" );

							Util.MapDebugPrint( "^5EFootbridge_Built, Allies donīt cross river, Bridge destroyed, Allied engs are not in canyon, Generator built, Cellarentrance intact" );
						}
					}
					else	//cellarentrance destroyed
					{
						SetAvailableMapGoals( TEAM.AXIS, true, {
							".*_Axis_NearFootBridge_1",
							".*_Axis_NearFootBridge_2",
							".*_Axis_NearFootBridge_3",
							"PLANTMINE_Axis_CellarEntrance_.*",
						});

						SetAvailableMapGoals( TEAM.ALLIES, true, {
							"PLANT_Communications_Radio",
							"AMMOCAB_south_ammocabinet_1",
							"HEALTHCAB_south_healthcabinet_1",
							".*_Allied_Radio_.*",
						});

						if ( Map.ComplexMG42 )	//built
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Complex_Roof_MG42" );
						}
						if ( Map.CellarMG42 == 1 )	//built
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Cellar_MG42" );
						}

						Util.MapDebugPrint( "^5Footbridge built, Allies are in canyon, Allied engs are not in canyon, Generator built, Cellarentrance destroyed" );

						sleep(15);	//waiting if allied eng enter into canyon

						if ( Map.AlliesPastRiver == 0 and Map.BridgeBuild == 0 and Map.AlliedEngInCanyon == 0 and Map.Generator == 1 )
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Communications_Radio" );

							if ( Map.ComplexMG42 )	//built
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Complex_Roof_MG42" );
							}
							if ( Map.CellarMG42 == 1 )	//built
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_MG42" );
							}

							Util.MapDebugPrint( "^5EFootbridge_Built, Allies donīt cross river, Bridge destroyed, Allied engs are not in canyon, Generator built, Cellarentrance destroyed" );

							if ( Map.AlliesInCanyon == 0 )	//Allies are not in canyon
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, {
									"AMMOCAB_south_ammocabinet_1",
									"HEALTHCAB_south_healthcabinet_1",
									".*_Allied_Radio_.*",
								});

								SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_NearFootBridge_.*" );

								Util.MapDebugPrint( "^5EFootbridge_Built, Allies donīt cross river, Bridge destroyed, Allies are not in canyon, Generator built, Cellarentrance destroyed" );
							}
						}
					}
				}
			}
		}
	},

	Footbridge_Planted = function( trigger )
	{
		Map.Footbridge_Dyno += 1;

		SetGoalPriority( "DEFUSE_Footbridge_*", 0.75, TEAM.ALLIES, CLASS.ENGINEER );
		SetAvailableMapGoals( TEAM.ALLIES, true, "DEFUSE_Footbridge_*" );

		Util.MapDebugPrint( "^5Footbridge_Planted" );
	},

	Footbridge_Defused = function( trigger )
	{
		Map.Footbridge_Dyno -= 1;

		Util.MapDebugPrint( "^5Footbridge_Defused" );
	},

	Footbridge_Destroyed = function( trigger )
	{
		Map.Footbridge_Dyno = 0;
		Map.Footbridge = 0;

		SetAvailableMapGoals( TEAM.ALLIES, false, "DEFUSE_Footbridge_.*" );

		SetAvailableMapGoals( TEAM.AXIS, false, {
			"PLANT_Footbridge",
			"ROUTE_Footbridge",
		});

		if ( Map.AlliesInCanyon == 0 )	//Allies are not in Canyon
		{
			if ( Map.Generator == 0 )	//destroyed
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, {
					"BUILD_Footbridge",
					".*_Allied_NearFootBridge_.*",
				});

				Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are not in canyon, Generator destroyed" );

				if ( Map.AlliesPastRiver == 0 and Map.BridgeBuild == 0 )	//Allies donīt cross river, Bridge destroyed
				{
					if ( Map.AlliedFlag == 0 )	//Bunker is Axis
					{
						SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_NearBridge_.*" );

						Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies donīt cross river, Bridge destroyed, Bunker is Axis" );
					}

					if ( Map.CellarEntrance )	//intact
					{
						SetAvailableMapGoals( TEAM.ALLIES, false, {
							"PLANT_Cellar_Entrance",
							".*_Allied_NearCellarEntrance_.*",
						});

						Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are not in canyon, Generator destroyed, Allies donīt cross river, Bridge destroyed, Cellar entrance intact" );
					}
					else	//Cellarentrance destroyed
					{
						SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Communications_Radio" );

						if ( Map.ComplexMG42 )	//built
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Complex_Roof_MG42" );
						}
						if ( Map.CellarMG42 == 1 )	//built
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_MG42" );
						}

						SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allied_Radio_.*" );

						Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are not in canyon, Generator destroyed, Allies donīt cross river, Bridge destroyed, Cellar entrance destroyed" );
					}
					if ( Map.AxisChangeSpawn == 0 and Map.AlliedFlag == 0 )	//Bunker is Axis
					{
						SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_NearFootBridge_.*" );

						SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_InfrontofWall_.*" );

						Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are not in canyon, Generator destroyed, Allies donīt cross river, Bridge destroyed, Setting Axis defend to wall" );
					}
				}
				else	//Allies cross river or Bridge built
				{
					if ( Map.AlliedEngPastRiver == 0 and Map.BridgeBuild == 0 )	//Allied engs donīt cross river, Bridge destroyed
					{
						if ( Map.CellarEntrance )	//intact
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, {
								"PLANT_Cellar_Entrance",
								".*_Allied_NearCellarEntrance_.*",
							});

							Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are not in canyon, Generator destroyed, Allies cross river, Allied engs donīt cross river, Bridge destroyed, Cellar entrance intact" );
						}
						else	//Cellarentrance destroyed
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Communications_Radio" );

							if ( Map.ComplexMG42 )	//built
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Complex_Roof_MG42" );
							}
							if ( Map.CellarMG42 == 1 )	//built
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_MG42" );
							}

							SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allied_Radio_.*" );

							Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are not in canyon, Generator destroyed, Allies cross river, Allied engs donīt cross river, Bridge destroyed, Cellar entrance destroyed" );
						}
						if ( Map.AxisChangeSpawn == 0 and Map.AlliedFlag == 0 )	//Bunker is Axis
						{
							SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_NearFootBridge_.*" );

							SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_InfrontofWall_.*" );

							Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are not in canyon, Generator destroyed, Allies cross river, Allied engs donīt cross river, Bridge destroyed, Setting Axis defend to wall" );
						}
					}
				}
			}
			else	//Generator built
			{
				SetAvailableMapGoals( TEAM.ALLIES, false, {
					"BUILD_Footbridge",
					".*_Allied_NearFootBridge_.*",
				});

				Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are not in canyon, Generator built" );

				if ( Map.AlliesPastRiver == 0 and Map.BridgeBuild == 0 )	//Allies donīt cross river, Bridge destroyed
				{
					if ( Map.AlliedFlag == 0 )	//Bunker is Axis
					{
						SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_NearBridge_.*" );

						Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies donīt cross river, Bridge destroyed, Bunker is Axis" );
					}

					if ( Map.CellarEntrance )	//intact
					{
						SetAvailableMapGoals( TEAM.ALLIES, false, {
							"PLANT_Cellar_Entrance",
							".*_Allied_NearCellarEntrance_.*",
						});

						Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are not in canyon, Generator built, Allies donīt cross river, Bridge destroyed, Cellar entrance intact" );
					}
					else	//cellarentrance destroyed
					{
						SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Communications_Radio" );

						if ( Map.ComplexMG42 )	//built
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Complex_Roof_MG42" );
						}
						if ( Map.CellarMG42 == 1 )	//built
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_MG42" );
						}

						SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allied_Radio_.*" );

						Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are not in canyon, Generator built, Allies donīt cross river, Bridge destroyed, Cellar entrance destroyed" );
					}
					if ( Map.AxisChangeSpawn == 0 and Map.AlliedFlag == 0 )	//Bunker is Axis
					{
						SetAvailableMapGoals( TEAM.AXIS, false, {
							".*_Axis_NearFootBridge_.*",
							"DEFEND_Axis_InfrontofWall_.*",
						});

						Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are not in canyon, Generator built, Allies donīt cross river, Bridge destroyed, Cancell Axis defend in Canyon" );
					}
				}
				else	//Allies cross river or Bridge built
				{
					if ( Map.AlliedEngPastRiver == 0 and Map.BridgeBuild == 0 )	//Allied engs donīt cross river, Bridge destroyed
					{
						if ( Map.CellarEntrance )	//intact
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, {
								"PLANT_Cellar_Entrance",
								".*_Allied_NearCellarEntrance_.*",
							});

							Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are not in canyon, Generator built, Allies cross river, Allied engs donīt cross river, Bridge destroyed, Cellar entrance intact" );
						}
						else	//Cellarentrance destroyed
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Communications_Radio" );

							if ( Map.ComplexMG42 )	//built
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Complex_Roof_MG42" );
							}
							if ( Map.CellarMG42 == 1 )	//built
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_MG42" );
							}

							SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allied_Radio_.*" );

							Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are not in canyon, Generator built, Allies cross river, Allied engs donīt cross river, Bridge destroyed, Cellar entrance destroyed" );
						}
						if ( Map.AxisChangeSpawn == 0 and Map.AlliedFlag == 0 )	//Bunker is Axis
						{
							SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_NearFootBridge_.*" );

							SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_InfrontofWall_.*" );

							Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are not in canyon, Generator built, Allies cross river, Allied engs donīt cross river, Bridge destroyed, Setting Axis defend to wall" );
						}
					}
				}
			}
		}
		else	//Allies are in Canyon
		{
			if ( Map.AlliedEngInCanyon == 0 )	//Allied engs are not in canyon
			{
				if ( Map.Generator == 0 )	//destroyed
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, {
						"BUILD_Footbridge",
						".*_Allied_NearFootBridge_.*",
					});

					Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are in canyon, Allied engs are not in canyon, Generator destroyed" );

					if ( Map.AlliesPastRiver == 0 and Map.BridgeBuild == 0 )	//Allies donīt cross river, Bridge destroyed
					{
						if ( Map.CellarEntrance )	//intact
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, {
								"PLANT_Cellar_Entrance",
								".*_Allied_NearCellarEntrance_.*",
							});

							Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are in canyon, Allied engs are not in canyon, Generator destroyed, Allies donīt cross river, Bridge destroyed, Cellar entrance intact" );
						}
						else	//Cellarentrance destroyed
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Communications_Radio" );

							if ( Map.ComplexMG42 )	//built
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Complex_Roof_MG42" );
							}
							if ( Map.CellarMG42 == 1 )	//built
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_MG42" );
							}

							SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allied_Radio_.*" );

							Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are in canyon, Allied engs are not in canyon, Generator destroyed, Allies donīt cross river, Bridge destroyed, Cellar entrance destroyed" );
						}
						if ( Map.AxisChangeSpawn == 0 and Map.AlliedFlag == 0 )	//Bunker is Axis
						{
							SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_NearFootBridge_.*" );

							SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_InfrontofWall_.*" );

							Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are in canyon, Allied engs are not in canyon, Generator destroyed, Allies donīt cross river, Bridge destroyed, Setting Axis defend to wall" );
						}
					}
					else	//Allies cross river or Bridge built
					{
						if ( Map.AlliedEngPastRiver == 0 and Map.BridgeBuild == 0 )	//Allied engs donīt cross river, Bridge destroyed
						{
							if ( Map.CellarEntrance )	//intact
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, {
									"PLANT_Cellar_Entrance",
									".*_Allied_NearCellarEntrance_.*",
								});

								Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are in canyon, Allied engs are not in canyon, Generator destroyed, Allies cross river, Allied engs donīt cross river, Bridge destroyed, Cellar entrance intact" );
							}
							else	//Cellarentrance destroyed
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Communications_Radio" );

								if ( Map.ComplexMG42 )	//built
								{
									SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Complex_Roof_MG42" );
								}
								if ( Map.CellarMG42 == 1 )	//built
								{
									SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_MG42" );
								}

								SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allied_Radio_.*" );

								Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are in canyon, Allied engs are not in canyon, Generator destroyed, Allies cross river, Allied engs donīt cross river, Bridge destroyed, Cellar entrance destroyed" );
							}
							if ( Map.AxisChangeSpawn == 0 and Map.AlliedFlag == 0 )	//Bunker is Axis
							{
								SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_NearFootBridge_.*" );

								SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_InfrontofWall_.*" );

								Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are in canyon, Allied engs are not in canyon, Generator destroyed, Allies cross river, Allied engs donīt cross river, Bridge destroyed, Setting Axis defend to wall" );
							}
						}
					}
				}
				else	//Generator built
				{
					SetAvailableMapGoals( TEAM.ALLIES, false, {
						"BUILD_Footbridge",
						".*_Allied_NearFootBridge_.*",
					});

					Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are in canyon, Generator built" );

					if ( Map.AlliesPastRiver == 0 and Map.BridgeBuild == 0 )	//Allies donīt cross river, Bridge destroyed
					{
						if ( Map.CellarEntrance )	//intact
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, {
								"PLANT_Cellar_Entrance",
								".*_Allied_NearCellarEntrance_.*",
							});

							Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are in canyon, Allied engs are not in canyon, Generator built, Allies donīt cross river, Bridge destroyed, Cellar entrance intact" );
						}
						else	//cellarentrance destroyed
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Communications_Radio" );

							if ( Map.ComplexMG42 )	//built
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Complex_Roof_MG42" );
							}
							if ( Map.CellarMG42 == 1 )	//built
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_MG42" );
							}

							SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allied_Radio_.*" );

							Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are in canyon, Allied engs are not in canyon, Generator built, Allies donīt cross river, Bridge destroyed, Cellar entrance destroyed" );
						}
						if ( Map.AxisChangeSpawn == 0 and Map.AlliedFlag == 0 )	//Bunker is Axis
						{
							SetAvailableMapGoals( TEAM.AXIS, false, {
								".*_Axis_NearFootBridge_.*",
								"DEFEND_Axis_InfrontofWall_.*",
							});

							Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are in canyon, Allied engs are not in canyon, Generator built, Allies donīt cross river, Bridge destroyed, Cancell Axis defend in Canyon" );
						}
					}
					else	//Allies cross river or Bridge built
					{
						if ( Map.AlliedEngPastRiver == 0 and Map.BridgeBuild == 0 )	//Allied engs donīt cross river, Bridge destroyed
						{
							if ( Map.CellarEntrance )	//intact
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, {
									"PLANT_Cellar_Entrance",
									".*_Allied_NearCellarEntrance_.*",
								});

								Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are in canyon, Allied engs are not in canyon, Generator built, Allies cross river, Allied engs donīt cross river, Bridge destroyed, Cellar entrance intact" );
							}
							else	//cellarentrance destroyed
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Communications_Radio" );

								if ( Map.ComplexMG42 )	//built
								{
									SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Complex_Roof_MG42" );
								}
								if ( Map.CellarMG42 == 1 )	//built
								{
									SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_MG42" );
								}

								SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allied_Radio_.*" );

								Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are in canyon, Allied engs are not in canyon, Generator built, Allies cross river, Allied engs donīt cross river, Bridge destroyed, Cellar entrance destroyed" );
							}
							if ( Map.AxisChangeSpawn == 0 and Map.AlliedFlag == 0 )	//Bunker is Axis
							{
								SetAvailableMapGoals( TEAM.AXIS, false, {
									".*_Axis_NearFootBridge_.*",
									"DEFEND_Axis_InfrontofWall_.*",
								});

								Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are in canyon, Allied engs are not in canyon, Generator built, Allies cross river, Allied engs donīt cross river, Bridge destroyed, Cancell Axis defend in Canyon" );
							}
						}
					}
				}
			}
			//else
			//{
				//Util.MapDebugPrint( "^5Footbridge_Destroyed, Allies are in canyon, Allied engs are in canyon" );
			//}
		}
	},

	Complex_Roof_MG42_Built = function( trigger )
	{

		Map.ComplexMG42 = true;
		Wp.SetWaypointFlag( "Axis_Tower", "closed", false);

		SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Complex_Roof_MG42" );

		if ( Map.AxisChangeSpawn == 1 )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, {
				"MOUNTMG42_Complex_Roof_MG42",
				"REPAIRMG42_Complex_Roof_MG42",
			});
		}

		if ( Map.BridgeBuild == 1 or Map.AlliedEngPastRiver > 0 or Map.AlliedCovertPastRiver > 0 )
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Complex_Roof_MG42" );
		}

		if ( Map.AlliedEngInCanyon == 0 )
		{
			if ( Map.Generator == 0 and Map.Footbridge == 1 and !Map.CellarEntrance )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Complex_Roof_MG42" );
			}
		}
		else
		{
			if ( !Map.CellarEntrance )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Complex_Roof_MG42" );
			}
		}

		Util.MapDebugPrint( "^5Complex_Roof_MG42_Built" );
	},

	Complex_Roof_MG42_Planted = function( trigger )
	{
		Map.Complex_Roof_MG42_Dyno += 1;

		Util.MapDebugPrint( "^5Complex_Roof_MG42_Planted" );
	},

	Complex_Roof_MG42_Defused = function( trigger )
	{
		Map.Complex_Roof_MG42_Dyno -= 1;

		Util.MapDebugPrint( "^5Complex_Roof_MG42_Defused" );
	},

	Complex_Roof_MG42_Destroyed = function( trigger )
	{
		Map.Complex_Roof_MG42_Dyno = 0;
		Map.ComplexMG42 = false;
		Wp.SetWaypointFlag( "Axis_Tower", "closed", true);

		SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Complex_Roof_MG42" );

		SetAvailableMapGoals( TEAM.AXIS, false, {
			"DEFUSE_Complex_Roof_MG42_.*",
			"MOUNTMG42_Complex_Roof_MG42",
			"REPAIRMG42_Complex_Roof_MG42",
		});

		SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Complex_Roof_MG42" );

		Util.MapDebugPrint( "^5Complex_Roof_MG42_Destroyed" );
	},

	Cellar_Entrance_Planted = function( trigger )
	{
		Map.Cellar_Entrance_Dyno += 1;

		Wp.SetWaypointFlag( "JumpDown", "closed", false);

		Util.MapDebugPrint( "^5Cellar_Entrance_Planted" );
	},

	Cellar_Entrance_Defused = function( trigger )
	{
		Map.Cellar_Entrance_Dyno -= 1;

		if ( Map.Cellar_Entrance_Dyno == 0 )
		{

			Wp.SetWaypointFlag( "JumpDown", "closed", true);
		}

		Util.MapDebugPrint( "^5Cellar_Entrance_Defused" );
	},

	Cellar_Entrance_Destroyed = function( trigger )
	{
		Map.Cellar_Entrance_Dyno = 0;
		Map.CellarEntrance = false;

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

		SetAvailableMapGoals( TEAM.ALLIES, false, {
			"PLANT_Cellar_Entrance",
			".*_Allied_NearCellarEntrance_.*",
		});

		SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Cellar_Entrance_.*" );

		SetGoalPriority( "PLANT_Communications_Radio", 0.92, TEAM.ALLIES, CLASS.ENGINEER );

		SetGoalPriority( "BUILD_Cellar_MG42", 0.94, TEAM.AXIS, CLASS.ENGINEER );

		SetAvailableMapGoals( TEAM.AXIS, true, "ROUTE_Cellarentrance" );

		if ( Map.CellarMG42 == 0 )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Cellar_MG42" );
		}
		else
		{
			if ( Map.AlliesInCanyon > 0 )	//Allies are in canyon
			{
				SetAvailableMapGoals( TEAM.AXIS, true, {
					"MOUNTMG42_Cellar_MG42",
					"REPAIRMG42_Cellar_MG42",
				});
			}
		}

		if ( Map.BridgeBuild == 0 )
		{
			if ( Map.AlliesPastRiver == 0 )
			{
				if ( Map.AlliesInCanyon == 0 )
				{
					if ( Map.Generator == 0 )
					{
						if ( Map.Footbridge == 1 )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, {
								"PLANT_Communications_Radio",
								".*_Allied_Radio_.*",
							});

							if ( Map.ComplexMG42 )
							{
								SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Complex_Roof_MG42" );
							}
							if ( Map.CellarMG42 == 1 )
							{
								SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Cellar_MG42" );
							}
						}
					}
				}
				else
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, ".*_Allied_Radio_.*" );

					if ( Map.AlliedEngInCanyon > 0 )
					{
						SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Communications_Radio" );

						if ( Map.ComplexMG42 )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Complex_Roof_MG42" );
						}
						if ( Map.CellarMG42 == 1 )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Cellar_MG42" );
						}
					}
				}
			}
		}

		Util.MapDebugPrint( "^5Cellar_Entrance_Destroyed" );
	},

	Cellar_MG42_Built = function( trigger )
	{

		Map.CellarMG42 = 1;

		SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Cellar_MG42" );

		if ( Map.AxisChangeSpawn == 1 )
		{
			if ( !Map.CellarEntrance )
			{
				if ( Map.AlliesInCanyon > 0 )	//Allies are in canyon
				{
					SetAvailableMapGoals( TEAM.AXIS, true, {
						"MOUNTMG42_Cellar_MG42",
						"REPAIRMG42_Cellar_MG42",
					});
				}
			}
		}

		if ( Map.BridgeBuild == 1 or Map.AlliedEngPastRiver > 0 or Map.AlliedCovertPastRiver > 0 )
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Cellar_MG42" );
		}

		if ( Map.AlliedEngInCanyon == 0 )
		{
			if ( Map.Generator == 0 and Map.Footbridge == 1 and !Map.CellarEntrance )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Cellar_MG42" );
			}
		}
		else
		{
			if ( !Map.CellarEntrance )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Cellar_MG42" );
			}
		}

		Util.MapDebugPrint( "^5Cellar_MG42_Built" );
	},

	Cellar_MG42_Planted = function( trigger )
	{
		Map.Cellar_MG42_Dyno += 1;

		Util.MapDebugPrint( "^5Cellar_MG42_Planted" );
	},

	Cellar_MG42_Defused = function( trigger )
	{
		Map.Cellar_MG42_Dyno -= 1;

		Util.MapDebugPrint( "^5Cellar_MG42_Defused" );
	},

	Cellar_MG42_Destroyed = function( trigger )
	{
		Map.Cellar_MG42_Dyno = 0;
		Map.CellarMG42 = 0;

		SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Cellar_MG42" );

		SetAvailableMapGoals( TEAM.AXIS, false, {
			"DEFUSE_Cellar_MG42_.*",
			"MOUNTMG42_Cellar_MG42",
			"REPAIRMG42_Cellar_MG42",
		});

		if ( !Map.CellarEntrance )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Cellar_MG42" );
		}

		Util.MapDebugPrint( "^5Cellar_MG42_Destroyed" );
	},

	Communications_Radio_Planted = function( trigger )
	{
		Map.Communications_Radio_Dyno += 1;

		if ( Map.Cellar_Entrance_Dyno > 0 )
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Cellar_Entrance_.*" );
		}
		if ( Map.Cellar_MG42_Dyno > 0 )
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Cellar_MG42_.*" );
		}
		if ( Map.CellarMG42 == 0 )
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Cellar_MG42" );
		}
		if ( Map.Complex_Roof_MG42_Dyno > 0 )
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Complex_Roof_MG42_.*" );
		}
		if ( !Map.ComplexMG42 )
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Complex_Roof_MG42" );
		}
		if ( Map.Bridge_Dyno > 0 )
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Bridge" );
		}
		if ( Map.BridgeBuild == 1 )
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Bridge" );
		}

		SetGoalPriority( "DEFUSE_Communications_Radio_.*", 1.5, TEAM.AXIS, CLASS.ENGINEER );

		SetAvailableMapGoals( TEAM.AXIS, true, "DEFUSE_Communications_Radio_.*" );

		Util.MapDebugPrint( "^5Communications_Radio_Planted" );
	},

	Communications_Radio_Defused = function( trigger )
	{
		Map.Communications_Radio_Dyno -= 1;

		if ( Map.Communications_Radio_Dyno == 0 )
		{
			if ( Map.Cellar_Entrance_Dyno > 0 )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "DEFUSE_Cellar_Entrance_.*" );
			}
			if ( Map.Cellar_MG42_Dyno > 0 )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "DEFUSE_Cellar_MG42_.*" );
			}
			if ( Map.CellarMG42 == 0 )
			{
				if ( !Map.CellarEntrance )
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Cellar_MG42" );
				}
			}
			if ( Map.Complex_Roof_MG42_Dyno > 0 )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "DEFUSE_Complex_Roof_MG42_.*" );
			}
			if ( !Map.ComplexMG42 )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Complex_Roof_MG42" );
			}
			if ( Map.BridgeBuild == 1 )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "PLANT_Bridge" );
			}
		}

		Util.MapDebugPrint( "^5Communications_Radio_Defused" );
	},

	Communications_Radio_Destroyed = function( trigger )
	{
		Map.Communications_Radio_Dyno = 0;

		ETUtil.WinningChat( TEAM.ALLIES );
		ETUtil.LosingChat( TEAM.AXIS );

		Util.MapDebugPrint( "^5Communications_Radio_Destroyed" );

		sleep(5);
	},

	Allied_CP_Built = function( trigger )
	{

		Map.AlliedCP = 1;

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

		SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Command_Post" );

		Util.MapDebugPrint( "^5Allied_CP_Built" );
	},

	Allied_CP_Destroyed = function( trigger )
	{

		Map.AlliedCP = 0;

		SetAvailableMapGoals( TEAM.ALLIES, false, "DEFUSE_Command_Post_.*" );

		SetAvailableMapGoals( TEAM.AXIS, false, "PLANT_Command_Post" );

		if ( Map.garagedoor1 )
		{
			if ( Map.AlliedFlag == 0 )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Command_Post" );

				SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Command_Post" );
			}
			else
			{
				SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Command_Post" );

				SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Command_Post" );
			}
		}
		else
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Command_Post" );

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

		Util.MapDebugPrint( "^5Allied_CP_Destroyed" );
	},

	Axis_CP_Built = function( trigger )
	{

		Map.AxisCP = 1;

		SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Command_Post" );

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

		Util.MapDebugPrint( "^5Axis_CP_Built" );
	},

	Axis_CP_Destroyed = function( trigger )
	{

		Map.AxisCP = 0;

		SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Command_Post_.*" );

		SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Command_Post" );

		if ( Map.AlliedFlag == 0 )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Command_Post" );

			SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Command_Post" );
		}
		else
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Command_Post" );

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

		Util.MapDebugPrint( "^5Axis_CP_Destroyed" );
	},

	Command_Post_Planted = function( trigger )
	{
		Map.Command_Post_Dyno += 1;

		SetAvailableMapGoals( TEAM.ALLIES, false, "DEFUSE_Command_Post_.*" );

		SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Command_Post_.*" );

		Util.MapDebugPrint( "^5Command_Post_Planted" );
	},

	Command_Post_Defused = function( trigger )
	{
		Map.Command_Post_Dyno -= 1;

		Util.MapDebugPrint( "^5Command_Post_Defused" );
	},

	garage_door2_lever = function( trigger )
	{
		SetAvailableMapGoals( TEAM.ALLIES, false, "SWITCH_GarageDoor2" );
		SetAvailableMapGoals( TEAM.AXIS, false, "SWITCH_GarageDoor2" );

		Util.MapDebugPrint( "^5garage_door2_lever" );
	},

	garage_door2 = function( trigger )
	{
		sleep( 1 );
		vel = ToVector(trigger.Action);

		if ( vel[ 0 ] < 0 )
		{
			Map.garagedoor2 = false;

			SetAvailableMapGoals( TEAM.AXIS, false, "SWITCH_GarageDoor2" );

			Util.MapDebugPrint("^5garage door 2 closing");
		}
		else if ( vel[ 0 ] > 0 )
		{
			Map.garagedoor2 = true;

			SetAvailableMapGoals( TEAM.ALLIES, false, "SWITCH_GarageDoor2" );

			Util.MapDebugPrint("^5garage door 2 opening");
		}

		if ( Map.garagedoor2 )
		{
			if ( Map.garagedoor1 )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );

				Util.MapDebugPrint( "^5garage_door2_switch_Axis" );
			}
			else
			{
				if ( Map.AxisChangeSpawn == 0 )
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
				}
				else
				{
					if ( Map.ReSpawn == 1 )
					{
						SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
					}
				}

				Util.MapDebugPrint( "^5garage_door2_switch_Axis" );
			}
		}
		else if ( !Map.garagedoor2 )
		{
			if ( !Map.garagedoor1 or !Map.AxisDoor )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "SWITCH_GarageDoor2" );

				Util.MapDebugPrint( "^5garage_door2_switch_Allied" );
			}
		}
		else
		{
			SetAvailableMapGoals( TEAM.ALLIES, false, "SWITCH_GarageDoor2" );

			SetAvailableMapGoals( TEAM.AXIS, false, "SWITCH_GarageDoor2" );

			Util.MapDebugPrint( "^5garage_door2_switch_disabled" );
		}
	},

	Trigger_Past_River =
	{
		Name = "TriggerPastRiver",
		TriggerOnClass = CLASS.ANYPLAYER,
		OnEnter = function(ent)
		{
			if( GetEntTeam(ent) == TEAM.ALLIES )
			{
				Map.AlliesPastRiver +=1;

				Util.MapDebugPrint( "^5Allies cross river" );

				if ( Map.AlliedEngPastRiver > 0 )
				{
					if ( Map.AlliesPastRiver > 4 )
					{
						if ( Map.AxisChangeSpawn == 0 )
						{
							ETUtil.SuicideSpawn( TEAM.AXIS, 2, -1, CLASS.SOLDIER );
						}
					}
				}

				foreach ( id and bot in BotTable )
				{
					if ( bot.GetTeam() == TEAM.AXIS )
					{
						bot.SayTeam("^1Allies cross River and they are going to the complex!");
						break;
					}
				}

				SetAvailableMapGoals( TEAM.AXIS, false, "MOUNTMG42_Cellar_MG42" );
				SetGoalPriority( "MOUNTMG42_Cellar_MG42", 0.72, TEAM.AXIS, 0 );
				yield;
				SetAvailableMapGoals( TEAM.AXIS, true, "MOUNTMG42_Cellar_MG42" );

				Util.MapDebugPrint( "^5Allies cross river" );

				if ( GetEntClass(ent) == CLASS.ENGINEER )
				{
					Map.AlliedEngPastRiver += 1;

					SetAvailableMapGoals( TEAM.AXIS, true, {
						".*_Axis_Radio_1",
						".*_Axis_Radio_4",
					});
					SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Generator" );

					if ( Map.AxisEngInCanyon == 0 and Map.AxisEngPastRiver == 0 )
					{
						ETUtil.SuicideSpawn( TEAM.AXIS, 2, -1, CLASS.ENGINEER );
					}
					if ( Map.AxisEngInCanyon > 0 and Map.AxisEngPastRiver == 0 )
					{
						if ( Map.CellarEntrance )
						{
							ETUtil.SuicideSpawn( TEAM.AXIS, 2, -1, CLASS.ENGINEER );
						}
					}

					foreach ( id and bot in BotTable )
					{
						if ( bot.GetTeam() == TEAM.AXIS )
						{
							bot.SayTeam("^1Allied Engineers cross River and they are going to the complex!");
							break;
						}
					}

					Util.MapDebugPrint( "^5Allied engs cross river" );
				}

				if ( GetEntClass(ent) == CLASS.COVERTOPS )
				{
					Map.AlliedCovertPastRiver += 1;

					Util.MapDebugPrint( "^5Allied covertops cross River" );
				}
			}
			else
			{
				if ( GetEntClass(ent) == CLASS.ENGINEER )
				{
					Map.AxisEngPastRiver += 1;
				}
			}
		},
		OnExit = function(ent)
		{
			if( GetEntTeam(ent) == TEAM.ALLIES )
			{
				Map.AlliesPastRiver -=1;

				if ( !Map.CellarEntrance )
				{
					if ( ( Map.AlliesInCanyon + Map.AlliesPastRiver ) < 4 )
					{
						if ( Map.AxisChangeSpawn == 0 )
						{
							ETUtil.SuicideSpawn( TEAM.AXIS, 3, -1, CLASS.SOLDIER );
						}
					}
				}
				else
				{
					if ( Map.AlliesPastRiver < 4 )
					{
						if ( Map.AxisChangeSpawn == 0 )
						{
							ETUtil.SuicideSpawn( TEAM.AXIS, 3, -1, CLASS.SOLDIER );
						}
					}
				}

				if ( GetEntClass(ent) == CLASS.ENGINEER )
				{
					Map.AlliedEngPastRiver -= 1;

					if ( !Map.CellarEntrance )
					{
						if ( Map.AlliedEngInCanyon == 0 and Map.AlliedEngPastRiver == 0 )
						{
							SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_Radio_.*" );

							if ( Map.AxisChangeSpawn == 0 )
							{
								ETUtil.SuicideSpawn( TEAM.AXIS, 3, -1, CLASS.ENGINEER );
								//ETUtil.SuicideSpawn( TEAM.AXIS, 3, -1, CLASS.COVERTOPS );
							}
						}
					}
					else
					{
						if ( Map.AlliedEngPastRiver == 0 )
						{
							if ( Map.AxisChangeSpawn == 0 )
							{
								ETUtil.SuicideSpawn( TEAM.AXIS, 3, -1, CLASS.ENGINEER );
								//ETUtil.SuicideSpawn( TEAM.AXIS, 3, -1, CLASS.COVERTOPS );
							}
						}
					}
				}
				if ( GetEntClass(ent) == CLASS.COVERTOPS )
				{
					Map.AlliedCovertPastRiver -= 1;
				}

				if ( Map.AlliesPastRiver == 0 )
				{
					if ( Map.AlliedEngInCanyon == 0 )
					{
						SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_Radio_.*" );
					}

					if ( Map.AlliesInCanyon == 0 )	//Allies are not in canyon
					{
						SetAvailableMapGoals( TEAM.AXIS, false, "MOUNTMG42_Cellar_MG42" );
						SetGoalPriority( "MOUNTMG42_Cellar_MG42", 0.68, TEAM.AXIS, 0 );
						SetGoalPriority( "MOUNTMG42_Cellar_MG42", 0.72, TEAM.AXIS, CLASS.SOLDIER );
					}

					if ( Map.BridgeBuild == 0 )	//Bridge destroyed
					{
						if ( Map.CellarEntrance )	//intact
						{
							SetAvailableMapGoals( TEAM.ALLIES, false, {
								".*_Allied_Radio_.*",
								"PLANT_Communications_Radio",
								"AMMOCAB_south_ammocabinet_1",
								"HEALTHCAB_south_healthcabinet_1",
								"PLANT_Complex_Roof_MG42",
								"PLANT_Cellar_MG42",
							});

							Util.MapDebugPrint( "^5Allies donīt cross river, Bridge destroyed, Cellarentrance intact" );

							if ( Map.AlliedEngInCanyon == 0 )	//Allied engs are not in canyon
							{
								if ( Map.Generator == 0 )	//Generator destroyed
								{
									if ( Map.Footbridge == 0 )	//Footbridge destroyed
									{
										SetAvailableMapGoals( TEAM.ALLIES, false, {
											"PLANT_Cellar_Entrance",
											"ATTACK_Allied_NearCellarEntrance_.*",
										});

										SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_NearFootBridge_.*" );

										SetAvailableMapGoals( TEAM.ALLIES, true, {
											".*_Allied_NearFootBridge_.*",
											"BUILD_Footbridge",
										});

										Util.MapDebugPrint( "^5Allies donīt cross river, Bridge destroyed, Cellarentrance intact, Allied engs are not in canyon, Generator destroyed, Footbridge destroyed" );
									}
								}
								else	//Generator built
								{
									SetAvailableMapGoals( TEAM.ALLIES, false, {
										"PLANT_Cellar_Entrance",
										"ATTACK_Allied_NearCellarEntrance_.*",
									});

									SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_NearFootBridge_.*" );

									Util.MapDebugPrint( "^5Allies donīt cross river, Bridge destroyed, Cellarentrance intact, Allied engs are not in canyon, Generator built" );
								}
							}
						}
						else	//Cellarentrance destroyed
						{
							if ( Map.AlliedEngInCanyon == 0 )	//Allied engs are not in canyon
							{
								if ( Map.Generator == 0 )	//Generator destroyed
								{
									if ( Map.Footbridge == 0 )	//Footbridge destroyed
									{
										SetAvailableMapGoals( TEAM.ALLIES, false, {
											"PLANT_Communications_Radio",
											"PLANT_Complex_Roof_MG42",
											"PLANT_Cellar_MG42",
										});

										SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_NearFootBridge_.*" );

										SetAvailableMapGoals( TEAM.ALLIES, true, {
											".*_Allied_NearFootBridge_.*",
											"BUILD_Footbridge",
										});

										Util.MapDebugPrint( "^5Allies donīt cross river, Bridge destroyed, Cellarentrance destroyed, Allied engs are not in canyon, Generator destroyed, Footbridge destroyed" );

										if ( Map.AlliesInCanyon == 0 )	//Allies are not in canyon
										{
											SetAvailableMapGoals( TEAM.ALLIES, false, {
												".*_Allied_Radio_.*",
												"AMMOCAB_south_ammocabinet_1",
												"HEALTHCAB_south_healthcabinet_1",
											});

											Util.MapDebugPrint( "^5Allies donīt cross river, Bridge destroyed, Cellarentrance destroyed, Allied engs are not in canyon, Generator destroyed, Footbridge destroyed, Allies are not in canyon" );
										}
									}
								}
								else	//Generator built
								{
									SetAvailableMapGoals( TEAM.ALLIES, false, {
										"PLANT_Communications_Radio",
										"PLANT_Complex_Roof_MG42",
										"PLANT_Cellar_MG42",
									});

									Util.MapDebugPrint( "^5Allies donīt cross river, Bridge destroyed, Cellarentrance destroyed, Allied engs are not in canyon, Generator built" );

									if ( Map.AlliesInCanyon == 0 )	//Allies are not in canyon
									{
										SetAvailableMapGoals( TEAM.ALLIES, false, {
											".*_Allied_Radio_.*",
											"AMMOCAB_south_ammocabinet_1",
											"HEALTHCAB_south_healthcabinet_1",
										});

										Util.MapDebugPrint( "^5Allies donīt cross river, Bridge destroyed, Cellarentrance destroyed, Allied engs are not in canyon, Generator built, Allies are not in canyon" );
									}
								}
							}
						}
					}

					foreach ( id and bot in BotTable )
					{
						if ( bot.GetTeam() == TEAM.AXIS )
						{
							bot.SayTeam("^1Complex and Area behind River are clear.");
							break;
						}
					}

					Util.MapDebugPrint( "^5Complex and Area behind River are clear." );

					if ( Map.BridgeBuild == 0 )	//Bridge destroyed
					{
						if ( Map.AlliedFlag == 0 )	//Bunker is Axis
						{
							SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_NearBridge_.*" );

							Util.MapDebugPrint( "^5AComplex and Area behind River are clear, Bridge destroyed, Bunker is Axis." );
						}
						else
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_Allied_NearBridge_.*" );

							Util.MapDebugPrint( "^5AComplex and Area behind River are clear, Bridge destroyed, Bunker is Allied." );
						}
					}
				}

				if ( Map.AlliesPastRiver == 0 and Map.BridgeBuild == 0 and Map.AlliesInCanyon == 0 and Map.Generator == 1 and Map.AlliedFlag == 0 )
				{
					if ( Map.AxisChangeSpawn == 1 )
					{
						Util.ChangeSpawn( TEAM.AXIS, 3 );
						Map.ReSpawn = 1;

						Map.AxisChangeSpawn = 0;

						SetAvailableMapGoals( TEAM.AXIS, false, {
							".*_Axis_Radio_.*",
							"AMMOCAB_south_ammocabinet_1",
							"HEALTHCAB_south_healthcabinet_1",
							"MOUNTMG42_Complex_Roof_MG42",
							"REPAIRMG42_Complex_Roof_MG42",
							"BUILD_Complex_Roof_MG42",
							"MOUNTMG42_Cellar_MG42",
							"REPAIRMG42_Cellar_MG42",
							"BUILD_Cellar_MG42",
							".*_Axis_NearBridge_.*",
							".*_Axis_NearFootBridge_.*",
							".*_Axis_CellarEntrance_.*",
						});

						SetAvailableMapGoals( TEAM.ALLIES, false, {
							".*_Allied_Radio_.*",
							"PLANT_Communications_Radio",
							"AMMOCAB_south_ammocabinet_1",
							"HEALTHCAB_south_healthcabinet_1",
							"PLANT_Complex_Roof_MG42",
							"PLANT_Cellar_MG42",
							"PLANT_Cellar_Entrance",
							".*_Allied_NearBridge_.*",
							".*_Allied_NearFootBridge_.*",
							".*_Allied_NearCellarEntrance_.*",
						});

						SetAvailableMapGoals( TEAM.AXIS, true, {
							".*_Axis_Start_.*",
							".*_Axis_StartBack_.*",
							"AMMOCAB_south_ammocabinet",
							"HEALTHCAB_south_healthcabinet",
						});

						if ( Map.garagedoor2 )
						{
							if ( Map.garagedoor1 )
							{
								SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
							}
							else
							{
								if ( Map.AxisChangeSpawn == 0 )
								{
									SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
								}
								else
								{
									if ( Map.ReSpawn == 1 )
									{
										SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
									}
								}
							}
						}

						if ( !Map.garagedoor1 )
						{
							SetAvailableMapGoals( TEAM.AXIS, false, {
								"PLANTMINE_Axis_Start_1.*",
								"SMOKEBOMB_Axis_Start_13",
								"AIRSTRIKE_Axis_Start_1",
								"AIRSTRIKE_Axis_Start_6",
								"ARTILLERY_S_Axis_Start_5",
								"ARTILLERY_S_Axis_Start_8",
								"CALLARTILLERY_Axis_Start_4",
								"CALLARTILLERY_Axis_Start_10",
							});
						}
						else
						{
							SetAvailableMapGoals( TEAM.AXIS, false, {
								"SMOKEBOMB_Axis_Start_25",
								"AIRSTRIKE_Axis_Start_28",
								"ARTILLERY_S_Axis_Start_27",
								"CALLARTILLERY_Axis_Start_26",
								".*_Axis_Start_7",
								".*_Axis_Start_9",
								".*_Axis_Start_10",
								".*_Axis_Start_11",
								".*_Axis_Start_12",
								".*_Axis_Start_14",
							});
						}

						if ( !Map.garagedoor2 )
						{
							if ( !Map.garagedoor1 or !Map.AxisDoor )
							{
								SetAvailableMapGoals( TEAM.ALLIES, true, "SWITCH_GarageDoor2" );
							}
						}

						SetAvailableMapGoals( TEAM.ALLIES, true, {
							"CHECKPOINT_checkpoint",
							".*_Allied_Start_.*",
							".*_Allied_StartBack_.*",
							"BUILD_Bridge",
							"PLANT_Generator",
						});

						if ( Map.garagedoor1 )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Garage_Door" );
						}

						if ( Map.AxisDoor )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_Door" );
						}

						if ( Map.WindowMG42 == 0 )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Window_MG42" );
						}
						else
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, {
								"REPAIRMG42_Window_MG42",
								"MOUNTMG42_Window_MG42",
							});
						}

						if ( Map.CabinMG42 == 0 )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Cabin_MG42" );
						}
						else
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, {
								"REPAIRMG42_Cabin_MG42",
								"MOUNTMG42_Cabin_MG42",
							});
						}

						Util.MapDebugPrint( "^5Axis_Re-Captured_Garage" );
					}
					else
					{
						SetAvailableMapGoals( TEAM.AXIS, false, {
							".*_Axis_Radio_.*",
							"AMMOCAB_south_ammocabinet_1",
							"HEALTHCAB_south_healthcabinet_1",
							"MOUNTMG42_Complex_Roof_MG42",
							"REPAIRMG42_Complex_Roof_MG42",
							"BUILD_Complex_Roof_MG42",
							"MOUNTMG42_Cellar_MG42",
							"REPAIRMG42_Cellar_MG42",
							"BUILD_Cellar_MG42",
							".*_Axis_NearBridge_.*",
							".*_Axis_NearFootBridge_.*",
							".*_Axis_CellarEntrance_.*",
						});

						SetAvailableMapGoals( TEAM.ALLIES, false, {
							".*_Allied_Radio_.*",
							"PLANT_Communications_Radio",
							"AMMOCAB_south_ammocabinet_1",
							"HEALTHCAB_south_healthcabinet_1",
							"PLANT_Complex_Roof_MG42",
							"PLANT_Cellar_MG42",
							"PLANT_Cellar_Entrance",
							".*_Allied_NearBridge_.*",
							".*_Allied_NearFootBridge_.*",
							".*_Allied_NearCellarEntrance_.*",
						});

						SetAvailableMapGoals( TEAM.AXIS, true, {
							".*_Axis_Start_.*",
							".*_Axis_StartBack_.*",
							"AMMOCAB_south_ammocabinet",
							"HEALTHCAB_south_healthcabinet",
						});

						if ( Map.garagedoor2 )
						{
							if ( Map.garagedoor1 )
							{
								SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
							}
							else
							{
								if ( Map.AxisChangeSpawn == 0 )
								{
									SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
								}
								else
								{
									if ( Map.ReSpawn == 1 )
									{
										SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
									}
								}
							}
						}

						if ( !Map.garagedoor1 )
						{
							SetAvailableMapGoals( TEAM.AXIS, false, {
								"PLANTMINE_Axis_Start_1.*",
								"SMOKEBOMB_Axis_Start_13",
								"AIRSTRIKE_Axis_Start_1",
								"AIRSTRIKE_Axis_Start_6",
								"ARTILLERY_S_Axis_Start_5",
								"ARTILLERY_S_Axis_Start_8",
								"CALLARTILLERY_Axis_Start_4",
								"CALLARTILLERY_Axis_Start_10",
							});
						}
						else
						{
							SetAvailableMapGoals( TEAM.AXIS, false, {
								"SMOKEBOMB_Axis_Start_25",
								"AIRSTRIKE_Axis_Start_28",
								"ARTILLERY_S_Axis_Start_27",
								"CALLARTILLERY_Axis_Start_26",
								".*_Axis_Start_7",
								".*_Axis_Start_9",
								".*_Axis_Start_10",
								".*_Axis_Start_11",
								".*_Axis_Start_12",
								".*_Axis_Start_14",
							});
						}

						if ( !Map.garagedoor2 )
						{
							if ( !Map.garagedoor1 or !Map.AxisDoor )
							{
								SetAvailableMapGoals( TEAM.ALLIES, true, "SWITCH_GarageDoor2" );
							}
						}

						SetAvailableMapGoals( TEAM.ALLIES, true, {
							"CHECKPOINT_checkpoint",
							".*_Allied_Start_.*",
							".*_Allied_StartBack_.*",
							"BUILD_Bridge",
							"PLANT_Generator",
						});

						if ( Map.garagedoor1 )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Garage_Door" );

							if ( Map.AxisDoor )
							{
								if ( Map.Generator == 1 )
								{
									SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Generator" );
								}
							}
						}

						if ( Map.AxisDoor )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_Door" );
						}

						if ( Map.WindowMG42 == 0 )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Window_MG42" );
						}
						else
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, {
								"REPAIRMG42_Window_MG42",
								"MOUNTMG42_Window_MG42",
							});
						}

						if ( Map.CabinMG42 == 0 )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Cabin_MG42" );
						}
						else
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, {
								"REPAIRMG42_Cabin_MG42",
								"MOUNTMG42_Cabin_MG42",
							});
						}

						Util.MapDebugPrint( "^5DDDD" );
					}
				}
				else
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "MOUNTMG42_Complex_Roof_MG42" );

					if ( Map.AlliesInComplex == 0 )
					{
						SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_NearBridge_.*" );
					}

					Util.MapDebugPrint( "^5XXXX" );
				}
			}
			else
			{
				if ( GetEntClass(ent) == CLASS.ENGINEER )
				{
					Map.AxisEngPastRiver -= 1;
				}
			}
		},
	},
	Trigger_AllyInComplex =
	{
		Name = "TriggerAllyInComplex",
		TriggerOnClass = CLASS.ANYPLAYER,
		OnEnter = function(ent)
		{
			if( GetEntTeam(ent) == TEAM.ALLIES )
			{
				Map.AlliesInComplex += 1;

				foreach ( id and bot in BotTable )
				{
					if ( bot.GetTeam() == TEAM.AXIS )
					{
						bot.SayTeam("^1Allies entered into complex!");
						break;
					}
				}

				Util.MapDebugPrint( "^5Allies entered into complex" );

				if ( GetEntClass(ent) == CLASS.ENGINEER )
				{
					Map.AlliedEngInComplex += 1;

					foreach ( id and bot in BotTable )
					{
						if ( bot.GetTeam() == TEAM.AXIS )
						{
							bot.SayTeam("^1Allied engs entered into complex!");
							break;
						}
					}

					SetAvailableMapGoals( TEAM.AXIS, false, {
						".*_Axis_NearBridge_.*",
						".*_Axis_NearFootBridge_.*",
					});

					if ( Map.AxisChangeSpawn == 0 )
					{
						if ( Map.AlliesPastRiver > 4 )
						{
							ETUtil.SuicideSpawn( TEAM.AXIS, 2, -1, CLASS.COVERTOPS );
						}
						else
						{
							ETUtil.SuicideSpawn( TEAM.AXIS, 2, -1, CLASS.ENGINEER );
						}
					}

					SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_Radio_.*" );
					yield();
					SetGoalPriority( "DEFEND_Axis_Radio_.*", 0.92, TEAM.AXIS, CLASS.COVERTOPS );
					SetGoalPriority( "DEFEND_Axis_Radio_.*", 0.92, TEAM.AXIS, CLASS.FIELDOPS );
					SetGoalPriority( "DEFEND_Axis_Radio_.*", 0.92, TEAM.AXIS, CLASS.ENGINEER );
					SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_Radio_.*" );

					Util.MapDebugPrint( "^5Allied engs entered into complex" );
				}
			}
		},
		OnExit = function(ent)
		{
			if( GetEntTeam(ent) == TEAM.ALLIES )
			{
				Map.AlliesInComplex -= 1;

				if ( GetEntClass(ent) == CLASS.ENGINEER )
				{
					Map.AlliedEngInComplex -= 1;

					if ( Map.AlliedEngInComplex == 0)
					{

						SetAvailableMapGoals( TEAM.AXIS, true, {
							".*_Axis_NearBridge_.*",
							".*_Axis_NearFootBridge_.*",
						});

						SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_Radio_.*" );
						yield();
						SetGoalPriority( "DEFEND_Axis_Radio_.*", 0.55, TEAM.AXIS, 0 );
						SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_Radio_.*" );

						if ( Map.AlliesPastRiver < 4 )
						{
							if ( Map.AxisChangeSpawn == 0 )
							{
								ETUtil.SuicideSpawn( TEAM.AXIS, 3, -1, CLASS.COVERTOPS );
							}
						}
					}
				}

				if ( Map.AlliesInComplex == 0 )
				{
					foreach ( id and bot in BotTable )
					{
						if ( bot.GetTeam() == TEAM.AXIS )
						{
							bot.SayTeam("^1Complex is clear. Allies are not in complex.");
							break;
						}
					}

					SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_Radio_.*" );

					SetAvailableMapGoals( TEAM.AXIS, true, {
						".*_Axis_Radio_3",
						".*_Axis_Radio_4",
						".*_Axis_Radio_5",
					});

					Util.MapDebugPrint( "^5Complex is clear." );
				}

				if ( Map.AlliesPastRiver == 0 and Map.BridgeBuild == 0 and Map.AlliesInCanyon == 0 and Map.Generator == 1 and Map.AlliedFlag == 0 )
				{
					if ( Map.AxisChangeSpawn == 1 )
					{
						Util.ChangeSpawn( TEAM.AXIS, 3 );
						Map.ReSpawn = 1;

						Map.AxisChangeSpawn = 0;

						SetAvailableMapGoals( TEAM.AXIS, false, {
							".*_Axis_Radio_.*",
							"AMMOCAB_south_ammocabinet_1",
							"HEALTHCAB_south_healthcabinet_1",
							"MOUNTMG42_Complex_Roof_MG42",
							"REPAIRMG42_Complex_Roof_MG42",
							"BUILD_Complex_Roof_MG42",
							"MOUNTMG42_Cellar_MG42",
							"REPAIRMG42_Cellar_MG42",
							"BUILD_Cellar_MG42",
							".*_Axis_NearBridge_.*",
							".*_Axis_NearFootBridge_.*",
							".*_Axis_CellarEntrance_.*",
						});

						SetAvailableMapGoals( TEAM.ALLIES, false, {
							".*_Allied_Radio_.*",
							"PLANT_Communications_Radio",
							"AMMOCAB_south_ammocabinet_1",
							"HEALTHCAB_south_healthcabinet_1",
							"PLANT_Complex_Roof_MG42",
							"PLANT_Cellar_MG42",
							"PLANT_Cellar_Entrance",
							".*_Allied_NearBridge_.*",
							".*_Allied_NearFootBridge_.*",
							".*_Allied_NearCellarEntrance_.*",
						});

						SetAvailableMapGoals( TEAM.AXIS, true, {
							".*_Axis_Start_.*",
							".*_Axis_StartBack_.*",
							"AMMOCAB_south_ammocabinet",
							"HEALTHCAB_south_healthcabinet",
						});

						if ( Map.garagedoor2 )
						{
							if ( Map.garagedoor1 )
							{
								SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
							}
							else
							{
								if ( Map.AxisChangeSpawn == 0 )
								{
									SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
								}
								else
								{
									if ( Map.ReSpawn == 1 )
									{
										SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
									}
								}
							}
						}

						if ( !Map.garagedoor1 )
						{
							SetAvailableMapGoals( TEAM.AXIS, false, {
								"PLANTMINE_Axis_Start_1.*",
								"SMOKEBOMB_Axis_Start_13",
								"AIRSTRIKE_Axis_Start_1",
								"AIRSTRIKE_Axis_Start_6",
								"ARTILLERY_S_Axis_Start_5",
								"ARTILLERY_S_Axis_Start_8",
								"CALLARTILLERY_Axis_Start_4",
								"CALLARTILLERY_Axis_Start_10",
							});
						}
						else
						{
							SetAvailableMapGoals( TEAM.AXIS, false, {
								"SMOKEBOMB_Axis_Start_25",
								"AIRSTRIKE_Axis_Start_28",
								"ARTILLERY_S_Axis_Start_27",
								"CALLARTILLERY_Axis_Start_26",
								".*_Axis_Start_7",
								".*_Axis_Start_9",
								".*_Axis_Start_10",
								".*_Axis_Start_11",
								".*_Axis_Start_12",
								".*_Axis_Start_14",
							});
						}

						if ( !Map.garagedoor2 )
						{
							if ( !Map.garagedoor1 or !Map.AxisDoor )
							{
								SetAvailableMapGoals( TEAM.ALLIES, true, "SWITCH_GarageDoor2" );
							}
						}

						SetAvailableMapGoals( TEAM.ALLIES, true, {
							"CHECKPOINT_checkpoint",
							".*_Allied_Start_.*",
							".*_Allied_StartBack_.*",
							"BUILD_Bridge",
							"PLANT_Generator",
						});

						if ( Map.garagedoor1 )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Garage_Door" );
						}

						if ( Map.AxisDoor )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_Door" );
						}

						if ( Map.WindowMG42 == 0 )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Window_MG42" );
						}
						else
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, {
								"REPAIRMG42_Window_MG42",
								"MOUNTMG42_Window_MG42",
							});
						}

						if ( Map.CabinMG42 == 0 )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Cabin_MG42" );
						}
						else
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, {
								"REPAIRMG42_Cabin_MG42",
								"MOUNTMG42_Cabin_MG42",
							});
						}

						Util.MapDebugPrint( "^5Axis_Re-Captured_Garage" );
					}
					else
					{
						SetAvailableMapGoals( TEAM.AXIS, false, {
							".*_Axis_Radio_.*",
							"AMMOCAB_south_ammocabinet_1",
							"HEALTHCAB_south_healthcabinet_1",
							"MOUNTMG42_Complex_Roof_MG42",
							"REPAIRMG42_Complex_Roof_MG42",
							"BUILD_Complex_Roof_MG42",
							"MOUNTMG42_Cellar_MG42",
							"REPAIRMG42_Cellar_MG42",
							"BUILD_Cellar_MG42",
							".*_Axis_NearBridge_.*",
							".*_Axis_NearFootBridge_.*",
							".*_Axis_CellarEntrance_.*",
						});

						SetAvailableMapGoals( TEAM.ALLIES, false, {
							".*_Allied_Radio_.*",
							"PLANT_Communications_Radio",
							"AMMOCAB_south_ammocabinet_1",
							"HEALTHCAB_south_healthcabinet_1",
							"PLANT_Complex_Roof_MG42",
							"PLANT_Cellar_MG42",
							"PLANT_Cellar_Entrance",
							".*_Allied_NearBridge_.*",
							".*_Allied_NearFootBridge_.*",
							".*_Allied_NearCellarEntrance_.*",
						});

						SetAvailableMapGoals( TEAM.AXIS, true, {
							".*_Axis_Start_.*",
							".*_Axis_StartBack_.*",
							"AMMOCAB_south_ammocabinet",
							"HEALTHCAB_south_healthcabinet",
						});

						if ( Map.garagedoor2 )
						{
							if ( Map.garagedoor1 )
							{
								SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
							}
							else
							{
								if ( Map.AxisChangeSpawn == 0 )
								{
									SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
								}
								else
								{
									if ( Map.ReSpawn == 1 )
									{
										SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
									}
								}
							}
						}

						if ( !Map.garagedoor1 )
						{
							SetAvailableMapGoals( TEAM.AXIS, false, {
								"PLANTMINE_Axis_Start_1.*",
								"SMOKEBOMB_Axis_Start_13",
								"AIRSTRIKE_Axis_Start_1",
								"AIRSTRIKE_Axis_Start_6",
								"ARTILLERY_S_Axis_Start_5",
								"ARTILLERY_S_Axis_Start_8",
								"CALLARTILLERY_Axis_Start_4",
								"CALLARTILLERY_Axis_Start_10",
							});
						}
						else
						{
							SetAvailableMapGoals( TEAM.AXIS, false, {
								"SMOKEBOMB_Axis_Start_25",
								"AIRSTRIKE_Axis_Start_28",
								"ARTILLERY_S_Axis_Start_27",
								"CALLARTILLERY_Axis_Start_26",
								".*_Axis_Start_7",
								".*_Axis_Start_9",
								".*_Axis_Start_10",
								".*_Axis_Start_11",
								".*_Axis_Start_12",
								".*_Axis_Start_14",
							});
						}

						if ( !Map.garagedoor2 )
						{
							if ( !Map.garagedoor1 or !Map.AxisDoor )
							{
								SetAvailableMapGoals( TEAM.ALLIES, true, "SWITCH_GarageDoor2" );
							}
						}

						SetAvailableMapGoals( TEAM.ALLIES, true, {
							"CHECKPOINT_checkpoint",
							".*_Allied_Start_.*",
							".*_Allied_StartBack_.*",
							"BUILD_Bridge",
							"PLANT_Generator",
						});

						if ( Map.garagedoor1 )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Garage_Door" );
						}

						if ( Map.AxisDoor )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_Door" );
						}

						if ( Map.WindowMG42 == 0 )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Window_MG42" );
						}
						else
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, {
								"REPAIRMG42_Window_MG42",
								"MOUNTMG42_Window_MG42",
							});
						}

						if ( Map.CabinMG42 == 0 )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Cabin_MG42" );
						}
						else
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, {
								"REPAIRMG42_Cabin_MG42",
								"MOUNTMG42_Cabin_MG42",
							});
						}

						Util.MapDebugPrint( "^5EEEE" );
					}
				}
				else
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "MOUNTMG42_Complex_Roof_MG42" );

					if ( Map.AlliesInComplex == 0 )
					{
						SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_NearBridge_.*" );
					}

					Util.MapDebugPrint( "^5WWWW" );
				}
			}
		},
	},
	Trigger_AllyInCanyon =
	{
		Name = "TriggerAllyInCanyon",
		TriggerOnClass = CLASS.ANYPLAYER,
		OnEnter = function(ent)
		{
			if( GetEntTeam(ent) == TEAM.ALLIES )
			{
				Map.AlliesInCanyon += 1;

				foreach ( id and bot in BotTable )
				{
					if ( bot.GetTeam() == TEAM.AXIS )
					{
						bot.SayTeam("^1Allies entered into canyon!");
						break;
					}

					Util.MapDebugPrint( "^5Allies entered into canyon" );
				}

				if ( !Map.CellarEntrance )	//destroyed
				{
					SetAvailableMapGoals( TEAM.AXIS, false, "MOUNTMG42_Cellar_MG42" );
					SetGoalPriority( "MOUNTMG42_Cellar_MG42", 0.72, TEAM.AXIS, 0 );
					yield;
					SetAvailableMapGoals( TEAM.AXIS, true, "MOUNTMG42_Cellar_MG42" );
				}

				if ( GetEntClass(ent) == CLASS.ENGINEER )
				{
					Map.AlliedEngInCanyon += 1;

					foreach ( id and bot in BotTable )
					{
						if ( bot.GetTeam() == TEAM.AXIS )
						{
							bot.SayTeam("^1Allied engs entered into canyon!");
							break;
						}
					}

					if ( !Map.CellarEntrance )	//destroyed
					{
						SetAvailableMapGoals( TEAM.AXIS, true, {
							".*_Axis_Radio_1",
							".*_Axis_Radio_4",
						});
						SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Generator" );

						if ( Map.AxisEngInCanyon == 0 and Map.AxisEngPastRiver == 0 )
						{
							ETUtil.SuicideSpawn( TEAM.AXIS, 2, -1, CLASS.ENGINEER );
						}
						if ( Map.AxisEngInCanyon > 0 and Map.AxisEngPastRiver == 0 )
						{
							if ( Map.CellarEntrance )
							{
								ETUtil.SuicideSpawn( TEAM.AXIS, 2, -1, CLASS.ENGINEER );
							}
						}

						foreach ( id and bot in BotTable )
						{
							if ( bot.GetTeam() == TEAM.AXIS )
							{
								bot.SayTeam("^1Allied Engineers cross River and they are going to the complex!");
								break;
							}
						}

						SetAvailableMapGoals( TEAM.ALLIES, true, {
							"PLANT_Communications_Radio",
							"AMMOCAB_south_ammocabinet_1",
							"HEALTHCAB_south_healthcabinet_1",
							".*_Allied_Radio_.*",
						});

						if ( Map.ComplexMG42 )	//built
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Complex_Roof_MG42" );
						}
						if ( Map.CellarMG42 == 1 )	//built
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Cellar_MG42" );
						}

						Util.MapDebugPrint( "^5Allied engs entered into canyon, Cellarentrance destroyed" );
					}
					else	//cellarentrance intact
					{
						SetAvailableMapGoals( TEAM.AXIS, true, {
							"DEFEND_Axis_NearFootBridge_1",
							"DEFEND_Axis_NearFootBridge_2",
						});

						SetAvailableMapGoals( TEAM.ALLIES, true, {
							".*_Allied_NearCellarEntrance_.*",
							"PLANT_Cellar_Entrance",
						});

						Util.MapDebugPrint( "^5Allied engs entered into canyon, Cellarentrance intact" );
					}
				}

				if ( !Map.CellarEntrance )
				{
					if ( Map.AlliedEngInCanyon > 0 )
					{
						if ( Map.AlliesInCanyon > 4 )
						{
							if ( Map.AxisChangeSpawn == 0 )
							{
								ETUtil.SuicideSpawn( TEAM.AXIS, 2, -1, CLASS.SOLDIER );
							}
						}
					}
				}
			}
			else
			{
				if ( GetEntClass(ent) == CLASS.ENGINEER )
				{
					Map.AxisEngInCanyon += 1;
				}
			}
		},
		OnExit = function(ent)
		{
			if( GetEntTeam(ent) == TEAM.ALLIES )
			{
				Map.AlliesInCanyon -= 1;

				if ( !Map.CellarEntrance )
				{
					if ( ( Map.AlliesInCanyon + Map.AlliesPastRiver ) < 4 )
					{
						if ( Map.AxisChangeSpawn == 0 )
						{
							ETUtil.SuicideSpawn( TEAM.AXIS, 3, -1, CLASS.SOLDIER );
						}
					}
				}

				if ( GetEntClass(ent) == CLASS.ENGINEER )
				{
					Map.AlliedEngInCanyon -= 1;

					if ( !Map.CellarEntrance )
					{
						if ( Map.AlliedEngInCanyon == 0 and Map.AlliedEngPastRiver == 0 )
						{
							SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_Radio_.*" );

							if ( Map.AxisChangeSpawn == 0 )
							{
								ETUtil.SuicideSpawn( TEAM.AXIS, 3, -1, CLASS.ENGINEER );
								//ETUtil.SuicideSpawn( TEAM.AXIS, 3, -1, CLASS.COVERTOPS );
							}
						}
					}
				}

				if ( Map.AlliesInCanyon == 0 )
				{
					foreach ( id and bot in BotTable )
					{
						if ( bot.GetTeam() == TEAM.AXIS )
						{
							bot.SayTeam("^1Canyon is clear. Allies are not in canyon.");
							break;
						}
					}

					Util.MapDebugPrint( "^5Canyon is clear." );

					if ( Map.AlliesPastRiver == 0 )
					{
						SetAvailableMapGoals( TEAM.AXIS, false, {
							".*_Axis_Radio_.*",
							"MOUNTMG42_Cellar_MG42",
						});
						SetGoalPriority( "MOUNTMG42_Cellar_MG42", 0.68, TEAM.AXIS, 0 );
						SetGoalPriority( "MOUNTMG42_Cellar_MG42", 0.72, TEAM.AXIS, CLASS.SOLDIER );

						if ( Map.BridgeBuild == 0 )	//Bridge destroyed
						{
							if ( Map.CellarEntrance )	//intact
							{
								SetAvailableMapGoals( TEAM.ALLIES, false, {
									".*_Allied_Radio_.*",
									"PLANT_Communications_Radio",
									"AMMOCAB_south_ammocabinet_1",
									"HEALTHCAB_south_healthcabinet_1",
									"PLANT_Complex_Roof_MG42",
									"PLANT_Cellar_MG42",
								});

								Util.MapDebugPrint( "^5Canyon is clear, Allies donīt cross river, Bridge destroyed, Cellarentrance intact" );

								if ( Map.Generator == 0 )	//Generator destroyed
								{
									if ( Map.Footbridge == 0 )	//Footbridge destroyed
									{
										SetAvailableMapGoals( TEAM.ALLIES, false, {
											"PLANT_Cellar_Entrance",
											"ATTACK_Allied_NearCellarEntrance_.*",
										});

										SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_NearFootBridge_.*" );

										SetAvailableMapGoals( TEAM.ALLIES, true, {
											".*_Allied_NearFootBridge_.*",
											"BUILD_Footbridge",
										});

										Util.MapDebugPrint( "^5Canyon is clear, Allies donīt cross river, Bridge destroyed, Cellarentrance intact, Generator destroyed, Footbridge destroyed" );
									}
								}
								else	//Generator built
								{
									SetAvailableMapGoals( TEAM.ALLIES, false, {
										"PLANT_Cellar_Entrance",
										"ATTACK_Allied_NearCellarEntrance_.*",
									});

									SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_NearFootBridge_.*" );

									Util.MapDebugPrint( "^5Canyon is clear, Allies donīt cross river, Bridge destroyed, Cellarentrance intact, Generator built" );
								}
							}
							else	//Cellarentrance destroyed
							{
								if ( Map.Generator == 0 )	//Generator destroyed
								{
									if ( Map.Footbridge == 0 )	//Footbridge destroyed
									{
										SetAvailableMapGoals( TEAM.ALLIES, false, {
											"PLANT_Communications_Radio",
											"PLANT_Complex_Roof_MG42",
											"PLANT_Cellar_MG42",
											".*_Allied_Radio_.*",
											"AMMOCAB_south_ammocabinet_1",
											"HEALTHCAB_south_healthcabinet_1",
										});

										SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_NearFootBridge_.*" );

										SetAvailableMapGoals( TEAM.ALLIES, true, {
											".*_Allied_NearFootBridge_.*",
											"BUILD_Footbridge",
										});

										Util.MapDebugPrint( "^5Canyon is clear, Allies donīt cross river, Bridge destroyed, Cellarentrance destroyed, Generator destroyed, Footbridge destroyed" );
									}
								}
								else	//Generator built
								{
									SetAvailableMapGoals( TEAM.ALLIES, false, {
										"PLANT_Communications_Radio",
										"PLANT_Complex_Roof_MG42",
										"PLANT_Cellar_MG42",
										".*_Allied_Radio_.*",
										"AMMOCAB_south_ammocabinet_1",
										"HEALTHCAB_south_healthcabinet_1",
									});

									SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_NearFootBridge_.*" );

									Util.MapDebugPrint( "^5Canyon is clear, Allies donīt cross river, Bridge destroyed, Cellarentrance destroyed, Generator built" );
								}
							}

							if ( Map.AlliedFlag == 0 )	//Bunker is Axis
							{
								SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_NearBridge_.*" );

								Util.MapDebugPrint( "^5BComplex and Area behind River are clear, Bridge destroyed, Bunker is Axis." );
							}
							else
							{
								SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_Allied_NearBridge_.*" );

								Util.MapDebugPrint( "^5BComplex and Area behind River are clear, Bridge destroyed, Bunker is Allied." );
							}
						}
					}
				}

				if ( Map.AlliesPastRiver == 0 and Map.BridgeBuild == 0 and Map.AlliesInCanyon == 0 and Map.Generator == 1 and Map.AlliedFlag == 0 )
				{
					if ( Map.AxisChangeSpawn == 1 )
					{
						Util.ChangeSpawn( TEAM.AXIS, 3 );
						Map.ReSpawn = 1;

						Map.AxisChangeSpawn = 0;

						SetAvailableMapGoals( TEAM.AXIS, false, {
							".*_Axis_Radio_.*",
							"AMMOCAB_south_ammocabinet_1",
							"HEALTHCAB_south_healthcabinet_1",
							"MOUNTMG42_Complex_Roof_MG42",
							"REPAIRMG42_Complex_Roof_MG42",
							"BUILD_Complex_Roof_MG42",
							"MOUNTMG42_Cellar_MG42",
							"REPAIRMG42_Cellar_MG42",
							"BUILD_Cellar_MG42",
							".*_Axis_NearBridge_.*",
							".*_Axis_NearFootBridge_.*",
							".*_Axis_CellarEntrance_.*",
						});

						SetAvailableMapGoals( TEAM.ALLIES, false, {
							".*_Allied_Radio_.*",
							"PLANT_Communications_Radio",
							"AMMOCAB_south_ammocabinet_1",
							"HEALTHCAB_south_healthcabinet_1",
							"PLANT_Complex_Roof_MG42",
							"PLANT_Cellar_MG42",
							"PLANT_Cellar_Entrance",
							".*_Allied_NearBridge_.*",
							".*_Allied_NearFootBridge_.*",
							".*_Allied_NearCellarEntrance_.*",
						});

						SetAvailableMapGoals( TEAM.AXIS, true, {
							".*_Axis_Start_.*",
							".*_Axis_StartBack_.*",
							"AMMOCAB_south_ammocabinet",
							"HEALTHCAB_south_healthcabinet",
						});

						if ( Map.garagedoor2 )
						{
							if ( Map.garagedoor1 )
							{
								SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
							}
							else
							{
								if ( Map.AxisChangeSpawn == 0 )
								{
									SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
								}
								else
								{
									if ( Map.ReSpawn == 1 )
									{
										SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
									}
								}
							}
						}

						if ( !Map.garagedoor1 )
						{
							SetAvailableMapGoals( TEAM.AXIS, false, {
								"PLANTMINE_Axis_Start_1.*",
								"SMOKEBOMB_Axis_Start_13",
								"AIRSTRIKE_Axis_Start_1",
								"AIRSTRIKE_Axis_Start_6",
								"ARTILLERY_S_Axis_Start_5",
								"ARTILLERY_S_Axis_Start_8",
								"CALLARTILLERY_Axis_Start_4",
								"CALLARTILLERY_Axis_Start_10",
							});
						}
						else
						{
							SetAvailableMapGoals( TEAM.AXIS, false, {
								"SMOKEBOMB_Axis_Start_25",
								"AIRSTRIKE_Axis_Start_28",
								"ARTILLERY_S_Axis_Start_27",
								"CALLARTILLERY_Axis_Start_26",
								".*_Axis_Start_7",
								".*_Axis_Start_9",
								".*_Axis_Start_10",
								".*_Axis_Start_11",
								".*_Axis_Start_12",
								".*_Axis_Start_14",
							});
						}

						if ( !Map.garagedoor2 )
						{
							if ( !Map.garagedoor1 or !Map.AxisDoor )
							{
								SetAvailableMapGoals( TEAM.ALLIES, true, "SWITCH_GarageDoor2" );
							}
						}

						SetAvailableMapGoals( TEAM.ALLIES, true, {
							"CHECKPOINT_checkpoint",
							".*_Allied_Start_.*",
							".*_Allied_StartBack_.*",
							"BUILD_Bridge",
							"PLANT_Generator",
						});

						if ( Map.garagedoor1 )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Garage_Door" );
						}

						if ( Map.AxisDoor )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_Door" );
						}

						if ( Map.WindowMG42 == 0 )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Window_MG42" );
						}
						else
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, {
								"REPAIRMG42_Window_MG42",
								"MOUNTMG42_Window_MG42",
							});
						}

						if ( Map.CabinMG42 == 0 )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Cabin_MG42" );
						}
						else
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, {
								"REPAIRMG42_Cabin_MG42",
								"MOUNTMG42_Cabin_MG42",
							});
						}

						Util.MapDebugPrint( "^5Axis_Re-Captured_Garage" );
					}
					else
					{
						SetAvailableMapGoals( TEAM.AXIS, false, {
							".*_Axis_Radio_.*",
							"AMMOCAB_south_ammocabinet_1",
							"HEALTHCAB_south_healthcabinet_1",
							"MOUNTMG42_Complex_Roof_MG42",
							"REPAIRMG42_Complex_Roof_MG42",
							"BUILD_Complex_Roof_MG42",
							"MOUNTMG42_Cellar_MG42",
							"REPAIRMG42_Cellar_MG42",
							"BUILD_Cellar_MG42",
							".*_Axis_NearBridge_.*",
							".*_Axis_NearFootBridge_.*",
							".*_Axis_CellarEntrance_.*",
						});

						SetAvailableMapGoals( TEAM.ALLIES, false, {
							".*_Allied_Radio_.*",
							"PLANT_Communications_Radio",
							"AMMOCAB_south_ammocabinet_1",
							"HEALTHCAB_south_healthcabinet_1",
							"PLANT_Complex_Roof_MG42",
							"PLANT_Cellar_MG42",
							"PLANT_Cellar_Entrance",
							".*_Allied_NearBridge_.*",
							".*_Allied_NearFootBridge_.*",
							".*_Allied_NearCellarEntrance_.*",
						});

						SetAvailableMapGoals( TEAM.AXIS, true, {
							".*_Axis_Start_.*",
							".*_Axis_StartBack_.*",
							"AMMOCAB_south_ammocabinet",
							"HEALTHCAB_south_healthcabinet",
						});

						if ( Map.garagedoor2 )
						{
							if ( Map.garagedoor1 )
							{
								SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
							}
							else
							{
								if ( Map.AxisChangeSpawn == 0 )
								{
									SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
								}
								else
								{
									if ( Map.ReSpawn == 1 )
									{
										SetAvailableMapGoals( TEAM.AXIS, true, "SWITCH_GarageDoor2" );
									}
								}
							}
						}

						if ( !Map.garagedoor1 )
						{
							SetAvailableMapGoals( TEAM.AXIS, false, {
								"PLANTMINE_Axis_Start_1.*",
								"SMOKEBOMB_Axis_Start_13",
								"AIRSTRIKE_Axis_Start_1",
								"AIRSTRIKE_Axis_Start_6",
								"ARTILLERY_S_Axis_Start_5",
								"ARTILLERY_S_Axis_Start_8",
								"CALLARTILLERY_Axis_Start_4",
								"CALLARTILLERY_Axis_Start_10",
							});
						}
						else
						{
							SetAvailableMapGoals( TEAM.AXIS, false, {
								"SMOKEBOMB_Axis_Start_25",
								"AIRSTRIKE_Axis_Start_28",
								"ARTILLERY_S_Axis_Start_27",
								"CALLARTILLERY_Axis_Start_26",
								".*_Axis_Start_7",
								".*_Axis_Start_9",
								".*_Axis_Start_10",
								".*_Axis_Start_11",
								".*_Axis_Start_12",
								".*_Axis_Start_14",
							});
						}

						if ( !Map.garagedoor2 )
						{
							if ( !Map.garagedoor1 or !Map.AxisDoor )
							{
								SetAvailableMapGoals( TEAM.ALLIES, true, "SWITCH_GarageDoor2" );
							}
						}

						SetAvailableMapGoals( TEAM.ALLIES, true, {
							"CHECKPOINT_checkpoint",
							".*_Allied_Start_.*",
							".*_Allied_StartBack_.*",
							"BUILD_Bridge",
							"PLANT_Generator",
						});

						if ( Map.garagedoor1 )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Garage_Door" );
						}

						if ( Map.AxisDoor )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_Door" );
						}

						if ( Map.WindowMG42 == 0 )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Window_MG42" );
						}
						else
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, {
								"REPAIRMG42_Window_MG42",
								"MOUNTMG42_Window_MG42",
							});
						}

						if ( Map.CabinMG42 == 0 )
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Cabin_MG42" );
						}
						else
						{
							SetAvailableMapGoals( TEAM.ALLIES, true, {
								"REPAIRMG42_Cabin_MG42",
								"MOUNTMG42_Cabin_MG42",
							});
						}

						Util.MapDebugPrint( "^5FFFF" );
					}
				}
				else
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "MOUNTMG42_Complex_Roof_MG42" );

					if ( Map.AlliesInComplex == 0 )
					{
						SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_NearBridge_.*" );
					}

					Util.MapDebugPrint( "^5VVVV" );
				}
			}
			else
			{
				if ( GetEntClass(ent) == CLASS.ENGINEER )
				{
					Map.AxisEngInCanyon -= 1;
				}
			}
		},
	},
};

global OnMapLoad = function()
{
	// Register callback functions
	OnTrigger( "Allies have Constructed the Bridge", Map.Bridge_Built );
	OnTrigger( "Outdoor Cabin MG42 Constructed!", Map.Cabin_MG42_Built );
	OnTrigger( "Cellar MG42 Constructed!", Map.Cellar_MG42_Built );
	OnTrigger( "Axis have Constructed the Lab MG42", Map.Complex_Roof_MG42_Built );
	OnTrigger( "Allies have Constructed the Foot Bridge", Map.Footbridge_Built );
	OnTrigger( "Axis have Constructed the Garage MG42", Map.Axis_Garage_Roof_MG42_Built );
	OnTrigger( "Allies have Constructed the Garage MG42", Map.Allied_Garage_Roof_MG42_Built );
	OnTrigger( "The Generator has been constructed!", Map.Generator_Built );
	OnTrigger( "Indoor Cabin MG42 Constructed!", Map.Window_MG42_Built );
	OnTrigger( "Planted at the Axis Door.", Map.Axis_Door_Planted );
	OnTrigger( "Planted at Axis Door.", Map.Axis_Door_Planted );	//for nitmod
	OnTrigger( "Planted at the Bridge.", Map.Bridge_Planted );
	OnTrigger( "Planted at Bridge.", Map.Bridge_Planted );	//for nitmod
	OnTrigger( "Planted at the Cabin MG42.", Map.Cabin_MG42_Planted );
	OnTrigger( "Planted at Cabin MG42.", Map.Cabin_MG42_Planted );	//for nitmod
	OnTrigger( "Planted at the Cellar Entrance.", Map.Cellar_Entrance_Planted );
	OnTrigger( "Planted at Cellar Entrance.", Map.Cellar_Entrance_Planted );	//for nitmod
	OnTrigger( "Planted at the Cellar MG42.", Map.Cellar_MG42_Planted );
	OnTrigger( "Planted at Cellar MG42.", Map.Cellar_MG42_Planted );	//for nitmod
	OnTrigger( "Planted at the Command Post.", Map.Command_Post_Planted );
	OnTrigger( "Planted at Command Post.", Map.Command_Post_Planted );	//for nitmod
	OnTrigger( "Planted at the Communications Radio.", Map.Communications_Radio_Planted );
	OnTrigger( "Planted at Communications Radio.", Map.Communications_Radio_Planted );	//for nitmod
	OnTrigger( "Planted at the Complex Roof MG42.", Map.Complex_Roof_MG42_Planted );
	OnTrigger( "Planted at Complex Roof MG42.", Map.Complex_Roof_MG42_Planted );	//for nitmod
	OnTrigger( "Planted at the Footbridge.", Map.Footbridge_Planted );
	OnTrigger( "Planted at Footbridge.", Map.Footbridge_Planted );	//for nitmod
	OnTrigger( "Planted at the Garage Door.", Map.Garage_Door_Planted );
	OnTrigger( "Planted at Garage Door.", Map.Garage_Door_Planted );	//for nitmod
	OnTrigger( "Planted at the Garage Roof MG42.", Map.Garage_Roof_MG42_Planted );
	OnTrigger( "Planted at Garage Roof MG42.", Map.Garage_Roof_MG42_Planted );	//for nitmod
	OnTrigger( "Planted at the Generator.", Map.Generator_Planted );
	OnTrigger( "Planted at Generator.", Map.Generator_Planted );	//for nitmod
	OnTrigger( "Planted at the Window MG42.", Map.Window_MG42_Planted );
	OnTrigger( "Planted at Window MG42.", Map.Window_MG42_Planted );	//for nitmod
	OnTrigger( "Defused at the Axis Door.", Map.Axis_Door_Defused );
	OnTrigger( "Defused at Axis Door.", Map.Axis_Door_Defused );	//for nitmod
	OnTrigger( "Defused at the Bridge.", Map.Bridge_Defused );
	OnTrigger( "Defused at Bridge.", Map.Bridge_Defused );	//for nitmod
	OnTrigger( "Defused at the Cabin MG42.", Map.Cabin_MG42_Defused );
	OnTrigger( "Defused at Cabin MG42.", Map.Cabin_MG42_Defused );	//for nitmod
	OnTrigger( "Defused at the Cellar Entrance.", Map.Cellar_Entrance_Defused );
	OnTrigger( "Defused at Cellar Entrance.", Map.Cellar_Entrance_Defused );	//for nitmod
	OnTrigger( "Defused at the Cellar MG42.", Map.Cellar_MG42_Defused );
	OnTrigger( "Defused at Cellar MG42.", Map.Cellar_MG42_Defused );	//for nitmod
	OnTrigger( "Defused at the Command Post.", Map.Command_Post_Defused );
	OnTrigger( "Defused at Command Post.", Map.Command_Post_Defused );	//for nitmod
	OnTrigger( "Defused at the Communications Radio.", Map.Communications_Radio_Defused );
	OnTrigger( "Defused at Communications Radio.", Map.Communications_Radio_Defused );	//for nitmod
	OnTrigger( "Defused at the Complex Roof MG42.", Map.Complex_Roof_MG42_Defused );
	OnTrigger( "Defused at Complex Roof MG42.", Map.Complex_Roof_MG42_Defused );	//for nitmod
	OnTrigger( "Defused at the Footbridge.", Map.Footbridge_Defused );
	OnTrigger( "Defused at Footbridge.", Map.Footbridge_Defused );	//for nitmod
	OnTrigger( "Defused at the Garage Door.", Map.Garage_Door_Defused );
	OnTrigger( "Defused at Garage Door.", Map.Garage_Door_Defused );	//for nitmod
	OnTrigger( "Defused at the Garage Roof MG42.", Map.Garage_Roof_MG42_Defused );
	OnTrigger( "Defused at Garage Roof MG42.", Map.Garage_Roof_MG42_Defused );	//for nitmod
	OnTrigger( "Defused at the Generator.", Map.Generator_Defused );
	OnTrigger( "Defused at Generator.", Map.Generator_Defused );	//for nitmod
	OnTrigger( "Defused at the Window MG42.", Map.Window_MG42_Defused );
	OnTrigger( "Defused at Window MG42.", Map.Window_MG42_Defused );	//for nitmod
	OnTrigger( "Allies have Breached the Back Garage Door", Map.Axis_Door_Destroyed );
	OnTrigger( "Axis have destroyed the Foot Bridge", Map.Bridge_Destroyed );
	OnTrigger( "Outdoor Cabin MG42 Destroyed!", Map.Cabin_MG42_Destroyed );
	OnTrigger( "Allies have breached the cellar!", Map.Cellar_Entrance_Destroyed );
	OnTrigger( "Cellar MG42 Destroyed!", Map.Cellar_MG42_Destroyed );
	OnTrigger( "Allies destroyed the communications radio!", Map.Communications_Radio_Destroyed );
	OnTrigger( "Allies have Destroyed the Lab MG42", Map.Complex_Roof_MG42_Destroyed );
	OnTrigger( "Axis have Damaged the Foot Bridge", Map.Footbridge_Destroyed );
	OnTrigger( "Allies have breached the Garage Door", Map.Garage_Door_Destroyed );
	OnTrigger( "Axis have Destroyed the Garage MG42", Map.Allied_Garage_Roof_MG42_Destroyed );
	OnTrigger( "Allies have Destroyed the Garage MG42", Map.Axis_Garage_Roof_MG42_Destroyed );
	OnTrigger( "The Generator has been damaged!", Map.Generator_Destroyed );
	OnTrigger( "Indoor Cabin MG42 Destroyed!", Map.Window_MG42_Destroyed );
	OnTrigger( "Axis reclaim the Garage!", Map.checkpoint_Axis_Captured );
	OnTrigger( "Allies capture the Garage!", Map.checkpoint_Allies_Captured );
	OnTrigger( "Allied Command Post constructed. Charge speed increased!", Map.Allied_CP_Built );
	OnTrigger( "Axis team has destroyed the Allied Command Post!", Map.Allied_CP_Destroyed );
	OnTrigger( "Axis Command Post constructed. Charge speed increased!", Map.Axis_CP_Built );
	OnTrigger( "Allied team has destroyed the Axis Command Post!", Map.Axis_CP_Destroyed );
	OnTrigger( "garagedoor2_lever_goto", Map.garage_door2_lever );
	OnTrigger( "garagedoor2_goto", Map.garage_door2 );

	Util.DisableGoal( ".*", true ); // all but routes

	ETUtil.SwitchWeapon(WEAPON.MP40);
	ETUtil.SwitchWeapon(WEAPON.THOMPSON);
	ETUtil.SwitchWeapon(WEAPON.STEN);

	SetAvailableMapGoals( TEAM.AXIS, true, {
		"AMMOCAB_south_ammocabinet",
		"HEALTHCAB_south_healthcabinet",
		"BUILD_Command_Post",
		"BUILD_Garage_Roof_MG42",
		".*_Axis_Start_.*",
		".*_Axis_StartFront_.*",
		".*_Axis_StartBack_.*",
	});

	SetAvailableMapGoals( TEAM.AXIS, false, {
		"DEFEND_Axis_Start_.*",
		"SMOKEBOMB_Axis_Start_25",
		"AIRSTRIKE_Axis_Start_28",
		"ARTILLERY_S_Axis_Start_27",
		"CALLARTILLERY_Axis_Start_26",
	});

	SetAvailableMapGoals( TEAM.ALLIES, true, {
		"BUILD_Cabin_MG42",
		"BUILD_Window_MG42",
		"PLANT_Garage_Door",
		"PLANT_Axis_Door",
		"BUILD_Bridge",
		".*_Allied_Start_.*",
		".*_Allied_StartBack_.*",
	});

	SetAvailableMapGoals( TEAM.AXIS, true, "PLANTMINE_Axis_Start_.*" );

	SetGoalPriority( "PLANT_.*", 0.6, 0, CLASS.ENGINEER );

	SetGoalPriority( "AIRSTRIKE_Axis_Start_28", 0.81, TEAM.AXIS, CLASS.FIELDOPS );
	SetGoalPriority( "BUILD_Command_Post", 0.49, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "BUILD_Generator", 0.91, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "BUILD_Complex_Roof_MG42", 0.94, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "DEFEND_Axis_StartBack_.*", 0.5, TEAM.AXIS, 0 );
	SetGoalPriority( "DEFEND_Axis_StartFront_1", 0.505, TEAM.AXIS, 0 );
	SetGoalPriority( "DEFEND_Axis_StartFront_3", 0.505, TEAM.AXIS, 0 );
	SetGoalPriority( "DEFEND_Axis_Start_.*", 0.51, TEAM.AXIS, 0 );
	SetGoalPriority( "DEFEND_Axis_InfrontofWall_.*", 0.53, TEAM.AXIS, 0 );
	SetGoalPriority( "DEFEND_Axis_Radio_.*", 0.55, TEAM.AXIS, 0 );
	SetGoalPriority( "DEFEND_Axis_NearFootBridge_.*", 0.53, TEAM.AXIS, 0 );
	SetGoalPriority( "DEFEND_Axis_NearBridge_.*", 0.53, TEAM.AXIS, 0 );
	Util.LimitToClass( "DEFEND_Axis_NearFootBridge_1", TEAM.AXIS, CLASS.SOLDIER );
	SetGoalPriority( "DEFEND_Axis_NearFootBridge_1", 0.535, TEAM.AXIS, CLASS.SOLDIER );
	SetGoalPriority( "CHECKPOINT_checkpoint", 0.75, TEAM.AXIS, 0 );
	SetGoalPriority( "MOUNTMG42_Cellar_MG42", 0.72, TEAM.AXIS, CLASS.SOLDIER );
	SetGoalPriority( "MOUNTMG42_Complex_Roof_MG42", 0.72, TEAM.AXIS, CLASS.SOLDIER  );
	SetGoalPriority( "PLANT_Bridge", 0.94, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "PLANT_Footbridge", 0.835, TEAM.AXIS, CLASS.COVERTOPS );
	Util.LimitToClass( "PLANT_Garage_Roof_MG42", TEAM.AXIS, CLASS.COVERTOPS );
	SetGoalPriority( "PLANT_Garage_Roof_MG42", 0.82, TEAM.AXIS, CLASS.COVERTOPS );
	SetGoalPriority( "PLANTMINE_Axis_Start_2.*", 0.8, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "PLANTMINE_Axis_CellarEntrance_6", 0.92, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "PLANTMINE_Axis_CellarEntrance_7", 0.92, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "PLANTMINE_Axis_CellarEntrance_8", 0.92, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "PLANTMINE_Axis_CellarEntrance_1", 0.925, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "PLANTMINE_Axis_CellarEntrance_5", 0.925, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "PLANTMINE_Axis_CellarEntrance_2", 0.93, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "PLANTMINE_Axis_CellarEntrance_3", 0.93, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "PLANTMINE_Axis_CellarEntrance_4", 0.93, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "PLANTMINE_Axis_NearBridge_.*", 0.93, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "REPAIRMG42_Cellar_MG42", 0.935, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "REPAIRMG42_Complex_Roof_MG42", 0.94, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "SMOKEBOMB_Axis_Start_13", 0.82, TEAM.AXIS, CLASS.COVERTOPS );
	SetGoalPriority( "SMOKEBOMB_Axis_GarageRoofMG42", 0.825, TEAM.AXIS, CLASS.COVERTOPS );
	SetGoalPriority( "SMOKEBOMB_Axis_StartFront_4", 0.826, TEAM.AXIS, CLASS.COVERTOPS );
	SetGoalPriority( "SMOKEBOMB_Axis_GarageDoorPlanted", 0.828, TEAM.AXIS, CLASS.COVERTOPS );
	SetGoalPriority( "SMOKEBOMB_Axis_NearBridge_12", 0.83, TEAM.AXIS, CLASS.COVERTOPS );


	SetGoalPriority( "ATTACK_Allied_StartBack_.*", 0.49, TEAM.ALLIES, 0 );
	SetGoalPriority( ".*_Allied_NearBridge_.*", 0.51, TEAM.ALLIES, 0 );
	SetGoalPriority( ".*_Allied_NearFootBridge_.*", 0.51, TEAM.ALLIES, 0 );

	//set up according to priorities of "PLANT_Cellar_Entrance" and PLANT_Communications_Radio
	SetGoalPriority( ".*_Allied_NearCellarEntrance_.*", 0.54, TEAM.ALLIES, 0 );
	SetGoalPriority( ".*_Allied_Radio_.*", 0.53, TEAM.ALLIES, 0 );

	SetGoalPriority( "BUILD_Bridge", 0.8, TEAM.ALLIES, CLASS.ENGINEER );
	SetGoalPriority( "BUILD_Cabin_MG42", 0.92, TEAM.ALLIES, CLASS.ENGINEER );
	SetGoalPriority( "BUILD_Window_MG42", 0.92, TEAM.ALLIES, CLASS.ENGINEER );
	SetGoalPriority( "PLANT_Garage_Door", 0.91, TEAM.ALLIES, CLASS.ENGINEER );
	SetGoalPriority( "PLANT_Generator", 0.92, TEAM.ALLIES, CLASS.COVERTOPS );
	SetGoalPriority( "PLANT_Axis_Door", 0.81, TEAM.ALLIES, CLASS.ENGINEER );

	//maybe decrease ? => but this is second route into complex
	SetGoalPriority( "PLANT_Cellar_Entrance", 0.82, TEAM.ALLIES, CLASS.ENGINEER );
	//maybe increase ? => main goal of map
	SetGoalPriority( "PLANT_Communications_Radio", 0.81, TEAM.ALLIES, CLASS.ENGINEER );
	///////////////////

	SetGoalPriority( "PLANT_Complex_Roof_MG42", 0.7, TEAM.ALLIES, CLASS.ENGINEER );
	SetGoalPriority( "PLANT_Complex_Roof_MG42", 0.85, TEAM.ALLIES, CLASS.COVERTOPS );
	SetGoalPriority( "PLANT_Cellar_MG42", 0.68, TEAM.ALLIES, CLASS.ENGINEER );
	SetGoalPriority( "PLANT_Cellar_MG42", 0.83, TEAM.ALLIES, CLASS.COVERTOPS );
	SetGoalPriority( "REPAIRMG42_Garage_Roof_MG42", 0.92, TEAM.ALLIES, CLASS.ENGINEER );

	// Max users per goal
	Util.SetMaxUsers( 1, "DEFEND_.*" );
	Util.SetMaxUsers( 1, "GRENADE_.*" );
	Util.SetMaxUsers( 1, "MOUNTMG42_.*" );
	Util.SetMaxUsers( 1, "SWITCH_.*" );
	Util.SetMaxUsers( 4, "CHECKPOINT_.*" );

	// Camp times
	SetMapGoalProperties( "MOBILEMG42_.*", {MinCampTime=10, MaxCampTime=60} );

	Util.SetGoalPosition(451.329834, 2386.473389, 904.127625, "PLANT_Complex_Roof_MG42");
	Util.SetGoalPosition(-1212.830688, 1262.514282, 476.125000, "PLANT_Footbridge");
	Util.SetGoalPosition(1841.874878, -1408.765015, 552.125000, "PLANT_Command_Post");
	Util.SetGoalPosition(1029.013062, -1273.654663, 744.125549, "PLANT_Generator");
	Util.SetGoalPosition(1176.203125, -3015.928711, 542.125000, "PLANT_Window_MG42");
	Util.SetGoalPosition(514.973999, -2997.071045, 566.404846, "PLANT_Cabin_MG42");
	Util.SetGoalPosition(-87.861336, 3073.100830, 232.125000, "PLANT_Cellar_MG42");

	Util.AddUseWp( "PLANT_Axis_Door", "Axis_Door_Outdoor" );
	Util.AddUseWp( "PLANT_Axis_Door", "Axis_Door_Indoor" );
	Util.AddUseWp( "MOUNTMG42_Cellar_MG42", "cellarmg" );
	Util.AddUseWp( "REPAIRMG42_Cellar_MG42", "cellarmg" );
	Util.AddUseWp( "PLANT_Garage_Door", "garagedoor_1" );
	Util.AddUseWp( "PLANT_Garage_Door", "garagedoor_2" );
	Util.AddUseWp( "PLANT_Garage_Door", "garagedoor_3" );
	Util.AddUseWp( "PLANT_Bridge", "plantbridge" );

	Wp.SetWaypointFlag( "Axis_Door_1", "axis", true);
	Wp.SetWaypointFlag( "Axis_Door_1", "door", true);
	Wp.SetWaypointFlag( "Axis_Door", "axis", true);
	Wp.SetWaypointFlag( "Axis_Door", "door", true);
	Wp.SetWaypointFlag( "Axis_Tower", "closed", true);
	Wp.SetWaypointFlag( "Tower_1", "closed", true);
	Wp.SetWaypointFlag( "Tower_2", "closed", true);
	Wp.SetWaypointFlag( "JumpDown", "closed", true);

	NP1 = OnTriggerRegion(AABB(230.387,-1205.128,689.129,776.171,2016.875,1107.125), RegionTrigger.DisableBotPush);
	NP2 = OnTriggerRegion(AABB(256.526,-1388.904,721.125,320.875,-1293.956,1007.805), RegionTrigger.DisableBotPush);
	NP3 = OnTriggerRegion(AABB(-697.958,2625.805,358.125,-447.173,2829.505,666.479), RegionTrigger.DisableBotPush);
	NP4 = OnTriggerRegion(AABB(-292.202,2556.340,689.125,-209.597,2673.562,984.533), RegionTrigger.DisableBotPush);
	NP5 = OnTriggerRegion(AABB(341.177,2341.962,881.125,417.196,2411.823,1177.312), RegionTrigger.DisableBotPush);
	DCM1 = OnTriggerRegion(AABB(230.387,-1205.128,689.129,776.171,2016.875,1107.125), RegionTrigger.DisableCombatMovement);
	DCM2 = OnTriggerRegion(AABB(341.177,2341.962,881.125,417.196,2411.823,1177.312), RegionTrigger.DisableCombatMovement);
	DCMTrigger1 = OnTriggerRegion(AABB(166.399,-2566.056,550.369,360.259,-2447.125,668.621), RegionTrigger.DisableCombatMovement);
	DCM6 = OnTriggerRegion(AABB(-643.725,2006.483,359.186,-398.874,3598.632,811.125), RegionTrigger.DisableCombatMovement);
	NP6 = OnTriggerRegion(AABB(-643.725,2006.483,359.186,-398.874,3598.632,811.125), RegionTrigger.DisableBotPush);
	NP7 = OnTriggerRegion(AABB(435.329,3343.973,621.281,569.410,3480.874,763.125), RegionTrigger.DisableBotPush);
	DCM7 = OnTriggerRegion(AABB(435.329,3343.973,621.281,569.410,3480.874,763.125), RegionTrigger.DisableCombatMovement);
	trigger_PastRiver = OnTriggerRegion(AABB(-447.035,1274.117,209.125,1445.441,3681.839,1468.555), Map.Trigger_Past_River);
	trigger_AlliesInComplexUnderground = OnTriggerRegion(AABB(-384.875,1839.125,209.125,1408.875,3712.875,1533.159), Map.Trigger_AllyInComplex);
	trigger_AlliesInCanyon = OnTriggerRegion(AABB(-1557.835,1269.484,358.125,-447.125,3488.875,883.399), Map.Trigger_AllyInCanyon);


	MapRoutes =
	{
		CHECKPOINT_checkpoint =
		{
			ROUTE_Axis_ComplexSpawn =
			{
				ROUTE_Axis_Canyon_1 =
				{
					ROUTE_Wall =
					{
						ROUTE_Axis_Canyon_2 =
						{
							ROUTE_Axis_Canyon_3 =
							{
								ROUTE_Axis_Canyon_4 =
								{
									ROUTE_Axis_Canyon_5 =
									{
										ROUTE_Axis_NearGarage =
										{

										},
									},
								},
							},
						},
					},
				},
			},
			ROUTE_SmokebombAxis =
			{
				ROUTE_Axis_Canyon_1 =
				{
					ROUTE_Wall =
					{
						ROUTE_Axis_Canyon_2 =
						{
							ROUTE_Axis_Canyon_3 =
							{
								ROUTE_Axis_Canyon_4 =
								{
									ROUTE_Axis_Canyon_5 =
									{
										ROUTE_Axis_NearGarage =
										{

										},
									},
								},
							},
						},
					},
				},
			},
			ROUTE_PlantFootbridge =
			{
				ROUTE_Footbridge =
				{
					ROUTE_Wall =
					{
						ROUTE_Axis_Canyon_2 =
						{
							ROUTE_Axis_Canyon_3 =
							{
								ROUTE_Axis_Canyon_4 =
								{
									ROUTE_Axis_Canyon_5 =
									{
										ROUTE_Axis_NearGarage =
										{

										},
									},
								},
							},
						},
					},
				},
			},
			ROUTE_DestroyFootbridge_1 =
			{
				ROUTE_Wall =
				{
					ROUTE_Axis_Canyon_2 =
					{
						ROUTE_Axis_Canyon_3 =
						{
							ROUTE_Axis_Canyon_4 =
							{
								ROUTE_Axis_Canyon_5 =
								{
									ROUTE_Axis_NearGarage =
									{

									},
								},
							},
						},
					},
				},
			},
			ROUTE_DestroyFootbridge_2 =
			{
				ROUTE_Wall =
				{
					ROUTE_Axis_Canyon_2 =
					{
						ROUTE_Axis_Canyon_3 =
						{
							ROUTE_Axis_Canyon_4 =
							{
								ROUTE_Axis_Canyon_5 =
								{
									ROUTE_Axis_NearGarage =
									{

									},
								},
							},
						},
					},
				},
			},
		},
		DEFEND_Axis_Radio_1 =
		{
			ROUTE_Axis_ComplexSpawn =
			{
				ROUTE_InsideLadder =
				{
					ROUTE_Jump =	//the shortest way
					{

					},
					ROUTE_Stairs1 =
					{
						ROUTE_Stairs =
						{

						},
					},
				},
				ROUTE_Cellarentrance =
				{
					ROUTE_Cellarmg42 =
					{

					},
				},
				ROUTE_Sheetmetal_stairs =
				{
					ROUTE_Sheetmetal_stairs2 =
					{
						ROUTE_Radio =
						{

						},
					},
				},
			},
		},
	};

	MapRoutes.BUILD_Generator = MapRoutes.CHECKPOINT_checkpoint;
	MapRoutes.PLANT_Garage_Roof_MG42 = MapRoutes.CHECKPOINT_checkpoint;
	MapRoutes.DEFEND_Axis_Radio_2 = MapRoutes.DEFEND_Axis_Radio_1;
	MapRoutes.DEFEND_Axis_Radio_3 = MapRoutes.DEFEND_Axis_Radio_1;
	MapRoutes.DEFEND_Axis_Radio_4 = MapRoutes.DEFEND_Axis_Radio_1;
	MapRoutes.DEFEND_Axis_Radio_5 = MapRoutes.DEFEND_Axis_Radio_1;
	MapRoutes.DEFEND_Axis_Radio_6 = MapRoutes.DEFEND_Axis_Radio_1;
	MapRoutes.DEFEND_Axis_Radio_7 = MapRoutes.DEFEND_Axis_Radio_1;
	MapRoutes.DEFEND_Axis_Radio_8 = MapRoutes.DEFEND_Axis_Radio_1;
	MapRoutes.DEFEND_Axis_Radio_9 = MapRoutes.DEFEND_Axis_Radio_1;
	MapRoutes.DEFUSE_Communications_Radio_1 = MapRoutes.DEFEND_Axis_Radio_1;
	MapRoutes.DEFUSE_Communications_Radio_2 = MapRoutes.DEFEND_Axis_Radio_1;
	MapRoutes.DEFUSE_Communications_Radio_3 = MapRoutes.DEFEND_Axis_Radio_1;
	MapRoutes.DEFUSE_Communications_Radio_4 = MapRoutes.DEFEND_Axis_Radio_1;
	MapRoutes.DEFUSE_Communications_Radio_5 = MapRoutes.DEFEND_Axis_Radio_1;

	Util.Routes(MapRoutes);

	SetAvailableMapGoals( TEAM.AXIS, false, {
		"ROUTE_Footbridge",
		"ROUTE_Wall",
		"ROUTE_Cellarentrance",
	});

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

global OnBotJoin = function( bot )
{
	if ( Map.AxisChangeSpawn == 0 )
	{
		if ( Map.AlliedFlag == 0 )
		{
			Util.ChangeSpawn( TEAM.AXIS, 3 );
		}
		else
		{
			Util.ChangeSpawn( TEAM.AXIS, 2 );
		}
	}
	else
	{
		Util.ChangeSpawn( TEAM.AXIS, 2 );
	}

	bot.TargetBreakableDist = 100.0;
	bot.MaxViewDistance = 2400;
};
