enableDebugConsole = 1;
allowFunctionsLog = 1;
joinUnassigned = 0;

class Header
{
	gameType = COOP;
	minPlayers = 1;
	maxPlayers = 40;
};

class CfgRespawnTemplates
{
	class AW_MenuInventory
	{
		onPlayerKilled = "AW_fnc_respawnMenuInventory";
		onPlayerRespawn = "AW_fnc_respawnMenuInventory";
	};
};

//respawn = "BASE";
//respawnDelay = 5;
//respawnTemplates[] = {"Counter", "MenuPosition", "AW_MenuInventory"};
Respawn = 3;											// 0 = none. 1 = bird. 2 = instant where died. 3 = base or respawn_west marker. 4 = respawn with team, or bird. 5 = into AI or bird.
RespawnDelay = 4;										// Delay prior to respawn, ensure longer than BTC revive delay.
RespawnDialog = 0;										// default = 1. show respawn timer and scoreboard when killed.

class Params
{
	class title1
	{
		title = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Generic Settings ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
		values[] = {0};
		texts[] = {""};
		default = 0;
	};

		class startTimeHour
		{
			title = "Which hour should we start the mission on?";
			values[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23};
			texts[] = {"00:00", "01:00", "02:00", "03:00", "04:00", "05:00", "06:00", "07:00", "08:00", "09:00", "10:00", "11:00", "12:00", "13:00", "14:00", "15:00", "16:00", "17:00", "18:00", "19:00", "20:00", "21:00", "22:00", "23:00"};
			default = 6;
		};

		class startTimeMinutes
		{
			title = "How many minutes past the hour should the mission start?";
			values[] = {0, 0.08, 0.17, 0.25, 0.33, 0.42, 0.5, 0.58, 0.67, 0.75, 0.83, 0.92};
			texts[] = {"None", "5 minutes", "10 minutes", "15 minutes", "20 minutes", "25 minutes", "30 minutes", "35 minutes", "40 minutes", "45 minutes", "50 minutes", "55 minutes"};
			default = 0;
		};

		class pilotRestrictions
		{
			title = "Who is allowed to fly?";
			values[] = {0, 1, 2, 3};
			texts[] = {"Everyone", "Pilots", "Administrators", "Pilots & Administrators"};
			default = 1;
		};

		class bodyLimit
		{
			title = "Maximum number of dead bodies on the map";
			values[] = {5, 10, 20, 50, 75, 100, 200};
			texts[] = {"5", "10", "20", "50 (Recommended)", "75", "100", "200 (NOT recommended)"};
			default = 50;
		};

		class restrictWeapons
		{
			title = "Should we restrict weaponry to their relevant classes?";
			values[] = {0, 1};
			texts[] = {"No", "Yes"};
			default = 1;
		};

	class gap1
	{
		title = "";
		values[] = {0};
		texts[] = {""};
		default = 0;
	};

	class gap2
	{
		title = "";
		values[] = {0};
		texts[] = {""};
		default = 0;
	};

	class title2
	{
		title = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bases ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
		values[] = {0};
		texts[] = {""};
		default = 0;
	};

		class base_gracePeriod
		{
			title = "Grace period given to new bases before they're vulnerable to attack";
			values[] = {0, 300, 600, 900};
			texts[] = {"None (counter-attacks are fun, right?)", "5 minutes", "10 minutes", "15 minutes"};
			default = 0;
		};

		class base_basesOwnedBeforeAttacks
		{
			title = "Number of bases that must be owned before bases are vulnerable to attack";
			values[] = {2, 3, 4, 5, 6, 7, 8, 9, 10};
			texts[] = {"2", "3", "4", "5", "6", "7", "8", "9", "10"};
			default = 2;
		};

		class base_minTimeBeforeAttack
		{
			title = "Minimum time between base attacks";
			values[] = {5, 900, 1800, 2700, 3600, 4500, 5400, 6300, 7200};
			texts[] = {"5 seconds (DEV)", "15 minutes", "30 minutes", "45 minutes", "1 hour", "1 hour 15 minutes", "1 hour 30 minutes", "1 hour 45 minutes", "2 hours"};
			default = 1800;
		};

