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
///