package AIGeneralSettings
using RTDB

bool reloadActionDataFromTweakDB = false;
bool Debug_ShouldReturnToSpawnOnIdle = true;
prevention
{
	bool spawnVehicles = true;
}

followers
{
	bool allowDefeated = true;
	float defeatedDamageThreshold = 50.f;
}

float impact_melee_duration = 1.2f;
float impact_ranged_duration = 0.4f;
float stagger_melee_duration = 2.5f;
float stagger_ranged_duration = 1.3f;
float quickMelee_duration = 2.2f;
float knockdown_duration = 1.9f;
float guardbreak_duration = 1.6f;
float block_duration = 0.1f;
float parry_duration = 1.f;
int hitChainBeforeDodgeForMeleeTier1 = -1;
int hitChainBeforeDodgeForMeleeTier2 = 3;
int hitChainBeforeDodgeForMeleeTier3 = 1;
int hitChainBeforeDodgeForRangedTier1 = -1;
int hitChainBeforeDodgeForRangedTier2 = 3;
int hitChainBeforeDodgeForRangedTier3 = 1;
float blockResetCooldown = 5.f;
float tier2BlockCooldownModifier = 0.f;
float tier3BlockCooldownModifier = -1.f;
float bossBlockCooldownModifier = -1.f;
float aiBikeKnockOffModifier = 0.5f;
DismemberingExecute
{
	float missingHealthStart = 0.6f;
	float missingHealthEnd = 0.8f;
	float distanceCloseRange = 2.f;
	float distanceFarRange = 15.f;
}

int numberOfBrainMeltAnimations = 3;
int numberOfBlackwallBrainMeltDeathAnimation = 11;
float maxAllowedIncapacitatedFloorAngle = 25.f;
float ragdollFloorAngleActivationDelay = 0.5f;
float ragdollRecoveryVelocityThreshold = 0.1f;
float ragdollDamageMinimumVelocity = 2.f;
float ragdollActivitionMinCollisionMass = 100.0f;
float ragdollActivitionGroundTolerance = 0.1f;
float maxAccelerationForRagdollActivation = 12.0f;
float ragdollAnotherNPCVelocityThreshold = 3.f;
float ragdollTripGlobalCooldownDuration = 30.f;
float ragdollTripInstigatorVelThreshold = 0.2f;
float ragdollTripForwardAngle = 80.f;
float ragdollTripVictimForwardVelMin = 4.f;
float ragdollTripVictimForwardChance = 1.f;
float ragdollTripVictimBackwardVelMin = 0.3f;
float ragdollTripVictimBackwardChance = 100.f;
float vehicleHitBloodSplatterThreshold = 500.f;
int[] vehicleHitBloodSplatterAllowedActors = [];
int maximumRagdollSplattersPerNPC = -1;
float ragdollImpactKillVelocityThreshold = 11.5f;
float ragdollHighFallHeightThreshold = 6.f;
float ragdollHighFallVelocityThreshold = 7.f;
float vehicleHitKillThreshold = 26.f;
float vehicleHitCrowdKillThreshold = 20.f;
float ragdollRecoveryMinDistanceThreshold = 2.f;
float[] ragdollRecoveryInitialNavmeshProbeDimensions = 
[
	0.7f, 0.7f, 0.4f, 1.f
];
float[] ragdollRecoveryNavmeshProbeDimensions = 
[
	0.4f, 0.4f, 1.5f, 1.f
];
float ragdollRecoveryMaxAllowedTorsoAngle = 42.f;
float ragdollRecoveryMaxAllowedFloorAngle = 20.f;
float[] ragdollRecoveryEnviroProbeDimensions = 
[
	0.3f, 1.2f, 0.2f, 1.f
];
float[] navmeshProbeDistancesNonFriendly = 
[
	1.5f, 2.5f
];
float[] navmeshProbeDistancesFriendly = 
[
	2.5f, 3.5f, 4.5f
];
int numberOfProbesPerDistance = 5;
float[] lastValidNavmeshPosProbeDimensions = 
[
	1.f, 1.f, 2.5f, 1.f
];
float influenceMapCheckRange = 0.6f;
float allowedInfluenceMapPercentage = 0.3f;
float allowedInfluenceMapPercentageFriendly = 0.5f;
float recoveryDespiteInfluenceMapTimeout = 3.f;
float[] ragdollRecoveryVehicleCheckProbeDimensions = 
[
	0.3f, 1.f, 0.5f, 1.f
];
float mountedPlayerMinDistanceForTeleport = 3.f;
float mountedPlayerHitPredictionTime = 2.f;
float underwaterDepthKillThreshold = -0.1f;
string baseActionParamsPackageName = "GenericArchetype";
string baseReactionParamsPackageName = "ReactionActions";
string baseStatusEffectParamsPackageName = "StatusEffectActions";
string[] baseShootingPatternPackages = 
[
	"ShootingPatterns.ChargedShootShootingPackage", "ShootingPatterns.BurstShootingPackage", "ShootingPatterns.SemiAutoShootingPackage", "ShootingPatterns.FullAutoSmartShootingPackage", "ShootingPatterns.FullAutoShootingPackage"
];
string baseSquadParamsID = "Tickets.BaseSquad";
string[] tacticsPriority = 
[
	"Panic", "Retreat", "Regroup", "Snipe", "Medivac", "Flank", "Suppress", "Defend", "Assault"
];
string actionMappingWeaponSlotId = "AttachmentSlots.WeaponRight";
CName[] actionMappingWeaponSlots = 
[
	"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft"
];
movement
{
	float walkScale = 1.0f;
	float jogScale = 1.0f;
	float sprintScale = 1.0f;
	float othersScale = 1.0f;
	float ignoreCollisionsCloseToTargetMargin = 0.8f;
}

