// crapshoot: just needs tested i guess

global Map =
{
	Ammo_Cabinet_south_ammocabinet = "AMMOCAB_south_ammocabinet",
	Health_Cabinet_south_healthcabinet = "HEALTHCAB_south_healthcabinet",
	Checkpoint_oldcityflag = "CHECKPOINT_oldcityflag",
	Flag_radarbox1 = "FLAG_radarbox1",
	Flag_radarbox2 = "FLAG_radarbox2",
	Build_Command_Post = "BUILD_Command_Post",
	Plant_Command_Post = "PLANT_Command_Post",
	Plant_Main_Door = "PLANT_Main_Door",
	Plant_Side_Door = "PLANT_Side_Door",
        Cappoint_50 = "CAPPOINT_50",

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

	obj2_Taken = function()
	{

		SetAvailableMapGoals( TEAM.AXIS, false, {
			"DEFEND_GOLD_2",
			"DEFEND_GOLD_3",
			"ATTACK_GOLD_.*",
		});
//~		SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_DEF_1" );
		SetAvailableMapGoals( TEAM.AXIS, true, {
			"DEFEND_DEF_.*",
			"DEFEND_objtaken",
		});
		SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_ag.*" );

		Util.MapDebugPrint( "obj2_taken" );
	},

	obj2_Returned = function()
	{

		SetAvailableMapGoals( TEAM.AXIS, true, {
			"DEFEND_GOLD_.*",
			"ATTACK_GOLD_.*",
		});


		SetAvailableMapGoals( TEAM.AXIS, false, {
			"DEFEND_DEF_.*",
			"DEFEND_objtaken",
		});
		SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_ag.*" );

		Util.MapDebugPrint( "obj2_returned" );
	},

	obj2_secured = function()
	{


//~		SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_DEF_1" );
		SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_DEF_.*" );
		SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_ag.*" );

		Util.MapDebugPrint( "Allies-obj2_secured" );
	},

	obj1_Taken = function()
	{

		SetAvailableMapGoals( TEAM.AXIS, false, {
			"DEFEND_GOLD_.*",
			"ATTACK_GOLD_.*",
		});
		SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_DEF_.*" );

//~		SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_objtaken" );
		SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_ag.*" );

		Util.MapDebugPrint( "obj1_taken" );
	},

	obj1_Returned = function()
	{

		SetAvailableMapGoals( TEAM.AXIS, true, {
			"DEFEND_GOLD_2",
			"ATTACK_GOLD_3",
		});

		SetAvailableMapGoals( TEAM.AXIS, false, {
			"ATTACK_GOLD_1",
			"DEFEND_DEF_.*",
			"DEFEND_objtaken",
		});
		SetAvailableMapGoals( TEAM.ALLIES, true, "ATTACK_ag.*" );

		Util.MapDebugPrint( "obj1_returned" );
	},

	obj1_secured = function()
	{


		SetAvailableMapGoals( TEAM.AXIS, true, {
			"DEFEND_DEF_1",
			"DEFEND_DEF_2",
		});
		SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_ag.*" );

		Util.MapDebugPrint( "Allies-obj1_secured" );
	},

	allied_compost_built_Built = function()
	{

		Util.MapDebugPrint( "allied_compost_built_Built" );
	},

	oldcitywall_Destroyed = function()
	{
		SetAvailableMapGoals( TEAM.AXIS, true, {
			"DEFEND_GOLD_2",
			"ATTACK_GOLD_.*",
		});

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

		SetAvailableMapGoals( TEAM.ALLIES, true, {
			"FLAG_radarbox1",
			"FLAG_radarbox2",
			"ATTACK_ag.*",
		});

		Util.MapDebugPrint( "oldcitywall_Destroyed" );
	},

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

	dynamitetest_Destroyed = function()
	{

		SetAvailableMapGoals( TEAM.ALLIES, true, {
			"FLAG_radarbox1",
			"FLAG_radarbox2",
		});
		SetAvailableMapGoals( TEAM.AXIS, true, "ATTACK_GOLD_.*" );
		SetAvailableMapGoals( TEAM.AXIS, false, {
			"DEFEND_DEF_.*",
			"DEFEND_def_.*",
		});
		SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_GOLD_2" );

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

		foreach ( id and bot in BotTable )
		{
			if ( bot.GetTeam() == TEAM.AXIS )
			{
				if ( RandInt(0,1) < 1)
				{
					bot.ChangeSpawnPoint( 2 ); // downstairs
				}
				else
				{
					bot.ChangeSpawnPoint( 1 ); //flag
				}
			}


		}

		Util.MapDebugPrint( "dynamitetest_Destroyed" );
	},

 	Allies_Capture_Flag = function()
 	{

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

 		Util.MapDebugPrint( "Allies_Capture_Flag" );
 	},

 	Axis_Capture_Flag = function()
 	{


 		SetAvailableMapGoals( TEAM.AXIS, true, "DEFEND_objtaken" );
		foreach ( id and bot in BotTable )
		{
			if ( bot.GetTeam() == TEAM.AXIS )
			{
				if ( RandInt(0,1) < 1)
				{
					bot.ChangeSpawnPoint( 3 ); // downstairs
				}
				else
				{
					bot.ChangeSpawnPoint( 3 ); //flag
				}
			}
		}

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

global OnMapLoad = function()
{
	OnTrigger( "Allies have secured the Second Gold Crate!", Map.obj2_secured );
	OnTrigger( "Allies have secured the First Gold Crate!", Map.obj1_secured );
	OnTrigger( "Allies have stolen Second Gold Crate!", Map.obj2_Taken );
	OnTrigger( "Axis have returned Second Gold Crate!", Map.obj2_Returned );
	OnTrigger( "Allies have stolen First Gold Crate!", Map.obj1_Taken );
	OnTrigger( "Axis have returned First Gold Crate!", Map.obj1_Returned );
	OnTrigger( "MISSING_STRING", Map.axis_compost_built_Built );
	OnTrigger( "Allied Command Post constructed. Charge speed increased!", Map.allied_compost_built_Built );
	OnTrigger( "Allies have breached the Main Gate", Map.oldcitywall_Destroyed );
	OnTrigger( "MISSING_STRING", Map.allied_compost_built_Destroyed );
	OnTrigger( "Allies have blown open the Side Door!", Map.dynamitetest_Destroyed );
 	OnTrigger( "Allies capture the Palace!", Map.Allies_Capture_Flag );
 	OnTrigger( "Axis reclaim the Palace!", Map.Axis_Capture_Flag );


	Util.SetGoalOffset( -20, -80, 0, "PLANT_Main_Door" );
	Util.SetGoalOffset( -20, 0, 0, "PLANT_Side_Door" );
	Util.SetGoalOffset( 0, 0, -50, "CHECKPOINT_oldcityflag" );

	//SetAvailableMapGoals( TEAM.ALLIES, false, "DEFEND_GOLD_2" ); //cs: this doesn't exist
	SetAvailableMapGoals( TEAM.ALLIES, false, {
		"ATTACK_GOLD.*",
		"ATTACK_FLAG_1",
	});
	SetAvailableMapGoals( TEAM.AXIS, false, {
		"ATTACK_FLAG_1",
		"ATTACK_ag.*",
	});
	SetAvailableMapGoals( TEAM.ALLIES, false, "ATTACK_ag.*" );
	SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_objtaken" );

	//SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_GOLD_2" ); //cs: this doesn't exist
	SetAvailableMapGoals( TEAM.AXIS, false, "ATTACK_GOLD_.*" );


	SetAvailableMapGoals( TEAM.ALLIES, false, {
		"DEFEND_objtaken",
		"DEFEND_DEF_.*",
	});

	SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_objtaken" );
	SetAvailableMapGoals( TEAM.ALLIES, false, {
		"FLAG_radarbox1",
		"FLAG_radarbox2",
	});

	SetAvailableMapGoals( TEAM.AXIS, false, "ROUTE_.*" );
	SetAvailableMapGoals( TEAM.ALLIES, false, {
		"ROUTE_fs3",
		"ARTILLERY_.*",
		"CALLARTILLERY.*",
	});
	SetAvailableMapGoals( TEAM.AXIS, false, {
		"ARTILLERY_.*",
		"CALLARTILLERY.*",
	});

	Util.SetMaxUsers( 1, "DEFEND_.*" );


        MapRoutes =
        {
                PLANT_Main_Door =
                {
                        ROUTE_ally1  =
                        {
                                ROUTE_ally2  =
                                {
                                        Weight = 3,
                                        ROUTE_ally3  =
                                        {
                                                ROUTE_ally4  =
                                                {
                                                        ROUTE_fs4  =
                                                        {
                                                                ROUTE_ally5  =
                                                                {
                                                                },
                                                        },
                                                },
                                        },
                                },
                                ROUTE_ally6  =
                                {
                                        ROUTE_ally7  =
                                        {
                                                ROUTE_ally8  =
                                                {
                                                        ROUTE_fs3  =
                                                        {
                                                        },
                                                },
                                        },
                                },
                        },
                },
                FLAG_radarbox1 =
                {
                        ROUTE_fs2  =
                        {
                                ROUTE_fs3  =
                                {
                                        Weight = 3,
                                        ROUTE_fs4  = { },
                                        ROUTE_fs5  = { },
                                        ROUTE_gold3  = { },
                                        ROUTE_fs6  = { },
                                        ROUTE_fs7  = { },
                                        ROUTE_fs8  = { },
                                        ROUTE_fs9  = { },
                                        ROUTE_fs10  = { },
                                        ROUTE_fs11  = { },
                                        ROUTE_fs23  = {},
                                },
                                ROUTE_fs13  =
                                {
                                        ROUTE_gold2  =
                                        {
                                                ROUTE_fs18  = {},
                                                ROUTE_fs20  = {},
                                                ROUTE_fs21  = {},
                                                ROUTE_fs22  = {},
                                                ROUTE_fs23  = {},
                                        },
                                        ROUTE_gold1  =
                                        {
                                                ROUTE_fs14  = {},
                                                ROUTE_fs15  = {},
                                                ROUTE_fs16  = {},
                                                ROUTE_fs17  = {},
                                        },
                                },
                        },
                },
                CAPPOINT_50 =
                {
                        ROUTE_objective  =
                        {
                                ROUTE_fs23  =
                                {
                                        ROUTE_fs22  =
                                        {
                                                ROUTE_fs21  =
                                                {
                                                        ROUTE_fs20  =
                                                        {
                                                                ROUTE_gold2  =
                                                                {
                                                                        ROUTE_fs13  =
                                                                        {
                                                                        },
                                                                },
                                                                ROUTE_fs14  =
                                                                {
                                                                        ROUTE_gold1  =
                                                                        {
                                                                                ROUTE_fs13  =
                                                                                {
                                                                                },
                                                                        },
                                                                },
                                                        },
                                                },
                                        },
                                },
                                ROUTE_fs17 =
                                {
                                        ROUTE_fs16  =
                                        {
                                                ROUTE_fs15  =
                                                {
                                                        ROUTE_gold1  =
                                                        {
                                                                ROUTE_fs13  = {},
                                                        },
                                                },
                                        },
                                },
                        },
                },
        };

	MapRoutes.FLAG_radarbox2 = MapRoutes.FLAG_radarbox1;
	MapRoutes.ATTACK_ag1 = MapRoutes.FLAG_radarbox1;
	MapRoutes.ATTACK_ag2 = MapRoutes.FLAG_radarbox1;
	MapRoutes.CHECKPOINT_oldcityflag = MapRoutes.PLANT_Main_Door;
	Util.Routes(MapRoutes);

	Util.MapDebugPrint( "OnMapLoad" );
};

global OnBotJoin = function( bot )
{
	 bot.TargetBreakableDist = 400.0;
	 bot.MaxViewDistance = 3000.0;
};