		class base_maxTimeBeforeAttack
		{
			title = "Maximum time between base attacks (must be larger than minimum time)";
			values[] = {5, 900, 1800, 2700, 3600, 4500, 5400, 6300, 7200};
			texts[] = {"5 seconds (DEV)", "15 minutes", "30 minutes", "45 minutes", "1 hour", "1 hour 15 minutes", "1 hour 30 minutes", "1 hour 45 minutes", "2 hours"};
			default = 5400;
		};

	class gap3
	{
		title = "";
		values[] = {0};
		texts[] = {""};
		default = 0;
	};

	class gap4
	{
		title = "";
		values[] = {0};
		texts[] = {""};
		default = 0;
	};

	class title3
	{
		title = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Main AOs ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
		values[] = {0};
		texts[] = {""};
		default = 0;
	};

		class subUnique
		{
			title = "Should Sub-Objectives be unique?";
			values[] = {0, 1};
			texts[] = {"No", "Yes"};
			default = 0;
		};

		class main_minSubObjectivesToSpawn
		{
			title = "Minimum amount of Sub-Objectives to spawn";
			values[] = {0, 1, 2, 3, 4, 5};
			texts[] = {"0", "1", "2", "3", "4", "5"};
			default = 1;
		};

		class main_maxSubObjectivesToSpawn
		{
			title = "Maximum amount of Sub-Objectives to spawn";
			values[] = {0, 1, 2, 3, 4, 5};
			texts[] = {"0", "1", "2", "3", "4", "5"};
			default = 3;
		};

		class subRadius
		{
			title = "How large an area should Sub-Objectives cover?";
			values[] = {50, 100, 150, 200, 250, 300, 350, 400, 450, 500};
			texts[] = {"50m", "100m", "200m", "250m", "300m", "350m", "400m", "450m", "500m"};
			default = 50;
		};

	class gap5
	{
		title = "";
		values[] = {0};
		texts[] = {""};
		default = 0;
	};

	class gap6
	{
		title = "";
		values[] = {0};
		texts[] = {""};
		default = 0;
	};

	class title4
	{
		title = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Tactical Missions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
		values[] = {0};
		texts[] = {""};
		default = 0;
	};

		class tacticalMissionsEnabled
		{
			title = "Enable Tactical Missions?";
			values[] = {0, 1};
			texts[] = {"No", "Yes"};
			default = 1;
		};

		class tacticalNumber
		{
			title = "Amount of Tactical Missions being created at random";
			values[] = {1, 2, 3, 4, 5};
			texts[] = {"1", "2", "3", "4", "5"};
			default = 2;
		};

		class tacticalUnique
		{
			title = "Should Tactical Missions be unique? (i.e. no duplicates on the map)";
			values[] = {0, 1};
			texts[] = {"No", "Yes"};
			default = 0;
		};

		class tacticaRadius
		{
			title = "How large an area should Tactical Missions cover?";
			values[] = {50, 100, 150, 200, 250, 300, 350, 400, 450, 500};
			texts[] = {"50m", "100m", "200m", "250m", "300m", "350m", "400m", "450m", "500m"};
			default = 300;
		};

		class tacticalMinTimeBeforeNext
		{
			title = "Minimum time between Tactical Missions spawning";
			values[] = {5, 900, 1800, 2700, 3600, 4500, 5400, 6300, 7200};
			texts[] = {"5 seconds (DEV)", "15 minutes", "30 minutes", "45 minutes", "1 hour", "1 hour 15 minutes", "1 hour 30 minutes", "1 hour 45 minutes", "2 hours"};
			default = 900;
		};

		class tacticalMaxTimeBeforeNext
		{
			title = "Maximum time between Tactical Missions spawning";
			values[] = {60, 900, 1800, 2700, 3600, 4500, 5400, 6300, 7200};
			texts[] = {"1 minute (DEV)", "15 minutes", "30 minutes", "45 minutes", "1 hour", "1 hour 15 minutes", "1 hour 30 minutes", "1 hour 45 minutes", "2 hours"};
			default = 3600;
		};

