442 lines
12 KiB
C#
442 lines
12 KiB
C#
using System.Text.Json.Serialization;
|
|
using Core.Models.Enums;
|
|
|
|
namespace Core.Models.Eft.Common.Tables;
|
|
|
|
public class Quest
|
|
{
|
|
/// <summary>
|
|
/// SPT addition - human readable quest name
|
|
/// </summary>
|
|
[JsonPropertyName("QuestName")]
|
|
public string? QuestName { get; set; }
|
|
|
|
[JsonPropertyName("_id")]
|
|
public string Id { get; set; }
|
|
|
|
[JsonPropertyName("canShowNotificationsInGame")]
|
|
public bool CanShowNotificationsInGame { get; set; }
|
|
|
|
[JsonPropertyName("conditions")]
|
|
public QuestConditionTypes Conditions { get; set; }
|
|
|
|
[JsonPropertyName("description")]
|
|
public string Description { get; set; }
|
|
|
|
[JsonPropertyName("failMessageText")]
|
|
public string FailMessageText { get; set; }
|
|
|
|
[JsonPropertyName("name")]
|
|
public string Name { get; set; }
|
|
|
|
[JsonPropertyName("note")]
|
|
public string Note { get; set; }
|
|
|
|
[JsonPropertyName("traderId")]
|
|
public string TraderId { get; set; }
|
|
|
|
[JsonPropertyName("location")]
|
|
public string Location { get; set; }
|
|
|
|
[JsonPropertyName("image")]
|
|
public string Image { get; set; }
|
|
|
|
[JsonPropertyName("type")]
|
|
public QuestTypeEnum Type { get; set; }
|
|
|
|
[JsonPropertyName("isKey")]
|
|
public bool IsKey { get; set; }
|
|
|
|
[JsonPropertyName("restartable")]
|
|
public bool Restartable { get; set; }
|
|
|
|
[JsonPropertyName("instantComplete")]
|
|
public bool InstantComplete { get; set; }
|
|
|
|
[JsonPropertyName("secretQuest")]
|
|
public bool SecretQuest { get; set; }
|
|
|
|
[JsonPropertyName("startedMessageText")]
|
|
public string StartedMessageText { get; set; }
|
|
|
|
[JsonPropertyName("successMessageText")]
|
|
public string SuccessMessageText { get; set; }
|
|
|
|
[JsonPropertyName("acceptPlayerMessage")]
|
|
public string? AcceptPlayerMessage { get; set; }
|
|
|
|
[JsonPropertyName("declinePlayerMessage")]
|
|
public string DeclinePlayerMessage { get; set; }
|
|
|
|
[JsonPropertyName("completePlayerMessage")]
|
|
public string? CompletePlayerMessage { get; set; }
|
|
|
|
[JsonPropertyName("templateId")]
|
|
public string? TemplateId { get; set; }
|
|
|
|
[JsonPropertyName("rewards")]
|
|
public QuestRewards Rewards { get; set; }
|
|
|
|
/// <summary>
|
|
/// Becomes 'AppearStatus' inside client
|
|
/// </summary>
|
|
[JsonPropertyName("status")]
|
|
public object? Status { get; set; } // TODO: string | number
|
|
|
|
[JsonPropertyName("KeyQuest")]
|
|
public bool? KeyQuest { get; set; }
|
|
|
|
[JsonPropertyName("changeQuestMessageText")]
|
|
public string ChangeQuestMessageText { get; set; }
|
|
|
|
/// <summary>
|
|
/// "Pmc" or "Scav"
|
|
/// </summary>
|
|
[JsonPropertyName("side")]
|
|
public string Side { get; set; }
|
|
|
|
[JsonPropertyName("acceptanceAndFinishingSource")]
|
|
public string AcceptanceAndFinishingSource { get; set; }
|
|
|
|
[JsonPropertyName("progressSource")]
|
|
public string ProgressSource { get; set; }
|
|
|
|
[JsonPropertyName("rankingModes")]
|
|
public List<string> RankingModes { get; set; }
|
|
|
|
[JsonPropertyName("gameModes")]
|
|
public List<string> GameModes { get; set; }
|
|
|
|
[JsonPropertyName("arenaLocations")]
|
|
public List<string> ArenaLocations { get; set; }
|
|
|
|
/// <summary>
|
|
/// Status of quest to player
|
|
/// </summary>
|
|
[JsonPropertyName("sptStatus")]
|
|
public QuestStatus? SptStatus { get; set; }
|
|
}
|
|
|
|
public class QuestConditionTypes
|
|
{
|
|
[JsonPropertyName("Started")]
|
|
public List<QuestCondition>? Started { get; set; }
|
|
|
|
[JsonPropertyName("AvailableForFinish")]
|
|
public List<QuestCondition> AvailableForFinish { get; set; }
|
|
|
|
[JsonPropertyName("AvailableForStart")]
|
|
public List<QuestCondition> AvailableForStart { get; set; }
|
|
|
|
[JsonPropertyName("Success")]
|
|
public List<QuestCondition>? Success { get; set; }
|
|
|
|
[JsonPropertyName("Fail")]
|
|
public List<QuestCondition> Fail { get; set; }
|
|
}
|
|
|
|
public class QuestCondition
|
|
{
|
|
[JsonPropertyName("id")]
|
|
public string Id { get; set; }
|
|
|
|
[JsonPropertyName("index")]
|
|
public int? Index { get; set; }
|
|
|
|
[JsonPropertyName("compareMethod")]
|
|
public string? CompareMethod { get; set; }
|
|
|
|
[JsonPropertyName("dynamicLocale")]
|
|
public bool DynamicLocale { get; set; }
|
|
|
|
[JsonPropertyName("visibilityConditions")]
|
|
public List<VisibilityCondition>? VisibilityConditions { get; set; }
|
|
|
|
[JsonPropertyName("globalQuestCounterId")]
|
|
public string? GlobalQuestCounterId { get; set; }
|
|
|
|
[JsonPropertyName("parentId")]
|
|
public string? ParentId { get; set; }
|
|
|
|
[JsonPropertyName("target")]
|
|
public object? Target { get; set; } // TODO: string[] | string
|
|
|
|
[JsonPropertyName("value")]
|
|
public object? Value { get; set; } // TODO: string | number
|
|
|
|
[JsonPropertyName("type")]
|
|
public object? Type { get; set; } // TODO: boolean | string
|
|
|
|
[JsonPropertyName("status")]
|
|
public List<QuestStatus>? Status { get; set; }
|
|
|
|
[JsonPropertyName("availableAfter")]
|
|
public int? AvailableAfter { get; set; }
|
|
|
|
[JsonPropertyName("dispersion")]
|
|
public double? Dispersion { get; set; }
|
|
|
|
[JsonPropertyName("onlyFoundInRaid")]
|
|
public bool? OnlyFoundInRaid { get; set; }
|
|
|
|
[JsonPropertyName("oneSessionOnly")]
|
|
public bool? OneSessionOnly { get; set; }
|
|
|
|
[JsonPropertyName("isResetOnConditionFailed")]
|
|
public bool? IsResetOnConditionFailed { get; set; }
|
|
|
|
[JsonPropertyName("isNecessary")]
|
|
public bool? IsNecessary { get; set; }
|
|
|
|
[JsonPropertyName("doNotResetIfCounterCompleted")]
|
|
public bool? DoNotResetIfCounterCompleted { get; set; }
|
|
|
|
[JsonPropertyName("dogtagLevel")]
|
|
public object? DogtagLevel { get; set; } // TODO: number | string
|
|
|
|
[JsonPropertyName("traderId")]
|
|
public string? TraderId { get; set; }
|
|
|
|
[JsonPropertyName("maxDurability")]
|
|
public object? MaxDurability { get; set; } // TODO: number | string
|
|
|
|
[JsonPropertyName("minDurability")]
|
|
public object? MinDurability { get; set; } // TODO: number | string
|
|
|
|
[JsonPropertyName("counter")]
|
|
public QuestConditionCounter? Counter { get; set; }
|
|
|
|
[JsonPropertyName("plantTime")]
|
|
public int? PlantTime { get; set; }
|
|
|
|
[JsonPropertyName("zoneId")]
|
|
public string? ZoneId { get; set; }
|
|
|
|
[JsonPropertyName("countInRaid")]
|
|
public bool? CountInRaid { get; set; }
|
|
|
|
[JsonPropertyName("completeInSeconds")]
|
|
public int? CompleteInSeconds { get; set; }
|
|
|
|
[JsonPropertyName("isEncoded")]
|
|
public bool? IsEncoded { get; set; }
|
|
|
|
[JsonPropertyName("conditionType")]
|
|
public string? ConditionType { get; set; }
|
|
}
|
|
|
|
public class QuestConditionCounter
|
|
{
|
|
[JsonPropertyName("id")]
|
|
public string Id { get; set; }
|
|
|
|
[JsonPropertyName("conditions")]
|
|
public List<QuestConditionCounterCondition> Conditions { get; set; }
|
|
}
|
|
|
|
public class QuestConditionCounterCondition
|
|
{
|
|
[JsonPropertyName("id")]
|
|
public string Id { get; set; }
|
|
|
|
[JsonPropertyName("dynamicLocale")]
|
|
public bool? DynamicLocale { get; set; }
|
|
|
|
[JsonPropertyName("target")]
|
|
public object? Target { get; set; } // TODO: string[] | string
|
|
|
|
[JsonPropertyName("completeInSeconds")]
|
|
public int? CompleteInSeconds { get; set; }
|
|
|
|
[JsonPropertyName("energy")]
|
|
public ValueCompare? Energy { get; set; }
|
|
|
|
[JsonPropertyName("exitName")]
|
|
public string? ExitName { get; set; }
|
|
|
|
[JsonPropertyName("hydration")]
|
|
public ValueCompare? Hydration { get; set; }
|
|
|
|
[JsonPropertyName("time")]
|
|
public ValueCompare? Time { get; set; }
|
|
|
|
[JsonPropertyName("compareMethod")]
|
|
public string? CompareMethod { get; set; }
|
|
|
|
[JsonPropertyName("value")]
|
|
public object? Value { get; set; } // TODO: number | string
|
|
|
|
[JsonPropertyName("weapon")]
|
|
public List<string>? Weapon { get; set; }
|
|
|
|
[JsonPropertyName("distance")]
|
|
public CounterConditionDistance? Distance { get; set; }
|
|
|
|
[JsonPropertyName("equipmentInclusive")]
|
|
public List<List<string>>? EquipmentInclusive { get; set; }
|
|
|
|
[JsonPropertyName("weaponModsInclusive")]
|
|
public List<List<string>>? WeaponModsInclusive { get; set; }
|
|
|
|
[JsonPropertyName("weaponModsExclusive")]
|
|
public List<List<string>>? WeaponModsExclusive { get; set; }
|
|
|
|
[JsonPropertyName("enemyEquipmentInclusive")]
|
|
public List<List<string>>? EnemyEquipmentInclusive { get; set; }
|
|
|
|
[JsonPropertyName("enemyEquipmentExclusive")]
|
|
public List<List<string>>? EnemyEquipmentExclusive { get; set; }
|
|
|
|
[JsonPropertyName("weaponCaliber")]
|
|
public List<string>? WeaponCaliber { get; set; }
|
|
|
|
[JsonPropertyName("savageRole")]
|
|
public List<string>? SavageRole { get; set; }
|
|
|
|
[JsonPropertyName("status")]
|
|
public List<string>? Status { get; set; }
|
|
|
|
[JsonPropertyName("bodyPart")]
|
|
public List<string>? BodyPart { get; set; }
|
|
|
|
[JsonPropertyName("daytime")]
|
|
public DaytimeCounter? Daytime { get; set; }
|
|
|
|
[JsonPropertyName("conditionType")]
|
|
public string? ConditionType { get; set; }
|
|
|
|
[JsonPropertyName("enemyHealthEffects")]
|
|
public List<EnemyHealthEffect>? EnemyHealthEffects { get; set; }
|
|
|
|
[JsonPropertyName("resetOnSessionEnd")]
|
|
public bool? ResetOnSessionEnd { get; set; }
|
|
}
|
|
|
|
public class EnemyHealthEffect
|
|
{
|
|
[JsonPropertyName("bodyParts")]
|
|
public List<string> BodyParts { get; set; }
|
|
|
|
[JsonPropertyName("effects")]
|
|
public List<string> Effects { get; set; }
|
|
}
|
|
|
|
public class ValueCompare
|
|
{
|
|
[JsonPropertyName("compareMethod")]
|
|
public string CompareMethod { get; set; }
|
|
|
|
[JsonPropertyName("value")]
|
|
public int Value { get; set; }
|
|
}
|
|
|
|
public class CounterConditionDistance
|
|
{
|
|
[JsonPropertyName("value")]
|
|
public int Value { get; set; }
|
|
|
|
[JsonPropertyName("compareMethod")]
|
|
public string CompareMethod { get; set; }
|
|
}
|
|
|
|
public class DaytimeCounter
|
|
{
|
|
[JsonPropertyName("from")]
|
|
public int From { get; set; }
|
|
|
|
[JsonPropertyName("to")]
|
|
public int To { get; set; }
|
|
}
|
|
|
|
public class VisibilityCondition
|
|
{
|
|
[JsonPropertyName("id")]
|
|
public string Id { get; set; }
|
|
|
|
[JsonPropertyName("target")]
|
|
public string Target { get; set; }
|
|
|
|
[JsonPropertyName("value")]
|
|
public int? Value { get; set; }
|
|
|
|
[JsonPropertyName("dynamicLocale")]
|
|
public bool? DynamicLocale { get; set; }
|
|
|
|
[JsonPropertyName("oneSessionOnly")]
|
|
public bool? OneSessionOnly { get; set; }
|
|
|
|
[JsonPropertyName("conditionType")]
|
|
public string ConditionType { get; set; }
|
|
}
|
|
|
|
public class QuestRewards
|
|
{
|
|
[JsonPropertyName("AvailableForStart")]
|
|
public List<QuestReward> AvailableForStart { get; set; }
|
|
|
|
[JsonPropertyName("AvailableForFinish")]
|
|
public List<QuestReward> AvailableForFinish { get; set; }
|
|
|
|
[JsonPropertyName("Started")]
|
|
public List<QuestReward> Started { get; set; }
|
|
|
|
[JsonPropertyName("Success")]
|
|
public List<QuestReward> Success { get; set; }
|
|
|
|
[JsonPropertyName("Fail")]
|
|
public List<QuestReward> Fail { get; set; }
|
|
|
|
[JsonPropertyName("FailRestartable")]
|
|
public List<QuestReward> FailRestartable { get; set; }
|
|
|
|
[JsonPropertyName("Expired")]
|
|
public List<QuestReward> Expired { get; set; }
|
|
}
|
|
|
|
public class QuestReward
|
|
{
|
|
[JsonPropertyName("value")]
|
|
public object Value { get; set; } // TODO: Can be either string or number
|
|
|
|
[JsonPropertyName("id")]
|
|
public string Id { get; set; }
|
|
|
|
[JsonPropertyName("type")]
|
|
public QuestRewardType Type { get; set; }
|
|
|
|
[JsonPropertyName("index")]
|
|
public int Index { get; set; }
|
|
|
|
[JsonPropertyName("target")]
|
|
public string Target { get; set; }
|
|
|
|
[JsonPropertyName("items")]
|
|
public List<Item> Items { get; set; }
|
|
|
|
[JsonPropertyName("loyaltyLevel")]
|
|
public int? LoyaltyLevel { get; set; }
|
|
|
|
/** Hideout area id */
|
|
[JsonPropertyName("traderId")]
|
|
public string TraderId { get; set; }
|
|
|
|
[JsonPropertyName("isEncoded")]
|
|
public bool? IsEncoded { get; set; }
|
|
|
|
[JsonPropertyName("unknown")]
|
|
public bool? Unknown { get; set; }
|
|
|
|
[JsonPropertyName("findInRaid")]
|
|
public bool? FindInRaid { get; set; }
|
|
|
|
[JsonPropertyName("gameMode")]
|
|
public List<string> GameMode { get; set; }
|
|
|
|
/** Game editions whitelisted to get reward */
|
|
[JsonPropertyName("availableInGameEditions")]
|
|
public List<string> AvailableInGameEditions { get; set; }
|
|
|
|
/** Game editions blacklisted from getting reward */
|
|
[JsonPropertyName("notAvailableInGameEditions")]
|
|
public List<string> NotAvailableInGameEditions { get; set; }
|
|
} |