diff --git a/GenerateQuestFile/Program.cs b/GenerateQuestFile/Program.cs index bf4c54b..080538b 100644 --- a/GenerateQuestFile/Program.cs +++ b/GenerateQuestFile/Program.cs @@ -67,7 +67,7 @@ namespace GenerateQuestFile foreach (var quest in questsToOutputToFile) { - if (quest.Key == "5c0d4c12d09282029f539173") + if (quest.Key == "597a160786f77477531d39d2") { } @@ -93,42 +93,41 @@ namespace GenerateQuestFile // iterate over qeust objects a final time and add hard coded quest requirements if they dont already exist foreach (var quest in questsToOutputToFile) { - if (quest.Key == "5c0d4c12d09282029f539173") - { - //fishin gear - } - - var questRequirement = QuestHelper.GetQuestDependancy(quest.Key); - if (questRequirement == null || questRequirement.PreceedingQuest?.Length == 0) + var questRequirements = QuestHelper.GetQuestDependancy(quest.Key); + if (questRequirements == null || questRequirements.Count == 0) { continue; } - if (!quest.Value.conditions.AvailableForStart.Any(x => x._parent == "Quest" - && x._props.target.ToString() == questRequirement.PreceedingQuest)) + foreach (var requirement in questRequirements) { - LoggingHelpers.LogSuccess($"{quest.Value.QuestName} needs a prereq of quest {questRequirement.GetQuestName()}, adding."); - quest.Value.conditions.AvailableForStart.Add(new AvailableFor + if (!quest.Value.conditions.AvailableForStart.Any(x => x._parent == "Quest" + && x._props.target.ToString() == requirement.Quest.Id)) { - _parent = "Quest", - _props = new AvailableForProps + LoggingHelpers.LogSuccess($"{quest.Value.QuestName} needs a prereq of quest {requirement.Quest.Name}, adding."); + quest.Value.conditions.AvailableForStart.Add(new AvailableFor { - id = "", - index = quest.Value.conditions.AvailableForStart.Count, - parentId = "", - status = new[] { questRequirement.QuestStatus }, - target = questRequirement.PreceedingQuest + _parent = "Quest", + _props = new AvailableForProps + { + id = "", + index = quest.Value.conditions.AvailableForStart.Count, + parentId = "", + status = new[] { requirement.QuestStatus}, + target = requirement.Quest.Id + } + } + ); + } + else + { + if (questRequirements != null) + { + LoggingHelpers.LogInfo($"{quest.Value.QuestName} already has prereq of quest {requirement.Quest.Name}, skipping."); } } - ); - } - else - { - if (questRequirement != null) - { - LoggingHelpers.LogInfo($"{quest.Value.QuestName} already has prereq of quest {questRequirement.GetQuestName()}, skipping."); - } } + } JsonWriter.WriteJson(questsToOutputToFile, "output", Directory.GetCurrentDirectory(), "quests"); diff --git a/QuestValidator.Common/Helpers/QuestHelper.cs b/QuestValidator.Common/Helpers/QuestHelper.cs index 8378878..b5f15e8 100644 --- a/QuestValidator.Common/Helpers/QuestHelper.cs +++ b/QuestValidator.Common/Helpers/QuestHelper.cs @@ -1,4 +1,5 @@ -using QuestValidator.Common.Models; +using QuestValidator.Common.Helpers; +using QuestValidator.Common.Models; using QuestValidator.Models; using QuestValidator.Models.Other; using System.Collections.Generic; @@ -10,478 +11,13 @@ namespace AssortGenerator.Common.Helpers { public static class QuestHelper { - private static readonly Dictionary questNames = new Dictionary - { - { "5936d90786f7742b1420ba5b", "Debut" }, - { "5936da9e86f7742d65037edf", "Checking"}, - { "59674cd986f7744ab26e32f2", "Shootout picnic"}, - { "59674eb386f774539f14813a", "Delivery from the past"}, - { "5967530a86f77462ba22226b", "Bad rep evidence"}, - { "59675d6c86f7740a842fc482", "Ice cream cones"}, - { "59675ea386f77414b32bded2", "Postman Pat"}, - { "596760e186f7741e11214d58", "Postman Pat, p. 2"}, - { "5967725e86f774601a446662", "Shaking up teller"}, - { "5967733e86f774602332fc84", "Shortage"}, - { "59689ee586f7740d1570bbd5", "Sanitary Standards, p. 1"}, - { "59689fbd86f7740d137ebfc4", "Operation Aquarius"}, - { "5968eb3186f7741dde183a4d", "Operation Aquarius, p. 2"}, - { "5969f90786f77420d2328015", "Painkiller"}, - { "5969f9e986f7741dde183a50", "Pharmacist"}, - { "596a0e1686f7741ddf17dbee", "Supply plans"}, - { "596a101f86f7741ddb481582", "Kind of sabotage" }, - { "596a1e6c86f7741ddc2d3206", "General wares"}, - { "596a204686f774576d4c95de", "Sanitary Standards, p. 2"}, - { "596a218586f77420d232807c", "Car repair"}, - { "596b36c586f77450d6045ad2", "Supplier"}, - { "596b43fb86f77457ca186186", "The Extortionist"}, - { "596b455186f77457cb50eccb", "Stirrup"}, - { "5979ed3886f77431307dc512", "What’s on the flash drive?"}, - { "5979eee086f774311955e614", "Golden swag"}, - { "5979f8bb86f7743ec214c7a6", "Polikhim hobo"}, - { "5979f9ba86f7740f6c3fe9f2", "Chemical, p.1"}, - { "597a0b2986f77426d66c0633", "Chemical, p. 2"}, - { "597a0e5786f77426d66c0636", "Chemical, p. 3"}, - { "597a0f5686f774273b74f676", "Chemical, p. 4"}, - { "597a160786f77477531d39d2", "Out of curiosity"}, - { "597a171586f77405ba6887d3", "Big customer"}, - { "59c124d686f774189b3c843f", "BP depot"}, - { "59c50a9e86f7745fef66f4ff", "The Punisher"}, - { "59c50c8886f7745fed3193bf", "The Punisher. Part 2."}, - { "59c512ad86f7741f0d09de9b", "The Punisher. Part 3."}, - { "59c9392986f7742f6923add2", "Trust regain"}, - { "59c93e8e86f7742a406989c4", "Loyalty buyout"}, - { "59ca1a6286f774509a270942", "No offence"}, - { "59ca264786f77445a80ed044", "The Punisher. Part 4."}, - { "59ca29fb86f77445ab465c87", "The Punisher. Part 5."}, - { "59ca2eb686f77445a80ed049", "The Punisher. Part 6."}, - { "59f9da6786f774714230d751", ""}, - { "5a03153686f77442d90e2171", "Spa Tour. Part 1"}, - { "5a03173786f77451cb427172", "Spa Tour. Part 2"}, - { "5a0327ba86f77456b9154236", "Spa Tour. Part 3" }, - { "5a03296886f774569778596a", "Spa Tour. Part 4"}, - { "5a0449d586f77474e66227b7", "Spa Tour. Part 5"}, - { "5a27b75b86f7742e97191958", "Fishing Gear"}, - { "5a27b7a786f774579c3eb376", "Tigr Safari"}, - { "5a27b7d686f77460d847e6a6", " Scrap Metal"}, - { "5a27b80086f774429a5d7e20", "Eagle Eye"}, - { "5a27b87686f77460de0252a8", "Humanitarian Supplies"}, - { "5a27b9de86f77464e5044585", "The Cult. Part 1"}, - { "5a27ba1c86f77461ea5a3c56", "The Cult. Part 2"}, - { "5a27ba9586f7741b543d8e85", "Spa Tour. Part 6"}, - { "5a27bafb86f7741c73584017", "Spa Tour. Part 7"}, - { "5a27bb1e86f7741f27621b7e", "Cargo X. Part 1"}, - { "5a27bb3d86f77411ea361a21", "Cargo X. Part 2"}, - { "5a27bb5986f7741dfb660900", "Cargo X. Part 3"}, - { "5a27bb8386f7741c770d2d0a", "Wet Job. Part 1"}, - { "5a27bbf886f774333a418eeb", "Wet Job. Part 2"}, - { "5a27bc1586f7741f6d40fa2f", "Wet Job. Part 3"}, - { "5a27bc3686f7741c73584026", "Wet Job. Part 4"}, - { "5a27bc6986f7741c7358402b", "Wet Job. Part 5"}, - { "5a27bc8586f7741b543d8ea4", "Wet Job. Part 6"}, - { "5a27c99a86f7747d2c6bdd8e", "Friend from the West. Part 1"}, - { "5a27d2af86f7744e1115b323", "Friend from the West. Part 2"}, - { "5a5642ce86f77445c63c3419", "Hippocratic Vow"}, - { "5a68661a86f774500f48afb0", "Health Care Privacy. Part 1"}, - { "5a68663e86f774501078f78a", "Health Care Privacy. Part 2"}, - { "5a68665c86f774255929b4c7", "Health Care Privacy. Part 3"}, - { "5a68667486f7742607157d28", "Health Care Privacy. Part 4"}, - { "5a68669a86f774255929b4d4", "Health Care Privacy. Part 5"}, - { "5ac23c6186f7741247042bad", "Gunsmith. Part 1"}, - { "5ac2426c86f774138762edfe", "Gunsmith. Part 2"}, - { "5ac2428686f77412450b42bf", "Gunsmith. Part 3"}, - { "5ac242ab86f77412464f68b4", "Gunsmith. Part 5"}, - { "5ac244c486f77413e12cf945", "Gunsmith. Part 6"}, - { "5ac244eb86f7741356335af1", "Gunsmith. Part 4"}, - { "5ac345dc86f774288030817f", "Farming. Part 1" }, - { "5ac3460c86f7742880308185", "Farming. Part 2" }, - { "5ac3462b86f7741d6118b983", "Farming. Part 3" }, - { "5ac3464c86f7741d651d6877", "Farming. Part 4" }, - { "5ac3467986f7741d6224abc2", "Signal. Part 1" }, - { "5ac346a886f7744e1b083d67", "Signal. Part 2" }, - { "5ac346cf86f7741d63233a02", "Signal. Part 3" }, - { "5ac346e886f7741d6118b99b", "Signal. Part 4" }, - { "5ac3475486f7741d6224abd3", "Bad habit" }, - { "5ac3477486f7741d651d6885", "Scout" }, - { "5ac3479086f7742880308199", "Insider" }, - { "5ae3267986f7742a413592fe", "Gunsmith. Part 7" }, - { "5ae3270f86f77445ba41d4dd", "Gunsmith. Part 8" }, - { "5ae3277186f7745973054106", "Gunsmith. Part 9" }, - { "5ae327c886f7745c7b3f2f3f", "Gunsmith. Part 10" }, - { "5ae3280386f7742a41359364", "Gunsmith. Part 11" }, - { "5ae448a386f7744d3730fff0", "Only business" }, - { "5ae448bf86f7744d733e55ee", "Make ULTRA Great Again" }, - { "5ae448e586f7744dcf0c2a67", "Big sale" }, - { "5ae448f286f77448d73c0131", "The Blood of War" }, - { "5ae4490786f7744ca822adcc", "Dressed to kill" }, - { "5ae4493486f7744efa289417", "Database. Part 1" }, - { "5ae4493d86f7744b8e15aa8f", "Database. Part 2" }, - { "5ae4495086f77443c122bc40", "Sew it good. Part 1" }, - { "5ae4495c86f7744e87761355", "Sew it good. Part 2" }, - { "5ae4496986f774459e77beb6", "Sew it good. Part 3" }, - { "5ae4497b86f7744cf402ed00", "Sew it good. Part 4" }, - { "5ae4498786f7744bde357695", "The key to success" }, - { "5ae4499a86f77449783815db", "Charisma brings success" }, - { "5ae449a586f7744bde357696", "No fuss needed" }, - { "5ae449b386f77446d8741719", "Gratitude" }, - { "5ae449c386f7744bde357697", "Sales Night" }, - { "5ae449d986f774453a54a7e1", "Supervisor" }, - { "5b47749f86f7746c5d6a5fd4", "Gunsmith. Part 12" }, - { "5b47799d86f7746c5d6a5fd8", "Gunsmith. Part 13" }, - { "5b477b6f86f7747290681823", "Gunsmith. Part 14" }, - { "5b477f7686f7744d1b23c4d2", "Gunsmith. Part 15" }, - { "5b47825886f77468074618d3", "Gunsmith. Part 16" }, - { "5b47876e86f7744d1c353205", "The Blood of War Part 2" }, - { "5b47891f86f7744d1b23c571", "Living high is not a crime" }, - { "5b478b1886f7744d1b23c57d", "Hot delivery"}, - { "5b478d0f86f7744d190d91b5", "Minibus"}, - { "5b478eca86f7744642012254", "Vitamins p.1"}, - { "5b478ff486f7744d184ecbbf", "Vitamins p. 2"}, - { "5b47926a86f7747ccc057c15", "Informed means armed"}, - { "5b4794cb86f774598100d5d4", "Lend lease pt 1"}, - { "5b4795fb86f7745876267770", "Chumming"}, - { "5bc4776586f774512d07cf05", "The Tarkov shooter Part 1"}, - { "5bc479e586f7747f376c7da3", "The Tarkov shooter Part 2"}, - { "5bc47dbf86f7741ee74e93b9", "The Tarkov shooter Part 3" }, - { "5bc480a686f7741af0342e29", "The Tarkov shooter Part 4" }, - { "5bc4826c86f774106d22d88b", "The Tarkov shooter Part 5" }, - { "5bc4836986f7740c0152911c", "The Tarkov shooter Part 6" }, - { "5bc4856986f77454c317bea7", "The Tarkov shooter Part 7" }, - { "5bc4893c86f774626f5ebf3e", "The Tarkov shooter Part 8" }, - { "5c0bbaa886f7746941031d82", "Bullshit" }, - { "5c0bc91486f7746ab41857a2", "Silent caliber" }, - { "5c0bd01e86f7747cdd799e56", "Insomnia" }, - { "5c0bd94186f7747a727f09b2", "Test drive. Pt. 1" }, - { "5c0bdb5286f774166e38eed4", "Flint" }, - { "5c0bde0986f77479cf22c2f8", "A Shooter Born in Heaven" }, - { "5c0be13186f7746f016734aa", "Psycho Sniper" }, - { "5c0be5fc86f774467a116593", "Private clinic" }, - { "5c0d0d5086f774363760aef2", "Athlete" }, - { "5c0d0f1886f77457b8210226", "Lend lease. Part 2" }, - { "5c0d190cd09282029f5390d8", "Grenadier" }, - { "5c0d1c4cd0928202a02a6f5c", "Decontamination service" }, - { "5c0d4c12d09282029f539173", "Peacekeeping mission" }, - { "5c0d4e61d09282029f53920e", "The guide" }, - { "5c10f94386f774227172c572", "The Blood of War Pt. 3" }, - { "5c1128e386f7746565181106", "Fertilizers" }, - { "5c112d7e86f7740d6f647486", "Scavenger" }, - { "5c1141f386f77430ff393792", "Living high is not a crime Pt.2" }, - { "5c1234c286f77406fa13baeb", "Setup" }, - { "5c12452c86f7744b83469073", "Perfect mediator" }, - { "5c139eb686f7747878361a6f", "Import" }, - { "5c51aac186f77432ea65c552", "Collector" }, - { "5d2495a886f77425cd51e403", "Introduction" }, - { "5d24b81486f77439c92d6ba8", "Acquaintance" }, - { "5d25aed386f77442734d25d2", "The survivalist path. Unprotected, but dangerous"}, - { "5d25b6be86f77444001e1b89", "The survivalist path. Thrifty" }, - { "5d25bfd086f77442734d3007", "The survivalist path. Zhivchik" }, - { "5d25c81b86f77443e625dd71", "The survivalist path. Wounded beast" }, - { "5d25cf2686f77443e75488d4", "The survivalist path. Tough guy" }, - { "5d25d2c186f77443e35162e5", "The survivalist path. Cold blooded" }, - { "5d25dae186f77443e55d2f78", "The survivalist path. Zatoichi" }, - { "5d25e29d86f7740a22516326", "The survivalist path. Eagle-owl" }, - { "5d25e2a986f77409dd5cdf2a", "The survivalist path. Combat medic" }, - { "5eaaaa7c93afa0558f3b5a1c", "The survivalist path. Junkie" }, - { "5d25e2b486f77409de05bba0", "Huntsman path. Secured perimeter" }, - { "5d25e2c386f77443e7549029", "Huntsman path. The trophy" }, - { "5d25e2cc86f77443e47ae019", "Huntsman path. Woods cleaning" }, - { "5d25e2d886f77442734d335e", "Huntsman path. Controller" }, - { "5d25e2e286f77444001e2e48", "Huntsman path. Sell-out" }, - { "5d25e2ee86f77443e35162ea", "Huntsman path. Woods keeper" }, - { "5d25e43786f7740a212217fa", "Huntsman path. Justice" }, - { "5d25e44386f77409453bce7b", "Huntsman path. Evil watchman" }, - { "60c0c018f7afb4354815096a", "Huntsman Path - Factory Chief"}, - { "5d25e44f86f77443e625e385", "Huntsman path. Eraser" }, - { "5d25e45e86f77408251c4bfa", "Huntsman path. Eraser pt. 2" }, - { "5d25e46e86f77409453bce7c", "Ambulance" }, - { "5d25e48186f77443e625e386", "Courtesy visit" }, - { "5d25e48d86f77408251c4bfb", "Shady business" }, - { "5d25e4ad86f77443e625e387", "Nostalgia" }, - { "5d25e4b786f77408251c4bfc", "Fishing place" }, - { "5d25e4ca86f77409dd5cdf2c", "Hunting trip" }, - { "5d25e4d586f77443e625e388", "Reserv" }, - { "5d4bec3486f7743cac246665", "Regulated materials"}, - { "5d6fb2c086f77449da599c24", "An apple a day - keeps the doctor away"}, - { "5d6fbc2886f77449d825f9d3", "Mentor"}, - { "5dc53acb86f77469c740c893", "The stylish one"}, - { "5e381b0286f77420e3417a74", "Textile. Part 1"}, - { "5e4d515e86f77438b2195244", "Textile. Part 2"}, - { "5ede55112c95834b583f052a", "Bunker. Part 1"}, - { "5ede567cfa6dc072ce15d6e3", "Bunker. Part 2"}, - { "5eda19f0edce541157209cee", "Anesthesia"}, - { "5edab4b1218d181e29451435", "Huntsman path. Sadist"}, - { "5edab736cc183c769d778bc2", "Colleagues. Pt.1"}, - { "5edaba7c0c502106f869bc02", "Colleagues. Pt.2"}, - { "5edac34d0bb72a50635c2bfa", "Colleagues. Pt.3"}, - { "5edabd13218d181e29451442", "Rigged game"}, - { "5edac020218d181e29451446", "Samples"}, - { "5edac63b930f5454f51e128b", "TerraGroup employee"}, - { "5f04886a3937dc337a6b8238", "The chemistry closet"}, - { "5fd9fad9c1ce6b1a3b486d00", "Search Mission"}, - { "600302d73b897b11364cd161", "Hunter"}, - { "6086c852c945025d41566124", "Revision"}, - { "608a768d82e40b3c727fd17d", "Pest control"}, - { "6089736efa70fc097863b8f6", "Back door"}, - { "6089743983426423753cd58a", "Safe corridor"}, - { "608974af4b05530f55550c21", "Inventory check"}, - { "608974d01a66564e74191fc0", "Fuel matter"}, - { "60896bca6ee58f38c417d4f2", "No place for renegades"}, - { "60896e28e4a85c72ef3fa301", "Disease history"}, - { "60896b7bfa70fc097863b8f5", "Documents"}, - { "6089732b59b92115597ad789", "Surplus goods"}, - { "60896888e4a85c72ef3fa300", "Experience exchange"}, - { "60e71dc0a94be721b065bbfc", "Long Line" }, - { "60e71dc67fcf9c556f325056", "Booze" }, - { "60e71e8ed54b755a3b53eb67", "Huntsman Path - Relentless" }, - { "60e729cf5698ee7b05057439", "Swift One" }, - { "60effd818b669d08a35bfad5", "The Choice" }, - { "60e71c11d54b755a3b53eb65", "Night Sweep" }, - { "60e71bb4e456d449cd47ca75", "Intimidator"}, - { "60e71c48c1bfa3050473b8e5", "Crisis"}, - { "60e71b9bbd90872cb85440f3", "Capturing Outposts" }, - { "60e71b62a0beca400d69efc4", "Escort" }, - { "60e71d23c1bfa3050473b8e6", "Calibration" }, - { "60e71c9ad54b755a3b53eb66", "Mutual Interest" } - }; - // Quest to lookup is key, previous quest is PreceedingQuest value - private static readonly Dictionary questWithPreceedingQuest = new Dictionary - { - //{ "5936d90786f7742b1420ba5b", "" }, // Debut - { "5936da9e86f7742d65037edf", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5936d90786f7742b1420ba5b"}}, // checking, debut - { "59674cd986f7744ab26e32f2", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5936da9e86f7742d65037edf"}}, //Shootout picnic, checking - { "59674eb386f774539f14813a", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5936da9e86f7742d65037edf"}}, //Delivery from the past, checking - { "5967530a86f77462ba22226b", new QuestRequirement{QuestStatus = 4, PreceedingQuest="59c124d686f774189b3c843f"}}, // Bad rep evidence, bp depot - { "59675d6c86f7740a842fc482", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5967530a86f77462ba22226b"}}, // Ice cream cones, Bad rep evidence - { "59675ea386f77414b32bded2", new QuestRequirement{QuestStatus = 4, PreceedingQuest="59675d6c86f7740a842fc482"}}, // Postman Pat pt 1, ice cream cones - { "596760e186f7741e11214d58", new QuestRequirement{QuestStatus = 4, PreceedingQuest="59675ea386f77414b32bded2" } }, // Postman Pat, p. 2 - { "5967725e86f774601a446662", new QuestRequirement{QuestStatus = 4, PreceedingQuest="59675d6c86f7740a842fc482"} }, // Shaking up teller, ice cream cones - { "5967733e86f774602332fc84", new QuestRequirement{QuestStatus = 4, PreceedingQuest="" } }, // Shortage - { "59689ee586f7740d1570bbd5", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5967733e86f774602332fc84"}}, //Sanitary Standards, pt1, Shortage - { "59689fbd86f7740d137ebfc4", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5967733e86f774602332fc84"}}, // Operation Aquarius pt1, Shortage - { "5968eb3186f7741dde183a4d", new QuestRequirement{QuestStatus = 4, PreceedingQuest="59689fbd86f7740d137ebfc4"}}, // Operation Aquarius, pt2, Operation Aquarius pt1 - { "5969f90786f77420d2328015", new QuestRequirement{QuestStatus = 4, PreceedingQuest="596a204686f774576d4c95de"}}, // Painkiller, sanitary standards pt2 - { "5969f9e986f7741dde183a50", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5969f90786f77420d2328015"}}, // Pharmacist, Painkiller - { "596a0e1686f7741ddf17dbee", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5969f9e986f7741dde183a50"}}, // Supply plans, Pharmacist - { "596a101f86f7741ddb481582", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5969f9e986f7741dde183a50"}}, //Kind of sabotage, Pharmacist - { "596a1e6c86f7741ddc2d3206", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5969f9e986f7741dde183a50"}}, // General wares, Pharmacist - { "596a204686f774576d4c95de", new QuestRequirement{QuestStatus = 4, PreceedingQuest="59689ee586f7740d1570bbd5"}}, // Sanitary Standards, pt2 - { "596a218586f77420d232807c", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5969f9e986f7741dde183a50"} } , // Car repair - { "596b36c586f77450d6045ad2", new QuestRequirement{QuestStatus = 4, PreceedingQuest=""} }, // Supplier - { "596b43fb86f77457ca186186", new QuestRequirement{QuestStatus = 4, PreceedingQuest="596b36c586f77450d6045ad2"} }, // The Extortionist, Supplier - { "596b455186f77457cb50eccb", new QuestRequirement{QuestStatus = 4, PreceedingQuest="596b43fb86f77457ca186186"}}, // Stirrup, The Extortionist - { "5979ed3886f77431307dc512", new QuestRequirement{QuestStatus = 4, PreceedingQuest="596b43fb86f77457ca186186"}}, // What’s on the flash drive?, The Extortionist - { "5979eee086f774311955e614", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5979ed3886f77431307dc512"} }, // Golden swag, What’s on the flash drive? - { "5979f8bb86f7743ec214c7a6", new QuestRequirement{QuestStatus = 2, PreceedingQuest="5979f9ba86f7740f6c3fe9f2"} }, // Polikhim hobo - { "5979f9ba86f7740f6c3fe9f2", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5979eee086f774311955e614"}}, // Chemical pt1, Golden swag - { "597a0b2986f77426d66c0633", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5979f9ba86f7740f6c3fe9f2"}}, // Chemical pt2, Chemical, p.1 - { "597a0e5786f77426d66c0636", new QuestRequirement{QuestStatus = 4, PreceedingQuest="597a0b2986f77426d66c0633"}}, // Chemical pt3, Chemical, p. 2 - { "597a0f5686f774273b74f676", new QuestRequirement{QuestStatus = 4, PreceedingQuest="597a0e5786f77426d66c0636"}}, // Chemical pt4, Chemical, p. 3 - { "597a160786f77477531d39d2", new QuestRequirement{QuestStatus = 4, PreceedingQuest="597a0e5786f77426d66c0636"}}, // Out of curiosity, Chemical, p. 3 - { "597a171586f77405ba6887d3", new QuestRequirement{QuestStatus = 4, PreceedingQuest="597a0e5786f77426d66c0636"}}, // Big customer, Chemical, p. 3 - { "59c124d686f774189b3c843f", new QuestRequirement{QuestStatus = 4, PreceedingQuest="59674eb386f774539f14813a"}}, // bp depot, delivery from the past - { "59c50a9e86f7745fef66f4ff", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5967725e86f774601a446662"}}, // The Punisher part 1, shaking up teller - { "59c50c8886f7745fed3193bf", new QuestRequirement{QuestStatus = 4, PreceedingQuest="59c50a9e86f7745fef66f4ff"}}, // The Punisher. Part 2 - { "59c512ad86f7741f0d09de9b", new QuestRequirement{QuestStatus = 4, PreceedingQuest="59c50c8886f7745fed3193bf"}}, // The Punisher. Part 3, - { "59c9392986f7742f6923add2", new QuestRequirement{QuestStatus = 4, PreceedingQuest="597a0f5686f774273b74f676"}}, // Trust regain, chemical p4 - { "59c93e8e86f7742a406989c4", new QuestRequirement{QuestStatus = 4, PreceedingQuest="597a0e5786f77426d66c0636"}}, // Loyalty buyout, Chemical, pt3 - { "59ca1a6286f774509a270942", new QuestRequirement{QuestStatus = 5, PreceedingQuest="597a0f5686f774273b74f676"}}, // No offence, Chemical pt4 - { "59ca264786f77445a80ed044", new QuestRequirement{QuestStatus = 4, PreceedingQuest="59c512ad86f7741f0d09de9b"}}, // The Punisher. Part 4, The Punisher. Part 3 - { "59ca29fb86f77445ab465c87", new QuestRequirement{QuestStatus = 4, PreceedingQuest="59ca264786f77445a80ed044"}}, // The Punisher. Part 5, The Punisher. Part 4 - { "59ca2eb686f77445a80ed049", new QuestRequirement{QuestStatus = 4, PreceedingQuest="59ca29fb86f77445ab465c87"}}, // The Punisher. Part 6, The Punisher. Part 5 - { "59f9da6786f774714230d751", new QuestRequirement{QuestStatus = 4, PreceedingQuest=""} }, // no idea - { "5a03153686f77442d90e2171", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a27b87686f77460de0252a8"}}, // Spa Tour. Part 1, Humanitarian Supplies - { "5a03173786f77451cb427172", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a03153686f77442d90e2171"}}, // Spa Tour. Part 2, Spa Tour. Part 1 - { "5a0327ba86f77456b9154236", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a03173786f77451cb427172"}},// Spa Tour. Part 3, Spa Tour. Part 2 - { "5a03296886f774569778596a", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a0327ba86f77456b9154236"}}, // Spa Tour. Part 4, Spa Tour. Part 3 - { "5a0449d586f77474e66227b7", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a03296886f774569778596a"}}, // Spa Tour. Part 5, Spa Tour. Part 4 - { "5a27b75b86f7742e97191958", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a27d2af86f7744e1115b323"}}, // Fishing Gear, Friend from the west part 2 - { "5a27b7a786f774579c3eb376", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a27b75b86f7742e97191958"}}, // Tigr Safari, Fishing Gear - { "5a27b7d686f77460d847e6a6", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a27b7a786f774579c3eb376"}}, // Scrap Metal, Tigr Safari - { "5a27b80086f774429a5d7e20", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a27b7d686f77460d847e6a6"}}, // Eagle Eye, Scrap Metal - { "5a27b87686f77460de0252a8", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a27b80086f774429a5d7e20"}}, // Humanitarian Supplies, Eagle Eye - { "5a27b9de86f77464e5044585", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a27b87686f77460de0252a8"}}, // The Cult. Part 1, Humanitarian Supplies - { "5a27ba1c86f77461ea5a3c56", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a27b9de86f77464e5044585"}}, // The Cult. Part 2, The Cult. Part 1 - { "5a27ba9586f7741b543d8e85", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a0449d586f77474e66227b7"}}, // Spa Tour. Part 6, Spa Tour. Part 5 - { "5a27bafb86f7741c73584017", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a27ba9586f7741b543d8e85"}}, // Spa Tour. Part 7, Spa Tour. Part 6 - { "5a27bb1e86f7741f27621b7e", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a27bafb86f7741c73584017"}}, // Cargo X. Part 1, Spa Tour. Part 7 - { "5a27bb3d86f77411ea361a21", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a27bb1e86f7741f27621b7e"}}, // Cargo X. Part 2, Cargo X. Part 1 - { "5a27bb5986f7741dfb660900", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a27bb3d86f77411ea361a21"}}, // Cargo X. Part 3, Cargo X. Part 2 - { "5a27bb8386f7741c770d2d0a", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a27bafb86f7741c73584017"}}, // Wet Job. Part 1, Spa Tour. Part 7 - { "5a27bbf886f774333a418eeb", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a27bb8386f7741c770d2d0a"}}, // Wet Job. Part 2, Wet Job. Part 1 - { "5a27bc1586f7741f6d40fa2f", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a27bbf886f774333a418eeb"}}, // Wet Job. Part 3, Wet Job. Part 2 - { "5a27bc3686f7741c73584026", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a27bc1586f7741f6d40fa2f"}}, // Wet Job. Part 4, Wet Job. Part 3 - { "5a27bc6986f7741c7358402b", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a27bc3686f7741c73584026"}}, // Wet Job. Part 5, Wet Job. Part 4 - { "5a27bc8586f7741b543d8ea4", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a27bc6986f7741c7358402b"}}, // Wet Job. Part 6, Wet Job. Part 5 - { "5a27c99a86f7747d2c6bdd8e", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5979eee086f774311955e614"}}, // Friend from the West. Part 1, golden swag - { "5a27d2af86f7744e1115b323", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a27c99a86f7747d2c6bdd8e"}}, // Friend from the West. Part 2, Friend from the West. Part 1 - { "5a5642ce86f77445c63c3419", new QuestRequirement{QuestStatus = 4, PreceedingQuest=""} }, // Hippocratic Oath, - { "5a68661a86f774500f48afb0", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5969f9e986f7741dde183a50"}}, // Health Care Privacy. Part 1, - { "5a68663e86f774501078f78a", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a68661a86f774500f48afb0"}}, // Health Care Privacy. Part 2, Health Care Privacy. Part 1 - { "5a68665c86f774255929b4c7", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a68663e86f774501078f78a"}}, // Health Care Privacy. Part 3, Health Care Privacy. Part 2 - { "5a68667486f7742607157d28", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a68665c86f774255929b4c7"}}, // Health Care Privacy. Part 4, Health Care Privacy. Part 3 - { "5a68669a86f774255929b4d4", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a68667486f7742607157d28"}}, // Health Care Privacy. Part 5, Health Care Privacy. Part 4 - { "5ac23c6186f7741247042bad", new QuestRequirement{QuestStatus = 4, PreceedingQuest=""}}, // Gunsmith. Part 1 - { "5ac2426c86f774138762edfe", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ac23c6186f7741247042bad"}}, // Gunsmith. Part 2, Gunsmith. Part 1 - { "5ac2428686f77412450b42bf", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ac2426c86f774138762edfe"}}, // Gunsmith. Part 3, Gunsmith. Part 2 - { "5ac242ab86f77412464f68b4", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ac244eb86f7741356335af1"}}, // Gunsmith. Part 5, Gunsmith. Part 4 - { "5ac244c486f77413e12cf945", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ac242ab86f77412464f68b4"}}, // Gunsmith. Part 6, Gunsmith. Part 5 - { "5ac244eb86f7741356335af1", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ac2428686f77412450b42bf"}},// Gunsmith. Part 4, Gunsmith. Part 3 - { "5ac345dc86f774288030817f", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ac23c6186f7741247042bad" }}, // Farming. Part 1, Gunsmith. Part 1 - { "5ac3460c86f7742880308185", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ac345dc86f774288030817f" }}, // Farming. Part 2, Farming. Part 1 - { "5ac3462b86f7741d6118b983", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ac3460c86f7742880308185" }}, // Farming. Part 3, Farming. Part 2 - { "5ac3464c86f7741d651d6877", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ac3462b86f7741d6118b983" }}, // Farming. Part 4, Farming. Part 3 - { "5ac3467986f7741d6224abc2", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ac2426c86f774138762edfe"}}, // Signal. Part 1, Gunsmith. Part 2 - { "5ac346a886f7744e1b083d67", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ac3467986f7741d6224abc2"}}, // Signal. Part 2, Signal. Part 1 - { "5ac346cf86f7741d63233a02", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ac346a886f7744e1b083d67"}}, // Signal. Part 3, Signal. Part 2 - { "5ac346e886f7741d6118b99b", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ac346cf86f7741d63233a02"}}, // Signal. Part 4, Signal. Part 3 - { "5ac3475486f7741d6224abd3", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ac3460c86f7742880308185"}}, // Bad habit, Farming. Part 2 - { "5ac3477486f7741d651d6885", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ac346a886f7744e1b083d67"}}, // Scout, Signal. Part 2 - { "5ac3479086f7742880308199", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ac3467986f7741d6224abc2"}}, // Insider, Signal. Part 1 - { "5ae3267986f7742a413592fe", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ac244c486f77413e12cf945"}}, // Gunsmith. Part 7, Gunsmith. Part 6 - { "5ae3270f86f77445ba41d4dd", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae3267986f7742a413592fe"}}, // Gunsmith. Part 8, Gunsmith. Part 7 - { "5ae3277186f7745973054106", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae3270f86f77445ba41d4dd"}}, // Gunsmith. Part 9, Gunsmith. Part 8 - { "5ae327c886f7745c7b3f2f3f", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae3277186f7745973054106"}}, // Gunsmith. Part 10, Gunsmith. Part 9 - { "5ae3280386f7742a41359364", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae327c886f7745c7b3f2f3f"}}, // Gunsmith. Part 11, Gunsmith. Part 10 - { "5ae448a386f7744d3730fff0", new QuestRequirement{QuestStatus = 4, PreceedingQuest=""}}, // Only business - { "5ae448bf86f7744d733e55ee", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae448a386f7744d3730fff0"}}, // Make ULTRA Great Again, Only business - { "5ae448e586f7744dcf0c2a67", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae448a386f7744d3730fff0"}}, // Big sale, Only business - { "5ae448f286f77448d73c0131", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae448e586f7744dcf0c2a67"}}, // The Blood of War pt 1, Big sale - { "5ae4490786f7744ca822adcc", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae448f286f77448d73c0131"}}, // Dressed to kill, The Blood of War pt 1 - { "5ae4493486f7744efa289417", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae448e586f7744dcf0c2a67"}}, // Database. Part 1, Big sale - { "5ae4493d86f7744b8e15aa8f", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae4493486f7744efa289417"}}, // Database. Part 2, Database. Part 1 - { "5ae4495086f77443c122bc40", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae4493d86f7744b8e15aa8f"}}, // Sew it good. Part 1, Database. Part 2 - { "5ae4495c86f7744e87761355", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae4495086f77443c122bc40"}}, // Sew it good. Part 2, Sew it good. Part 1 - { "5ae4496986f774459e77beb6", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae4495c86f7744e87761355"}}, // Sew it good. Part 3, Sew it good. Part 2 - { "5ae4497b86f7744cf402ed00", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae4496986f774459e77beb6"}}, // Sew it good. Part 4, Sew it good. Part 3 - { "5ae4498786f7744bde357695", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae4495c86f7744e87761355"}}, // The key to success, Sew it good. Part 2 - { "5ae4499a86f77449783815db", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae4497b86f7744cf402ed00"}}, // Charisma brings success, Sew it good. Part 4 - { "5ae449a586f7744bde357696", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae4498786f7744bde357695"}}, // No fuss needed, The key to success - { "5ae449b386f77446d8741719", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae4490786f7744ca822adcc"}}, // Gratitude, Dressed to kill + Database. Part 2 TODO - { "5ae449c386f7744bde357697", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae449b386f77446d8741719"}}, // Sales Night, Gratitude - { "5ae449d986f774453a54a7e1", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae449c386f7744bde357697"}}, // Supervisor, Sales Night - { "5b47749f86f7746c5d6a5fd4", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae3280386f7742a41359364"}}, // Gunsmith. Part 12, Gunsmith. Part 11 - { "5b47799d86f7746c5d6a5fd8", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5b47749f86f7746c5d6a5fd4"}}, // Gunsmith. Part 13, Gunsmith. Part 12 - { "5b477b6f86f7747290681823", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5b47799d86f7746c5d6a5fd8"}}, // Gunsmith. Part 14, Gunsmith. Part 13 - { "5b477f7686f7744d1b23c4d2", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5b477b6f86f7747290681823"}}, // Gunsmith. Part 15, Gunsmith. Part 14 - { "5b47825886f77468074618d3", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5b477f7686f7744d1b23c4d2"}}, // Gunsmith. Part 16, Gunsmith. Part 15 - { "5b47876e86f7744d1c353205", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae4495086f77443c122bc40"}}, // The Blood of War Part 2, Sew it good. Part 1 - { "5b47891f86f7744d1b23c571", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae4496986f774459e77beb6"}}, // Living high is not a crime, Sew it good. Part 3 - { "5b478b1886f7744d1b23c57d", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae449b386f77446d8741719"}}, // Hot delivery, Gratitude - { "5b478d0f86f7744d190d91b5", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae4493d86f7744b8e15aa8f"}}, // Minibus, Database. Part 2 - { "5b478eca86f7744642012254", new QuestRequirement{QuestStatus = 4, PreceedingQuest="597a0e5786f77426d66c0636"}}, // Vitamins pt1, Chemical pt3 - { "5b478ff486f7744d184ecbbf", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5b478eca86f7744642012254"}}, // Vitamins pt2, Vitamins pt1 - { "5b47926a86f7747ccc057c15", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a27d2af86f7744e1115b323"}}, // Informed means armed, friend from the west part 2 - { "5b4794cb86f774598100d5d4", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a27d2af86f7744e1115b323"}}, // Lend lease, Friend from the west part 2 - { "5b4795fb86f7745876267770", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5b47926a86f7747ccc057c15"}}, // Chumming, Informed means armed - { "5bc4776586f774512d07cf05", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ac242ab86f77412464f68b4"}}, // The Tarkov shooter Part 1", Gunsmith. Part 5 - { "5bc479e586f7747f376c7da3", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5bc4776586f774512d07cf05"}}, // The Tarkov shooter Part 2", The Tarkov shooter Part 1 - { "5bc47dbf86f7741ee74e93b9", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5bc479e586f7747f376c7da3"}}, // The Tarkov shooter. Part 3, The Tarkov shooter Part 2 - { "5bc480a686f7741af0342e29", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5bc47dbf86f7741ee74e93b9"}}, // The Tarkov shooter. Part 4, The Tarkov shooter Part 3 - { "5bc4826c86f774106d22d88b", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5bc480a686f7741af0342e29"}}, // The Tarkov shooter. Part 5, The Tarkov shooter Part 4 - { "5bc4836986f7740c0152911c", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5bc4826c86f774106d22d88b"}}, // The Tarkov shooter. Part 6, The Tarkov shooter Part 5 - { "5bc4856986f77454c317bea7", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5bc4836986f7740c0152911c"}}, // The Tarkov shooter. Part 7, The Tarkov shooter Part 6 - { "5bc4893c86f774626f5ebf3e", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5bc4856986f77454c317bea7"}}, // The Tarkov shooter. Part 8, The Tarkov shooter Part 7 - { "5c0bbaa886f7746941031d82", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5b4795fb86f7745876267770"}}, // Bullshit, Chumming - { "5c0bc91486f7746ab41857a2", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5b4795fb86f7745876267770"}}, // Silent caliber, Chumming - { "5c0bd01e86f7747cdd799e56", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5c0d190cd09282029f5390d8"}}, // Insomnia, Grenadier - { "5c0bd94186f7747a727f09b2", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5c0d190cd09282029f5390d8"}}, // Test drive. Pt. 1, Grenadier - { "5c0bdb5286f774166e38eed4", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5b4795fb86f7745876267770"}}, // Flint, Chumming - { "5c0bde0986f77479cf22c2f8", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ac3462b86f7741d6118b983"}}, // A Shooter Born in Heaven, Farming. Part 3 - { "5c0be13186f7746f016734aa", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a27bc8586f7741b543d8ea4"}}, // Psycho Sniper, Wet Job. Part 6 - { "5c0be5fc86f774467a116593", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a68667486f7742607157d28"}}, // Private clinic, Health Care Privacy. Part 4 - { "5c0d0d5086f774363760aef2", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a68667486f7742607157d28"}}, // Athlete, Health Care Privacy. Part 4 - { "5c0d0f1886f77457b8210226", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5b4794cb86f774598100d5d4"}}, // Lend lease. Part 2, Lend lease. Part 1 - { "5c0d190cd09282029f5390d8", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5967725e86f774601a446662"}}, // Grenadier, Shaking up teller - { "5c0d1c4cd0928202a02a6f5c", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5c0be5fc86f774467a116593"}}, // Decontamination service, Private clinic - { "5c0d4c12d09282029f539173", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5c0d0f1886f77457b8210226"}}, // Peacekeeping mission, Lend lease. Part 2 - { "5c0d4e61d09282029f53920e", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a27bc8586f7741b543d8ea4"}}, // The guide, Wet Job. Part 6 - { "5c10f94386f774227172c572", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5b47876e86f7744d1c353205"}}, // The Blood of War Pt. 3, The Blood of War Pt. 2 - { "5c1128e386f7746565181106", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ac3464c86f7741d651d6877"}}, // Fertilizers, Farming. part 4 - { "5c112d7e86f7740d6f647486", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5b478b1886f7744d1b23c57d"}}, // Scavenger, Hot Delivery - { "5c1141f386f77430ff393792", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5c10f94386f774227172c572"}}, // Living high is not a crime Pt.2, The Blood of War Pt. 3 - { "5c1234c286f77406fa13baeb", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5c0bbaa886f7746941031d82"}}, // Setup, Bullshit - { "5c12452c86f7744b83469073", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5967725e86f774601a446662"}}, // Perfect mediator, Shaking up teller - { "5c139eb686f7747878361a6f", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ac3464c86f7741d651d6877"}}, // Import, Farming. Part 4 - { "5c51aac186f77432ea65c552", new QuestRequirement{QuestStatus = 4, PreceedingQuest=""}}, // Collector - { "5d2495a886f77425cd51e403", new QuestRequirement{QuestStatus = 4, PreceedingQuest=""}}, // Introduction - { "5d24b81486f77439c92d6ba8", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5d2495a886f77425cd51e403"}}, // Acquaintance, Introduction - { "5d25aed386f77442734d25d2", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5d24b81486f77439c92d6ba8"}}, // The survivalist path. Unprotected, but dangerous, Acquaintance - { "5d25b6be86f77444001e1b89", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5d24b81486f77439c92d6ba8"}}, // The survivalist path. Thrifty, Acquaintance - { "5d25bfd086f77442734d3007", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5d25b6be86f77444001e1b89"}}, // The survivalist path. Zhivchik, The survivalist path. Thrifty - { "5d25c81b86f77443e625dd71", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5d25bfd086f77442734d3007"}}, // The survivalist path. Wounded beast, The survivalist path. Zhivchik - { "5d25cf2686f77443e75488d4", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5d25c81b86f77443e625dd71"}}, // The survivalist path. Tough guy, The survivalist path. Wounded beast - { "5d25d2c186f77443e35162e5", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5d25c81b86f77443e625dd71"}}, // The survivalist path. Cold blooded, The survivalist path. Wounded beast - { "5d25dae186f77443e55d2f78", new QuestRequirement{QuestStatus = 4, PreceedingQuest=""}}, // The survivalist path. Zatoichi, REMOVED QUEST MAY 2020 - { "5d25e29d86f7740a22516326", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5d25d2c186f77443e35162e5"}}, // The survivalist path. Eagle-owl, The survivalist path. Cold blooded - { "5d25e2a986f77409dd5cdf2a", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5d25d2c186f77443e35162e5"}}, // The survivalist path. Combat medic, The survivalist path. Cold blooded - { "5eaaaa7c93afa0558f3b5a1c", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5d25d2c186f77443e35162e5"}}, // The survivalist path. Junkie, The survivalist path. Cold blooded - { "5d25e2b486f77409de05bba0", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5d25c81b86f77443e625dd71"}}, // Huntsman path. Secured perimeter, The survivalist path. Wounded beast - { "5d25e2c386f77443e7549029", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5d25e2b486f77409de05bba0"}}, // Huntsman path. The trophy, Huntsman path. Secured perimeter - { "5d25e2cc86f77443e47ae019", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5d25e2b486f77409de05bba0"}}, // Huntsman path. Woods cleaning, Huntsman path. Secured perimeter - { "5d25e2d886f77442734d335e", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5d25e2cc86f77443e47ae019"}}, // Huntsman path. Controller, Huntsman path. Woods cleaning - { "5d25e2e286f77444001e2e48", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5d25e2c386f77443e7549029"}}, // Huntsman path. Sell-out, Huntsman path. The trophy - { "5d25e2ee86f77443e35162ea", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5d25e2e286f77444001e2e48"}}, // Huntsman path. Woods keeper, Huntsman path. Sell-out - { "5d25e43786f7740a212217fa", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5d25e2c386f77443e7549029"}}, // Huntsman path. Justice, Huntsman path. The trophy - { "5d25e44386f77409453bce7b", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5d25e2cc86f77443e47ae019"}}, // Huntsman path. Evil watchman, Huntsman path. Woods cleaning - { "60c0c018f7afb4354815096a", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5d25e2ee86f77443e35162ea"}}, // Huntsman Path. Factory Chief, Huntsman path. Woods keeper - { "5d25e44f86f77443e625e385", new QuestRequirement{QuestStatus = 4, PreceedingQuest="60c0c018f7afb4354815096a"}}, // Huntsman path. Eraser, Huntsman Path - Factory Chief - { "5d25e45e86f77408251c4bfa", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5d25e44f86f77443e625e385"}}, // Huntsman path. Eraser pt. 2, Huntsman path. Eraser - { "5d25e46e86f77409453bce7c", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5d25d2c186f77443e35162e5"}}, // Ambulance, The survivalist path. Cold blooded - { "5d25e48186f77443e625e386", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5d25cf2686f77443e75488d4"}}, // Courtesy visit, Huntsman path. The survivalist path. tough guy - { "5d25e48d86f77408251c4bfb", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5979ed3886f77431307dc512"}}, // Shady business, "What’s on the flash drive?, - { "5d25e4ad86f77443e625e387", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5d25e48186f77443e625e386"}}, // Nostalgia, Courtesy visit - { "5d25e4b786f77408251c4bfc", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5d25e2cc86f77443e47ae019"}}, // Fishing place, Huntsman path. Woods cleaning - { "5d25e4ca86f77409dd5cdf2c", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5d25e2ee86f77443e35162ea"}}, // Hunting trip, Huntsman path. Woods keeper - { "5d25e4d586f77443e625e388", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5d25e2b486f77409de05bba0"}}, // Reserv, - { "5d4bec3486f7743cac246665", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5979f8bb86f7743ec214c7a6"}}, // Regulated materials, polikhim hobo - { "5d6fb2c086f77449da599c24", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a68665c86f774255929b4c7"}}, // An apple a day - keeps the doctor away, Health Care Privacy. Part 3 - { "5d6fbc2886f77449d825f9d3", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a27bc3686f7741c73584026"}}, // Mentor, Wet Job. Part 4 - { "5dc53acb86f77469c740c893", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae4498786f7744bde357695"}}, // The stylish one, The key to success - { "5e381b0286f77420e3417a74", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae4497b86f7744cf402ed00"}}, // Textile. Part 1, Sew it good. Part 4 - { "5e4d515e86f77438b2195244", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5e381b0286f77420e3417a74"}}, // Textile. Part 2, Textile. Part 1 - { "5ede55112c95834b583f052a", new QuestRequirement{QuestStatus = 4, PreceedingQuest="59c124d686f774189b3c843f"}}, // Bunker. Part 1, BP depot - { "5ede567cfa6dc072ce15d6e3", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ede55112c95834b583f052a"}}, // Bunker. Part 2, Bunker. Part 1 - { "5eda19f0edce541157209cee", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5967725e86f774601a446662"}}, // Anesthesia, Shaking up teller - { "5edab4b1218d181e29451435", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5edaba7c0c502106f869bc02"}}, // Huntsman path. Sadist, Colleagues pt 2 - { "5edab736cc183c769d778bc2", new QuestRequirement{QuestStatus = 4, PreceedingQuest="596a1e6c86f7741ddc2d3206"}}, // Colleagues. Pt.1, General Wares - { "5edaba7c0c502106f869bc02", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5edab736cc183c769d778bc2"}}, // Colleagues. Pt.2, Colleagues. Pt.1 - { "5edac34d0bb72a50635c2bfa", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5edaba7c0c502106f869bc02"}}, // Colleagues. Pt.3, Colleagues. Pt.2 - { "5edabd13218d181e29451442", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5eda19f0edce541157209cee"}}, // Rigged game, Anesthesia - { "5edac020218d181e29451446", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5eda19f0edce541157209cee"}}, // Samples, Anesthesia - { "5edac63b930f5454f51e128b", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5edab4b1218d181e29451435"}}, // TerraGroup employee , Huntsman path. Sadist - { "5f04886a3937dc337a6b8238", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5edab736cc183c769d778bc2"}}, // The chemistry closet, Colleagues. Pt.1 - { "5fd9fad9c1ce6b1a3b486d00", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5936d90786f7742b1420ba5b"}}, // Search Mission, Debut - { "600302d73b897b11364cd161", new QuestRequirement{QuestStatus = 4, PreceedingQuest=""}}, // Hunter - { "6086c852c945025d41566124", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a27b80086f774429a5d7e20"}}, // Revision, Eagle Eye - { "608a768d82e40b3c727fd17d", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5d25e2ee86f77443e35162ea"}}, // Pest control, Huntsman path. Woods keeper - { "6089736efa70fc097863b8f6", new QuestRequirement{QuestStatus = 4, PreceedingQuest="6089732b59b92115597ad789"}}, // Back door, Surplus goods - { "6089743983426423753cd58a", new QuestRequirement{QuestStatus = 4, PreceedingQuest="597a0f5686f774273b74f676"}}, // Safe corridor, Chemical pt4 - { "608974af4b05530f55550c21", new QuestRequirement{QuestStatus = 4, PreceedingQuest="608974d01a66564e74191fc0"}}, // Inventory check, A fuel matter - { "608974d01a66564e74191fc0", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae448a386f7744d3730fff0" }}, // Fuel matter, Only Business - { "60896bca6ee58f38c417d4f2", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ede567cfa6dc072ce15d6e3"}}, // No place for renegades, Bunker. Part 2 - { "60896e28e4a85c72ef3fa301", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5969f9e986f7741dde183a50"}}, // Disease history, Pharmacist - { "60896b7bfa70fc097863b8f5", new QuestRequirement{QuestStatus = 4, PreceedingQuest="60896bca6ee58f38c417d4f2"}}, // Documents, No place for renegades - { "6089732b59b92115597ad789", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ac3477486f7741d651d6885"}}, // Surplus goods, Scout - { "60896888e4a85c72ef3fa300", new QuestRequirement{QuestStatus = 4, PreceedingQuest=""}}, // Experience exchange, ???? - { "60e71dc0a94be721b065bbfc", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5ae449d986f774453a54a7e1" }}, // Long Line, Supervisor - { "60e71dc67fcf9c556f325056", new QuestRequirement{QuestStatus = 4, PreceedingQuest="60e71dc0a94be721b065bbfc" }}, // Booze, Long line - //{ "60e71e8ed54b755a3b53eb67", new QuestRequirement{QuestStatus = 4, PreceedingQuest="" }}, // Huntsman Path - Relentless - { "60e729cf5698ee7b05057439", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5edab4b1218d181e29451435" }}, // Swift One, Huntsman path - Sadist - { "60effd818b669d08a35bfad5", new QuestRequirement{QuestStatus = 4, PreceedingQuest="59ca2eb686f77445a80ed049" }}, // The Choice, The Punisher. Part 6 - //{ "60e71c11d54b755a3b53eb65", new QuestRequirement{QuestStatus = 4, PreceedingQuest="" }}, // Night Sweep - //{ "60e71bb4e456d449cd47ca75", new QuestRequirement{QuestStatus = 4, PreceedingQuest=""}}, // Intimidator - //{ "60e71c48c1bfa3050473b8e5", new QuestRequirement{QuestStatus = 4, PreceedingQuest=""}}, // Crisis - //{ "60e71b9bbd90872cb85440f3", new QuestRequirement{QuestStatus = 4, PreceedingQuest="" }}, // Capturing Outposts, - { "60e71b62a0beca400d69efc4", new QuestRequirement{QuestStatus = 4, PreceedingQuest="59ca2eb686f77445a80ed049" }}, // Escort, The Punisher. Part 6 - { "60e71d23c1bfa3050473b8e6", new QuestRequirement{QuestStatus = 4, PreceedingQuest="" }}, // Calibration - { "60e71c9ad54b755a3b53eb66", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5c0d4e61d09282029f53920e" } } // Mutual Interest, The guide - }; private static QuestRoot _liveQuestData; - private static Dictionary _questData; + private static Dictionary _questData; private static List _assortUnlocks; - public static Dictionary GetQuestData(string filename = "quests") + public static Dictionary GetQuestData(string filename = "quests") { if (_questData == null) { @@ -492,7 +28,7 @@ namespace AssortGenerator.Common.Helpers } var questDataJson = File.ReadAllText(questFilePath); - _questData = JsonSerializer.Deserialize>(questDataJson); + _questData = JsonSerializer.Deserialize>(questDataJson); } return _questData; @@ -517,12 +53,7 @@ namespace AssortGenerator.Common.Helpers public static string GetQuestNameById(string id) { - if (!questNames.ContainsKey(id)) - { - return "Unknown quest"; - } - - return questNames[id]; + return QuestNames.GetNameById(id); } public static List GetAssortUnlocks() @@ -557,14 +88,15 @@ namespace AssortGenerator.Common.Helpers return _assortUnlocks; } - public static QuestRequirement GetQuestDependancy(string questId) + public static List GetQuestDependancy(string questId) { - if (questWithPreceedingQuest.ContainsKey(questId)) - { - return questWithPreceedingQuest[questId]; - } + return QuestRequirements.GetQuestRequirements(questId); + } - return null; + public static bool DoesIconExist(string iconPath, string imageId) + { + var filesInPath = Directory.GetFiles(iconPath); + return filesInPath.Any(x => x.Contains(imageId)); } } } diff --git a/QuestValidator.Common/Helpers/QuestRequirements.cs b/QuestValidator.Common/Helpers/QuestRequirements.cs index 7c7918c..088ea7c 100644 --- a/QuestValidator.Common/Helpers/QuestRequirements.cs +++ b/QuestValidator.Common/Helpers/QuestRequirements.cs @@ -30,7 +30,7 @@ namespace QuestValidator.Common.Helpers { Quest.Debut, GetQuestData(Quest.Debut)}, { Quest.Checking, GetQuestData(Quest.Checking).AddPrerequisiteQuest(Quest.Debut, QuestStatus.Success)}, { Quest.ShootoutPicnic, GetQuestData(Quest.ShootoutPicnic).AddPrerequisiteQuest(Quest.Checking, QuestStatus.Success)}, - { Quest.DeliveryFromThePast, GetQuestData(Quest.DeliveryFromThePast).AddPrerequisiteQuest(Quest.ShootoutPicnic, QuestStatus.Success)}, + { Quest.DeliveryFromThePast, GetQuestData(Quest.DeliveryFromThePast).AddPrerequisiteQuest(Quest.Checking, QuestStatus.Success)}, { Quest.BadRepEvidence , GetQuestData(Quest.BadRepEvidence).AddPrerequisiteQuest(Quest.BPDepot, QuestStatus.Success)}, { Quest.IceCreamCones , GetQuestData(Quest.IceCreamCones).AddPrerequisiteQuest(Quest.BadRepEvidence, QuestStatus.Success)}, { Quest.PostmanPatP1 , GetQuestData(Quest.PostmanPatP1).AddPrerequisiteQuest(Quest.IceCreamCones, QuestStatus.Success)}, @@ -69,9 +69,13 @@ namespace QuestValidator.Common.Helpers { Quest.ThePunisherP4, GetQuestData(Quest.ThePunisherP4).AddPrerequisiteQuest(Quest.ThePunisherP3, QuestStatus.Success) }, { Quest.ThePunisherP5, GetQuestData(Quest.ThePunisherP5).AddPrerequisiteQuest(Quest.ThePunisherP4, QuestStatus.Success) }, { Quest.ThePunisherP6, GetQuestData(Quest.ThePunisherP6).AddPrerequisiteQuest(Quest.ThePunisherP5, QuestStatus.Success) }, - { Quest., GetQuestData(Quest.).AddPrerequisiteQuest(Quest., QuestStatus.Success) }, - { Quest., GetQuestData(Quest.).AddPrerequisiteQuest(Quest., QuestStatus.Success) }, - { Quest., GetQuestData(Quest.).AddPrerequisiteQuest(Quest., QuestStatus.Success) }, + //{ Quest., GetQuestData(Quest.).AddPrerequisiteQuest(Quest., QuestStatus.Success) }, // unknown quest 59f9da6786f774714230d751 + { Quest.SpaTourP1, GetQuestData(Quest.SpaTourP1).AddPrerequisiteQuest(Quest.HumanitarianSupplies, QuestStatus.Success) }, + { Quest.SpaTourP2, GetQuestData(Quest.SpaTourP2).AddPrerequisiteQuest(Quest.SpaTourP1, QuestStatus.Success) }, + { Quest.SpaTourP3, GetQuestData(Quest.SpaTourP3).AddPrerequisiteQuest(Quest.SpaTourP2, QuestStatus.Success) }, + { Quest.SpaTourP4, GetQuestData(Quest.SpaTourP4).AddPrerequisiteQuest(Quest.SpaTourP3, QuestStatus.Success) }, + { Quest.SpaTourP5, GetQuestData(Quest.SpaTourP5).AddPrerequisiteQuest(Quest.SpaTourP4, QuestStatus.Success) }, + { Quest.FishingGear, GetQuestData(Quest.FishingGear).AddPrerequisiteQuest(Quest.FriendFromTheWestP2, QuestStatus.Success) }, }; private static readonly Dictionary questWithPreceedingQuest = new Dictionary @@ -121,9 +125,9 @@ namespace QuestValidator.Common.Helpers //{ "59ca264786f77445a80ed044", new QuestRequirement{QuestStatus = 4, PreceedingQuest="59c512ad86f7741f0d09de9b"}}, // The Punisher. Part 4, The Punisher. Part 3 //{ "59ca29fb86f77445ab465c87", new QuestRequirement{QuestStatus = 4, PreceedingQuest="59ca264786f77445a80ed044"}}, // The Punisher. Part 5, The Punisher. Part 4 //{ "59ca2eb686f77445a80ed049", new QuestRequirement{QuestStatus = 4, PreceedingQuest="59ca29fb86f77445ab465c87"}}, // The Punisher. Part 6, The Punisher. Part 5 - { "59f9da6786f774714230d751", new QuestRequirement{QuestStatus = 4, PreceedingQuest=""} }, // no idea - { "5a03153686f77442d90e2171", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a27b87686f77460de0252a8"}}, // Spa Tour. Part 1, Humanitarian Supplies - { "5a03173786f77451cb427172", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a03153686f77442d90e2171"}}, // Spa Tour. Part 2, Spa Tour. Part 1 + //{ "59f9da6786f774714230d751", new QuestRequirement{QuestStatus = 4, PreceedingQuest=""} }, // no idea + //{ "5a03153686f77442d90e2171", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a27b87686f77460de0252a8"}}, // Spa Tour. Part 1, Humanitarian Supplies + //{ "5a03173786f77451cb427172", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a03153686f77442d90e2171"}}, // Spa Tour. Part 2, Spa Tour. Part 1 { "5a0327ba86f77456b9154236", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a03173786f77451cb427172"}},// Spa Tour. Part 3, Spa Tour. Part 2 { "5a03296886f774569778596a", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a0327ba86f77456b9154236"}}, // Spa Tour. Part 4, Spa Tour. Part 3 { "5a0449d586f77474e66227b7", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5a03296886f774569778596a"}}, // Spa Tour. Part 5, Spa Tour. Part 4