//==========================================================================================
//
//	radar_summer.gm
//
//	Who      	When		What
//------------------------------------------------------------------------------------------
//	Qiki		17 August 2013	Initial Script & waypoints
//	Native12	02.05.2014	Finished
//	Bugs and suggestions: PM on http://omni-bot.invisionzone.com/index.php?/index
//
//==========================================================================================

global Map =
{
	Debug = 0,

	Axis_Road_MG_Nest_Dyno = 0,
	Axis_Watchtower_MG_Nest_Dyno = 0,
	Allied_Bunker_MG_Nest_Dyno = 0,
	Axis_Bunker_MG_Nest_Dyno = 0,
	Inner_Side_Entrance_Dyno = 0,
	Main_Entrance_Dyno = 0,
	North_Radar_Station_Dyno = 0,
	Outer_Side_Entrance_Dyno = 0,
	South_Radar_Station_Dyno = 0,
	Allied_CP_Dyno = 0,
	Axis_CP_Dyno = 0,
	Allied_CP = false,
	Axis_CP = false,
	Axis_Road_MG_Nest = false,
	Axis_Watchtower_MG_Nest = false,
	Tank = false,
	Inner_Side_Entrance = true,
	Main_Entrance = true,
	North_Radar_Station = true,
	Outer_Side_Entrance = true,
	South_Radar_Station = true,
	West_Radar_Parts = true,
	East_Radar_Parts = true,
	Forward_Bunker_Axis = true,
	Forward_Bunker_Allies = false,
	Tank_At_Position = false,
	Axis_Bunker_MG_Nest = false,
	Allied_Bunker_MG_Nest = false,
	version = 0,
	wooden_barrier_intact = true,
	generator_intact = true,
	Generator_Dyno = 0,
	West_RadarParts_Taken = false,
	East_RadarParts_Taken = false,
	NumberOfCompletedTasks = 0,
	Allies_Win = false,
	start = true,
	radarbox1_dropped = 0,
	radarbox2_dropped = 0,

	DispenseAmmoTime = 40,

	Roles =
	{
		/*==============================================
		Allied spawns:
		1 - Side Entrance Bunker
		2 - Abandoned Villa
		3 - Forward Bunker
		==============================================*/
		ALLIES =
		{
			AllBots = true, // each bot is considered for a role
			ATTACKER =
			{
				numbots = 5,
				crucialClass = CLASS.ENGINEER,
			},
			ATTACKER1 =
			{
				numbots = 5,
				crucialClass = CLASS.MEDIC,
			},
			ATTACKER2 =
			{
				numbots = 4,
				crucialClass = CLASS.ENGINEER,
			},
			ATTACKER3 =
			{
				numbots = 3,
				crucialClass = CLASS.ENGINEER,
			},
		},
		/*==============================================
		Axis spawns:
		3 - Forward Bunker
		4 - Forward Hut
		5 - Lower Warehouse
		6 - Road Hut
		==============================================*/
		AXIS =
		{
			AllBots = true, // each bot is considered for a role
			DEFENDER =
			{
				numbots = 6,
				crucialClass = CLASS.ENGINEER,
			},
			DEFENDER1 =
			{
				numbots = 7,
				crucialClass = CLASS.ENGINEER,
			},
			DEFENDER2 =
			{
				numbots = 7,
				crucialClass = CLASS.ENGINEER,
			},
			DEFENDER3 =
			{
				numbots = 6,
				crucialClass = CLASS.ENGINEER,
			},
		},
	},

	Navigation =
	{
		//  	/bot waypoint_setproperty paththrough Navigation_PT:ladder
		ladder =
		{
			navigate = function(_this)
			{
				wpTable = {};
				Wp.GetWaypointByName("Ladder", wpTable);
				if ( _this.Goto(wpTable.position) == EVENT.PATH_SUCCESS )
				{

					_this.AddAimRequest(Priority.VeryHigh, "facing", wpTable.facing);
					sleep(0.1);
					_this.Bot.HoldButton(BTN.FORWARD, 0.5);
					sleep(0.5);
					_this.AddAimRequest(Priority.VeryHigh, "facing", Vector3(-0.636, -0.016, -0.772));
					_this.Bot.HoldButton(BTN.FORWARD, 2);
					sleep(2);
				}
			},
		},
	},

	Axis_Road_MG_Nest_Built = function( trigger )
	{

		Map.Axis_Road_MG_Nest = true;

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

		if ( Map.Main_Entrance )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, {
				"MOUNTMG42_Axis_Road_MG_Nest",
				"REPAIRMG42_Axis_Road_MG_Nest",
			});
		}
		else
		{
			SetAvailableMapGoals( TEAM.AXIS, false, {
				"MOUNTMG42_Axis_Road_MG_Nest",
				"REPAIRMG42_Axis_Road_MG_Nest",
			});
		}

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

	Axis_Road_MG_Nest_Planted = function( trigger )
	{

		Map.Axis_Road_MG_Nest_Dyno += 1;

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

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

	Axis_Road_MG_Nest_Defused = function( trigger )
	{

		Map.Axis_Road_MG_Nest_Dyno -= 1;

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

	Axis_Road_MG_Nest_Destroyed = function( trigger )
	{

		Map.Axis_Road_MG_Nest_Dyno = 0;
		Map.Axis_Road_MG_Nest = false;

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

		SetAvailableMapGoals( 0, false, {
			"MOUNTMG42_Axis_Road_MG_Nest",
			"REPAIRMG42_Axis_Road_MG_Nest",
		});

		if ( !Map.Main_Entrance )
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Axis_Road_MG_Nest" );
		}
		else
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Axis_Road_MG_Nest" );
		}

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

	Bunker_MG_Nest_Built = function( trigger )
	{

		if ( trigger.Entity == 439 )
		{
			Map.Allied_Bunker_MG_Nest = true;

			Util.MapDebugPrint( "^5Allied_Bunker_MG_Nest_Built" );
		}
		else
		{
			Map.Axis_Bunker_MG_Nest = true;

			Util.MapDebugPrint( "^5Axis_Bunker_MG_Nest_Built" );
		}

		if ( Map.Main_Entrance )
		{
			if ( !Map.Forward_Bunker_Allies )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, {
					"MOUNTMG42_Bunker_MG_Nest",
					"REPAIRMG42_Bunker_MG_Nest",
				});
			}
			else
			{
				SetAvailableMapGoals( TEAM.AXIS, false, {
					"MOUNTMG42_Bunker_MG_Nest",
					"REPAIRMG42_Bunker_MG_Nest",
				});
			}
		}
		else
		{
			SetAvailableMapGoals( TEAM.AXIS, false, {
				"MOUNTMG42_Bunker_MG_Nest",
				"REPAIRMG42_Bunker_MG_Nest",
			});
		}
	},

	Bunker_MG_Nest_Planted = function( trigger )
	{

		SetAvailableMapGoals( 0, false, "DEFUSE_Bunker_MG_Nest_.*" );

		if ( Map.Allied_Bunker_MG_Nest )
		{
			Map.Allied_Bunker_MG_Nest_Dyno += 1;

			Util.MapDebugPrint( "^5Allied_Bunker_MG_Nest_Planted" );
		}
		else
		{
			Map.Axis_Bunker_MG_Nest_Dyno += 1;

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

	Bunker_MG_Nest_Defused = function( trigger )
	{

		if ( Map.Allied_Bunker_MG_Nest )
		{
			Map.Allied_Bunker_MG_Nest_Dyno -= 1;

			Util.MapDebugPrint( "^5Allied_Bunker_MG_Nest_Defused" );
		}
		else
		{
			Map.Axis_Bunker_MG_Nest_Dyno -= 1;

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

	Bunker_MG_Nest_Destroyed = function( trigger )
	{

		Map.Bunker_MG_Nest_Dyno = 0;

		SetAvailableMapGoals( 0, false, {
			"MOUNTMG42_Bunker_MG_Nest",
			"REPAIRMG42_Bunker_MG_Nest",
		});

		if ( trigger.Entity == 439 )
		{
			Map.Allied_Bunker_MG_Nest = false;

			Util.MapDebugPrint( "^5Allied_Bunker_MG_Nest_Destroyed" );
		}
		else
		{
			Map.Axis_Bunker_MG_Nest = false;

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

	Forward_Bunker_Axis_Captured = function( trigger )
	{

		Map.Forward_Bunker_Axis = true;
		Map.Forward_Bunker_Allies = false;

		foreach ( id and bot in BotTable )
		{
			if ( bot.GetTeam(TEAM.AXIS) )
			{
				if ( Map.start )
				{
					if ( bot.HasRole(ROLE.DEFENDER1) )
					{
						r = RandInt(0,2);
						if ( r == 2 )
						{
							bot.ChangeSpawnPoint(5);	//Lower Warehouse
						}
						else
						{
							bot.ChangeSpawnPoint(3);	//Forward Bunker
						}
					}
					if ( bot.HasRole(ROLE.DEFENDER2) or bot.HasRole(ROLE.DEFENDER3) )
					{
						bot.ChangeSpawnPoint(3);	//Forward Bunker
					}
					if ( bot.HasRole(ROLE.DEFENDER) )
					{
						bot.ChangeSpawnPoint(6);	//Road Hut
					}
				}
				if ( !Map.Outer_Side_Entrance and Map.Inner_Side_Entrance )
				{
					if ( bot.HasRole(ROLE.DEFENDER1) )
					{
						bot.ChangeSpawnPoint(5);	//Lower Warehouse
					}
					if ( bot.HasRole(ROLE.DEFENDER2) or bot.HasRole(ROLE.DEFENDER3) )
					{
						bot.ChangeSpawnPoint(3);	//Forward Bunker
					}
					if ( bot.HasRole(ROLE.DEFENDER) )
					{
						bot.ChangeSpawnPoint(6);	//Road Hut
					}
				}
				if ( !Map.Outer_Side_Entrance and !Map.Inner_Side_Entrance )
				{
					if ( bot.HasRole(ROLE.DEFENDER2) or bot.HasRole(ROLE.DEFENDER3) )
					{
						bot.ChangeSpawnPoint(3);	//Forward Bunker
					}
					if ( bot.HasRole(ROLE.DEFENDER) or bot.HasRole(ROLE.DEFENDER1) )
					{
						bot.ChangeSpawnPoint(5);	//Lower Warehouse
					}
				}
			}
			else
			{
				if ( bot.HasRole(ROLE.ATTACKER) or bot.HasRole(ROLE.ATTACKER2) )
				{
					bot.ChangeSpawnPoint(2);	//Villa
				}

				if ( bot.HasRole(ROLE.ATTACKER1) or bot.HasRole(ROLE.ATTACKER3) )
				{
					if ( Map.Allied_CP )
					{
						bot.ChangeSpawnPoint(1);	//CP Spawn
					}
					else
					{
						bot.ChangeSpawnPoint(2);	//Villa
					}
				}
			}
		}

		SetAvailableMapGoals( TEAM.AXIS, false, {
			"DEFEND_Axis_MainEntrance_.*",
			"CHECKPOINT_roadbunker",
		});

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

		if ( Map.generator_intact )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_MainRoad_.*" );
		}

		SetAvailableMapGoals( TEAM.AXIS, true, {
			"BUILD_Bunker_MG_Nest",
			"REPAIRMG42_Bunker_MG_Nest",
			"MOUNTMG42_Bunker_MG_Nest",
			".*_Axis_ForwardSpawn_.*",
		});

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

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

	Forward_Bunker_Allies_Captured = function( trigger )
	{

		Map.Forward_Bunker_Allies = true;
		Map.Forward_Bunker_Axis = false;

		foreach ( id and bot in BotTable )
		{
			if ( bot.GetTeam(TEAM.AXIS) )
			{
				if ( Map.start )
				{
					if ( bot.HasRole(ROLE.DEFENDER1) )
					{
						bot.ChangeSpawnPoint(5);	//Lower Warehouse
					}
					if ( bot.HasRole(ROLE.DEFENDER) or bot.HasRole(ROLE.DEFENDER2) or bot.HasRole(ROLE.DEFENDER3) )
					{
						bot.ChangeSpawnPoint(6);	//Road Hut
					}
				}
				if ( !Map.Outer_Side_Entrance and Map.Inner_Side_Entrance )
				{
					if ( bot.HasRole(ROLE.DEFENDER1) )
					{
						bot.ChangeSpawnPoint(5);	//Lower Warehouse
					}
					if ( bot.HasRole(ROLE.DEFENDER) or bot.HasRole(ROLE.DEFENDER2) or bot.HasRole(ROLE.DEFENDER3) )
					{
						bot.ChangeSpawnPoint(6);	//Road Hut
					}
				}
				if ( !Map.Outer_Side_Entrance and !Map.Inner_Side_Entrance )
				{
					if ( bot.HasRole(ROLE.DEFENDER2) or bot.HasRole(ROLE.DEFENDER3) )
					{
						bot.ChangeSpawnPoint(6);	//Road Hut
					}
					if ( bot.HasRole(ROLE.DEFENDER) or bot.HasRole(ROLE.DEFENDER1) )
					{
						bot.ChangeSpawnPoint(5);	//Lower Warehouse
					}
				}
			}
			else
			{
				if ( bot.HasRole(ROLE.ATTACKER) or bot.HasRole(ROLE.ATTACKER2) )
				{
					bot.ChangeSpawnPoint(3);	//Forward Bunker
				}

				if ( bot.HasRole(ROLE.ATTACKER1) or bot.HasRole(ROLE.ATTACKER3) )
				{
					if ( Map.Allied_CP )
					{
						bot.ChangeSpawnPoint(1);	//CP Spawn
					}
					else
					{
						bot.ChangeSpawnPoint(3);	//Forward Bunker
					}
				}
			}
		}

		SetAvailableMapGoals( TEAM.AXIS, false, {
			"DEFEND_Axis_MainRoad_.*",
			"BUILD_Bunker_MG_Nest",
			"REPAIRMG42_Bunker_MG_Nest",
			"MOUNTMG42_Bunker_MG_Nest",
			".*_Axis_ForwardSpawn_.*",
		});

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

		if ( Map.generator_intact )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_MainEntrance_.*" );
		}

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

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

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

	Main_Entrance_Planted = function( trigger )
	{

		Map.Main_Entrance_Dyno += 1;

		if ( Map.Outer_Side_Entrance and Map.Inner_Side_Entrance )
		{
			Util.SetRoleForGoals( "DEFUSE_Main_Entrance_.*", { ROLE.DEFENDER, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
		}
		else
		{
			Util.SetRoleForGoals( "DEFUSE_Main_Entrance_.*", { ROLE.DEFENDER2, ROLE.DEFENDER3 } );
		}

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

	Main_Entrance_Defused = function( trigger )
	{

		Map.Main_Entrance_Dyno -= 1;

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

	Main_Entrance_Destroyed = function( trigger )
	{

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

		Map.Main_Entrance_Dyno = 0;
		Map.Main_Entrance = false;
		Map.Forward_Bunker_Allies = true;
		Map.Forward_Bunker_Axis = false;
		Map.start = false;

		foreach ( id and bot in BotTable )
		{
			if ( bot.GetTeam(TEAM.AXIS) )
			{
				if ( bot.HasRole(ROLE.DEFENDER2) )
				{
					bot.ChangeSpawnPoint(4);	//Forward Hut
				}
				if ( bot.HasRole(ROLE.DEFENDER) or bot.HasRole(ROLE.DEFENDER1) or bot.HasRole(ROLE.DEFENDER3) )
				{
					bot.ChangeSpawnPoint(5);	//Lower Warehouse
				}
			}
		}

		Util.ClearRoleForGoals( "MOUNTMG42_CP", ROLE.DEFENDER1 );
		Util.ClearRoleForGoals( "REPAIRMG42_CP", ROLE.DEFENDER1 );

		SetAvailableMapGoals( 0, false, "CHECKPOINT_roadbunker" );

		SetAvailableMapGoals( TEAM.AXIS, false, {
			".*_Axis_MainRoad_.*",
			".*_Axis_ForwardSpawn_.*",
			".*_Axis_AboveTunnel_.*",
			".*_Axis_Road_MG_Nest",
			".*_Bunker_MG_Nest",
			".*_Axis_MainEntrance_.*",
		});

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

		SetAvailableMapGoals( TEAM.AXIS, true, {
			"AMMOCAB_.*",
			"HEALTHCAB_.*",
		});

		if ( !Map.Allied_CP and !Map.Axis_CP)
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Command_Post" );
		}

		if ( !Map.Axis_Watchtower_MG_Nest )
		{
			if ( GetModName() == "nitmod" )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Axis_WatchtoMG_Nest" );
			}
			else
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Axis_Watchtower_MG_Nest" );
			}
		}

		if ( !Map.Tank )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Tank" );
		}
		else
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "MOUNT_Tank" );
		}

		if ( !Map.West_RadarParts_Taken )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_WestRadarParts_.*" );
		}

		if ( Map.South_Radar_Station )
		{
			Util.ClearRoleForGoals( ".*_Axis_WestRadarParts_.*", ROLE.DEFENDER3 );

			Util.SetRoleForGoals( ".*_Axis_SouthRadarStation_.*", ROLE.DEFENDER3 );

			if ( Map.West_Radar_Parts and ( Map.East_Radar_Parts or Map.North_Radar_Station ) )
			{
				Util.SetRoleForGoals( ".*_Axis_WestRadarParts_.*", ROLE.DEFENDER2 );
			}
			if ( Map.West_Radar_Parts and !Map.East_Radar_Parts and !Map.North_Radar_Station )
			{
				Util.SetRoleForGoals( ".*_Axis_WestRadarParts_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2 } );
			}
		}
		else
		{
			if ( Map.West_Radar_Parts and ( Map.East_Radar_Parts or Map.North_Radar_Station ) )
			{
				Util.SetRoleForGoals( ".*_Axis_WestRadarParts_.*", { ROLE.DEFENDER2, ROLE.DEFENDER3 } );
			}
			if ( Map.West_Radar_Parts and !Map.East_Radar_Parts and !Map.North_Radar_Station )
			{
				Util.SetRoleForGoals( ".*_Axis_WestRadarParts_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
			}
		}

		if ( !Map.East_RadarParts_Taken )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, {
				"DEFEND_Axis_EastRadarParts_.*",
				"PLANTMINE_Axis_EastRadarParts_.*",
			});
		}

		if ( Map.West_Radar_Parts or Map.South_Radar_Station )
		{
			Util.SetRoleForGoals( "PLANTMINE_Axis_Passage_.*", { ROLE.DEFENDER2, ROLE.DEFENDER3 } );

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

			if ( (GetModName() == "nitmod") or (GetModName() == "silEnT" ))
			{
				Util.SetRoleForGoals( "TRIPMINE_Axis_Wall_WRP_.*", { ROLE.DEFENDER2, ROLE.DEFENDER3 } );

				SetAvailableMapGoals( TEAM.AXIS, true, "TRIPMINE_Axis_Wall_WRP_.*" );
				Util.MapDebugPrint( "^3Nitmod or Silent" );
			}
		}

		if ( !Map.East_RadarParts_Taken and Map.North_Radar_Station )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "MOBILEMG42_Axis_East_North_Radar_15" );
		}

		if ( Map.East_RadarParts_Taken and  Map.North_Radar_Station )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "MOBILEMG42_Axis_NorthRadarStation_04" );
		}

		if ( !Map.East_RadarParts_Taken and  !Map.North_Radar_Station )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "MOBILEMG42_Axis_OnlyEastRadarParts_01" );
		}

		if ( Map.North_Radar_Station )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_NorthRadarStation_.*" );
		}

		if ( !Map.East_RadarParts_Taken and !Map.Outer_Side_Entrance and !Map.Inner_Side_Entrance )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, {
				"CALLARTILLERY_Axis_EastRadarParts_.*",
				"ARTILLERY_S_Axis_EastRadarParts_.*",
			});
		}

		if ( Map.South_Radar_Station )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_SouthRadarStation_.*" );
		}

		if ( Map.Outer_Side_Entrance )
		{
			SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_SideEntrance_.*" );

			if ( Map.Inner_Side_Entrance )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_SideZone_.*" );
			}
		}

		if ( !Map.Outer_Side_Entrance and Map.Inner_Side_Entrance )
		{
			SetAvailableMapGoals( TEAM.AXIS, false, {
				".*_Axis_SideEntrance_.*",
				"DEFEND_Axis_SideInnerDoor_.*",
			});

			if ( !Map.Allied_CP )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, {
					"MOUNTMG42_CP",
					"REPAIRMG42_CP",
					".*_Axis_SideZone_.*",
				});
			}
			else
			{
				SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_SideZone_.*" );
			}
		}

		if ( !Map.Outer_Side_Entrance and !Map.Inner_Side_Entrance )
		{
			SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_SideEntrance_.*" );

			if ( !Map.Allied_CP )
			{
				SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_SideZone_.*" );

				SetAvailableMapGoals( TEAM.AXIS, true, {
					"MOUNTMG42_CP",
					"REPAIRMG42_CP",
					".*_Axis_SideInnerPlace_.*",
					"PLANTMINE_Axis_SideZone_.*",
				});
			}
			else
			{
				SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_SideZone_.*" );
			}
		}

		if ( Map.Tank_At_Position )
		{
			if ( !Map.Outer_Side_Entrance and !Map.Inner_Side_Entrance )
			{
				ETUtil.SetAimModeForMount("MOUNT_Tank", { Vec3(-1487.413, -791.334, 1277.209), Vec3(2662.479, -1638.656, 1725.899) });
			}
			if ( Map.Outer_Side_Entrance or Map.Inner_Side_Entrance )
			{
				ETUtil.SetAimModeForMount("MOUNT_Tank", Vec3(-1487.413, -791.334, 1277.209));
			}
		}

		sleep(1.8);

		SetAvailableMapGoals( TEAM.ALLIES, false, {
			".*_Allies_MainEntrance_.*",
			"DEFEND_Allies_ForwardSpawn_.*",
		});

		//attacker Flag West radar parts	=> Bunker spawn
		//attacker1 Flag East radar parts	=> CP spawn
		//attacker2 Attack + Plant South radar station	=> Bunker spawn
		//attacker3 Attack + Plant North radar station	=> CP spawn

		foreach ( id and bot in BotTable )
		{
			if ( bot.GetTeam(TEAM.ALLIES) )
			{
				if ( bot.HasRole(ROLE.ATTACKER1) or bot.HasRole(ROLE.ATTACKER3) )
				{
					if ( Map.Allied_CP )
					{
						bot.ChangeSpawnPoint(1);	//CP Spawn
					}
					else
					{
						bot.ChangeSpawnPoint(3);	//Forward Bunker
					}
				}
				if ( bot.HasRole(ROLE.ATTACKER) or bot.HasRole(ROLE.ATTACKER2) )
				{
					bot.ChangeSpawnPoint(3);	//Forward Bunker
				}
			}
		}

		if ( !Map.Allied_CP and !Map.Axis_CP)
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Command_Post" );
		}

		if ( Map.Axis_CP)
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Command_Post" );
		}

		if ( Map.Inner_Side_Entrance )
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_InnerSideEntrance_1" );
		}
		else
		{
			if ( Map.Outer_Side_Entrance )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_OuterSideEntrance_1" );
			}
		}

		if ( !Map.East_RadarParts_Taken )
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, "FLAG_radarbox2" );
		}

		if ( Map.Inner_Side_Entrance or Map.Outer_Side_Entrance )
		{
			if ( Map.version == 130 )
			{
				if ( Map.wooden_barrier_intact )
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, "GRENADE_WoodenBarrier_.*" );
				}
			}
			if ( Map.North_Radar_Station )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, {
					"PLANT_North_Radar_Station",
					"ATTACK_Allies_NorthRadarStation_.*",
				});
			}
		}

		if ( !Map.West_RadarParts_Taken )
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, "FLAG_radarbox1" );
		}

		if ( Map.South_Radar_Station )
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, {
				"PLANT_South_Radar_Station",
				"ATTACK_Allies_SouthRadarStation_.*",
			});
		}

		SetAvailableMapGoals( TEAM.ALLIES, true, {
			"AMMOCAB_.*",
			"HEALTHCAB_.*",
		});

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

	Entrance_Destroyed = function( trigger )
	{

		if ( Map.Outer_Side_Entrance )
		{
			foreach ( id and bot in BotTable )
			{
				if ( bot.GetTeam(TEAM.AXIS) )
				{
					if ( bot.HasRole(ROLE.DEFENDER1) )
					{
						while ( bot.GetReinforceTime() > 2 )
						{
							yield();
						}

						if ( Map.Outer_Side_Entrance )
						{
							bot.ExecCommand("kill");
						}
					}
				}
			}

			if ( Map.Outer_Side_Entrance )
			{
				SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_SideEntrance_.*" );
			}
		}

		Util.MapDebugPrint( "^5Entrance_Destroyed" );

		if ( Map.Outer_Side_Entrance or Map.Inner_Side_Entrance )	//prevention of duplicity
		{
			while (1)
			{
				if (GetGoal("FLAG_radarbox1_dropped") != null or GetGoal("FLAGRETURN_radarbox1_dropped") != null)
				{
					//setting roles for (Flag.*_dropped) Allies and Axis - goals: "FLAG_radarbox1_dropped" and "FLAGRETURN_radarbox1_dropped"
					if ( Map.radarbox1_dropped == 0 )
					{
						Util.SetRoleForGoals( "FLAG.*_radarbox1.*", { ROLE.ATTACKER, ROLE.DEFENDER2 } );
						Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 1: ROLE.ATTACKER, ROLE.DEFENDER2" );

						if ( !Map.South_Radar_Station )
						{
							if ( Map.West_Radar_Parts )
							{
								Util.SetRoleForGoals( "FLAG.*_radarbox1.*", { ROLE.ATTACKER, ROLE.ATTACKER2, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
								Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 1: ROLE.ATTACKER, ROLE.ATTACKER2, ROLE.DEFENDER2, ROLE.DEFENDER3" );
							}
						}

						if ( !Map.North_Radar_Station )
						{
							if ( !Map.East_Radar_Parts )
							{
								if ( Map.West_Radar_Parts and Map.South_Radar_Station )
								{
									Util.SetRoleForGoals( "FLAG.*_radarbox1.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2 } );
									Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 1: ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2" );
								}

								if ( Map.West_Radar_Parts and !Map.South_Radar_Station )
								{
									Util.SetRoleForGoals( "FLAG.*_radarbox1.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
									Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 1: ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3" );
								}
							}
						}

						if ( !Map.East_Radar_Parts )
						{
							if ( !Map.North_Radar_Station )
							{
								if ( Map.West_Radar_Parts and Map.South_Radar_Station )
								{
									Util.SetRoleForGoals( "FLAG.*_radarbox1.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2 } );
									Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 1: ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2" );
								}

								if ( Map.West_Radar_Parts and !Map.South_Radar_Station )
								{
									Util.SetRoleForGoals( "FLAG.*_radarbox1.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
									Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 1: ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3" );
								}
							}
						}
					}

					Map.radarbox1_dropped = 1;
				}
				if (GetGoal("FLAG_radarbox2_dropped") != null or GetGoal("FLAGRETURN_radarbox2_dropped") != null)
				{
					//setting roles for (Flag.*_dropped) Allies and Axis - goals: "FLAG_radarbox2_dropped" and "FLAGRETURN_radarbox2_dropped"
					if ( Map.radarbox2_dropped == 0 )
					{
						Util.SetRoleForGoals( "FLAG.*_radarbox2.*", { ROLE.ATTACKER1, ROLE.DEFENDER1 } );
						Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 2: ROLE.ATTACKER1, ROLE.DEFENDER1" );

						if ( !Map.North_Radar_Station )
						{
							if ( Map.East_Radar_Parts )
							{
								Util.SetRoleForGoals( "FLAG.*_radarbox2.*", { ROLE.ATTACKER1, ROLE.ATTACKER3, ROLE.DEFENDER, ROLE.DEFENDER1 } );
								Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 2: ROLE.ATTACKER1, ROLE.ATTACKER3, ROLE.DEFENDER, ROLE.DEFENDER1" );
							}
						}

						if ( !Map.South_Radar_Station )
						{
							if ( !Map.West_Radar_Parts )
							{
								if ( Map.North_Radar_Station and Map.East_Radar_Parts )
								{
									Util.SetRoleForGoals( "FLAG.*_radarbox2.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
									Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 2: ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3" );
								}

								if ( Map.East_Radar_Parts and !Map.North_Radar_Station )
								{
									Util.SetRoleForGoals( "FLAG.*_radarbox2.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
									Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 2: ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3" );
								}
							}
						}

						if ( !Map.West_Radar_Parts )
						{
							if ( !Map.South_Radar_Station )
							{
								if ( Map.North_Radar_Station and Map.East_Radar_Parts )
								{
									Util.SetRoleForGoals( "FLAG.*_radarbox2.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
									Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 2: ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3" );
								}

								if ( Map.East_Radar_Parts and !Map.North_Radar_Station )
								{
									Util.SetRoleForGoals( "FLAG.*_radarbox2.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
									Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 2: ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3" );
								}
							}
						}
					}

					Map.radarbox2_dropped = 1;
				}

				yield();
			}
		}
	},

	Outer_Side_Entrance_Planted = function( trigger )
	{

		Map.Outer_Side_Entrance_Dyno += 1;

		if ( !Map.Main_Entrance )
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Outer_Side_Entrance_.*" );
		}
		else
		{
			Util.SetRoleForGoals( "DEFUSE_Outer_Side_Entrance_.*", { ROLE.DEFENDER, ROLE.DEFENDER1 } );
		}

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

	Outer_Side_Entrance_Defused = function( trigger )
	{

		Map.Outer_Side_Entrance_Dyno -= 1;

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

	Outer_Side_Entrance_Destroyed = function( trigger )
	{

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

		Map.Outer_Side_Entrance_Dyno = 0;
		Map.Outer_Side_Entrance = false;
		Map.start = false;

		SetAvailableMapGoals( TEAM.ALLIES, false, {
			"PLANT_OuterSideEntrance_1",
			"PLANT_Outer_Side_Entrance",
		});

		if ( Map.Main_Entrance )
		{
			if ( Map.Inner_Side_Entrance )
			{
				foreach ( id and bot in BotTable )
				{
					if ( bot.GetTeam(TEAM.AXIS) )
					{
						if ( bot.HasRole(ROLE.DEFENDER1) )
						{
							bot.ChangeSpawnPoint(5);	//Lower Warehouse
						}
					}
				}

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

				if ( !Map.Allied_CP and !Map.Axis_CP)
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Command_Post" );
				}

				SetAvailableMapGoals( TEAM.AXIS, true, {
					"MOUNTMG42_CP",
					"REPAIRMG42_CP",
					"DEFEND_Axis_SideInnerDoor_.*",
					"PLANTMINE_Axis_SideZone_.*",
				});

				sleep(1.8);

				if ( Map.Inner_Side_Entrance )
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Inner_Side_Entrance" );
				}

				Util.MapDebugPrint( "^5Outer_Side_Entrance_Destroyed" );
			}
			else
			{
				Util.ClearRoleForGoals( ".*_Axis_MainRoad_.*", ROLE.DEFENDER );
				Util.ClearRoleForGoals( "CHECKPOINT_roadbunker", ROLE.DEFENDER );
				Util.ClearRoleForGoals( "BUILD_Axis_Road_MG_Nest", ROLE.DEFENDER );
				Util.ClearRoleForGoals( "MOUNTMG42_Axis_Road_MG_Nest", ROLE.DEFENDER );
				Util.ClearRoleForGoals( "REPAIRMG42_Axis_Road_MG_Nest", ROLE.DEFENDER );
				Util.ClearRoleForGoals( "MOUNTMG42_CP", ROLE.DEFENDER1 );
				Util.ClearRoleForGoals( "REPAIRMG42_CP", ROLE.DEFENDER1 );
				Util.ClearRoleForGoals( "DEFEND_Axis_SideEntrance_.*", ROLE.DEFENDER1 );

				foreach ( id and bot in BotTable )
				{
					if ( bot.GetTeam(TEAM.AXIS) )
					{
						if ( bot.HasRole(ROLE.DEFENDER) or bot.HasRole(ROLE.DEFENDER1) )
						{
							bot.ChangeSpawnPoint(5);	//Lower Warehouse
						}
					}
				}

				SetAvailableMapGoals( TEAM.AXIS, false, {
					".*_Axis_SideEntrance_.*",
					".*_Axis_SideInnerDoor_.*",
				});

				if ( !Map.Tank )
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Tank" );
				}
				else
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "MOUNT_Tank" );
				}

				if ( !Map.Allied_CP and !Map.Axis_CP)
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Command_Post" );
				}

				if ( !Map.Allied_CP )
				{
					SetAvailableMapGoals( TEAM.AXIS, true, {
						"MOUNTMG42_CP",
						"REPAIRMG42_CP",
						".*_Axis_SideInnerPlace_.*",
						"PLANTMINE_Axis_SideZone_.*",
					});

					if ( GetModName() == "nitmod" or GetModName() == "silEnT" )
					{
						SetAvailableMapGoals( TEAM.AXIS, true, "TRIPMINE_Axis_Wall_CP_.*" );
					}
				}
				else
				{
					SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_SideZone_.*" );
				}

				if ( !Map.East_RadarParts_Taken )
				{
					SetAvailableMapGoals( TEAM.AXIS, true, {
						"CALLARTILLERY_Axis_EastRadarParts_.*",
						"ARTILLERY_S_Axis_EastRadarParts_.*",
						"DEFEND_Axis_EastRadarParts_.*",
						"PLANTMINE_Axis_EastRadarParts_.*",
					});
				}

				if ( !Map.East_RadarParts_Taken and  Map.North_Radar_Station )
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "MOBILEMG42_Axis_East_North_Radar_15" );
				}

				if ( Map.East_RadarParts_Taken and  Map.North_Radar_Station )
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "MOBILEMG42_Axis_NorthRadarStation_04" );
				}

				if ( !Map.East_RadarParts_Taken and  !Map.North_Radar_Station )
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "MOBILEMG42_Axis_OnlyEastRadarParts_01" );
				}

				if ( Map.North_Radar_Station )
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_NorthRadarStation_.*" );
				}

				if ( Map.Tank_At_Position )
				{
					ETUtil.SetAimModeForMount("MOUNT_Tank", Vec3(2662.479, -1638.656, 1725.899));
				}

				sleep(1.8);

				Util.ClearRoleForGoals( "CHECKPOINT_roadbunker", ROLE.ATTACKER1 );
				Util.ClearRoleForGoals( ".*_Allies_ForwardSpawn_.*", ROLE.ATTACKER1 );

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

				if ( Map.Main_Entrance )
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Main__Entrance1" );
				}

				if ( !Map.Allied_CP and !Map.Axis_CP)
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Command_Post" );
				}

				if ( Map.Axis_CP)
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Command_Post" );
				}

				if ( Map.version == 130 )
				{
					if ( Map.wooden_barrier_intact )
					{
						SetAvailableMapGoals( TEAM.ALLIES, true, "GRENADE_WoodenBarrier_.*" );
					}
				}

				if ( !Map.East_RadarParts_Taken )
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, "FLAG_radarbox2" );
				}

				if ( Map.North_Radar_Station )
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, {
						"PLANT_North_Radar_Station",
						"ATTACK_Allies_NorthRadarStation_.*",
					});
				}

				SetAvailableMapGoals( TEAM.ALLIES, true, {
					"AMMOCAB_objhacab3",
					"HEALTHCAB_objhacab4",
				});

				Util.MapDebugPrint( "^5Outer_Side_Entrance_Destroyed" );

				while (1)
				{
					if (GetGoal("FLAG_radarbox1_dropped") != null or GetGoal("FLAGRETURN_radarbox1_dropped") != null)
					{
						//setting roles for (Flag.*_dropped) Allies and Axis - goals: "FLAG_radarbox1_dropped" and "FLAGRETURN_radarbox1_dropped"
						if ( Map.radarbox1_dropped == 0 )
						{
							Util.SetRoleForGoals( "FLAG.*_radarbox1.*", { ROLE.ATTACKER, ROLE.DEFENDER2 } );
							Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 1: ROLE.ATTACKER, ROLE.DEFENDER2" );

							if ( !Map.South_Radar_Station )
							{
								if ( Map.West_Radar_Parts )
								{
									Util.SetRoleForGoals( "FLAG.*_radarbox1.*", { ROLE.ATTACKER, ROLE.ATTACKER2, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
									Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 1: ROLE.ATTACKER, ROLE.ATTACKER2, ROLE.DEFENDER2, ROLE.DEFENDER3" );
								}
							}

							if ( !Map.North_Radar_Station )
							{
								if ( !Map.East_Radar_Parts )
								{
									if ( Map.West_Radar_Parts and Map.South_Radar_Station )
									{
										Util.SetRoleForGoals( "FLAG.*_radarbox1.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2 } );
										Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 1: ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2" );
									}

									if ( Map.West_Radar_Parts and !Map.South_Radar_Station )
									{
										Util.SetRoleForGoals( "FLAG.*_radarbox1.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
										Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 1: ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3" );
									}
								}
							}

							if ( !Map.East_Radar_Parts )
							{
								if ( !Map.North_Radar_Station )
								{
									if ( Map.West_Radar_Parts and Map.South_Radar_Station )
									{
										Util.SetRoleForGoals( "FLAG.*_radarbox1.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2 } );
										Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 1: ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2" );
									}

									if ( Map.West_Radar_Parts and !Map.South_Radar_Station )
									{
										Util.SetRoleForGoals( "FLAG.*_radarbox1.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
										Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 1: ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3" );
									}
								}
							}
						}

						Map.radarbox1_dropped = 1;
					}
					if (GetGoal("FLAG_radarbox2_dropped") != null or GetGoal("FLAGRETURN_radarbox2_dropped") != null)
					{
						//setting roles for (Flag.*_dropped) Allies and Axis - goals: "FLAG_radarbox2_dropped" and "FLAGRETURN_radarbox2_dropped"
						if ( Map.radarbox2_dropped == 0 )
						{
							Util.SetRoleForGoals( "FLAG.*_radarbox2.*", { ROLE.ATTACKER1, ROLE.DEFENDER1 } );
							Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 2: ROLE.ATTACKER1, ROLE.DEFENDER1" );

							if ( !Map.North_Radar_Station )
							{
								if ( Map.East_Radar_Parts )
								{
									Util.SetRoleForGoals( "FLAG.*_radarbox2.*", { ROLE.ATTACKER1, ROLE.ATTACKER3, ROLE.DEFENDER, ROLE.DEFENDER1 } );
									Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 2: ROLE.ATTACKER1, ROLE.ATTACKER3, ROLE.DEFENDER, ROLE.DEFENDER1" );
								}
							}

							if ( !Map.South_Radar_Station )
							{
								if ( !Map.West_Radar_Parts )
								{
									if ( Map.North_Radar_Station and Map.East_Radar_Parts )
									{
										Util.SetRoleForGoals( "FLAG.*_radarbox2.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
										Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 2: ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3" );
									}

									if ( Map.East_Radar_Parts and !Map.North_Radar_Station )
									{
										Util.SetRoleForGoals( "FLAG.*_radarbox2.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
										Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 2: ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3" );
									}
								}
							}

							if ( !Map.West_Radar_Parts )
							{
								if ( !Map.South_Radar_Station )
								{
									if ( Map.North_Radar_Station and Map.East_Radar_Parts )
									{
										Util.SetRoleForGoals( "FLAG.*_radarbox2.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
										Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 2: ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3" );
									}

									if ( Map.East_Radar_Parts and !Map.North_Radar_Station )
									{
										Util.SetRoleForGoals( "FLAG.*_radarbox2.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
										Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 2: ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3" );
									}
								}
							}
						}

						Map.radarbox2_dropped = 1;
					}

					yield();
				}
			}
		}
		else
		{
			SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_SideEntrance_.*" );

			if ( Map.Inner_Side_Entrance )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Inner_Side_Entrance" );

				if ( !Map.Allied_CP )
				{
					SetAvailableMapGoals( TEAM.AXIS, true, {
						"MOUNTMG42_CP",
						"REPAIRMG42_CP",
						".*_Axis_SideZone_.*",
					});
				}
				else
				{
					SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_SideZone_.*" );
				}

				Util.MapDebugPrint( "^5Outer_Side_Entrance_Destroyed" );
			}
			else
			{
				SetAvailableMapGoals( TEAM.ALLIES, false, ".*_Allies_SideEntrance_.*" );

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

				if ( Map.version == 130 )
				{
					if ( Map.wooden_barrier_intact )
					{
						SetAvailableMapGoals( TEAM.ALLIES, true, "GRENADE_WoodenBarrier_.*" );
					}
				}

				if ( !Map.Allied_CP )
				{
					SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_SideZone_.*" );

					SetAvailableMapGoals( TEAM.AXIS, true, {
						"MOUNTMG42_CP",
						"REPAIRMG42_CP",
						".*_Axis_SideInnerPlace_.*",
						"PLANTMINE_Axis_SideZone_.*",
					});

					if ( GetModName() == "nitmod" or GetModName() == "silEnT" )
					{
						SetAvailableMapGoals( TEAM.AXIS, true, "TRIPMINE_Axis_Wall_CP_.*" );
					}
				}
				else
				{
					SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_SideZone_.*" );
				}

				if ( !Map.East_RadarParts_Taken )
				{
					SetAvailableMapGoals( TEAM.AXIS, true, {
						"CALLARTILLERY_Axis_EastRadarParts_.*",
						"ARTILLERY_S_Axis_EastRadarParts_.*",
					});
				}

				if ( Map.North_Radar_Station )
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, {
						"PLANT_North_Radar_Station",
						"ATTACK_Allies_NorthRadarStation_.*",
					});
				}

				if ( Map.Tank_At_Position )
				{
					ETUtil.SetAimModeForMount("MOUNT_Tank", { Vec3(-1487.413, -791.334, 1277.209), Vec3(2662.479, -1638.656, 1725.899) });
				}

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

	Inner_Side_Entrance_Planted = function( trigger )
	{

		Map.Inner_Side_Entrance_Dyno += 1;

		if ( !Map.Main_Entrance )
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Inner_Side_Entrance_.*" );
		}
		else
		{
			Util.SetRoleForGoals( "DEFUSE_Inner_Side_Entrance_.*", { ROLE.DEFENDER, ROLE.DEFENDER1 } );
		}

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

	Inner_Side_Entrance_Defused = function( trigger )
	{

		Map.Inner_Side_Entrance_Dyno -= 1;

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

	Inner_Side_Entrance_Destroyed = function( trigger )
	{

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

		Map.Inner_Side_Entrance_Dyno = 0;
		Map.Inner_Side_Entrance = false;

		SetAvailableMapGoals( TEAM.ALLIES, false, {
			"PLANT_Inner_Side_Entrance",
			"PLANT_InnerSideEntrance_1",
		});

		if ( Map.Main_Entrance and !Map.Outer_Side_Entrance )
		{
			Util.ClearRoleForGoals( ".*_Axis_MainRoad_.*", ROLE.DEFENDER );
			Util.ClearRoleForGoals( "BUILD_Axis_Road_MG_Nest", ROLE.DEFENDER );
			Util.ClearRoleForGoals( "MOUNTMG42_Axis_Road_MG_Nest", ROLE.DEFENDER );
			Util.ClearRoleForGoals( "REPAIRMG42_Axis_Road_MG_Nest", ROLE.DEFENDER );
			Util.ClearRoleForGoals( "MOUNTMG42_CP", ROLE.DEFENDER1 );
			Util.ClearRoleForGoals( "REPAIRMG42_CP", ROLE.DEFENDER1 );
			Util.ClearRoleForGoals( "DEFEND_Axis_SideEntrance_.*", ROLE.DEFENDER1 );

			foreach ( id and bot in BotTable )
			{
				if ( bot.GetTeam(TEAM.AXIS) )
				{
					if ( bot.HasRole(ROLE.DEFENDER) or bot.HasRole(ROLE.DEFENDER1) )
					{
						bot.ChangeSpawnPoint(5);	//Lower Warehouse
					}
				}
			}

			SetAvailableMapGoals( TEAM.AXIS, false, {
				".*_Axis_SideEntrance_.*",
				".*_Axis_SideInnerDoor_.*",
			});

			if ( !Map.Tank )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Tank" );
			}
			else
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "MOUNT_Tank" );
			}

			if ( !Map.Allied_CP and !Map.Axis_CP)
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Command_Post" );
			}

			if ( !Map.Allied_CP )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, {
					"MOUNTMG42_CP",
					"REPAIRMG42_CP",
					".*_Axis_SideInnerPlace_.*",
					"PLANTMINE_Axis_SideZone_.*",
				});

				if ( GetModName() == "nitmod" or GetModName() == "silEnT" )
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "TRIPMINE_Axis_Wall_CP_.*" );
				}
			}
			else
			{
				SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_SideZone_.*" );
			}

			if ( !Map.East_RadarParts_Taken )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, {
					"CALLARTILLERY_Axis_EastRadarParts_.*",
					"ARTILLERY_S_Axis_EastRadarParts_.*",
					"DEFEND_Axis_EastRadarParts_.*",
					"PLANTMINE_Axis_EastRadarParts_.*",
				});
			}

			if ( !Map.East_RadarParts_Taken and  Map.North_Radar_Station )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "MOBILEMG42_Axis_East_North_Radar_15" );
			}

			if ( Map.East_RadarParts_Taken and  Map.North_Radar_Station )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "MOBILEMG42_Axis_NorthRadarStation_04" );
			}

			if ( !Map.East_RadarParts_Taken and  !Map.North_Radar_Station )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "MOBILEMG42_Axis_OnlyEastRadarParts_01" );
			}

			if ( Map.North_Radar_Station )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_NorthRadarStation_.*" );
			}

			if ( Map.Tank_At_Position )
			{
				ETUtil.SetAimModeForMount("MOUNT_Tank", Vec3(2662.479, -1638.656, 1725.899));
			}

			sleep(1.8);

			Util.ClearRoleForGoals( "CHECKPOINT_roadbunker", ROLE.ATTACKER1 );
			Util.ClearRoleForGoals( ".*_Allies_ForwardSpawn_.*", ROLE.ATTACKER1 );

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

			if ( Map.Main_Entrance )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Main__Entrance1" );
			}

			if ( !Map.Allied_CP and !Map.Axis_CP)
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Command_Post" );
			}

			if ( Map.Axis_CP)
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Command_Post" );
			}

			if ( Map.version == 130 )
			{
				if ( Map.wooden_barrier_intact )
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, "GRENADE_WoodenBarrier_.*" );
				}
			}

			if ( !Map.East_RadarParts_Taken )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "FLAG_radarbox2" );
			}

			if ( Map.North_Radar_Station )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, {
					"PLANT_North_Radar_Station",
					"ATTACK_Allies_NorthRadarStation_.*",
				});
			}

			SetAvailableMapGoals( TEAM.ALLIES, true, {
				"AMMOCAB_objhacab3",
				"HEALTHCAB_objhacab4",
			});

			Util.MapDebugPrint( "^5Inner_Side_Entrance_Destroyed" );

			while (1)
			{
				if (GetGoal("FLAG_radarbox1_dropped") != null or GetGoal("FLAGRETURN_radarbox1_dropped") != null)
				{
					//setting roles for (Flag.*_dropped) Allies and Axis - goals: "FLAG_radarbox1_dropped" and "FLAGRETURN_radarbox1_dropped"
					if ( Map.radarbox1_dropped == 0 )
					{
						Util.SetRoleForGoals( "FLAG.*_radarbox1.*", { ROLE.ATTACKER, ROLE.DEFENDER2 } );
						Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 1: ROLE.ATTACKER, ROLE.DEFENDER2" );

						if ( !Map.South_Radar_Station )
						{
							if ( Map.West_Radar_Parts )
							{
								Util.SetRoleForGoals( "FLAG.*_radarbox1.*", { ROLE.ATTACKER, ROLE.ATTACKER2, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
								Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 1: ROLE.ATTACKER, ROLE.ATTACKER2, ROLE.DEFENDER2, ROLE.DEFENDER3" );
							}
						}

						if ( !Map.North_Radar_Station )
						{
							if ( !Map.East_Radar_Parts )
							{
								if ( Map.West_Radar_Parts and Map.South_Radar_Station )
								{
									Util.SetRoleForGoals( "FLAG.*_radarbox1.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2 } );
									Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 1: ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2" );
								}

								if ( Map.West_Radar_Parts and !Map.South_Radar_Station )
								{
									Util.SetRoleForGoals( "FLAG.*_radarbox1.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
									Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 1: ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3" );
								}
							}
						}

						if ( !Map.East_Radar_Parts )
						{
							if ( !Map.North_Radar_Station )
							{
								if ( Map.West_Radar_Parts and Map.South_Radar_Station )
								{
									Util.SetRoleForGoals( "FLAG.*_radarbox1.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2 } );
									Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 1: ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2" );
								}

								if ( Map.West_Radar_Parts and !Map.South_Radar_Station )
								{
									Util.SetRoleForGoals( "FLAG.*_radarbox1.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
									Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 1: ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3" );
								}
							}
						}
					}

					Map.radarbox1_dropped = 1;
				}
				if (GetGoal("FLAG_radarbox2_dropped") != null or GetGoal("FLAGRETURN_radarbox2_dropped") != null)
				{
					//setting roles for (Flag.*_dropped) Allies and Axis - goals: "FLAG_radarbox2_dropped" and "FLAGRETURN_radarbox2_dropped"
					if ( Map.radarbox2_dropped == 0 )
					{
						Util.SetRoleForGoals( "FLAG.*_radarbox2.*", { ROLE.ATTACKER1, ROLE.DEFENDER1 } );
						Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 2: ROLE.ATTACKER1, ROLE.DEFENDER1" );

						if ( !Map.North_Radar_Station )
						{
							if ( Map.East_Radar_Parts )
							{
								Util.SetRoleForGoals( "FLAG.*_radarbox2.*", { ROLE.ATTACKER1, ROLE.ATTACKER3, ROLE.DEFENDER, ROLE.DEFENDER1 } );
								Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 2: ROLE.ATTACKER1, ROLE.ATTACKER3, ROLE.DEFENDER, ROLE.DEFENDER1" );
							}
						}

						if ( !Map.South_Radar_Station )
						{
							if ( !Map.West_Radar_Parts )
							{
								if ( Map.North_Radar_Station and Map.East_Radar_Parts )
								{
									Util.SetRoleForGoals( "FLAG.*_radarbox2.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
									Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 2: ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3" );
								}

								if ( Map.East_Radar_Parts and !Map.North_Radar_Station )
								{
									Util.SetRoleForGoals( "FLAG.*_radarbox2.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
									Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 2: ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3" );
								}
							}
						}

						if ( !Map.West_Radar_Parts )
						{
							if ( !Map.South_Radar_Station )
							{
								if ( Map.North_Radar_Station and Map.East_Radar_Parts )
								{
									Util.SetRoleForGoals( "FLAG.*_radarbox2.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
									Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 2: ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3" );
								}

								if ( Map.East_Radar_Parts and !Map.North_Radar_Station )
								{
									Util.SetRoleForGoals( "FLAG.*_radarbox2.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
									Util.MapDebugPrint( "^3roles for (Flag.*_dropped) Allies and Axis => radarbox 2: ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3" );
								}
							}
						}
					}

					Map.radarbox2_dropped = 1;
				}

				yield();
			}
		}

		if ( !Map.Main_Entrance and !Map.Outer_Side_Entrance )
		{
			SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_SideEntrance_.*" );

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

			if ( Map.version == 130 )
			{
				if ( Map.wooden_barrier_intact )
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, "GRENADE_WoodenBarrier_.*" );
				}
			}

			if ( !Map.Allied_CP )
			{
				SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_SideZone_.*" );

				SetAvailableMapGoals( TEAM.AXIS, true, {
					".*_Axis_SideInnerPlace_.*",
					"PLANTMINE_Axis_SideZone_.*",
					"MOUNTMG42_CP",
					"REPAIRMG42_CP",
				});

				if ( GetModName() == "nitmod" or GetModName() == "silEnT" )
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "TRIPMINE_Axis_Wall_CP_.*" );
				}
			}
			else
			{
				SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_SideZone_.*" );
			}

			if ( !Map.East_RadarParts_Taken )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, {
					"CALLARTILLERY_Axis_EastRadarParts_.*",
					"ARTILLERY_S_Axis_EastRadarParts_.*",
				});
			}

			if ( Map.North_Radar_Station )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, {
					"PLANT_North_Radar_Station",
					"ATTACK_Allies_NorthRadarStation_.*",
				});
			}

			if ( Map.Tank_At_Position )
			{
				ETUtil.SetAimModeForMount("MOUNT_Tank", { Vec3(-1487.413, -791.334, 1277.209), Vec3(2662.479, -1638.656, 1725.899) });
			}

			Util.MapDebugPrint( "^5Inner_Side_Entrance_Destroyed" );
		}

		if ( Map.Outer_Side_Entrance )
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_OuterSideEntrance_1" );
		}

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

	Axis_Watchtower_MG_Nest_Built = function( trigger )
	{

		Map.Axis_Watchtower_MG_Nest = true;

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

		if ( GetModName() == "nitmod" )
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Axis_WatchtoMG_Nest" );

			SetAvailableMapGoals( TEAM.AXIS, true, {
				"REPAIRMG42_Axis_WatchtoMG_Nest",
				"MOUNTMG42_Axis_WatchtoMG_Nest",
			});
		}
		else
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "BUILD_Axis_Watchtower_MG_Nest" );

			SetAvailableMapGoals( TEAM.AXIS, true, {
				"REPAIRMG42_Axis_Watchtower_MG_Nest",
				"MOUNTMG42_Axis_Watchtower_MG_Nest",
			});
		}

		if ( !Map.Main_Entrance or ( !Map.Inner_Side_Entrance and !Map.Outer_Side_Entrance ))
		{
			if ( GetModName() == "nitmod" )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_WatchtoMG_Nest" );
			}
			else
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Axis_Watchtower_MG_Nest" );
			}
		}

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

	Axis_Watchtower_MG_Nest_Planted = function( trigger )
	{

		Map.Axis_Watchtower_MG_Nest_Dyno += 1;

		if ( GetModName() == "nitmod" )
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Axis_WatchtoMG_Nest_.*" );
		}
		else
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Axis_Watchtower_MG_Nest_.*" );
		}

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

	Axis_Watchtower_MG_Nest_Defused = function( trigger )
	{

		Map.Axis_Watchtower_MG_Nest_Dyno -= 1;

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

	Axis_Watchtower_MG_Nest_Destroyed = function( trigger )
	{

		Map.Axis_Watchtower_MG_Nest_Dyno = 0;
		Map.Axis_Watchtower_MG_Nest = false;

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

		if ( GetModName() == "nitmod" )
		{
			SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Axis_WatchtoMG_Nest" );

			SetAvailableMapGoals( TEAM.AXIS, false, {
				"REPAIRMG42_Axis_WatchtoMG_Nest",
				"MOUNTMG42_Axis_WatchtoMG_Nest",
			});

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

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

			SetAvailableMapGoals( TEAM.AXIS, false, {
				"REPAIRMG42_Axis_Watchtower_MG_Nest",
				"MOUNTMG42_Axis_Watchtower_MG_Nest",
			});

			SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Axis_Watchtower_MG_Nest" );
		}

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

	Allied_CP_Built = function( trigger )
	{

		Map.Allied_CP = true;

		foreach ( id and bot in BotTable )
		{
			if ( bot.GetTeam(TEAM.ALLIES) )
			{
				if ( bot.HasRole(ROLE.ATTACKER1) or bot.HasRole(ROLE.ATTACKER3) )
				{
					bot.ChangeSpawnPoint(1);	//CP Spawn
				}
				if ( bot.HasRole(ROLE.ATTACKER) or bot.HasRole(ROLE.ATTACKER2) )
				{
					if ( Map.Forward_Bunker_Allies )
					{
						bot.ChangeSpawnPoint(3);	//Forward Bunker
					}
					else
					{
						bot.ChangeSpawnPoint(2);	//Villa
					}
				}
			}
		}

		if ( Map.Main_Entrance )
		{
			if ( Map.Outer_Side_Entrance or Map.Inner_Side_Entrance )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_SideInnerPlace_.*" );
			}
			else
			{
				SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_SideInnerPlace_.*" );
			}

			SetAvailableMapGoals( TEAM.AXIS, false, {
				"MOUNTMG42_CP",
				"REPAIRMG42_CP",
			});

			SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_SideZone_.*" );
		}

		if ( !Map.Inner_Side_Entrance and !Map.Outer_Side_Entrance and ( GetModName() == "nitmod" or GetModName() == "silEnT" ) )
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "TRIPMINE_Axis_Wall_CP_.*" );
		}

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

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

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

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

	Axis_CP_Built = function( trigger )
	{

		Map.Axis_CP = true;

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

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

		if ( !Map.Main_Entrance or ( !Map.Inner_Side_Entrance and !Map.Outer_Side_Entrance ))
		{
			SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Command_Post" );
		}

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

	Command_Post_Planted = function( trigger )
	{

		if ( Map.Allied_CP )
		{
			Map.Allied_CP_Dyno += 1;

			Util.SetRoleForGoals( "DEFUSE_Command_Post_.*", { ROLE.ATTACKER1, ROLE.ATTACKER3 } );

			Util.MapDebugPrint( "^5Allied_CP_Planted" );
		}
		else
		{
			Map.Axis_CP_Dyno += 1;

			Util.SetRoleForGoals( "DEFUSE_Command_Post_.*", { ROLE.DEFENDER, ROLE.DEFENDER1 } );

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

	Command_Post_Defused = function( trigger )
	{

		if ( Map.Allied_CP )
		{
			Map.Allied_CP_Dyno -= 1;

			Util.MapDebugPrint( "^5Allied_CP_Defused" );
		}
		else
		{
			Map.Axis_CP_Dyno -= 1;

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

	Allied_CP_Destroyed = function( trigger )
	{

		if ( Map.Allied_CP_Dyno > 0 )
		{
			SetAvailableMapGoals( TEAM.ALLIES, false, "DEFUSE_Command_Post_.*" );
		}

		Map.Allied_CP_Dyno = 0;
		Map.Allied_CP = false;

		foreach ( id and bot in BotTable )
		{
			if ( bot.GetTeam(TEAM.ALLIES) )
			{
				if ( bot.HasRole(ROLE.ATTACKER) or bot.HasRole(ROLE.ATTACKER3) or bot.HasRole(ROLE.ATTACKER1) or bot.HasRole(ROLE.ATTACKER2) )
				{
					if ( Map.Forward_Bunker_Allies )
					{
						bot.ChangeSpawnPoint(3);	//Forward Bunker
					}
					else
					{
						bot.ChangeSpawnPoint(2);	//Villa
					}
				}
			}
		}

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

		if ( Map.Main_Entrance )
		{
			if ( Map.Outer_Side_Entrance and Map.Inner_Side_Entrance )
			{
				SetAvailableMapGoals( TEAM.AXIS, false, {
					"DEFEND_Axis_SideZone_.*",
					".*_Axis_SideInnerPlace_.*",
				});
			}

			if ( !Map.Outer_Side_Entrance and Map.Inner_Side_Entrance )
			{
				SetAvailableMapGoals( TEAM.AXIS, false, {
					"DEFEND_Axis_SideZone_.*",
					".*_Axis_SideInnerPlace_.*",
				});

				SetAvailableMapGoals( TEAM.AXIS, true, {
					"MOUNTMG42_CP",
					"REPAIRMG42_CP",
					"DEFEND_Axis_SideInnerDoor_.*",
				});
			}

			if ( !Map.Outer_Side_Entrance and !Map.Inner_Side_Entrance )
			{
				SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_Axis_SideZone_.*" );

				SetAvailableMapGoals( TEAM.AXIS, true, {
					".*_Axis_SideInnerPlace_.*",
					"MOUNTMG42_CP",
					"REPAIRMG42_CP",
				});
			}
		}

		if ( !Map.Main_Entrance or ( !Map.Inner_Side_Entrance and !Map.Outer_Side_Entrance ))
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Command_Post" );

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

		if ( !Map.Inner_Side_Entrance and !Map.Outer_Side_Entrance and ( GetModName() == "nitmod" or GetModName() == "silEnT" ) )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "TRIPMINE_Axis_Wall_CP_.*" );
		}

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

	Axis_CP_Destroyed = function( trigger )
	{

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

		Map.Axis_CP_Dyno = 0;
		Map.Axis_CP = false;

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

		if ( !Map.Main_Entrance or ( !Map.Inner_Side_Entrance and !Map.Outer_Side_Entrance ))
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Command_Post" );

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

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

	Tank_Built = function( trigger )
	{

		Map.Tank = true;

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

		if ( !Map.Main_Entrance or ( !Map.Outer_Side_Entrance and !Map.Inner_Side_Entrance ) )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "MOUNT_Tank" );
		}

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

	Tank_Destroyed = function( trigger )
	{

		Map.Tank = false;

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

		if ( !Map.Main_Entrance or ( !Map.Outer_Side_Entrance and !Map.Inner_Side_Entrance ) )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "BUILD_Tank" );
		}

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

	North_Radar_Station_Planted = function( trigger )
	{

		Map.North_Radar_Station_Dyno += 1;

		if ( !Map.South_Radar_Station and !Map.West_Radar_Parts )
		{
			Util.SetRoleForGoals( "DEFUSE_North_Radar_Station_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
		}
		else if ( !Map.South_Radar_Station and Map.West_Radar_Parts )
		{
			Util.SetRoleForGoals( "DEFUSE_North_Radar_Station_.*", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER3 } );
		}
		else
		{
			Util.SetRoleForGoals( "DEFUSE_North_Radar_Station_.*", { ROLE.DEFENDER, ROLE.DEFENDER1 } );
		}

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

	North_Radar_Station_Defused = function( trigger )
	{

		Map.North_Radar_Station_Dyno -= 1;

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

	North_Radar_Station_Destroyed = function( trigger )
	{

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

		Map.North_Radar_Station_Dyno = 0;
		Map.North_Radar_Station = false;
		Map.NumberOfCompletedTasks +=  1;

		if ( Map.version == 120 )
		{
			if ( Map.NumberOfCompletedTasks == 3 )
			{
				Map.Allies_Win = true;

				sleep(1);
				ETUtil.WinningChat( TEAM.ALLIES );
				sleep(1.5);
				ETUtil.LosingChat( TEAM.AXIS );

				Util.MapDebugPrint( "^5Allies win" );
			}
		}

		if ( Map.version == 130 )
		{
			if ( Map.NumberOfCompletedTasks == 4 )
			{
				Map.Allies_Win = true;

				sleep(1);
				ETUtil.WinningChat( TEAM.ALLIES );
				sleep(1.5);
				ETUtil.LosingChat( TEAM.AXIS );

				Util.MapDebugPrint( "^5Allies win" );
			}
		}

		SetAvailableMapGoals( TEAM.AXIS, false, {
			".*_Axis_NorthRadarStation_.*",
			"DEFEND_Axis_F_NRS_.*",
			"MOBILEMG42_Axis_East_North_Radar_15",
			"MOBILEMG42_Axis_NorthRadarStation_04",
			"PLANTMINE_Axis_NRS_.*",
			"ARTILLERY_S_Axis_Hill_01",
		});

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

		if ( !Map.East_RadarParts_Taken )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "MOBILEMG42_Axis_OnlyEastRadarParts_01" );
		}
		else
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "CALLARTILLERY_Axis_EastRadarParts_16" );

		}

		if ( Map.East_Radar_Parts )
		{
			if ( !Map.East_RadarParts_Taken )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_F_ERP_.*" );
			}

			if ( !Map.South_Radar_Station and !Map.West_Radar_Parts )
			{
				Util.SetMaxUsers( 2, "ATTACK_Axis_Truck_ERP_.*" );
				Util.SetRoleForGoals( "DEFEND_Axis_EastRadarParts_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "PLANTMINE_Axis_EastRadarParts_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "CALLARTILLERY_Axis_EastRadarParts_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "ARTILLERY_S_Axis_EastRadarParts_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "ATTACK_Axis_Truck_ERP_.*", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "DEFEND_Axis_F_ERP_.*", { ROLE.DEFENDER2, ROLE.DEFENDER3 } );

				Util.SetMaxUsers( 2, "ATTACK_Allies_Truck_ERP_.*" );
				Util.SetRoleForGoals( "FLAG.*_radarbox2.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3, ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "ATTACK_Allies_Truck_ERP_.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 } );
			}
			else
			{
				Util.SetRoleForGoals( "FLAG.*_radarbox2.*", { ROLE.ATTACKER1, ROLE.ATTACKER3, ROLE.DEFENDER, ROLE.DEFENDER1 } );
			}
		}
		else
		{
			SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_EastRadarParts_.*" );

			WeaponTable.SetWeaponTeamAvailability ( TEAM.AXIS, CLASS.SOLDIER, WEAPON.MOBILE_MG42, false );

			if ( Map.West_Radar_Parts and Map.South_Radar_Station )
			{
				Util.SetMaxUsers( 2, "ATTACK_Axis_Truck_WRP_.*" );
				Util.SetRoleForGoals( ".*_Axis_WestRadarParts_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2 } );
				Util.SetRoleForGoals( "ATTACK_Axis_Truck_WRP_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2 } );
				Util.SetRoleForGoals( "DEFEND_Axis_F_WRP_.*", ROLE.DEFENDER1 );
				Util.SetRoleForGoals( "PLANTMINE_Axis_Passage_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );

				if ( !Map.West_RadarParts_Taken )
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_F_WRP_.*" );
				}

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

				Util.SetMaxUsers( 2, "ATTACK_Allies_Truck_WRP_.*" );
				Util.SetRoleForGoals( "FLAG.*_radarbox1.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2 } );
				Util.SetRoleForGoals( "ATTACK_Allies_Truck_WRP_.*", { ROLE.ATTACKER, ROLE.ATTACKER3 } );
			}

			if ( Map.West_Radar_Parts and !Map.South_Radar_Station )
			{
				Util.SetMaxUsers( 2, "ATTACK_Axis_Truck_WRP_.*" );
				Util.SetRoleForGoals( ".*_Axis_WestRadarParts_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "ATTACK_Axis_Truck_WRP_.*", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "DEFEND_Axis_F_WRP_.*", { ROLE.DEFENDER1, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "PLANTMINE_Axis_Passage_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );

				if ( !Map.West_RadarParts_Taken )
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_F_WRP_.*" );
				}

				Util.SetMaxUsers( 2, "ATTACK_Allies_Truck_WRP_.*" );
				Util.SetRoleForGoals( "FLAG.*_radarbox1.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3, ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "ATTACK_Allies_Truck_WRP_.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 } );
			}

			if ( !Map.West_Radar_Parts and Map.South_Radar_Station )
			{
				Util.SetRoleForGoals( "DEFEND_Axis_SouthRadarStation_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "DEFEND_Axis_F_SRS_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2 } );
				Util.SetRoleForGoals( "PLANTMINE_Axis_Passage_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );

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

				Util.SetMaxUsers( 2, "ATTACK_Allies_SouthRadarStation_.*" );
				Util.SetRoleForGoals( "ATTACK_Allies_SouthRadarStation_.*", { ROLE.ATTACKER, ROLE.ATTACKER2, ROLE.ATTACKER3 } );
			}
		}

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

	South_Radar_Station_Planted = function( trigger )
	{

		Map.South_Radar_Station_Dyno += 1;

		if ( !Map.North_Radar_Station and !Map.East_Radar_Parts )
		{
			Util.SetRoleForGoals( "DEFUSE_South_Radar_Station_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
		}
		else
		{
			Util.SetRoleForGoals( "DEFUSE_South_Radar_Station_.*", { ROLE.DEFENDER2, ROLE.DEFENDER3 } );
		}

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

	South_Radar_Station_Defused = function( trigger )
	{

		Map.South_Radar_Station_Dyno -= 1;

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

	South_Radar_Station_Destroyed = function( trigger )
	{

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

		Map.South_Radar_Station_Dyno = 0;
		Map.South_Radar_Station = false;
		Map.NumberOfCompletedTasks +=  1;

		if ( Map.version == 120 )
		{
			if ( Map.NumberOfCompletedTasks == 3 )
			{
				Map.Allies_Win = true;

				sleep(1);
				ETUtil.WinningChat( TEAM.ALLIES );
				sleep(1.5);
				ETUtil.LosingChat( TEAM.AXIS );

				Util.MapDebugPrint( "^5Allies win" );
			}
		}

		if ( Map.version == 130 )
		{
			if ( Map.NumberOfCompletedTasks == 4 )
			{
				Map.Allies_Win = true;

				sleep(1);
				ETUtil.WinningChat( TEAM.ALLIES );
				sleep(1.5);
				ETUtil.LosingChat( TEAM.AXIS );

				Util.MapDebugPrint( "^5Allies win" );
			}
		}

		SetAvailableMapGoals( TEAM.AXIS, false, {
			"DEFEND_Axis_SouthRadarStation_.*",
			"DEFEND_Axis_F_SRS_.*",
		});

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

		if ( Map.West_Radar_Parts )
		{
			if ( !Map.West_RadarParts_Taken )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_F_WRP_.*" );
			}

			if ( !Map.North_Radar_Station and !Map.East_Radar_Parts )
			{
				Util.SetMaxUsers( 2, "ATTACK_Axis_Truck_WRP_.*" );
				Util.SetRoleForGoals( ".*_Axis_WestRadarParts_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "ATTACK_Axis_Truck_WRP_.*", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "DEFEND_Axis_F_WRP_.*", { ROLE.DEFENDER1, ROLE.DEFENDER3 } );

				Util.SetMaxUsers( 2, "ATTACK_Allies_Truck_WRP_.*" );
				Util.SetRoleForGoals( "FLAG.*_radarbox1.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3, ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "ATTACK_Allies_Truck_WRP_.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 } );
			}
			else
			{
				Util.SetMaxUsers( 2, "ATTACK_Axis_Truck_WRP_.*" );
				Util.SetRoleForGoals( ".*_Axis_WestRadarParts_.*", { ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "ATTACK_Axis_Truck_WRP_.*", { ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "DEFEND_Axis_F_WRP_.*", ROLE.DEFENDER3 );

				Util.SetMaxUsers( 2, "ATTACK_Allies_Truck_WRP_.*" );
				Util.SetRoleForGoals( "FLAG.*_radarbox1.*", { ROLE.ATTACKER, ROLE.ATTACKER2, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "ATTACK_Allies_Truck_WRP_.*", { ROLE.ATTACKER, ROLE.ATTACKER2 } );

			}
		}
		else
		{
			foreach ( id and bot in BotTable )
			{
				if ( bot.GetTeam(TEAM.AXIS) )
				{
					if ( bot.HasRole(ROLE.DEFENDER2) )
					{
						bot.ChangeSpawnPoint(5);	//Lower Warehouse
					}
				}
			}

			SetAvailableMapGoals( TEAM.AXIS, false, {
				"PLANTMINE_Axis_Passage_.*",
				"CALLARTILLERY_Axis_WestRadarParts_12",
				"ARTILLERY_S_Axis_WestRadarParts_13",
			});

			if ( GetModName() == "nitmod" or GetModName() == "silEnT" )
			{
				SetAvailableMapGoals( TEAM.AXIS, false, "TRIPMINE_Axis_Wall_WRP_.*" );

				Util.SetRoleForGoals( "TRIPMINE_Axis_Wall_CP_.*", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2 } );
			}

			if ( Map.North_Radar_Station or Map.East_Radar_Parts )
			{
				if ( !Map.East_RadarParts_Taken )
				{
					SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_Route_.*" );
				}
			}

			if ( Map.North_Radar_Station and Map.East_Radar_Parts )
			{
				Util.SetMaxUsers( 2, "ATTACK_Axis_Truck_ERP_.*" );
				Util.SetRoleForGoals( "DEFEND_Axis_EastRadarParts_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "PLANTMINE_Axis_EastRadarParts_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "CALLARTILLERY_Axis_EastRadarParts_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "ARTILLERY_S_Axis_EastRadarParts_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "ATTACK_Axis_Truck_ERP_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "DEFEND_Axis_F_ERP_.*", { ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "DEFEND_Axis_F_NRS_.*", ROLE.DEFENDER3 );

				if ( !Map.East_RadarParts_Taken )
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_F_ERP_.*" );
				}

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

				Util.SetMaxUsers( 2, "ATTACK_Allies_Truck_ERP_.*" );
				Util.SetRoleForGoals( "FLAG.*_radarbox2.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "ATTACK_Allies_Truck_ERP_.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2 } );
			}

			if ( Map.East_Radar_Parts and !Map.North_Radar_Station )
			{
				Util.SetMaxUsers( 2, "ATTACK_Axis_Truck_ERP_.*" );
				Util.SetRoleForGoals( "DEFEND_Axis_EastRadarParts_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "PLANTMINE_Axis_EastRadarParts_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "CALLARTILLERY_Axis_EastRadarParts_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "ARTILLERY_S_Axis_EastRadarParts_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "ATTACK_Axis_Truck_ERP_.*", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "DEFEND_Axis_F_ERP_.*", { ROLE.DEFENDER, ROLE.DEFENDER2, ROLE.DEFENDER3 } );

				if ( !Map.East_RadarParts_Taken )
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_F_ERP_.*" );
				}

				Util.SetMaxUsers( 2, "ATTACK_Allies_Truck_ERP_.*" );
				Util.SetRoleForGoals( "FLAG.*_radarbox2.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3, ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "ATTACK_Allies_Truck_ERP_.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 } );
			}

			if ( !Map.East_Radar_Parts and Map.North_Radar_Station )
			{
				Util.SetRoleForGoals( "DEFEND_Axis_NorthRadarStation_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "DEFEND_Axis_F_NRS_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );

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

				Util.SetMaxUsers( 2, "ATTACK_Allies_NorthRadarStation_.*" );
				Util.SetRoleForGoals( "ATTACK_Allies_NorthRadarStation_.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 } );
			}
		}

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

	West_Radar_Parts_Taken = function( trigger )
	{

		Map.West_RadarParts_Taken = true;
		Map.radarbox1_dropped = 0;

		SetAvailableMapGoals( TEAM.AXIS, false, {
			".*_Axis_WestRadarParts_.*",
			"DEFEND_Axis_F_WRP_.*",
		});

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

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

		SetAvailableMapGoals( TEAM.ALLIES, true, {
			"ATTACK_Allies_Truck_WRP_.*",
			"CAPPOINT_Truck",
		});

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

	West_Radar_Parts_Returned = function( trigger )
	{

		Map.West_RadarParts_Taken = false;
		Map.radarbox1_dropped = 0;

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

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

		if ( !Map.South_Radar_Station or ( !Map.North_Radar_Station and !Map.East_Radar_Parts) )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_F_WRP_.*" );
		}

		if ( !Map.East_Radar_Parts )
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "ATTACK_Axis_Truck_ERP_.*" );

			SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_Allies_Truck_ERP_.*" );
		}

		if ( !Map.East_RadarParts_Taken )
		{
			SetAvailableMapGoals( TEAM.ALLIES, false, "CAPPOINT_Truck" );
		}

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

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

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

	West_Radar_Parts_Secured = function( trigger )
	{

		Map.West_Radar_Parts = false;
		Map.NumberOfCompletedTasks +=  1;

		if ( Map.version == 120 )
		{
			if ( Map.NumberOfCompletedTasks == 3 )
			{
				Map.Allies_Win = true;

				sleep(1);
				ETUtil.WinningChat( TEAM.ALLIES );
				sleep(1.5);
				ETUtil.LosingChat( TEAM.AXIS );

				Util.MapDebugPrint( "^5Allies win" );
			}
		}

		if ( Map.version == 130 )
		{
			if ( Map.NumberOfCompletedTasks == 4 )
			{
				Map.Allies_Win = true;

				sleep(1);
				ETUtil.WinningChat( TEAM.ALLIES );
				sleep(1.5);
				ETUtil.LosingChat( TEAM.AXIS );

				Util.MapDebugPrint( "^5Allies win" );
			}
		}

		SetAvailableMapGoals( TEAM.AXIS, false, {
			".*_Axis_WestRadarParts_.*",
			"DEFEND_Axis_F_WRP_.*",
		});

		if ( !Map.East_RadarParts_Taken or !Map.East_Radar_Parts )
		{
			SetAvailableMapGoals( TEAM.AXIS, false, {
				"ATTACK_Axis_Truck_WRP_.*",
				"ATTACK_Axis_Truck_ERP_.*",
			});

			SetAvailableMapGoals( TEAM.ALLIES, false, {
				"ATTACK_Allies_Truck_WRP_.*",
				"ATTACK_Allies_Truck_ERP_.*",
				"CAPPOINT_Truck",
			});
		}

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

		if ( Map.South_Radar_Station )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, {
				"DEFEND_Axis_F_SRS_.*",
				"CALLARTILLERY_Axis_WestRadarParts_12",
				"ARTILLERY_S_Axis_WestRadarParts_13",
			});

			if ( !Map.North_Radar_Station and !Map.East_Radar_Parts )
			{
				Util.SetRoleForGoals( "DEFEND_Axis_SouthRadarStation_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "DEFEND_Axis_F_SRS_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2 } );
				Util.SetRoleForGoals( "PLANTMINE_Axis_Passage_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );

				Util.SetMaxUsers( 2, "ATTACK_Allies_SouthRadarStation_.*" );
				Util.SetRoleForGoals( "ATTACK_Allies_SouthRadarStation_.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 } );
				Util.SetRoleForGoals( "PLANT_South_Radar_Station", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 } );
			}
			else
			{
				Util.SetRoleForGoals( "DEFEND_Axis_SouthRadarStation_.*", { ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "DEFEND_Axis_F_SRS_.*", ROLE.DEFENDER2 );

				Util.SetMaxUsers( 2, "ATTACK_Allies_SouthRadarStation_.*" );
				Util.SetRoleForGoals( "ATTACK_Allies_SouthRadarStation_.*", { ROLE.ATTACKER, ROLE.ATTACKER2 } );
				Util.SetRoleForGoals( "PLANT_South_Radar_Station", { ROLE.ATTACKER, ROLE.ATTACKER2 } );
			}
		}
		else
		{
			foreach ( id and bot in BotTable )
			{
				if ( bot.GetTeam(TEAM.AXIS) )
				{
					if ( bot.HasRole(ROLE.DEFENDER2) )
					{
						bot.ChangeSpawnPoint(5);	//Lower Warehouse
					}
				}
			}

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

			if ( GetModName() == "nitmod" or GetModName() == "silEnT" )
			{
				SetAvailableMapGoals( TEAM.AXIS, false, "TRIPMINE_Axis_Wall_WRP_.*" );

				Util.SetRoleForGoals( "TRIPMINE_Axis_Wall_CP_.*", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2 } );
			}

			if ( Map.North_Radar_Station or Map.East_Radar_Parts )
			{
				if ( !Map.East_RadarParts_Taken )
				{
					SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_Route_.*" );
				}
			}

			if ( Map.North_Radar_Station and Map.East_Radar_Parts )
			{
				Util.SetMaxUsers( 2, "ATTACK_Axis_Truck_ERP_.*" );
				Util.SetRoleForGoals( "DEFEND_Axis_EastRadarParts_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "PLANTMINE_Axis_EastRadarParts_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "CALLARTILLERY_Axis_EastRadarParts_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "ARTILLERY_S_Axis_EastRadarParts_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "ATTACK_Axis_Truck_ERP_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "DEFEND_Axis_F_ERP_.*", ROLE.DEFENDER2 );
				Util.SetRoleForGoals( "DEFEND_Axis_F_NRS_.*", ROLE.DEFENDER3 );

				if ( !Map.East_RadarParts_Taken )
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_F_ERP_.*" );
				}

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

				Util.SetMaxUsers( 2, "ATTACK_Allies_Truck_ERP_.*" );
				Util.SetRoleForGoals( "FLAG.*_radarbox2.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "ATTACK_Allies_Truck_ERP_.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2 } );
			}

			if ( Map.East_Radar_Parts and !Map.North_Radar_Station )
			{
				Util.SetMaxUsers( 2, "ATTACK_Axis_Truck_ERP_.*" );
				Util.SetRoleForGoals( "DEFEND_Axis_EastRadarParts_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "PLANTMINE_Axis_EastRadarParts_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "CALLARTILLERY_Axis_EastRadarParts_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "ARTILLERY_S_Axis_EastRadarParts_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "ATTACK_Axis_Truck_ERP_.*", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "DEFEND_Axis_F_ERP_.*", { ROLE.DEFENDER2, ROLE.DEFENDER3 } );

				if ( !Map.East_RadarParts_Taken )
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_F_ERP_.*" );
				}

				Util.SetMaxUsers( 2, "ATTACK_Allies_Truck_ERP_.*" );
				Util.SetRoleForGoals( "FLAG.*_radarbox2.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3, ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "ATTACK_Allies_Truck_ERP_.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 } );
			}

			if ( !Map.East_Radar_Parts and Map.North_Radar_Station )
			{
				Util.SetRoleForGoals( "DEFEND_Axis_NorthRadarStation_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "DEFEND_Axis_F_NRS_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );

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

				Util.SetMaxUsers( 2, "ATTACK_Allies_NorthRadarStation_.*" );
				Util.SetRoleForGoals( "ATTACK_Allies_NorthRadarStation_.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 } );
			}
		}

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

	East_Radar_Parts_Taken = function( trigger )
	{

		Map.East_RadarParts_Taken = true;
		Map.radarbox2_dropped = 0;

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

		SetAvailableMapGoals( TEAM.AXIS, false, {
			".*_Axis_EastRadarParts_.*",
			"DEFEND_Axis_F_ERP_.*",
			".*_Axis_Route_.*",
		});

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

		SetAvailableMapGoals( TEAM.ALLIES, true, {
			"ATTACK_Allies_Truck_ERP_.*",
			"CAPPOINT_Truck",
		});

		Util.MapDebugPrint( "^5East_Radar_Parts_Taken" );

		sleep(3);

		if ( Map.East_RadarParts_Taken )
		{
			SetAvailableMapGoals( TEAM.AXIS, false, {
				"MOBILEMG42_Axis_East_North_Radar_15",
				"MOBILEMG42_Axis_OnlyEastRadarParts_01",
			});
		}

		if ( Map.North_Radar_Station )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "MOBILEMG42_Axis_NorthRadarStation_04" );
		}
	},

	East_Radar_Parts_Returned = function( trigger )
	{

		Map.East_RadarParts_Taken = false;
		Map.radarbox2_dropped = 0;

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

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

		if ( !Map.West_Radar_Parts )
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "ATTACK_Axis_Truck_WRP_.*" );

			SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_Allies_Truck_WRP_.*" );
		}

		if ( !Map.West_RadarParts_Taken )
		{
			SetAvailableMapGoals( TEAM.ALLIES, false, "CAPPOINT_Truck" );
		}

		SetAvailableMapGoals( TEAM.AXIS, true, {
			"DEFEND_Axis_EastRadarParts_.*",
			"PLANTMINE_Axis_EastRadarParts_.*",
		});

		if ( Map.North_Radar_Station )
		{
			SetAvailableMapGoals( TEAM.AXIS, false, "MOBILEMG42_Axis_NorthRadarStation_04" );

			SetAvailableMapGoals( TEAM.AXIS, true, "MOBILEMG42_Axis_East_North_Radar_15" );
		}
		else
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "MOBILEMG42_Axis_OnlyEastRadarParts_01" );
		}

		if ( ( !Map.South_Radar_Station and !Map.West_Radar_Parts ) or !Map.North_Radar_Station )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_F_ERP_.*" );
		}

		if ( !Map.South_Radar_Station and !Map.West_Radar_Parts )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_Route_.*" );
		}

		if ( !Map.Outer_Side_Entrance and !Map.Inner_Side_Entrance )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, {
				"CALLARTILLERY_Axis_EastRadarParts_.*",
				"ARTILLERY_S_Axis_EastRadarParts_.*",
			});
		}

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

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

	East_Radar_Parts_Secured = function( trigger )
	{

		Map.East_Radar_Parts = false;
		Map.NumberOfCompletedTasks +=  1;

		if ( Map.version == 120 )
		{
			if ( Map.NumberOfCompletedTasks == 3 )
			{
				Map.Allies_Win = true;

				sleep(1);
				ETUtil.WinningChat( TEAM.ALLIES );
				sleep(1.5);
				ETUtil.LosingChat( TEAM.AXIS );

				Util.MapDebugPrint( "^5Allies win" );
			}
		}

		if ( Map.version == 130 )
		{
			if ( Map.NumberOfCompletedTasks == 4 )
			{
				Map.Allies_Win = true;

				sleep(1);
				ETUtil.WinningChat( TEAM.ALLIES );
				sleep(1.5);
				ETUtil.LosingChat( TEAM.AXIS );

				Util.MapDebugPrint( "^5Allies win" );
			}
		}

		SetAvailableMapGoals( TEAM.AXIS, false, {
			".*_Axis_EastRadarParts_.*",
			"DEFEND_Axis_F_ERP_.*",
			"MOBILEMG42_Axis_East_North_Radar_15",
			"MOBILEMG42_Axis_OnlyEastRadarParts_01",
		});

		if ( !Map.West_RadarParts_Taken or !Map.West_Radar_Parts )
		{
			SetAvailableMapGoals( TEAM.AXIS, false, {
				"ATTACK_Axis_Truck_ERP_.*",
				"ATTACK_Axis_Truck_WRP_.*",
			});

			SetAvailableMapGoals( TEAM.ALLIES, false, {
				"ATTACK_Allies_Truck_ERP_.*",
				"ATTACK_Allies_Truck_WRP_.*",
				"CAPPOINT_Truck",
			});
		}

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

		if ( !Map.South_Radar_Station and !Map.West_Radar_Parts and Map.North_Radar_Station )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_Route_.*" );
		}

		if ( Map.North_Radar_Station )
		{
			SetAvailableMapGoals( TEAM.AXIS, true, {
				"DEFEND_Axis_F_NRS_.*",
				"MOBILEMG42_Axis_NorthRadarStation_04",
				"PLANTMINE_Axis_NRS_.*",
				"CALLARTILLERY_Axis_EastRadarParts_16",
				"ARTILLERY_S_Axis_Hill_01",
			});

			if ( !Map.West_Radar_Parts and !Map.South_Radar_Station )
			{
				Util.SetMaxUsers( 2, "DEFEND_Axis_NorthRadarStation_.*" );
				Util.SetRoleForGoals( "DEFEND_Axis_NorthRadarStation_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "DEFEND_Axis_F_NRS_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );

				Util.SetMaxUsers( 2, "ATTACK_Allies_NorthRadarStation_.*" );
				Util.SetRoleForGoals( "ATTACK_Allies_NorthRadarStation_.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 } );
				Util.SetRoleForGoals( "PLANT_North_Radar_Station", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 } );
			}
			else
			{
				Util.SetRoleForGoals( "DEFEND_Axis_F_NRS_.*", ROLE.DEFENDER1 );

				Util.SetMaxUsers( 2, "ATTACK_Allies_NorthRadarStation_.*" );
				Util.SetRoleForGoals( "PLANT_North_Radar_Station", { ROLE.ATTACKER1, ROLE.ATTACKER3 } );
				Util.SetRoleForGoals( "ATTACK_Allies_NorthRadarStation_.*", { ROLE.ATTACKER1, ROLE.ATTACKER3 } );
			}
		}
		else
		{
			SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_EastRadarParts_.*" );

			WeaponTable.SetWeaponTeamAvailability ( TEAM.AXIS, CLASS.SOLDIER, WEAPON.MOBILE_MG42, false );

			if ( Map.West_Radar_Parts and Map.South_Radar_Station )
			{
				Util.SetMaxUsers( 2, "ATTACK_Axis_Truck_WRP_.*" );
				Util.SetRoleForGoals( ".*_Axis_WestRadarParts_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2 } );
				Util.SetRoleForGoals( "ATTACK_Axis_Truck_WRP_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2 } );
				Util.SetRoleForGoals( "DEFEND_Axis_F_WRP_.*", ROLE.DEFENDER1 );
				Util.SetRoleForGoals( "PLANTMINE_Axis_Passage_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );

				if ( !Map.West_RadarParts_Taken )
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_F_WRP_.*" );
				}

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

				Util.SetMaxUsers( 2, "ATTACK_Allies_Truck_WRP_.*" );
				Util.SetRoleForGoals( "FLAG.*_radarbox1.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER3, ROLE.DEFENDER1, ROLE.DEFENDER2 } );
				Util.SetRoleForGoals( "ATTACK_Allies_Truck_WRP_.*", { ROLE.ATTACKER, ROLE.ATTACKER3 } );
			}

			if ( Map.West_Radar_Parts and !Map.South_Radar_Station )
			{
				Util.SetMaxUsers( 2, "ATTACK_Axis_Truck_WRP_.*" );
				Util.SetRoleForGoals( ".*_Axis_WestRadarParts_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "ATTACK_Axis_Truck_WRP_.*", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "DEFEND_Axis_F_WRP_.*", { ROLE.DEFENDER1, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "PLANTMINE_Axis_Passage_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );

				if ( !Map.West_RadarParts_Taken )
				{
					SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_F_WRP_.*" );
				}

				Util.SetMaxUsers( 2, "ATTACK_Allies_Truck_WRP_.*" );
				Util.SetRoleForGoals( "FLAG.*_radarbox1.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3, ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "ATTACK_Allies_Truck_WRP_.*", { ROLE.ATTACKER, ROLE.ATTACKER2, ROLE.ATTACKER3 } );
			}

			if ( !Map.West_Radar_Parts and Map.South_Radar_Station )
			{
				Util.SetRoleForGoals( "DEFEND_Axis_SouthRadarStation_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
				Util.SetRoleForGoals( "DEFEND_Axis_F_SRS_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2 } );
				Util.SetRoleForGoals( "PLANTMINE_Axis_Passage_.*", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );

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

				Util.SetMaxUsers( 2, "ATTACK_Allies_SouthRadarStation_.*" );
				Util.SetRoleForGoals( "ATTACK_Allies_SouthRadarStation_.*", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 } );
			}
		}

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

	Wooden_Barrier_destroyed = function( trigger )
	{

		Map.wooden_barrier_intact = false;

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

		sleep(1.8);

		if ( Map.version == 130 )
		{
			if ( Map.generator_intact )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Generator" );
			}
		}

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

	Generator_planted = function( trigger )
	{

		Map.Generator_Dyno += 1;

		if ( !Map.Main_Entrance )
		{
			Util.SetMaxUsers( 1, "DEFUSE_Generator_.*" );
		}
		else
		{
			Util.SetMaxUsers( 2, "DEFUSE_Generator_.*" );
		}

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

	Generator_defused = function( trigger )
	{

		Map.Generator_Dyno -= 1;

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

	Generator_destroyed = function( trigger )
	{

		if ( Map.generator_intact )
		{
			if ( Map.Generator_Dyno > 0 )
			{
				SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Generator_.*" );
			}

			Map.Generator_Dyno = 0;

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

			Util.MapDebugPrint( "^5Generator_destroyed" );
		}

		Map.generator_intact = false;

		if ( Map.Main_Entrance )
		{
			foreach ( id and bot in BotTable )
			{
				if ( bot.GetTeam(TEAM.AXIS) )
				{
					if ( bot.HasRole(ROLE.DEFENDER2) )
					{
						bot.ChangeSpawnPoint(4);	//Forward Hut
					}
				}
			}

			Util.SetRoleForGoals( "CHECKPOINT_roadbunker", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );

			SetAvailableMapGoals( TEAM.AXIS, false, {
				".*_Axis_MainRoad_.*",
				".*_Axis_Road_MG_Nest",
				".*_Axis_AboveTunnel_.*",
				".*_Axis_MainEntrance_.*",
			});

			Util.ClearRoleForGoals( ".*_Axis_AboveTunnel_.*", ROLE.DEFENDER3 );
			Util.ClearRoleForGoals( ".*_Axis_MainEntrance_.*", ROLE.DEFENDER3 );

			if ( Map.West_Radar_Parts )
			{
				Util.ClearRoleForGoals( ".*_Axis_WestRadarParts_.*", ROLE.DEFENDER2 );
				Util.ClearRoleForGoals( ".*_Axis_SouthRadarStation_.*", ROLE.DEFENDER3 );

				Util.SetRoleForGoals( ".*_Axis_WestRadarParts_.*", ROLE.DEFENDER3 );

				SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_WestRadarParts_.*" );
			}

			if ( Map.West_Radar_Parts or Map.South_Radar_Station )
			{
				Util.ClearRoleForGoals( "PLANTMINE_Axis_Passage_.*", ROLE.DEFENDER2 );

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

				if ( GetModName() == "nitmod" or GetModName() == "silEnT" )
				{
					Util.ClearRoleForGoals( "TRIPMINE_Axis_Wall_WRP_.*", ROLE.DEFENDER2 );

					SetAvailableMapGoals( TEAM.AXIS, true, "TRIPMINE_Axis_Wall_WRP_.*" );
				}
			}

			if ( !Map.East_RadarParts_Taken )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, {
					"DEFEND_Axis_EastRadarParts_.*",
					"PLANTMINE_Axis_EastRadarParts_.*",
				});
			}

			if ( !Map.East_RadarParts_Taken and  Map.North_Radar_Station )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "MOBILEMG42_Axis_East_North_Radar_15" );
			}

			if ( Map.East_RadarParts_Taken and  Map.North_Radar_Station )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "MOBILEMG42_Axis_NorthRadarStation_04" );
			}

			if ( !Map.East_RadarParts_Taken and  !Map.North_Radar_Station )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "MOBILEMG42_Axis_OnlyEastRadarParts_01" );
			}

			if ( Map.North_Radar_Station )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_Axis_NorthRadarStation_.*" );
			}

			if ( !Map.East_RadarParts_Taken and !Map.Outer_Side_Entrance and !Map.Inner_Side_Entrance )
			{
				SetAvailableMapGoals( TEAM.AXIS, true, {
					"CALLARTILLERY_Axis_EastRadarParts_.*",
					"ARTILLERY_S_Axis_EastRadarParts_.*",
				});
			}
			if ( Map.Outer_Side_Entrance )
			{
				SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_SideEntrance_.*" );

				if ( Map.Inner_Side_Entrance )
				{
					SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_SideZone_.*" );
				}
			}

			if ( !Map.Outer_Side_Entrance and Map.Inner_Side_Entrance )
			{
				SetAvailableMapGoals( TEAM.AXIS, false, {
					".*_Axis_SideEntrance_.*",
					"DEFEND_Axis_SideInnerDoor_.*",
				});

				if ( !Map.Allied_CP )
				{
					SetAvailableMapGoals( TEAM.AXIS, true, {
						"MOUNTMG42_CP",
						"REPAIRMG42_CP",
						".*_Axis_SideZone_.*",
					});
				}
				else
				{
					SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_SideZone_.*" );
				}
			}

			if ( !Map.Outer_Side_Entrance and !Map.Inner_Side_Entrance )
			{
				SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_SideEntrance_.*" );

				if ( !Map.Allied_CP )
				{
					SetAvailableMapGoals( TEAM.AXIS, false, ".*_Axis_SideZone_.*" );

					SetAvailableMapGoals( TEAM.AXIS, true, {
						"MOUNTMG42_CP",
						"REPAIRMG42_CP",
						".*_Axis_SideInnerPlace_.*",
						"PLANTMINE_Axis_SideZone_.*",
					});
				}
				else
				{
					SetAvailableMapGoals( TEAM.AXIS, true, ".*_Axis_SideZone_.*" );
				}
			}

			sleep(1.8);

			if ( Map.Main_Entrance )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Main__Entrance1" );
			}

			if ( !Map.Allied_CP and !Map.Axis_CP)
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "BUILD_Command_Post" );
			}

			if ( Map.Axis_CP)
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Command_Post" );
			}

			if ( Map.Inner_Side_Entrance )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_InnerSideEntrance_1" );
			}
			else
			{
				if ( Map.Outer_Side_Entrance )
				{
					SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_OuterSideEntrance_1" );
				}
			}

			if ( !Map.East_RadarParts_Taken )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "FLAG_radarbox2" );
			}

			if ( !Map.West_RadarParts_Taken )
			{
				SetAvailableMapGoals( TEAM.ALLIES, true, "FLAG_radarbox1" );
			}

			SetAvailableMapGoals( TEAM.ALLIES, true, {
				"AMMOCAB_.*",
				"HEALTHCAB_.*",
			});
		}
	},

	TankAtPosition =
	{
		Name = "TankAtPosition",
		TriggerOnEntity = GetGoal("MOVER_tank").GetEntity(),
		OnEnter = function(ent)
		{
			Map.Tank_At_Position = true;

			SetAvailableMapGoals( 0, false, "ESCORT_Tank" );
			Util.SetRoleForGoals( "BUILD_Tank", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );
			Util.SetRoleForGoals( "MOUNT_Tank", { ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3 } );

			ETUtil.SetExcludeIndexes( "MOUNT_Tank", { 2, 3 } );

			if ( !Map.Main_Entrance and !Map.Outer_Side_Entrance and !Map.Inner_Side_Entrance )
			{
				ETUtil.SetAimModeForMount("MOUNT_Tank", { Vec3(-1487.413, -791.334, 1277.209), Vec3(2662.479, -1638.656, 1725.899) });
			}
			if ( !Map.Main_Entrance and ( Map.Outer_Side_Entrance or Map.Inner_Side_Entrance ) )
			{
				ETUtil.SetAimModeForMount("MOUNT_Tank", Vec3(-1487.413, -791.334, 1277.209));
			}
			if ( Map.Main_Entrance and !Map.Outer_Side_Entrance and !Map.Inner_Side_Entrance )
			{
				ETUtil.SetAimModeForMount("MOUNT_Tank", Vec3(2662.479, -1638.656, 1725.899));
			}

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

	Thirty_second = function( trigger )
	{

		Util.MapDebugPrint( "^5Thirty_second" );

		sleep(30);

		if ( !Map.Allies_Win )
		{
			Util.MapDebugPrint( "^5Axis_Win" );

			sleep(1);
			ETUtil.WinningChat( TEAM.AXIS );
			sleep(1.5);
			ETUtil.LosingChat( TEAM.ALLIES );
		}
	},
};

/*Commands["botsgoals"] = function(_params)	//only for testing roles (thx. Palota) => called at the end of OnMapLoad
{
	foreach (team in TEAM)
	{
		foreach (class in Util.PlayerClassTable)
		{
			foreach ( bot in BotTable )
			{
				if(bot.GetClass()==class && bot.GetTeam()==team)
				{
					s="";
					foreach ( id and role in ROLE )
					{
						if(bot.HasRole(role))
						{
							s= s + " " + id;
						}
					}
					goal=bot.GetMapGoalName();
					if(!goal)
					{
						goal=bot.GetHighLevelGoalName();
					}
					if(!goal)
					{
						goal = "";
					}
					print(Util.TeamName(team) + " " + Util.ClassName(class) + s + ": " + goal);
				}
			}
		}
	}
};*/

global OnMapLoad = function()
{

	OnTrigger( "The Axis Road MG Nest has been constructed.", Map.Axis_Road_MG_Nest_Built );
	OnTrigger( "The Axis Watchtower MG Nest has been constructed.", Map.Axis_Watchtower_MG_Nest_Built );
	OnTrigger( "The Bunker MG Nest has been constructed.", Map.Bunker_MG_Nest_Built );
	OnTrigger( "Allied Command Post constructed. Charge speed increased!", Map.Allied_CP_Built );
	OnTrigger( "Axis Command Post constructed. Charge speed increased!", Map.Axis_CP_Built );

	OnTrigger( "axis_our_tank_repaired", Map.Tank_Built );
	OnTrigger( "The tank has been damaged!", Map.Tank_Destroyed );

	OnTrigger( "Planted at the Axis Road MG Nest.", Map.Axis_Road_MG_Nest_Planted );
	OnTrigger( "Planted at Axis Road MG Nest.", Map.Axis_Road_MG_Nest_Planted );	//Nitmod
	OnTrigger( "Planted at the Axis Watchtower MG Nest.", Map.Axis_Watchtower_MG_Nest_Planted );
	OnTrigger( "Planted at Axis WatchtoMG Nest.", Map.Axis_Watchtower_MG_Nest_Planted );	//Nitmod
	OnTrigger( "Planted at the Bunker MG Nest.", Map.Bunker_MG_Nest_Planted );
	OnTrigger( "Planted at Bunker MG Nest.", Map.Bunker_MG_Nest_Planted );	//Nitmod
	OnTrigger( "Planted at the Command Post.", Map.Command_Post_Planted );
	OnTrigger( "Planted at Command Post.", Map.Command_Post_Planted );	//Nitmod
	OnTrigger( "Planted at the Inner Side Entrance.", Map.Inner_Side_Entrance_Planted );
	OnTrigger( "Planted at Inner Side Entrance.", Map.Inner_Side_Entrance_Planted );	//Nitmod
	OnTrigger( "Planted at the Main Entrance.", Map.Main_Entrance_Planted );
	OnTrigger( "Planted at Main Entrance.", Map.Main_Entrance_Planted );	//Nitmod
	OnTrigger( "Planted at the North Radar Station.", Map.North_Radar_Station_Planted );
	OnTrigger( "Planted at North Radar Station.", Map.North_Radar_Station_Planted );	//Nitmod
	OnTrigger( "Planted at the Outer Side Entrance.", Map.Outer_Side_Entrance_Planted );
	OnTrigger( "Planted at Outer Side Entrance.", Map.Outer_Side_Entrance_Planted );	//Nitmod
	OnTrigger( "Planted at the South Radar Station.", Map.South_Radar_Station_Planted );
	OnTrigger( "Planted at South Radar Station.", Map.South_Radar_Station_Planted );	//Nitmod

	OnTrigger( "Defused at the Axis Road MG Nest.", Map.Axis_Road_MG_Nest_Defused );
	OnTrigger( "Defused at Axis Road MG Nest.", Map.Axis_Road_MG_Nest_Defused );	//Nitmod
	OnTrigger( "Defused at the Axis Watchtower MG Nest.", Map.Axis_Watchtower_MG_Nest_Defused );
	OnTrigger( "Defused at Axis WatchtoMG Nest.", Map.Axis_Watchtower_MG_Nest_Defused );	//Nitmod
	OnTrigger( "Defused at the Bunker MG Nest.", Map.Bunker_MG_Nest_Defused );
	OnTrigger( "Defused at Bunker MG Nest.", Map.Bunker_MG_Nest_Defused );	//Nitmod
	OnTrigger( "Defused at the Command Post.", Map.Command_Post_Defused );
	OnTrigger( "Defused at Command Post.", Map.Command_Post_Defused );	//Nitmod
	OnTrigger( "Defused at the Inner Side Entrance.", Map.Inner_Side_Entrance_Defused );
	OnTrigger( "Defused at Inner Side Entrance.", Map.Inner_Side_Entrance_Defused );	//Nitmod
	OnTrigger( "Defused at the Main Entrance.", Map.Main_Entrance_Defused );
	OnTrigger( "Defused at Main Entrance.", Map.Main_Entrance_Defused );	//Nitmod
	OnTrigger( "Defused at the North Radar Station.", Map.North_Radar_Station_Defused );
	OnTrigger( "Defused at North Radar Station.", Map.North_Radar_Station_Defused );	//Nitmod
	OnTrigger( "Defused at the Outer Side Entrance.", Map.Outer_Side_Entrance_Defused );
	OnTrigger( "Defused at Outer Side Entrance.", Map.Outer_Side_Entrance_Defused );	//Nitmod
	OnTrigger( "Defused at the South Radar Station.", Map.South_Radar_Station_Defused );
	OnTrigger( "Defused at South Radar Station.", Map.South_Radar_Station_Defused );	//Nitmod

	OnTrigger( "The Axis Road MG Nest has been destroyed.", Map.Axis_Road_MG_Nest_Destroyed );
	OnTrigger( "The Axis Watchtower MG Nest has been destroyed.", Map.Axis_Watchtower_MG_Nest_Destroyed );
	OnTrigger( "The Bunker MG Nest has been destroyed.", Map.Bunker_MG_Nest_Destroyed );
	OnTrigger( "Axis team has destroyed the Allied Command Post!", Map.Allied_CP_Destroyed );
	OnTrigger( "Allied team has destroyed the Axis Command Post!", Map.Axis_CP_Destroyed );
	OnTrigger( "Allies have breached the Inner Side Entrance!", Map.Inner_Side_Entrance_Destroyed );
	OnTrigger( "Allies have breached the Main Entrance and secured the Forward Bunker!", Map.Main_Entrance_Destroyed );
	OnTrigger( "Allies have breached the Main Entrance and secured the Forward Bunker!", Map.Entrance_Destroyed );
	OnTrigger( "The Allies have destroyed the North Radar Station!", Map.North_Radar_Station_Destroyed );
	OnTrigger( "Allies have breached the Outer Side Entrance!", Map.Outer_Side_Entrance_Destroyed );
	OnTrigger( "The Allies have destroyed the South Radar!", Map.South_Radar_Station_Destroyed );

	OnTrigger( "Allies have stolen the West Radar Parts!", Map.West_Radar_Parts_Taken );
	OnTrigger( "USA have stolen the West Radar Parts!", Map.West_Radar_Parts_Taken );	//ETNam
	OnTrigger( "Flag returned radarbox1!", Map.West_Radar_Parts_Returned );
	OnTrigger( "Allies have secured the West Radar Parts!", Map.West_Radar_Parts_Secured );

	OnTrigger( "Allies have stolen the East Radar Parts!", Map.East_Radar_Parts_Taken );
	OnTrigger( "USA have stolen the East Radar Parts!", Map.East_Radar_Parts_Taken );	//ETNam
	OnTrigger( "Flag returned radarbox2!", Map.East_Radar_Parts_Returned );
	OnTrigger( "Allies have secured the East Radar Parts!", Map.East_Radar_Parts_Secured );

	OnTrigger( "Axis reclaim the Forward Bunker!", Map.Forward_Bunker_Axis_Captured );
	OnTrigger( "Allies capture the Forward Bunker!", Map.Forward_Bunker_Allies_Captured );

	OnTrigger( "GRENADE_WoodenBarrier_01 Exploded.", Map.Wooden_Barrier_destroyed );

	OnTrigger( "Planted at the Generator.", Map.Generator_planted );
	OnTrigger( "Planted at Generator.", Map.Generator_planted );	//Nitmod
	OnTrigger( "Defused at the Generator.", Map.Generator_defused );
	OnTrigger( "Defused at Generator.", Map.Generator_defused );	//Nitmod
	OnTrigger( "security_door_Moving", Map.Generator_destroyed );

	OnTrigger( "thirty second warning.", Map.Thirty_second );

	Util.DisableGoal( ".*", true );

	foreach ( id and bot in BotTable )
	{
		if ( Map.Main_Entrance )
		{
			if ( bot.GetTeam(TEAM.AXIS) )
			{
				if ( bot.HasRole(ROLE.DEFENDER1) )
				{
					r = RandInt(0,2);
					if ( r == 2 )
					{
						bot.ChangeSpawnPoint(5);	//Lower Warehouse
					}
					else
					{
						bot.ChangeSpawnPoint(3);	//Forward Bunker
					}
				}
				if ( bot.HasRole(ROLE.DEFENDER) )
				{
					bot.ChangeSpawnPoint(6);	//Road Hut
				}
				if ( bot.HasRole(ROLE.DEFENDER2) or bot.HasRole(ROLE.DEFENDER3) )
				{
					bot.ChangeSpawnPoint(3);	//Forward Bunker
				}
			}
		}
	}

	Util.ClearRoleForGoals(".*", { ROLE.DEFENDER, ROLE.DEFENDER1, ROLE.DEFENDER2, ROLE.DEFENDER3, ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.ATTACKER2, ROLE.ATTACKER3 });

	Util.SetRoleForGoals( "CHECKPOINT_roadbunker", { ROLE.ATTACKER, ROLE.ATTACKER1, ROLE.DEFENDER, ROLE.DEFENDER2 } );

	//Axis roles - at the start:
	Util.SetRoleForGoals( ".*_Axis_MainRoad_.*", ROLE.DEFENDER );
	Util.SetRoleForGoals( "BUILD_Axis_Road_MG_Nest", ROLE.DEFENDER );
	Util.SetRoleForGoals( "MOUNTMG42_Axis_Road_MG_Nest", ROLE.DEFENDER );
	Util.SetRoleForGoals( "REPAIRMG42_Axis_Road_MG_Nest", ROLE.DEFENDER );

	Util.SetRoleForGoals( ".*_Axis_SideEntrance_.*", ROLE.DEFENDER1 );

	Util.SetRoleForGoals( ".*_Axis_ForwardSpawn_.*", ROLE.DEFENDER2 );
	Util.SetRoleForGoals( "BUILD_Bunker_MG_Nest", ROLE.DEFENDER2 );
	Util.SetRoleForGoals( "MOUNTMG42_Bunker_MG_Nest", ROLE.DEFENDER2 );
	Util.SetRoleForGoals( "REPAIRMG42_Bunker_MG_Nest", ROLE.DEFENDER2 );

	Util.SetRoleForGoals( ".*_Axis_AboveTunnel_.*", ROLE.DEFENDER3 );
	Util.SetRoleForGoals( ".*_Axis_MainEntrance_.*", ROLE.DEFENDER3 );

	//Axis roles - for next phases:
	Util.SetRoleForGoals( ".*_Axis_SideInnerPlace_.*", ROLE.DEFENDER );
	Util.SetRoleForGoals( ".*_Axis_SideZone_.*", ROLE.DEFENDER );

	Util.SetRoleForGoals( ".*_Axis_SideInnerDoor_.*", ROLE.DEFENDER1 );
	Util.SetRoleForGoals( "DEFEND_Axis_EastRadarParts_.*", ROLE.DEFENDER1 );
	Util.SetRoleForGoals( "PLANTMINE_Axis_EastRadarParts_.*", ROLE.DEFENDER1 );
	Util.SetRoleForGoals( "CALLARTILLERY_Axis_EastRadarParts_.*", ROLE.DEFENDER1 );
	Util.SetRoleForGoals( "ARTILLERY_S_Axis_EastRadarParts_.*", ROLE.DEFENDER1 );
	Util.SetRoleForGoals( ".*_Axis_Truck_ERP_.*", ROLE.DEFENDER1 );
	Util.SetRoleForGoals( "BUILD_Tank", ROLE.DEFENDER1 );
	Util.SetRoleForGoals( "MOUNT_Tank", ROLE.DEFENDER1 );

	Util.SetRoleForGoals( "MOUNTMG42_CP", { ROLE.DEFENDER, ROLE.DEFENDER1 } );
	Util.SetRoleForGoals( "REPAIRMG42_CP", { ROLE.DEFENDER, ROLE.DEFENDER1 } );
	Util.SetRoleForGoals( "BUILD_Command_Post", { ROLE.DEFENDER, ROLE.DEFENDER1 } );
	Util.SetRoleForGoals( "PLANT_Command_Post", { ROLE.DEFENDER, ROLE.DEFENDER1 } );
	Util.SetRoleForGoals( "DEFEND_Axis_NorthRadarStation_.*", { ROLE.DEFENDER, ROLE.DEFENDER1 } );

	if ( GetModName() == "nitmod" or GetModName() == "silEnT" )
	{
		Util.SetRoleForGoals( "TRIPMINE_Axis_Wall_CP_.*", { ROLE.DEFENDER, ROLE.DEFENDER1 } );
	}

	Util.SetRoleForGoals( ".*_Axis_WestRadarParts_.*", ROLE.DEFENDER2 );
	Util.SetRoleForGoals( ".*_Axis_Truck_WRP_.*", ROLE.DEFENDER2 );

	Util.SetRoleForGoals( ".*_Axis_SouthRadarStation_.*", ROLE.DEFENDER3 );

	Util.SetRoleForGoals( "PLANTMINE_Axis_Passage_.*", { ROLE.DEFENDER2, ROLE.DEFENDER3 } );

	if ( GetModName() == "nitmod" or GetModName() == "silEnT" )
	{
		Util.SetRoleForGoals( "TRIPMINE_Axis_Wall_WRP_.*", { ROLE.DEFENDER2, ROLE.DEFENDER3 } );
	}

	//Allied roles - at the start:
	Util.SetRoleForGoals( "DEFEND_Allies_ForwardSpawn_.*", { ROLE.ATTACKER, ROLE.ATTACKER1 } );

	Util.SetRoleForGoals( "PLANT_Main_Entrance", { ROLE.ATTACKER, ROLE.ATTACKER2 } );
	Util.SetRoleForGoals( ".*_Allies_MainEntrance_.*", ROLE.ATTACKER2 );

	Util.SetRoleForGoals( "PLANT_Outer_Side_Entrance", ROLE.ATTACKER3 );
	Util.SetRoleForGoals( "PLANT_Inner_Side_Entrance", ROLE.ATTACKER3 );
	Util.SetRoleForGoals( ".*_Allies_SideEntrance_.*", ROLE.ATTACKER3 );

	//Allied roles - for next phases:
	Util.SetRoleForGoals( "FLAG_radarbox1", ROLE.ATTACKER );
	Util.SetRoleForGoals( ".*_Allies_Truck_WRP_.*", ROLE.ATTACKER );

	Util.SetRoleForGoals( "FLAG_radarbox2", ROLE.ATTACKER1 );
	Util.SetRoleForGoals( ".*_Allies_Truck_ERP_.*", ROLE.ATTACKER1 );

	Util.SetRoleForGoals( ".*_Allies_SouthRadarStation_.*", ROLE.ATTACKER2 );
	Util.SetRoleForGoals( "PLANT_South_Radar_Station", ROLE.ATTACKER2 );

	Util.SetRoleForGoals( "PLANT_North_Radar_Station", ROLE.ATTACKER3 );
	Util.SetRoleForGoals( ".*_Allies_NorthRadarStation_.*", ROLE.ATTACKER3 );

	Util.SetRoleForGoals( "BUILD_Command_Post", { ROLE.ATTACKER1, ROLE.ATTACKER3 } );
	Util.SetRoleForGoals( "PLANT_Command_Post", { ROLE.ATTACKER1, ROLE.ATTACKER3 } );

	SetAvailableMapGoals( 0, true, {
		"AMMOCAB_objhacab2",
		"HEALTHCAB_objhacab1",
	});

	SetAvailableMapGoals( TEAM.AXIS, true, {
		".*_Axis_MainRoad_.*",
		".*_Axis_ForwardSpawn_.*",
		".*_Axis_SideEntrance_.*",
		".*_Axis_AboveTunnel_.*",
		"BUILD_Axis_Road_MG_Nest",
		"BUILD_Bunker_MG_Nest",
		"PLANTMINE_Axis_MainEntrance_.*",
		"AMMOCAB_objhacab3",
		"HEALTHCAB_objhacab4",
	});

	SetAvailableMapGoals( TEAM.ALLIES, true, {
		"PLANT_Main_Entrance",
		".*_Allies_MainEntrance_.*",
		"PLANT_Outer_Side_Entrance",
		".*_Allies_SideEntrance_.*",
		"CHECKPOINT_roadbunker",
	});

	//Settings of priorities:
	SetGoalPriority( ".*_Truck_WRP_.*", 0.79, 0, 0 );
	SetGoalPriority( ".*_Truck_ERP_.*", 0.79, 0, 0 );
	SetGoalPriority( "MOUNT_Tank", 0.76, 0, 0 );
	SetGoalPriority( "ESCORT_Tank", 0.76, 0, 0 );
	SetGoalPriority( "DEFEND_Axis_ForwardSpawn_02", 0.51, 0, 0 );
	SetGoalPriority( "DEFEND_Axis_ForwardSpawn_05", 0.51, 0, 0 );
	SetGoalPriority( "PLANTMINE_Axis_.*", 0.78, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "TRIPMINE_.*", 0.77, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "PLANTMINE_Axis_Passage_.*", 0.79, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "PLANTMINE_Axis_EastRadarParts_09", 0.79, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "PLANTMINE_Axis_EastRadarParts_11", 0.79, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "PLANTMINE_Axis_EastRadarParts_12", 0.79, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "PLANTMINE_Axis_EastRadarParts_13", 0.79, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "PLANTMINE_Axis_WestRadarParts_07", 0.79, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "PLANTMINE_Axis_WestRadarParts_08", 0.79, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "PLANTMINE_Axis_WestRadarParts_09", 0.79, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "PLANTMINE_Axis_NRS_.*", 0.79, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "PLANT_Command_Post", 0.82, TEAM.AXIS, CLASS.COVERTOPS );

	if ( GetModName() == "nitmod" )
	{
		SetGoalPriority( "BUILD_Axis_WatchtoMG_Nest", 0.5, TEAM.AXIS, CLASS.ENGINEER );	//not important goal, I think => bad position of MG42
		SetGoalPriority( "REPAIRMG42_Axis_WatchtoMG_Nest", 0.5, TEAM.AXIS, CLASS.ENGINEER );	//not important goal, I think
		SetGoalPriority( "MOUNTMG42_Axis_WatchtoMG_Nest", 0.49, TEAM.AXIS, 0 );	//not important goal, I think

		SetGoalPriority( "PLANT_Axis_WatchtoMG_Nest", 0.7, TEAM.ALLIES, CLASS.ENGINEER );
		Util.AddUseWp( "BUILD_Axis_WatchtoMG_Nest", "Axis_Watchtower_MG_Nest_Build_WP" );
		Util.SetMaxUsers( 1, "BUILD_Axis_WatchtoMG_Nest" );

		Util.MapDebugPrint( "^3Nitmod" );
	}
	else
	{
		SetGoalPriority( "BUILD_Axis_Watchtower_MG_Nest", 0.5, TEAM.AXIS, CLASS.ENGINEER );	////not important goal, I think => bad position of MG42
		SetGoalPriority( "REPAIRMG42_Axis_Watchtower_MG_Nest", 0.5, TEAM.AXIS, CLASS.ENGINEER );	//not important goal, I think
		SetGoalPriority( "MOUNTMG42_Axis_Watchtower_MG_Nest", 0.49, TEAM.AXIS, 0 );	//not important goal, I think

		SetGoalPriority( "PLANT_Axis_Watchtower_MG_Nest", 0.7, TEAM.ALLIES, CLASS.ENGINEER );
		Util.AddUseWp( "BUILD_Axis_Watchtower_MG_Nest", "Axis_Watchtower_MG_Nest_Build_WP" );
		Util.SetMaxUsers( 1, "BUILD_Axis_Watchtower_MG_Nest" );

		Util.MapDebugPrint( "^3Other mod" );
	}

	SetGoalPriority( "DEFEND_Axis_MainRoad_01", 0.5, TEAM.AXIS, 0 );	//this goal is only for selected weapons
	SetGoalPriority( "MOUNTMG42_Axis_Road_MG_Nest", 0.72, TEAM.AXIS, 0 );


	Wp.SetWaypointFlag( "MG", "closed", true );
	Wp.SetWaypointFlag( "MG_1", "closed", true );

	Util.SetMaxUsers( 1, "MOUNT_.*" );
	Util.SetMaxUsers( 1, "ATTACK_.*" );
	Util.SetMaxUsers( 1, "DEFEND_.*" );
	Util.SetMaxUsers( 1, "GRENADE_.*" );
	Util.SetMaxUsers( 1, "MOUNTMG42_.*" );
	Util.SetMaxUsers( 2, "BUILD_.*" );
	Util.SetMaxUsers( 1, "BUILD_Tank" );
	Util.SetMaxUsers( 2, "PLANT_.*" );

	Util.AddUseWp( "BUILD_Bunker_MG_Nest", "Bunker_MG_Nest_Build_WP" );
	Util.AddUseWp( "BUILD_Axis_Road_MG_Nest", "Axis_Road_MG_Nest_Build_WP" );

	Util.SetGoalPosition(-2197, 3328, 1440, "REPAIRMG42_Axis_Road_MG_Nest");
	Util.SetGoalPosition(67, 1408, 1420, "REPAIRMG42_Bunker_MG_Nest");

	T = OnTriggerRegion(AABB(-814.241,-2785.028,1225.125,-776.241,-2747.028,1299.125), Map.TankAtPosition );

	NP1 = OnTriggerRegion(AABB(1822.318,2604.565,1297.726,2135.711,2995.524,1501.174), RegionTrigger.DisableBotPush);
	DCM1 = OnTriggerRegion(AABB(1822.318,2604.565,1297.726,2135.711,2995.524,1501.174), RegionTrigger.DisableCombatMovement);

	DCM2 = OnTriggerRegion(AABB(-2527.476,628.357,1592.715,-719.616,1725.647,1898.942), RegionTrigger.DisableCombatMovement);	//Above tunnel to Main entrance
	DCM3 = OnTriggerRegion(AABB(-1095.308,-3538.284,1441.125,-979.161,-3437.125,1634.848), RegionTrigger.DisableCombatMovement);	//Lower warehouse spawn exit
	DCM4 = OnTriggerRegion(AABB(-1865.596,-2413.763,1509.125,-1663.446,-2085.333,1642.718), RegionTrigger.DisableCombatMovement);	//Flag_WestRadarParts

	NP2 = OnTriggerRegion(AABB(-2386.835,3401.357,1658.541,-2290.908,3509.077,1785.125), RegionTrigger.DisableBotPush);	//DEFEND_Axis_MainRoad_03
	NP3 = OnTriggerRegion(AABB(-960.875,1407.125,1333.125,-879.637,1526.875,1472.300), RegionTrigger.DisableBotPush);	//DEFEND_Axis_ForwardSpawn_01
	NP4 = OnTriggerRegion(AABB(-960.875,1812.095,1345.125,-847.739,1920.875,1459.651), RegionTrigger.DisableBotPush);	//DEFEND_Axis_ForwardSpawn_02
	NP5 = OnTriggerRegion(AABB(-689.779,1407.125,1301.125,-603.706,1472.742,1410.944), RegionTrigger.DisableBotPush);	//DEFEND_Axis_ForwardSpawn_06
	NP6 = OnTriggerRegion(AABB(-2416.795,3107.126,1393.125,-2357.970,3161.374,1496.633), RegionTrigger.DisableBotPush);	//CALLARTILLERY_Axis_MainRoad_06
	NP7 = OnTriggerRegion(AABB(-1929.367,936.118,1601.125,-1862.622,1023.738,1675.125), RegionTrigger.DisableBotPush);	//DEFEND_Axis_AboveTunnel_01
	NP8 = OnTriggerRegion(AABB(-1786.268,1095.570,1601.125,-1697.203,1161.367,1675.125), RegionTrigger.DisableBotPush);	//DEFEND_Axis_AboveTunnel_02
	NP9 = OnTriggerRegion(AABB(-2028.885,750.677,1598.710,-1937.370,850.382,1720.676), RegionTrigger.DisableBotPush);	//ATTACK_Allies_MainEntrance_05
	NP10 = OnTriggerRegion(AABB(-3194.361,-2812.167,1403.409,-3025.710,-2597.085,1502.661), RegionTrigger.DisableBotPush);	//DEFEND_Axis_WestRadarParts_04
	NP11 = OnTriggerRegion(AABB(315.615,-5032.640,1227.710,434.293,-4896.125,1348.410), RegionTrigger.DisableBotPush);	//DEFEND_Axis_EastRadarParts_04
	NP12 = OnTriggerRegion(AABB(417.805,-5585.456,1524.766,523.498,-5461.072,1638.368), RegionTrigger.DisableBotPush);	//DEFEND_Axis_EastRadarParts_05
	NP13 = OnTriggerRegion(AABB(-752.875,-3426.292,1601.125,-667.307,-3335.059,1725.702), RegionTrigger.DisableBotPush);	//DEFEND_Axis_EastRadarParts_06
	NP14 = OnTriggerRegion(AABB(-996.685,-3672.875,1321.125,-856.956,-3598.759,1425.106), RegionTrigger.DisableBotPush);	//DEFEND_Axis_EastRadarParts_07
	NP15 = OnTriggerRegion(AABB(2339.799,-4215.629,1556.357,2460.654,-4106.183,1674.497), RegionTrigger.DisableBotPush);	//DEFEND_Axis_EastRadarParts_14
	NP16 = OnTriggerRegion(AABB(2200.289,-4596.027,1570.061,2341.278,-4466.500,1700.019), RegionTrigger.DisableBotPush);	//MOBILEMG42_Axis_EastRadarParts_15
	NP17 = OnTriggerRegion(AABB(-3612.875,-3838.421,1442.345,-3462.542,-3685.744,1553.562), RegionTrigger.DisableBotPush);	//DEFEND_Axis_SouthRadarStation_02
	NP18 = OnTriggerRegion(AABB(-3195.359,-4932.008,1577.967,-3092.880,-4801.706,1688.593), RegionTrigger.DisableBotPush);	//DEFEND_Axis_SouthRadarStation_05
	NP19 = OnTriggerRegion(AABB(-1300.716,322.273,1340.960,-1204.289,402.966,1416.409), RegionTrigger.DisableBotPush);	//ATTACK_Axis_Truck_WRP_02
	NP20 = OnTriggerRegion(AABB(2987.844,-1103.883,1501.125,3083.409,-1023.125,1606.163), RegionTrigger.DisableBotPush);	//DEFEND_Axis_SideInnerPlace_06
	NP21 = OnTriggerRegion(AABB(478.787,-4359.677,1344.159,562.870,-4253.545,1441.201), RegionTrigger.DisableBotPush);	//DEFEND_Axis_F_ERP_04
	NP22 = OnTriggerRegion(AABB(-736.654,-4067.419,1371.056,-625.959,-3964.672,1477.429), RegionTrigger.DisableBotPush);	//DEFEND_Axis_F_ERP_07
	NP23 = OnTriggerRegion(AABB(-743.014,-3973.390,1418.069,-631.316,-3847.126,1539.125), RegionTrigger.DisableBotPush);	//DEFEND_Axis_F_ERP_08
	NP24 = OnTriggerRegion(AABB(1002.150,-3724.099,1473.354,1155.950,-3587.680,1571.958), RegionTrigger.DisableBotPush);	//DEFEND_Axis_F_NRS_08
	NP25 = OnTriggerRegion(AABB(-2009.827,-4447.111,1321.125,-1901.899,-4351.128,1395.125), RegionTrigger.DisableBotPush);	//DEFEND_Axis_F_SRS_09
	NP26 = OnTriggerRegion(AABB(-940.530,-4312.883,1217.125,-830.323,-4220.813,1295.303), RegionTrigger.DisableBotPush);	//MOBILEMG42_Axis_OnlyEastRadarParts_01

	if (GetGoal("PLANT_Generator")==null)
	{
		//goal does not exist
		Map.version = 120;
		print( "^3Omni-bot map script for ^1" + GetMapName() + " ^5(ver.1.2.0) ^3by ^1Q^2i^3k^4i ^3and ^1n^2a^4t^8i^3v^5e12^3." );
	}
	else
	{
		//goal exists
		Map.version = 130;
		print( "^3Omni-bot map script for ^1" + GetMapName() + " ^5(ver.1.3.0) ^3by ^1Q^2i^3k^4i ^3and ^1n^2a^4t^8i^3v^5e12^3." );
	}

	if ( Map.version == 120 )
	{
		Wp.SetWaypointFlag( "Ladder_1", "closed", true );
		Wp.SetWaypointFlag( "Ladder_2", "closed", true );
	}
	else if ( Map.version == 130 )
	{
		Wp.SetWaypointFlag( "Ladder_1", "closed", false );
		Wp.SetWaypointFlag( "Ladder_2", "closed", false );
	}
	else
	{
		Wp.SetWaypointFlag( "Ladder_1", "closed", true );
		Wp.SetWaypointFlag( "Ladder_2", "closed", true );
	}

	/*while (1)	//for testing roles
	{
		print( "^3=========================Test Roles & Goals=========================" );
		Commands["botsgoals"](_params);
		print( "^3============================End of Test=============================" );
		sleep(5);
	}*/
};

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

	WeaponTable.SetWeaponAvailability ( CLASS.SOLDIER, WEAPON.MORTAR, false );
	WeaponTable.SetWeaponAvailability ( CLASS.SOLDIER, WEAPON.FLAMETHROWER, false );

	WeaponTable.SetWeaponTeamAvailability ( TEAM.ALLIES, CLASS.SOLDIER, WEAPON.MOBILE_MG42, false );

	yield();
	yield();

	if ( Map.start )
	{
		if ( bot.GetTeam(TEAM.AXIS) )
		{
			if ( bot.HasRole(ROLE.DEFENDER1) )
			{
				r = RandInt(0,2);
				if ( r == 2 )
				{
					bot.ChangeSpawnPoint(5);	//Lower Warehouse
				}
				else
				{
					if ( Map.Forward_Bunker_Axis )
					{
						bot.ChangeSpawnPoint(3);	//Forward Bunker
					}
					else
					{
						bot.ChangeSpawnPoint(6);	//Road Hut
					}
				}
			}
			if ( bot.HasRole(ROLE.DEFENDER) )
			{
				bot.ChangeSpawnPoint(6);	//Road Hut
			}
			if ( bot.HasRole(ROLE.DEFENDER2) or bot.HasRole(ROLE.DEFENDER3) )
			{
				bot.ChangeSpawnPoint(3);	//Forward Bunker
			}
		}
	}

	/*	//replaced by new goal: goal_respawn.gm
	while(1)
	{
		if ( bot.HasEntityFlag ( ENTFLAG.DEAD ) and ( GetModName() == "noquarter" ) )
		{
			bot.ExecCommand("kill");
			//print( "^3I am dead" );
		}

		sleep(1);
	}*/
};

