Merge pull request 'Update to closer match the Tarkov Wiki + Tooling improvements' (#1) from DrakiaXYZ/ChompQuestVerifier:master into master

Reviewed-on: chomp/ChompQuestVerifier#1
This commit is contained in:
chomp 2023-05-11 08:59:45 +00:00
commit d2015be152
6 changed files with 474 additions and 60 deletions

View File

@ -103,6 +103,9 @@ namespace GenerateQuestFile
{
AddMissingFailRewards(originalQuest, quest);
}
// To make diffs more sane, copy the random IDs from the existing quests.json if possible
CopyExistingRandomIds(originalQuest, quest.Value);
}
// Iterate over quest objects a final time and add hard coded quest requirements if they dont already exist
@ -125,13 +128,15 @@ namespace GenerateQuestFile
&& x._props.target.ToString() == requirement.Quest.Id))
{
LoggingHelpers.LogSuccess($"{quest.Value.QuestName} needs a prereq of quest {requirement.Quest.Name}, adding.");
string hashData = quest.Value._id + requirement.Quest.Id;
quest.Value.conditions.AvailableForStart.Add(new AvailableFor
{
_parent = "Quest",
_props = new AvailableForProps
{
id = Sha256(new DateTime().ToString()),
index = quest.Value.conditions.AvailableForStart.Count,
id = Sha256(hashData),
index = GetNextIndex(quest.Value.conditions.AvailableForStart.LastOrDefault()?._props?.index),
parentId = "",
status = GetQuestStatus(requirement.QuestStatus),
target = requirement.Quest.Id,
@ -150,19 +155,30 @@ namespace GenerateQuestFile
}
}
if (requirement.PreReqType == PreRequisiteType.RemoveQuest)
{
if (quest.Value.conditions.AvailableForStart.RemoveAll(x =>
x._parent == "Quest" && x._props.target.ToString() == requirement.Quest.Id) > 0)
{
LoggingHelpers.LogSuccess($"{quest.Value.QuestName} required {requirement.Quest.Name}, removing.");
}
}
if (requirement.PreReqType == PreRequisiteType.Level)
{
if (!quest.Value.conditions.AvailableForStart.Any(x => x._parent == "Level"
&& int.Parse((string)x._props.value) == requirement.Level))
&& int.Parse(x._props.value.ToString()) == requirement.Level))
{
LoggingHelpers.LogSuccess($"{quest.Value.QuestName} needs a prereq of level {requirement.Level}, adding.");
string hashData = quest.Value._id + "Level";
quest.Value.conditions.AvailableForStart.Add(new AvailableFor
{
_parent = "Level",
_props = new AvailableForProps
{
id = Sha256(new DateTime().ToString()),
index = quest.Value.conditions.AvailableForStart.Count,
id = Sha256(hashData),
index = GetNextIndex(quest.Value.conditions.AvailableForStart.LastOrDefault()?._props?.index),
parentId = "",
dynamicLocale = false,
value = requirement.Level,
@ -173,6 +189,21 @@ namespace GenerateQuestFile
);
}
}
if (requirement.PreReqType == PreRequisiteType.RemoveLevel)
{
if (quest.Value.conditions.AvailableForStart.RemoveAll(x => x._parent == "Level") > 0)
{
LoggingHelpers.LogSuccess($"{quest.Value.QuestName} required level {requirement.Level}, removing.");
}
}
}
// To make diffs more sane, copy the random IDs from the existing quests.json if possible
var originalQuest = existingQuestData.FirstOrDefault(x => x.Key == quest.Key).Value;
if (originalQuest != null)
{
CopyExistingRandomIds(originalQuest, quest.Value);
}
}
OutputQuestRequirementsToConsole2(questsToOutputToFile);
@ -281,6 +312,80 @@ namespace GenerateQuestFile
}
}
private static void CopyExistingRandomIds(Quest originalQuest, Quest quest)
{
CopyRewardRandomIds(originalQuest.rewards.Started, quest.rewards.Started);
CopyRewardRandomIds(originalQuest.rewards.Success, quest.rewards.Success);
CopyRewardRandomIds(originalQuest.rewards.Fail, quest.rewards.Fail);
CopyConditionRandomIds(originalQuest.conditions.AvailableForStart, quest.conditions.AvailableForStart);
CopyConditionRandomIds(originalQuest.conditions.AvailableForFinish, quest.conditions.AvailableForFinish);
}
private static void CopyRewardRandomIds(List<RewardStatus> originalRewards, List<RewardStatus> rewards)
{
foreach (var reward in rewards)
{
var originalReward = originalRewards.FirstOrDefault(x => x.id == reward.id);
if (originalReward == null)
{
LoggingHelpers.LogWarning($"Unable to find matching original reward for {reward.id}. Skipping.");
continue;
}
reward.target = originalReward.target;
if (reward.items != null)
{
foreach (var item in reward.items)
{
QuestRewardItem originalItem = originalReward.items.FirstOrDefault(x => x._tpl == item._tpl && x.slotId == item.slotId);
if (originalItem == null)
{
LoggingHelpers.LogWarning($"Unable to find matching original reward item for {reward.id}-{item._tpl}. Skipping");
continue;
}
item._id = originalItem._id;
item.parentId = originalItem.parentId;
}
}
}
}
// Allow stripping all whitespace in a string, used for comparing _props.target, which may have differing whitespace but still match
private static readonly Regex whitespace = new Regex(@"\s+");
private static string StripAllWhitespace(string input)
{
if (input == null)
{
return "";
}
return whitespace.Replace(input, "");
}
private static void CopyConditionRandomIds(List<AvailableFor> originalConditions, List<AvailableFor> conditions)
{
foreach (var condition in conditions)
{
var originalCondition = originalConditions.FirstOrDefault(
x => x._parent == condition._parent &&
x._props.index == condition._props.index &&
StripAllWhitespace(x._props.target?.ToString()) == StripAllWhitespace(condition._props.target?.ToString()) &&
x._props.counter?.id == condition._props.counter?.id
);
if (originalCondition == null)
{
LoggingHelpers.LogWarning($"Unable to find matching original condition for {condition._parent}-{StripAllWhitespace(condition._props.target?.ToString())}. Skipping.");
continue;
}
condition._props.id = originalCondition._props.id;
}
}
/// <summary>
/// Check original quest for start conditions and if missing from new quest, add them
/// </summary>
@ -308,7 +413,6 @@ namespace GenerateQuestFile
if (questRequirementToAdd._parent == "Quest")
{
LoggingHelpers.LogInfo($"Quest {questToUpdate.Value.QuestName} missing AvailableForStart quest requirement, adding prereq of {questRequirementToAdd._props.target} {QuestHelper.GetQuestNameById(questRequirementToAdd._props.target?.ToString())}");
questRequirementToAdd._props.id = Sha256(new DateTime().ToString());
if (!questRequirementToAdd._props.availableAfter.HasValue)
{
@ -320,7 +424,7 @@ namespace GenerateQuestFile
questRequirementToAdd._props.visibilityConditions = new List<object>();
}
questRequirementToAdd._props.index = questToUpdate.Value.conditions.AvailableForStart.Count;
questRequirementToAdd._props.index = GetNextIndex(questToUpdate.Value.conditions.AvailableForStart.LastOrDefault()?._props?.index);
}
@ -391,5 +495,15 @@ namespace GenerateQuestFile
return missingQuestsToReturn;
}
private static int GetNextIndex(int? previousIndex)
{
if (previousIndex == null)
{
return 0;
}
return previousIndex.Value + 1;
}
}
}

