package coverSelectionPresets
using RTDB

string[] presets = 
[
	"DefaultPreset", "MeleeRingPreset", "CloseRingPreset", "MediumRingPreset", "FartherMediumRingPreset", "SandevistanMediumRingPreset", "FarRingPreset", "ExtremeRingPreset", "DefaultInitialPreset", "MeleeRingInitialPreset", "CloseRingInitialPreset", "MediumRingInitialPreset", "FartherMediumRingInitialPreset", "SandevistanMediumRingInitialPreset", "FarRingInitialPreset", "ExtremeRingInitialPreset", "DefaultPresetNoLOS", "MeleeRingPresetNoLOS", "CloseRingPresetNoLOS", "MediumRingPresetNoLOS", "FartherMediumRingPresetNoLOS", "SandevistanMediumRingPresetNoLOS", "FarRingPresetNoLOS", "ExtremeRingPresetNoLOS", "DefaultInitialPresetNoLOS", "MeleeRingInitialPresetNoLOS", "CloseRingInitialPresetNoLOS", "MediumRingInitialPresetNoLOS", "FartherMediumRingInitialPresetNoLOS", "SandevistanMediumRingInitialPresetNoLOS", "FarRingInitialPresetNoLOS", "ExtremeRingInitialPresetNoLOS", "CloseRingInitialPreset_Shotgunner", "CloseRingPreset_Shotgunner", "CloseRingPresetNoLOS_Shotgunner", "CloseRingInitialPresetNoLOS_Shotgunner", "SecondStageDefaultPreset", "AngleDistanceCoverPreset", "CPO_ShotgunnerPreset", "CPO_ShotgunnerInitialPreset", "CPO_RiflemanPreset", "CPO_RiflemanInitialPreset", "Follower", "FollowerCombat", "FollowerCombatNoLOS", "CallReinforcementInitialPreset", "CallReinforcementPreset", "CrowdNoLOS", "CrowdInitialNoLOS", "FollowerNoWeaponCombat", "FollowerNoWeaponCombatInitial", "NoCoverNoShootingSpotsPreset", "MediumRingInitialPresetNoLOS_Netrunner", "FarRingInitialPresetNoLOS_Netrunner", "ExtremeRingInitialPresetNoLOS_Netrunner", "DefaultInitialPresetNoLOS_Netrunner", "MediumRingPresetNoLOS_Netrunner", "FarRingPresetNoLOS_Netrunner", "ExtremeRingPresetNoLOS_Netrunner", "DefaultPresetNoLOS_Netrunner"
];
NoCoverNoShootingSpotsPreset : CoverSelectionPreset
{
	filtering = 
	[
		"CoverType_None"
	];
	scoring = 
	[
		"CoverType_None"
	];
}