float maxRaisingDetection = 20.f;
float damageThresholdBattleCry = 0.4f;
float maxDistanceBattleCry = 30.f;
Vector2 reactionDelay = ( 0.1f, 0.3f );
float callingAlliesToCombatRange = 25.f;
float callingAlliesToCombatDelay = 2.5f;
float takedownNoiseRange = 3.f;
float takedownLessNoiseRange = 3.f;
float grappleNoiseRange = 3.f;
float grenadeDodgeInnerRadius = 3.f;
float vehicleHitFearSpreadRange = 15.f;
float recentReactionValidTimeStamp = 120.f;
float pendingReactionValidTimeStamp = 20.f;
float recentAlertValidTimeStamp = 20.f;
float reactionLookAtDuration = 5.f;
float repeatReactionLookAtDelay = 3.f;
float reactionLookAtMinPercentage = 0.5f;
Vector2 workspotReactionExitDelay = ( 3f, 5f );
float fearInPlaceAnimDuration = 13.476f;
float fearInPlaceProbabilityOnLane = 0.3f;
float spreadFearEffectStimuliRange = 5.f;
float greaterSpreadFearEffectStimuliRange = 15.f;
Vector2 fearToIdleTimeout = ( 8f, 10f );
Vector2 fearToIdleDistance = ( 15f, 7.5f );
float crowdAimingReactionDistance = 20f;
float panicInCombatReactionDistance = 10f;
float carEmptyPathDistance = 10f;
float closestDistanceToPlayer = 8f;
float fearInPlaceAroundDistance = 15f;
int timesToResendHandleReactionEvent = 10;
float distanceToTriggerAggressiveCrowdRanged = 20;
float distanceToTriggerAggressiveCrowdMelee = 5;
bool displayWeaponsOnBody = false;
float attentionDetectionThreshold = 50.f;
float minUnconsciousImpact = 6.5f;
float vehicleBumpCooldown = 3.f;
float vehicleStaggerSpeedThreshold = 3.5f;
float vehicleStaggerRagdollImmunity = 0.15f;
float dodgeOnDetectedBuffer = 0.2f;
float avoidCombatBuffer = 1.5f;
CName[] visualTagsPreventingAggression = 
[
	"Child", "Fat", "Old", "Wounded", "Drunk", "Religious", "Vendor", "Heels", "Ripperdoc", "Fixer", "Prostitute", "Chubby", "Homeless"
];
float stimuliMergingMaxRadialGrowthPercentage = 0.2f;
float stimuliMergingRadialGrowthFactor = 0.5f;
ReactionSystem
{
	int trafficRunnersNumberLimit = 5;
	int communityRunnersNumberLimit = 5;
	int trafficRunnersNumberHardLimit = 15;
	int communityRunnersNumberHardLimit = 15;
	float distanceLimit = 10;
	float fearAreaMaxTime = 30;
	float fearAreaMaxDistance = 30;
	float fearAreaMaxMergingHalfExtent = 20;
	float fearAreaMaxMergingHalfHeight = 60;
	int aggressiveCiviliansLimit = 1;
	float fearInPlaceCooldownDistance = 5;
	float fearInPlaceCooldownTime = 0.15;
	float runningCooldownDistance = 5;
	float runningCooldownTime = 0.2;
	float tryRunningAwayTimeInterval = 3;
	float minRunningTime = 4;
	float combatDisturbanceAngle = 30;
	float despawningMaxTime = 10;
	float despawningMaxDistance = 45;
	float despawningMinTimeFactor = 0.1;
	float friendlyBodiesDespawningScoreMultiplier = 2.0;
	float aggressiveBodiesDespawningScoreMultiplier = 1.0;
	fk< ReactionLimit >[] reactionLimitList = 
	[
		{
			name = "HeavyBreathing";
			limit = 1;
		} : ReactionLimit, 
		{
			name = "FearBack1";
			limit = 1;
		} : ReactionLimit, 
		{
			name = "FearBack2";
			limit = 1;
		} : ReactionLimit, 
		{
			name = "FearBack3";
			limit = 1;
		} : ReactionLimit, 
		{
			name = "FearFront1";
			limit = 1;
		} : ReactionLimit, 
		{
			name = "FearFront2";
			limit = 1;
		} : ReactionLimit, 
		{
			name = "FearFront3";
			limit = 1;
		} : ReactionLimit, 
		{
			name = "FearFront4";
			limit = 1;
		} : ReactionLimit, 
		{
			name = "FearFront5";
			limit = 1;
		} : ReactionLimit, 
		{
			name = "Panic01";
			limit = 1;
		} : ReactionLimit
	];
}

float maxAlertedSearchDistance = 50.f;
float alertedSearchDurationNormal = 15.f;
float alertedSearchDurationWithCorpses = 60.f;
float keepRecentThreatAfterRelaxedDuration = 15.f;
cover
{
	float blockedByDynamicCollisionTimeLimit = 3.f;
}

Vector2 delayStatusEffectApplicationTime = ( 0.1f, 0.4f );
bool E3_AllowDismembermentOnWounded = false;
traffic
{
	float goingTowardThreatFactor = 8.f;
	float crossingThreatFactor = 16.f;
	float crossingRoadFactor = 10.f;
	bool allowLaneChange = true;
	float vehicleGapIncrementFactor = 1.0f;
}