	class gap7
	{
		title = "";
		values[] = {0};
		texts[] = {""};
		default = 0;
	};

	class gap8
	{
		title = "";
		values[] = {0};
		texts[] = {""};
		default = 0;
	};

	class title5
	{
		title = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Priority Targets ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
		values[] = {0};
		texts[] = {""};
		default = 0;
	};

		class priorityMissionsEnabled
		{
			title = "Enable Priority Targets?";
			values[] = {0, 1};
			texts[] = {"No", "Yes"};
			default = 1;
		};

		class priorityNumber
		{
			title = "Amount of Priority Targets being created at random";
			values[] = {1, 2, 3, 4, 5};
			texts[] = {"1", "2", "3", "4", "5"};
			default = 2;
		};

		class priorityUnique
		{
			title = "Should Priority Targets be unique? (i.e. no duplicates on the map)";
			values[] = {0, 1};
			texts[] = {"No", "Yes"};
			default = 0;
		};

		class priorityMinTimeBeforeNext
		{
			title = "Minimum time between Priority Targets spawning";
			values[] = {5, 1800, 2700, 3600, 4500, 5400, 6300, 7200};
			texts[] = {"5 seconds (DEV)", "30 minutes", "45 minutes", "1 hour", "1 hour 15 minutes", "1 hour 30 minutes", "1 hour 45 minutes", "2 hours"};
			default = 1800;
		};

		class priorityMaxTimeBeforeNext
		{
			title = "Maximum time between Priority Targets spawning";
			values[] = {60, 1800, 2700, 3600, 4500, 5400, 6300, 7200};
			texts[] = {"1 minute (DEV)", "30 minutes", "45 minutes", "1 hour", "1 hour 15 minutes", "1 hour 30 minutes", "1 hour 45 minutes", "2 hours"};
			default = 7200;
		};

		class priorityWarnBeforeAttack
		{
			title = "Should players be warned before a Priority Target engages?";
			values[] = {0, 1};
			texts[] = {"No", "Yes"};
			default = 1;
		};

		class priorityMinTimeBeforeAttack
		{
			title = "Minimum time bewteen Priority Target fire (if applicable)";
			values[] = {60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, 270, 285, 300};
			texts[] = {"1 minute", "1 minute 15 seconds", "1 minute 30 seconds", "1 minute 45 seconds", "2 minutes", "2 minutes 15 seconds", "2 minutes 30 seconds", "2 minutes 45 seconds", "3 minutes", "3 minutes 15 seconds", "3 minutes 30 seconds", "3 minutes 45 seconds", "4 minutes", "4 minutes 15 seconds", "4 minutes 30 seconds", "4 minutes 45 seconds", "5 minutes"};
			default = 60;
		};

		class priorityMaxTimeBeforeAttack
		{
			title = "Maximum time bewteen Priority Target fire (if applicable)";
			values[] = {60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, 270, 285, 300};
			texts[] = {"1 minute", "1 minute 15 seconds", "1 minute 30 seconds", "1 minute 45 seconds", "2 minutes", "2 minutes 15 seconds", "2 minutes 30 seconds", "2 minutes 45 seconds", "3 minutes", "3 minutes 15 seconds", "3 minutes 30 seconds", "3 minutes 45 seconds", "4 minutes", "4 minutes 15 seconds", "4 minutes 30 seconds", "4 minutes 45 seconds", "5 minutes"};
			default = 180;
		};

		class priorityChanceToUseAPShells
		{
			title = "The percent chance for enemy artillery to use AP shells in Priority Target missions";
			values[] = {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1};
			texts[] = {"0%", "10%", "20%", "30%", "40%", "50%", "60%", "70%", "80%", "90%", "100%"};
			default = 0.2;
		};

	class gap9
	{
		title = "";
		values[] = {0};
		texts[] = {""};
		default = 0;
	};

	class gap10
	{
		title = "";
		values[] = {0};
		texts[] = {""};
		default = 0;
	};

	class title6
	{
		title = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ghost Missions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
		values[] = {0};
		texts[] = {""};
		default = 0;
	};