DefaultPreset : CoverSelectionPreset
{
	filtering = 
	[
		"AngleDistance", "NPC_CoverToPlayerDistance", "ThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss", "ClearLineOfSight"
	];
	scoring = 
	[
		"ThreatDistance", "ClearLineOfSight", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Normal"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	usesLineOfSight = true;
}

DefaultInitialPreset : CoverSelectionPreset
{
	filtering = 
	[
		"InitialAngleDistance", "InitialOwnerAngle", "NPC_CoverToPlayerDistance", "InitialThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss", "ClearLineOfSight"
	];
	scoring = 
	[
		"InitialThreatDistance", "ClearLineOfSight", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Normal"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	usesLineOfSight = true;
}

DefaultPresetNoLOS : CoverSelectionPreset
{
	filtering = 
	[
		"AngleDistance", "NPC_CoverToPlayerDistance", "ThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss"
	];
	scoring = 
	[
		"ThreatDistance", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Normal"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
}

DefaultInitialPresetNoLOS : CoverSelectionPreset
{
	filtering = 
	[
		"InitialAngleDistance", "InitialOwnerAngle", "NPC_CoverToPlayerDistance", "InitialThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss"
	];
	scoring = 
	[
		"InitialThreatDistance", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Normal"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
}

DefaultPresetNoLOS_Netrunner : CoverSelectionPreset
{
	filtering = 
	[
		"AngleDistance", "NPC_CoverToPlayerDistance", "ThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss", "CoverType_Cover"
	];
	scoring = 
	[
		"ThreatDistance", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Cover"
	];
}

DefaultInitialPresetNoLOS_Netrunner : CoverSelectionPreset
{
	filtering = 
	[
		"InitialAngleDistance", "InitialOwnerAngle", "NPC_CoverToPlayerDistance", "InitialThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss", "CoverType_Cover"
	];
	scoring = 
	[
		"InitialThreatDistance", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Cover"
	];
}

MeleeRingPreset : CoverSelectionPreset
{
	filtering = 
	[
		"AngleDistance", "NPC_CoverToPlayerDistance", "MeleeRingThreatDistance", "UtilityLoss", "ClearLineOfSight"
	];
	scoring = 
	[
		"MeleeRingThreatDistance", "AbsoluteZLimiter", "UtilityLoss"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Melee";
	usesLineOfSight = true;
}

MeleeRingInitialPreset : CoverSelectionPreset
{
	filtering = 
	[
		"InitialAngleDistance", "InitialOwnerAngle", "NPC_CoverToPlayerDistance", "MeleeRingInitialThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss", "ClearLineOfSight"
	];
	scoring = 
	[
		"MeleeRingInitialThreatDistance", "AbsoluteZLimiter", "UtilityLoss"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Melee";
	usesLineOfSight = true;
}

MeleeRingPresetNoLOS : CoverSelectionPreset
{
	filtering = 
	[
		"AngleDistance", "NPC_CoverToPlayerDistance", "MeleeRingThreatDistance", "UtilityLoss"
	];
	scoring = 
	[
		"MeleeRingThreatDistance", "AbsoluteZLimiter", "UtilityLoss"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Melee";
}

MeleeRingInitialPresetNoLOS : CoverSelectionPreset
{
	filtering = 
	[
		"InitialAngleDistance", "InitialOwnerAngle", "NPC_CoverToPlayerDistance", "MeleeRingInitialThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss"
	];
	scoring = 
	[
		"MeleeRingInitialThreatDistance", "AbsoluteZLimiter", "UtilityLoss"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Melee";
}

CloseRingPreset : CoverSelectionPreset
{
	filtering = 
	[
		"AngleDistance", "NPC_CoverToPlayerDistance", "CloseRingThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss", "ClearLineOfSight"
	];
	scoring = 
	[
		"CloseRingThreatDistance", "ClearLineOfSight", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Normal"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Close";
	usesLineOfSight = true;
}

CloseRingInitialPreset : CoverSelectionPreset
{
	filtering = 
	[
		"InitialAngleDistance", "InitialOwnerAngle", "NPC_CoverToPlayerDistance", "CloseRingInitialThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss", "ClearLineOfSight"
	];
	scoring = 
	[
		"CloseRingInitialThreatDistance", "ClearLineOfSight", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Normal"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Close";
	usesLineOfSight = true;
}

CloseRingPresetNoLOS : CoverSelectionPreset
{
	filtering = 
	[
		"AngleDistance", "NPC_CoverToPlayerDistance", "CloseRingThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss"
	];
	scoring = 
	[
		"CloseRingThreatDistance", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Normal"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Close";
}

CloseRingInitialPresetNoLOS : CoverSelectionPreset
{
	filtering = 
	[
		"InitialAngleDistance", "InitialOwnerAngle", "NPC_CoverToPlayerDistance", "CloseRingInitialThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss"
	];
	scoring = 
	[
		"CloseRingInitialThreatDistance", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Normal"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Close";
}

CloseRingPreset_Shotgunner : CoverSelectionPreset
{
	filtering = 
	[
		"CoverType_Shotgunner", "AngleDistance", "NPC_CoverToPlayerDistance", "ThreatDistance_Shotgunner", "OwnerThreatCoverRelativePos", "UtilityLoss", "ClearLineOfSight"
	];
	scoring = 
	[
		"ThreatDistance_Shotgunner", "ClearLineOfSight", "AbsoluteZLimiter", "UtilityLoss"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Close";
	usesLineOfSight = true;
}

CloseRingInitialPreset_Shotgunner : CoverSelectionPreset
{
	filtering = 
	[
		"CoverType_Shotgunner", "InitialAngleDistance", "InitialOwnerAngle", "NPC_CoverToPlayerDistance", "InitialThreatDistance_Shotgunner", "OwnerThreatCoverRelativePos", "UtilityLoss", "ClearLineOfSight"
	];
	scoring = 
	[
		"InitialThreatDistance_Shotgunner", "ClearLineOfSight", "AbsoluteZLimiter", "UtilityLoss"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Close";
	usesLineOfSight = true;
}

CloseRingPresetNoLOS_Shotgunner : CoverSelectionPreset
{
	filtering = 
	[
		"CoverType_Shotgunner", "AngleDistance", "NPC_CoverToPlayerDistance", "ThreatDistance_Shotgunner", "OwnerThreatCoverRelativePos", "UtilityLoss"
	];
	scoring = 
	[
		"ThreatDistance_Shotgunner", "AbsoluteZLimiter", "UtilityLoss"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Close";
}

CloseRingInitialPresetNoLOS_Shotgunner : CoverSelectionPreset
{
	filtering = 
	[
		"CoverType_Shotgunner", "InitialAngleDistance", "NPC_CoverToPlayerDistance", "InitialOwnerAngle", "InitialThreatDistance_Shotgunner", "OwnerThreatCoverRelativePos", "UtilityLoss"
	];
	scoring = 
	[
		"InitialThreatDistance_Shotgunner", "AbsoluteZLimiter", "UtilityLoss"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Close";
}

MediumRingPreset : CoverSelectionPreset
{
	filtering = 
	[
		"AngleDistance", "NPC_CoverToPlayerDistance", "MediumRingThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss", "ClearLineOfSight"
	];
	scoring = 
	[
		"MediumRingThreatDistance", "ClearLineOfSight", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Normal"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Medium";
	usesLineOfSight = true;
}

MediumRingInitialPreset : CoverSelectionPreset
{
	filtering = 
	[
		"InitialAngleDistance", "InitialOwnerAngle", "NPC_CoverToPlayerDistance", "MediumRingInitialThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss", "ClearLineOfSight"
	];
	scoring = 
	[
		"MediumRingInitialThreatDistance", "ClearLineOfSight", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Normal"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Medium";
	usesLineOfSight = true;
}

MediumRingPresetNoLOS : CoverSelectionPreset
{
	filtering = 
	[
		"AngleDistance", "NPC_CoverToPlayerDistance", "MediumRingThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss"
	];
	scoring = 
	[
		"MediumRingThreatDistance", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Normal"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Medium";
}

MediumRingInitialPresetNoLOS : CoverSelectionPreset
{
	filtering = 
	[
		"InitialAngleDistance", "InitialOwnerAngle", "NPC_CoverToPlayerDistance", "MediumRingInitialThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss"
	];
	scoring = 
	[
		"MediumRingInitialThreatDistance", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Normal"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Medium";
}

MediumRingPresetNoLOS_Netrunner : CoverSelectionPreset
{
	filtering = 
	[
		"AngleDistance", "NPC_CoverToPlayerDistance", "MediumRingThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss", "CoverType_Cover"
	];
	scoring = 
	[
		"MediumRingThreatDistance", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Cover"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Medium";
}

MediumRingInitialPresetNoLOS_Netrunner : CoverSelectionPreset
{
	filtering = 
	[
		"InitialAngleDistance", "InitialOwnerAngle", "NPC_CoverToPlayerDistance", "MediumRingInitialThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss", "CoverType_Cover"
	];
	scoring = 
	[
		"MediumRingInitialThreatDistance", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Cover"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Medium";
}

FartherMediumRingPreset : CoverSelectionPreset
{
	filtering = 
	[
		"AngleDistance", "NPC_CoverToPlayerDistance", "SandevistanMediumRingThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss", "ClearLineOfSight"
	];
	scoring = 
	[
		"SandevistanMediumRingThreatDistance", "ClearLineOfSight", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Normal"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Medium";
	usesLineOfSight = true;
}

FartherMediumRingInitialPreset : CoverSelectionPreset
{
	filtering = 
	[
		"InitialAngleDistance", "InitialOwnerAngle", "NPC_CoverToPlayerDistance", "SandevistanMediumRingInitialThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss", "ClearLineOfSight"
	];
	scoring = 
	[
		"SandevistanMediumRingInitialThreatDistance", "ClearLineOfSight", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Normal"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Medium";
	usesLineOfSight = true;
}

FartherMediumRingPresetNoLOS : CoverSelectionPreset
{
	filtering = 
	[
		"AngleDistance", "NPC_CoverToPlayerDistance", "SandevistanMediumRingThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss"
	];
	scoring = 
	[
		"SandevistanMediumRingThreatDistance", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Normal"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Medium";
}

FartherMediumRingInitialPresetNoLOS : CoverSelectionPreset
{
	filtering = 
	[
		"InitialAngleDistance", "InitialOwnerAngle", "NPC_CoverToPlayerDistance", "SandevistanMediumRingInitialThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss"
	];
	scoring = 
	[
		"SandevistanMediumRingInitialThreatDistance", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Normal"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Medium";
}

FarRingPreset : CoverSelectionPreset
{
	filtering = 
	[
		"AngleDistance", "NPC_CoverToPlayerDistance", "FarRingThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss", "ClearLineOfSight"
	];
	scoring = 
	[
		"FarRingThreatDistance", "ClearLineOfSight", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Normal"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Far";
	usesLineOfSight = true;
}

FarRingInitialPreset : CoverSelectionPreset
{
	filtering = 
	[
		"InitialAngleDistance", "InitialOwnerAngle", "NPC_CoverToPlayerDistance", "FarRingInitialThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss", "ClearLineOfSight"
	];
	scoring = 
	[
		"FarRingInitialThreatDistance", "ClearLineOfSight", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Normal"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Far";
	usesLineOfSight = true;
}

FarRingPresetNoLOS : CoverSelectionPreset
{
	filtering = 
	[
		"AngleDistance", "NPC_CoverToPlayerDistance", "FarRingThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss"
	];
	scoring = 
	[
		"FarRingThreatDistance", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Normal"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Far";
}

FarRingInitialPresetNoLOS : CoverSelectionPreset
{
	filtering = 
	[
		"InitialAngleDistance", "InitialOwnerAngle", "NPC_CoverToPlayerDistance", "FarRingInitialThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss"
	];
	scoring = 
	[
		"FarRingInitialThreatDistance", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Normal"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Far";
}

FarRingPresetNoLOS_Netrunner : CoverSelectionPreset
{
	filtering = 
	[
		"AngleDistance", "NPC_CoverToPlayerDistance", "FarRingThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss", "CoverType_Cover"
	];
	scoring = 
	[
		"FarRingThreatDistance", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Cover"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Far";
}

FarRingInitialPresetNoLOS_Netrunner : CoverSelectionPreset
{
	filtering = 
	[
		"InitialAngleDistance", "InitialOwnerAngle", "NPC_CoverToPlayerDistance", "FarRingInitialThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss", "CoverType_Cover"
	];
	scoring = 
	[
		"FarRingInitialThreatDistance", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Cover"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Far";
}

ExtremeRingPreset : CoverSelectionPreset
{
	filtering = 
	[
		"AngleDistance", "ExtremeRingThreatDistance", "NPC_CoverToPlayerDistance", "OwnerThreatCoverRelativePos", "UtilityLoss", "ClearLineOfSight"
	];
	scoring = 
	[
		"ExtremeRingThreatDistance", "ClearLineOfSight", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Normal"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Extreme";
	usesLineOfSight = true;
}

ExtremeRingInitialPreset : CoverSelectionPreset
{
	filtering = 
	[
		"InitialAngleDistance", "InitialOwnerAngle", "NPC_CoverToPlayerDistance", "ExtremeRingInitialThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss", "ClearLineOfSight"
	];
	scoring = 
	[
		"ExtremeRingInitialThreatDistance", "ClearLineOfSight", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Normal"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Extreme";
	usesLineOfSight = true;
}

ExtremeRingPresetNoLOS : CoverSelectionPreset
{
	filtering = 
	[
		"AngleDistance", "NPC_CoverToPlayerDistance", "ExtremeRingThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss"
	];
	scoring = 
	[
		"ExtremeRingThreatDistance", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Normal"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Extreme";
}

ExtremeRingInitialPresetNoLOS : CoverSelectionPreset
{
	filtering = 
	[
		"InitialAngleDistance", "InitialOwnerAngle", "NPC_CoverToPlayerDistance", "ExtremeRingInitialThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss"
	];
	scoring = 
	[
		"ExtremeRingInitialThreatDistance", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Normal"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Extreme";
}

ExtremeRingPresetNoLOS_Netrunner : CoverSelectionPreset
{
	filtering = 
	[
		"AngleDistance", "NPC_CoverToPlayerDistance", "ExtremeRingThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss", "CoverType_Cover"
	];
	scoring = 
	[
		"ExtremeRingThreatDistance", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Cover"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Extreme";
}

ExtremeRingInitialPresetNoLOS_Netrunner : CoverSelectionPreset
{
	filtering = 
	[
		"InitialAngleDistance", "InitialOwnerAngle", "NPC_CoverToPlayerDistance", "ExtremeRingInitialThreatDistance", "OwnerThreatCoverRelativePos", "UtilityLoss", "CoverType_Cover"
	];
	scoring = 
	[
		"ExtremeRingInitialThreatDistance", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Cover"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Extreme";
}

SecondStageDefaultPreset : CoverSelectionPreset
{
	filtering = 
	[
		"DistanceFromOthers"
	];
	scoring = 
	[
		"DistanceFromOthers"
	];
}

CPO_ShotgunnerPreset : CoverSelectionPreset
{
	filtering = 
	[
		"AngleDistance", "NPC_CoverToPlayerDistance", "CPO_ThreatDistance_Shotgunner", "OwnerThreatCoverRelativePos", "UtilityLoss", "ClearLineOfSight"
	];
	scoring = 
	[
		"CPO_ThreatDistance_Shotgunner", "AbsoluteZLimiter", "UtilityLoss", "ClearLineOfSight"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	usesLineOfSight = true;
	combatRing = "AIRingType.Default";
}

CPO_ShotgunnerInitialPreset : CoverSelectionPreset
{
	filtering = 
	[
		"InitialAngleDistance", "InitialOwnerAngle_Shotgunner", "NPC_CoverToPlayerDistance", "CPO_InitialThreatDistance_Shotgunner", "OwnerThreatCoverRelativePos", "UtilityLoss", "ClearLineOfSight"
	];
	scoring = 
	[
		"CPO_InitialThreatDistance_Shotgunner", "AbsoluteZLimiter", "UtilityLoss", "ClearLineOfSight"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	usesLineOfSight = true;
	combatRing = "AIRingType.Default";
}

CPO_RiflemanPreset : CoverSelectionPreset
{
	filtering = 
	[
		"AngleDistance", "NPC_CoverToPlayerDistance", "CPO_ThreatDistance_Rifleman", "OwnerThreatCoverRelativePos", "UtilityLoss", "ClearLineOfSight"
	];
	scoring = 
	[
		"CPO_ThreatDistance_Rifleman", "AbsoluteZLimiter", "UtilityLoss", "ClearLineOfSight"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	usesLineOfSight = true;
	combatRing = "AIRingType.Default";
}

CPO_RiflemanInitialPreset : CoverSelectionPreset
{
	filtering = 
	[
		"InitialAngleDistance", "InitialOwnerAngle", "NPC_CoverToPlayerDistance", "CPO_InitialThreatDistance_Rifleman", "OwnerThreatCoverRelativePos", "UtilityLoss", "ClearLineOfSight"
	];
	scoring = 
	[
		"CPO_InitialThreatDistance_Rifleman", "AbsoluteZLimiter", "UtilityLoss", "ClearLineOfSight"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	usesLineOfSight = true;
	combatRing = "AIRingType.Default";
}

AngleDistanceCoverPreset : CoverSelectionPreset
{
	filtering = 
	[
		"AngleDistance", "OwnerAngle", "NPC_CoverToPlayerDistance", "OwnerDistance", "ThreatDistance", "UtilityLoss", "ClearLineOfSight"
	];
	scoring = 
	[
		"OwnerDistance", "ThreatDistance", "KeepCurrentCover", "AbsoluteZLimiter", "UtilityLoss", "CoverType_Normal"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	usesLineOfSight = true;
}

ClosestCoverPreset : CoverSelectionPreset
{
	scoring = 
	[
		"ClosestToOwner"
	];
}

CallReinforcementInitialPreset : CoverSelectionPreset
{
	filtering = 
	[
		"InitialAngleDistance"
	];
	scoring = 
	[
		"InitialAngleDistance"
	];
}

CallReinforcementPreset : CoverSelectionPreset
{
	filtering = 
	[
		"InitialAngleDistance"
	];
	scoring = 
	[
		"InitialAngleDistance"
	];
}

CrowdNoLOS : CoverSelectionPreset
{
	filtering = 
	[
		"AngleDistance", "CrowdRingThreatDistance", "UtilityLoss", "CoverType_Cover", "OwnerThreatCoverRelativePos"
	];
	scoring = 
	[
		"CrowdRingThreatDistance", "UtilityLoss", "CoverType_Cover"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
}

CrowdInitialNoLOS : CoverSelectionPreset
{
	filtering = 
	[
		"InitialAngleDistance", "InitialOwnerAngle", "CrowdRingInitialThreatDistance", "UtilityLoss", "CoverType_Cover", "OwnerThreatCoverRelativePos"
	];
	scoring = 
	[
		"CrowdRingInitialThreatDistance", "UtilityLoss", "CoverType_Cover"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
}

Follower : CoverSelectionPreset
{
	filtering = 
	[
		"CoverType_Cover", "Follower_StealthAngleDistanceFilterSmallPrediction", "FollowerStealth_ThreatDistance", "FollowerStealth_ThreatDestinationDistance", "Follower_StealthAngleDistanceFilterLargePrediction", "Follower_StealthCoverToFriendlyTargetDistance"
	];
	scoring = 
	[
		"Follower_StealthAngleDistanceScore", "Follower_StealthCoverToFriendlyTargetDistance", "FollowerFriendlyTargetAngleScoring", "Follower_OwnerDistance", "CoverType_Normal"
	];
	postFiltering = 
	[
		"Follower_PathLengthCoverSelection", "Follower_PathSecurityCoverSelection"
	];
	combatRing = "AIRingType.Default";
}

FollowerCombat : CoverSelectionPreset
{
	filtering = 
	[
		"AngleDistance", "AngleDistanceToCombatTargetWithLowerAngle", "Follower_CoverToFriendlyTargetDistance", "Follower_ThreatDistance", "UtilityLoss", "OwnerThreatCoverRelativePos", "Follower_ClearLineOfSight"
	];
	scoring = 
	[
		"Follower_CoverToFriendlyTargetDistance", "Follower_ThreatDistance", "UtilityLoss", "Follower_ClearLineOfSight", "CoverType_Normal"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	usesLineOfSight = true;
	combatRing = "AIRingType.Default";
}

FollowerCombatNoLOS : CoverSelectionPreset
{
	filtering = 
	[
		"AngleDistance", "AngleDistanceToCombatTargetWithLowerAngle", "Follower_CoverToFriendlyTargetDistance", "Follower_ThreatDistance", "UtilityLoss", "OwnerThreatCoverRelativePos"
	];
	scoring = 
	[
		"Follower_CoverToFriendlyTargetDistance", "Follower_ThreatDistance", "UtilityLoss", "CoverType_Normal"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Default";
}

FollowerNoWeaponCombat : CoverSelectionPreset
{
	filtering = 
	[
		"Follower_CoverToFriendlyTargetDistance", "AngleDistance", "CrowdRingThreatDistance", "UtilityLoss", "CoverType_Cover", "OwnerThreatCoverRelativePos"
	];
	scoring = 
	[
		"CrowdRingThreatDistance", "UtilityLoss", "CoverType_Cover"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Default";
}

FollowerNoWeaponCombatInitial : CoverSelectionPreset
{
	filtering = 
	[
		"Follower_CoverToFriendlyTargetDistance", "InitialAngleDistance", "InitialOwnerAngle", "CrowdRingInitialThreatDistance", "UtilityLoss", "CoverType_Cover", "OwnerThreatCoverRelativePos"
	];
	scoring = 
	[
		"CrowdRingInitialThreatDistance", "UtilityLoss", "CoverType_Cover"
	];
	postFiltering = 
	[
		"PathLengthCoverSelection"
	];
	combatRing = "AIRingType.Default";
}

string[] compoundPresets = 
[
	"NPCCompoundInitial", "NPCCompound", "NPCSandevistanCompoundInitial", "NPCSandevistanCompound", "SniperCompoundInitial", "SniperCompound", "ShotgunnerCompoundInitial", "ShotgunnerCompound", "FollowerCompound", "NetrunnerCompoundInitial", "NetrunnerCompound"
];
ShotgunnerCompoundInitial : CompoundSelectionPreset
{
	presets = 
	[
		"CloseRingInitialPreset_Shotgunner", "CloseRingInitialPresetNoLOS_Shotgunner"
	];
}

ShotgunnerCompound : CompoundSelectionPreset
{
	presets = 
	[
		"CloseRingPreset_Shotgunner", "CloseRingPresetNoLOS_Shotgunner"
	];
}

SniperCompoundInitial : CompoundSelectionPreset
{
	presets = 
	[
		"FartherMediumRingInitialPreset", "FarRingInitialPreset", "ExtremeRingInitialPreset", "DefaultInitialPreset", "FartherMediumRingInitialPresetNoLOS", "FarRingInitialPresetNoLOS", "ExtremeRingInitialPresetNoLOS", "DefaultInitialPresetNoLOS"
	];
}

SniperCompound : CompoundSelectionPreset
{
	presets = 
	[
		"FartherMediumRingPreset", "FarRingPreset", "ExtremeRingPreset", "DefaultPreset", "FartherMediumRingPresetNoLOS", "FarRingPresetNoLOS", "ExtremeRingPresetNoLOS", "DefaultPresetNoLOS"
	];
}

NPCCompoundInitial : CompoundSelectionPreset
{
	presets = 
	[
		"MediumRingInitialPreset", "FarRingInitialPreset", "ExtremeRingInitialPreset", "DefaultInitialPreset", "MediumRingInitialPresetNoLOS", "FarRingInitialPresetNoLOS", "ExtremeRingInitialPresetNoLOS", "DefaultInitialPresetNoLOS"
	];
}

NPCCompound : CompoundSelectionPreset
{
	presets = 
	[
		"MediumRingPreset", "FarRingPreset", "ExtremeRingPreset", "DefaultPreset", "MediumRingPresetNoLOS", "FarRingPresetNoLOS", "ExtremeRingPresetNoLOS", "DefaultPresetNoLOS"
	];
}

NetrunnerCompoundInitial : CompoundSelectionPreset
{
	presets = 
	[
		"ExtremeRingInitialPresetNoLOS_Netrunner", "FarRingInitialPresetNoLOS_Netrunner", "MediumRingInitialPresetNoLOS_Netrunner", "DefaultInitialPresetNoLOS_Netrunner"
	];
	gatherRadius = 20.f;
}

NetrunnerCompound : CompoundSelectionPreset
{
	presets = 
	[
		"ExtremeRingPresetNoLOS_Netrunner", "FarRingPresetNoLOS_Netrunner", "MediumRingPresetNoLOS_Netrunner", "DefaultPresetNoLOS_Netrunner"
	];
	gatherRadius = 20.f;
}

NPCSandevistanCompoundInitial : CompoundSelectionPreset
{
	presets = 
	[
		"SandevistanMediumRingInitialPreset", "FarRingInitialPreset", "ExtremeRingInitialPreset", "DefaultInitialPreset", "SandevistanMediumRingInitialPresetNoLOS", "FarRingInitialPresetNoLOS", "ExtremeRingInitialPresetNoLOS", "DefaultInitialPresetNoLOS"
	];
}

NPCSandevistanCompound : CompoundSelectionPreset
{
	presets = 
	[
		"SandevistanMediumRingPreset", "FarRingPreset", "ExtremeRingPreset", "DefaultPreset", "SandevistanMediumRingPresetNoLOS", "FarRingPresetNoLOS", "ExtremeRingPresetNoLOS", "DefaultPresetNoLOS"
	];
}

FollowerCompound : CompoundSelectionPreset
{
	presets = 
	[
		"FollowerCombat", "FollowerCombatNoLOS"
	];
}

