package coverSelectionParameters
using RTDB

string[] parameters = 
[
	"RandomRatio", "ThreatDistance", "OwnerDistance", "AngleDistance", "CoverHealth", "UtilityLoss", "AbsoluteZLimiter", "OwnerAngle", "DistanceFromOthers", "InitialOwnerDistance", "InitialAngleDistance", "InitialCoverHealth", "InitialOwnerAngle", "InitialUtilityLoss", "ThreatDistance_Shotgunner", "OwnerDistance_Shotgunner", "OwnerAngle_Shotgunner", "InitialThreatDistance_Shotgunner", "InitialOwnerDistance_Shotgunner", "InitialOwnerAngle_Shotgunner", "CPO_ThreatDistance_Shotgunner", "CPO_InitialThreatDistance_Shotgunner", "CPO_ThreatDistance_Rifleman", "CPO_InitialThreatDistance_Rifleman", "ThreatDistance_Sniper", "OwnerDistance_Sniper", "AngleDistance_Sniper", "OwnerAngle_Sniper", "InitialThreatDistance_Sniper", "InitialOwnerDistance_Sniper", "InitialAngleDistance_Sniper", "InitialOwnerAngle_Sniper", "TacticLimiter", "NPC_CoverToPlayerDistance", "AngleDistanceToCombatTargetWithLowerAngle", "Follower_CoverToFriendlyTargetDistance", "Follower_OwnerDistance", "Follower_ThreatDistance", "FollowerStealth_ThreatDistance", "FollowerStealth_ThreatDestinationDistance", "FollowerFriendlyTargetAngleScoring", "Follower_StealthAngleDistanceFilterSmallPrediction", "Follower_StealthAngleDistanceFilterLargePrediction", "Follower_StealthAngleDistanceScore", "MeleeRingThreatDistance", "CloseRingThreatDistance", "MediumRingThreatDistance", "SandevistanMediumRingThreatDistance", "FarRingThreatDistance", "ExtremeRingThreatDistance", "CrowdRingInitialThreatDistance", "CrowdRingThreatDistance", "ClearLineOfSight", "CoverType_Normal", "CoverType_Sniper", "CoverType_Shotgunner", "CoverType_Cover", "CoverType_ShootingSpot", "CoverType_None", "MeleeRingInitialThreatDistance", "CloseRingInitialThreatDistance", "MediumRingInitialThreatDistance", "SandevistanMediumRingInitialThreatDistance", "FarRingInitialThreatDistance", "ExtremeRingInitialThreatDistance", "Follower_AvoidLineOfSight", "OwnerThreatCoverRelativePos", "Follower_ClearLineOfSight", "PathLengthCoverSelection", "Follower_PathLengthCoverSelection", "Follower_PathSecurityCoverSelection", "Follower_StealthCoverToFriendlyTargetDistance"
];
Follower_PathLengthCoverSelection : PathLengthCoverSelection
{
	useFriendlyTargetAsStart = true;
	doorInvalidatesPath = true;
	maximumRatio = 1.5f;
}

Follower_PathSecurityCoverSelection : PathSecurityCoverSelectionParameters
{
}

PathLengthCoverSelection : PathLengthCoverSelectionParameters
{
	maximumRatio = 1.5f;
}

RandomRatio : RandomRatioCoverSelectionParameters
{
}

ThreatDistance : ThreatDistanceCoverSelectionParameters
{
	threatMinDistance = 7.f;
	threatPreferredDistance = 12.f;
	threatMaxDistance = 25.f;
	useThreatMaxDistanceFiltering = false;
	allowNegativeThreatMaxDistanceScoring = true;
	distanceToThreatMultiplier = 2.0f;
}

MeleeRingThreatDistance : ThreatDistanceCoverSelectionParameters
{
	threatMinDistance = 0.f;
	threatPreferredDistance = 0.f;
	threatMaxDistance = 0.f;
	distanceToThreatMultiplier = 0.f;
}

CloseRingThreatDistance : ThreatDistanceCoverSelectionParameters
{
	threatMinDistance = 7.f;
	threatPreferredDistance = 8.f;
	threatMaxDistance = 16.f;
	useThreatMaxDistanceFiltering = false;
	allowNegativeThreatMaxDistanceScoring = true;
	distanceToThreatMultiplier = 2.0f;
}

