//==========================================================================================
//
//	et_slide.gm
//
//	Who  	  	When			What
//------------------------------------------------------------------------------------------
//	^4Tardis	14 October 2010		Initial Script
//
//==========================================================================================
//

global Map =
{
	Debug = 0, // please set to zero before distributing your script

	Allied_Slide_Dyno = 0,
	Axis_Slide_Dyno = 0,
	Talk = true, //set Talk to false if you don't want the bots to cheer after winning game:

	Allied_Slide_Planted = function( trigger )
	{
		Map.Allied_Slide_Dyno += 1;
		Util.MapDebugPrint( "Allied_Slide_Planted" );
	},

	Axis_Slide_Planted = function( trigger )
	{
		Map.Axis_Slide_Dyno += 1;
		Util.MapDebugPrint( "Axis_Slide_Planted" );
	},

	Allied_Slide_Defused = function( trigger )
	{
		Map.Allied_Slide_Dyno -= 1;
		Util.MapDebugPrint( "Allied_Slide_Defused" );
	},

	Axis_Slide_Defused = function( trigger )
	{
		Map.Axis_Slide_Dyno -= 1;
		Util.MapDebugPrint( "Axis_Slide_Defused" );
	},

	Allied_Slide_Destroyed = function( trigger )
	{
		Map.Allied_Slide_Dyno = 0;

		ETUtil.WinningChat( TEAM.AXIS );
		ETUtil.LosingChat( TEAM.ALLIES );
		Util.MapDebugPrint( "Allied_Slide_Destroyed" );
	},

	Axis_Slide_Destroyed = function( trigger )
	{
		Map.Axis_Slide_Dyno = 0;

		ETUtil.WinningChat( TEAM.ALLIES );
		ETUtil.LosingChat( TEAM.AXIS );
		Util.MapDebugPrint( "Axis_Slide_Destroyed" );
	},

};