View File

@ -187,7 +187,7 @@ namespace QuestValidator.Common.Helpers
{ Quest.TheSurvivalistPathJunkie, "5eaaaa7c93afa0558f3b5a1c"},
{ Quest.HuntsmanPathSecuredPerimeter, "5d25e2b486f77409de05bba0"},
{ Quest.HuntsmanPathTheTrophy, "5d25e2c386f77443e7549029"},
{ Quest.HuntsmanPathWoodsCleaning, "5d25e2cc86f77443e47ae019"},
{ Quest.HuntsmanPathForestCleaning, "5d25e2cc86f77443e47ae019"},
{ Quest.HuntsmanPathController, "5d25e2d886f77442734d335e"},
{ Quest.HuntsmanPathSellOut, "5d25e2e286f77444001e2e48"},
{ Quest.HuntsmanPathWoodsKeeper, "5d25e2ee86f77443e35162ea"},
@ -224,7 +224,7 @@ namespace QuestValidator.Common.Helpers
{ Quest.TheChemistryCloset, "5f04886a3937dc337a6b8238"},
{ Quest.SearchMission, "5fd9fad9c1ce6b1a3b486d00"},
{ Quest.Hunter, "600302d73b897b11364cd161"},
{ Quest.Revision, "6086c852c945025d41566124"},
{ Quest.RevisionReserve, "6086c852c945025d41566124"},
{ Quest.PestControl, "608a768d82e40b3c727fd17d"},
{ Quest.BackDoor, "6089736efa70fc097863b8f6"},
{ Quest.SafeCorridor, "6089743983426423753cd58a"},
@ -257,7 +257,7 @@ namespace QuestValidator.Common.Helpers
{ Quest.Counteraction, "6179b5eabca27a099552e052" },
{ Quest.HuntsmanPathOutcasts, "6179ad0a6e9dd54ac275e3f2" },
{ Quest.MissingCargo, "6179b4f16e9dd54ac275e407" },
{ Quest.RevisionPart2, "6179b4d1bca27a099552e04e" },
{ Quest.RevisionLighthouse, "6179b4d1bca27a099552e04e" },
{ Quest.OurOwnLand, "6179b5b06e9dd54ac275e409" },
{ Quest.TheHermit, "61904daa7d0d857927447b9c" },
{ Quest.LongRoad, "6193850f60b34236ee0483de" },
@ -416,7 +416,7 @@ private static readonly Dictionary<string, string> questNames = new Dictionary<s
{ "5ac2426c86f774138762edfe", "Gunsmith Part 2"},
{ "5ac2428686f77412450b42bf", "Gunsmith Part 3"},
{ "5ae3267986f7742a413592fe", "Gunsmith Part 5"},
{ "5ae3277186f7745973054106", "Gunsmith Part 6"},
{ "5ae3277186f7745973054106", "Gunsmith Part 8"},
{ "639872f9decada40426d3447", "Gunsmith Part 4"},
{ "5ac345dc86f774288030817f", "Farming Part 1"},
{ "5ac3460c86f7742880308185", "Farming Part 2"},
@ -430,7 +430,7 @@ private static readonly Dictionary<string, string> questNames = new Dictionary<s
{ "5ac3477486f7741d651d6885", "Scout"},
{ "5ac3479086f7742880308199", "Insider"},
{ "5ac244eb86f7741356335af1", "Gunsmith Part 7"},
{ "5ae3270f86f77445ba41d4dd", "Gunsmith Part 8"},
{ "5ae3270f86f77445ba41d4dd", "Gunsmith Part 6"},
{ "639872fa9b4fb827b200d8e5", "Gunsmith Part 9"},
{ "5ae327c886f7745c7b3f2f3f", "Gunsmith Part 10"},
{ "639872fc93ae507d5858c3a6", "Gunsmith Part 11"},
@ -517,7 +517,7 @@ private static readonly Dictionary<string, string> questNames = new Dictionary<s
{ "5eaaaa7c93afa0558f3b5a1c", "The survivalist path Junkie" },
{ "5d25e2b486f77409de05bba0", "Huntsman path Secured perimeter" },
{ "5d25e2c386f77443e7549029", "Huntsman path The trophy" },
{ "5d25e2cc86f77443e47ae019", "Huntsman path Woods cleaning" },
{ "5d25e2cc86f77443e47ae019", "Huntsman path Forest cleaning" },
{ "5d25e2d886f77442734d335e", "Huntsman path Controller" },
{ "5d25e2e286f77444001e2e48", "Huntsman path Sell-out" },
{ "5d25e2ee86f77443e35162ea", "Huntsman path Woods keeper" },
@ -555,7 +555,7 @@ private static readonly Dictionary<string, string> questNames = new Dictionary<s
{ "5f04886a3937dc337a6b8238", "The chemistry closet"},
{ "5fd9fad9c1ce6b1a3b486d00", "Search Mission"},
{ "600302d73b897b11364cd161", "Hunter"},
{ "6086c852c945025d41566124", "Revision"},
{ "6086c852c945025d41566124", "Revision - Reserve"},
{ "608a768d82e40b3c727fd17d", "Pest control"},
{ "6089736efa70fc097863b8f6", "Back door"},
{ "6089743983426423753cd58a", "Safe corridor"},
@ -587,7 +587,7 @@ private static readonly Dictionary<string, string> questNames = new Dictionary<s
{ "6179b5eabca27a099552e052", "Counteraction" },
{ "6179ad0a6e9dd54ac275e3f2", "Huntsman Path Outcasts" },
{ "6179b4f16e9dd54ac275e407", "Missing Cargo" },
{ "6179b4d1bca27a099552e04e", "Revision Part 2" },
{ "6179b4d1bca27a099552e04e", "Revision - Lighthouse" },
{ "6179b5b06e9dd54ac275e409", "Our Own Land" },
{ "61904daa7d0d857927447b9c", "The Hermit" },
{ "6193850f60b34236ee0483de", "Long Road" },

View File