MediumRingThreatDistance : ThreatDistanceCoverSelectionParameters
{
	threatMinDistance = 7.f;
	threatPreferredDistance = 12.f;
	threatMaxDistance = 32.f;
	useThreatMaxDistanceFiltering = false;
	allowNegativeThreatMaxDistanceScoring = true;
	distanceToThreatMultiplier = 2.0f;
}

SandevistanMediumRingThreatDistance : ThreatDistanceCoverSelectionParameters
{
	threatMinDistance = 9.f;
	threatPreferredDistance = 12.f;
	threatMaxDistance = 32.f;
	useThreatMaxDistanceFiltering = false;
	allowNegativeThreatMaxDistanceScoring = true;
	distanceToThreatMultiplier = 2.0f;
}

FarRingThreatDistance : ThreatDistanceCoverSelectionParameters
{
	threatMinDistance = 12.f;
	threatPreferredDistance = 20.f;
	threatMaxDistance = 50.f;
	useThreatMaxDistanceFiltering = false;
	allowNegativeThreatMaxDistanceScoring = true;
	distanceToThreatMultiplier = 2.0f;
}

ExtremeRingThreatDistance : ThreatDistanceCoverSelectionParameters
{
	threatMinDistance = 16.f;
	threatPreferredDistance = 30.f;
	threatMaxDistance = 50.f;
	useThreatMaxDistanceFiltering = false;
	allowNegativeThreatMaxDistanceScoring = true;
	distanceToThreatMultiplier = 2.0f;
}

CrowdRingThreatDistance : ThreatDistanceCoverSelectionParameters
{
	threatMinDistance = 9.f;
	threatPreferredDistance = 25.f;
	threatMaxDistance = 50.f;
	useThreatMaxDistanceFiltering = false;
	allowNegativeThreatMaxDistanceScoring = true;
	distanceToThreatMultiplier = 2.0f;
}

OwnerDistance : OwnerDistanceCoverSelectionParameters
{
	ownerMinDistance = 0.f;
	ownerPreferredDistance = 7.f;
	ownerMaxDistance = 20.f;
	distanceToOwnerMultiplier = 0.5f;
}

ClosestToOwner : ClosestToOwnerCoverSelectionParameters
{
	preferredOwnerDistance = 3.f;
	distanceToOwnerMultiplier = 1.f;
}

AngleDistance : AngleDistanceCoverSelectionParameters
{
	coverProtectionAngleMul = 1.f;
	angleDistanceScore = 1.f;
}

AngleDistanceToCombatTargetWithLowerAngle : AngleDistance
{
	scoreOnlyForCombatTarget = true;
	coverProtectionAngleMul = 1.f;
	angleDistanceScore = 1.f;
	coverLowerMinVerticalAngle = 15.f;
}

Follower_StealthAngleDistanceFilterSmallPrediction : AngleDistanceCoverSelectionParameters
{
	coverProtectionAngleMul = 1.2f;
	maximumDistance = 15.0f;
	threatPredictionTime = 1.0f;
	closestThreatsAmountToIgnoreDistanceCheck = 2;
}

Follower_StealthAngleDistanceFilterLargePrediction : AngleDistanceCoverSelectionParameters
{
	coverProtectionAngleMul = 1.2f;
	maximumDistance = 15.0f;
	threatPredictionTime = 4.0f;
	closestThreatsAmountToIgnoreDistanceCheck = 2;
}

Follower_StealthAngleDistanceScore : AngleDistanceCoverSelectionParameters
{
	coverProtectionAngleMul = 1.0f;
	maximumDistance = 15.0f;
	threatPredictionTime = 1.0f;
}

CoverType_None : CoverTypeCoverSelectionParameters
{
	coverScore = 0.f;
	shootingSpotScore = 0.f;
	maxScore = 3.f;
}

CoverType_Normal : CoverTypeCoverSelectionParameters
{
	coverScore = 3.f;
	shootingSpotScore = 1.f;
	maxScore = 3.f;
}

CoverType_Cover : CoverTypeCoverSelectionParameters
{
	coverScore = 3.f;
	shootingSpotScore = 0.f;
	maxScore = 3.f;
}

CoverType_ShootingSpot : CoverTypeCoverSelectionParameters
{
	coverScore = 0.f;
	shootingSpotScore = 1.f;
	maxScore = 3.f;
}

OwnerThreatCoverRelativePos : OwnerThreatCoverSelectionParameters
{
	ownerThreatCoverAngle = 180.f;
}

CoverHealth : CoverHealthCoverSelectionParameters
{
	hpMultiplier = 0.3f;
}

