package AimAssist
using RTDB

DefaultTargetFilters : SearchFilterMaskTypeValue
{
	opType = "ANY";
	values = 
	[
		"SearchFilterMaskType.Att_Hostile", "SearchFilterMaskType.Obj_Other"
	];
}

AimAssistCommon_Off : AimAssistCommon
{
	isEnabled = false;
}

AimAssistCommon_Default : AimAssistCommon
{
	isEnabled = true;
	isEnabledForMouse = false;
	firstPassAngleRange = ( 0.f, 40.f, 40.f );
	angleDistUnitWeight = 15.f;
	angleDistUnit = 4.f;
	angleProximityThreshold = 2.f;
	angleProximityBonus = 500.f;
	worldDistUnitWeight = 5.f;
	worldDistUnit = 2.f;
	worldProximityThreshold = 2.f;
	worldProximityBonus = 500.f;
	pastTargetWeight = 30.f;
	targetLostTimeOut = .25f;
	aimAssistType = "AimAssistType.Shooting";
}

AimAssistCommon_DefaultLimbCyber : AimAssistCommon_Default
{
	aimAssistType = "AimAssistType.ShootingLimbCyber";
}

AimAssistCommon_Melee : AimAssistCommon
{
	isEnabled = true;
	isEnabledForMouse = false;
	firstPassAngleRange = ( 0.f, 90.f, 90.f );
	angleDistUnitWeight = 10.f;
	angleDistUnit = 4.f;
	angleProximityThreshold = 2.f;
	angleProximityBonus = 100.f;
	worldDistUnitWeight = 10.f;
	worldDistUnit = 1.f;
	worldProximityThreshold = 3.f;
	worldProximityBonus = 100.f;
	softLockTargetWeight = 1.f;
	pastTargetWeight = 20.f;
	aimAssistType = "AimAssistType.Melee";
}

AimAssistCommon_QuickMelee : AimAssistCommon_Melee
{
}

AimAssistCommon_Aiming : AimAssistCommon_Default
{
	targetAcquisitionDelayTime = 0.0f;
	targetFilter = 
	{
		opType = "OR";
		values = 
		[
			{
				opType = "ANY";
				values = 
				[
					"SearchFilterMaskType.Att_Hostile", "SearchFilterMaskType.Obj_Device", "SearchFilterMaskType.Obj_Sensor", "SearchFilterMaskType.Obj_Other"
				];
			} : SearchFilterMaskTypeValue, 
			{
				opType = "ALL";
				values = 
				[
					"SearchFilterMaskType.Sp_Aggressive", "SearchFilterMaskType.Att_Neutral"
				];
			} : SearchFilterMaskTypeValue
		];
	} : SearchFilterMaskTypeCond;
}

AimAssistCommon_DriverCombat : AimAssistCommon
{
	isEnabled = true;
	isEnabledForMouse = true;
	firstPassAngleRange = ( 0.f, 40.f, 40.f );
	angleDistUnitWeight = 15.f;
	angleDistUnit = 4.f;
	angleProximityThreshold = 5.f;
	angleProximityBonus = 500.f;
	worldDistUnitWeight = 5.f;
	worldDistUnit = 2.f;
	worldProximityThreshold = 0.f;
	worldProximityBonus = 100.f;
	pastTargetWeight = 0.f;
	rotatingAwayFromPastTargetPenalty = 0.f;
	aimAssistType = "AimAssistType.Shooting";
	primaryComponentsOnly = true;
	targetFilterPriority = 
	{
		opType = "ANY";
		values = 
		[
			"SearchFilterMaskType.Att_Hostile"
		];
	} : SearchFilterMaskTypeValue;
	targetFilterPriorityBonus = 200.f;
	targetFilter = 
	{
		opType = "ANY";
		values = 
		[
			"SearchFilterMaskType.Att_Hostile"
		];
	} : SearchFilterMaskTypeValue;
	softLockBrakeAngle = ( 0.f, 180.f, 180.f );
	softLockTargetWeight = 70.f;
	targetAcquisitionDelayTime = 0.0f;
	targetLostTimeOut = -1.f;
}