@ -28,6 +28,20 @@ namespace QuestValidator.Common.Helpers
return this;
}
public QuestData RemovePrerequisiteQuest(Quest quest)
{
(PreRequisites ??= new List<PreRequisite>()).Add(new PreRequisite { PreReqType = PreRequisiteType.RemoveQuest, Quest = GetQuestData(quest) });
return this;
}
public QuestData RemovePrerequisiteLevel()
{
(PreRequisites ??= new List<PreRequisite>()).Add(new PreRequisite { PreReqType = PreRequisiteType.RemoveLevel });
return this;
}
}
public class PreRequisite
@ -76,14 +90,16 @@ namespace QuestValidator.Common.Helpers
{ Quest.GeneralWares, GetQuestData(Quest.GeneralWares)
.AddPrerequisiteQuest(Quest.Pharmacist, QuestStatus.Success)},
{ Quest.SanitaryStandardsP2, GetQuestData(Quest.SanitaryStandardsP2)
.AddPrerequisiteQuest(Quest.SanitaryStandardsP1, QuestStatus.Success)},
.AddPrerequisiteQuest(Quest.SanitaryStandardsP1, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.OperationAquariusP2, QuestStatus.Success)},
{ Quest.CarRepair, GetQuestData(Quest.CarRepair)
.AddPrerequisiteQuest(Quest.Pharmacist, QuestStatus.Success)},
{ Quest.Supplier, GetQuestData(Quest.Supplier)},
{ Quest.TheExtortionist, GetQuestData(Quest.TheExtortionist)
.AddPrerequisiteQuest(Quest.Supplier, QuestStatus.Success)},
{ Quest.Stirrup, GetQuestData(Quest.Stirrup)
.AddPrerequisiteQuest(Quest.TheExtortionist, QuestStatus.Success) },
.RemovePrerequisiteQuest(Quest.TheExtortionist)
.AddPrerequisiteQuest(Quest.Supplier, QuestStatus.Success)},
{ Quest.WhatsOnTheFlashDrive, GetQuestData(Quest.WhatsOnTheFlashDrive)
.AddPrerequisiteQuest(Quest.TheExtortionist, QuestStatus.Success) },
{ Quest.GoldenSwag, GetQuestData(Quest.GoldenSwag)
@ -122,6 +138,7 @@ namespace QuestValidator.Common.Helpers
{ Quest.TrustRegain, GetQuestData(Quest.TrustRegain)
.AddPrerequisiteQuest(Quest.OutOfCuriosity, QuestStatus.Fail) },
{ Quest.LoyaltyBuyout, GetQuestData(Quest.LoyaltyBuyout)
.RemovePrerequisiteQuest(Quest.OutOfCuriosity)
.AddPrerequisiteQuest(Quest.ChemicalP4, QuestStatus.Fail) },
{ Quest.NoOffence, GetQuestData(Quest.NoOffence)
.AddPrerequisiteQuest(Quest.BigCustomer, QuestStatus.Fail) },
@ -151,7 +168,8 @@ namespace QuestValidator.Common.Helpers
.AddPrerequisiteQuest(Quest.EagleEye, QuestStatus.Success) },
{ Quest.TheCultP1, GetQuestData(Quest.TheCultP1)
.AddPrerequisiteQuest(Quest.HumanitarianSupplies, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.EagleEye, QuestStatus.Success)},
.RemovePrerequisiteQuest(Quest.EagleEye)
.AddPrerequisiteQuest(Quest.FriendFromTheWestP2, QuestStatus.Success)},
{ Quest.TheCultP2, GetQuestData(Quest.TheCultP2)
.AddPrerequisiteQuest(Quest.TheCultP1, QuestStatus.Success) },
{ Quest.CargoXP1, GetQuestData(Quest.CargoXP1)
@ -206,6 +224,7 @@ namespace QuestValidator.Common.Helpers
{ Quest.GunsmithP7, GetQuestData(Quest.GunsmithP7)
.AddPrerequisiteQuest(Quest.GunsmithP6, QuestStatus.Success) },
{ Quest.GunsmithP8, GetQuestData(Quest.GunsmithP8)
.RemovePrerequisiteQuest(Quest.GunsmithP6)
.AddPrerequisiteQuest(Quest.GunsmithP7, QuestStatus.Success) },
{ Quest.GunsmithP9, GetQuestData(Quest.GunsmithP9)
.AddPrerequisiteQuest(Quest.GunsmithP8, QuestStatus.Success) },
@ -266,6 +285,7 @@ namespace QuestValidator.Common.Helpers
{ Quest.DressedToKill, GetQuestData(Quest.DressedToKill)
.AddPrerequisiteQuest(Quest.TheBloodOfWarP1, QuestStatus.Success) },
{ Quest.DatabaseP1, GetQuestData(Quest.DatabaseP1)
.AddPrerequisiteQuest(Quest.MakeUltraGreatAgain, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.BigSale, QuestStatus.Success) },
{ Quest.DatabaseP2, GetQuestData(Quest.DatabaseP2)
.AddPrerequisiteQuest(Quest.DatabaseP1, QuestStatus.Success) },
@ -306,7 +326,8 @@ namespace QuestValidator.Common.Helpers
{ Quest.Chumming, GetQuestData(Quest.Chumming)
.AddPrerequisiteQuest(Quest.InformedMeansArmed, QuestStatus.Success) },
{ Quest.TheTarkovShooterP1, GetQuestData(Quest.TheTarkovShooterP1)
.AddPrerequisiteQuest(Quest.TheSurvivalistPathUnprotectedButDangerous, QuestStatus.Success) },
.RemovePrerequisiteQuest(Quest.TheSurvivalistPathUnprotectedButDangerous)
.AddPrerequisiteQuest(Quest.Acquaintance, QuestStatus.Success) },
{ Quest.TheTarkovShooterP2, GetQuestData(Quest.TheTarkovShooterP2)
.AddPrerequisiteQuest(Quest.TheTarkovShooterP1, QuestStatus.Success) },
{ Quest.TheTarkovShooterP3, GetQuestData(Quest.TheTarkovShooterP3)
@ -324,6 +345,7 @@ namespace QuestValidator.Common.Helpers
{ Quest.Bullshit, GetQuestData(Quest.Bullshit)
.AddPrerequisiteQuest(Quest.SilentCaliber, QuestStatus.Success) },
{ Quest.SilentCaliber, GetQuestData(Quest.SilentCaliber)
.AddPrerequisiteLevel(30)
.AddPrerequisiteQuest(Quest.Chumming, QuestStatus.Success) },
{ Quest.Insomnia, GetQuestData(Quest.Insomnia)
.AddPrerequisiteQuest(Quest.Grenadier, QuestStatus.Success) },
@ -340,18 +362,21 @@ namespace QuestValidator.Common.Helpers
{ Quest.Athlete, GetQuestData(Quest.Athlete)
.AddPrerequisiteQuest(Quest.HealthCarePrivacyP4, QuestStatus.Success) },
{ Quest.LendLeaseP1, GetQuestData(Quest.LendLeaseP1)
.AddPrerequisiteQuest(Quest.FriendFromTheWestP2, QuestStatus.Success) },
.RemovePrerequisiteQuest(Quest.FriendFromTheWestP2)
.AddPrerequisiteQuest(Quest.HumanitarianSupplies, QuestStatus.Success) },
{ Quest.LendLeaseP2, GetQuestData(Quest.LendLeaseP2)
.AddPrerequisiteQuest(Quest.LendLeaseP1, QuestStatus.Success) },
{ Quest.Grenadier, GetQuestData(Quest.Grenadier)
.AddPrerequisiteQuest(Quest.ShakingUpTeller, QuestStatus.Success) },
{ Quest.DecontaminationService, GetQuestData(Quest.DecontaminationService)
.AddPrerequisiteQuest(Quest.HealthCarePrivacyP5, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.PrivateClinic, QuestStatus.Success) },
{ Quest.PeacekeepingMission, GetQuestData(Quest.PeacekeepingMission)
.AddPrerequisiteQuest(Quest.LendLeaseP2, QuestStatus.Success) },
{ Quest.TheGuide, GetQuestData(Quest.TheGuide)
.AddPrerequisiteQuest(Quest.WetJobP6, QuestStatus.Success) },
{ Quest.TheBloodOfWarP1, GetQuestData(Quest.TheBloodOfWarP1)
.AddPrerequisiteQuest(Quest.MakeUltraGreatAgain, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.BigSale, QuestStatus.Success) },
{ Quest.TheBloodOfWarP2, GetQuestData(Quest.TheBloodOfWarP2)
.AddPrerequisiteQuest(Quest.SewItGoodP1, QuestStatus.Success) },
@ -370,8 +395,6 @@ namespace QuestValidator.Common.Helpers
.AddPrerequisiteQuest(Quest.ShakingUpTeller, QuestStatus.Success) },
{ Quest.Import, GetQuestData(Quest.Import)
.AddPrerequisiteQuest(Quest.FarmingP4, QuestStatus.Success) },
{ Quest.Collector, GetQuestData(Quest.Collector)
.AddPrerequisiteLevel(50)},
{ Quest.Introduction, GetQuestData(Quest.Introduction)
.AddPrerequisiteQuest(Quest.GunsmithP1, QuestStatus.Started)},
{ Quest.Acquaintance, GetQuestData(Quest.Acquaintance)
@ -393,36 +416,38 @@ namespace QuestValidator.Common.Helpers
{ Quest.TheSurvivalistPathCombatMedic, GetQuestData(Quest.TheSurvivalistPathCombatMedic)
.AddPrerequisiteQuest(Quest.TheSurvivalistPathEagleOwl, QuestStatus.Success) },
{ Quest.TheSurvivalistPathJunkie, GetQuestData(Quest.TheSurvivalistPathJunkie)
.AddPrerequisiteQuest(Quest.TheSurvivalistPathColdBlooded, QuestStatus.Success) },
.RemovePrerequisiteQuest(Quest.TheSurvivalistPathColdBlooded)
.AddPrerequisiteQuest(Quest.TheSurvivalistPathCombatMedic, QuestStatus.Success) },
{ Quest.HuntsmanPathSecuredPerimeter, GetQuestData(Quest.HuntsmanPathSecuredPerimeter)
.AddPrerequisiteQuest(Quest.TheTarkovShooterP3, QuestStatus.Success) },
{ Quest.HuntsmanPathTheTrophy, GetQuestData(Quest.HuntsmanPathTheTrophy)
.AddPrerequisiteQuest(Quest.HuntsmanPathSecuredPerimeter, QuestStatus.Success) },
{ Quest.HuntsmanPathWoodsCleaning, GetQuestData(Quest.HuntsmanPathWoodsCleaning)
{ Quest.HuntsmanPathForestCleaning, GetQuestData(Quest.HuntsmanPathForestCleaning)
.AddPrerequisiteQuest(Quest.HuntsmanPathSecuredPerimeter, QuestStatus.Success) },
{ Quest.HuntsmanPathController, GetQuestData(Quest.HuntsmanPathController)
.AddPrerequisiteQuest(Quest.HuntsmanPathWoodsCleaning, QuestStatus.Success) },
.AddPrerequisiteQuest(Quest.HuntsmanPathForestCleaning, QuestStatus.Success) },
{ Quest.HuntsmanPathSellOut, GetQuestData(Quest.HuntsmanPathSellOut)
.AddPrerequisiteQuest(Quest.HuntsmanPathWoodsCleaning, QuestStatus.Success) },
.AddPrerequisiteQuest(Quest.HuntsmanPathForestCleaning, QuestStatus.Success) },
{ Quest.HuntsmanPathWoodsKeeper, GetQuestData(Quest.HuntsmanPathWoodsKeeper)
.AddPrerequisiteQuest(Quest.HuntsmanPathSecuredPerimeter, QuestStatus.Success) },
{ Quest.HuntsmanPathJustice, GetQuestData(Quest.HuntsmanPathJustice)
.AddPrerequisiteQuest(Quest.HuntsmanPathTheTrophy, QuestStatus.Success) },
{ Quest.HuntsmanPathEvilWatchman, GetQuestData(Quest.HuntsmanPathEvilWatchman)
.AddPrerequisiteQuest(Quest.HuntsmanPathWoodsCleaning, QuestStatus.Success) },
.AddPrerequisiteQuest(Quest.HuntsmanPathForestCleaning, QuestStatus.Success) },
{ Quest.HuntsmanPathFactoryChief, GetQuestData(Quest.HuntsmanPathFactoryChief)
.AddPrerequisiteQuest(Quest.HuntsmanPathWoodsCleaning, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.HuntsmanPathForestCleaning, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Scout, QuestStatus.Success)},
{ Quest.HuntsmanPathEraser, GetQuestData(Quest.HuntsmanPathEraser)
.AddPrerequisiteQuest(Quest.PestControl, QuestStatus.Success) },
{ Quest.HuntsmanPathEraserP2, GetQuestData(Quest.HuntsmanPathEraserP2)
.RemovePrerequisiteQuest(Quest.HuntsmanPathSecuredPerimeter)
.AddPrerequisiteQuest(Quest.HuntsmanPathEraser, QuestStatus.Success) },
{ Quest.HuntsmanPathSadist, GetQuestData(Quest.HuntsmanPathSadist)
.AddPrerequisiteQuest(Quest.ColleaguesP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.RiggedGame, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheChemistryCloset, QuestStatus.Success) },
{ Quest.HuntsmanPathOutcasts, GetQuestData(Quest.HuntsmanPathOutcasts)
.AddPrerequisiteQuest(Quest.HuntsmanPathWoodsCleaning, QuestStatus.Success) },
.AddPrerequisiteQuest(Quest.HuntsmanPathForestCleaning, QuestStatus.Success) },
{ Quest.HuntsmanPathRelentless, GetQuestData(Quest.HuntsmanPathRelentless) },
{ Quest.Ambulance, GetQuestData(Quest.Ambulance)
.AddPrerequisiteQuest(Quest.ShadyBusiness, QuestStatus.Success) },
@ -431,6 +456,7 @@ namespace QuestValidator.Common.Helpers
{ Quest.ShadyBusiness, GetQuestData(Quest.ShadyBusiness)
.AddPrerequisiteQuest(Quest.WhatsOnTheFlashDrive, QuestStatus.Success) },
{ Quest.Nostalgia, GetQuestData(Quest.Nostalgia)
.AddPrerequisiteQuest(Quest.SpaTourP3, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.CourtesyVisit, QuestStatus.Success) },
{ Quest.FishingPlace, GetQuestData(Quest.FishingPlace)
.AddPrerequisiteQuest(Quest.Nostalgia, QuestStatus.Success) },
@ -439,88 +465,116 @@ namespace QuestValidator.Common.Helpers
{ Quest.Reserv, GetQuestData(Quest.Reserv)
.AddPrerequisiteQuest(Quest.TheDeliciousSausage, QuestStatus.Success) },
{ Quest.RegulatedMaterials, GetQuestData(Quest.RegulatedMaterials)
.AddPrerequisiteLevel(25)
.AddPrerequisiteQuest(Quest.PolikhimHobo, QuestStatus.Success) },
{ Quest.AnAppleADayKeepsTheDoctorAway, GetQuestData(Quest.AnAppleADayKeepsTheDoctorAway)
.AddPrerequisiteQuest(Quest.HealthCarePrivacyP3, QuestStatus.Success) },
{ Quest.Mentor, GetQuestData(Quest.Mentor)
.AddPrerequisiteQuest(Quest.WetJobP4, QuestStatus.Success) },
{ Quest.TheStylishOne, GetQuestData(Quest.TheStylishOne)
.AddPrerequisiteQuest(Quest.HuntsmanPathSellOut, QuestStatus.StartedSuccess)
.AddPrerequisiteQuest(Quest.TheKeyToSuccess, QuestStatus.Success) },
{ Quest.TextileP1Usec, GetQuestData(Quest.TextileP1Usec)
.RemovePrerequisiteLevel()
.AddPrerequisiteQuest(Quest.SewItGoodP4, QuestStatus.Success) },
{ Quest.TextileP2Usec, GetQuestData(Quest.TextileP2Usec)
.RemovePrerequisiteLevel()
.AddPrerequisiteQuest(Quest.TextileP1Usec, QuestStatus.Success) },
{ Quest.TextileP1Bear, GetQuestData(Quest.TextileP1Bear)
.RemovePrerequisiteLevel()
.AddPrerequisiteQuest(Quest.SewItGoodP4, QuestStatus.Success) },
{ Quest.TextileP2Bear, GetQuestData(Quest.TextileP2Bear)
.RemovePrerequisiteLevel()
.AddPrerequisiteQuest(Quest.TextileP1Bear, QuestStatus.Success) },
{ Quest.BunkerP1, GetQuestData(Quest.BunkerP1)
.AddPrerequisiteLevel(10)
.AddPrerequisiteQuest(Quest.BPDepot, QuestStatus.Success) },
{ Quest.BunkerP2, GetQuestData(Quest.BunkerP2)
.AddPrerequisiteLevel(11)
.AddPrerequisiteQuest(Quest.BunkerP1, QuestStatus.Success) },
{ Quest.Anesthesia, GetQuestData(Quest.Anesthesia)
.AddPrerequisiteLevel(21)
.AddPrerequisiteQuest(Quest.ShakingUpTeller, QuestStatus.Success) },
{ Quest.Samples, GetQuestData(Quest.Samples)
.RemovePrerequisiteLevel()
.AddPrerequisiteQuest(Quest.FriendFromTheWestP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Anesthesia, QuestStatus.Success) },
{ Quest.ColleaguesP1, GetQuestData(Quest.ColleaguesP1)
.AddPrerequisiteLevel(21)
.AddPrerequisiteQuest(Quest.GeneralWares, QuestStatus.Success) },
{ Quest.ColleaguesP2, GetQuestData(Quest.ColleaguesP2)
.AddPrerequisiteQuest(Quest.ColleaguesP1, QuestStatus.Success) },
{ Quest.ColleaguesP3, GetQuestData(Quest.ColleaguesP3)
.AddPrerequisiteQuest(Quest.HuntsmanPathSadist, QuestStatus.Started) },
{ Quest.RiggedGame, GetQuestData(Quest.RiggedGame)
.RemovePrerequisiteLevel()
.AddPrerequisiteQuest(Quest.Anesthesia, QuestStatus.Success) },
{ Quest.TerraGroupEmployee, GetQuestData(Quest.TerraGroupEmployee)
.AddPrerequisiteQuest(Quest.HuntsmanPathSadist, QuestStatus.SuccessFail)
.AddPrerequisiteQuest(Quest.Samples, QuestStatus.SuccessFail) },
{ Quest.TheChemistryCloset, GetQuestData(Quest.TheChemistryCloset)
.AddPrerequisiteQuest(Quest.Anesthesia, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.ColleaguesP1, QuestStatus.Success) },
{ Quest.SearchMission, GetQuestData(Quest.SearchMission)
.AddPrerequisiteQuest(Quest.Debut, QuestStatus.Success) },
{ Quest.Hunter, GetQuestData(Quest.Hunter) },
{ Quest.Revision, GetQuestData(Quest.Revision)
.AddPrerequisiteQuest(Quest.EagleEye, QuestStatus.Success) },
{ Quest.PestControl, GetQuestData(Quest.PestControl) },
{ Quest.BackDoor, GetQuestData(Quest.HuntsmanPathSecuredPerimeter)
.AddPrerequisiteQuest(Quest.SurplusGoods, QuestStatus.Success) },
{ Quest.Hunter, GetQuestData(Quest.Hunter)
.RemovePrerequisiteLevel()
.AddPrerequisiteQuest(Quest.HuntsmanPathSecuredPerimeter, QuestStatus.Success) },
{ Quest.RevisionReserve, GetQuestData(Quest.RevisionReserve)
.RemovePrerequisiteQuest(Quest.EagleEye)
.AddPrerequisiteQuest(Quest.FriendFromTheWestP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.HumanitarianSupplies, QuestStatus.Success) },
{ Quest.PestControl, GetQuestData(Quest.PestControl)
.AddPrerequisiteQuest(Quest.Reserv, QuestStatus.Success) },
{ Quest.BackDoor, GetQuestData(Quest.BackDoor)
.RemovePrerequisiteQuest(Quest.SurplusGoods)
.AddPrerequisiteQuest(Quest.Scout, QuestStatus.Success) },
{ Quest.SafeCorridor, GetQuestData(Quest.SafeCorridor)
.AddPrerequisiteLevel(15)
.AddPrerequisiteQuest(Quest.ChemicalP4, QuestStatus.Success) },
{ Quest.InventoryCheck, GetQuestData(Quest.InventoryCheck)
.AddPrerequisiteLevel(15)
.AddPrerequisiteQuest(Quest.FuelMatter, QuestStatus.Success) },
{ Quest.FuelMatter, GetQuestData(Quest.FuelMatter)
.AddPrerequisiteLevel(15)
.AddPrerequisiteQuest(Quest.TheBloodOfWarP1, QuestStatus.Success) },
{ Quest.DiseaseHistory, GetQuestData(Quest.DiseaseHistory)
.AddPrerequisiteQuest(Quest.Pharmacist, QuestStatus.Success) },
{ Quest.Documents, GetQuestData(Quest.Documents)
.RemovePrerequisiteLevel()
.AddPrerequisiteQuest(Quest.NoPlaceForRenegades, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.IceCreamCones, QuestStatus.Success) },
.RemovePrerequisiteQuest(Quest.IceCreamCones) },
{ Quest.SurplusGoods, GetQuestData(Quest.SurplusGoods)
.AddPrerequisiteQuest(Quest.BackDoor, QuestStatus.Success) },
{ Quest.ClassifiedTechnologies, GetQuestData(Quest.ClassifiedTechnologies)
.AddPrerequisiteQuest(Quest.Revision, QuestStatus.Success) },
.AddPrerequisiteQuest(Quest.RevisionReserve, QuestStatus.Success) },
{ Quest.LongLine, GetQuestData(Quest.LongLine)
.AddPrerequisiteLevel(45)
.AddPrerequisiteQuest(Quest.Supervisor, QuestStatus.Success) },
{ Quest.Booze, GetQuestData(Quest.Booze)
.AddPrerequisiteQuest(Quest.LongLine, QuestStatus.Success) },
{ Quest.SwiftOne, GetQuestData(Quest.SwiftOne)
.AddPrerequisiteQuest(Quest.HuntsmanPathSadist, QuestStatus.Success) },
{ Quest.TheChoice, GetQuestData(Quest.TheChoice)
.AddPrerequisiteLevel(50)
.AddPrerequisiteQuest(Quest.ThePunisherP6, QuestStatus.Success) },
{ Quest.EasyJobPart1, GetQuestData(Quest.EasyJobPart1)
.AddPrerequisiteQuest(Quest.ThePunisherP2, QuestStatus.Success) },
{ Quest.EasyJobPart2, GetQuestData(Quest.EasyJobPart2)
.AddPrerequisiteQuest(Quest.EasyJobPart1, QuestStatus.Success) },
{ Quest.SeasideVacation, GetQuestData(Quest.SeasideVacation)
.AddPrerequisiteLevel(17)
.AddPrerequisiteQuest(Quest.DiseaseHistory, QuestStatus.StartedSuccess)
.AddPrerequisiteQuest(Quest.Pharmacist, QuestStatus.Success) },
.RemovePrerequisiteQuest(Quest.Pharmacist) },
{ Quest.LostContact, GetQuestData(Quest.LostContact)
.AddPrerequisiteQuest(Quest.HealthCarePrivacyP2, QuestStatus.Success) },
{ Quest.RevisionPart2, GetQuestData(Quest.RevisionPart2)
.AddPrerequisiteQuest(Quest.Revision, QuestStatus.StartedSuccess)
.AddPrerequisiteQuest(Quest.EagleEye, QuestStatus.Success) },
{ Quest.RevisionLighthouse, GetQuestData(Quest.RevisionLighthouse)
.AddPrerequisiteQuest(Quest.RevisionReserve, QuestStatus.StartedSuccess)
.RemovePrerequisiteQuest(Quest.EagleEye) },
{ Quest.TheHermit, GetQuestData(Quest.TheHermit)
.AddPrerequisiteQuest(Quest.CourtesyVisit, QuestStatus.StartedSuccess)},
{ Quest.LongRoad, GetQuestData(Quest.LongRoad)
.AddPrerequisiteLevel(20)
.AddPrerequisiteQuest(Quest.FriendFromTheWestP2, QuestStatus.Success) },
{ Quest.MissingCargo, GetQuestData(Quest.MissingCargo)
.AddPrerequisiteQuest(Quest.LongRoad, QuestStatus.Success) },
@ -530,25 +584,35 @@ namespace QuestValidator.Common.Helpers
.AddPrerequisiteQuest(Quest.SpaTourP1, QuestStatus.Success) },
//{ Quest.CommunicationDifficulties, GetQuestData(Quest.CommunicationDifficulties).AddPrerequisiteQuest(Quest.MakeUltraGreatAgain, QuestStatus.Success) },
{ Quest.EnergyCrisis, GetQuestData(Quest.EnergyCrisis)
.AddPrerequisiteLevel(25)
.AddPrerequisiteQuest(Quest.FarmingP4, QuestStatus.StartedSuccess)
.AddPrerequisiteQuest(Quest.PostmanPatP2, QuestStatus.Success) },
.RemovePrerequisiteQuest(Quest.PostmanPatP2) },
{ Quest.CorporateSecrets, GetQuestData(Quest.CorporateSecrets)
.AddPrerequisiteLevel(17)
.AddPrerequisiteQuest(Quest.FarmingP3, QuestStatus.Success) },
{ Quest.NightSweep, GetQuestData(Quest.NightSweep)
.AddPrerequisiteQuest(Quest.RiggedGame, QuestStatus.Success) },
{ Quest.NoPlaceForRenegades, GetQuestData(Quest.NoPlaceForRenegades)
.AddPrerequisiteQuest(Quest.BunkerP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.IceCreamCones, QuestStatus.Success) },
.RemovePrerequisiteQuest(Quest.IceCreamCones) },
{ Quest.Escort, GetQuestData(Quest.Escort)
.AddPrerequisiteLevel(60)
.AddPrerequisiteQuest(Quest.ThePunisherP6, QuestStatus.Success) },
{ Quest.CapturingOutposts, GetQuestData(Quest.CapturingOutposts)
.AddPrerequisiteLevel(42)
.AddPrerequisiteQuest(Quest.ThePunisherP6, QuestStatus.Success) },
{ Quest.Intimidator, GetQuestData(Quest.Intimidator)
.AddPrerequisiteLevel(45)
.AddPrerequisiteQuest(Quest.ThePunisherP6, QuestStatus.Success) },
{ Quest.Crisis, GetQuestData(Quest.Crisis) },
// The wiki says Crisis only depends on level 48, but the dump says only Athlete, so why not both?
{ Quest.Crisis, GetQuestData(Quest.Crisis)
.AddPrerequisiteLevel(48)
.AddPrerequisiteQuest(Quest.Athlete, QuestStatus.Success) },
{ Quest.TheCleaner, GetQuestData(Quest.TheCleaner)
.AddPrerequisiteLevel(45)
.AddPrerequisiteQuest(Quest.TheGuide, QuestStatus.Success) },
{ Quest.Calibration, GetQuestData(Quest.Calibration)
.AddPrerequisiteLevel(47)
.AddPrerequisiteQuest(Quest.TheChemistryCloset, QuestStatus.Success)},
{ Quest.CompensationForDamageTrust, GetQuestData(Quest.CompensationForDamageTrust) },
{ Quest.CompensationForDamageWager, GetQuestData(Quest.CompensationForDamageWager) },
@ -566,10 +630,13 @@ namespace QuestValidator.Common.Helpers
{ Quest.StrayDogs, GetQuestData(Quest.StrayDogs)
.AddPrerequisiteQuest(Quest.HuntsmanPathTheTrophy, QuestStatus.Success)},
{ Quest.Trophies, GetQuestData(Quest.Trophies)
.AddPrerequisiteQuest(Quest.HuntsmanPathWoodsCleaning, QuestStatus.Success)},
.AddPrerequisiteLevel(55)
.RemovePrerequisiteQuest(Quest.HuntsmanPathForestCleaning)
.AddPrerequisiteQuest(Quest.TheGuide, QuestStatus.Success)},
{ Quest.SpecialEquipment, GetQuestData(Quest.SpecialEquipment)
.AddPrerequisiteQuest(Quest.Trophies, QuestStatus.Success)},
{ Quest.TheCourier, GetQuestData(Quest.TheCourier)
.AddPrerequisiteLevel(52)
.AddPrerequisiteQuest(Quest.Calibration, QuestStatus.Success)},
{ Quest.EventLetters, GetQuestData(Quest.EventLetters) },
{ Quest.TheDeliciousSausage, GetQuestData(Quest.TheDeliciousSausage)
@ -603,8 +670,8 @@ namespace QuestValidator.Common.Helpers
.AddPrerequisiteQuest(Quest.Chumming, QuestStatus.Success)},
{ Quest.BroadcastPart2, GetQuestData(Quest.BroadcastPart2)
.AddPrerequisiteQuest(Quest.BroadcastPart1, QuestStatus.Success)},
// { Quest.CeaseFire, GetQuestData(Quest.CeaseFire)
// .AddPrerequisiteQuest(Quest., QuestStatus.Success)}, // NO DATA YET
{ Quest.CeaseFire, GetQuestData(Quest.CeaseFire)
.AddPrerequisiteQuest(Quest.TheDeliciousSausage, QuestStatus.Success)},
{ Quest.KingsOfTheRooftops, GetQuestData(Quest.KingsOfTheRooftops)
.AddPrerequisiteQuest(Quest.ThePunisherP4, QuestStatus.Success)},
{ Quest.WatchingYou, GetQuestData(Quest.WatchingYou)
@ -612,11 +679,11 @@ namespace QuestValidator.Common.Helpers
{ Quest.HarleyForever, GetQuestData(Quest.HarleyForever)
.AddPrerequisiteQuest(Quest.Audiophile, QuestStatus.Success)},
{ Quest.TheHuntsmanPathAdministrator, GetQuestData(Quest.TheHuntsmanPathAdministrator)
.AddPrerequisiteQuest(Quest.HuntsmanPathWoodsCleaning, QuestStatus.Success) },
.AddPrerequisiteQuest(Quest.HuntsmanPathForestCleaning, QuestStatus.Success) },
// { Quest.GreenCorridor, GetQuestData(Quest.GreenCorridor)
// .AddPrerequisiteQuest(Quest., QuestStatus.Success)}, // NO DATA YET
{ Quest.RevisionStreetsOfTarkov, GetQuestData(Quest.RevisionStreetsOfTarkov)
.AddPrerequisiteQuest(Quest.Revision, QuestStatus.Success) },
.AddPrerequisiteQuest(Quest.RevisionReserve, QuestStatus.Success) },
{ Quest.Surveillance, GetQuestData(Quest.Surveillance)
.AddPrerequisiteQuest(Quest.BroadcastPart2, QuestStatus.Success) },
{ Quest.NetworkProviderPart1, GetQuestData(Quest.NetworkProviderPart1)
@ -642,9 +709,9 @@ namespace QuestValidator.Common.Helpers
// { Quest.KeyToTheTower, GetQuestData(Quest.KeyToTheTower)
// .AddPrerequisiteQuest(Quest., QuestStatus.Success)}, // NO DATA YET
{ Quest.KnockKnock, GetQuestData(Quest.KnockKnock)
.AddPrerequisiteQuest(Quest.KeyToTheTower, QuestStatus.Success)},// NO DATA YET
// { Quest.GettingAcquainted, GetQuestData(Quest.GettingAcquainted)
// .AddPrerequisiteQuest(Quest., QuestStatus.Success)},// NO DATA YET
.AddPrerequisiteQuest(Quest.KeyToTheTower, QuestStatus.Success)},
{ Quest.GettingAcquainted, GetQuestData(Quest.GettingAcquainted)
.AddPrerequisiteQuest(Quest.KnockKnock, QuestStatus.Success)},
// { Quest.MakeAmendsBuyout, GetQuestData(Quest.MakeAmendsBuyout)
// .AddPrerequisiteQuest(Quest., QuestStatus.Success)},// NO DATA YET
// { Quest.MakeAmendsEquipment, GetQuestData(Quest.MakeAmendsEquipment)
@ -675,7 +742,8 @@ namespace QuestValidator.Common.Helpers
// { Quest.MakeAmends, GetQuestData(Quest.MakeAmends)
// .AddPrerequisiteQuest(Quest., QuestStatus.Success)}// NO DATA YET
{ Quest.InformationSource, GetQuestData(Quest.InformationSource)
.AddPrerequisiteQuest(Quest.KnockKnock, QuestStatus.Success)},
.RemovePrerequisiteQuest(Quest.KnockKnock)
.AddPrerequisiteQuest(Quest.GettingAcquainted, QuestStatus.Success)},
{ Quest.MissingInformant, GetQuestData(Quest.MissingInformant)
.AddPrerequisiteQuest(Quest.InformationSource, QuestStatus.Success)},
{ Quest.Snatch, GetQuestData(Quest.Snatch)
@ -693,7 +761,234 @@ namespace QuestValidator.Common.Helpers
// { Quest.MakeAnImpression, GetQuestData(Quest.MakeAnImpression)
// .AddPrerequisiteQuest(Quest., QuestStatus.Success)},
{ Quest.TroubleInTheBigCity, GetQuestData(Quest.TroubleInTheBigCity)
.AddPrerequisiteQuest(Quest.MakeAnImpression, QuestStatus.Success)}
.AddPrerequisiteQuest(Quest.MakeAnImpression, QuestStatus.Success)},
// Collector requires a large amount of requisite tasks, so it's at the end
{ Quest.Collector, GetQuestData(Quest.Collector)
.AddPrerequisiteLevel(50)
.AddPrerequisiteQuest(Quest.Debut, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.SearchMission, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Checking, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.ShootoutPicnic, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.DeliveryFromThePast, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.BPDepot, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.BunkerP1, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.BunkerP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.BadRepEvidence, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.IceCreamCones, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.NoPlaceForRenegades, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Documents, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.PostmanPatP1, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.ShakingUpTeller, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.ThePunisherP1, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.ThePunisherP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.ThePunisherP3, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.ThePunisherP4, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.ThePunisherP5, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.ThePunisherP6, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Anesthesia, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Grenadier, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Insomnia, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TestDriveP1, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.PerfectMediator, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.PolikhimHobo, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.RegulatedMaterials, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Intimidator, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.EasyJobPart1, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.EasyJobPart2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Reconnaissance, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Shortage, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.OperationAquarius, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.OperationAquariusP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.SanitaryStandardsP1, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.SanitaryStandardsP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Painkiller, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Pharmacist, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.CarRepair, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.DiseaseHistory, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.HealthCarePrivacyP1, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.HealthCarePrivacyP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.HealthCarePrivacyP3, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.HealthCarePrivacyP4, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Athlete, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.PrivateClinic, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.HealthCarePrivacyP5, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.DecontaminationService, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.GeneralWares, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.ColleaguesP1, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.ColleaguesP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.PostmanPatP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.SeasideVacation, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.LostContact, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.DrugTrafficking, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Supplier, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheExtortionist, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Stirrup, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.WhatsOnTheFlashDrive, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.GoldenSwag, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.ChemicalP1, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.ChemicalP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.ChemicalP3, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.VitaminsP1, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.VitaminsP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.FriendFromTheWestP1, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.FriendFromTheWestP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.InformedMeansArmed, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Chumming, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.SilentCaliber, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Bullshit, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Setup, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Flint, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.LendLeaseP1, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.RiggedGame, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.SafeCorridor, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.LongRoad, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.MissingCargo, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.FishingGear, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TigrSafari, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.ScrapMetal, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.EagleEye, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.HumanitarianSupplies, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheCultP1, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheCultP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.SpaTourP1, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.SpaTourP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.SpaTourP3, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.SpaTourP4, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.SpaTourP5, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.SpaTourP6, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.SpaTourP7, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.CargoXP1, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.CargoXP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.CargoXP3, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.WetJobP1, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.WetJobP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.WetJobP3, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.WetJobP4, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.WetJobP5, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheGuide, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Samples, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TerraGroupEmployee, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.LendLeaseP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.PeacekeepingMission, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.ClassifiedTechnologies, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.RevisionReserve, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.CargoXP4, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Overpopulation, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.RevisionLighthouse, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Introduction, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.GunsmithP1, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.GunsmithP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.GunsmithP3, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.GunsmithP4, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.GunsmithP5, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.GunsmithP6, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.GunsmithP7, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.GunsmithP8, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.GunsmithP9, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.GunsmithP10, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.GunsmithP11, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.GunsmithP12, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.GunsmithP13, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.GunsmithP14, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.GunsmithP15, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.GunsmithP16, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.GunsmithP17, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.GunsmithP18, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.GunsmithP19, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.GunsmithP20, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.GunsmithP21, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.GunsmithP22, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.SignalP1, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Insider, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.SignalP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Scout, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.SurplusGoods, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.SignalP3, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.SignalP4, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.FarmingP1, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.FarmingP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.BadHabit, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.FarmingP3, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.FarmingP4, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.PsychoSniper, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.AShooterBornInHeaven, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Fertilizers, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Import, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheChemistryCloset, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.CorporateSecrets, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.EnergyCrisis, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.BroadcastPart1, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.OnlyBusiness, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.MakeUltraGreatAgain, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.BigSale, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.FuelMatter, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.InventoryCheck, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheBloodOfWarP1, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.DressedToKill, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.HotDelivery, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Scavenger, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.SalesNight, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.DatabaseP1, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.DatabaseP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Minibus, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.SewItGoodP1, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheBloodOfWarP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheBloodOfWarP3, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.SewItGoodP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheKeyToSuccess, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.NoFussNeeded, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Supervisor, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.SewItGoodP3, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.LivingHighIsNotACrimeP1, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.LivingHighIsNotACrimeP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.SewItGoodP4, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.CharismaBringsSuccess, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.LongLine, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Booze, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Acquaintance, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheSurvivalistPathUnprotectedButDangerous, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheSurvivalistPathThrifty, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheSurvivalistPathZhivchik, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheSurvivalistPathWoundedBeast, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheSurvivalistPathToughGuy, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.CourtesyVisit, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Nostalgia, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheSurvivalistPathColdBlooded, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheSurvivalistPathJunkie, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheSurvivalistPathEagleOwl, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheSurvivalistPathCombatMedic, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Ambulance, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.HuntsmanPathSecuredPerimeter, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.Reserv, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.HuntsmanPathForestCleaning, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.HuntsmanPathController, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.HuntsmanPathEvilWatchman, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.FishingPlace, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.HuntsmanPathTheTrophy, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.HuntsmanPathJustice, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.HuntsmanPathSellOut, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.HuntsmanPathWoodsKeeper, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.HuntingTrip, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.HuntsmanPathFactoryChief, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.HuntsmanPathEraser, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.HuntsmanPathEraserP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheTarkovShooterP1, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheTarkovShooterP2, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheTarkovShooterP3, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheTarkovShooterP4, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheTarkovShooterP5, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheTarkovShooterP6, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheTarkovShooterP7, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheTarkovShooterP8, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.ShadyBusiness, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.PestControl, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheHermit, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.HuntsmanPathOutcasts, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.StrayDogs, QuestStatus.Success)
.AddPrerequisiteQuest(Quest.TheDeliciousSausage, QuestStatus.Success)
}
};
private static QuestData GetQuestData(Quest quest)