global InitializeRoutes = function()
{
	MapRoutes =
	{
		BUILD_Axis_Road_MG_Nest =
		{
		},
		BUILD_Bunker_MG_Nest =
		{
		},
		BUILD_Tank =
		{
		},
		BUILD_Command_Post =
		{
		},
		PLANT_Outer_Side_Entrance =
		{
		},
		PLANT_South_Radar_Station =
		{
		},
		PLANT_Command_Post =
		{
		},
		PLANT_North_Radar_Station =
		{
		},
		PLANT_Main_Entrance =
		{
			ROUTE_Villa_1 =
			{
				ROUTE_Above_MG42 =
				{
					ROUTE_Around_bunkerMG42 =
					{

					},
				},
				ROUTE_Street =
				{
					ROUTE_SideWayToBunker =
					{

					},
					ROUTE_Around_Hut =
					{

					},
				},
				ROUTE_Under_Hill =
				{
					ROUTE_Trees =
					{
						ROUTE_SideWayToBunker =
						{

						},
						ROUTE_Trees2 =
						{
							ROUTE_Around_Hut =
							{

							},
						},
					},
				},
			},
			ROUTE_Villa_2 =
			{
				ROUTE_Above_MG42 =
				{
					ROUTE_Around_bunkerMG42 =
					{

					},
				},
				ROUTE_Street =
				{
					ROUTE_SideWayToBunker =
					{

					},
					ROUTE_Around_Hut =
					{

					},
				},
				ROUTE_Under_Hill =
				{
					ROUTE_Trees =
					{
						ROUTE_SideWayToBunker =
						{

						},
						ROUTE_Trees2 =
						{
							ROUTE_Around_Hut =
							{

							},
						},
					},
				},
			},
			ROUTE_Villa_3 =
			{
				ROUTE_Above_MG42 =
				{
					ROUTE_Around_bunkerMG42 =
					{

					},
				},
				ROUTE_Street =
				{
					ROUTE_SideWayToBunker =
					{

					},
					ROUTE_Around_Hut =
					{

					},
				},
				ROUTE_Under_Hill =
				{
					ROUTE_Trees =
					{
						ROUTE_SideWayToBunker =
						{

						},
						ROUTE_Trees2 =
						{
							ROUTE_Around_Hut =
							{

							},
						},
					},
				},
			},
			ROUTE_Villa_4 =
			{
				ROUTE_Above_MG42 =
				{
					ROUTE_Around_bunkerMG42 =
					{

					},
				},
				ROUTE_Street =
				{
					ROUTE_SideWayToBunker =
					{

					},
					ROUTE_Around_Hut =
					{

					},
				},
				ROUTE_Under_Hill =
				{
					ROUTE_Trees =
					{
						ROUTE_SideWayToBunker =
						{

						},
						ROUTE_Trees2 =
						{
							ROUTE_Around_Hut =
							{

							},
						},
					},
				},
			},
		},
		PLANT_Bunker_MG_Nest =
		{
		},
		PLANT_Axis_Road_MG_Nest =
		{
		},
		PLANT_Inner_Side_Entrance =
		{
		},
		FLAG_radarbox2 =
		{
		},
		FLAG_radarbox1 =
		{
		},
		CHECKPOINT_roadbunker =
		{
			ROUTE_Villa_1 =
			{
				ROUTE_Above_MG42 =
				{
					ROUTE_Around_bunkerMG42 =
					{

					},
				},
				ROUTE_Fence =
				{
					ROUTE_Around_bunkerMG42 =
					{

					},
				},
				ROUTE_Street =
				{
					ROUTE_SideWayToBunker =
					{

					},
				},
			},
			ROUTE_Villa_2 =
			{
				ROUTE_Above_MG42 =
				{
					ROUTE_Around_bunkerMG42 =
					{

					},
				},
				ROUTE_Fence =
				{
					ROUTE_Around_bunkerMG42 =
					{

					},
				},
				ROUTE_Street =
				{
					ROUTE_SideWayToBunker =
					{

					},
				},
			},
			ROUTE_Villa_3 =
			{
				ROUTE_Above_MG42 =
				{
					ROUTE_Around_bunkerMG42 =
					{

					},
				},
				ROUTE_Fence =
				{
					ROUTE_Around_bunkerMG42 =
					{

					},
				},
				ROUTE_Street =
				{
					ROUTE_SideWayToBunker =
					{

					},
				},
			},
			ROUTE_Villa_4 =
			{
				ROUTE_Above_MG42 =
				{
					ROUTE_Around_bunkerMG42 =
					{

					},
				},
				ROUTE_Fence =
				{
					ROUTE_Around_bunkerMG42 =
					{

					},
				},
				ROUTE_Street =
				{
					ROUTE_SideWayToBunker =
					{

					},
				},
			},
			ROUTE_Hut_Spawn_1 =
			{
				ROUTE_Around_Hut =
				{
					ROUTE_NearTruck =
					{

					},
				},
				ROUTE_SideWayToBunker =
				{

				},
			},
			ROUTE_Hut_Spawn_2 =
			{
				ROUTE_Around_Hut =
				{
					ROUTE_NearTruck =
					{

					},
				},
				ROUTE_SideWayToBunker =
				{

				},
			},
			ROUTE_Hut_Spawn_3 =
			{
				ROUTE_Around_Hut =
				{
					ROUTE_NearTruck =
					{

					},
				},
				ROUTE_SideWayToBunker =
				{

				},
			},
		},
	};
	MapRoutes["MOBILEMG42_Axis_.*"] =
	{
		ROUTE_ForwardHut =
		{
			ROUTE_Wall =
			{

			},
		},
	};
	Util.Routes(MapRoutes);
};