AimAssistCommon_DriverCombatAiming : AimAssistCommon_Aiming
{
	primaryComponentsOnly = true;
	targetFilter = 
	{
		opType = "ANY";
		values = 
		[
			"SearchFilterMaskType.Att_Hostile"
		];
	} : SearchFilterMaskTypeValue;
}

AimAssistCommon_DriverCombatTPP : AimAssistCommon
{
	isEnabled = true;
	isEnabledForMouse = true;
	angleDistUnitWeight = 5.f;
	angleDistUnit = 4.f;
	angleProximityThreshold = 5.f;
	angleProximityBonus = 500.f;
	worldDistUnitWeight = 2.f;
	worldDistUnit = 5.f;
	worldProximityThreshold = 0.f;
	worldProximityBonus = 100.f;
	pastTargetWeight = 0.f;
	rotatingAwayFromPastTargetPenalty = 0.f;
	aimAssistType = "AimAssistType.DriverCombat";
	primaryComponentsOnly = true;
	targetFilterPriority = 
	{
		opType = "ANY";
		values = 
		[
			"SearchFilterMaskType.Att_Hostile"
		];
	} : SearchFilterMaskTypeValue;
	targetFilterPriorityBonus = 200.f;
	targetFilter = 
	{
		opType = "AND";
		values = 
		[
			{
				opType = "ANY";
				values = 
				[
					"SearchFilterMaskType.Att_Hostile"
				];
			} : SearchFilterMaskTypeValue, 
			{
				opType = "NOT";
				values = 
				[
					"SearchFilterMaskType.St_MountedToCar"
				];
			} : SearchFilterMaskTypeValue
		];
	} : SearchFilterMaskTypeCond;
	softLockBrakeAngle = ( 0.f, 180.f, 180.f );
	softLockTargetWeight = 40.f;
	softLockTargetLostTimeOut = -1.f;
	forceSoftLockMinimumWeight = false;
	targetAcquisitionDelayTime = 0.3f;
}

AimAssistCommon_DriverCombatTPP_Light : AimAssistCommon
{
	isEnabled = true;
	isEnabledForMouse = true;
	angleDistUnitWeight = 7.f;
	angleDistUnit = 3.f;
	angleProximityThreshold = 5.f;
	angleProximityBonus = 500.f;
	worldDistUnitWeight = 2.f;
	worldDistUnit = 5.f;
	worldProximityThreshold = 0.f;
	worldProximityBonus = 100.f;
	pastTargetWeight = 0.f;
	rotatingAwayFromPastTargetPenalty = 0.f;
	aimAssistType = "AimAssistType.DriverCombat";
	primaryComponentsOnly = true;
	targetFilterPriority = 
	{
		opType = "ANY";
		values = 
		[
			"SearchFilterMaskType.Att_Hostile"
		];
	} : SearchFilterMaskTypeValue;
	targetFilterPriorityBonus = 200.f;
	targetFilter = 
	{
		opType = "AND";
		values = 
		[
			{
				opType = "ANY";
				values = 
				[
					"SearchFilterMaskType.Att_Hostile"
				];
			} : SearchFilterMaskTypeValue, 
			{
				opType = "NOT";
				values = 
				[
					"SearchFilterMaskType.St_MountedToCar"
				];
			} : SearchFilterMaskTypeValue
		];
	} : SearchFilterMaskTypeCond;
	softLockBrakeAngle = ( 0.f, 180.f, 40.f );
	softLockTargetWeight = 15.f;
	softLockTargetLostTimeOut = -1.f;
	forceSoftLockMinimumWeight = false;
	targetAcquisitionDelayTime = 0.05f;
}

