using System.Text.Json.Serialization; namespace Core.Models.Eft.Common.Tables; public class TemplateItem { [JsonPropertyName("_id")] public string? Id { get; set; } [JsonPropertyName("_name")] public string? Name { get; set; } [JsonPropertyName("_parent")] public string? Parent { get; set; } [JsonPropertyName("_type")] public ItemType? Type { get; set; } [JsonPropertyName("_props")] public Props? Properties { get; set; } [JsonPropertyName("_proto")] public string? Prototype { get; set; } } public class Props { [JsonPropertyName("AllowSpawnOnLocations")] public List? AllowSpawnOnLocations { get; set; } [JsonPropertyName("BeltMagazineRefreshCount")] public int? BeltMagazineRefreshCount { get; set; } [JsonPropertyName("ChangePriceCoef")] public int? ChangePriceCoef { get; set; } [JsonPropertyName("FixedPrice")] public bool? FixedPrice { get; set; } [JsonPropertyName("SendToClient")] public bool? SendToClient { get; set; } [JsonPropertyName("Name")] public string? Name { get; set; } [JsonPropertyName("ShortName")] public string? ShortName { get; set; } [JsonPropertyName("Description")] public string? Description { get; set; } [JsonPropertyName("Weight")] public int? Weight { get; set; } [JsonPropertyName("BackgroundColor")] public string? BackgroundColor { get; set; } [JsonPropertyName("Width")] public int? Width { get; set; } [JsonPropertyName("Height")] public int? Height { get; set; } [JsonPropertyName("StackMaxSize")] public int? StackMaxSize { get; set; } [JsonPropertyName("Rarity")] public string? Rarity { get; set; } [JsonPropertyName("SpawnChance")] public int? SpawnChance { get; set; } [JsonPropertyName("CreditsPrice")] public int? CreditsPrice { get; set; } [JsonPropertyName("ItemSound")] public string? ItemSound { get; set; } [JsonPropertyName("Prefab")] public Prefab? Prefab { get; set; } [JsonPropertyName("UsePrefab")] public Prefab? UsePrefab { get; set; } [JsonPropertyName("airDropTemplateId")] public string? AirDropTemplateId { get; set; } [JsonPropertyName("StackObjectsCount")] public int? StackObjectsCount { get; set; } [JsonPropertyName("NotShownInSlot")] public bool? NotShownInSlot { get; set; } [JsonPropertyName("ExaminedByDefault")] public bool? ExaminedByDefault { get; set; } [JsonPropertyName("ExamineTime")] public int? ExamineTime { get; set; } [JsonPropertyName("IsUndiscardable")] public bool? IsUndiscardable { get; set; } [JsonPropertyName("IsUnsaleable")] public bool? IsUnsaleable { get; set; } [JsonPropertyName("IsUnbuyable")] public bool? IsUnbuyable { get; set; } [JsonPropertyName("IsUngivable")] public bool? IsUngivable { get; set; } [JsonPropertyName("IsUnremovable")] public bool? IsUnRemovable { get; set; } [JsonPropertyName("IsLockedafterEquip")] public bool? IsLockedAfterEquip { get; set; } [JsonPropertyName("IsSecretExitRequirement")] public bool? IsSecretExitRequirement { get; set; } [JsonPropertyName("IsRagfairCurrency")] public bool? IsRagfairCurrency { get; set; } [JsonPropertyName("IsSpecialSlotOnly")] public bool? IsSpecialSlotOnly { get; set; } [JsonPropertyName("IsStationaryWeapon")] public bool? IsStationaryWeapon { get; set; } [JsonPropertyName("QuestItem")] public bool? QuestItem { get; set; } [JsonPropertyName("QuestStashMaxCount")] public int? QuestStashMaxCount { get; set; } [JsonPropertyName("LootExperience")] public int? LootExperience { get; set; } [JsonPropertyName("ExamineExperience")] public int? ExamineExperience { get; set; } [JsonPropertyName("HideEntrails")] public bool? HideEntrails { get; set; } [JsonPropertyName("InsuranceDisabled")] public bool? InsuranceDisabled { get; set; } [JsonPropertyName("RepairCost")] public int? RepairCost { get; set; } [JsonPropertyName("RepairSpeed")] public int? RepairSpeed { get; set; } [JsonPropertyName("ExtraSizeLeft")] public int? ExtraSizeLeft { get; set; } [JsonPropertyName("ExtraSizeRight")] public int? ExtraSizeRight { get; set; } [JsonPropertyName("ExtraSizeUp")] public int? ExtraSizeUp { get; set; } [JsonPropertyName("FlareTypes")] public List? FlareTypes { get; set; } [JsonPropertyName("ExtraSizeDown")] public int? ExtraSizeDown { get; set; } [JsonPropertyName("ExtraSizeForceAdd")] public bool? ExtraSizeForceAdd { get; set; } [JsonPropertyName("MergesWithChildren")] public bool? MergesWithChildren { get; set; } [JsonPropertyName("MetascoreGroup")] public string? MetaScoreGroup { get; set; } [JsonPropertyName("CanSellOnRagfair")] public bool? CanSellOnRagfair { get; set; } [JsonPropertyName("CanRequireOnRagfair")] public bool? CanRequireOnRagfair { get; set; } [JsonPropertyName("ConflictingItems")] public List? ConflictingItems { get; set; } [JsonPropertyName("Unlootable")] public bool? Unlootable { get; set; } [JsonPropertyName("UnlootableFromSlot")] public string? UnlootableFromSlot { get; set; } [JsonPropertyName("UnlootableFromSide")] public List? UnlootableFromSide { get; set; } [JsonPropertyName("AnimationVariantsNumber")] public int? AnimationVariantsNumber { get; set; } [JsonPropertyName("DiscardingBlock")] public bool? DiscardingBlock { get; set; } [JsonPropertyName("DropSoundType")] public string? DropSoundType { get; set; } [JsonPropertyName("RagFairCommissionModifier")] public int? RagFairCommissionModifier { get; set; } [JsonPropertyName("RarityPvE")] public string? RarityPvE { get; set; } [JsonPropertyName("IsAlwaysAvailableForInsurance")] public bool? IsAlwaysAvailableForInsurance { get; set; } [JsonPropertyName("DiscardLimit")] public int? DiscardLimit { get; set; } [JsonPropertyName("MaxResource")] public int? MaxResource { get; set; } [JsonPropertyName("Resource")] public int? Resource { get; set; } [JsonPropertyName("DogTagQualities")] public bool? DogTagQualities { get; set; } [JsonPropertyName("Grids")] public List Grids { get; set; } [JsonPropertyName("Slots")] public List Slots { get; set; } [JsonPropertyName("CanPutIntoDuringTheRaid")] public bool? CanPutIntoDuringTheRaid { get; set; } [JsonPropertyName("CantRemoveFromSlotsDuringRaid")] public List? CantRemoveFromSlotsDuringRaid { get; set; } [JsonPropertyName("KeyIds")] public List? KeyIds { get; set; } [JsonPropertyName("TagColor")] public int? TagColor { get; set; } [JsonPropertyName("TagName")] public string? TagName { get; set; } [JsonPropertyName("Durability")] public int? Durability { get; set; } [JsonPropertyName("Accuracy")] public int? Accuracy { get; set; } [JsonPropertyName("Recoil")] public int? Recoil { get; set; } [JsonPropertyName("Loudness")] public int? Loudness { get; set; } [JsonPropertyName("EffectiveDistance")] public int? EffectiveDistance { get; set; } [JsonPropertyName("Ergonomics")] public int? Ergonomics { get; set; } [JsonPropertyName("Velocity")] public int? Velocity { get; set; } [JsonPropertyName("WeaponRecoilSettings")] public WeaponRecoilSettings? WeaponRecoilSettings { get; set; } [JsonPropertyName("WithAnimatorAiming")] public bool? WithAnimatorAiming { get; set; } [JsonPropertyName("RaidModdable")] public bool? RaidModdable { get; set; } [JsonPropertyName("ToolModdable")] public bool? ToolModdable { get; set; } [JsonPropertyName("UniqueAnimationModID")] public int? UniqueAnimationModID { get; set; } [JsonPropertyName("BlocksFolding")] public bool? BlocksFolding { get; set; } [JsonPropertyName("BlocksCollapsible")] public bool? BlocksCollapsible { get; set; } [JsonPropertyName("IsAnimated")] public bool? IsAnimated { get; set; } [JsonPropertyName("HasShoulderContact")] public bool? HasShoulderContact { get; set; } [JsonPropertyName("SightingRange")] public int? SightingRange { get; set; } [JsonPropertyName("ZoomSensitivity")] public int? ZoomSensitivity { get; set; } [JsonPropertyName("DoubleActionAccuracyPenaltyMult")] public int? DoubleActionAccuracyPenaltyMult { get; set; } [JsonPropertyName("ModesCount")] public object? ModesCount { get; set; } // TODO: object here [JsonPropertyName("DurabilityBurnModificator")] public int? DurabilityBurnModificator { get; set; } [JsonPropertyName("HeatFactor")] public int? HeatFactor { get; set; } [JsonPropertyName("CoolFactor")] public int? CoolFactor { get; set; } [JsonPropertyName("muzzleModType")] public string? MuzzleModType { get; set; } [JsonPropertyName("CustomAimPlane")] public string? CustomAimPlane { get; set; } [JsonPropertyName("IsAdjustableOptic")] public bool? IsAdjustableOptic { get; set; } [JsonPropertyName("MinMaxFov")] public XYZ? MinMaxFov { get; set; } [JsonPropertyName("sightModType")] public string? SightModType { get; set; } [JsonPropertyName("aimingSensitivity")] public int? AimingSensitivity { get; set; } [JsonPropertyName("SightModesCount")] public int? SightModesCount { get; set; } [JsonPropertyName("OpticCalibrationDistances")] public List? OpticCalibrationDistances { get; set; } [JsonPropertyName("ScopesCount")] public int? ScopesCount { get; set; } [JsonPropertyName("AimSensitivity")] public object? AimSensitivity { get; set; } // TODO: object here [JsonPropertyName("Zooms")] public List>? Zooms { get; set; } [JsonPropertyName("CalibrationDistances")] public List>? CalibrationDistances { get; set; } [JsonPropertyName("Intensity")] public int? Intensity { get; set; } [JsonPropertyName("Mask")] public string? Mask { get; set; } [JsonPropertyName("MaskSize")] public int? MaskSize { get; set; } [JsonPropertyName("IsMagazineForStationaryWeapon")] public bool? IsMagazineForStationaryWeapon { get; set; } [JsonPropertyName("NoiseIntensity")] public int? NoiseIntensity { get; set; } [JsonPropertyName("NoiseScale")] public int? NoiseScale { get; set; } [JsonPropertyName("Color")] public Color? Color { get; set; } [JsonPropertyName("DiffuseIntensity")] public int? DiffuseIntensity { get; set; } [JsonPropertyName("MagazineWithBelt")] public bool? MagazineWithBelt { get; set; } [JsonPropertyName("HasHinge")] public bool? HasHinge { get; set; } [JsonPropertyName("RampPalette")] public string? RampPalette { get; set; } [JsonPropertyName("DepthFade")] public int? DepthFade { get; set; } [JsonPropertyName("RoughnessCoef")] public int? RoughnessCoef { get; set; } [JsonPropertyName("SpecularCoef")] public int? SpecularCoef { get; set; } [JsonPropertyName("MainTexColorCoef")] public int? MainTexColorCoef { get; set; } [JsonPropertyName("MinimumTemperatureValue")] public int? MinimumTemperatureValue { get; set; } [JsonPropertyName("RampShift")] public int? RampShift { get; set; } [JsonPropertyName("HeatMin")] public int? HeatMin { get; set; } [JsonPropertyName("ColdMax")] public int? ColdMax { get; set; } [JsonPropertyName("IsNoisy")] public bool? IsNoisy { get; set; } [JsonPropertyName("IsFpsStuck")] public bool? IsFpsStuck { get; set; } [JsonPropertyName("IsGlitch")] public bool? IsGlitch { get; set; } [JsonPropertyName("IsMotionBlurred")] public bool? IsMotionBlurred { get; set; } [JsonPropertyName("IsPixelated")] public bool? IsPixelated { get; set; } [JsonPropertyName("PixelationBlockCount")] public int? PixelationBlockCount { get; set; } [JsonPropertyName("ShiftsAimCamera")] public int? ShiftsAimCamera { get; set; } [JsonPropertyName("magAnimationIndex")] public int? MagAnimationIndex { get; set; } [JsonPropertyName("Cartridges")] public List? Cartridges { get; set; } [JsonPropertyName("CanFast")] public bool? CanFast { get; set; } [JsonPropertyName("CanHit")] public bool? CanHit { get; set; } [JsonPropertyName("canAdmin")] public bool? CanAdmin { get; set; } [JsonPropertyName("loadUnloadModifier")] public int? LoadUnloadModifier { get; set; } [JsonPropertyName("checkTimeModifier")] public int? CheckTimeModifier { get; set; } [JsonPropertyName("checkOverride")] public int? CheckOverride { get; set; } [JsonPropertyName("reloadMagType")] public string? ReloadMagType { get; set; } [JsonPropertyName("visibleAmmoRangesString")] public string? VisibleAmmoRangesString { get; set; } [JsonPropertyName("malfunctionChance")] public int? MalfunctionChance { get; set; } [JsonPropertyName("isShoulderContact")] public bool? IsShoulderContact { get; set; } [JsonPropertyName("foldable")] public bool? Foldable { get; set; } [JsonPropertyName("retractable")] public bool? Retractable { get; set; } [JsonPropertyName("sizeReduceRight")] public int? SizeReduceRight { get; set; } [JsonPropertyName("centerOfImpact")] public int? CenterOfImpact { get; set; } [JsonPropertyName("isSilencer")] public bool? IsSilencer { get; set; } [JsonPropertyName("deviationCurve")] public int? DeviationCurve { get; set; } [JsonPropertyName("deviationMax")] public int? DeviationMax { get; set; } [JsonPropertyName("searchSound")] public string? SearchSound { get; set; } [JsonPropertyName("blocksArmorVest")] public bool? BlocksArmorVest { get; set; } [JsonPropertyName("speedPenaltyPercent")] public int? SpeedPenaltyPercent { get; set; } [JsonPropertyName("gridLayoutName")] public string? GridLayoutName { get; set; } [JsonPropertyName("containerSpawnChanceModifier")] public int? ContainerSpawnChanceModifier { get; set; } [JsonPropertyName("spawnExcludedFilter")] public List? SpawnExcludedFilter { get; set; } [JsonPropertyName("spawnFilter")] public List? SpawnFilter { get; set; } // TODO: object here [JsonPropertyName("containType")] public List? ContainType { get; set; } // TODO: object here [JsonPropertyName("sizeWidth")] public int? SizeWidth { get; set; } [JsonPropertyName("sizeHeight")] public int? SizeHeight { get; set; } [JsonPropertyName("isSecured")] public bool? IsSecured { get; set; } [JsonPropertyName("spawnTypes")] public string? SpawnTypes { get; set; } [JsonPropertyName("lootFilter")] public List? LootFilter { get; set; } // TODO: object here [JsonPropertyName("spawnRarity")] public string? SpawnRarity { get; set; } [JsonPropertyName("minCountSpawn")] public int? MinCountSpawn { get; set; } [JsonPropertyName("maxCountSpawn")] public int? MaxCountSpawn { get; set; } [JsonPropertyName("openedByKeyID")] public List? OpenedByKeyID { get; set; } [JsonPropertyName("rigLayoutName")] public string? RigLayoutName { get; set; } [JsonPropertyName("maxDurability")] public int? MaxDurability { get; set; } [JsonPropertyName("armorZone")] public List? ArmorZone { get; set; } [JsonPropertyName("armorClass")] public object? ArmorClass { get; set; } // TODO: object here [JsonPropertyName("armorColliders")] public List? ArmorColliders { get; set; } [JsonPropertyName("armorPlateColliders")] public List? ArmorPlateColliders { get; set; } [JsonPropertyName("bluntDamageReduceFromSoftArmor")] public bool? BluntDamageReduceFromSoftArmor { get; set; } [JsonPropertyName("mousePenalty")] public int? MousePenalty { get; set; } [JsonPropertyName("weaponErgonomicPenalty")] public int? WeaponErgonomicPenalty { get; set; } [JsonPropertyName("bluntThroughput")] public int? BluntThroughput { get; set; } [JsonPropertyName("armorMaterial")] public string? ArmorMaterial { get; set; } [JsonPropertyName("armorType")] public string? ArmorType { get; set; } [JsonPropertyName("weapClass")] public string? WeapClass { get; set; } [JsonPropertyName("weapUseType")] public string? WeapUseType { get; set; } [JsonPropertyName("ammoCaliber")] public string? AmmoCaliber { get; set; } [JsonPropertyName("operatingResource")] public int? OperatingResource { get; set; } [JsonPropertyName("postRecoilHorizontalRangeHandRotation")] public XYZ? PostRecoilHorizontalRangeHandRotation { get; set; } [JsonPropertyName("postRecoilVerticalRangeHandRotation")] public XYZ? PostRecoilVerticalRangeHandRotation { get; set; } [JsonPropertyName("progressRecoilAngleOnStable")] public XYZ? ProgressRecoilAngleOnStable { get; set; } [JsonPropertyName("repairComplexity")] public int? RepairComplexity { get; set; } [JsonPropertyName("durabSpawnMin")] public int? DurabSpawnMin { get; set; } [JsonPropertyName("durabSpawnMax")] public int? DurabSpawnMax { get; set; } [JsonPropertyName("isFastReload")] public bool? IsFastReload { get; set; } [JsonPropertyName("recoilForceUp")] public int? RecoilForceUp { get; set; } [JsonPropertyName("recoilForceBack")] public int? RecoilForceBack { get; set; } [JsonPropertyName("recoilAngle")] public int? RecoilAngle { get; set; } [JsonPropertyName("recoilCamera")] public int? RecoilCamera { get; set; } [JsonPropertyName("recoilCategoryMultiplierHandRotation")] public int? RecoilCategoryMultiplierHandRotation { get; set; } [JsonPropertyName("weapFireType")] public List WeapFireType { get; set; } [JsonPropertyName("recolDispersion")] public int? RecolDispersion { get; set; } [JsonPropertyName("singleFireRate")] public int? SingleFireRate { get; set; } [JsonPropertyName("canQueueSecondShot")] public bool? CanQueueSecondShot { get; set; } [JsonPropertyName("bFirerate")] public int? BFirerate { get; set; } [JsonPropertyName("bEffDist")] public int? BEffDist { get; set; } [JsonPropertyName("bHearDist")] public int? BHearDist { get; set; } [JsonPropertyName("blockLeftStance")] public bool? BlockLeftStance { get; set; } [JsonPropertyName("isChamberLoad")] public bool? IsChamberLoad { get; set; } [JsonPropertyName("chamberAmmoCount")] public int? ChamberAmmoCount { get; set; } [JsonPropertyName("isBoltCatch")] public bool? IsBoltCatch { get; set; } [JsonPropertyName("defMagType")] public string? DefMagType { get; set; } [JsonPropertyName("defAmmo")] public string? DefAmmo { get; set; } [JsonPropertyName("adjustCollimatorsToTrajectory")] public bool? AdjustCollimatorsToTrajectory { get; set; } [JsonPropertyName("shotgunDispersion")] public int? ShotgunDispersion { get; set; } [JsonPropertyName("chambers")] public List? Chambers { get; set; } [JsonPropertyName("cameraSnap")] public int? CameraSnap { get; set; } [JsonPropertyName("cameraToWeaponAngleSpeedRange")] public XYZ? CameraToWeaponAngleSpeedRange { get; set; } [JsonPropertyName("cameraToWeaponAngleStep")] public int? CameraToWeaponAngleStep { get; set; } [JsonPropertyName("reloadMode")] public string? ReloadMode { get; set; } [JsonPropertyName("aimPlane")] public int? AimPlane { get; set; } [JsonPropertyName("tacticalReloadStiffnes")] public XYZ? TacticalReloadStiffnes { get; set; } [JsonPropertyName("tacticalReloadFixation")] public int? TacticalReloadFixation { get; set; } [JsonPropertyName("recoilCenter")] public XYZ? RecoilCenter { get; set; } [JsonPropertyName("rotationCenter")] public XYZ? RotationCenter { get; set; } [JsonPropertyName("rotationCenterNoStock")] public XYZ? RotationCenterNoStock { get; set; } [JsonPropertyName("shotsGroupSettings")] public List ShotsGroupSettings { get; set; } [JsonPropertyName("foldedSlot")] public string? FoldedSlot { get; set; } [JsonPropertyName("forbidMissingVitalParts")] public bool? ForbidMissingVitalParts { get; set; } [JsonPropertyName("forbidNonEmptyContainers")] public bool? ForbidNonEmptyContainers { get; set; } [JsonPropertyName("compactHandling")] public bool? CompactHandling { get; set; } [JsonPropertyName("minRepairDegradation")] public int? MinRepairDegradation { get; set; } [JsonPropertyName("maxRepairDegradation")] public int? MaxRepairDegradation { get; set; } [JsonPropertyName("ironSightRange")] public int? IronSightRange { get; set; } [JsonPropertyName("isBeltMachineGun")] public bool? IsBeltMachineGun { get; set; } [JsonPropertyName("isFlareGun")] public bool? IsFlareGun { get; set; } [JsonPropertyName("isGrenadeLauncher")] public bool? IsGrenadeLauncher { get; set; } [JsonPropertyName("isOneoff")] public bool? IsOneoff { get; set; } [JsonPropertyName("mustBoltBeOpennedForExternalReload")] public bool? MustBoltBeOpennedForExternalReload { get; set; } [JsonPropertyName("mustBoltBeOpennedForInternalReload")] public bool? MustBoltBeOpennedForInternalReload { get; set; } [JsonPropertyName("noFiremodeOnBoltcatch")] public bool? NoFiremodeOnBoltcatch { get; set; } [JsonPropertyName("boltAction")] public bool? BoltAction { get; set; } [JsonPropertyName("hipAccuracyRestorationDelay")] public int? HipAccuracyRestorationDelay { get; set; } [JsonPropertyName("hipAccuracyRestorationSpeed")] public int? HipAccuracyRestorationSpeed { get; set; } [JsonPropertyName("hipInnaccuracyGain")] public int? HipInnaccuracyGain { get; set; } [JsonPropertyName("manualBoltCatch")] public bool? ManualBoltCatch { get; set; } [JsonPropertyName("burstShotsCount")] public int? BurstShotsCount { get; set; } [JsonPropertyName("baseMalfunctionChance")] public int? BaseMalfunctionChance { get; set; } [JsonPropertyName("allowJam")] public bool? AllowJam { get; set; } [JsonPropertyName("allowFeed")] public bool? AllowFeed { get; set; } [JsonPropertyName("allowMisfire")] public bool? AllowMisfire { get; set; } [JsonPropertyName("allowSlide")] public bool? AllowSlide { get; set; } [JsonPropertyName("durabilityBurnRatio")] public int? DurabilityBurnRatio { get; set; } [JsonPropertyName("heatFactorGun")] public int? HeatFactorGun { get; set; } [JsonPropertyName("coolFactorGun")] public int? CoolFactorGun { get; set; } [JsonPropertyName("coolFactorGunMods")] public int? CoolFactorGunMods { get; set; } [JsonPropertyName("heatFactorByShot")] public int? HeatFactorByShot { get; set; } [JsonPropertyName("allowOverheat")] public bool? AllowOverheat { get; set; } [JsonPropertyName("doubleActionAccuracyPenalty")] public int? DoubleActionAccuracyPenalty { get; set; } [JsonPropertyName("recoilPosZMult")] public int? RecoilPosZMult { get; set; } [JsonPropertyName("recoilReturnPathDampingHandRotation")] public int? RecoilReturnPathDampingHandRotation { get; set; } [JsonPropertyName("recoilReturnPathOffsetHandRotation")] public int? RecoilReturnPathOffsetHandRotation { get; set; } [JsonPropertyName("recoilReturnSpeedHandRotation")] public int? RecoilReturnSpeedHandRotation { get; set; } [JsonPropertyName("recoilStableAngleIncreaseStep")] public int? RecoilStableAngleIncreaseStep { get; set; } [JsonPropertyName("recoilStableIndexShot")] public int? RecoilStableIndexShot { get; set; } [JsonPropertyName("minRepairKitDegradation")] public int? MinRepairKitDegradation { get; set; } [JsonPropertyName("maxRepairKitDegradation")] public int? MaxRepairKitDegradation { get; set; } [JsonPropertyName("mountCameraSnapMultiplier")] public int? MountCameraSnapMultiplier { get; set; } [JsonPropertyName("mountHorizontalRecoilMultiplier")] public int? MountHorizontalRecoilMultiplier { get; set; } [JsonPropertyName("mountReturnSpeedHandMultiplier")] public int? MountReturnSpeedHandMultiplier { get; set; } [JsonPropertyName("mountVerticalRecoilMultiplier")] public int? MountVerticalRecoilMultiplier { get; set; } [JsonPropertyName("mountingHorizontalOutOfBreathMultiplier")] public int? MountingHorizontalOutOfBreathMultiplier { get; set; } [JsonPropertyName("mountingPosition")] public XYZ? MountingPosition { get; set; } [JsonPropertyName("mountingVerticalOutOfBreathMultiplier")] public XYZ? MountingVerticalOutOfBreathMultiplier { get; set; } [JsonPropertyName("blocksEarpiece")] public bool? BlocksEarpiece { get; set; } [JsonPropertyName("blocksEyewear")] public bool? BlocksEyewear { get; set; } [JsonPropertyName("blocksHeadwear")] public bool? BlocksHeadwear { get; set; } [JsonPropertyName("blocksFaceCover")] public bool? BlocksFaceCover { get; set; } [JsonPropertyName("indestructibility")] public int? Indestructibility { get; set; } [JsonPropertyName("headSegments")] public List? HeadSegments { get; set; } [JsonPropertyName("faceShieldComponent")] public bool? FaceShieldComponent { get; set; } [JsonPropertyName("faceShieldMask")] public string? FaceShieldMask { get; set; } [JsonPropertyName("materialType")] public string? MaterialType { get; set; } [JsonPropertyName("ricochetParams")] public XYZ? RicochetParams { get; set; } [JsonPropertyName("deafStrength")] public string? DeafStrength { get; set; } [JsonPropertyName("blindnessProtection")] public int? BlindnessProtection { get; set; } [JsonPropertyName("distortion")] public int? Distortion { get; set; } [JsonPropertyName("compressorTreshold")] public int? CompressorTreshold { get; set; } [JsonPropertyName("compressorAttack")] public int? CompressorAttack { get; set; } [JsonPropertyName("compressorRelease")] public int? CompressorRelease { get; set; } [JsonPropertyName("compressorGain")] public int? CompressorGain { get; set; } [JsonPropertyName("cutoffFreq")] public int? CutoffFreq { get; set; } [JsonPropertyName("resonance")] public int? Resonance { get; set; } [JsonPropertyName("rolloffMultiplier")] public int? RolloffMultiplier { get; set; } [JsonPropertyName("reverbVolume")] public int? ReverbVolume { get; set; } [JsonPropertyName("compressorVolume")] public int? CompressorVolume { get; set; } [JsonPropertyName("ambientVolume")] public int? AmbientVolume { get; set; } [JsonPropertyName("dryVolume")] public int? DryVolume { get; set; } [JsonPropertyName("highFrequenciesGain")] public int? HighFrequenciesGain { get; set; } [JsonPropertyName("foodUseTime")] public int? FoodUseTime { get; set; } [JsonPropertyName("foodEffectType")] public string? FoodEffectType { get; set; } [JsonPropertyName("stimulatorBuffs")] public string? StimulatorBuffs { get; set; } [JsonPropertyName("effects_health")] public object? EffectsHealth { get; set; } // TODO: object here [JsonPropertyName("effects_damage")] public Dictionary? EffectsDamage { get; set; } [JsonPropertyName("maximumNumberOfUsage")] public int? MaximumNumberOfUsage { get; set; } [JsonPropertyName("knifeHitDelay")] public int? KnifeHitDelay { get; set; } [JsonPropertyName("knifeHitSlashRate")] public int? KnifeHitSlashRate { get; set; } [JsonPropertyName("knifeHitStabRate")] public int? KnifeHitStabRate { get; set; } [JsonPropertyName("knifeHitRadius")] public int? KnifeHitRadius { get; set; } [JsonPropertyName("knifeHitSlashDam")] public int? KnifeHitSlashDam { get; set; } [JsonPropertyName("knifeHitStabDam")] public int? KnifeHitStabDam { get; set; } [JsonPropertyName("knifeDurab")] public int? KnifeDurab { get; set; } [JsonPropertyName("primaryDistance")] public int? PrimaryDistance { get; set; } [JsonPropertyName("secondryDistance")] public int? SecondryDistance { get; set; } [JsonPropertyName("slashPenetration")] public int? SlashPenetration { get; set; } [JsonPropertyName("stabPenetration")] public int? StabPenetration { get; set; } [JsonPropertyName("primaryConsumption")] public int? PrimaryConsumption { get; set; } [JsonPropertyName("secondryConsumption")] public int? SecondryConsumption { get; set; } [JsonPropertyName("deflectionConsumption")] public int? DeflectionConsumption { get; set; } [JsonPropertyName("appliedTrunkRotation")] public XYZ? AppliedTrunkRotation { get; set; } [JsonPropertyName("appliedHeadRotation")] public XYZ? AppliedHeadRotation { get; set; } [JsonPropertyName("displayOnModel")] public bool? DisplayOnModel { get; set; } [JsonPropertyName("additionalAnimationLayer")] public int? AdditionalAnimationLayer { get; set; } [JsonPropertyName("staminaBurnRate")] public int? StaminaBurnRate { get; set; } [JsonPropertyName("colliderScaleMultiplier")] public XYZ? ColliderScaleMultiplier { get; set; } [JsonPropertyName("configPathStr")] public string? ConfigPathStr { get; set; } [JsonPropertyName("maxMarkersCount")] public int? MaxMarkersCount { get; set; } [JsonPropertyName("scaleMin")] public int? ScaleMin { get; set; } [JsonPropertyName("scaleMax")] public int? ScaleMax { get; set; } [JsonPropertyName("medUseTime")] public int? MedUseTime { get; set; } [JsonPropertyName("medEffectType")] public string? MedEffectType { get; set; } [JsonPropertyName("maxHpResource")] public int? MaxHpResource { get; set; } [JsonPropertyName("hpResourceRate")] public int? HpResourceRate { get; set; } [JsonPropertyName("apResource")] public int? ApResource { get; set; } [JsonPropertyName("krResource")] public int? KrResource { get; set; } [JsonPropertyName("maxOpticZoom")] public int? MaxOpticZoom { get; set; } [JsonPropertyName("maxRepairResource")] public int? MaxRepairResource { get; set; } [JsonPropertyName("targetItemFilter")] public List? TargetItemFilter { get; set; } [JsonPropertyName("repairQuality")] public int? RepairQuality { get; set; } [JsonPropertyName("repairType")] public string? RepairType { get; set; } [JsonPropertyName("stackMinRandom")] public int? StackMinRandom { get; set; } [JsonPropertyName("stackMaxRandom")] public int? StackMaxRandom { get; set; } [JsonPropertyName("ammoType")] public string? AmmoType { get; set; } [JsonPropertyName("initialSpeed")] public int? InitialSpeed { get; set; } [JsonPropertyName("ballisticCoefficient")] public int? BallisticCoefficient { get; set; } [JsonPropertyName("bulletMassGram")] public int? BulletMassGram { get; set; } [JsonPropertyName("bulletDiameterMillimeters")] public int? BulletDiameterMillimeters { get; set; } [JsonPropertyName("damage")] public int? Damage { get; set; } [JsonPropertyName("ammoAccr")] public int? AmmoAccr { get; set; } [JsonPropertyName("ammoRec")] public int? AmmoRec { get; set; } [JsonPropertyName("ammoDist")] public int? AmmoDist { get; set; } [JsonPropertyName("buckshotBullets")] public int? BuckshotBullets { get; set; } [JsonPropertyName("penetrationPower")] public int? PenetrationPower { get; set; } [JsonPropertyName("penetrationPowerDeviation")] public int? PenetrationPowerDeviation { get; set; } [JsonPropertyName("ammoHear")] public int? AmmoHear { get; set; } [JsonPropertyName("ammoSfx")] public string? AmmoSfx { get; set; } [JsonPropertyName("misfireChance")] public int? MisfireChance { get; set; } [JsonPropertyName("minFragmentsCount")] public int? MinFragmentsCount { get; set; } [JsonPropertyName("maxFragmentsCount")] public int? MaxFragmentsCount { get; set; } [JsonPropertyName("ammoShiftChance")] public int? AmmoShiftChance { get; set; } [JsonPropertyName("casingName")] public string? CasingName { get; set; } [JsonPropertyName("casingEjectPower")] public int? CasingEjectPower { get; set; } [JsonPropertyName("casingMass")] public int? CasingMass { get; set; } [JsonPropertyName("casingSounds")] public string? CasingSounds { get; set; } [JsonPropertyName("projectileCount")] public int? ProjectileCount { get; set; } [JsonPropertyName("penetrationChanceObstacle")] public int? PenetrationChanceObstacle { get; set; } [JsonPropertyName("penetrationDamageMod")] public int? PenetrationDamageMod { get; set; } [JsonPropertyName("ricochetChance")] public int? RicochetChance { get; set; } [JsonPropertyName("fragmentationChance")] public int? FragmentationChance { get; set; } [JsonPropertyName("deterioration")] public int? Deterioration { get; set; } [JsonPropertyName("speedRetardation")] public int? SpeedRetardation { get; set; } [JsonPropertyName("tracer")] public bool? Tracer { get; set; } [JsonPropertyName("tracerColor")] public string? TracerColor { get; set; } [JsonPropertyName("tracerDistance")] public int? TracerDistance { get; set; } [JsonPropertyName("armorDamage")] public int? ArmorDamage { get; set; } [JsonPropertyName("caliber")] public string? Caliber { get; set; } [JsonPropertyName("staminaBurnPerDamage")] public int? StaminaBurnPerDamage { get; set; } [JsonPropertyName("heavyBleedingDelta")] public int? HeavyBleedingDelta { get; set; } [JsonPropertyName("lightBleedingDelta")] public int? LightBleedingDelta { get; set; } [JsonPropertyName("showBullet")] public bool? ShowBullet { get; set; } [JsonPropertyName("hasGrenaderComponent")] public bool? HasGrenaderComponent { get; set; } [JsonPropertyName("fuzeArmTimeSec")] public int? FuzeArmTimeSec { get; set; } [JsonPropertyName("explosionStrength")] public int? ExplosionStrength { get; set; } [JsonPropertyName("minExplosionDistance")] public int? MinExplosionDistance { get; set; } [JsonPropertyName("maxExplosionDistance")] public int? MaxExplosionDistance { get; set; } [JsonPropertyName("fragmentsCount")] public int? FragmentsCount { get; set; } [JsonPropertyName("fragmentType")] public string FragmentType { get; set; } [JsonPropertyName("showHitEffectOnExplode")] public bool? ShowHitEffectOnExplode { get; set; } [JsonPropertyName("explosionType")] public string? ExplosionType { get; set; } [JsonPropertyName("ammoLifeTimeSec")] public int? AmmoLifeTimeSec { get; set; } [JsonPropertyName("ammoTooltipClass")] public string AmmoTooltipClass { get; set; } [JsonPropertyName("contusion")] public XYZ? Contusion { get; set; } [JsonPropertyName("armorDistanceDistanceDamage")] public XYZ? ArmorDistanceDistanceDamage { get; set; } [JsonPropertyName("blindness")] public XYZ? Blindness { get; set; } [JsonPropertyName("isLightAndSoundShot")] public bool? IsLightAndSoundShot { get; set; } [JsonPropertyName("lightAndSoundShotAngle")] public int? LightAndSoundShotAngle { get; set; } [JsonPropertyName("lightAndSoundShotSelfContusionTime")] public int? LightAndSoundShotSelfContusionTime { get; set; } [JsonPropertyName("lightAndSoundShotSelfContusionStrength")] public int? LightAndSoundShotSelfContusionStrength { get; set; } [JsonPropertyName("malfMisfireChance")] public int? MalfMisfireChance { get; set; } [JsonPropertyName("malfFeedChance")] public int? MalfFeedChance { get; set; } [JsonPropertyName("stackSlots")] public List? StackSlots { get; set; } [JsonPropertyName("type")] public string? Type { get; set; } [JsonPropertyName("eqMin")] public int? EqMin { get; set; } [JsonPropertyName("eqMax")] public int? EqMax { get; set; } [JsonPropertyName("rate")] public int? Rate { get; set; } [JsonPropertyName("throwType")] public string? ThrowType { get; set; } [JsonPropertyName("explDelay")] public int? ExplDelay { get; set; } [JsonPropertyName("strength")] public int? Strength { get; set; } [JsonPropertyName("contusionDistance")] public int? ContusionDistance { get; set; } [JsonPropertyName("throwDamMax")] public int? ThrowDamMax { get; set; } [JsonPropertyName("emitTime")] public int? EmitTime { get; set; } [JsonPropertyName("canBeHiddenDuringThrow")] public bool? CanBeHiddenDuringThrow { get; set; } [JsonPropertyName("canPlantOnGround")] public bool? CanPlantOnGround { get; set; } [JsonPropertyName("minTimeToContactExplode")] public int? MinTimeToContactExplode { get; set; } [JsonPropertyName("explosionEffectType")] public string? ExplosionEffectType { get; set; } [JsonPropertyName("linkedWeapon")] public string? LinkedWeapon { get; set; } [JsonPropertyName("useAmmoWithoutShell")] public bool? UseAmmoWithoutShell { get; set; } [JsonPropertyName("randomLootSettings")] public RandomLootSettings? RandomLootSettings { get; set; } [JsonPropertyName("recoilDampingHandRotation")] public int? RecoilDampingHandRotation { get; set; } [JsonPropertyName("leanWeaponAgainstBody")] public bool? LeanWeaponAgainstBody { get; set; } [JsonPropertyName("removeShellAfterFire")] public bool? RemoveShellAfterFire { get; set; } [JsonPropertyName("repairStrategyTypes")] public List? RepairStrategyTypes { get; set; } [JsonPropertyName("isEncoded")] public bool? IsEncoded { get; set; } [JsonPropertyName("layoutName")] public string? LayoutName { get; set; } [JsonPropertyName("lower75Prefab")] public Prefab? Lower75Prefab { get; set; } [JsonPropertyName("maxUsages")] public int? MaxUsages { get; set; } [JsonPropertyName("scavKillExpPenalty")] public int? ScavKillExpPenalty { get; set; } [JsonPropertyName("scavKillExpPenaltyPVE")] public int? ScavKillExpPenaltyPVE { get; set; } [JsonPropertyName("scavKillStandingPenalty")] public int? ScavKillStandingPenalty { get; set; } [JsonPropertyName("scavKillStandingPenaltyPVE")] public int? ScavKillStandingPenaltyPVE { get; set; } [JsonPropertyName("tradersDiscount")] public int? TradersDiscount { get; set; } [JsonPropertyName("tradersDiscountPVE")] public int? TradersDiscountPVE { get; set; } } public class WeaponRecoilSettings { [JsonPropertyName("Enable")] public bool Enable { get; set; } [JsonPropertyName("values")] public List Values { get; set; } } public class WeaponRecoilSettingValues { [JsonPropertyName("Enable")] public bool Enable { get; set; } [JsonPropertyName("Process")] public WeaponRecoilProcess Process { get; set; } [JsonPropertyName("Target")] public string Target { get; set; } } public class WeaponRecoilProcess { [JsonPropertyName("ComponentType")] public string ComponentType { get; set; } [JsonPropertyName("CurveAimingValueMultiply")] public double CurveAimingValueMultiply { get; set; } [JsonPropertyName("CurveTimeMultiply")] public double CurveTimeMultiply { get; set; } [JsonPropertyName("CurveValueMultiply")] public double CurveValueMultiply { get; set; } [JsonPropertyName("TransformationCurve")] public WeaponRecoilTransformationCurve TransformationCurve { get; set; } } public class WeaponRecoilTransformationCurve { [JsonPropertyName("Keys")] public List Keys { get; set; } } public class WeaponRecoilTransformationCurveKey { [JsonPropertyName("inTangent")] public double? InTangent { get; set; } [JsonPropertyName("outTangent")] public double? OutTangent { get; set; } [JsonPropertyName("time")] public double? Time { get; set; } [JsonPropertyName("value")] public double? Value { get; set; } } public class HealthEffect { [JsonPropertyName("type")] public string? Type { get; set; } [JsonPropertyName("value")] public double? Value { get; set; } } public class Prefab { [JsonPropertyName("path")] public string? Path { get; set; } [JsonPropertyName("rcid")] public string? Rcid { get; set; } } public class Grid { [JsonPropertyName("_name")] public string? Name { get; set; } [JsonPropertyName("_id")] public string? Id { get; set; } [JsonPropertyName("_parent")] public string? Parent { get; set; } [JsonPropertyName("_props")] public GridProps? Props { get; set; } [JsonPropertyName("_proto")] public string? Proto { get; set; } } public class GridProps { [JsonPropertyName("filters")] public List? Filters { get; set; } [JsonPropertyName("cellsH")] public int? CellsH { get; set; } [JsonPropertyName("cellsV")] public int? CellsV { get; set; } [JsonPropertyName("minCount")] public int? MinCount { get; set; } [JsonPropertyName("maxCount")] public int? MaxCount { get; set; } [JsonPropertyName("maxWeight")] public int? MaxWeight { get; set; } [JsonPropertyName("isSortingTable")] public bool? IsSortingTable { get; set; } } public class GridFilter { [JsonPropertyName("Filter")] public List? Filter { get; set; } [JsonPropertyName("ExcludedFilter")] public List? ExcludedFilter { get; set; } [JsonPropertyName("locked")] public bool? Locked { get; set; } } public class Slot { [JsonPropertyName("_name")] public string? Name { get; set; } [JsonPropertyName("_id")] public string? Id { get; set; } [JsonPropertyName("_parent")] public string? Parent { get; set; } [JsonPropertyName("_props")] public SlotProps? Props { get; set; } [JsonPropertyName("_max_count")] public int? MaxCount { get; set; } [JsonPropertyName("_required")] public bool? Required { get; set; } [JsonPropertyName("_mergeSlotWithChildren")] public bool? MergeSlotWithChildren { get; set; } [JsonPropertyName("_proto")] public string? Proto { get; set; } } public class SlotProps { [JsonPropertyName("filters")] public List? Filters { get; set; } [JsonPropertyName("MaxStackCount")] public int? MaxStackCount { get; set; } } public class SlotFilter { [JsonPropertyName("Shift")] public int? Shift { get; set; } [JsonPropertyName("locked")] public bool? Locked { get; set; } [JsonPropertyName("Plate")] public string? Plate { get; set; } [JsonPropertyName("armorColliders")] public List? ArmorColliders { get; set; } [JsonPropertyName("armorPlateColliders")] public List? ArmorPlateColliders { get; set; } [JsonPropertyName("Filter")] public List? Filter { get; set; } [JsonPropertyName("AnimationIndex")] public int? AnimationIndex { get; set; } } public class StackSlot { [JsonPropertyName("_name")] public string? Name { get; set; } [JsonPropertyName("_id")] public string? Id { get; set; } [JsonPropertyName("_parent")] public string? Parent { get; set; } [JsonPropertyName("_max_count")] public int? MaxCount { get; set; } [JsonPropertyName("_props")] public StackSlotProps? Props { get; set; } [JsonPropertyName("_proto")] public string? Proto { get; set; } [JsonPropertyName("upd")] public object? Upd { get; set; } // TODO: object here } public class StackSlotProps { [JsonPropertyName("filters")] public List? Filters { get; set; } } public class RandomLootSettings { [JsonPropertyName("allowToSpawnIdenticalItems")] public bool? AllowToSpawnIdenticalItems { get; set; } [JsonPropertyName("allowToSpawnQuestItems")] public bool? AllowToSpawnQuestItems { get; set; } [JsonPropertyName("countByRarity")] public List? CountByRarity { get; set; } // TODO: object here [JsonPropertyName("excluded")] public RandomLootExcluded? Excluded { get; set; } [JsonPropertyName("filters")] public List? Filters { get; set; } // TODO: object here [JsonPropertyName("findInRaid")] public bool? FindInRaid { get; set; } [JsonPropertyName("maxCount")] public int? MaxCount { get; set; } [JsonPropertyName("minCount")] public int? MinCount { get; set; } } public class RandomLootExcluded { [JsonPropertyName("categoryTemplates")] public List? CategoryTemplates { get; set; } // TODO: object here [JsonPropertyName("rarity")] public List? Rarity { get; set; } [JsonPropertyName("templates")] public List? Templates { get; set; } // TODO: object here } public class EffectsHealth { [JsonPropertyName("Energy")] public EffectsHealthProps? Energy { get; set; } [JsonPropertyName("Hydration")] public EffectsHealthProps? Hydration { get; set; } } public class EffectsHealthProps { [JsonPropertyName("value")] public int? Value { get; set; } } public class EffectsDamage { [JsonPropertyName("Pain")] public EffectDamageProps? Pain { get; set; } [JsonPropertyName("LightBleeding")] public EffectDamageProps? LightBleeding { get; set; } [JsonPropertyName("HeavyBleeding")] public EffectDamageProps? HeavyBleeding { get; set; } [JsonPropertyName("Contusion")] public EffectDamageProps? Contusion { get; set; } [JsonPropertyName("RadExposure")] public EffectDamageProps? RadExposure { get; set; } [JsonPropertyName("Fracture")] public EffectDamageProps? Fracture { get; set; } [JsonPropertyName("DestroyedPart")] public EffectDamageProps? DestroyedPart { get; set; } } public class EffectDamageProps { [JsonPropertyName("delay")] public int? Delay { get; set; } [JsonPropertyName("duration")] public int? Duration { get; set; } [JsonPropertyName("fadeOut")] public int? FadeOut { get; set; } [JsonPropertyName("cost")] public int? Cost { get; set; } [JsonPropertyName("healthPenaltyMin")] public int? HealthPenaltyMin { get; set; } [JsonPropertyName("healthPenaltyMax")] public int? HealthPenaltyMax { get; set; } } public class Color { [JsonPropertyName("r")] public int? R { get; set; } [JsonPropertyName("g")] public int? G { get; set; } [JsonPropertyName("b")] public int? B { get; set; } [JsonPropertyName("a")] public int? A { get; set; } } public class ShotsGroupSettings { [JsonPropertyName("EndShotIndex")] public int? EndShotIndex { get; set; } [JsonPropertyName("ShotRecoilPositionStrength")] public XYZ? ShotRecoilPositionStrength { get; set; } [JsonPropertyName("ShotRecoilRadianRange")] public XYZ? ShotRecoilRadianRange { get; set; } [JsonPropertyName("ShotRecoilRotationStrength")] public XYZ? ShotRecoilRotationStrength { get; set; } [JsonPropertyName("StartShotIndex")] public int? StartShotIndex { get; set; } } public enum ItemType { NODE = 1, ITEM = 2, }