KeepCurrentCover : KeepCurrentCoverCoverSelectionParameters
{
	keepCoverBonus = 0.4f;
}

UtilityLoss : UtilityLossCoverSelectionParameters
{
	utilityLossMultiplier = 4.f;
	utilityLossTimeoutInIdle = 20.f;
	hitsTakenToClearScoreInIdle = 1;
	utilityLossTimeoutCover = 5.f;
	hitsTakenToClearScoreCover = 3;
	utilityLossTimeoutShootingSpot = 10.f;
	hitsTakenToClearScoreShootingSpot = 3;
}

AbsoluteZLimiter : AbsoluteZLimiterCoverSelectionParameters
{
	zLimit = 2.0f;
}

OwnerAngle : OwnerAngleCoverSelectionParameters
{
	minAngle = 0.0f;
	maxAngle = 360.0f;
}

DistanceFromOthers : DistanceFromOthersCoverSelectionParameters
{
	minimalDistance = 0.8f;
	minimalPreferredDistance = 3.0f;
	distanceScoreMultiplier = 3.0f;
}

InitialThreatDistance : ThreatDistance
{
	threatMinDistance = 7.f;
	threatPreferredDistance = 12.f;
	threatMaxDistance = 20.f;
	useThreatMaxDistanceFiltering = false;
	allowNegativeThreatMaxDistanceScoring = true;
	distanceToThreatMultiplier = 2.0f;
}

MeleeRingInitialThreatDistance : ThreatDistance
{
	threatMinDistance = 0.f;
	threatPreferredDistance = 0.f;
	threatMaxDistance = 0.f;
	distanceToThreatMultiplier = 0.f;
}

CloseRingInitialThreatDistance : ThreatDistance
{
	threatMinDistance = 7.f;
	threatPreferredDistance = 8.f;
	threatMaxDistance = 16.f;
	distanceToThreatMultiplier = 0.f;
}

MediumRingInitialThreatDistance : ThreatDistance
{
	threatMinDistance = 7.f;
	threatPreferredDistance = 12.f;
	threatMaxDistance = 32.f;
	useThreatMaxDistanceFiltering = false;
	allowNegativeThreatMaxDistanceScoring = true;
	distanceToThreatMultiplier = 2.0f;
}

SandevistanMediumRingInitialThreatDistance : ThreatDistance
{
	threatMinDistance = 9.f;
	threatPreferredDistance = 12.f;
	threatMaxDistance = 32.f;
	useThreatMaxDistanceFiltering = false;
	allowNegativeThreatMaxDistanceScoring = true;
	distanceToThreatMultiplier = 2.0f;
}

FarRingInitialThreatDistance : ThreatDistance
{
	threatMinDistance = 12.f;
	threatPreferredDistance = 20.f;
	threatMaxDistance = 50.f;
	useThreatMaxDistanceFiltering = false;
	allowNegativeThreatMaxDistanceScoring = true;
	distanceToThreatMultiplier = 2.0f;
}

ExtremeRingInitialThreatDistance : ThreatDistance
{
	threatMinDistance = 16.f;
	threatPreferredDistance = 30.f;
	threatMaxDistance = 50.f;
	useThreatMaxDistanceFiltering = false;
	allowNegativeThreatMaxDistanceScoring = true;
	distanceToThreatMultiplier = 2.0f;
}

CrowdRingInitialThreatDistance : ThreatDistanceCoverSelectionParameters
{
	threatMinDistance = 9.f;
	threatPreferredDistance = 25.f;
	threatMaxDistance = 50.f;
	useThreatMaxDistanceFiltering = false;
	allowNegativeThreatMaxDistanceScoring = false;
	distanceToThreatMultiplier = 2.0f;
}

InitialOwnerDistance : OwnerDistance
{
	ownerMinDistance = 0.f;
	ownerPreferredDistance = 7.f;
	ownerMaxDistance = 20.f;
	distanceToOwnerMultiplier = 0.5f;
}

InitialClosestToOwner : ClosestToOwner
{
	preferredOwnerDistance = 3.f;
	distanceToOwnerMultiplier = 1.f;
}

InitialAngleDistance : AngleDistance
{
	coverProtectionAngleMul = 1.f;
	angleDistanceScore = 1.f;
}

InitialCoverHealth : CoverHealth
{
	hpMultiplier = 0.3f;
}

InitialKeepCurrentCover : KeepCurrentCover
{
	keepCoverBonus = 0.4f;
}

InitialUtilityLoss : UtilityLoss
{
}

