439 lines
35 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using QuestValidator.Common.Models;
using QuestValidator.Models;
using QuestValidator.Models.Other;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.Json;
namespace AssortGenerator.Common.Helpers
{
public static class QuestHelper
{
private static readonly Dictionary<string, string> questNames = new Dictionary<string, string>
{
{ "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", "Whats 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" },
{ "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" },
{ "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"},
{ "60c0c018f7afb4354815096a", "Tagilla"},
{ "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 value
private static readonly Dictionary<string, QuestRequirement> questWithPreceedingQuest = new Dictionary<string, QuestRequirement>
{
//{ "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="59675ea386f77414b32bded2"} }, // Shaking up teller, postman part pt 1
{ "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"}}, // Whats on the flash drive?, The Extortionist
{ "5979eee086f774311955e614", new QuestRequirement{QuestStatus = 4, PreceedingQuest="5979ed3886f77431307dc512"} }, // Golden swag, Whats 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 = 4, 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
};
private static QuestRoot _liveQuestData;
private static Dictionary<string, Quest> _questData;
private static List<AssortUnlocks> _assortUnlocks;
public static Dictionary<string, Quest> GetQuestData(string filename = "quests")
{
if (_questData == null)
{
var questFilePath = InputFileHelper.GetInputFilePaths().FirstOrDefault(x => x.Contains(filename));
if (questFilePath == null)
{
return null;
}
var questDataJson = File.ReadAllText(questFilePath);
_questData = JsonSerializer.Deserialize<Dictionary<string, Quest>>(questDataJson);
}
return _questData;
}
public static QuestRoot GetLiveQuestData(string filename = "resp.client.quest.list")
{
if (_liveQuestData == null)
{
var questFilePath = InputFileHelper.GetInputFilePaths().FirstOrDefault(x => x.Contains(filename));
if (questFilePath == null)
{
return null;
}
var questDataJson = File.ReadAllText(questFilePath);
_liveQuestData = JsonSerializer.Deserialize<QuestRoot>(questDataJson);
}
return _liveQuestData;
}
public static string GetQuestNameById(string id)
{
if (!questNames.ContainsKey(id))
{
return "Unknown quest";
}
return questNames[id];
}
public static List<AssortUnlocks> GetAssortUnlocks()
{
if (_assortUnlocks == null)
{
_assortUnlocks = new List<AssortUnlocks>();
foreach (var quest in GetQuestData())
{
foreach (var reward in quest.Value.rewards.Success)
{
if (string.Equals(reward.type, "assortmentunlock", System.StringComparison.OrdinalIgnoreCase))
{
_assortUnlocks.Add(new AssortUnlocks
{
AssortUnlockId = reward.id,
ItemUnlockedId = reward.target,
ItemUnlockedTemplateId = reward.items[0]._tpl,
LoyaltyLevel = (int)reward.loyaltyLevel,
QuestId = quest.Key,
QuestRewardId = reward.id,
TraderId = reward.traderId,
TraderType = TraderHelper.GetTraderTypeById(reward.traderId),
Criteria = "Success"
}
);
}
}
}
}
return _assortUnlocks;
}
public static QuestRequirement GetQuestDependancy(string questId)
{
if (questWithPreceedingQuest.ContainsKey(questId))
{
return questWithPreceedingQuest[questId];
}
return null;
}
}
}