		class ghostMissionsEnabled
		{
			title = "Enable Ghost Missions?";
			values[] = {0, 1};
			texts[] = {"No", "Yes"};
			default = 1;
		};

		class ghostNumber
		{
			title = "Amount of Ghost Missions being created at random";
			values[] = {1, 2, 3, 4, 5};
			texts[] = {"1", "2", "3", "4", "5"};
			default = 2;
		};

		class ghostUnique
		{
			title = "Should Ghost Missions be unique? (i.e. no duplicates on the map)";
			values[] = {0, 1};
			texts[] = {"No", "Yes"};
			default = 0;
		};

		class ghostRadius
		{
			title = "How large an area should Ghost Missions cover?";
			values[] = {50, 100, 150, 200, 250, 300, 350, 400, 450, 500};
			texts[] = {"50m", "100m", "200m", "250m", "300m", "350m", "400m", "450m", "500m"};
			default = 300;
		};

		class ghostMinTimeBeforeNext
		{
			title = "Minimum time between Ghost Missions spawning";
			values[] = {900, 1800, 2700, 3600, 4500, 5400, 6300, 7200};
			texts[] = {"15 minutes", "30 minutes", "45 minutes", "1 hour", "1 hour 15 minutes", "1 hour 30 minutes", "1 hour 45 minutes", "2 hours"};
			default = 900;
		};

		class ghostMaxTimeBeforeNext
		{
			title = "Maximum time between Ghost Missions spawning";
			values[] = {900, 1800, 2700, 3600, 4500, 5400, 6300, 7200};
			texts[] = {"15 minutes", "30 minutes", "45 minutes", "1 hour", "1 hour 15 minutes", "1 hour 30 minutes", "1 hour 45 minutes", "2 hours"};
			default = 3600;
		};
};

author = "Rarek [AW]";
overviewText = "Invade &amp; Annex is the ever-popular co-operative game-mode allowing players to unite to overcome an increasingly-large OPFOR force. I&amp;A 3 hails in tonnes of new content in an all-new, perfectly co-operative experience. Go on; give it a go.";
OnLoadName = "AW Invade & Annex 3";
OnLoadMission = "Invade &amp; Annex is an ever-popular co-operative game-mode allowing players to unite to overcome an increasingly-large OPFOR force. See www.AhoyWorld.co.uk for more information.";
loadScreen = "images\loadingScreen.jpg";
overviewPicture = "images\loadingScreen.jpg";

//disabledAI = 1;
//#include "VAS\menu.hpp"

class CfgFunctions
{
	#include "VAS\cfgfunctions.hpp"

	class AW
	{
		tag = "AW";
		class general
		{
			file = "functions\generic";
			class startMission			{ description = "Starts a mission with 4 given parameters."; };
			class childrenComplete		{ description = "Returns whether or not a task's child tasks are complete."; };
			class findSpace				{ description = "Finds space using a variety of parameters; designed for Tactical Mission / Priority Target development."; };
			class getFuzzyPos			{ description = "Gets a random position within a given radius."; };
			class updateMission			{ description = "Updates missions!"; };
			class setFSMVariable		{ description = "Sets FSM variables exclusively on the server."; };
			class randomPosTrigger		{ description = "Finds a random position within a trigger/marker area."; };
		};

		class bases
		{
			file = "functions\bases";
			class baseSpawn 					{ description = "This better work!"; };
			class findNearestBase		{ description = "Finds the nearest base to the given position."; };
		};

		class garbage
		{
			file = "functions\garbage";
			class addDead				{ description = "Buries dead objects once the body limit is reahed."; };
			class collectGarbage		{ description = "Cleans up given/all groups / dead units."; };
		};

		class players
		{
			file = "functions\players";
			class givePoints			{ description = "Gives points to a player with an optional notification"; };
			class showNotification		{ description = "Shows the desired notification"; };
			class playSound				{ description = "Plays sounds globally."; };
			class setRadioChannels		{ description = "Sets up radio channels on servers/clients."; };
			class getRoleItems			{ description = "Gets all role-exclusive items."; };
			class respawnMenuInventory	{ description = "A tweaked version of BIS_fnc_respawnMenuInventory to allow for role assignment."; };
		};