InitialOwnerAngle : OwnerAngle
{
	minAngle = 0.0f;
	maxAngle = 360.0f;
}

CoverType_Shotgunner : CoverTypeCoverSelectionParameters
{
	coverScore = 0.f;
	shootingSpotScore = 1.f;
	maxScore = 3.f;
}

ThreatDistance_Shotgunner : ThreatDistance
{
	threatMinDistance = 2.f;
	threatPreferredDistance = 4.f;
	threatMaxDistance = 10.f;
	useThreatMaxDistanceFiltering = true;
	allowNegativeThreatMaxDistanceScoring = true;
	distanceToThreatMultiplier = 2.0f;
}

OwnerDistance_Shotgunner : OwnerDistance
{
	ownerMinDistance = 0.f;
	ownerPreferredDistance = 8.f;
	ownerMaxDistance = 10.f;
	distanceToOwnerMultiplier = 0.5f;
}

ClosestToOwner_Shotgunner : OwnerDistance
{
	ownerPreferredDistance = 3.f;
	distanceToOwnerMultiplier = 1.f;
}

OwnerAngle_Shotgunner : OwnerAngle
{
	minAngle = 0.f;
	maxAngle = 360.f;
}

InitialThreatDistance_Shotgunner : ThreatDistance
{
	threatMinDistance = 2.f;
	threatPreferredDistance = 4.f;
	threatMaxDistance = 10.f;
	useThreatMaxDistanceFiltering = true;
	allowNegativeThreatMaxDistanceScoring = true;
	distanceToThreatMultiplier = 2.0f;
}

InitialOwnerDistance_Shotgunner : OwnerDistance
{
	ownerMinDistance = 0.f;
	ownerPreferredDistance = 8.f;
	ownerMaxDistance = 10.f;
	distanceToOwnerMultiplier = 0.5f;
}

InitialClosestToOwner_Shotgunner : ClosestToOwner
{
	preferredOwnerDistance = 3.f;
	distanceToOwnerMultiplier = 1.f;
}

InitialOwnerAngle_Shotgunner : OwnerAngle
{
	minAngle = 0.f;
	maxAngle = 180.f;
}

CoverType_Sniper : CoverTypeCoverSelectionParameters
{
	coverScore = 1.f;
	shootingSpotScore = 3.f;
	maxScore = 3.f;
}

ThreatDistance_Sniper : ThreatDistance
{
	threatMinDistance = 12.f;
	threatPreferredDistance = 30.f;
	threatMaxDistance = 50.f;
	useThreatMaxDistanceFiltering = false;
	allowNegativeThreatMaxDistanceScoring = true;
	distanceToThreatMultiplier = 2.0f;
}

OwnerDistance_Sniper : OwnerDistance
{
	ownerMinDistance = 0.f;
	ownerPreferredDistance = 8.f;
	ownerMaxDistance = 50.f;
	distanceToOwnerMultiplier = 0.5f;
}

ClosestToOwner_Sniper : ClosestToOwner
{
	preferredOwnerDistance = 3.f;
	distanceToOwnerMultiplier = 1.f;
}

AngleDistance_Sniper : AngleDistance
{
	coverProtectionAngleMul = 1.f;
	angleDistanceScore = 4.f;
}

OwnerAngle_Sniper : OwnerAngle
{
	minAngle = 0.0f;
	maxAngle = 360.0f;
}

InitialThreatDistance_Sniper : ThreatDistance
{
	threatMinDistance = 12.f;
	threatPreferredDistance = 30.f;
	threatMaxDistance = 50.f;
	useThreatMaxDistanceFiltering = false;
	allowNegativeThreatMaxDistanceScoring = true;
	distanceToThreatMultiplier = 2.0f;
}

InitialOwnerDistance_Sniper : OwnerDistance
{
	ownerMinDistance = 0.f;
	ownerPreferredDistance = 8.f;
	ownerMaxDistance = 50.f;
	distanceToOwnerMultiplier = 0.5f;
}

InitialClosestToOwner_Sniper : ClosestToOwner
{
	preferredOwnerDistance = 3.f;
	distanceToOwnerMultiplier = 1.f;
}

InitialAngleDistance_Sniper : AngleDistance
{
	coverProtectionAngleMul = 1.f;
	angleDistanceScore = 4.f;
}

InitialOwnerAngle_Sniper : OwnerAngle
{
	minAngle = 0.0f;
	maxAngle = 360.0f;
}

