global Map =
{
	Quiet = true, // this gets rid of all the goal initialization spam

	Switches =
	{
		door1 =
		{
			WaypointName = "door1",
			Priority = 0, // always use 0 priority for path through
			Enabled = true,
			Debug = true,
			// the rest of the table can use defaults

			// wait till the door is open
			Wait = function()
			{
				if ( Map.DoorStatus )
				{
					sleep(2);
					return true;
				}
				return false;
			},

		},
	},

	Ammo_Cabinet_t1075 = "AMMOCAB_t1075",
	Ammo_Cabinet_t1084 = "AMMOCAB_t1084",
	Health_Cabinet_t1083 = "HEALTHCAB_t1083",
	Health_Cabinet_t3 = "HEALTHCAB_t3",
	Checkpoint_twc_forward_bunker = "CHECKPOINT_twc_forward_bunker",
	Build_Assault_Ramp = "BUILD_Assault_Ramp",
	Build_Command_Post = "BUILD_Command_Post",
	Build_Depot_Defense = "BUILD_Depot_Defense",
	Build_Generator = "BUILD_Generator",
	Build_MG42 = "BUILD_MG42",
	Plant_Assault_Ramp = "PLANT_Assault_Ramp",
	Plant_Command_Post = "PLANT_Command_Post",
	Plant_Depot_Defense = "PLANT_Depot_Defense",
	Plant_Fuel_Depot = "PLANT_Fuel_Depot",
	Plant_Generator = "PLANT_Generator",
	Plant_MG42 = "PLANT_MG42",
	Mount_MG42 = "MOUNTMG42_MG42",
	Repair_MG42 = "REPAIRMG42_MG42",

	DoorStatus = false, //closed

	Assault_Ramp_Built = function( trigger )
	{
		SetAvailableMapGoals( TEAM.ALLIES, true, "CHECKPOINT_twc_forward_bunker" );

		print( "Assault_Ramp_Built" );
	},

	Command_Post_Built = function( trigger )
	{
		print( "Command_Post_Built" );
	},

	Depot_Defense_Built = function( trigger )
	{
		SetAvailableMapGoals( TEAM.ALLIES, false, {
			"PLANT_Fuel_Depot",
			"DEFEND_def1",
			"DEFEND_dyno",
		});

		print( "Depot_Defense_Built" );
	},

	Generator_Built = function( trigger )
	{
		print( "Generator_Built" );
	},

	MG42_Built = function( trigger )
	{
		print( "MG42_Built" );
	},

	Assault_Ramp_Destroyed = function( trigger )
	{
		SetAvailableMapGoals( TEAM.ALLIES, false, "CHECKPOINT_twc_forward_bunker" );

		print( "Assault_Ramp_Destroyed" );
	},

	Command_Post_Destroyed = function( trigger )
	{
		print( "Command_Post_Destroyed" );
	},

	Depot_Defense_Destroyed = function( trigger )
	{
		SetAvailableMapGoals( TEAM.ALLIES, true, "PLANT_Fuel_Depot" );
		SetAvailableMapGoals( TEAM.ALLIES, false, "BUILD_Command_Post" );
		SetAvailableMapGoals( TEAM.ALLIES, true, {
			"DEFEND_def1",
			"DEFEND_dyno",
		});

		print( "Depot_Defense_Destroyed" );
	},

	Fuel_Depot_Destroyed = function( trigger )
	{
		print( "Fuel_Depot_Destroyed" );
	},

	Generator_Destroyed = function( trigger )
	{
		print( "Generator_Destroyed" );
	},

	MG42_Destroyed = function( trigger )
	{
		print( "MG42_Destroyed" );
	},

	twc_forward_bunker_Axis_Captured = function( trigger )
	{
		print( "twc_forward_bunker_Axis_Captured" );
	},

	twc_forward_bunker_Allies_Captured = function( trigger )
	{
		print( "twc_forward_bunker_Allies_Captured" );
	},

	SM_Door_Lever = function(trigger)
	{
		// disable the switch immediately
		Map.Switches.door1.Enabled = false;
	},

	SM_Door = function(trigger)
	{
		vel = ToVector(trigger.Action);

		if ( vel.y > 0 )
		{
			if ( Map.Switches.door1.Debug ){
				print( "Door Opening" );
			}

			Map.DoorStatus = true;
			Map.Switches.door1.Enabled = false;
		}
		else
		{
			if ( Map.Switches.door1.Debug ){
				print( "Door Closing" );
			}

			Map.DoorStatus = false;
			Map.Switches.door1.Enabled = true;
		}

	},

};

global OnMapLoad = function()
{
	OnTrigger( "The Assault Ramp has been constructed.", Map.Assault_Ramp_Built );
	OnTrigger( "MISSING_STRING", Map.Command_Post_Built );
	OnTrigger( "The Depot Defense has been constructed.", Map.Depot_Defense_Built );
	OnTrigger( "The Generator has been constructed.", Map.Generator_Built );
	OnTrigger( "MISSING_STRING", Map.MG42_Built );
	OnTrigger( "The Assault Ramp has been destroyed.", Map.Assault_Ramp_Destroyed );
	OnTrigger( "MISSING_STRING", Map.Command_Post_Destroyed );
	OnTrigger( "The Depot Defense has been destroyed.", Map.Depot_Defense_Destroyed );
	OnTrigger( "MISSING_STRING", Map.Fuel_Depot_Destroyed );
	OnTrigger( "The Generator has been destroyed.", Map.Generator_Destroyed );
	OnTrigger( "MISSING_STRING", Map.MG42_Destroyed );
	OnTrigger( "Axis reclaim the Forward Bunker!", Map.twc_forward_bunker_Axis_Captured );
	OnTrigger( "Allies capture the Forward Bunker!", Map.twc_forward_bunker_Allies_Captured );
	OnTrigger( "sm_door_north_goto", Map.SM_Door );
	OnTrigger( "sm_door_lever_goto", Map.SM_Door_Lever );


	SetAvailableMapGoals( TEAM.ALLIES, false, {
		"PLANT_Fuel_Depot",
		"CHECKPOINT_twc_forward_bunker",
		"DEFEND_.*",
	});
	SetAvailableMapGoals( TEAM.AXIS, false, "DEFEND_dyno" );
	SetMapGoalProperties( "DEFEND_fuel1", {mincamptime=30, maxcamptime=90});
	SetMapGoalProperties( "DEFEND_def1", {mincamptime=90, maxcamptime=360});
	SetMapGoalProperties( "DEFEND_dyno", {mincamptime=90, maxcamptime=360});

	Util.UpdateSwitchData();

	print( "OnMapLoad" );
};


global OnBotJoin = function( bot )
{
	bot.TargetBreakableDist = 2000.0;
};