		class units
		{
			file = "functions\units";
			class spawnEnemy			{ description = "Spawns the required amount of enemies"; };
			class setBehaviour			{ description = "Sets behaviour of given troops."; };
			class createVehicle			{ description = "Creates a vehicle and adds a KILLED EH, passing the object to AW_fnc_addDead."; };
			class respawnVehicle		{ description = "Handles the respawning of vehicles in friendly bases alongside their relevant markers."; };
		};

		class markers
		{
			file = "functions\markers";
			class createJIPstateMarker	{ description = "Creates a marker using a specific template."; };
			class deleteMarker			{ description = "Handles JIP-compatible deletion of markers."; };
			class JIPmarkers			{ description = "Allows JIPPs to create local versions of globally-existing markers."; };
			class addJIPmarker			{ description = "Adds a marker to the JIP marker array."; };
			class attachMarker			{ description = "Attach a marker to an object until either death or a specified condition."; };
		};

		class actions
		{
			file = "functions\actions";
			class createAction	{ description = "Creates a JIP-compatible action on the client and triggers clients to create the action themselves."; };
			class deleteAction	{ description = "Deletes a damned action!"; };
			class JIPactions	{ description = "Allows JIPPs to create already-existing actions on their own machines."; };
		};
	};
};

class CfgRespawnInventory
{
	#include "config\roles.hpp"
};

class CfgNotifications
{
	#include "config\notifications\main.hpp"
	#include "config\notifications\base.hpp"
	#include "config\notifications\tactical.hpp"
	#include "config\notifications\sub.hpp"
	#include "config\notifications\priority.hpp"
	#include "config\notifications\ghost.hpp"
	#include "config\notifications\emplacement.hpp"
	#include "config\notifications\misc.hpp"
};

class CfgMarkers
{
	class base
	{
		#include "config\markers\base.hpp"
	};

	class main
	{
		#include "config\markers\main.hpp"
	};

	class priority
	{
		#include "config\markers\priority.hpp"
	};

	class tactical
	{
		#include "config\markers\tactical.hpp"
	};

	class emplacement
	{
		#include "config\markers\emplacement.hpp"
	};

	class sub
	{
		#include "config\markers\sub.hpp"
	};

	class misc
	{
		#include "config\markers\misc.hpp"
	};

	class veh_respawn
	{
		#include "config\markers\veh_respawn.hpp"
	};
};

class CfgHints
{
	class Base
	{
		displayName = "Bases";
		#include "config\hints\base.hpp"
	};

	class Main
	{
		displayName = "Main AOs";
		#include "config\hints\main.hpp"
	};

	class Tactical
	{
		displayName = "Tactical Missions";
		#include "config\hints\tactical.hpp"
	};

	class Priority
	{
		displayName = "Priority Targets";
		#include "config\hints\priority.hpp"
	};

	class Ghost
	{
		displayName = "Ghost Missions";
		#include "config\hints\ghost.hpp"
	};

	class Sub
	{
		displayName = "Sub-Objectives";
		#include "config\hints\sub.hpp"
	};
};

class CfgSounds
{
	sounds[] = {};
	#include "missions\tactical\getDocuments\config\CfgSounds.hpp"
};

class CfgRadio
{
	sounds[] = {};
	#include "sounds\radio\hq.hpp"
};

class AW_base
{
	#include "config\base.hpp"
};

class AW_ghost
{
	#include "config\ghost.hpp"
};

class AW_main
{
	#include "config\main.hpp"
};

class AW_priority
{
	#include "config\priority.hpp"
};

class AW_sub
{
	#include "config\sub.hpp"
};

class AW_tactical
{
	#include "config\tactical.hpp"
};

class AW_rewards
{
	#include "config\rewards.hpp"
};

class enemy
{
	#include "config\enemy.hpp"
};

class AW_radio
{
	#include "config\radios.hpp"
};

class RscTitles
{
	#include "config\logo.hpp"
};