diff --git a/Libraries/SPTarkov.Server.Assets/SPT_Data/configs/quest.json b/Libraries/SPTarkov.Server.Assets/SPT_Data/configs/quest.json index 036e0964..ac68cc5c 100644 --- a/Libraries/SPTarkov.Server.Assets/SPT_Data/configs/quest.json +++ b/Libraries/SPTarkov.Server.Assets/SPT_Data/configs/quest.json @@ -518,7 +518,9 @@ ], "questConfig": { "Exploration": { + "minExtracts": 1, "maxExtracts": 4, + "minExtractsWithSpecificExit": 1, "maxExtractsWithSpecificExit": 2, "possibleSkillRewards": [ "Endurance", @@ -1606,8 +1608,10 @@ ], "questConfig": { "Exploration": { + "minExtracts": 5, "maxExtracts": 15, - "maxExtractsWithSpecificExit": 4, + "minExtractsWithSpecificExit": 3, + "maxExtractsWithSpecificExit": 7, "possibleSkillRewards": [ "Endurance", "Strength", @@ -2628,7 +2632,9 @@ "Strength", "Vitality" ], + "minExtracts": 1, "maxExtracts": 3, + "minExtractsWithSpecificExit": 1, "maxExtractsWithSpecificExit": 1, "specificExits": { "chance": 20, diff --git a/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGeneration/ExplorationQuestGenerator.cs b/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGeneration/ExplorationQuestGenerator.cs index 91e15ea0..c7730d71 100644 --- a/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGeneration/ExplorationQuestGenerator.cs +++ b/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGeneration/ExplorationQuestGenerator.cs @@ -116,10 +116,10 @@ public class ExplorationQuestGenerator( out LocationInfo? locationInfo ) { - if (pool.Pool?.Exploration?.Locations?.Count is null or 0) + if (pool.Pool.Exploration.Locations?.Count is null or 0) { // there are no more locations left for exploration; delete it as a possible quest type - pool.Types = pool.Types?.Where(t => t != "Exploration").ToList(); + pool.Types = pool.Types.Where(t => t != "Exploration").ToList(); locationInfo = null; return false; } @@ -129,7 +129,7 @@ public class ExplorationQuestGenerator( var locationKey = randomUtil.DrawRandomFromDict(pool.Pool.Exploration.Locations)[0]; // Make the location info object - var locationTarget = pool.Pool!.Exploration!.Locations![locationKey]; + var locationTarget = pool.Pool.Exploration.Locations![locationKey]; var requiresSpecificExtract = randomUtil.GetChance100(repeatableConfig.QuestConfig.Exploration.SpecificExits.Chance); @@ -146,15 +146,19 @@ public class ExplorationQuestGenerator( /// /// Get the number of times the player needs to exit /// - /// Exploration config + /// Exploration config /// Is this a specific extract /// Number of exit requirements - protected int GetNumberOfExits(Exploration config, bool requiresSpecificExtract) + protected int GetNumberOfExits(Exploration explorationConfig, bool requiresSpecificExtract) { - // Different max extract count when specific extract needed - var exitTimesMax = requiresSpecificExtract ? config.MaximumExtractsWithSpecificExit : config.MaximumExtracts + 1; + var exitTimesMin = requiresSpecificExtract ? explorationConfig.MinimumExtractsWithSpecificExit : explorationConfig.MinimumExtracts; - return randomUtil.RandInt(1, exitTimesMax); + // Different max extract count when specific extract needed + var exitTimesMax = requiresSpecificExtract + ? explorationConfig.MaximumExtractsWithSpecificExit + 1 + : explorationConfig.MaximumExtracts + 1; + + return randomUtil.RandInt(exitTimesMin, exitTimesMax); } /// diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Quest.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Quest.cs index 1d59015d..b6d5353e 100644 --- a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Quest.cs +++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Quest.cs @@ -329,7 +329,7 @@ public record QuestConditionCounter public record QuestConditionCounterCondition { [JsonPropertyName("id")] - public string? Id { get; set; } + public MongoId? Id { get; set; } [JsonPropertyName("dynamicLocale")] public bool? DynamicLocale { get; set; } diff --git a/Libraries/SPTarkov.Server.Core/Models/Spt/Config/QuestConfig.cs b/Libraries/SPTarkov.Server.Core/Models/Spt/Config/QuestConfig.cs index 24beed00..9bb6c15b 100644 --- a/Libraries/SPTarkov.Server.Core/Models/Spt/Config/QuestConfig.cs +++ b/Libraries/SPTarkov.Server.Core/Models/Spt/Config/QuestConfig.cs @@ -361,12 +361,24 @@ public record RepeatableQuestTypesConfig public record Exploration : BaseQuestConfig { + /// + /// Minimum extract count that a per map extract requirement can be generated with + /// + [JsonPropertyName("minExtracts")] + public required int MinimumExtracts { get; set; } + /// /// Maximum extract count that a per map extract requirement can be generated with /// [JsonPropertyName("maxExtracts")] public required int MaximumExtracts { get; set; } + /// + /// Minimum extract count that a specific extract can be generated with + /// + [JsonPropertyName("minExtractsWithSpecificExit")] + public required int MinimumExtractsWithSpecificExit { get; set; } + /// /// Maximum extract count that a specific extract can be generated with ///