//script created by palota
global Map =
{
	cp = 0,
	flag = 1,

	SetPriorities = function()
	{
		SetAvailableMapGoals(TEAM.AXIS, Map.flag < 2 && Map.cp < 2, "DEFEND_flag.*");
		SetAvailableMapGoals(TEAM.AXIS, Map.flag >= 2 && Map.cp < 2, "DEFEND_cp.*");
		SetAvailableMapGoals(TEAM.AXIS, Map.flag == 3 && Map.cp < 2, ".*MG42.*");
	},

	SetSpawn1 = function(bot)
	{
		//1-train station, 2-allies, 3-axis, 4-command post
		if(bot.GetTeam()==TEAM.ALLIES){
			if(Map.cp==2){
				bot.ChangeSpawnPoint(4);
			}else if(Map.flag==2){
				bot.ChangeSpawnPoint(1);
			}else{
				bot.ChangeSpawnPoint(0);
			}
		}
	},

	SetSpawn = function()
	{
		Map.SetPriorities();
		foreach(bot in BotTable)
		{
			Map.SetSpawn1(bot);
		}
	},

	forward_flag_Axis_Captured = function( trigger )
	{
		Map.flag = 1;
		Map.SetSpawn();
		Util.MapDebugPrint("forward_flag_Axis_Captured");
	},

	forward_flag_Allies_Captured = function( trigger )
	{
		Map.flag = 2;
		Map.SetSpawn();
		Util.MapDebugPrint("forward_flag_Allies_Captured");
	},

	Command_Post_Axis = function( trigger )
	{
		Map.cp = 1;
		Map.SetSpawn();
		Util.MapDebugPrint("Command_Post_Axis");
	},

	Command_Post_Allies = function( trigger )
	{
		Map.cp = 2;
		Map.SetSpawn();
		Util.MapDebugPrint("Command_Post_Allies");
	},

	Command_Post_Destroyed = function( trigger )
	{
		Map.cp = 0;
		Map.SetSpawn();
		Util.MapDebugPrint("Command_Post_Destroyed");
	},

	Road_Barrier_Destroyed = function( trigger )
	{
		Map.flag = 3;
		Map.SetPriorities();
		Util.SetMaxUsersInProgress(2, "BUILD_Neutral_Command_Post");
		Util.EnableGoal("ROUTE_barrier");
		Util.MapDebugPrint("Road_Barrier_Destroyed");
	},

	Sewer_Grate_Destroyed = function( trigger )
	{
		Util.EnableGoal("ROUTE_sewer");
		Util.MapDebugPrint("Sewer_Grate_Destroyed");
	},

	North_Depot_Gate_Destroyed = function( trigger )
	{
		Util.EnableGoal("ROUTE_north_depot_gate");
		Util.MapDebugPrint("North_Depot_Gate_Destroyed");
	},

	West_Depot_Gate_Destroyed = function( trigger )
	{
		Util.EnableGoal("ROUTE_west_depot_gate");
		Util.MapDebugPrint("West_Depot_Gate_Destroyed");
	},

	North_Fueltruck_Destroyed = function( trigger )
	{
		Util.DisableGoal(".*n_truck.*");
		Util.MapDebugPrint("North_Fueltruck_Destroyed");
	},

	South_Fueltruck_Destroyed = function( trigger )
	{
		Util.DisableGoal(".*s_truck.*");
		Util.MapDebugPrint("South_Fueltruck_Destroyed");
	},
};

