Files
SPT-Server-Build/Libraries/SPTarkov.Server.Core/Models/Eft/Hideout/HideoutArea.cs
T
2025-08-21 09:45:07 +00:00

204 lines
4.9 KiB
C#

using System.Text.Json.Serialization;
using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Models.Eft.Common.Tables;
using SPTarkov.Server.Core.Models.Enums;
namespace SPTarkov.Server.Core.Models.Eft.Hideout;
public record HideoutArea
{
[JsonPropertyName("_id")]
public MongoId Id { get; set; }
[JsonPropertyName("type")]
public HideoutAreas? Type { get; set; }
[JsonPropertyName("enabled")]
public bool? IsEnabled { get; set; }
[JsonPropertyName("needsFuel")]
public bool? NeedsFuel { get; set; }
[JsonPropertyName("requirements")]
public List<HideoutAreaRequirement>? Requirements { get; set; }
[JsonPropertyName("takeFromSlotLocked")]
public bool? IsTakeFromSlotLocked { get; set; }
[JsonPropertyName("craftGivesExp")]
public bool? CraftGivesExperience { get; set; }
[JsonPropertyName("displayLevel")]
public bool? DisplayLevel { get; set; }
[JsonPropertyName("enableAreaRequirements")]
public bool? EnableAreaRequirements { get; set; }
[JsonPropertyName("parentArea")]
public MongoId? ParentArea { get; set; }
[JsonPropertyName("stages")]
public Dictionary<string, Stage>? Stages { get; set; }
}
public record HideoutAreaRequirement
{
[JsonPropertyName("areaType")]
public int? AreaType { get; set; }
[JsonPropertyName("requiredLevel")]
public int? RequiredLevel { get; set; }
[JsonPropertyName("type")]
public string? Type { get; set; }
}
public record Stage
{
[JsonPropertyName("autoUpgrade")]
public bool? AutoUpgrade { get; set; }
[JsonPropertyName("bonuses")]
public List<Bonus>? Bonuses { get; set; }
[JsonPropertyName("constructionTime")]
public double? ConstructionTime { get; set; }
/// <summary>
/// Containers inventory tpl
/// </summary>
[JsonPropertyName("container")]
public MongoId? Container { get; set; }
[JsonPropertyName("description")]
public string? Description { get; set; }
[JsonPropertyName("globalCounterId")]
public string? GlobalCounterId { get; set; }
[JsonPropertyName("displayInterface")]
public bool? DisplayInterface { get; set; }
[JsonPropertyName("improvements")]
public List<StageImprovement>? Improvements { get; set; }
[JsonPropertyName("requirements")]
public List<StageRequirement>? Requirements { get; set; }
[JsonPropertyName("slots")]
public int? Slots { get; set; }
}
public record StageImprovement
{
[JsonPropertyName("id")]
public MongoId Id { get; set; }
[JsonPropertyName("bonuses")]
public List<StageImprovementBonus>? Bonuses { get; set; }
[JsonPropertyName("improvementTime")]
public double? ImprovementTime { get; set; }
[JsonPropertyName("requirements")]
public List<StageImprovementRequirement>? Requirements { get; set; }
}
public record StageImprovementBonus
{
[JsonPropertyName("id")]
public MongoId Id { get; set; }
[JsonPropertyName("passive")]
public bool? IsPassive { get; set; }
[JsonPropertyName("production")]
public bool? IsProduction { get; set; }
[JsonPropertyName("skillType")]
public SkillClass? SkillType { get; set; }
[JsonPropertyName("type")]
public string? Type { get; set; }
[JsonPropertyName("value")]
public double? Value { get; set; }
[JsonPropertyName("visible")]
public bool? IsVisible { get; set; }
}
public record StageImprovementRequirement
{
[JsonPropertyName("count")]
public int? Count { get; set; }
[JsonPropertyName("isEncoded")]
public bool? IsEncoded { get; set; }
[JsonPropertyName("isFunctional")]
public bool? IsFunctional { get; set; }
[JsonPropertyName("templateId")]
public MongoId TemplateId { get; set; }
[JsonPropertyName("isSpawnedInSession")]
public bool? IsSpawnedInSession { get; set; }
[JsonPropertyName("type")]
public string? Type { get; set; }
}
public record StageRequirement
{
[JsonPropertyName("areaType")]
public int? AreaType { get; set; }
[JsonPropertyName("requiredLevel")]
public int? RequiredLevel { get; set; }
[JsonPropertyName("templateId")]
public MongoId TemplateId { get; set; }
[JsonPropertyName("count")]
public int? Count { get; set; }
[JsonPropertyName("isEncoded")]
public bool? IsEncoded { get; set; } = false;
[JsonPropertyName("isFunctional")]
public bool? IsFunctional { get; set; }
[JsonPropertyName("traderId")]
public MongoId TraderId { get; set; }
[JsonPropertyName("isSpawnedInSession")]
public bool? IsSpawnedInSession { get; set; }
[JsonPropertyName("loyaltyLevel")]
public int? LoyaltyLevel { get; set; }
[JsonPropertyName("skillName")]
public string? SkillName { get; set; }
[JsonPropertyName("skillLevel")]
public int? SkillLevel { get; set; }
[JsonPropertyName("type")]
public string? Type { get; set; }
}