AimAssistCommon_DriverCombatMissiles : AimAssistCommon
{
	isEnabled = true;
	isEnabledForMouse = true;
	angleDistUnitWeight = 7.f;
	angleDistUnit = 3.f;
	angleProximityThreshold = 5.f;
	angleProximityBonus = 500.f;
	worldDistUnitWeight = 2.f;
	worldDistUnit = 5.f;
	worldProximityThreshold = 0.f;
	worldProximityBonus = 100.f;
	pastTargetWeight = 0.f;
	rotatingAwayFromPastTargetPenalty = 0.f;
	aimAssistType = "AimAssistType.DriverCombat";
	primaryComponentsOnly = true;
	targetFilterPriority = 
	{
		opType = "ANY";
		values = 
		[
			"SearchFilterMaskType.Att_Hostile"
		];
	} : SearchFilterMaskTypeValue;
	targetFilterPriorityBonus = 200.f;
	targetFilter = 
	{
		opType = "AND";
		values = 
		[
			{
				opType = "ANY";
				values = 
				[
					"SearchFilterMaskType.Att_Hostile"
				];
			} : SearchFilterMaskTypeValue, 
			{
				opType = "NOT";
				values = 
				[
					"SearchFilterMaskType.St_MountedToCar"
				];
			} : SearchFilterMaskTypeValue
		];
	} : SearchFilterMaskTypeCond;
	softLockBrakeAngle = ( 0.f, 180.f, 45.f );
	softLockTargetWeight = 15.f;
	softLockTargetLostTimeOut = -1.f;
	forceSoftLockMinimumWeight = false;
	targetAcquisitionDelayTime = 0.5f;
}

AimAssistCommon_DriverCombatMissilesAiming : AimAssistCommon_DriverCombatMissiles
{
	targetAcquisitionDelayTime = 0.05f;
}

AimAssistCommon_DriverCombatMeleeTPP : AimAssistCommon
{
	isEnabled = true;
	isEnabledForMouse = true;
	angleDistUnitWeight = 7.f;
	angleDistUnit = 3.f;
	angleProximityThreshold = 5.f;
	angleProximityBonus = 500.f;
	worldDistUnitWeight = 2.f;
	worldDistUnit = 5.f;
	worldProximityThreshold = 0.f;
	worldProximityBonus = 100.f;
	pastTargetWeight = 0.f;
	rotatingAwayFromPastTargetPenalty = 0.f;
	aimAssistType = "AimAssistType.Shooting";
	primaryComponentsOnly = true;
	targetFilter = 
	{
		opType = "ANY";
		values = 
		[
			"SearchFilterMaskType.Att_Hostile"
		];
	} : SearchFilterMaskTypeValue;
	softLockBrakeAngle = ( 0.f, 180.f, 30.f );
	softLockTargetWeight = 0.f;
	softLockTargetLostTimeOut = -1.f;
	forceSoftLockMinimumWeight = false;
	targetAcquisitionDelayTime = 0.f;
}

AimAssistCommon_AimingLimbCyber : AimAssistCommon_DefaultLimbCyber
{
	targetAcquisitionDelayTime = 0.0f;
}

AimAssistCommon_Scanning : AimAssistCommon_Default
{
	aimAssistType = "AimAssistType.Scanning";
	targetFilter = 
	{
		opType = "OR";
		values = 
		[
			{
				opType = "ANY";
				values = 
				[
					"SearchFilterMaskType.Att_Hostile", "SearchFilterMaskType.Obj_Device", "SearchFilterMaskType.Obj_Sensor", "SearchFilterMaskType.Obj_Other"
				];
			} : SearchFilterMaskTypeValue, 
			{
				opType = "ALL";
				values = 
				[
					"SearchFilterMaskType.Sp_Aggressive", "SearchFilterMaskType.Att_Neutral"
				];
			} : SearchFilterMaskTypeValue
		];
	} : SearchFilterMaskTypeCond;
}

AimAssistCommon_Sprinting : AimAssistCommon
{
	isEnabled = false;
	isEnabledForMouse = false;
}

AimAssistCommon_LeftHandCyberware : AimAssistCommon_Default
{
	targetAcquisitionDelayTime = 0.0f;
}

AimAssistCommon_LeftHandCyberwareCharge : AimAssistCommon_Default
{
	targetAcquisitionDelayTime = 0.0f;
	firstPassAngleRange = ( 0.f, 70.f, 70.f );
}