global OnMapLoad = function()
{
	OnTrigger("Axis have reclaimed the Trainstation", Map.forward_flag_Axis_Captured);
	OnTrigger("Allies have captured the Trainstation!", Map.forward_flag_Allies_Captured);
	OnTrigger("Axis Command Post constructed. Charge speed increased! Spawnpoint gaine"/*d!*/, Map.Command_Post_Axis);
	OnTrigger("Allied Command Post constructed. Charge speed increased! Spawnpoint gai"/*ned!*/, Map.Command_Post_Allies);
	OnTrigger("Axis team has destroyed the Allied Command Post! Charge speed restored!"/* Spawnpoint lost!*/, Map.Command_Post_Destroyed);
	OnTrigger("Allied team has destroyed the Axis Command Post! Charge speed restored!"/* Spawnpoint lost!*/, Map.Command_Post_Destroyed);
	OnTrigger("Allies have destroyed the Road Barrier!", Map.Road_Barrier_Destroyed);
	OnTrigger("Allies have breached the Sewer Grate!", Map.Sewer_Grate_Destroyed);
	OnTrigger("Allies have destroyed the North Depot Gates!", Map.North_Depot_Gate_Destroyed);
	OnTrigger("Allies have destroyed the West Depot Gates!", Map.West_Depot_Gate_Destroyed);
	OnTrigger("Allies have destroyed the North Fueltruck!", Map.North_Fueltruck_Destroyed);
	OnTrigger("Allies have destroyed the South Fueltruck!", Map.South_Fueltruck_Destroyed);

	Util.DisableGoal(".*_Tug_.*");
	SetAvailableMapGoals(TEAM.AXIS, false, "ATTACK.*");
	SetAvailableMapGoals(TEAM.ALLIES, false, "DEFEND.*");
	Util.DisableGoal(".*MG42.*");
	Util.DisableGoal("ROUTE_barrier");
	Util.DisableGoal("ROUTE_sewer");
	Util.DisableGoal("ROUTE_north_depot_gate");
	Util.DisableGoal("ROUTE_west_depot_gate");

	SetGoalPriority("DEFEND_flag.*", 0.51, TEAM.AXIS);
	SetGoalPriority("PLANT_Road_Barrier", 0.81, TEAM.ALLIES);
	Map.SetPriorities();

	Util.SetMaxUsersInProgress(1, ".*MG42.*");
	Util.SetMaxUsersInProgress(1, "BUILD_Neutral_Command_Post");

	SetMapGoalProperties("DEFEND_.*", {mincamptime=70, maxcamptime=300} );
	SetMapGoalProperties("MOUNTMG42.*", {mincamptime=70, maxcamptime=300} );
	SetMapGoalProperties("SNIPE_.*", {mincamptime=60, maxcamptime=250} );

	MapRoutes =
	{
		CHECKPOINT_forward_flag = {
			ROUTE_allies_spawn = {
				ROUTE_allies1 = {},
				ROUTE_allies2 = {},
				ROUTE_allies3 = {},
				ROUTE_allies4 = {},
				ROUTE_allies5 = {},
				ROUTE_allies6 = {},
			},
			ROUTE_cp_spawn = {
				ROUTE_axis_north = { Weight = 2 },
				ROUTE_barrier = {},
				ROUTE_train_west = {},
				ROUTE_train_east = {},
			},
		},
		PLANT_North_Fueltruck = {
			ROUTE_flag_spawn = {
				ROUTE_train_west = {},
				ROUTE_train_east = {},
				ROUTE_barrier = { Weight = 2,
					ROUTE_mg = {},
					ROUTE_mg2 = {},
				},
			},
			ROUTE_cp_spawn = {
				ROUTE_sewer = { Weight=2 },
				ROUTE_north_depot_gate = {},
				ROUTE_west_depot_gate = {},
			},
		},
		PLANT_South_Fueltruck = {
			ROUTE_flag_spawn = {
				ROUTE_train_west = {},
				ROUTE_train_east = {},
				ROUTE_barrier = { Weight = 3,
					ROUTE_mg = {},
					ROUTE_mg2 = {},
				},
			},
			ROUTE_cp_spawn = {
				ROUTE_north_depot_gate = {},
				ROUTE_center = {
					ROUTE_south_ladder = {},
					ROUTE_west_depot_gate = {},
				},
				ROUTE_south_west = {
					ROUTE_south_ladder = {},
					ROUTE_west_depot_gate = {},
				},
			},
		},
	};
	MapRoutes.ATTACK_n_truck1 = MapRoutes.PLANT_North_Fueltruck;
	MapRoutes.ATTACK_n_truck2 = MapRoutes.ATTACK_n_truck1;
	MapRoutes.ATTACK_s_truck1 = MapRoutes.PLANT_South_Fueltruck;
	MapRoutes.ATTACK_s_truck2 = MapRoutes.ATTACK_s_truck1;
	Util.Routes(MapRoutes);
};

global OnBotJoin = function( bot )
{
	Map.SetSpawn1(bot);
};
