diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalAimingSettings.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalAimingSettings.cs
index 65e0ed1f..73dff202 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalAimingSettings.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalAimingSettings.cs
@@ -3,204 +3,210 @@
namespace SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings;
///
+///
/// See BotGlobalAimingSettings in the client, this record should match that
+///
+///
+///
+/// These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
+///
///
public record BotGlobalAimingSettings
{
[JsonPropertyName("MAX_AIM_PRECICING")]
- public float MaxAimPrecicing { get; set; }
+ public float? MaxAimPrecicing { get; set; }
[JsonPropertyName("BETTER_PRECICING_COEF")]
- public float BetterPrecicingCoef { get; set; }
+ public float? BetterPrecicingCoef { get; set; }
[JsonPropertyName("RECLC_Y_DIST")]
- public float ReclcYDist { get; set; }
+ public float? ReclcYDist { get; set; }
[JsonPropertyName("RECALC_DIST")]
- public float RecalcDist { get; set; }
+ public float? RecalcDist { get; set; }
[JsonPropertyName("RECALC_SQR_DIST")]
- public float RecalcSqrDist { get; set; }
+ public float? RecalcSqrDist { get; set; }
[JsonPropertyName("COEF_FROM_COVER")]
- public float CoefFromCover { get; set; }
+ public float? CoefFromCover { get; set; }
[JsonPropertyName("PANIC_COEF")]
- public float PanicCoef { get; set; }
+ public float? PanicCoef { get; set; }
[JsonPropertyName("PANIC_ACCURATY_COEF")]
- public float PanicAccuratyCoef { get; set; }
+ public float? PanicAccuratyCoef { get; set; }
[JsonPropertyName("HARD_AIM")]
- public float HardAim { get; set; }
+ public float? HardAim { get; set; }
[JsonPropertyName("HARD_AIM_CHANCE_100")]
- public int HardAimChance100 { get; set; }
+ public int? HardAimChance100 { get; set; }
[JsonPropertyName("PANIC_TIME")]
- public float PanicTime { get; set; }
+ public float? PanicTime { get; set; }
[JsonPropertyName("RECALC_MUST_TIME")]
- public int RecalcMustTime { get; set; }
+ public int? RecalcMustTime { get; set; }
[JsonPropertyName("RECALC_MUST_TIME_MIN")]
- public int RecalcMustTimeMin { get; set; }
+ public int? RecalcMustTimeMin { get; set; }
[JsonPropertyName("RECALC_MUST_TIME_MAX")]
- public int RecalcMustTimeMax { get; set; }
+ public int? RecalcMustTimeMax { get; set; }
[JsonPropertyName("DAMAGE_PANIC_TIME")]
- public float DamagePanicTime { get; set; }
+ public float? DamagePanicTime { get; set; }
[JsonPropertyName("DANGER_UP_POINT")]
- public float DangerUpPoint { get; set; }
+ public float? DangerUpPoint { get; set; }
[JsonPropertyName("MAX_AIMING_UPGRADE_BY_TIME")]
- public float MaxAimingUpgradeByTime { get; set; }
+ public float? MaxAimingUpgradeByTime { get; set; }
[JsonPropertyName("DAMAGE_TO_DISCARD_AIM_0_100")]
- public float DamageToDiscardAim0100 { get; set; }
+ public float? DamageToDiscardAim0100 { get; set; }
[JsonPropertyName("MIN_TIME_DISCARD_AIM_SEC")]
- public float MinTimeDiscardAimSec { get; set; }
+ public float? MinTimeDiscardAimSec { get; set; }
[JsonPropertyName("MAX_TIME_DISCARD_AIM_SEC")]
- public float MaxTimeDiscardAimSec { get; set; }
+ public float? MaxTimeDiscardAimSec { get; set; }
[JsonPropertyName("XZ_COEF")]
- public float XzCoef { get; set; }
+ public float? XzCoef { get; set; }
[JsonPropertyName("XZ_COEF_STATIONARY_BULLET")]
- public float XzCoefStationaryBullet { get; set; }
+ public float? XzCoefStationaryBullet { get; set; }
[JsonPropertyName("XZ_COEF_STATIONARY_GRENADE")]
- public float XzCoefStationaryGrenade { get; set; }
+ public float? XzCoefStationaryGrenade { get; set; }
[JsonPropertyName("SHOOT_TO_CHANGE_PRIORITY")]
- public int ShootToChangePriority { get; set; }
+ public int? ShootToChangePriority { get; set; }
[JsonPropertyName("BOTTOM_COEF")]
- public float BottomCoef { get; set; }
+ public float? BottomCoef { get; set; }
[JsonPropertyName("FIRST_CONTACT_ADD_SEC")]
- public float FirstContactAddSec { get; set; }
+ public float? FirstContactAddSec { get; set; }
[JsonPropertyName("FIRST_CONTACT_ADD_CHANCE_100")]
- public float FirstContactAddChance100 { get; set; }
+ public float? FirstContactAddChance100 { get; set; }
[JsonPropertyName("BASE_HIT_AFFECTION_DELAY_SEC")]
- public float BaseHitAffectionDelaySec { get; set; }
+ public float? BaseHitAffectionDelaySec { get; set; }
[JsonPropertyName("BASE_HIT_AFFECTION_MIN_ANG")]
- public float BaseHitAffectionMinAng { get; set; }
+ public float? BaseHitAffectionMinAng { get; set; }
[JsonPropertyName("BASE_HIT_AFFECTION_MAX_ANG")]
- public float BaseHitAffectionMaxAng { get; set; }
+ public float? BaseHitAffectionMaxAng { get; set; }
[JsonPropertyName("BASE_SHIEF")]
- public float BaseShief { get; set; }
+ public float? BaseShief { get; set; }
[JsonPropertyName("BASE_SHIEF_STATIONARY_BULLET")]
- public float BaseShiefStationaryBullet { get; set; }
+ public float? BaseShiefStationaryBullet { get; set; }
[JsonPropertyName("BASE_SHIEF_STATIONARY_GRENADE")]
- public float BaseShiefStationaryGrenade { get; set; }
+ public float? BaseShiefStationaryGrenade { get; set; }
[JsonPropertyName("SCATTERING_HAVE_DAMAGE_COEF")]
- public float ScatteringHaveDamageCoef { get; set; }
+ public float? ScatteringHaveDamageCoef { get; set; }
[JsonPropertyName("SCATTERING_DIST_MODIF")]
- public float ScatteringDistModif { get; set; }
+ public float? ScatteringDistModif { get; set; }
[JsonPropertyName("SCATTERING_DIST_MODIF_CLOSE")]
- public float ScatteringDistModifClose { get; set; }
+ public float? ScatteringDistModifClose { get; set; }
[JsonPropertyName("AIMING_TYPE")]
- public int AimingType { get; set; }
+ public int? AimingType { get; set; }
[JsonPropertyName("DIST_TO_SHOOT_TO_CENTER")]
- public float DistToShootToCenter { get; set; }
+ public float? DistToShootToCenter { get; set; }
[JsonPropertyName("DIST_TO_SHOOT_NO_OFFSET")]
- public float DistToShootNoOffset { get; set; }
+ public float? DistToShootNoOffset { get; set; }
[JsonPropertyName("SHPERE_FRIENDY_FIRE_SIZE")]
- public float ShpereFriendyFireSize { get; set; }
+ public float? ShpereFriendyFireSize { get; set; }
[JsonPropertyName("COEF_IF_MOVE")]
- public float CoefIfMove { get; set; }
+ public float? CoefIfMove { get; set; }
[JsonPropertyName("TIME_COEF_IF_MOVE")]
- public float TimeCoefIfMove { get; set; }
+ public float? TimeCoefIfMove { get; set; }
[JsonPropertyName("BOT_MOVE_IF_DELTA")]
- public float BotMoveIfDelta { get; set; }
+ public float? BotMoveIfDelta { get; set; }
[JsonPropertyName("NEXT_SHOT_MISS_CHANCE_100")]
- public float NextShotMissChance100 { get; set; }
+ public float? NextShotMissChance100 { get; set; }
[JsonPropertyName("NEXT_SHOT_MISS_Y_OFFSET")]
- public float NextShotMissYOffset { get; set; }
+ public float? NextShotMissYOffset { get; set; }
[JsonPropertyName("ANYTIME_LIGHT_WHEN_AIM_100")]
- public float AnytimeLightWhenAim100 { get; set; }
+ public float? AnytimeLightWhenAim100 { get; set; }
[JsonPropertyName("ANY_PART_SHOOT_TIME")]
- public float AnyPartShootTime { get; set; }
+ public float? AnyPartShootTime { get; set; }
[JsonPropertyName("WEAPON_ROOT_OFFSET")]
- public float WeaponRootOffset { get; set; }
+ public float? WeaponRootOffset { get; set; }
[JsonPropertyName("MIN_DAMAGE_TO_GET_HIT_AFFETS")]
- public float MinDamageToGetHitAffets { get; set; }
+ public float? MinDamageToGetHitAffets { get; set; }
[JsonPropertyName("MAX_AIM_TIME")]
- public float MaxAimTime { get; set; }
+ public float? MaxAimTime { get; set; }
[JsonPropertyName("OFFSET_RECAL_ANYWAY_TIME")]
- public float OffsetRecalAnywayTime { get; set; }
+ public float? OffsetRecalAnywayTime { get; set; }
[JsonPropertyName("Y_TOP_OFFSET_COEF")]
- public float YTopOffsetCoef { get; set; }
+ public float? YTopOffsetCoef { get; set; }
[JsonPropertyName("Y_BOTTOM_OFFSET_COEF")]
- public float YBottomOffsetCoef { get; set; }
+ public float? YBottomOffsetCoef { get; set; }
[JsonPropertyName("STATIONARY_LEAVE_HALF_DEGREE")]
- public float StationaryLeaveHalfDegree { get; set; }
+ public float? StationaryLeaveHalfDegree { get; set; }
[JsonPropertyName("BAD_SHOOTS_MIN")]
- public int BadShootsMin { get; set; }
+ public int? BadShootsMin { get; set; }
[JsonPropertyName("BAD_SHOOTS_MAX")]
- public int BadShootsMax { get; set; }
+ public int? BadShootsMax { get; set; }
[JsonPropertyName("BAD_SHOOTS_OFFSET")]
- public float BadShootsOffset { get; set; }
+ public float? BadShootsOffset { get; set; }
[JsonPropertyName("BAD_SHOOTS_MAIN_COEF")]
- public float BadShootsMainCoef { get; set; }
+ public float? BadShootsMainCoef { get; set; }
[JsonPropertyName("START_TIME_COEF")]
- public float StartTimeCoef { get; set; }
+ public float? StartTimeCoef { get; set; }
[JsonPropertyName("AIMING_ON_WAY")]
- public float AimingOnWay { get; set; }
+ public float? AimingOnWay { get; set; }
[JsonPropertyName("FIRST_CONTACT_HARD_TO_SEE_MISS_SHOOTS_DISTANCE")]
- public float FirstContactHardToSeeMissShootsDistance { get; set; }
+ public float? FirstContactHardToSeeMissShootsDistance { get; set; }
[JsonPropertyName("FIRST_CONTACT_HARD_TO_SEE_MISS_SHOOTS_COUNT")]
- public int FirstContactHardToSeeMissShootsCount { get; set; }
+ public int? FirstContactHardToSeeMissShootsCount { get; set; }
[JsonPropertyName("MISS_FIRST_SOOTS")]
- public int MissFirstSoots { get; set; }
+ public int? MissFirstSoots { get; set; }
[JsonPropertyName("MISS_ON_START")]
- public int MissOnStart { get; set; }
+ public int? MissOnStart { get; set; }
[JsonPropertyName("MISS_DIST")]
- public float MissDist { get; set; }
+ public float? MissDist { get; set; }
[JsonPropertyName("UnderbarrelLauncherAiming")]
public BotUnderbarrelLauncherAimingSettings UnderbarrelLauncherAiming { get; set; }
@@ -212,101 +218,101 @@ public record BotGlobalAimingSettings
public record BotUnderbarrelLauncherAimingSettings
{
[JsonPropertyName("AIMING_ON_WAY")]
- public float AimingOnWay { get; set; }
+ public float? AimingOnWay { get; set; }
[JsonPropertyName("ANYTIME_LIGHT_WHEN_AIM_100")]
- public float AnytimeLightWhenAim100 { get; set; }
+ public float? AnytimeLightWhenAim100 { get; set; }
[JsonPropertyName("BAD_SHOOTS_MIN")]
- public int BadShootsMin { get; set; }
+ public int? BadShootsMin { get; set; }
[JsonPropertyName("BAD_SHOOTS_MAX")]
- public int BadShootsMax { get; set; }
+ public int? BadShootsMax { get; set; }
[JsonPropertyName("START_TIME_COEF")]
- public float StartTimeCoef { get; set; }
+ public float? StartTimeCoef { get; set; }
[JsonPropertyName("DAMAGE_TO_DISCARD_AIM_0_100")]
- public float DamageToDiscardAim0100 { get; set; }
+ public float? DamageToDiscardAim0100 { get; set; }
[JsonPropertyName("MIN_TIME_DISCARD_AIM_SEC")]
- public float MinTimeDiscardAimSec { get; set; }
+ public float? MinTimeDiscardAimSec { get; set; }
[JsonPropertyName("MAX_TIME_DISCARD_AIM_SEC")]
- public float MaxTimeDiscardAimSec { get; set; }
+ public float? MaxTimeDiscardAimSec { get; set; }
[JsonPropertyName("MAX_AIM_PRECICING")]
- public float MaxAimPrecicing { get; set; }
+ public float? MaxAimPrecicing { get; set; }
[JsonPropertyName("MAX_AIMING_UPGRADE_BY_TIME")]
- public float MaxAimingUpgradeByTime { get; set; }
+ public float? MaxAimingUpgradeByTime { get; set; }
[JsonPropertyName("BOT_MOVE_IF_DELTA")]
- public float BotMoveIfDelta { get; set; }
+ public float? BotMoveIfDelta { get; set; }
[JsonPropertyName("PANIC_TIME")]
- public float PanicTime { get; set; }
+ public float? PanicTime { get; set; }
[JsonPropertyName("RECALC_MUST_TIME_MIN")]
- public int RecalcMustTimeMin { get; set; }
+ public int? RecalcMustTimeMin { get; set; }
[JsonPropertyName("RECALC_MUST_TIME_MAX")]
- public int RecalcMustTimeMax { get; set; }
+ public int? RecalcMustTimeMax { get; set; }
[JsonPropertyName("RECLC_Y_DIST")]
- public float ReclcYDist { get; set; }
+ public float? ReclcYDist { get; set; }
[JsonPropertyName("RECALC_SQR_DIST")]
- public float RecalcSqrDist { get; set; }
+ public float? RecalcSqrDist { get; set; }
[JsonPropertyName("TIME_COEF_IF_MOVE")]
- public float TimeCoefIfMove { get; set; }
+ public float? TimeCoefIfMove { get; set; }
[JsonPropertyName("PANIC_COEF")]
- public float PanicCoef { get; set; }
+ public float? PanicCoef { get; set; }
[JsonPropertyName("COEF_FROM_COVER")]
- public float CoefFromCover { get; set; }
+ public float? CoefFromCover { get; set; }
[JsonPropertyName("BOTTOM_COEF")]
- public float BottomCoef { get; set; }
+ public float? BottomCoef { get; set; }
[JsonPropertyName("MAX_AIM_TIME")]
- public float MaxAimTime { get; set; }
+ public float? MaxAimTime { get; set; }
[JsonPropertyName("SCATTERING_DIST_MODIF")]
- public float ScatteringDistModif { get; set; }
+ public float? ScatteringDistModif { get; set; }
[JsonPropertyName("SCATTERING_DIST_MODIF_CLOSE")]
- public float ScatteringDistModifClose { get; set; }
+ public float? ScatteringDistModifClose { get; set; }
[JsonPropertyName("DIST_TO_SHOOT_NO_OFFSET")]
- public float DistToShootNoOffset { get; set; }
+ public float? DistToShootNoOffset { get; set; }
[JsonPropertyName("PANIC_ACCURATY_COEF")]
- public float PanicAccuratyCoef { get; set; }
+ public float? PanicAccuratyCoef { get; set; }
[JsonPropertyName("HARD_AIM")]
- public float HardAim { get; set; }
+ public float? HardAim { get; set; }
[JsonPropertyName("COEF_IF_MOVE")]
- public float CoefIfMove { get; set; }
+ public float? CoefIfMove { get; set; }
[JsonPropertyName("Y_TOP_OFFSET_COEF")]
- public float YTopOffsetCoef { get; set; }
+ public float? YTopOffsetCoef { get; set; }
[JsonPropertyName("Y_BOTTOM_OFFSET_COEF")]
- public float YBottomOffsetCoef { get; set; }
+ public float? YBottomOffsetCoef { get; set; }
[JsonPropertyName("NEXT_SHOT_MISS_Y_OFFSET")]
- public float NextShotMissYOffset { get; set; }
+ public float? NextShotMissYOffset { get; set; }
[JsonPropertyName("BAD_SHOOTS_OFFSET")]
- public float BadShootsOffset { get; set; }
+ public float? BadShootsOffset { get; set; }
[JsonPropertyName("BAD_SHOOTS_MAIN_COEF")]
- public float BadShootsMainCoef { get; set; }
+ public float? BadShootsMainCoef { get; set; }
[JsonPropertyName("OFFSET_RECAL_ANYWAY_TIME")]
- public float OffsetRecalAnywayTime { get; set; }
+ public float? OffsetRecalAnywayTime { get; set; }
}
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalCoreSettings.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalCoreSettings.cs
index 3b8bca6e..25a88d32 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalCoreSettings.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalCoreSettings.cs
@@ -3,54 +3,60 @@
namespace SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings;
///
+///
/// See GClass611 (To be remapped to BotGlobalsCoreSettingsClass) in the client, this record should match that
+///
+///
+///
+/// These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
+///
///
public record BotGlobalCoreSettings
{
[JsonPropertyName("VisibleAngle")]
- public float VisibleAngle { get; set; }
+ public float? VisibleAngle { get; set; }
[JsonPropertyName("VisibleDistance")]
- public float VisibleDistance { get; set; }
+ public float? VisibleDistance { get; set; }
[JsonPropertyName("GainSightCoef")]
- public float GainSightCoef { get; set; }
+ public float? GainSightCoef { get; set; }
[JsonPropertyName("ScatteringPerMeter")]
- public float ScatteringPerMeter { get; set; }
+ public float? ScatteringPerMeter { get; set; }
[JsonPropertyName("ScatteringClosePerMeter")]
- public float ScatteringClosePerMeter { get; set; }
+ public float? ScatteringClosePerMeter { get; set; }
[JsonPropertyName("DamageCoeff")]
- public float DamageCoeff { get; set; }
+ public float? DamageCoeff { get; set; }
[JsonPropertyName("HearingSense")]
- public float HearingSense { get; set; }
+ public float? HearingSense { get; set; }
[JsonPropertyName("CanRun")]
- public bool CanRun { get; set; }
+ public bool? CanRun { get; set; }
[JsonPropertyName("CanGrenade")]
- public bool CanGrenade { get; set; }
+ public bool? CanGrenade { get; set; }
[JsonPropertyName("AimingType")]
public EAimingType AimingType { get; set; }
[JsonPropertyName("PistolFireDistancePref")]
- public float PistolFireDistancePref { get; set; }
+ public float? PistolFireDistancePref { get; set; }
[JsonPropertyName("ShotgunFireDistancePref")]
- public float ShotgunFireDistancePref { get; set; }
+ public float? ShotgunFireDistancePref { get; set; }
[JsonPropertyName("RifleFireDistancePref")]
- public float RifleFireDistancePref { get; set; }
+ public float? RifleFireDistancePref { get; set; }
[JsonPropertyName("AccuratySpeed")]
- public float AccuratySpeed { get; set; }
+ public float? AccuratySpeed { get; set; }
[JsonPropertyName("WaitInCoverBetweenShotsSec")]
- public float WaitInCoverBetweenShotsSec { get; set; }
+ public float? WaitInCoverBetweenShotsSec { get; set; }
public enum EAimingType
{
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalLayData.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalLayData.cs
index 73503802..072e6141 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalLayData.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalLayData.cs
@@ -3,91 +3,97 @@
namespace SPTarkov.Server.Core.Models.Eft.Common.Tables;
///
+///
/// See BotGlobalLayData in the client, this record should match that
+///
+///
+///
+/// These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
+///
///
public record BotGlobalLayData
{
[JsonPropertyName("CHECK_SHOOT_WHEN_LAYING")]
- public bool CheckShootWhenLaying { get; set; }
+ public bool? CheckShootWhenLaying { get; set; }
[JsonPropertyName("DELTA_LAY_CHECK")]
- public float DeltaLayCheck { get; set; }
+ public float? DeltaLayCheck { get; set; }
[JsonPropertyName("DELTA_GETUP")]
- public float DeltaGetup { get; set; }
+ public float? DeltaGetup { get; set; }
[JsonPropertyName("DELTA_AFTER_GETUP")]
- public float DeltaAfterGetup { get; set; }
+ public float? DeltaAfterGetup { get; set; }
[JsonPropertyName("CLEAR_POINTS_OF_SCARE_SEC")]
- public float ClearPointsOfScareSec { get; set; }
+ public float? ClearPointsOfScareSec { get; set; }
[JsonPropertyName("MAX_LAY_TIME")]
- public float MaxLayTime { get; set; }
+ public float? MaxLayTime { get; set; }
[JsonPropertyName("DELTA_WANT_LAY_CHECL_SEC")]
- public float DeltaWantLayCheckSec { get; set; }
+ public float? DeltaWantLayCheckSec { get; set; }
[JsonPropertyName("ATTACK_LAY_CHANCE")]
- public float AttackLayChance { get; set; }
+ public float? AttackLayChance { get; set; }
[JsonPropertyName("DIST_TO_COVER_TO_LAY")]
- public float DistToCoverToLay { get; set; }
+ public float? DistToCoverToLay { get; set; }
[JsonPropertyName("DIST_TO_COVER_TO_LAY_SQRT")]
- public float DistToCoverToLaySqrt { get; set; }
+ public float? DistToCoverToLaySqrt { get; set; }
[JsonPropertyName("DIST_GRASS_TERRAIN_SQRT")]
- public float DistGrassTerrainSqrt { get; set; }
+ public float? DistGrassTerrainSqrt { get; set; }
[JsonPropertyName("DIST_ENEMY_NULL_DANGER_LAY")]
- public float DistEnemyNullDangerLay { get; set; }
+ public float? DistEnemyNullDangerLay { get; set; }
[JsonPropertyName("DIST_ENEMY_NULL_DANGER_LAY_SQRT")]
- public float DistEnemyNullDangerLaySqrt { get; set; }
+ public float? DistEnemyNullDangerLaySqrt { get; set; }
[JsonPropertyName("DIST_ENEMY_GETUP_LAY")]
- public float DistEnemyGetupLay { get; set; }
+ public float? DistEnemyGetupLay { get; set; }
[JsonPropertyName("DIST_ENEMY_GETUP_LAY_SQRT")]
- public float DistEnemyGetupLaySqrt { get; set; }
+ public float? DistEnemyGetupLaySqrt { get; set; }
[JsonPropertyName("DIST_ENEMY_CAN_LAY")]
- public float DistEnemyCanLay { get; set; }
+ public float? DistEnemyCanLay { get; set; }
[JsonPropertyName("DIST_ENEMY_CAN_LAY_SQRT")]
- public float DistEnemyCanLaySqrt { get; set; }
+ public float? DistEnemyCanLaySqrt { get; set; }
[JsonPropertyName("LAY_AIM")]
- public float LayAim { get; set; }
+ public float? LayAim { get; set; }
[JsonPropertyName("MIN_CAN_LAY_DIST_SQRT")]
- public float MinCanLayDistSqrt { get; set; }
+ public float? MinCanLayDistSqrt { get; set; }
[JsonPropertyName("MIN_CAN_LAY_DIST")]
- public float MinCanLayDist { get; set; }
+ public float? MinCanLayDist { get; set; }
[JsonPropertyName("MAX_CAN_LAY_DIST_SQRT")]
- public float MaxCanLayDistSqrt { get; set; }
+ public float? MaxCanLayDistSqrt { get; set; }
[JsonPropertyName("MAX_CAN_LAY_DIST")]
- public float MaxCanLayDist { get; set; }
+ public float? MaxCanLayDist { get; set; }
[JsonPropertyName("LAY_CHANCE_DANGER")]
- public float LayChanceDanger { get; set; }
+ public float? LayChanceDanger { get; set; }
[JsonPropertyName("DAMAGE_TIME_TO_GETUP")]
- public int DamageTimeToGetup { get; set; }
+ public int? DamageTimeToGetup { get; set; }
[JsonPropertyName("SHALL_GETUP_ON_ROTATE")]
- public bool ShallGetupOnRotate { get; set; }
+ public bool? ShallGetupOnRotate { get; set; }
[JsonPropertyName("SHALL_LAY_WITHOUT_CHECK")]
- public bool ShallLayWithoutCheck { get; set; }
+ public bool? ShallLayWithoutCheck { get; set; }
[JsonPropertyName("IF_NO_ENEMY")]
- public bool IfNoEnemy { get; set; }
+ public bool? IfNoEnemy { get; set; }
[JsonPropertyName("SHALL_LAY_PROBABILTY_WHEN_ARTILLERY")]
- public int ShallLayProbabilityWhenArtillery { get; set; }
+ public int? ShallLayProbabilityWhenArtillery { get; set; }
}
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalLookData.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalLookData.cs
index 361ac5fb..e7f62f4a 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalLookData.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalLookData.cs
@@ -3,199 +3,205 @@
namespace SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings;
///
+///
/// See BotGlobalLookData in the client, this record should match that
+///
+///
+///
+/// These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
+///
///
public record BotGlobalLookData
{
[JsonPropertyName("OLD_TIME_POINT")]
- public float OldTimePoint { get; set; }
+ public float? OldTimePoint { get; set; }
[JsonPropertyName("WAIT_NEW_SENSOR")]
- public float WaitNewSensor { get; set; }
+ public float? WaitNewSensor { get; set; }
[JsonPropertyName("WAIT_NEW__LOOK_SENSOR")]
- public float WaitNewLookSensor { get; set; }
+ public float? WaitNewLookSensor { get; set; }
[JsonPropertyName("LOOK_AROUND_DELTA")]
- public float LookAroundDelta { get; set; }
+ public float? LookAroundDelta { get; set; }
[JsonPropertyName("MAX_VISION_GRASS_METERS")]
- public float MaxVisionGrassMeters { get; set; }
+ public float? MaxVisionGrassMeters { get; set; }
[JsonPropertyName("MAX_VISION_GRASS_METERS_FLARE")]
- public float MaxVisionGrassMetersFlare { get; set; }
+ public float? MaxVisionGrassMetersFlare { get; set; }
[JsonPropertyName("MAX_VISION_GRASS_METERS_OPT")]
- public float MaxVisionGrassMetersOpt { get; set; }
+ public float? MaxVisionGrassMetersOpt { get; set; }
[JsonPropertyName("MAX_VISION_GRASS_METERS_FLARE_OPT")]
- public float MaxVisionGrassMetersFlareOpt { get; set; }
+ public float? MaxVisionGrassMetersFlareOpt { get; set; }
[JsonPropertyName("LightOnVisionDistance")]
- public float LightOnVisionDistance { get; set; }
+ public float? LightOnVisionDistance { get; set; }
[JsonPropertyName("FAR_DISTANCE")]
- public float FarDistance { get; set; }
+ public float? FarDistance { get; set; }
[JsonPropertyName("FarDeltaTimeSec")]
- public float FarDeltaTimeSec { get; set; }
+ public float? FarDeltaTimeSec { get; set; }
[JsonPropertyName("MIDDLE_DIST")]
- public float MiddleDist { get; set; }
+ public float? MiddleDist { get; set; }
[JsonPropertyName("MiddleDeltaTimeSec")]
- public float MiddleDeltaTimeSec { get; set; }
+ public float? MiddleDeltaTimeSec { get; set; }
[JsonPropertyName("CloseDeltaTimeSec")]
- public float CloseDeltaTimeSec { get; set; }
+ public float? CloseDeltaTimeSec { get; set; }
[JsonPropertyName("POSIBLE_VISION_SPACE")]
- public float PosibleVisionSpace { get; set; }
+ public float? PosibleVisionSpace { get; set; }
[JsonPropertyName("VISIBILITY_CHANGE_SPEED")]
- public float VisibilityChangeSpeed { get; set; }
+ public float? VisibilityChangeSpeed { get; set; }
[JsonPropertyName("MIN_DISTANCE_VISIBILITY_CHANGE_SPEED_K")]
- public float MinDistanceVisibilityChangeSpeedK { get; set; }
+ public float? MinDistanceVisibilityChangeSpeedK { get; set; }
[JsonPropertyName("MAX_DISTANCE_VISIBILITY_CHANGE_SPEED_K")]
- public float MaxDistanceVisibilityChangeSpeedK { get; set; }
+ public float? MaxDistanceVisibilityChangeSpeedK { get; set; }
[JsonPropertyName("GOAL_TO_FULL_DISSAPEAR")]
- public float GoalToFullDissapear { get; set; }
+ public float? GoalToFullDissapear { get; set; }
[JsonPropertyName("GOAL_TO_FULL_DISSAPEAR_GREEN")]
- public float GoalToFullDissapearGreen { get; set; }
+ public float? GoalToFullDissapearGreen { get; set; }
[JsonPropertyName("GOAL_TO_FULL_DISSAPEAR_SHOOT")]
- public float GoalToFullDissapearShoot { get; set; }
+ public float? GoalToFullDissapearShoot { get; set; }
[JsonPropertyName("BODY_DELTA_TIME_SEARCH_SEC")]
- public float BodyDeltaTimeSearchSec { get; set; }
+ public float? BodyDeltaTimeSearchSec { get; set; }
[JsonPropertyName("COME_TO_BODY_DIST")]
- public float ComeToBodyDist { get; set; }
+ public float? ComeToBodyDist { get; set; }
[JsonPropertyName("MARKSMAN_VISIBLE_DIST_COEF")]
- public float MarksmanVisibleDistCoef { get; set; }
+ public float? MarksmanVisibleDistCoef { get; set; }
[JsonPropertyName("VISIBLE_DISNACE_WITH_LIGHT")]
- public float VisibleDisnaceWithLight { get; set; }
+ public float? VisibleDisnaceWithLight { get; set; }
[JsonPropertyName("ENEMY_LIGHT_ADD")]
- public float EnemyLightAdd { get; set; }
+ public float? EnemyLightAdd { get; set; }
[JsonPropertyName("ENEMY_LIGHT_START_DIST")]
- public float EnemyLightStartDist { get; set; }
+ public float? EnemyLightStartDist { get; set; }
[JsonPropertyName("DIST_NOT_TO_IGNORE_WALL")]
- public float DistNotToIgnoreWall { get; set; }
+ public float? DistNotToIgnoreWall { get; set; }
[JsonPropertyName("DIST_CHECK_WALL")]
- public float DistCheckWall { get; set; }
+ public float? DistCheckWall { get; set; }
[JsonPropertyName("LOOK_LAST_POSENEMY_IF_NO_DANGER_SEC")]
- public float LookLastPosenemyIfNoDangerSec { get; set; }
+ public float? LookLastPosenemyIfNoDangerSec { get; set; }
[JsonPropertyName("MIN_LOOK_AROUD_TIME")]
- public float MinLookAroudTime { get; set; }
+ public float? MinLookAroudTime { get; set; }
[JsonPropertyName("LOOK_THROUGH_GRASS")]
- public bool LookThroughGrass { get; set; }
+ public bool? LookThroughGrass { get; set; }
[JsonPropertyName("LOOK_THROUGH_GRASS_DIST_METERS")]
- public float LookThroughGrassDistMeters { get; set; }
+ public float? LookThroughGrassDistMeters { get; set; }
[JsonPropertyName("SEC_REPEATED_SEEN")]
- public float SecRepeatedSeen { get; set; }
+ public float? SecRepeatedSeen { get; set; }
[JsonPropertyName("DIST_SQRT_REPEATED_SEEN")]
- public double DistSqrtRepeatedSeen { get; set; }
+ public double? DistSqrtRepeatedSeen { get; set; }
[JsonPropertyName("DIST_REPEATED_SEEN")]
- public double DistRepeatedSeen { get; set; }
+ public double? DistRepeatedSeen { get; set; }
[JsonPropertyName("COEF_REPEATED_SEEN")]
- public float CoefRepeatedSeen { get; set; }
+ public float? CoefRepeatedSeen { get; set; }
[JsonPropertyName("MAX_DIST_CLAMP_TO_SEEN_SPEED")]
- public float MaxDistClampToSeenSpeed { get; set; }
+ public float? MaxDistClampToSeenSpeed { get; set; }
[JsonPropertyName("NIGHT_VISION_ON")]
- public float NightVisionOn { get; set; }
+ public float? NightVisionOn { get; set; }
[JsonPropertyName("NIGHT_VISION_OFF")]
- public float NightVisionOff { get; set; }
+ public float? NightVisionOff { get; set; }
[JsonPropertyName("NIGHT_VISION_DIST")]
- public float NightVisionDist { get; set; }
+ public float? NightVisionDist { get; set; }
[JsonPropertyName("VISIBLE_ANG_LIGHT")]
- public float VisibleAngLight { get; set; }
+ public float? VisibleAngLight { get; set; }
[JsonPropertyName("VISIBLE_ANG_NIGHTVISION")]
- public float VisibleAngNightvision { get; set; }
+ public float? VisibleAngNightvision { get; set; }
[JsonPropertyName("NO_GREEN_DIST")]
- public float NoGreenDist { get; set; }
+ public float? NoGreenDist { get; set; }
[JsonPropertyName("NO_GRASS_DIST")]
- public float NoGrassDist { get; set; }
+ public float? NoGrassDist { get; set; }
[JsonPropertyName("INSIDE_BUSH_COEF")]
- public float InsideBushCoef { get; set; }
+ public float? InsideBushCoef { get; set; }
[JsonPropertyName("SELF_NIGHTVISION")]
- public bool SelfNightvision { get; set; }
+ public bool? SelfNightvision { get; set; }
[JsonPropertyName("FULL_SECTOR_VIEW")]
- public bool FullSectorView { get; set; }
+ public bool? FullSectorView { get; set; }
[JsonPropertyName("LOOK_THROUGH_PERIOD_BY_HIT")]
- public float LookThroughPeriodByHit { get; set; }
+ public float? LookThroughPeriodByHit { get; set; }
[JsonPropertyName("CHECK_HEAD_ANY_DIST")]
- public bool CheckHeadAnyDist { get; set; }
+ public bool? CheckHeadAnyDist { get; set; }
[JsonPropertyName("MIDDLE_DIST_CAN_SHOOT_HEAD")]
- public bool MiddleDistCanShootHead { get; set; }
+ public bool? MiddleDistCanShootHead { get; set; }
[JsonPropertyName("CAN_USE_LIGHT")]
- public bool CanUseLight { get; set; }
+ public bool? CanUseLight { get; set; }
[JsonPropertyName("RAIN_DEBUFF_MAXVISIBILITY_MULTIPLYER")]
- public float RainDebuffMaxvisibilityMultiplyer { get; set; }
+ public float? RainDebuffMaxvisibilityMultiplyer { get; set; }
[JsonPropertyName("FOG_DEBUFF_MAXVISIBILITY_MULTIPLYER")]
- public float FogDebuffMaxvisibilityMultiplyer { get; set; }
+ public float? FogDebuffMaxvisibilityMultiplyer { get; set; }
[JsonPropertyName("RAIN_DEBUFF_SEENCOEFF_MULTIPLYER")]
- public float RainDebuffSeencoeffMultiplyer { get; set; }
+ public float? RainDebuffSeencoeffMultiplyer { get; set; }
[JsonPropertyName("FOG_DEBUFF_SEENCOEFF_MULTIPLYER")]
- public float FogDebuffSeencoeffMultiplyer { get; set; }
+ public float? FogDebuffSeencoeffMultiplyer { get; set; }
[JsonPropertyName("SHOOT_FROM_EYES")]
- public bool ShootFromEyes { get; set; }
+ public bool? ShootFromEyes { get; set; }
[JsonPropertyName("ANGLE_FOR_GETUP")]
- public float AngleForGetup { get; set; }
+ public float? AngleForGetup { get; set; }
[JsonPropertyName("MINIMUM_VISIBLE_DIST")]
- public float MinimumVisibleDist { get; set; }
+ public float? MinimumVisibleDist { get; set; }
[JsonPropertyName("CAN_USE_STRIBOSCOPE")]
- public float CanUseStriboscope { get; set; }
+ public float? CanUseStriboscope { get; set; }
[JsonPropertyName("LOOK_TO_ENEMY_TIME")]
- public float LookToEnemyTime { get; set; }
+ public float? LookToEnemyTime { get; set; }
[JsonPropertyName("ANGLE_VISION_COEF_FILTER")]
- public float AngleVisionCoefFilter { get; set; }
+ public float? AngleVisionCoefFilter { get; set; }
[JsonPropertyName("HEAD_ROTATE_SPEED")]
- public float HeadRotateSpeed { get; set; }
+ public float? HeadRotateSpeed { get; set; }
[JsonPropertyName("VISIBILITY_LEVEL_TO_TURN_HEAD")]
- public float VisibilityLevelToTurnHead { get; set; }
+ public float? VisibilityLevelToTurnHead { get; set; }
}
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalPatrolSettings.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalPatrolSettings.cs
index 7c6a824f..2b24ef55 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalPatrolSettings.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalPatrolSettings.cs
@@ -3,199 +3,205 @@
namespace SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings;
///
+///
/// See BotGlobalPatrolSettings in the client, this record should match that
+///
+///
+///
+/// These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
+///
///
public class BotGlobalPatrolSettings
{
[JsonPropertyName("LOOK_TIME_BASE")]
- public float LookTimeBase { get; set; }
+ public float? LookTimeBase { get; set; }
[JsonPropertyName("RESERVE_TIME_STAY")]
- public float ReserveTimeStay { get; set; }
+ public float? ReserveTimeStay { get; set; }
[JsonPropertyName("RESERVE_LOOT_TIME_STAY")]
- public float ReserveLootTimeStay { get; set; }
+ public float? ReserveLootTimeStay { get; set; }
[JsonPropertyName("FRIEND_SEARCH_SEC")]
- public float FriendSearchSeconds { get; set; }
+ public float? FriendSearchSeconds { get; set; }
[JsonPropertyName("TALK_DELAY")]
- public float TalkDelay { get; set; }
+ public float? TalkDelay { get; set; }
[JsonPropertyName("MIN_TALK_DELAY")]
- public float MinTalkDelay { get; set; }
+ public float? MinTalkDelay { get; set; }
[JsonPropertyName("TALK_DELAY_BIG")]
- public float TalkDelayBig { get; set; }
+ public float? TalkDelayBig { get; set; }
[JsonPropertyName("CHANGE_WAY_TIME")]
- public float ChangeWayTime { get; set; }
+ public float? ChangeWayTime { get; set; }
[JsonPropertyName("MIN_DIST_TO_CLOSE_TALK")]
- public float MinDistToCloseTalk { get; set; }
+ public float? MinDistToCloseTalk { get; set; }
[JsonPropertyName("VISION_DIST_COEF_PEACE")]
- public float VisionDistanceCoefPeace { get; set; }
+ public float? VisionDistanceCoefPeace { get; set; }
[JsonPropertyName("MIN_DIST_TO_CLOSE_TALK_SQR")]
- public float MinDistToCloseTalkSqr { get; set; }
+ public float? MinDistToCloseTalkSqr { get; set; }
[JsonPropertyName("CHANCE_TO_CUT_WAY_0_100")]
- public float ChanceToCutWay { get; set; }
+ public float? ChanceToCutWay { get; set; }
[JsonPropertyName("CUT_WAY_MIN_0_1")]
- public float CutWayMin { get; set; }
+ public float? CutWayMin { get; set; }
[JsonPropertyName("CUT_WAY_MAX_0_1")]
- public float CutWayMax { get; set; }
+ public float? CutWayMax { get; set; }
[JsonPropertyName("CHANCE_TO_CHANGE_WAY_0_100")]
- public float ChanceToChangeWay { get; set; }
+ public float? ChanceToChangeWay { get; set; }
[JsonPropertyName("CHANCE_TO_SHOOT_DEADBODY")]
- public int ChanceToShootDeadBody { get; set; }
+ public int? ChanceToShootDeadBody { get; set; }
[JsonPropertyName("SUSPETION_PLACE_LIFETIME")]
- public float SuspicionPlaceLifetime { get; set; }
+ public float? SuspicionPlaceLifetime { get; set; }
[JsonPropertyName("RESERVE_OUT_TIME")]
- public float ReserveOutTime { get; set; }
+ public float? ReserveOutTime { get; set; }
[JsonPropertyName("CLOSE_TO_SELECT_RESERV_WAY")]
- public float CloseToSelectReserveWay { get; set; }
+ public float? CloseToSelectReserveWay { get; set; }
[JsonPropertyName("MAX_YDIST_TO_START_WARN_REQUEST_TO_REQUESTER")]
- public float MaxYDistToStartWarnRequest { get; set; }
+ public float? MaxYDistToStartWarnRequest { get; set; }
[JsonPropertyName("MAX_YDIST_TO_START_WARN_REQUEST_TO_REQUESTER_ALLY")]
- public float MaxYDistToStartWarnRequestAlly { get; set; }
+ public float? MaxYDistToStartWarnRequestAlly { get; set; }
[JsonPropertyName("CAN_CHOOSE_RESERV")]
- public bool CanChooseReserve { get; set; }
+ public bool? CanChooseReserve { get; set; }
[JsonPropertyName("USE_ONLY_RESERV")]
- public bool UseOnlyReserve { get; set; }
+ public bool? UseOnlyReserve { get; set; }
[JsonPropertyName("HEAD_TURN_PERIOD_TIME")]
- public float HeadTurnPeriodTime { get; set; }
+ public float? HeadTurnPeriodTime { get; set; }
[JsonPropertyName("HEAD_FRONT_PERIOD_TIME")]
- public float HeadFrontPeriodTime { get; set; }
+ public float? HeadFrontPeriodTime { get; set; }
[JsonPropertyName("CHANCE_TO_PLAY_GESTURE_WHEN_CLOSE")]
- public float ChanceToPlayGestureWhenClose { get; set; }
+ public float? ChanceToPlayGestureWhenClose { get; set; }
[JsonPropertyName("HEAD_TURN_SPEED")]
- public float HeadTurnSpeed { get; set; }
+ public float? HeadTurnSpeed { get; set; }
[JsonPropertyName("HEAD_ANG_ROTATE")]
- public float HeadAngleRotate { get; set; }
+ public float? HeadAngleRotate { get; set; }
[JsonPropertyName("LOOT_PATROL_POTENTIAL_CLUSTERS_AMOUNT")]
- public int LootPatrolPotentialClustersAmount { get; set; }
+ public int? LootPatrolPotentialClustersAmount { get; set; }
[JsonPropertyName("CHANCE_TO_PLAY_VOICE_WHEN_CLOSE")]
- public float ChanceToPlayVoiceWhenClose { get; set; }
+ public float? ChanceToPlayVoiceWhenClose { get; set; }
[JsonPropertyName("GO_TO_NEXT_POINT_DELTA")]
- public float GoToNextPointDelta { get; set; }
+ public float? GoToNextPointDelta { get; set; }
[JsonPropertyName("GO_TO_NEXT_POINT_DELTA_RESERV_WAY")]
- public float GoToNextPointDeltaReserveWay { get; set; }
+ public float? GoToNextPointDeltaReserveWay { get; set; }
[JsonPropertyName("DEAD_BODY_SEE_DIST")]
- public float DeadBodySeeDistance { get; set; }
+ public float? DeadBodySeeDistance { get; set; }
[JsonPropertyName("DEAD_BODY_LEAVE_DIST")]
- public float DeadBodyLeaveDistance { get; set; }
+ public float? DeadBodyLeaveDistance { get; set; }
[JsonPropertyName("CAN_LOOK_TO_DEADBODIES")]
- public bool CanLookToDeadBodies { get; set; }
+ public bool? CanLookToDeadBodies { get; set; }
[JsonPropertyName("GESTURE_LENGTH")]
- public float GestureLength { get; set; }
+ public float? GestureLength { get; set; }
[JsonPropertyName("SHALL_STOP_IN_PEACEFUL_ACTION")]
- public bool ShallStopInPeacefulAction { get; set; }
+ public bool? ShallStopInPeacefulAction { get; set; }
[JsonPropertyName("FORCE_OPPONENT_TO_PEAEFUL")]
- public bool ForceOpponentToPeaceful { get; set; }
+ public bool? ForceOpponentToPeaceful { get; set; }
[JsonPropertyName("RESERVE_USE_SURGE_TIME_STAY")]
- public float ReserveUseSurgeTimeStay { get; set; }
+ public float? ReserveUseSurgeTimeStay { get; set; }
[JsonPropertyName("RESERV_CAN_USE_MEDS")]
- public bool ReserveCanUseMeds { get; set; }
+ public bool? ReserveCanUseMeds { get; set; }
[JsonPropertyName("USE_PATROL_POINT_ACTION_MOVE_BY_RESERVE_WAY")]
- public bool UsePatrolPointActionMoveByReserveWay { get; set; }
+ public bool? UsePatrolPointActionMoveByReserveWay { get; set; }
[JsonPropertyName("USE_SURGIAL_KIT_OVER_THE_BODY_CAHNCE_100")]
- public float UseSurgicalKitChance { get; set; }
+ public float? UseSurgicalKitChance { get; set; }
[JsonPropertyName("USE_SURGIAL_KIT_OVER_THE_BODY_SECOND_CAHNCE_100")]
- public float UseSurgicalKitSecondChance { get; set; }
+ public float? UseSurgicalKitSecondChance { get; set; }
[JsonPropertyName("FOLLOWER_START_MOVE_DELAY")]
- public float FollowerStartMoveDelay { get; set; }
+ public float? FollowerStartMoveDelay { get; set; }
[JsonPropertyName("USE_CHACHE_WAYS")]
- public bool UseCachedWays { get; set; }
+ public bool? UseCachedWays { get; set; }
[JsonPropertyName("ITEMS_TO_DROP")]
- public string ItemsToDrop { get; set; }
+ public string? ItemsToDrop { get; set; }
[JsonPropertyName("SPRINT_BETWEEN_CACHED_POINTS")]
- public float SprintBetweenCachedPoints { get; set; }
+ public float? SprintBetweenCachedPoints { get; set; }
[JsonPropertyName("CHECK_MAGAZIN_PERIOD")]
- public float CheckMagazinePeriod { get; set; }
+ public float? CheckMagazinePeriod { get; set; }
[JsonPropertyName("EAT_DRINK_PERIOD")]
- public float EatDrinkPeriod { get; set; }
+ public float? EatDrinkPeriod { get; set; }
[JsonPropertyName("WATCH_SECOND_WEAPON_PERIOD")]
- public float WatchSecondWeaponPeriod { get; set; }
+ public float? WatchSecondWeaponPeriod { get; set; }
[JsonPropertyName("CAN_WATCH_SECOND_WEAPON")]
- public bool CanWatchSecondWeapon { get; set; }
+ public bool? CanWatchSecondWeapon { get; set; }
[JsonPropertyName("DEAD_BODY_LOOK_PERIOD")]
- public float DeadBodyLookPeriod { get; set; }
+ public float? DeadBodyLookPeriod { get; set; }
[JsonPropertyName("CAN_HARD_AIM")]
- public bool CanHardAim { get; set; }
+ public bool? CanHardAim { get; set; }
[JsonPropertyName("CAN_PEACEFUL_LOOK")]
- public bool CanPeacefulLook { get; set; }
+ public bool? CanPeacefulLook { get; set; }
[JsonPropertyName("CAN_FRIENDLY_TILT")]
- public bool CanFriendlyTilt { get; set; }
+ public bool? CanFriendlyTilt { get; set; }
[JsonPropertyName("CAN_GESTUS")]
- public bool CanGestus { get; set; }
+ public bool? CanGestus { get; set; }
[JsonPropertyName("TRY_CHOOSE_RESERV_WAY_ON_START")]
- public bool TryChooseReserveWayOnStart { get; set; }
+ public bool? TryChooseReserveWayOnStart { get; set; }
[JsonPropertyName("CAN_CHECK_MAGAZINE")]
- public bool CanCheckMagazine { get; set; }
+ public bool? CanCheckMagazine { get; set; }
[JsonPropertyName("PICKUP_ITEMS_TO_BACKPACK_OR_CONTAINER")]
- public bool PickupItemsToBackpackOrContainer { get; set; }
+ public bool? PickupItemsToBackpackOrContainer { get; set; }
[JsonPropertyName("DO_RANDOM_DROP_ITEM")]
- public bool DoRandomDropItem { get; set; }
+ public bool? DoRandomDropItem { get; set; }
[JsonPropertyName("STAY_AFTER_LOOT_TIME_MIN")]
- public float StayAfterLootTimeMin { get; set; }
+ public float? StayAfterLootTimeMin { get; set; }
[JsonPropertyName("STAY_AFTER_LOOT_TIME_MAX")]
- public float StayAfterLootTimeMax { get; set; }
+ public float? StayAfterLootTimeMax { get; set; }
[JsonPropertyName("USE_REAL_LOOTING")]
- public bool UseRealLooting { get; set; }
+ public bool? UseRealLooting { get; set; }
[JsonPropertyName("DEAD_BODY_DROP_ITEM_PROBABILITY")]
- public float DeadBodyDropItemProbability { get; set; }
+ public float? DeadBodyDropItemProbability { get; set; }
}
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalShootData.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalShootData.cs
index dac8712a..770bb2cb 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalShootData.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalShootData.cs
@@ -3,283 +3,289 @@
namespace SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings;
///
+///
/// See BotGlobalShootData in the client, this record should match that
+///
+///
+///
+/// These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
+///
///
public record BotGlobalShootData
{
[JsonPropertyName("SWITCH_TO_UNDERBARREL_WEAPON_COOLDOWN")]
- public float SwitchToUnderbarrelWeaponCooldown { get; set; }
+ public float? SwitchToUnderbarrelWeaponCooldown { get; set; }
[JsonPropertyName("MIN_TIME_TO_CHECK_FORCE_SWITCH_TO_GRENADE_LAUNCHER")]
- public float MinTimeToCheckForceSwitchToGrenadeLauncher { get; set; }
+ public float? MinTimeToCheckForceSwitchToGrenadeLauncher { get; set; }
[JsonPropertyName("MAX_TIME_TO_CHECK_FORCE_SWITCH_TO_GRENADE_LAUNCHER")]
- public float MaxTimeToCheckForceSwitchToGrenadeLauncher { get; set; }
+ public float? MaxTimeToCheckForceSwitchToGrenadeLauncher { get; set; }
[JsonPropertyName("MAX_TIME_SEEN_TO_SWITCH_TO_GRENADE_LAUNCHER")]
- public float MaxTimeSeenToSwitchToGrenadeLauncher { get; set; }
+ public float? MaxTimeSeenToSwitchToGrenadeLauncher { get; set; }
[JsonPropertyName("MAX_SUCCESS_GRENADE_LAUNCHER_SHOOT_ATTEMPTS")]
public uint MaxSuccessGrenadeLauncherShootAttempts { get; set; }
[JsonPropertyName("SHOOT_PROBABILITY_GRENADE_LAUNCHER")]
- public float ShootProbabilityGrenadeLauncher { get; set; }
+ public float? ShootProbabilityGrenadeLauncher { get; set; }
[JsonPropertyName("LOW_DIST_K_FOR_GRENADE_LAUNCHER")]
- public float LowDistKForGrenadeLauncher { get; set; }
+ public float? LowDistKForGrenadeLauncher { get; set; }
[JsonPropertyName("DEFAULT_LOW_DIST_TO_USE_GRENADE_LAUNCHER")]
- public float DefaultLowDistToUseGrenadeLauncher { get; set; }
+ public float? DefaultLowDistToUseGrenadeLauncher { get; set; }
[JsonPropertyName("DISTANCE_TO_TARGET_NEAR_ENEMY_TRESHOLD")]
- public float DistanceToTargetNearEnemyTreshold { get; set; }
+ public float? DistanceToTargetNearEnemyTreshold { get; set; }
[JsonPropertyName("DISTANCE_TO_TARGET_NEAR_ENEMY_DEVIATION")]
- public float DistanceToTargetNearEnemyDeviation { get; set; }
+ public float? DistanceToTargetNearEnemyDeviation { get; set; }
[JsonPropertyName("RECOIL_TIME_NORMALIZE")]
- public float RecoilTimeNormalize { get; set; }
+ public float? RecoilTimeNormalize { get; set; }
[JsonPropertyName("RECOIL_PER_METER")]
- public float RecoilPerMeter { get; set; }
+ public float? RecoilPerMeter { get; set; }
[JsonPropertyName("MAX_RECOIL_PER_METER")]
- public float MaxRecoilPerMeter { get; set; }
+ public float? MaxRecoilPerMeter { get; set; }
[JsonPropertyName("HORIZONT_RECOIL_COEF")]
- public float HorizontRecoilCoef { get; set; }
+ public float? HorizontRecoilCoef { get; set; }
[JsonPropertyName("WAIT_NEXT_SINGLE_SHOT")]
- public float WaitNextSingleShot { get; set; }
+ public float? WaitNextSingleShot { get; set; }
[JsonPropertyName("WAIT_NEXT_STATIONARY_BULLET")]
- public float WaitNextStationaryBullet { get; set; }
+ public float? WaitNextStationaryBullet { get; set; }
[JsonPropertyName("WAIT_NEXT_STATIONARY_GRENADE")]
- public float WaitNextStationaryGrenade { get; set; }
+ public float? WaitNextStationaryGrenade { get; set; }
[JsonPropertyName("WAIT_NEXT_SINGLE_SHOT_LONG_MAX")]
- public float WaitNextSingleShotLongMax { get; set; }
+ public float? WaitNextSingleShotLongMax { get; set; }
[JsonPropertyName("WAIT_NEXT_SINGLE_SHOT_LONG_MIN")]
- public float WaitNextSingleShotLongMin { get; set; }
+ public float? WaitNextSingleShotLongMin { get; set; }
[JsonPropertyName("NEXT_SINGLE_SHOT_PAUSE")]
- public float NextSingleShotPause { get; set; }
+ public float? NextSingleShotPause { get; set; }
[JsonPropertyName("SINGLE_SHOT_SERIES_TIME_MIN")]
- public float SingleShotSeriesTimeMin { get; set; }
+ public float? SingleShotSeriesTimeMin { get; set; }
[JsonPropertyName("SINGLE_SHOT_SERIES_TIME_MAX")]
- public float SingleShotSeriesTimeMax { get; set; }
+ public float? SingleShotSeriesTimeMax { get; set; }
[JsonPropertyName("USE_SINGLE_SHOT_SERIES")]
- public bool UseSingleShotSeries { get; set; }
+ public bool? UseSingleShotSeries { get; set; }
[JsonPropertyName("MARKSMAN_DIST_SEK_COEF")]
- public float MarksmanDistSekCoef { get; set; }
+ public float? MarksmanDistSekCoef { get; set; }
[JsonPropertyName("FINGER_HOLD_SINGLE_SHOT")]
- public float FingerHoldSingleShot { get; set; }
+ public float? FingerHoldSingleShot { get; set; }
[JsonPropertyName("FINGER_HOLD_STATIONARY_BULLET")]
- public float FingerHoldStationaryBullet { get; set; }
+ public float? FingerHoldStationaryBullet { get; set; }
[JsonPropertyName("FINGER_HOLD_STATIONARY_GRENADE")]
- public float FingerHoldStationaryGrenade { get; set; }
+ public float? FingerHoldStationaryGrenade { get; set; }
[JsonPropertyName("BASE_AUTOMATIC_TIME")]
- public float BaseAutomaticTime { get; set; }
+ public float? BaseAutomaticTime { get; set; }
[JsonPropertyName("AUTOMATIC_FIRE_SCATTERING_COEF")]
- public float AutomaticFireScatteringCoef { get; set; }
+ public float? AutomaticFireScatteringCoef { get; set; }
[JsonPropertyName("CHANCE_TO_CHANGE_TO_AUTOMATIC_FIRE_100")]
- public float ChanceToChangeToAutomaticFire100 { get; set; }
+ public float? ChanceToChangeToAutomaticFire100 { get; set; }
[JsonPropertyName("FAR_DIST_ENEMY")]
- public float FarDistEnemy { get; set; }
+ public float? FarDistEnemy { get; set; }
[JsonPropertyName("SHOOT_FROM_COVER")]
- public int ShootFromCover { get; set; }
+ public int? ShootFromCover { get; set; }
[JsonPropertyName("FAR_DIST_ENEMY_SQR")]
- public float FarDistEnemySqr { get; set; }
+ public float? FarDistEnemySqr { get; set; }
[JsonPropertyName("MAX_DIST_COEF")]
- public float MaxDistCoef { get; set; }
+ public float? MaxDistCoef { get; set; }
[JsonPropertyName("RECOIL_DELTA_PRESS")]
- public float RecoilDeltaPress { get; set; }
+ public float? RecoilDeltaPress { get; set; }
[JsonPropertyName("RUN_DIST_NO_AMMO")]
- public float RunDistNoAmmo { get; set; }
+ public float? RunDistNoAmmo { get; set; }
[JsonPropertyName("RUN_DIST_NO_AMMO_SQRT")]
- public float RunDistNoAmmoSqrt { get; set; }
+ public float? RunDistNoAmmoSqrt { get; set; }
[JsonPropertyName("CAN_SHOOTS_TIME_TO_AMBUSH")]
- public int CanShootsTimeToAmbush { get; set; }
+ public int? CanShootsTimeToAmbush { get; set; }
[JsonPropertyName("NOT_TO_SEE_ENEMY_TO_WANT_RELOAD_PERCENT")]
- public float NotToSeeEnemyToWantReloadPercent { get; set; }
+ public float? NotToSeeEnemyToWantReloadPercent { get; set; }
[JsonPropertyName("NOT_TO_SEE_ENEMY_TO_WANT_RELOAD_SEC")]
- public float NotToSeeEnemyToWantReloadSec { get; set; }
+ public float? NotToSeeEnemyToWantReloadSec { get; set; }
[JsonPropertyName("RELOAD_PECNET_NO_ENEMY")]
- public float ReloadPecnetNoEnemy { get; set; }
+ public float? ReloadPecnetNoEnemy { get; set; }
[JsonPropertyName("CHANCE_TO_CHANGE_WEAPON")]
- public float ChanceToChangeWeapon { get; set; }
+ public float? ChanceToChangeWeapon { get; set; }
[JsonPropertyName("CHANCE_TO_CHANGE_WEAPON_WITH_HELMET")]
- public float ChanceToChangeWeaponWithHelmet { get; set; }
+ public float? ChanceToChangeWeaponWithHelmet { get; set; }
[JsonPropertyName("LOW_DIST_TO_CHANGE_WEAPON")]
- public float LowDistToChangeWeapon { get; set; }
+ public float? LowDistToChangeWeapon { get; set; }
[JsonPropertyName("FAR_DIST_TO_CHANGE_WEAPON")]
- public float FarDistToChangeWeapon { get; set; }
+ public float? FarDistToChangeWeapon { get; set; }
[JsonPropertyName("SUPPRESS_BY_SHOOT_TIME")]
- public float SuppressByShootTime { get; set; }
+ public float? SuppressByShootTime { get; set; }
[JsonPropertyName("SUPPRESS_TRIGGERS_DOWN")]
- public int SuppressTriggersDown { get; set; }
+ public int? SuppressTriggersDown { get; set; }
[JsonPropertyName("SUPPRESS_TRIGGERS_DOWN_AS_LIST")]
- public int SuppressTriggersDownAsList { get; set; }
+ public int? SuppressTriggersDownAsList { get; set; }
[JsonPropertyName("DIST_TO_CHANGE_TO_MAIN")]
- public float DistToChangeToMain { get; set; }
+ public float? DistToChangeToMain { get; set; }
[JsonPropertyName("AGS_17_DIST_TO_LEAVE")]
- public float Ags17DistToLeave { get; set; }
+ public float? Ags17DistToLeave { get; set; }
[JsonPropertyName("DIST_TO_HIT_MELEE")]
- public float DistToHitMelee { get; set; }
+ public float? DistToHitMelee { get; set; }
[JsonPropertyName("DIST_TO_HIT_MELEE_CONTINUE_COMBO")]
- public float DistToHitMeleeContinueCombo { get; set; }
+ public float? DistToHitMeleeContinueCombo { get; set; }
[JsonPropertyName("DIST_TO_STOP_SPRINT_MELEE")]
- public float DistToStopSprintMelee { get; set; }
+ public float? DistToStopSprintMelee { get; set; }
[JsonPropertyName("TRY_HIT_PERIOD_MELEE")]
- public float TryHitPeriodMelee { get; set; }
+ public float? TryHitPeriodMelee { get; set; }
[JsonPropertyName("BLOCK_PERIOD_WHEN_LAY")]
- public float BlockPeriodWhenLay { get; set; }
+ public float? BlockPeriodWhenLay { get; set; }
[JsonPropertyName("CHANGE_WEAPON_PERIOD")]
- public float ChangeWeaponPeriod { get; set; }
+ public float? ChangeWeaponPeriod { get; set; }
[JsonPropertyName("USE_MELEE_COMBOS")]
- public bool UseMeleeCombos { get; set; }
+ public bool? UseMeleeCombos { get; set; }
[JsonPropertyName("MELEE_RESET_HIT_TIME")]
- public float MeleeResetHitTime { get; set; }
+ public float? MeleeResetHitTime { get; set; }
[JsonPropertyName("MELEE_STOP_MOVE_DISTANCE")]
- public float MeleeStopMoveDistance { get; set; }
+ public float? MeleeStopMoveDistance { get; set; }
[JsonPropertyName("VALIDATE_MALFUNCTION_CHANCE")]
- public int ValidateMalfunctionChance { get; set; }
+ public int? ValidateMalfunctionChance { get; set; }
[JsonPropertyName("REPAIR_MALFUNCTION_IMMEDIATE_CHANCE")]
- public int RepairMalfunctionImmediateChance { get; set; }
+ public int? RepairMalfunctionImmediateChance { get; set; }
[JsonPropertyName("DELAY_BEFORE_EXAMINE_MALFUNCTION")]
- public float DelayBeforeExamineMalfunction { get; set; }
+ public float? DelayBeforeExamineMalfunction { get; set; }
[JsonPropertyName("DELAY_BEFORE_FIX_MALFUNCTION")]
- public float DelayBeforeFixMalfunction { get; set; }
+ public float? DelayBeforeFixMalfunction { get; set; }
[JsonPropertyName("TRY_CHANGE_WEAPON_INSTEAD_RELOAD")]
- public bool TryChangeWeaponInsteadReload { get; set; }
+ public bool? TryChangeWeaponInsteadReload { get; set; }
[JsonPropertyName("MELEE_ATTACK_ZIG_ZAG")]
- public bool MeleeAttackZigZag { get; set; }
+ public bool? MeleeAttackZigZag { get; set; }
[JsonPropertyName("MIN_DIST_TO_ENEMY_TO_CHANGE_WEAPON_INSTEAD_RELOAD")]
- public float MinDistToEnemyToChangeWeaponInsteadReload { get; set; }
+ public float? MinDistToEnemyToChangeWeaponInsteadReload { get; set; }
[JsonPropertyName("CHANCE_TO_CHANGE_WEAPON_INSTEAD_RELOAD")]
- public float ChanceToChangeWeaponInsteadReload { get; set; }
+ public float? ChanceToChangeWeaponInsteadReload { get; set; }
[JsonPropertyName("CHANCE_TO_CHANGE_WEAPON_INSTEAD_RELOAD_ENEMY_WITHOUT_HELM")]
- public float ChanceToChangeWeaponInsteadReloadEnemyWithoutHelm { get; set; }
+ public float? ChanceToChangeWeaponInsteadReloadEnemyWithoutHelm { get; set; }
[JsonPropertyName("MELEE_STOP_DIST")]
- public float MeleeStopDist { get; set; }
+ public float? MeleeStopDist { get; set; }
[JsonPropertyName("BLOCK_STEERING")]
- public bool BlockSteering { get; set; }
+ public bool? BlockSteering { get; set; }
[JsonPropertyName("USE_BTR_CANSHOOT")]
- public bool UseBtrCanshoot { get; set; }
+ public bool? UseBtrCanshoot { get; set; }
[JsonPropertyName("FAR_DISTANCE_ALL_WEAPONS")]
- public float FarDistanceAllWeapons { get; set; }
+ public float? FarDistanceAllWeapons { get; set; }
[JsonPropertyName("FAR_DISTANCE_PISTOLS")]
- public float FarDistancePistols { get; set; }
+ public float? FarDistancePistols { get; set; }
[JsonPropertyName("FAR_DISTANCE_SHOTGUNS")]
- public float FarDistanceShotguns { get; set; }
+ public float? FarDistanceShotguns { get; set; }
[JsonPropertyName("FAR_DIST_EYE_CONTACT_TIME_TO_CHANGE_COVER")]
- public float FarDistEyeContactTimeToChangeCover { get; set; }
+ public float? FarDistEyeContactTimeToChangeCover { get; set; }
[JsonPropertyName("CHANGE_TO_MAIN_WEAPON_WHEN_PATROL")]
- public bool ChangeToMainWeaponWhenPatrol { get; set; }
+ public bool? ChangeToMainWeaponWhenPatrol { get; set; }
[JsonPropertyName("SHOOT_IMMEDIATELY_DIST")]
- public float ShootImmediatelyDist { get; set; }
+ public float? ShootImmediatelyDist { get; set; }
[JsonPropertyName("CAN_STOP_SHOOT_CAUSE_ANIMATOR")]
- public bool CanStopShootCauseAnimator { get; set; }
+ public bool? CanStopShootCauseAnimator { get; set; }
[JsonPropertyName("TRY_CHANGE_WEAPON_WHEN_RELOAD")]
- public bool TryChangeWeaponWhenReload { get; set; }
+ public bool? TryChangeWeaponWhenReload { get; set; }
[JsonPropertyName("CHANGE_TO_MAIN_WHEN_SUPPORT_NO_AMMO")]
- public bool ChangeToMainWhenSupportNoAmmo { get; set; }
+ public bool? ChangeToMainWhenSupportNoAmmo { get; set; }
[JsonPropertyName("LAST_SEEN_TIME_TO_START_SUPPRESS_STATIONARY_AGS")]
- public float LastSeenTimeToStartSuppressStationaryAgs { get; set; }
+ public float? LastSeenTimeToStartSuppressStationaryAgs { get; set; }
[JsonPropertyName("STATIONARY_GRENADE_MIN_DIST_TO_TAKE")]
- public float StationaryGrenadeMinDistToTake { get; set; }
+ public float? StationaryGrenadeMinDistToTake { get; set; }
[JsonPropertyName("STATIONARY_SIMPLE_MIN_DIST_TO_TAKE")]
- public double StationarySimpleMinDistToTake { get; set; }
+ public double? StationarySimpleMinDistToTake { get; set; }
[JsonPropertyName("NO_OFFSET_SHOOTING_FROM_PLAYER")]
- public bool NoOffsetShootingFromPlayer { get; set; }
+ public bool? NoOffsetShootingFromPlayer { get; set; }
[JsonPropertyName("ALTERNATIVE_KNIFE_KICK")]
- public bool AlternativeKnifeKick { get; set; }
+ public bool? AlternativeKnifeKick { get; set; }
[JsonPropertyName("DITANCE_TO_OFF_AUTO_FIRE")]
- public float DistanceToOffAutoFire { get; set; }
+ public float? DistanceToOffAutoFire { get; set; }
[JsonPropertyName("DITANCE_TO_ON_AUTO_FIRE")]
- public float DistanceToOnAutoFire { get; set; }
+ public float? DistanceToOnAutoFire { get; set; }
[JsonPropertyName("MISS_ON_CRITICAL_DIST")]
- public float MissOnCriticalDist { get; set; }
+ public float? MissOnCriticalDist { get; set; }
[JsonPropertyName("MISS_AFTER_SPRINT")]
- public bool MissAfterSprint { get; set; }
+ public bool? MissAfterSprint { get; set; }
[JsonPropertyName("MISS_TO_HEAD")]
- public bool MissToHead { get; set; }
+ public bool? MissToHead { get; set; }
[JsonPropertyName("MISS_ON_MOVE")]
- public bool MissOnMove { get; set; }
+ public bool? MissOnMove { get; set; }
[JsonPropertyName("MISS_ON_TRANSITION")]
- public bool MissOnTransition { get; set; }
+ public bool? MissOnTransition { get; set; }
}
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsBossSettings.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsBossSettings.cs
index 8907c94a..0e1ad818 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsBossSettings.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsBossSettings.cs
@@ -4,396 +4,400 @@ namespace SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings;
///
/// See BotGlobalsBossSettings in the client, this record should match that
+///
+///
+/// These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
+///
///
public record BotGlobalsBossSettings
{
[JsonPropertyName("BOSS_DIST_TO_WARNING")]
- public float BossDistToWarning { get; set; }
+ public float? BossDistToWarning { get; set; }
[JsonPropertyName("BOSS_DIST_TO_WARNING_ALLY")]
- public float BossDistToWarningAlly { get; set; }
+ public float? BossDistToWarningAlly { get; set; }
[JsonPropertyName("BOSS_DIST_TO_WARNING_SQRT")]
- public float BossDistToWarningSqrt { get; set; }
+ public float? BossDistToWarningSqrt { get; set; }
[JsonPropertyName("BOSS_DIST_TO_WARNING_SQRT_ALLY")]
- public float BossDistToWarningSqrtAlly { get; set; }
+ public float? BossDistToWarningSqrtAlly { get; set; }
[JsonPropertyName("BOSS_DIST_TO_WARNING_USEC")]
- public float BossDistToWarningUsec { get; set; }
+ public float? BossDistToWarningUsec { get; set; }
[JsonPropertyName("BOSS_DIST_TO_WARNING_USEC_ALLY")]
- public float BossDistToWarningUsecAlly { get; set; }
+ public float? BossDistToWarningUsecAlly { get; set; }
[JsonPropertyName("BOSS_DIST_TO_WARNING_SQRT_USEC")]
- public float BossDistToWarningSqrtUsec { get; set; }
+ public float? BossDistToWarningSqrtUsec { get; set; }
[JsonPropertyName("BOSS_DIST_TO_WARNING_SQRT_USEC_ALLY")]
- public float BossDistToWarningSqrtUsecAlly { get; set; }
+ public float? BossDistToWarningSqrtUsecAlly { get; set; }
[JsonPropertyName("BOSS_DIST_TO_WARNING_BEAR")]
- public float BossDistToWarningBear { get; set; }
+ public float? BossDistToWarningBear { get; set; }
[JsonPropertyName("BOSS_DIST_TO_WARNING_BEAR_ALLY")]
- public float BossDistToWarningBearAlly { get; set; }
+ public float? BossDistToWarningBearAlly { get; set; }
[JsonPropertyName("BOSS_DIST_TO_WARNING_SQRT_BEAR")]
- public float BossDistToWarningSqrtBear { get; set; }
+ public float? BossDistToWarningSqrtBear { get; set; }
[JsonPropertyName("BOSS_DIST_TO_WARNING_SQRT_BEAR_ALLY")]
- public float BossDistToWarningSqrtBearAlly { get; set; }
+ public float? BossDistToWarningSqrtBearAlly { get; set; }
[JsonPropertyName("BOSS_DIST_TO_WARNING_OUT")]
- public float BossDistToWarningOut { get; set; }
+ public float? BossDistToWarningOut { get; set; }
[JsonPropertyName("BOSS_DIST_TO_WARNING_OUT_ALLY")]
- public float BossDistToWarningOutAlly { get; set; }
+ public float? BossDistToWarningOutAlly { get; set; }
[JsonPropertyName("BOSS_DIST_TO_WARNING_OUT_SQRT")]
- public float BossDistToWarningOutSqrt { get; set; }
+ public float? BossDistToWarningOutSqrt { get; set; }
[JsonPropertyName("BOSS_DIST_TO_WARNING_OUT_SQRT_ALLY")]
- public float BossDistToWarningOutSqrtAlly { get; set; }
+ public float? BossDistToWarningOutSqrtAlly { get; set; }
[JsonPropertyName("BOSS_DIST_TO_SHOOT")]
- public float BossDistToShoot { get; set; }
+ public float? BossDistToShoot { get; set; }
[JsonPropertyName("BOSS_DIST_TO_SHOOT_ALLY")]
- public float BossDistToShootAlly { get; set; }
+ public float? BossDistToShootAlly { get; set; }
[JsonPropertyName("BOSS_DIST_TO_SHOOT_SQRT")]
- public float BossDistToShootSqrt { get; set; }
+ public float? BossDistToShootSqrt { get; set; }
[JsonPropertyName("BOSS_DIST_TO_SHOOT_SQRT_ALLY")]
- public float BossDistToShootSqrtAlly { get; set; }
+ public float? BossDistToShootSqrtAlly { get; set; }
[JsonPropertyName("CHANCE_TO_SEND_GRENADE_100")]
- public float ChanceToSendGrenade100 { get; set; }
+ public float? ChanceToSendGrenade100 { get; set; }
[JsonPropertyName("MAX_DIST_COVER_BOSS")]
- public float MaxDistCoverBoss { get; set; }
+ public float? MaxDistCoverBoss { get; set; }
[JsonPropertyName("MAX_DIST_COVER_BOSS_SQRT")]
- public float MaxDistCoverBossSqrt { get; set; }
+ public float? MaxDistCoverBossSqrt { get; set; }
[JsonPropertyName("MAX_DIST_DECIDER_TO_SEND")]
- public float MaxDistDeciderToSend { get; set; }
+ public float? MaxDistDeciderToSend { get; set; }
[JsonPropertyName("MAX_DIST_DECIDER_TO_SEND_SQRT")]
- public float MaxDistDeciderToSendSqrt { get; set; }
+ public float? MaxDistDeciderToSendSqrt { get; set; }
[JsonPropertyName("TIME_AFTER_LOSE")]
- public float TimeAfterLose { get; set; }
+ public float? TimeAfterLose { get; set; }
[JsonPropertyName("TIME_AFTER_LOSE_DELTA")]
- public float TimeAfterLoseDelta { get; set; }
+ public float? TimeAfterLoseDelta { get; set; }
[JsonPropertyName("PERSONS_SEND")]
- public int PersonsSend { get; set; }
+ public int? PersonsSend { get; set; }
[JsonPropertyName("DELTA_SEARCH_TIME")]
- public float DeltaSearchTime { get; set; }
+ public float? DeltaSearchTime { get; set; }
[JsonPropertyName("COVER_TO_SEND")]
- public bool CoverToSend { get; set; }
+ public bool? CoverToSend { get; set; }
[JsonPropertyName("WAIT_NO_ATTACK_SAVAGE")]
- public float WaitNoAttackSavage { get; set; }
+ public float? WaitNoAttackSavage { get; set; }
[JsonPropertyName("CHANCE_USE_RESERVE_PATROL_100")]
- public float ChanceUseReservePatrol100 { get; set; }
+ public float? ChanceUseReservePatrol100 { get; set; }
[JsonPropertyName("WARN_PLAYER_PERIOD")]
- public float WarnPlayerPeriod { get; set; }
+ public float? WarnPlayerPeriod { get; set; }
[JsonPropertyName("EFFECT_REGENERATION_PER_MIN")]
- public float EffectRegenerationPerMin { get; set; }
+ public float? EffectRegenerationPerMin { get; set; }
[JsonPropertyName("EFFECT_PAINKILLER")]
- public bool EffectPainkiller { get; set; }
+ public bool? EffectPainkiller { get; set; }
[JsonPropertyName("DISABLE_METABOLISM")]
- public bool DisableMetabolism { get; set; }
+ public bool? DisableMetabolism { get; set; }
[JsonPropertyName("KILLA_Y_DELTA_TO_BE_ENEMY_BOSS")]
- public float KillaYDeltaToBeEnemyBoss { get; set; }
+ public float? KillaYDeltaToBeEnemyBoss { get; set; }
[JsonPropertyName("KILLA_DITANCE_TO_BE_ENEMY_BOSS")]
- public float KillaDitanceToBeEnemyBoss { get; set; }
+ public float? KillaDitanceToBeEnemyBoss { get; set; }
[JsonPropertyName("KILLA_START_SEARCH_SEC")]
- public float KillaStartSearchSec { get; set; }
+ public float? KillaStartSearchSec { get; set; }
[JsonPropertyName("KILLA_CONTUTION_TIME")]
- public float KillaContutionTime { get; set; }
+ public float? KillaContutionTime { get; set; }
[JsonPropertyName("KILLA_CLOSE_ATTACK_DIST")]
- public float KillaCloseAttackDist { get; set; }
+ public float? KillaCloseAttackDist { get; set; }
[JsonPropertyName("KILLA_MIDDLE_ATTACK_DIST")]
- public float KillaMiddleAttackDist { get; set; }
+ public float? KillaMiddleAttackDist { get; set; }
[JsonPropertyName("KILLA_LARGE_ATTACK_DIST")]
- public float KillaLargeAttackDist { get; set; }
+ public float? KillaLargeAttackDist { get; set; }
[JsonPropertyName("KILLA_SEARCH_METERS")]
- public float KillaSearchMeters { get; set; }
+ public float? KillaSearchMeters { get; set; }
[JsonPropertyName("KILLA_DEF_DIST_SQRT")]
- public float KillaDefDistSqrt { get; set; }
+ public float? KillaDefDistSqrt { get; set; }
[JsonPropertyName("KILLA_SEARCH_SEC_STOP_AFTER_COMING")]
- public float KillaSearchSecStopAfterComing { get; set; }
+ public float? KillaSearchSecStopAfterComing { get; set; }
[JsonPropertyName("KILLA_DIST_TO_GO_TO_SUPPRESS")]
- public float KillaDistToGoToSuppress { get; set; }
+ public float? KillaDistToGoToSuppress { get; set; }
[JsonPropertyName("KILLA_AFTER_GRENADE_SUPPRESS_DELAY")]
- public float KillaAfterGrenadeSuppressDelay { get; set; }
+ public float? KillaAfterGrenadeSuppressDelay { get; set; }
[JsonPropertyName("KILLA_CLOSEATTACK_TIMES")]
- public int KillaCloseattackTimes { get; set; }
+ public int? KillaCloseattackTimes { get; set; }
[JsonPropertyName("KILLA_CLOSEATTACK_DELAY")]
- public float KillaCloseattackDelay { get; set; }
+ public float? KillaCloseattackDelay { get; set; }
[JsonPropertyName("KILLA_HOLD_DELAY")]
- public float KillaHoldDelay { get; set; }
+ public float? KillaHoldDelay { get; set; }
[JsonPropertyName("KILLA_BULLET_TO_RELOAD")]
- public int KillaBulletToReload { get; set; }
+ public int? KillaBulletToReload { get; set; }
[JsonPropertyName("PERCENT_BULLET_TO_RELOAD")]
- public float PercentBulletToReload { get; set; }
+ public float? PercentBulletToReload { get; set; }
[JsonPropertyName("SHALL_WARN")]
- public bool ShallWarn { get; set; }
+ public bool? ShallWarn { get; set; }
[JsonPropertyName("KILLA_ENEMIES_TO_ATTACK")]
- public int KillaEnemiesToAttack { get; set; }
+ public int? KillaEnemiesToAttack { get; set; }
[JsonPropertyName("KILLA_ONE_IS_CLOSE")]
- public float KillaOneIsClose { get; set; }
+ public float? KillaOneIsClose { get; set; }
[JsonPropertyName("KILLA_TRIGGER_DOWN_DELAY")]
- public float KillaTriggerDownDelay { get; set; }
+ public float? KillaTriggerDownDelay { get; set; }
[JsonPropertyName("KILLA_WAIT_IN_COVER_COEF")]
- public float KillaWaitInCoverCoef { get; set; }
+ public float? KillaWaitInCoverCoef { get; set; }
[JsonPropertyName("TAGILLA_Y_DELTA_TO_BE_ENEMY_BOSS")]
- public float TagillaYDeltaToBeEnemyBoss { get; set; }
+ public float? TagillaYDeltaToBeEnemyBoss { get; set; }
[JsonPropertyName("TAGILLA_SAVAGE_HELP_SQR_DIST")]
- public float TagillaSavageHelpSqrDist { get; set; }
+ public float? TagillaSavageHelpSqrDist { get; set; }
[JsonPropertyName("TAGILLA_FORCED_CLOSE_ATTACK_DIST")]
- public float TagillaForcedCloseAttackDist { get; set; }
+ public float? TagillaForcedCloseAttackDist { get; set; }
[JsonPropertyName("TAGILLA_FIRST_ASSAULT_RADIUS")]
- public float TagillaFirstAssaultRadius { get; set; }
+ public float? TagillaFirstAssaultRadius { get; set; }
[JsonPropertyName("TAGILLA_FIRST_ASSAULT_CHANCE")]
- public float TagillaFirstAssaultChance { get; set; }
+ public float? TagillaFirstAssaultChance { get; set; }
[JsonPropertyName("TAGILLA_SECOND_ASSAULT_RADIUS")]
- public float TagillaSecondAssaultRadius { get; set; }
+ public float? TagillaSecondAssaultRadius { get; set; }
[JsonPropertyName("TAGILLA_SECOND_ASSAULT_CHANCE")]
- public float TagillaSecondAssaultChance { get; set; }
+ public float? TagillaSecondAssaultChance { get; set; }
[JsonPropertyName("TAGILLA_FEEL_ENEMY_DIST_SQR")]
- public float TagillaFeelEnemyDistSqr { get; set; }
+ public float? TagillaFeelEnemyDistSqr { get; set; }
[JsonPropertyName("TAGILLA_TIME_TO_PURSUIT_WITHOUT_HITS")]
- public float TagillaTimeToPursuitWithoutHits { get; set; }
+ public float? TagillaTimeToPursuitWithoutHits { get; set; }
[JsonPropertyName("TAGILLA_MELEE_ATTACK_NEXT_DECISION_PERIOD")]
- public float TagillaMeleeAttackNextDecisionPeriod { get; set; }
+ public float? TagillaMeleeAttackNextDecisionPeriod { get; set; }
[JsonPropertyName("TAGILLA_MELEE_CHANCE_RELOAD")]
- public float TagillaMeleeChanceReload { get; set; }
+ public float? TagillaMeleeChanceReload { get; set; }
[JsonPropertyName("TAGILLA_MELEE_CHANCE_INTERACTION")]
- public float TagillaMeleeChanceInteraction { get; set; }
+ public float? TagillaMeleeChanceInteraction { get; set; }
[JsonPropertyName("TAGILLA_MELEE_CHANCE_INVENTORY")]
- public float TagillaMeleeChanceInventory { get; set; }
+ public float? TagillaMeleeChanceInventory { get; set; }
[JsonPropertyName("TAGILLA_MELEE_CHANCE_MEDS")]
- public float TagillaMeleeChanceMeds { get; set; }
+ public float? TagillaMeleeChanceMeds { get; set; }
[JsonPropertyName("TAGILLA_MELEE_CHANCE_FORCED")]
- public float TagillaMeleeChanceForced { get; set; }
+ public float? TagillaMeleeChanceForced { get; set; }
[JsonPropertyName("TAGILLA_MIN_TIME_TO_REPEAT_MELEE_ASSAULT")]
- public float TagillaMinTimeToRepeatMeleeAssault { get; set; }
+ public float? TagillaMinTimeToRepeatMeleeAssault { get; set; }
[JsonPropertyName("KOJANIY_DIST_WHEN_READY")]
- public float KojaniyDistWhenReady { get; set; }
+ public float? KojaniyDistWhenReady { get; set; }
[JsonPropertyName("KOJANIY_DIST_TO_BE_ENEMY")]
- public float KojaniyDistToBeEnemy { get; set; }
+ public float? KojaniyDistToBeEnemy { get; set; }
[JsonPropertyName("KOJANIY_MIN_DIST_TO_LOOT")]
- public float KojaniyMinDistToLoot { get; set; }
+ public float? KojaniyMinDistToLoot { get; set; }
[JsonPropertyName("KOJANIY_MIN_DIST_TO_LOOT_SQRT")]
- public float KojaniyMinDistToLootSqrt { get; set; }
+ public float? KojaniyMinDistToLootSqrt { get; set; }
[JsonPropertyName("KOJANIY_DIST_ENEMY_TOO_CLOSE")]
- public float KojaniyDistEnemyTooClose { get; set; }
+ public float? KojaniyDistEnemyTooClose { get; set; }
[JsonPropertyName("KOJANIY_MANY_ENEMIES_COEF")]
- public float KojaniyManyEnemiesCoef { get; set; }
+ public float? KojaniyManyEnemiesCoef { get; set; }
[JsonPropertyName("KOJANIY_FIGHT_CENTER_POS_ME")]
- public bool KojaniyFightCenterPosMe { get; set; }
+ public bool? KojaniyFightCenterPosMe { get; set; }
[JsonPropertyName("KOJANIY_DIST_CORE_SPOS_RECALC")]
- public float KojaniyDistCoreSposRecalc { get; set; }
+ public float? KojaniyDistCoreSposRecalc { get; set; }
[JsonPropertyName("KOJANIY_DIST_CORE_SPOS_RECALC_SQRT")]
- public float KojaniyDistCoreSposRecalcSqrt { get; set; }
+ public float? KojaniyDistCoreSposRecalcSqrt { get; set; }
[JsonPropertyName("KOJANIY_START_SUPPERS_SHOOTS_SEC")]
- public float KojaniyStartSuppersShootsSec { get; set; }
+ public float? KojaniyStartSuppersShootsSec { get; set; }
[JsonPropertyName("KOJANIY_START_NEXT_SUPPERS_SHOOTS_SEC")]
- public float KojaniyStartNextSuppersShootsSec { get; set; }
+ public float? KojaniyStartNextSuppersShootsSec { get; set; }
[JsonPropertyName("KOJANIY_SAFE_ENEMIES")]
- public int KojaniySafeEnemies { get; set; }
+ public int? KojaniySafeEnemies { get; set; }
[JsonPropertyName("KOJANIY_TAKE_CARE_ABOULT_ENEMY_DELTA")]
- public float KojaniyTakeCareAboultEnemyDelta { get; set; }
+ public float? KojaniyTakeCareAboultEnemyDelta { get; set; }
[JsonPropertyName("KOJANIY_WANNA_GO_TO_CLOSEST_COVER")]
- public float KojaniyWannaGoToClosestCover { get; set; }
+ public float? KojaniyWannaGoToClosestCover { get; set; }
[JsonPropertyName("GLUHAR_FOLLOWER_PATH_NAME")]
- public string GluharFollowerPathName { get; set; }
+ public string? GluharFollowerPathName { get; set; }
[JsonPropertyName("GLUHAR_FOLLOWER_SCOUT_DIST_START_ATTACK")]
- public float GluharFollowerScoutDistStartAttack { get; set; }
+ public float? GluharFollowerScoutDistStartAttack { get; set; }
[JsonPropertyName("GLUHAR_FOLLOWER_SCOUT_DIST_END_ATTACK")]
- public float GluharFollowerScoutDistEndAttack { get; set; }
+ public float? GluharFollowerScoutDistEndAttack { get; set; }
[JsonPropertyName("GLUHAR_BOSS_WANNA_ATTACK_CHANCE_0_100")]
- public float GluharBossWannaAttackChance0100 { get; set; }
+ public float? GluharBossWannaAttackChance0100 { get; set; }
[JsonPropertyName("GLUHAR_ASSAULT_ATTACK_DIST")]
- public float GluharAssaultAttackDist { get; set; }
+ public float? GluharAssaultAttackDist { get; set; }
[JsonPropertyName("GLUHAR_STOP_ASSAULT_ATTACK_DIST")]
- public float GluharStopAssaultAttackDist { get; set; }
+ public float? GluharStopAssaultAttackDist { get; set; }
[JsonPropertyName("GLUHAR_TIME_TO_ASSAULT")]
- public float GluharTimeToAssault { get; set; }
+ public float? GluharTimeToAssault { get; set; }
[JsonPropertyName("DIST_TO_PROTECT_BOSS")]
- public float DistToProtectBoss { get; set; }
+ public float? DistToProtectBoss { get; set; }
[JsonPropertyName("GLUHAR_SEC_TO_REINFORSMENTS")]
- public float GluharSecToReinforsments { get; set; }
+ public float? GluharSecToReinforsments { get; set; }
[JsonPropertyName("GLUHAR_REINFORSMENTS_BY_EXIT")]
- public bool GluharReinforsmentsByExit { get; set; }
+ public bool? GluharReinforsmentsByExit { get; set; }
[JsonPropertyName("GLUHAR_REINFORSMENTS_BY_EVENT")]
- public bool GluharReinforsmentsByEvent { get; set; }
+ public bool? GluharReinforsmentsByEvent { get; set; }
[JsonPropertyName("GLUHAR_REINFORSMENTS_BY_PLAYER_COME_TO_ZONE")]
- public bool GluharReinforsmentsByPlayerComeToZone { get; set; }
+ public bool? GluharReinforsmentsByPlayerComeToZone { get; set; }
[JsonPropertyName("GLUHAR_FOLLOWERS_TO_REINFORSMENTS")]
- public int GluharFollowersToReinforsments { get; set; }
+ public int? GluharFollowersToReinforsments { get; set; }
[JsonPropertyName("GLUHAR_FOLLOWERS_SECURITY")]
- public int GluharFollowersSecurity { get; set; }
+ public int? GluharFollowersSecurity { get; set; }
[JsonPropertyName("GLUHAR_FOLLOWERS_ASSAULT")]
- public int GluharFollowersAssault { get; set; }
+ public int? GluharFollowersAssault { get; set; }
[JsonPropertyName("GLUHAR_FOLLOWERS_SCOUT")]
- public int GluharFollowersScout { get; set; }
+ public int? GluharFollowersScout { get; set; }
[JsonPropertyName("GLUHAR_FOLLOWERS_SNIPE")]
- public int GluharFollowersSnipe { get; set; }
+ public int? GluharFollowersSnipe { get; set; }
[JsonPropertyName("GLUHAR_BOSS_DIST_TO_ENEMY_WANT_KILL")]
- public float GluharBossDistToEnemyWantKill { get; set; }
+ public float? GluharBossDistToEnemyWantKill { get; set; }
[JsonPropertyName("IF_I_HITTED_GO_AWAY_SEC_HIT")]
- public float IfIHittedGoAwaySecHit { get; set; }
+ public float? IfIHittedGoAwaySecHit { get; set; }
[JsonPropertyName("DIST_TO_START_RUN_FOR_COVER_WITH_STOP")]
- public float DistToStartRunForCoverWithStop { get; set; }
+ public float? DistToStartRunForCoverWithStop { get; set; }
[JsonPropertyName("DELTA_DIST_DEST_BOSS_START_RUN_FOR_COVER_WITH_STOP")]
- public float DeltaDistDestBossStartRunForCoverWithStop { get; set; }
+ public float? DeltaDistDestBossStartRunForCoverWithStop { get; set; }
[JsonPropertyName("SANITAR_ONLY_FIGHT_COVERS")]
- public bool SanitarOnlyFightCovers { get; set; }
+ public bool? SanitarOnlyFightCovers { get; set; }
[JsonPropertyName("SANITAR_TWO_COVER_TACTIC")]
- public bool SanitarTwoCoverTactic { get; set; }
+ public bool? SanitarTwoCoverTactic { get; set; }
[JsonPropertyName("COUNT_FOLLOWERS_TO_WARN")]
- public int CountFollowersToWarn { get; set; }
+ public int? CountFollowersToWarn { get; set; }
[JsonPropertyName("RUN_HIDE_CAN_USE_TREE_COVRES")]
- public bool RunHideCanUseTreeCovres { get; set; }
+ public bool? RunHideCanUseTreeCovres { get; set; }
[JsonPropertyName("SECTANT_INDOOR_DIST_NOT_TO_ATTACK")]
- public float SectantIndoorDistNotToAttack { get; set; }
+ public float? SectantIndoorDistNotToAttack { get; set; }
[JsonPropertyName("SET_CHEAT_VISIBLE_WHEN_ADD_TO_ENEMY")]
- public bool SetCheatVisibleWhenAddToEnemy { get; set; }
+ public bool? SetCheatVisibleWhenAddToEnemy { get; set; }
[JsonPropertyName("TOTAL_TIME_KILL")]
- public float TotalTimeKill { get; set; }
+ public float? TotalTimeKill { get; set; }
[JsonPropertyName("TOTAL_TIME_KILL_AFTER_WARN")]
- public float TotalTimeKillAfterWarn { get; set; }
+ public float? TotalTimeKillAfterWarn { get; set; }
[JsonPropertyName("COME_INSIDE_TIMES")]
- public int ComeInsideTimes { get; set; }
+ public int? ComeInsideTimes { get; set; }
[JsonPropertyName("BOSS_DIST_TO_WARNING_OUT_DELTA")]
- public float BossDistToWarningOutDelta { get; set; }
+ public float? BossDistToWarningOutDelta { get; set; }
[JsonPropertyName("BOSS_DIST_TO_WARNING_OUT_DELTA_ALLY")]
- public float BossDistToWarningOutDeltaAlly { get; set; }
+ public float? BossDistToWarningOutDeltaAlly { get; set; }
[JsonPropertyName("TOTAL_TIME_KILL_AFTER_START_WARN")]
- public float TotalTimeKillAfterStartWarn { get; set; }
+ public float? TotalTimeKillAfterStartWarn { get; set; }
[JsonPropertyName("BIG_PIPE_ARTILLERY_COUNT")]
- public int BigPipeArtilleryCount { get; set; }
+ public int? BigPipeArtilleryCount { get; set; }
[JsonPropertyName("BOSS_ZRYACHIY_TELEPORT_CHANCE")]
- public float BossZryachiyTeleportChance { get; set; }
+ public float? BossZryachiyTeleportChance { get; set; }
[JsonPropertyName("BOSS_ZRYACHIY_MIN_DIST_TO_TELEPORT")]
- public float BossZryachiyMinDistToTeleport { get; set; }
+ public float? BossZryachiyMinDistToTeleport { get; set; }
[JsonPropertyName("BOSS_ZRYACHIY_TELEPORT_CAN_SECONDS_FROM_START")]
- public float BossZryachiyTeleportCanSecondsFromStart { get; set; }
+ public float? BossZryachiyTeleportCanSecondsFromStart { get; set; }
[JsonPropertyName("BOSS_ZRYACHIY_MIN_DIST_TO_NEXT_COVER")]
- public float BossZryachiyMinDistToNextCover { get; set; }
+ public float? BossZryachiyMinDistToNextCover { get; set; }
[JsonPropertyName("BOSS_ZRYACHIY_POSSIBLE_FOG")]
- public float BossZryachiyPossibleFog { get; set; }
+ public float? BossZryachiyPossibleFog { get; set; }
[JsonPropertyName("NOT_ADD_TO_ENEMY_ON_KILLS")]
- public bool NotAddToEnemyOnKills { get; set; }
+ public bool? NotAddToEnemyOnKills { get; set; }
[JsonPropertyName("ALLOW_REQUEST_SELF")]
- public bool AllowRequestSelf { get; set; }
+ public bool? AllowRequestSelf { get; set; }
[JsonPropertyName("TAGILLA_MELEE_ATTACK_IF_NO_SHOOT")]
- public float TagillaMeleeAttackIfNoShoot { get; set; }
+ public float? TagillaMeleeAttackIfNoShoot { get; set; }
}
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsChangeSettings.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsChangeSettings.cs
index 3ed4c854..14df761c 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsChangeSettings.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsChangeSettings.cs
@@ -3,55 +3,61 @@
namespace SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings;
///
+///
/// See BotGlobalsChangeSettings in the client, this record should match that
+///
+///
+///
+/// These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
+///
///
public record BotGlobalsChangeSettings
{
[JsonPropertyName("SMOKE_VISION_DIST")]
- public float SmokeVisionDist { get; set; }
+ public float? SmokeVisionDist { get; set; }
[JsonPropertyName("SMOKE_GAIN_SIGHT")]
- public float SmokeGainSight { get; set; }
+ public float? SmokeGainSight { get; set; }
[JsonPropertyName("SMOKE_SCATTERING")]
- public float SmokeScattering { get; set; }
+ public float? SmokeScattering { get; set; }
[JsonPropertyName("SMOKE_PRECICING")]
- public float SmokePrecicing { get; set; }
+ public float? SmokePrecicing { get; set; }
[JsonPropertyName("SMOKE_HEARING")]
- public float SmokeHearing { get; set; }
+ public float? SmokeHearing { get; set; }
[JsonPropertyName("SMOKE_ACCURATY")]
- public float SmokeAccuraty { get; set; }
+ public float? SmokeAccuraty { get; set; }
[JsonPropertyName("SMOKE_LAY_CHANCE")]
- public float SmokeLayChance { get; set; }
+ public float? SmokeLayChance { get; set; }
[JsonPropertyName("FLASH_VISION_DIST")]
- public float FlashVisionDist { get; set; }
+ public float? FlashVisionDist { get; set; }
[JsonPropertyName("FLASH_GAIN_SIGHT")]
- public float FlashGainSight { get; set; }
+ public float? FlashGainSight { get; set; }
[JsonPropertyName("FLASH_SCATTERING")]
- public float FlashScattering { get; set; }
+ public float? FlashScattering { get; set; }
[JsonPropertyName("FLASH_PRECICING")]
- public float FlashPrecicing { get; set; }
+ public float? FlashPrecicing { get; set; }
[JsonPropertyName("FLASH_HEARING")]
- public float FlashHearing { get; set; }
+ public float? FlashHearing { get; set; }
[JsonPropertyName("FLASH_ACCURATY")]
- public float FlashAccuraty { get; set; }
+ public float? FlashAccuraty { get; set; }
[JsonPropertyName("FLASH_LAY_CHANCE")]
- public float FlashLayChance { get; set; }
+ public float? FlashLayChance { get; set; }
[JsonPropertyName("STUN_HEARING")]
- public float StunHearing { get; set; }
+ public float? StunHearing { get; set; }
[JsonPropertyName("INVISIBLE_ON_CLIENT")]
- public bool InvisibleOnClient { get; set; }
+ public bool? InvisibleOnClient { get; set; }
}
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsCoverSettings.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsCoverSettings.cs
index 57df54d6..d0f8f28b 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsCoverSettings.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsCoverSettings.cs
@@ -3,208 +3,214 @@
namespace SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings;
///
+///
/// See BotGlobalsCoverSettings in the client, this record should match that
+///
+///
+///
+/// These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
+///
///
public record BotGlobalsCoverSettings
{
[JsonPropertyName("RETURN_TO_ATTACK_AFTER_AMBUSH_MIN")]
- public float ReturnToAttackAfterAmbushMin { get; set; }
+ public float? ReturnToAttackAfterAmbushMin { get; set; }
[JsonPropertyName("RETURN_TO_ATTACK_AFTER_AMBUSH_MAX")]
- public float ReturnToAttackAfterAmbushMax { get; set; }
+ public float? ReturnToAttackAfterAmbushMax { get; set; }
[JsonPropertyName("SOUND_TO_GET_SPOTTED")]
- public float SoundToGetSpotted { get; set; }
+ public float? SoundToGetSpotted { get; set; }
[JsonPropertyName("TIME_TO_MOVE_TO_COVER")]
- public float TimeToMoveToCover { get; set; }
+ public float? TimeToMoveToCover { get; set; }
[JsonPropertyName("MAX_DIST_OF_COVER")]
- public float MaxDistOfCover { get; set; }
+ public float? MaxDistOfCover { get; set; }
[JsonPropertyName("CHANGE_RUN_TO_COVER_SEC")]
- public float ChangeRunToCoverSec { get; set; }
+ public float? ChangeRunToCoverSec { get; set; }
[JsonPropertyName("CHANGE_RUN_TO_COVER_SEC_GREANDE")]
- public float ChangeRunToCoverSecGreande { get; set; }
+ public float? ChangeRunToCoverSecGreande { get; set; }
[JsonPropertyName("MIN_DIST_TO_ENEMY")]
- public float MinDistToEnemy { get; set; }
+ public float? MinDistToEnemy { get; set; }
[JsonPropertyName("DIST_CANT_CHANGE_WAY")]
- public float DistCantChangeWay { get; set; }
+ public float? DistCantChangeWay { get; set; }
[JsonPropertyName("DIST_CHECK_SFETY")]
- public float DistCheckSfety { get; set; }
+ public float? DistCheckSfety { get; set; }
[JsonPropertyName("TIME_CHECK_SAFE")]
- public float TimeCheckSafe { get; set; }
+ public float? TimeCheckSafe { get; set; }
[JsonPropertyName("HIDE_TO_COVER_TIME")]
- public float HideToCoverTime { get; set; }
+ public float? HideToCoverTime { get; set; }
[JsonPropertyName("MAX_DIST_OF_COVER_SQR")]
- public float MaxDistOfCoverSqr { get; set; }
+ public float? MaxDistOfCoverSqr { get; set; }
[JsonPropertyName("DIST_CANT_CHANGE_WAY_SQR")]
- public float DistCantChangeWaySqr { get; set; }
+ public float? DistCantChangeWaySqr { get; set; }
[JsonPropertyName("SPOTTED_COVERS_RADIUS")]
- public float SpottedCoversRadius { get; set; }
+ public float? SpottedCoversRadius { get; set; }
[JsonPropertyName("LOOK_LAST_ENEMY_POS_MOVING")]
- public float LookLastEnemyPosMoving { get; set; }
+ public float? LookLastEnemyPosMoving { get; set; }
[JsonPropertyName("LOOK_LAST_ENEMY_POS_LONG")]
- public float LookLastEnemyPosLong { get; set; }
+ public float? LookLastEnemyPosLong { get; set; }
[JsonPropertyName("LOOK_LAST_ENEMY_POS_DIST")]
- public float LookLastEnemyPosDist { get; set; }
+ public float? LookLastEnemyPosDist { get; set; }
[JsonPropertyName("LOOK_TO_HIT_POINT_IF_LAST_ENEMY")]
- public float LookToHitPointIfLastEnemy { get; set; }
+ public float? LookToHitPointIfLastEnemy { get; set; }
[JsonPropertyName("LOOK_LAST_ENEMY_POS_LOOKAROUND")]
- public float LookLastEnemyPosLookaround { get; set; }
+ public float? LookLastEnemyPosLookaround { get; set; }
[JsonPropertyName("OFFSET_LOOK_ALONG_WALL_ANG")]
- public int OffsetLookAlongWallAng { get; set; }
+ public int? OffsetLookAlongWallAng { get; set; }
[JsonPropertyName("SPOTTED_GRENADE_RADIUS")]
- public float SpottedGrenadeRadius { get; set; }
+ public float? SpottedGrenadeRadius { get; set; }
[JsonPropertyName("MAX_SPOTTED_TIME_SEC")]
- public float MaxSpottedTimeSec { get; set; }
+ public float? MaxSpottedTimeSec { get; set; }
[JsonPropertyName("WAIT_INT_COVER_FINDING_ENEMY")]
- public float WaitIntCoverFindingEnemy { get; set; }
+ public float? WaitIntCoverFindingEnemy { get; set; }
[JsonPropertyName("CLOSE_DIST_POINT_SQRT")]
- public float CloseDistPointSqrt { get; set; }
+ public float? CloseDistPointSqrt { get; set; }
[JsonPropertyName("DELTA_SEEN_FROM_COVE_LAST_POS")]
- public float DeltaSeenFromCoveLastPos { get; set; }
+ public float? DeltaSeenFromCoveLastPos { get; set; }
[JsonPropertyName("MOVE_TO_COVER_WHEN_TARGET")]
- public bool MoveToCoverWhenTarget { get; set; }
+ public bool? MoveToCoverWhenTarget { get; set; }
[JsonPropertyName("RUN_COVER_IF_CAN_AND_NO_ENEMIES")]
- public bool RunCoverIfCanAndNoEnemies { get; set; }
+ public bool? RunCoverIfCanAndNoEnemies { get; set; }
[JsonPropertyName("SPOTTED_GRENADE_TIME")]
- public float SpottedGrenadeTime { get; set; }
+ public float? SpottedGrenadeTime { get; set; }
[JsonPropertyName("DEPENDS_Y_DIST_TO_BOT")]
- public bool DependsYDistToBot { get; set; }
+ public bool? DependsYDistToBot { get; set; }
[JsonPropertyName("RUN_IF_FAR")]
- public float RunIfFar { get; set; }
+ public float? RunIfFar { get; set; }
[JsonPropertyName("RUN_IF_FAR_SQRT")]
- public float RunIfFarSqrt { get; set; }
+ public float? RunIfFarSqrt { get; set; }
[JsonPropertyName("STAY_IF_FAR")]
- public float StayIfFar { get; set; }
+ public float? StayIfFar { get; set; }
[JsonPropertyName("STAY_IF_FAR_SQRT")]
- public float StayIfFarSqrt { get; set; }
+ public float? StayIfFarSqrt { get; set; }
[JsonPropertyName("CHECK_COVER_ENEMY_LOOK")]
- public bool CheckCoverEnemyLook { get; set; }
+ public bool? CheckCoverEnemyLook { get; set; }
[JsonPropertyName("SHOOT_NEAR_TO_LEAVE")]
- public int ShootNearToLeave { get; set; }
+ public int? ShootNearToLeave { get; set; }
[JsonPropertyName("SHOOT_NEAR_SEC_PERIOD")]
- public float ShootNearSecPeriod { get; set; }
+ public float? ShootNearSecPeriod { get; set; }
[JsonPropertyName("HITS_TO_LEAVE_COVER")]
- public int HitsToLeaveCover { get; set; }
+ public int? HitsToLeaveCover { get; set; }
[JsonPropertyName("HITS_TO_LEAVE_COVER_UNKNOWN")]
- public int HitsToLeaveCoverUnknown { get; set; }
+ public int? HitsToLeaveCoverUnknown { get; set; }
[JsonPropertyName("DOG_FIGHT_AFTER_LEAVE")]
- public float DogFightAfterLeave { get; set; }
+ public float? DogFightAfterLeave { get; set; }
[JsonPropertyName("NOT_LOOK_AT_WALL_IS_DANGER")]
- public bool NotLookAtWallIsDanger { get; set; }
+ public bool? NotLookAtWallIsDanger { get; set; }
[JsonPropertyName("MIN_DEFENCE_LEVEL")]
- public float MinDefenceLevel { get; set; }
+ public float? MinDefenceLevel { get; set; }
[JsonPropertyName("REWORK_NOT_TO_SHOOT")]
- public bool ReworkNotToShoot { get; set; }
+ public bool? ReworkNotToShoot { get; set; }
[JsonPropertyName("DELETE_POINTS_BEHIND_ENEMIES")]
- public bool DeletePointsBehindEnemies { get; set; }
+ public bool? DeletePointsBehindEnemies { get; set; }
[JsonPropertyName("GOOD_DIST_TO_POINT_COEF")]
- public float GoodDistToPointCoef { get; set; }
+ public float? GoodDistToPointCoef { get; set; }
[JsonPropertyName("ENEMY_DIST_TO_GO_OUT")]
- public float EnemyDistToGoOut { get; set; }
+ public float? EnemyDistToGoOut { get; set; }
[JsonPropertyName("CHECK_CLOSEST_FRIEND")]
- public bool CheckClosestFriend { get; set; }
+ public bool? CheckClosestFriend { get; set; }
[JsonPropertyName("MIN_TO_ENEMY_TO_BE_NOT_SAFE_SQRT")]
- public float MinToEnemyToBeNotSafeSqrt { get; set; }
+ public float? MinToEnemyToBeNotSafeSqrt { get; set; }
[JsonPropertyName("MIN_TO_ENEMY_TO_BE_NOT_SAFE")]
- public float MinToEnemyToBeNotSafe { get; set; }
+ public float? MinToEnemyToBeNotSafe { get; set; }
[JsonPropertyName("SIT_DOWN_WHEN_HOLDING")]
- public bool SitDownWhenHolding { get; set; }
+ public bool? SitDownWhenHolding { get; set; }
[JsonPropertyName("STATIONARY_WEAPON_NO_ENEMY_GETUP")]
- public float StationaryWeaponNoEnemyGetup { get; set; }
+ public float? StationaryWeaponNoEnemyGetup { get; set; }
[JsonPropertyName("STATIONARY_WEAPON_MAX_DIST_TO_USE")]
- public float StationaryWeaponMaxDistToUse { get; set; }
+ public float? StationaryWeaponMaxDistToUse { get; set; }
[JsonPropertyName("STATIONARY_SPOTTED_TIMES_TO_LEAVE")]
- public int StationarySpottedTimesToLeave { get; set; }
+ public int? StationarySpottedTimesToLeave { get; set; }
[JsonPropertyName("STATIONARY_CAN_USE")]
- public bool StationaryCanUse { get; set; }
+ public bool? StationaryCanUse { get; set; }
[JsonPropertyName("CAN_END_SHOOT_FROM_COVER_CAUSE_STATIONARY")]
- public bool CanEndShootFromCoverCauseStationary { get; set; }
+ public bool? CanEndShootFromCoverCauseStationary { get; set; }
[JsonPropertyName("CAN_END_SHOOT_FROM_COVER_CAUSE_STATIONARY_DELTA")]
- public float CanEndShootFromCoverCauseStationaryDelta { get; set; }
+ public float? CanEndShootFromCoverCauseStationaryDelta { get; set; }
[JsonPropertyName("CAN_END_SHOOT_FROM_COVER_CAUSE_STATIONARY_RADIUS")]
- public float CanEndShootFromCoverCauseStationaryRadius { get; set; }
+ public float? CanEndShootFromCoverCauseStationaryRadius { get; set; }
[JsonPropertyName("END_HOLD_IF_ENEMY_CLOSE_AND_VISIBLE")]
- public float EndHoldIfEnemyCloseAndVisible { get; set; }
+ public float? EndHoldIfEnemyCloseAndVisible { get; set; }
[JsonPropertyName("DIST_MAX_REWORK_NOT_TO_SHOOT")]
- public float DistMaxReworkNotToShoot { get; set; }
+ public float? DistMaxReworkNotToShoot { get; set; }
[JsonPropertyName("SDIST_MAX_REWORK_NOT_TO_SHOOT")]
- public float SdistMaxReworkNotToShoot { get; set; }
+ public float? SdistMaxReworkNotToShoot { get; set; }
[JsonPropertyName("USE_DANGER_AREAS")]
- public bool UseDangerAreas { get; set; }
+ public bool? UseDangerAreas { get; set; }
[JsonPropertyName("MAX_ITERATIONS")]
- public int MaxIterations { get; set; }
+ public int? MaxIterations { get; set; }
[JsonPropertyName("CHANGE_COVER_IF_CANT_SHOOT_SEC")]
- public float ChangeCoverIfCantShootSec { get; set; }
+ public float? ChangeCoverIfCantShootSec { get; set; }
[JsonPropertyName("SHALL_CHANGE_COVER_IF_CAN_SHOOT")]
- public bool ShallChangeCoverIfCanShoot { get; set; }
+ public bool? ShallChangeCoverIfCanShoot { get; set; }
[JsonPropertyName("CHECK_CLOSEST_FRIEND_DIST")]
- public float CheckClosestFriendDist { get; set; }
+ public float? CheckClosestFriendDist { get; set; }
[JsonPropertyName("CAN_LAY_TO_COVER_DIST_LOOK_TO_ENEMY")]
- public float CanLayToCoverDistLookToEnemy { get; set; }
+ public float? CanLayToCoverDistLookToEnemy { get; set; }
[JsonPropertyName("CAN_LAY_TO_COVER")]
- public bool CanLayToCover { get; set; }
+ public bool? CanLayToCover { get; set; }
}
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsGrenadeSettings.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsGrenadeSettings.cs
index 321fced1..68b8a200 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsGrenadeSettings.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsGrenadeSettings.cs
@@ -3,160 +3,166 @@
namespace SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings;
///
+///
/// See BotGlobalsGrenadeSettings in the client, this record should match that
+///
+///
+///
+/// These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
+///
///
public record BotGlobalsGrenadeSettings
{
[JsonPropertyName("DELTA_NEXT_ATTEMPT_FROM_COVER")]
- public float DeltaNextAttemptFromCover { get; set; }
+ public float? DeltaNextAttemptFromCover { get; set; }
[JsonPropertyName("DELTA_NEXT_ATTEMPT")]
- public float DeltaNextAttempt { get; set; }
+ public float? DeltaNextAttempt { get; set; }
[JsonPropertyName("MIN_DIST_NOT_TO_THROW")]
- public float MinDistNotToThrow { get; set; }
+ public float? MinDistNotToThrow { get; set; }
[JsonPropertyName("NEAR_DELTA_THROW_TIME_SEC")]
- public float NearDeltaThrowTimeSec { get; set; }
+ public float? NearDeltaThrowTimeSec { get; set; }
[JsonPropertyName("MIN_THROW_GRENADE_DIST")]
- public float MinThrowGrenadeDist { get; set; }
+ public float? MinThrowGrenadeDist { get; set; }
[JsonPropertyName("MIN_THROW_GRENADE_DIST_SQRT")]
- public float MinThrowGrenadeDistSqrt { get; set; }
+ public float? MinThrowGrenadeDistSqrt { get; set; }
[JsonPropertyName("MIN_DIST_NOT_TO_THROW_SQR")]
- public float MinDistNotToThrowSqr { get; set; }
+ public float? MinDistNotToThrowSqr { get; set; }
[JsonPropertyName("RUN_AWAY")]
- public float RunAway { get; set; }
+ public float? RunAway { get; set; }
[JsonPropertyName("RUN_AWAY_SQR")]
- public float RunAwaySqr { get; set; }
+ public float? RunAwaySqr { get; set; }
[JsonPropertyName("ADD_GRENADE_AS_DANGER")]
- public float AddGrenadeAsDanger { get; set; }
+ public float? AddGrenadeAsDanger { get; set; }
[JsonPropertyName("ADD_GRENADE_AS_DANGER_SQR")]
- public float AddGrenadeAsDangerSqr { get; set; }
+ public float? AddGrenadeAsDangerSqr { get; set; }
[JsonPropertyName("CHANCE_TO_NOTIFY_ENEMY_GR_100")]
- public float ChanceToNotifyEnemyGr100 { get; set; }
+ public float? ChanceToNotifyEnemyGr100 { get; set; }
[JsonPropertyName("GrenadePerMeter")]
- public float GrenadePerMeter { get; set; }
+ public float? GrenadePerMeter { get; set; }
[JsonPropertyName("REQUEST_DIST_MUST_THROW_SQRT")]
- public float RequestDistMustThrowSqrt { get; set; }
+ public float? RequestDistMustThrowSqrt { get; set; }
[JsonPropertyName("REQUEST_DIST_MUST_THROW")]
- public float RequestDistMustThrow { get; set; }
+ public float? RequestDistMustThrow { get; set; }
[JsonPropertyName("BEWARE_TYPE")]
- public int BewareType { get; set; }
+ public int? BewareType { get; set; }
[JsonPropertyName("SHOOT_TO_SMOKE_CHANCE_100")]
- public float ShootToSmokeChance100 { get; set; }
+ public float? ShootToSmokeChance100 { get; set; }
[JsonPropertyName("CHANCE_RUN_FLASHED_100")]
- public float ChanceRunFlashed100 { get; set; }
+ public float? ChanceRunFlashed100 { get; set; }
[JsonPropertyName("MAX_FLASHED_DIST_TO_SHOOT")]
- public float MaxFlashedDistToShoot { get; set; }
+ public float? MaxFlashedDistToShoot { get; set; }
[JsonPropertyName("MAX_FLASHED_DIST_TO_SHOOT_SQRT")]
- public float MaxFlashedDistToShootSqrt { get; set; }
+ public float? MaxFlashedDistToShootSqrt { get; set; }
[JsonPropertyName("FLASH_GRENADE_TIME_COEF")]
- public float FlashGrenadeTimeCoef { get; set; }
+ public float? FlashGrenadeTimeCoef { get; set; }
[JsonPropertyName("SIZE_SPOTTED_COEF")]
- public float SizeSpottedCoef { get; set; }
+ public float? SizeSpottedCoef { get; set; }
[JsonPropertyName("BE_ATTENTION_COEF")]
- public float BeAttentionCoef { get; set; }
+ public float? BeAttentionCoef { get; set; }
[JsonPropertyName("TIME_SHOOT_TO_FLASH")]
- public float TimeShootToFlash { get; set; }
+ public float? TimeShootToFlash { get; set; }
[JsonPropertyName("CLOSE_TO_SMOKE_TO_SHOOT")]
- public float CloseToSmokeToShoot { get; set; }
+ public float? CloseToSmokeToShoot { get; set; }
[JsonPropertyName("CLOSE_TO_SMOKE_TO_SHOOT_SQRT")]
- public float CloseToSmokeToShootSqrt { get; set; }
+ public float? CloseToSmokeToShootSqrt { get; set; }
[JsonPropertyName("CLOSE_TO_SMOKE_TIME_DELTA")]
- public float CloseToSmokeTimeDelta { get; set; }
+ public float? CloseToSmokeTimeDelta { get; set; }
[JsonPropertyName("SMOKE_CHECK_DELTA")]
- public float SmokeCheckDelta { get; set; }
+ public float? SmokeCheckDelta { get; set; }
[JsonPropertyName("DELTA_GRENADE_START_TIME")]
- public float DeltaGrenadeStartTime { get; set; }
+ public float? DeltaGrenadeStartTime { get; set; }
[JsonPropertyName("AMBUSH_IF_SMOKE_IN_ZONE_100")]
- public float AmbushIfSmokeInZone100 { get; set; }
+ public float? AmbushIfSmokeInZone100 { get; set; }
[JsonPropertyName("AMBUSH_IF_SMOKE_RETURN_TO_ATTACK_SEC")]
- public float AmbushIfSmokeReturnToAttackSec { get; set; }
+ public float? AmbushIfSmokeReturnToAttackSec { get; set; }
[JsonPropertyName("NO_RUN_FROM_AI_GRENADES")]
- public bool NoRunFromAiGrenades { get; set; }
+ public bool? NoRunFromAiGrenades { get; set; }
[JsonPropertyName("MAX_THROW_POWER")]
- public float MaxThrowPower { get; set; }
+ public float? MaxThrowPower { get; set; }
[JsonPropertyName("GrenadePrecision")]
- public float GrenadePrecision { get; set; }
+ public float? GrenadePrecision { get; set; }
[JsonPropertyName("GRENADE_PRECISION_PORTALS")]
- public float GrenadePrecisionPortals { get; set; }
+ public float? GrenadePrecisionPortals { get; set; }
[JsonPropertyName("STOP_WHEN_THROW_GRENADE")]
- public bool StopWhenThrowGrenade { get; set; }
+ public bool? StopWhenThrowGrenade { get; set; }
[JsonPropertyName("WAIT_TIME_TURN_AWAY")]
- public float WaitTimeTurnAway { get; set; }
+ public float? WaitTimeTurnAway { get; set; }
[JsonPropertyName("SMOKE_SUPPRESS_DELTA")]
- public float SmokeSuppressDelta { get; set; }
+ public float? SmokeSuppressDelta { get; set; }
[JsonPropertyName("DAMAGE_GRENADE_SUPPRESS_DELTA")]
- public float DamageGrenadeSuppressDelta { get; set; }
+ public float? DamageGrenadeSuppressDelta { get; set; }
[JsonPropertyName("STUN_SUPPRESS_DELTA")]
- public float StunSuppressDelta { get; set; }
+ public float? StunSuppressDelta { get; set; }
[JsonPropertyName("CHEAT_START_GRENADE_PLACE")]
- public bool CheatStartGrenadePlace { get; set; }
+ public bool? CheatStartGrenadePlace { get; set; }
[JsonPropertyName("CAN_THROW_STRAIGHT_CONTACT")]
- public bool CanThrowStraightContact { get; set; }
+ public bool? CanThrowStraightContact { get; set; }
[JsonPropertyName("STRAIGHT_CONTACT_DELTA_SEC")]
- public float StraightContactDeltaSec { get; set; }
+ public float? StraightContactDeltaSec { get; set; }
[JsonPropertyName("ANG_TYPE")]
- public int AngType { get; set; }
+ public int? AngType { get; set; }
[JsonPropertyName("MIN_THROW_DIST_PERCENT_0_1")]
- public float MinThrowDistPercent01 { get; set; }
+ public float? MinThrowDistPercent01 { get; set; }
[JsonPropertyName("FLASH_MODIF_IS_NIGHTVISION")]
- public float FlashModifIsNightvision { get; set; }
+ public float? FlashModifIsNightvision { get; set; }
[JsonPropertyName("FIRST_TIME_SEEN_DELTA_CAN_THROW")]
- public float FirstTimeSeenDeltaCanThrow { get; set; }
+ public float? FirstTimeSeenDeltaCanThrow { get; set; }
[JsonPropertyName("SHALL_GETUP")]
- public bool ShallGetup { get; set; }
+ public bool? ShallGetup { get; set; }
[JsonPropertyName("CAN_LAY")]
- public bool CanLay { get; set; }
+ public bool? CanLay { get; set; }
[JsonPropertyName("IGNORE_SMOKE_GRENADE")]
- public bool IgnoreSmokeGrenade { get; set; }
+ public bool? IgnoreSmokeGrenade { get; set; }
[JsonPropertyName("CAN_THROW_FROM_ANY_PLACE")]
- public bool CanThrowFromAnyPlace { get; set; }
+ public bool? CanThrowFromAnyPlace { get; set; }
}
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsHearingSettings.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsHearingSettings.cs
index c511a8a4..d06b6491 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsHearingSettings.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsHearingSettings.cs
@@ -3,52 +3,58 @@
namespace SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings;
///
+///
/// See BotGlobasHearingSettings in the client (Yes, with the typo), this record should match that
+///
+///
+///
+/// These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
+///
///
public record BotGlobalsHearingSettings
{
[JsonPropertyName("BOT_CLOSE_PANIC_DIST")]
- public float BotClosePanicDist { get; set; }
+ public float? BotClosePanicDist { get; set; }
[JsonPropertyName("CHANCE_TO_HEAR_SIMPLE_SOUND_0_1")]
- public float ChanceToHearSimpleSound01 { get; set; }
+ public float? ChanceToHearSimpleSound01 { get; set; }
[JsonPropertyName("DISPERSION_COEF")]
- public float DispersionCoef { get; set; }
+ public float? DispersionCoef { get; set; }
[JsonPropertyName("DISPERSION_COEF_GUN")]
- public float DispersionCoefGun { get; set; }
+ public float? DispersionCoefGun { get; set; }
[JsonPropertyName("CLOSE_DIST")]
- public float CloseDist { get; set; }
+ public float? CloseDist { get; set; }
[JsonPropertyName("FAR_DIST")]
- public float FarDist { get; set; }
+ public float? FarDist { get; set; }
[JsonPropertyName("SOUND_DIR_DEEFREE")]
- public float SoundDirDeefree { get; set; }
+ public float? SoundDirDeefree { get; set; }
[JsonPropertyName("DIST_PLACE_TO_FIND_POINT")]
- public float DistPlaceToFindPoint { get; set; }
+ public float? DistPlaceToFindPoint { get; set; }
[JsonPropertyName("DEAD_BODY_SOUND_RAD")]
- public float DeadBodySoundRad { get; set; }
+ public float? DeadBodySoundRad { get; set; }
[JsonPropertyName("LOOK_ONLY_DANGER")]
- public bool LookOnlyDanger { get; set; }
+ public bool? LookOnlyDanger { get; set; }
[JsonPropertyName("RESET_TIMER_DIST")]
- public float ResetTimerDist { get; set; }
+ public float? ResetTimerDist { get; set; }
[JsonPropertyName("HEAR_DELAY_WHEN_PEACE")]
- public float HearDelayWhenPeace { get; set; }
+ public float? HearDelayWhenPeace { get; set; }
[JsonPropertyName("HEAR_DELAY_WHEN_HAVE_SMT")]
- public float HearDelayWhenHaveSmt { get; set; }
+ public float? HearDelayWhenHaveSmt { get; set; }
[JsonPropertyName("LOOK_ONLY_DANGER_DELTA")]
- public float LookOnlyDangerDelta { get; set; }
+ public float? LookOnlyDangerDelta { get; set; }
[JsonPropertyName("ENEMY_SNIPER_SHOOT_DIST")]
- public float EnemySniperShootDist { get; set; }
+ public float? EnemySniperShootDist { get; set; }
}
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsMindSettings.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsMindSettings.cs
index 1909b325..4bc1c39e 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsMindSettings.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsMindSettings.cs
@@ -1,81 +1,87 @@
using System.Text.Json.Serialization;
using SPTarkov.Server.Core.Models.Eft.Common;
-///
-/// See BotGlobalsMindSettings in the client, this record should match that
-///
namespace SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings;
+///
+///
+/// See BotGlobalsMindSettings in the client, this record should match that
+///
+///
+///
+/// These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
+///
+///
public record BotGlobalsMindSettings
{
[JsonPropertyName("GRENADE_DAMAGE_IGNORE")]
- public bool GrenadeDamageIgnore { get; set; }
+ public bool? GrenadeDamageIgnore { get; set; }
[JsonPropertyName("MIN_SHOOTS_TIME")]
- public int MinShootsTime { get; set; }
+ public int? MinShootsTime { get; set; }
[JsonPropertyName("MAX_SHOOTS_TIME")]
- public int MaxShootsTime { get; set; }
+ public int? MaxShootsTime { get; set; }
[JsonPropertyName("TIME_TO_RUN_TO_COVER_CAUSE_SHOOT_SEC")]
- public float TimeToRunToCoverCauseShootSec { get; set; }
+ public float? TimeToRunToCoverCauseShootSec { get; set; }
[JsonPropertyName("DAMAGE_REDUCTION_TIME_SEC")]
- public float DamageReductionTimeSec { get; set; }
+ public float? DamageReductionTimeSec { get; set; }
[JsonPropertyName("MIN_DAMAGE_SCARE")]
- public float MinDamageScare { get; set; }
+ public float? MinDamageScare { get; set; }
[JsonPropertyName("CHANCE_TO_RUN_CAUSE_DAMAGE_0_100")]
- public float ChanceToRunCauseDamage0100 { get; set; }
+ public float? ChanceToRunCauseDamage0100 { get; set; }
[JsonPropertyName("TIME_TO_FORGOR_ABOUT_ENEMY_SEC")]
- public float TimeToForgorAboutEnemySec { get; set; }
+ public float? TimeToForgorAboutEnemySec { get; set; }
[JsonPropertyName("TIME_TO_FIND_ENEMY")]
- public float TimeToFindEnemy { get; set; }
+ public float? TimeToFindEnemy { get; set; }
[JsonPropertyName("MAX_AGGRO_BOT_DIST")]
- public float MaxAggroBotDist { get; set; }
+ public float? MaxAggroBotDist { get; set; }
[JsonPropertyName("HIT_POINT_DETECTION")]
- public float HitPointDetection { get; set; }
+ public float? HitPointDetection { get; set; }
[JsonPropertyName("DANGER_POINT_CHOOSE_COEF")]
- public float DangerPointChooseCoef { get; set; }
+ public float? DangerPointChooseCoef { get; set; }
[JsonPropertyName("SIMPLE_POINT_CHOOSE_COEF")]
- public float SimplePointChooseCoef { get; set; }
+ public float? SimplePointChooseCoef { get; set; }
[JsonPropertyName("LASTSEEN_POINT_CHOOSE_COEF")]
- public float LastseenPointChooseCoef { get; set; }
+ public float? LastseenPointChooseCoef { get; set; }
[JsonPropertyName("COVER_DIST_COEF")]
- public float CoverDistCoef { get; set; }
+ public float? CoverDistCoef { get; set; }
[JsonPropertyName("DIST_TO_FOUND_SQRT")]
- public float DistToFoundSqrt { get; set; }
+ public float? DistToFoundSqrt { get; set; }
[JsonPropertyName("SEARCH_TARGET")]
- public bool SearchTarget { get; set; }
+ public bool? SearchTarget { get; set; }
[JsonPropertyName("ENEMY_BY_GROUPS_PMC_PLAYERS")]
- public bool EnemyByGroupsPmcPlayers { get; set; }
+ public bool? EnemyByGroupsPmcPlayers { get; set; }
[JsonPropertyName("ENEMY_BY_GROUPS_SAVAGE_PLAYERS")]
- public bool EnemyByGroupsSavagePlayers { get; set; }
+ public bool? EnemyByGroupsSavagePlayers { get; set; }
[JsonPropertyName("BOSS_IGNORE_LOYALTY")]
- public bool BossIgnoreLoyalty { get; set; }
+ public bool? BossIgnoreLoyalty { get; set; }
[JsonPropertyName("DEFAULT_BEAR_BEHAVIOUR")]
- public EWarnBehaviour DefaultBearBehaviour { get; set; }
+ public EWarnBehaviour? DefaultBearBehaviour { get; set; }
[JsonPropertyName("DEFAULT_USEC_BEHAVIOUR")]
- public EWarnBehaviour DefaultUsecBehaviour { get; set; }
+ public EWarnBehaviour? DefaultUsecBehaviour { get; set; }
[JsonPropertyName("DEFAULT_SAVAGE_BEHAVIOUR")]
- public EWarnBehaviour DefaultSavageBehaviour { get; set; }
+ public EWarnBehaviour? DefaultSavageBehaviour { get; set; }
[JsonPropertyName("FRIENDLY_BOT_TYPES")]
public WildSpawnType[]? FriendlyBotTypes { get; set; }
@@ -90,328 +96,328 @@ public record BotGlobalsMindSettings
public WildSpawnType[]? RevengeBotTypes { get; set; }
[JsonPropertyName("FOLLOWER_AND_BOSS_WARN_EQUAL_PRIORITY")]
- public bool FollowerAndBossWarnEqualPriority { get; set; }
+ public bool? FollowerAndBossWarnEqualPriority { get; set; }
[JsonPropertyName("MUTUAL_IGNORE_FRIENDLY_FIRE")]
- public bool MutualIgnoreFriendlyFire { get; set; }
+ public bool? MutualIgnoreFriendlyFire { get; set; }
[JsonPropertyName("MAX_AGGRO_BOT_DIST_UPPER_LIMIT")]
- public float MaxAggroBotDistUpperLimit { get; set; }
+ public float? MaxAggroBotDistUpperLimit { get; set; }
[JsonPropertyName("MAX_AGGRO_BOT_DIST_SQR_UPPER_LIMIT")]
- public float MaxAggroBotDistSqrUpperLimit { get; set; }
+ public float? MaxAggroBotDistSqrUpperLimit { get; set; }
[JsonPropertyName("MAX_AGGRO_BOT_DIST_SQR")]
- public float MaxAggroBotDistSqr { get; set; }
+ public float? MaxAggroBotDistSqr { get; set; }
[JsonPropertyName("DIST_TO_STOP_RUN_ENEMY")]
- public float DistToStopRunEnemy { get; set; }
+ public float? DistToStopRunEnemy { get; set; }
[JsonPropertyName("ENEMY_LOOK_AT_ME_ANG")]
- public float EnemyLookAtMeAng { get; set; }
+ public float? EnemyLookAtMeAng { get; set; }
[JsonPropertyName("MIN_START_AGGRESION_COEF")]
- public float MinStartAggresionCoef { get; set; }
+ public float? MinStartAggresionCoef { get; set; }
[JsonPropertyName("MAX_START_AGGRESION_COEF")]
- public float MaxStartAggresionCoef { get; set; }
+ public float? MaxStartAggresionCoef { get; set; }
[JsonPropertyName("BULLET_FEEL_DIST")]
- public float BulletFeelDist { get; set; }
+ public float? BulletFeelDist { get; set; }
[JsonPropertyName("BULLET_FEEL_CLOSE_SDIST")]
- public float BulletFeelCloseSdist { get; set; }
+ public float? BulletFeelCloseSdist { get; set; }
[JsonPropertyName("ATTACK_IMMEDIATLY_CHANCE_0_100")]
- public float AttackImmediatlyChance0100 { get; set; }
+ public float? AttackImmediatlyChance0100 { get; set; }
[JsonPropertyName("CHANCE_FUCK_YOU_ON_CONTACT_100")]
- public float ChanceFuckYouOnContact100 { get; set; }
+ public float? ChanceFuckYouOnContact100 { get; set; }
[JsonPropertyName("FRIEND_DEAD_AGR_LOW")]
- public float FriendDeadAgrLow { get; set; }
+ public float? FriendDeadAgrLow { get; set; }
[JsonPropertyName("FRIEND_AGR_KILL")]
- public float FriendAgrKill { get; set; }
+ public float? FriendAgrKill { get; set; }
[JsonPropertyName("LAST_ENEMY_LOOK_TO")]
- public float LastEnemyLookTo { get; set; }
+ public float? LastEnemyLookTo { get; set; }
[JsonPropertyName("CAN_RECEIVE_PLAYER_REQUESTS_BEAR")]
- public bool CanReceivePlayerRequestsBear { get; set; }
+ public bool? CanReceivePlayerRequestsBear { get; set; }
[JsonPropertyName("CAN_RECEIVE_PLAYER_REQUESTS_USEC")]
- public bool CanReceivePlayerRequestsUsec { get; set; }
+ public bool? CanReceivePlayerRequestsUsec { get; set; }
[JsonPropertyName("CAN_RECEIVE_PLAYER_REQUESTS_SAVAGE")]
- public bool CanReceivePlayerRequestsSavage { get; set; }
+ public bool? CanReceivePlayerRequestsSavage { get; set; }
[JsonPropertyName("REVENGE_TO_GROUP")]
- public bool RevengeToGroup { get; set; }
+ public bool? RevengeToGroup { get; set; }
[JsonPropertyName("REVENGE_FOR_SAVAGE_PLAYERS")]
- public bool RevengeForSavagePlayers { get; set; }
+ public bool? RevengeForSavagePlayers { get; set; }
[JsonPropertyName("CAN_USE_MEDS")]
- public bool CanUseMeds { get; set; }
+ public bool? CanUseMeds { get; set; }
[JsonPropertyName("SUSPETION_POINT_CHANCE_ADD100")]
- public float SuspetionPointChanceAdd100 { get; set; }
+ public float? SuspetionPointChanceAdd100 { get; set; }
[JsonPropertyName("AMBUSH_WHEN_UNDER_FIRE")]
- public bool AmbushWhenUnderFire { get; set; }
+ public bool? AmbushWhenUnderFire { get; set; }
[JsonPropertyName("AMBUSH_WHEN_UNDER_FIRE_TIME_RESIST")]
- public float AmbushWhenUnderFireTimeResist { get; set; }
+ public float? AmbushWhenUnderFireTimeResist { get; set; }
[JsonPropertyName("CAN_LOOT_BOSS_CLUSTER")]
- public bool CanLootBossCluster { get; set; }
+ public bool? CanLootBossCluster { get; set; }
[JsonPropertyName("ATTACK_ENEMY_IF_PROTECT_DELTA_LAST_TIME_SEEN")]
- public float AttackEnemyIfProtectDeltaLastTimeSeen { get; set; }
+ public float? AttackEnemyIfProtectDeltaLastTimeSeen { get; set; }
[JsonPropertyName("HOLD_IF_PROTECT_DELTA_LAST_TIME_SEEN")]
- public float HoldIfProtectDeltaLastTimeSeen { get; set; }
+ public float? HoldIfProtectDeltaLastTimeSeen { get; set; }
[JsonPropertyName("FIND_COVER_TO_GET_POSITION_WITH_SHOOT")]
- public float FindCoverToGetPositionWithShoot { get; set; }
+ public float? FindCoverToGetPositionWithShoot { get; set; }
[JsonPropertyName("PROTECT_TIME_REAL")]
- public bool ProtectTimeReal { get; set; }
+ public bool? ProtectTimeReal { get; set; }
[JsonPropertyName("CHANCE_SHOOT_WHEN_WARN_PLAYER_100")]
- public float ChanceShootWhenWarnPlayer100 { get; set; }
+ public float? ChanceShootWhenWarnPlayer100 { get; set; }
[JsonPropertyName("CAN_PANIC_IS_PROTECT")]
- public bool CanPanicIsProtect { get; set; }
+ public bool? CanPanicIsProtect { get; set; }
[JsonPropertyName("NO_RUN_AWAY_FOR_SAFE")]
- public bool NoRunAwayForSafe { get; set; }
+ public bool? NoRunAwayForSafe { get; set; }
[JsonPropertyName("PART_PERCENT_TO_HEAL")]
- public float PartPercentToHeal { get; set; }
+ public float? PartPercentToHeal { get; set; }
[JsonPropertyName("PROTECT_DELTA_HEAL_SEC")]
- public float ProtectDeltaHealSec { get; set; }
+ public float? ProtectDeltaHealSec { get; set; }
[JsonPropertyName("CAN_STAND_BY")]
- public bool CanStandBy { get; set; }
+ public bool? CanStandBy { get; set; }
[JsonPropertyName("CAN_THROW_REQUESTS")]
- public bool CanThrowRequests { get; set; }
+ public bool? CanThrowRequests { get; set; }
[JsonPropertyName("GROUP_ANY_PHRASE_DELAY")]
- public float GroupAnyPhraseDelay { get; set; }
+ public float? GroupAnyPhraseDelay { get; set; }
[JsonPropertyName("GROUP_EXACTLY_PHRASE_DELAY")]
- public float GroupExactlyPhraseDelay { get; set; }
+ public float? GroupExactlyPhraseDelay { get; set; }
[JsonPropertyName("GROUP_EXACTLY_PHRASE_DELAY_MAX")]
- public float GroupExactlyPhraseDelayMax { get; set; }
+ public float? GroupExactlyPhraseDelayMax { get; set; }
[JsonPropertyName("DIST_TO_ENEMY_YO_CAN_HEAL")]
- public float DistToEnemyYoCanHeal { get; set; }
+ public float? DistToEnemyYoCanHeal { get; set; }
[JsonPropertyName("CHANCE_TO_STAY_WHEN_WARN_PLAYER_100")]
- public float ChanceToStayWhenWarnPlayer100 { get; set; }
+ public float? ChanceToStayWhenWarnPlayer100 { get; set; }
[JsonPropertyName("DOG_FIGHT_OUT")]
- public float DogFightOut { get; set; }
+ public float? DogFightOut { get; set; }
[JsonPropertyName("DOG_FIGHT_IN")]
- public float DogFightIn { get; set; }
+ public float? DogFightIn { get; set; }
[JsonPropertyName("SHOOT_INSTEAD_DOG_FIGHT")]
- public float ShootInsteadDogFight { get; set; }
+ public float? ShootInsteadDogFight { get; set; }
[JsonPropertyName("PISTOL_SHOTGUN_AMBUSH_DIST")]
- public float PistolShotgunAmbushDist { get; set; }
+ public float? PistolShotgunAmbushDist { get; set; }
[JsonPropertyName("STANDART_AMBUSH_DIST")]
- public float StandartAmbushDist { get; set; }
+ public float? StandartAmbushDist { get; set; }
[JsonPropertyName("AI_POWER_COEF")]
- public float AiPowerCoef { get; set; }
+ public float? AiPowerCoef { get; set; }
[JsonPropertyName("COVER_SECONDS_AFTER_LOSE_VISION")]
- public float CoverSecondsAfterLoseVision { get; set; }
+ public float? CoverSecondsAfterLoseVision { get; set; }
[JsonPropertyName("COVER_SELF_ALWAYS_IF_DAMAGED")]
- public bool CoverSelfAlwaysIfDamaged { get; set; }
+ public bool? CoverSelfAlwaysIfDamaged { get; set; }
[JsonPropertyName("SEC_TO_MORE_DIST_TO_RUN")]
- public float SecToMoreDistToRun { get; set; }
+ public float? SecToMoreDistToRun { get; set; }
[JsonPropertyName("HEAL_DELAY_SEC")]
- public float HealDelaySec { get; set; }
+ public float? HealDelaySec { get; set; }
[JsonPropertyName("HIT_DELAY_WHEN_HAVE_SMT")]
- public float HitDelayWhenHaveSmt { get; set; }
+ public float? HitDelayWhenHaveSmt { get; set; }
[JsonPropertyName("HIT_DELAY_WHEN_PEACE")]
- public float HitDelayWhenPeace { get; set; }
+ public float? HitDelayWhenPeace { get; set; }
[JsonPropertyName("TALK_WITH_QUERY")]
- public bool TalkWithQuery { get; set; }
+ public bool? TalkWithQuery { get; set; }
[JsonPropertyName("DANGER_EXPIRE_TIME_MIN")]
- public float DangerExpireTimeMin { get; set; }
+ public float? DangerExpireTimeMin { get; set; }
[JsonPropertyName("DANGER_EXPIRE_TIME_MAX")]
- public float DangerExpireTimeMax { get; set; }
+ public float? DangerExpireTimeMax { get; set; }
[JsonPropertyName("PANIC_RUN_WEIGHT")]
- public float PanicRunWeight { get; set; }
+ public float? PanicRunWeight { get; set; }
[JsonPropertyName("PANIC_SIT_WEIGHT")]
- public float PanicSitWeight { get; set; }
+ public float? PanicSitWeight { get; set; }
[JsonPropertyName("PANIC_LAY_WEIGHT")]
- public float PanicLayWeight { get; set; }
+ public float? PanicLayWeight { get; set; }
[JsonPropertyName("PANIC_NONE_WEIGHT")]
- public float PanicNoneWeight { get; set; }
+ public float? PanicNoneWeight { get; set; }
[JsonPropertyName("PANIC_SIT_WEIGHT_PEACE")]
- public float PanicSitWeightPeace { get; set; }
+ public float? PanicSitWeightPeace { get; set; }
[JsonPropertyName("CAN_EXECUTE_REQUESTS")]
- public bool CanExecuteRequests { get; set; }
+ public bool? CanExecuteRequests { get; set; }
[JsonPropertyName("CAN_WARN_SELF")]
- public bool CanWarnSelf { get; set; }
+ public bool? CanWarnSelf { get; set; }
[JsonPropertyName("DIST_TO_ENEMY_SPOTTED_ON_HIT")]
- public float DistToEnemySpottedOnHit { get; set; }
+ public float? DistToEnemySpottedOnHit { get; set; }
[JsonPropertyName("UNDER_FIRE_PERIOD")]
- public float UnderFirePeriod { get; set; }
+ public float? UnderFirePeriod { get; set; }
[JsonPropertyName("MEDS_ONLY_SAFE_CONTAINER")]
- public bool MedsOnlySafeContainer { get; set; }
+ public bool? MedsOnlySafeContainer { get; set; }
[JsonPropertyName("CAN_DROP_ITEMS")]
- public bool CanDropItems { get; set; }
+ public bool? CanDropItems { get; set; }
[JsonPropertyName("CAN_TAKE_ITEMS")]
- public bool CanTakeItems { get; set; }
+ public bool? CanTakeItems { get; set; }
[JsonPropertyName("THROW_DIST_TO_SEE")]
- public float ThrowDistToSee { get; set; }
+ public float? ThrowDistToSee { get; set; }
[JsonPropertyName("CAN_TAKE_ANY_ITEM")]
- public bool CanTakeAnyItem { get; set; }
+ public bool? CanTakeAnyItem { get; set; }
[JsonPropertyName("WILL_PERSUE_AXEMAN")]
- public bool WillPersueAxeman { get; set; }
+ public bool? WillPersueAxeman { get; set; }
[JsonPropertyName("MAX_DIST_TO_RUN_PERSUE_AXEMAN")]
- public float MaxDistToRunPersueAxeman { get; set; }
+ public float? MaxDistToRunPersueAxeman { get; set; }
[JsonPropertyName("MAX_DIST_TO_PERSUE_AXEMAN")]
- public float MaxDistToPersueAxeman { get; set; }
+ public float? MaxDistToPersueAxeman { get; set; }
[JsonPropertyName("SURGE_KIT_ONLY_SAFE_CONTAINER")]
- public bool SurgeKitOnlySafeContainer { get; set; }
+ public bool? SurgeKitOnlySafeContainer { get; set; }
[JsonPropertyName("CAN_USE_LONG_COVER_POINTS")]
- public bool CanUseLongCoverPoints { get; set; }
+ public bool? CanUseLongCoverPoints { get; set; }
[JsonPropertyName("CAN_USE_FOOD_DRINK")]
- public bool CanUseFoodDrink { get; set; }
+ public bool? CanUseFoodDrink { get; set; }
[JsonPropertyName("FOOD_DRINK_DELAY_SEC")]
- public float FoodDrinkDelaySec { get; set; }
+ public float? FoodDrinkDelaySec { get; set; }
[JsonPropertyName("HOW_WORK_OVER_DEAD_BODY")]
- public int HowWorkOverDeadBody { get; set; }
+ public int? HowWorkOverDeadBody { get; set; }
[JsonPropertyName("DEADBODYWORK_INITIAL_DELAY")]
- public float DeadbodyworkInitialDelay { get; set; }
+ public float? DeadbodyworkInitialDelay { get; set; }
[JsonPropertyName("DEADBODYWORK_CHECK_ITEMS_DELAY")]
- public float DeadbodyworkCheckItemsDelay { get; set; }
+ public float? DeadbodyworkCheckItemsDelay { get; set; }
[JsonPropertyName("DEADBODYWORK_MOVE_ITEMS_DELAY")]
- public float DeadbodyworkMoveItemsDelay { get; set; }
+ public float? DeadbodyworkMoveItemsDelay { get; set; }
[JsonPropertyName("DEADBODYWORK_DROP_ITEMS_DELAY")]
- public float DeadbodyworkDropItemsDelay { get; set; }
+ public float? DeadbodyworkDropItemsDelay { get; set; }
[JsonPropertyName("CAN_TALK")]
- public bool CanTalk { get; set; }
+ public bool? CanTalk { get; set; }
[JsonPropertyName("ACTIVE_FORCE_ATTACK_EVENTS")]
- public bool ActiveForceAttackEvents { get; set; }
+ public bool? ActiveForceAttackEvents { get; set; }
[JsonPropertyName("ACTIVE_FOLLOW_PLAYER_EVENTS")]
- public bool ActiveFollowPlayerEvents { get; set; }
+ public bool? ActiveFollowPlayerEvents { get; set; }
[JsonPropertyName("MAY_BE_CALLED_FOR_HELP")]
- public bool MayBeCalledForHelp { get; set; }
+ public bool? MayBeCalledForHelp { get; set; }
[JsonPropertyName("GIFTER_ADDITIONAL_GIFTS")]
- public int GifterAdditionalGifts { get; set; }
+ public int? GifterAdditionalGifts { get; set; }
[JsonPropertyName("ANGLE_TO_SHOOT_BTR")]
- public float AngleToShootBtr { get; set; }
+ public float? AngleToShootBtr { get; set; }
[JsonPropertyName("ROTATION_SPEED_BTR")]
- public float RotationSpeedBtr { get; set; }
+ public float? RotationSpeedBtr { get; set; }
[JsonPropertyName("IGNORE_ANOTHER_BOTS_BEING_HIT")]
- public bool IgnoreAnotherBotsBeingHit { get; set; }
+ public bool? IgnoreAnotherBotsBeingHit { get; set; }
[JsonPropertyName("AVOID_BTR_RADIUS_SQR")]
- public float AvoidBtrRadiusSqr { get; set; }
+ public float? AvoidBtrRadiusSqr { get; set; }
[JsonPropertyName("SNIPER_FIRE_IMMUNE")]
- public bool SniperFireImmune { get; set; }
+ public bool? SniperFireImmune { get; set; }
[JsonPropertyName("USE_ADD_TO_ENEMY_VALIDATION")]
- public bool UseAddToEnemyValidation { get; set; }
+ public bool? UseAddToEnemyValidation { get; set; }
[JsonPropertyName("VALID_REASONS_TO_ADD_ENEMY")]
public EBotEnemyCause[]? ValidReasonsToAddEnemy { get; set; }
[JsonPropertyName("CHECK_MARK_OF_UNKNOWS")]
- public bool CheckMarkOfUnknows { get; set; }
+ public bool? CheckMarkOfUnknows { get; set; }
[JsonPropertyName("SDIST_TO_DELIVER_INFO_WHEN_ENEMY")]
- public float SdistToDeliverInfoWhenEnemy { get; set; }
+ public float? SdistToDeliverInfoWhenEnemy { get; set; }
[JsonPropertyName("TRIPWIRE_INERT_TIME")]
- public int TripwireInertTime { get; set; }
+ public int? TripwireInertTime { get; set; }
[JsonPropertyName("IGNORE_TRAP")]
- public bool IgnoreTrap { get; set; }
+ public bool? IgnoreTrap { get; set; }
[JsonPropertyName("CHANCE_TO_IGNORE_TRIPWIRE")]
- public float ChanceToIgnoreTripwire { get; set; }
+ public float? ChanceToIgnoreTripwire { get; set; }
[JsonPropertyName("CHACE_TO_DEACTIVATE")]
- public float ChaceToDeactivate { get; set; }
+ public float? ChaceToDeactivate { get; set; }
[JsonPropertyName("REACT_ADD_DRUNK_ENEMY")]
- public bool ReactAddDrunkEnemy { get; set; }
+ public bool? ReactAddDrunkEnemy { get; set; }
[JsonPropertyName("DIST_TO_HIDE_ASSAULT")]
- public float DistToHideAssault { get; set; }
+ public float? DistToHideAssault { get; set; }
[JsonPropertyName("KEEP_ZONE_ON_SPAWN_TIME_SEC")]
- public float KeepZoneOnSpawnTimeSec { get; set; }
+ public float? KeepZoneOnSpawnTimeSec { get; set; }
[JsonPropertyName("IGNORE_DANGER_PLACES")]
- public bool IgnoreDangerPlaces { get; set; }
+ public bool? IgnoreDangerPlaces { get; set; }
[JsonPropertyName("PUSH_AND_SUPPRESS_HIDE")]
- public float PushAndSuppressHide { get; set; }
+ public float? PushAndSuppressHide { get; set; }
[JsonPropertyName("PUSH_AND_SUPPRESS_PUSH")]
- public float PushAndSuppressPush { get; set; }
+ public float? PushAndSuppressPush { get; set; }
[JsonPropertyName("AGGRESSOR_LOYALTY_BONUS")]
- public float AggressorLoyaltyBonus { get; set; }
+ public float? AggressorLoyaltyBonus { get; set; }
public enum EWarnBehaviour
{
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsMoveSettings.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsMoveSettings.cs
index 0cc7f997..ea6a4318 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsMoveSettings.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsMoveSettings.cs
@@ -1,111 +1,119 @@
using System.Text.Json.Serialization;
namespace SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings;
-
+///
+///
+/// See BotGlobalsMoveSettings in the client, this record should match that
+///
+///
+///
+/// These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
+///
+///
public record BotGlobalsMoveSettings
{
[JsonPropertyName("BASE_ROTATE_SPEED")]
- public float BaseRotateSpeed { get; set; }
+ public float? BaseRotateSpeed { get; set; }
[JsonPropertyName("REACH_DIST")]
- public float ReachDistance { get; set; }
+ public float? ReachDistance { get; set; }
[JsonPropertyName("REACH_DIST_RUN")]
- public float ReachDistanceRun { get; set; }
+ public float? ReachDistanceRun { get; set; }
[JsonPropertyName("START_SLOW_DIST")]
- public float StartSlowDistance { get; set; }
+ public float? StartSlowDistance { get; set; }
[JsonPropertyName("BASESTART_SLOW_DIST")]
- public float BaseStartSlowDistance { get; set; }
+ public float? BaseStartSlowDistance { get; set; }
[JsonPropertyName("SLOW_COEF")]
- public float SlowCoefficient { get; set; }
+ public float? SlowCoefficient { get; set; }
[JsonPropertyName("DIST_TO_CAN_CHANGE_WAY")]
- public float DistanceToCanChangeWay { get; set; }
+ public float? DistanceToCanChangeWay { get; set; }
[JsonPropertyName("DIST_TO_START_RAYCAST")]
- public float DistanceToStartRaycast { get; set; }
+ public float? DistanceToStartRaycast { get; set; }
[JsonPropertyName("BASE_START_SERACH")]
- public float BaseStartSearch { get; set; }
+ public float? BaseStartSearch { get; set; }
[JsonPropertyName("UPDATE_TIME_RECAL_WAY")]
- public float UpdateTimeRecalculateWay { get; set; }
+ public float? UpdateTimeRecalculateWay { get; set; }
[JsonPropertyName("FAR_DIST")]
- public float FarDistance { get; set; }
+ public float? FarDistance { get; set; }
[JsonPropertyName("FAR_DIST_SQR")]
- public float FarDistanceSqr { get; set; }
+ public float? FarDistanceSqr { get; set; }
[JsonPropertyName("DIST_TO_CAN_CHANGE_WAY_SQR")]
- public float DistanceToCanChangeWaySqr { get; set; }
+ public float? DistanceToCanChangeWaySqr { get; set; }
[JsonPropertyName("DIST_TO_START_RAYCAST_SQR")]
- public float DistanceToStartRaycastSqr { get; set; }
+ public float? DistanceToStartRaycastSqr { get; set; }
[JsonPropertyName("BASE_SQRT_START_SERACH")]
- public float BaseSqrtStartSearch { get; set; }
+ public float? BaseSqrtStartSearch { get; set; }
[JsonPropertyName("Y_APPROXIMATION")]
- public float YApproximation { get; set; }
+ public float? YApproximation { get; set; }
[JsonPropertyName("DELTA_LAST_SEEN_ENEMY")]
- public float DeltaLastSeenEnemy { get; set; }
+ public float? DeltaLastSeenEnemy { get; set; }
[JsonPropertyName("REACH_DIST_COVER")]
- public float ReachDistanceCover { get; set; }
+ public float? ReachDistanceCover { get; set; }
[JsonPropertyName("RUN_TO_COVER_MIN")]
- public float RunToCoverMin { get; set; }
+ public float? RunToCoverMin { get; set; }
[JsonPropertyName("CHANCE_TO_RUN_IF_NO_AMMO_0_100")]
- public float ChanceToRunIfNoAmmo { get; set; }
+ public float? ChanceToRunIfNoAmmo { get; set; }
[JsonPropertyName("RUN_IF_CANT_SHOOT")]
- public bool RunIfCantShoot { get; set; }
+ public bool? RunIfCantShoot { get; set; }
[JsonPropertyName("RUN_IF_GAOL_FAR_THEN")]
- public float RunIfGoalFarThen { get; set; }
+ public float? RunIfGoalFarThen { get; set; }
[JsonPropertyName("SEC_TO_CHANGE_TO_RUN")]
- public float SecondsToChangeToRun { get; set; }
+ public float? SecondsToChangeToRun { get; set; }
[JsonPropertyName("ETERNITY_STAMINA")]
- public bool EternityStamina { get; set; }
+ public bool? EternityStamina { get; set; }
[JsonPropertyName("STOP_SPRINT_AT_TREE")]
- public bool StopSprintAtTree { get; set; }
+ public bool? StopSprintAtTree { get; set; }
[JsonPropertyName("WAIT_DOOR_OPEN_SEC")]
- public float WaitDoorOpenSeconds { get; set; }
+ public float? WaitDoorOpenSeconds { get; set; }
[JsonPropertyName("BREACH_CHANCE_100")]
- public float BreachChance { get; set; }
+ public float? BreachChance { get; set; }
[JsonPropertyName("FIRST_TURN_SPEED")]
- public float FirstTurnSpeed { get; set; }
+ public float? FirstTurnSpeed { get; set; }
[JsonPropertyName("FIRST_TURN_BIG_SPEED")]
- public float FirstTurnBigSpeed { get; set; }
+ public float? FirstTurnBigSpeed { get; set; }
[JsonPropertyName("TURN_SPEED_ON_SPRINT")]
- public float TurnSpeedOnSprint { get; set; }
+ public float? TurnSpeedOnSprint { get; set; }
[JsonPropertyName("NO_ZIG_ZAG")]
- public bool NoZigZag { get; set; }
+ public bool? NoZigZag { get; set; }
[JsonPropertyName("CAN_SPRINT_GO_TO_SOME_POINT")]
- public bool CanSprintGoToSomePoint { get; set; }
+ public bool? CanSprintGoToSomePoint { get; set; }
[JsonPropertyName("DIST_SPRINT_GO_TO_SOME_POINT")]
- public float DistanceSprintGoToSomePoint { get; set; }
+ public float? DistanceSprintGoToSomePoint { get; set; }
[JsonPropertyName("MELEE_ATTACK_ZIG_ZAG")]
- public bool MeleeAttackZigZag { get; set; }
+ public bool? MeleeAttackZigZag { get; set; }
[JsonPropertyName("MELEE_ATTACK_OPTIMIZE")]
- public bool MeleeAttackOptimize { get; set; }
+ public bool? MeleeAttackOptimize { get; set; }
}
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsScatteringSettings.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsScatteringSettings.cs
index a3491a7b..9fb41cff 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsScatteringSettings.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Bot/GlobalSettings/BotGlobalsScatteringSettings.cs
@@ -2,98 +2,107 @@
namespace SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings;
+///
+///
+/// See BotGlobalsScatteringSettings in the client, this record should match that
+///
+///
+///
+/// These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
+///
+///
public record BotGlobalsScatteringSettings
{
[JsonPropertyName("MinScatter")]
- public float MinScatter { get; set; }
+ public float? MinScatter { get; set; }
[JsonPropertyName("WorkingScatter")]
- public float WorkingScatter { get; set; }
+ public float? WorkingScatter { get; set; }
[JsonPropertyName("MaxScatter")]
- public float MaxScatter { get; set; }
+ public float? MaxScatter { get; set; }
[JsonPropertyName("SpeedUp")]
- public float SpeedUp { get; set; }
+ public float? SpeedUp { get; set; }
[JsonPropertyName("SpeedUpAim")]
- public float SpeedUpAim { get; set; }
+ public float? SpeedUpAim { get; set; }
[JsonPropertyName("SpeedDown")]
- public float SpeedDown { get; set; }
+ public float? SpeedDown { get; set; }
[JsonPropertyName("ToSlowBotSpeed")]
- public float ToSlowBotSpeed { get; set; }
+ public float? ToSlowBotSpeed { get; set; }
[JsonPropertyName("ToLowBotSpeed")]
- public float ToLowBotSpeed { get; set; }
+ public float? ToLowBotSpeed { get; set; }
[JsonPropertyName("ToUpBotSpeed")]
- public float ToUpBotSpeed { get; set; }
+ public float? ToUpBotSpeed { get; set; }
[JsonPropertyName("MovingSlowCoef")]
- public float MovingSlowCoef { get; set; }
+ public float? MovingSlowCoef { get; set; }
[JsonPropertyName("ToLowBotAngularSpeed")]
- public float ToLowBotAngularSpeed { get; set; }
+ public float? ToLowBotAngularSpeed { get; set; }
[JsonPropertyName("ToStopBotAngularSpeed")]
- public float ToStopBotAngularSpeed { get; set; }
+ public float? ToStopBotAngularSpeed { get; set; }
[JsonPropertyName("FromShot")]
- public float FromShot { get; set; }
+ public float? FromShot { get; set; }
[JsonPropertyName("TracerCoef")]
- public float TracerCoef { get; set; }
+ public float? TracerCoef { get; set; }
[JsonPropertyName("HandDamageScatteringMinMax")]
- public float HandDamageScatteringMinMax { get; set; }
+ public float? HandDamageScatteringMinMax { get; set; }
[JsonPropertyName("HandDamageAccuracySpeed")]
- public float HandDamageAccuracySpeed { get; set; }
+ public float? HandDamageAccuracySpeed { get; set; }
[JsonPropertyName("BloodFall")]
- public float BloodFall { get; set; }
+ public float? BloodFall { get; set; }
[JsonPropertyName("Caution")]
- public float Caution { get; set; }
+ public float? Caution { get; set; }
[JsonPropertyName("ToCaution")]
- public float ToCaution { get; set; }
+ public float? ToCaution { get; set; }
[JsonPropertyName("RecoilControlCoefShootDone")]
- public float RecoilControlCoefShootDone { get; set; }
+ public float? RecoilControlCoefShootDone { get; set; }
[JsonPropertyName("RecoilControlCoefShootDoneAuto")]
- public float RecoilControlCoefShootDoneAuto { get; set; }
+ public float? RecoilControlCoefShootDoneAuto { get; set; }
[JsonPropertyName("AMPLITUDE_FACTOR")]
- public float AmplitudeFactor { get; set; }
+ public float? AmplitudeFactor { get; set; }
[JsonPropertyName("AMPLITUDE_SPEED")]
- public float AmplitudeSpeed { get; set; }
+ public float? AmplitudeSpeed { get; set; }
[JsonPropertyName("DIST_FROM_OLD_POINT_TO_NOT_AIM")]
- public float DistFromOldPointToNotAim { get; set; }
+ public float? DistFromOldPointToNotAim { get; set; }
[JsonPropertyName("DIST_FROM_OLD_POINT_TO_NOT_AIM_SQRT")]
- public float DistFromOldPointToNotAimSqrt { get; set; }
+ public float? DistFromOldPointToNotAimSqrt { get; set; }
[JsonPropertyName("DIST_NOT_TO_SHOOT")]
- public float DistNotToShoot { get; set; }
+ public float? DistNotToShoot { get; set; }
[JsonPropertyName("PoseChnageCoef")]
- public float PoseChangeCoef { get; set; }
+ public float? PoseChangeCoef { get; set; }
[JsonPropertyName("LayFactor")]
- public float LayFactor { get; set; }
+ public float? LayFactor { get; set; }
[JsonPropertyName("RecoilYCoef")]
- public float RecoilYCoef { get; set; }
+ public float? RecoilYCoef { get; set; }
[JsonPropertyName("RecoilYCoefSppedDown")]
- public float RecoilYCoefSpeedDown { get; set; }
+ public float? RecoilYCoefSpeedDown { get; set; }
[JsonPropertyName("RecoilYMax")]
- public float RecoilYMax { get; set; }
+ public float? RecoilYMax { get; set; }
}