View File

@ -3,6 +3,8 @@
public enum PreRequisiteType
{
Quest = 1,
Level = 2
Level = 2,
RemoveQuest = 3,
RemoveLevel = 4
}
}

View File

@ -175,7 +175,7 @@
TheSurvivalistPathJunkie = 169,
HuntsmanPathSecuredPerimeter = 170,
HuntsmanPathTheTrophy = 171,
HuntsmanPathWoodsCleaning = 172,
HuntsmanPathForestCleaning = 172,
HuntsmanPathController = 173,
HuntsmanPathSellOut = 174,
HuntsmanPathWoodsKeeper = 175,
@ -212,7 +212,7 @@
TheChemistryCloset = 204,
SearchMission = 205,
Hunter = 206,
Revision = 207,
RevisionReserve = 207,
PestControl = 208,
BackDoor = 209,
SafeCorridor = 210,
@ -245,7 +245,7 @@
CorporateSecrets = 238,
Counteraction = 239,
MissingCargo = 241,
RevisionPart2 = 242,
RevisionLighthouse = 242,
OurOwnLand = 243,
TheHermit = 244,
LongRoad = 245,

View File

@ -68,6 +68,7 @@ namespace QuestValidator.Models
public class Counter
{
public string id { get; set; }
public object conditions { get; set; }
}
public class AvailableFor
@ -79,7 +80,7 @@ namespace QuestValidator.Models
public class AvailableForProps
{
public object counter { get; set;}
public Counter counter { get; set;}
public int? dogtagLevel { get; set; }
public string id { get; set; }
public int? index { get; set; }
@ -150,7 +151,7 @@ namespace QuestValidator.Models
{
public string _id { get; set; }
public string _tpl { get; set; }
public object upd { get; set; }
public QuestRewardUpd upd { get; set; }
public string parentId { get; set; }
public string slotId { get; set; }
}
@ -160,6 +161,8 @@ namespace QuestValidator.Models
public int? StackObjectsCount { get; set; }
public FireModeReward FireMode { get; set; }
public FoldeableReward Foldable { get; set; }
public bool? SpawnedInSession { get; set; }
public object? Repairable { get; set; }
}
public class FireModeReward