CPO_ThreatDistance_Shotgunner : ThreatDistance
{
	threatMinDistance = 8.f;
	threatPreferredDistance = 12.f;
	threatMaxDistance = 20.f;
	useThreatMaxDistanceFiltering = false;
	allowNegativeThreatMaxDistanceScoring = true;
	distanceToThreatMultiplier = 2.0f;
}

CPO_InitialThreatDistance_Shotgunner : ThreatDistance
{
	threatMinDistance = 8.f;
	threatPreferredDistance = 12.f;
	threatMaxDistance = 20.f;
	useThreatMaxDistanceFiltering = false;
	allowNegativeThreatMaxDistanceScoring = true;
	distanceToThreatMultiplier = 2.0f;
}

CPO_ThreatDistance_Rifleman : ThreatDistance
{
	threatMinDistance = 10.f;
	threatPreferredDistance = 15.f;
	threatMaxDistance = 25.f;
	useThreatMaxDistanceFiltering = false;
	allowNegativeThreatMaxDistanceScoring = true;
	distanceToThreatMultiplier = 2.0f;
}

CPO_InitialThreatDistance_Rifleman : ThreatDistance
{
	threatMinDistance = 10.f;
	threatPreferredDistance = 15.f;
	threatMaxDistance = 25.f;
	useThreatMaxDistanceFiltering = false;
	allowNegativeThreatMaxDistanceScoring = true;
	distanceToThreatMultiplier = 2.0f;
}

TacticLimiter : TacticLimiterCoverSelectionParameters
{
	addUtilityValue = 1.0f;
}

NPC_CoverToPlayerDistance : FriendlyTargetDistanceCoverSelectionParameters
{
	friendlyTargetMinDistance = 1.5f;
	friendlyTargetPreferredDistance = 5.f;
	friendlyTargetMaxDistance = 9999.0f;
	friendlyTargetZLimit = -1.0f;
	distanceToFriendlyTargetMultiplier = 0.5f;
	spatialHintMults = ( 1.f, 1.5f, 2.f );
}

Follower_StealthCoverToFriendlyTargetDistance : Follower_CoverToFriendlyTargetDistance
{
	friendlyTargetMaxDistance = 9.0f;
}

Follower_CoverToFriendlyTargetDistance : FriendlyTargetDistanceCoverSelectionParameters
{
	friendlyTargetMinDistance = 1.5f;
	friendlyTargetPreferredDistance = 5.f;
	friendlyTargetMaxDistance = 17.0f;
	friendlyTargetZLimit = 3.0f;
	distanceToFriendlyTargetMultiplier = 0.5f;
	spatialHintMults = ( 1.f, 1.5f, 2.f );
}

FollowerFriendlyTargetAngleScoring : FriendlyTargetAngleDistanceCoverSelectionParameters
{
	coverProtectionAngleMul = 1.f;
	angleDistanceScore = 4.f;
	positionChangeThreshold = 2.0f;
	minDot = -0.5f;
}

Follower_OwnerDistance : OwnerDistanceCoverSelectionParameters
{
	ownerMinDistance = 0.f;
	ownerPreferredDistance = 0.f;
	ownerMaxDistance = 6.f;
	distanceToOwnerMultiplier = 1.f;
}

Follower_ThreatDistance : ThreatDistanceCoverSelectionParameters
{
	threatMinDistance = 7.f;
	threatPreferredDistance = 15.f;
	threatMaxDistance = 50.f;
	useThreatMaxDistanceFiltering = false;
	allowNegativeThreatMaxDistanceScoring = true;
	distanceToThreatMultiplier = 2.f;
}

FollowerStealth_ThreatDistance : ThreatDistanceCoverSelectionParameters
{
	threatMinDistance = 7.f;
	useThreatMaxDistanceFiltering = false;
}

FollowerStealth_ThreatDestinationDistance : FollowerStealth_ThreatDistance
{
	checkThreatPath = true;
}

ClearLineOfSight : ClearLineOfSightCoverSelectionParameters
{
	preferredActionCount = 1;
	multiplier = 1.f;
	clearLOSDistanceTolerance = 3.0f;
}

Follower_ClearLineOfSight : ClearLineOfSightCoverSelectionParameters
{
	preferredActionCount = 1;
	multiplier = 4.f;
	clearLOSDistanceTolerance = 3.0f;
}

Follower_AvoidLineOfSight : AvoidLineOfSightSelectionParameters
{
	angle = 90.0f;
	distance = 20.0f;
}