global OnMapLoad = function()
{
	// Register callback functions
	OnTrigger( "Planted at the Allied Slide", Map.Allied_Slide_Planted );
	OnTrigger( "Planted at the Axis Slide", Map.Axis_Slide_Planted );
	OnTrigger( "Defused at the Allied Slide", Map.Allied_Slide_Defused );
	OnTrigger( "Defused at the Axis Slide", Map.Axis_Slide_Defused );
	OnTrigger( "Axis have destroyed the Allied Slide!", Map.Allied_Slide_Destroyed );
	OnTrigger( "Allies have destroyed the Axis Slide!", Map.Axis_Slide_Destroyed );

	Util.DisableGoal( ".*", true ); // all but routes
	// *** AXIS GOALS ***
	SetAvailableMapGoals( TEAM.AXIS, true, {
		"ATTACK_slideA_.*",
		"DEFEND_slide_.*",
		"PLANT_Allied_Slide",
		"HEALTHCAB_.*",
		"AMMOCAB_.*",
	});
	// *** ALLIES GOALS ***
	SetAvailableMapGoals( TEAM.ALLIES, true, {
		"ATTACK_slide_.*",
		"DEFEND_slideA_.*",
		"PLANT_Axis_Slide",
		"HEALTHCAB_.*",
		"AMMOCAB_.*",
	});
	//Add Use Wp
	Util.AddUseWp("PLANT_Axis_Slide", "axis_slide");
	Util.AddUseWp("PLANT_Axis_Slide", "axis_slide1");
	Util.AddUseWp("PLANT_Allied_Slide", "allied_slide");
	Util.AddUseWp("PLANT_Allied_Slide", "allied_slide1");
	// Max users per goal
	Util.SetMaxUsers( 1, "DEFEND_.*" );
	Util.SetMaxUsers( 1, "GRENADE_.*" );
	Util.SetMaxUsers( 1, "MOUNTMG42_.*" );

	// *** ALLIED GOALS PRIORITY ***
	SetGoalPriority( "ATTACK_.*", 0.0, TEAM.ALLIES, CLASS.ENGINEER );
	SetGoalPriority( "DEFEND_.*", 0.0, TEAM.ALLIES, CLASS.ENGINEER );
	SetGoalPriority( "ATTACK_.*", 0.0, TEAM.ALLIES, CLASS.MEDIC );
	SetGoalPriority( "DEFEND_.*", 0.0, TEAM.ALLIES, CLASS.MEDIC );
	SetGoalPriority( "PLANT_Axis_Slide", 1.0, TEAM.ALLIES, CLASS.ENGINEER );

	// *** AXIS GOALS PRIORITY ***
	SetGoalPriority( "DEFEND_.*", 0.0, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "ATTACK_.*", 0.0, TEAM.AXIS, CLASS.ENGINEER );
	SetGoalPriority( "DEFEND_.*", 0.0, TEAM.AXIS, CLASS.MEDIC );
	SetGoalPriority( "ATTACK_.*", 0.0, TEAM.AXIS, CLASS.MEDIC );
	SetGoalPriority( "PLANT_Allied_Slide", 1.0, TEAM.AXIS, CLASS.ENGINEER );

	// Camp times
	SetMapGoalProperties( "ATTACK_.*", {mincamptime=30, maxcamptime=45});
	SetMapGoalProperties( "DEFEND_.*", {mincamptime=60, maxcamptime=120});

	// Max users per goal
	Util.SetMaxUsers( 1, "DEFEND_.*" );
	Util.SetMaxUsers( 2, "PLANT_.*" );
//Map Routes
	MapRoutes =
	{
		PLANT_Allied_Slide =
		{
			ROUTE_Spawn_Allies  =
			{
				ROUTE_slide  =
				{
					ROUTE_slide_1  =
					{
						ROUTE_slide_2  =
						{
							ROUTE_slide_3  =
							{
								ROUTE_slide_4  =
								{
									ROUTE_slide_5  =
									{
										ROUTE_slide_6  =
										{
										},
									},
								},
							},
						},
					},
					ROUTE_back  =
					{
						ROUTE_back_1  =
						{
							ROUTE_back_2  =
							{
								ROUTE_back_3  =
								{
									ROUTE_back_4  =
									{
										ROUTE_back_5  =
										{
											ROUTE_back_6  =
											{
												ROUTE_back_7  =
												{
													ROUTE_backA_1  =
													{
														ROUTE_slide_3  =
														{
															ROUTE_slide_4  =
															{
																ROUTE_slide_5  =
																{
																	ROUTE_slide_6  =
																	{
																	},
																},
															},
														},
													},
												},
											},
										},
									},
								},
							},
						},
					},
				},
			},
		},
		PLANT_Axis_Slide =
		{
			ROUTE_Axis_Spawn  =
			{
				ROUTE_slideA  =
				{
					ROUTE_slideA_1  =
					{
						ROUTE_slideA_2  =
						{
							ROUTE_slideA_3  =
							{
								ROUTE_slideA_4  =
								{
									ROUTE_slideA_5  =
									{
										ROUTE_slideA_6  =
										{
											ROUTE_slideA_7  =
											{
											},
										},
									},
								},
							},
						},
					},
					ROUTE_backA  =
					{
						ROUTE_backA_1  =
						{
							ROUTE_backA_2  =
							{
								ROUTE_backA_3  =
								{
									ROUTE_backA_4  =
									{
										ROUTE_backA_5  =
										{
											ROUTE_backA_6  =
											{
												ROUTE_backA_7  =
												{
													ROUTE_backA_8  =
													{
														ROUTE_backA_9  =
														{
															ROUTE_slideA_4  =
															{
																ROUTE_slideA_5  =
																{
																	ROUTE_slideA_6  =
																	{
																		ROUTE_slideA_7  =
																		{
																		},
																	},
																},
															},
														},
													},
												},
											},
										},
									},
								},
							},
						},
					},
				},
			},
		},
	};

	Util.Routes(MapRoutes);

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

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