using QuestValidator.Common.Models;
using System.Collections.Generic;

namespace QuestValidator.Common.Helpers
{
    public static class QuestRequirements
    {
        public class QuestData
        {
            public string Id { get; set; }
            public string Name { get; set; }
            public List<PreRequisite> PreRequisites { get; set; }

            public QuestData AddPrerequisiteQuest(Quest quest, QuestStatus status)
            {
                (PreRequisites ??= new List<PreRequisite>()).Add(new PreRequisite { Quest = GetQuestData(quest), QuestStatus = status });

                return this;
            }
        }

        public class PreRequisite
        {
            public QuestStatus QuestStatus { get; set; }
            public QuestData Quest { get; set; }
        }

        private static readonly Dictionary<Quest, QuestData> questWithPreceedingQuestDict = new Dictionary<Quest, QuestData>
        {
            { 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.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)},
            { Quest.PostmanPatP2, GetQuestData(Quest.PostmanPatP2)
                .AddPrerequisiteQuest(Quest.PostmanPatP1, QuestStatus.StartedSuccess)},
            { Quest.ShakingUpTeller, GetQuestData(Quest.ShakingUpTeller)
                .AddPrerequisiteQuest(Quest.IceCreamCones, QuestStatus.Success)},
            { Quest.Shortage, GetQuestData(Quest.Shortage)},
            { Quest.SanitaryStandardsP1, GetQuestData(Quest.SanitaryStandardsP1)
                .AddPrerequisiteQuest(Quest.Shortage, QuestStatus.Success)},
            { Quest.OperationAquarius, GetQuestData(Quest.OperationAquarius)
                .AddPrerequisiteQuest(Quest.Shortage, QuestStatus.Success)},
            { Quest.OperationAquariusP2, GetQuestData(Quest.OperationAquariusP2)
                .AddPrerequisiteQuest(Quest.OperationAquarius, QuestStatus.Success)},
            { Quest.Painkiller, GetQuestData(Quest.Painkiller)
                .AddPrerequisiteQuest(Quest.SanitaryStandardsP2, QuestStatus.Success)},
            { Quest.Pharmacist, GetQuestData(Quest.Pharmacist)
                .AddPrerequisiteQuest(Quest.Painkiller, QuestStatus.Success)},
            { Quest.SupplyPlans, GetQuestData(Quest.SupplyPlans)
                .AddPrerequisiteQuest(Quest.Pharmacist, QuestStatus.Success)},
            { Quest.KindOfSabotage, GetQuestData(Quest.KindOfSabotage)
                .AddPrerequisiteQuest(Quest.SupplyPlans, QuestStatus.Started)
                .AddPrerequisiteQuest(Quest.Pharmacist, QuestStatus.Success)},
            { Quest.GeneralWares, GetQuestData(Quest.GeneralWares)
                .AddPrerequisiteQuest(Quest.Pharmacist, QuestStatus.Success)},
            { Quest.SanitaryStandardsP2, GetQuestData(Quest.SanitaryStandardsP2)
                .AddPrerequisiteQuest(Quest.SanitaryStandardsP1, 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) },
            { Quest.WhatsOnTheFlashDrive, GetQuestData(Quest.WhatsOnTheFlashDrive)
                .AddPrerequisiteQuest(Quest.TheExtortionist, QuestStatus.Success) },
            { Quest.GoldenSwag, GetQuestData(Quest.GoldenSwag)
                .AddPrerequisiteQuest(Quest.WhatsOnTheFlashDrive, QuestStatus.Success) },
            { Quest.PolikhimHobo, GetQuestData(Quest.PolikhimHobo)
                .AddPrerequisiteQuest(Quest.ChemicalP1, QuestStatus.Started) },
            { Quest.ChemicalP1, GetQuestData(Quest.ChemicalP1)
                .AddPrerequisiteQuest(Quest.GoldenSwag, QuestStatus.Success) },
            { Quest.ChemicalP2, GetQuestData(Quest.ChemicalP2)
                .AddPrerequisiteQuest(Quest.ChemicalP1, QuestStatus.Success) },
            { Quest.ChemicalP3, GetQuestData(Quest.ChemicalP3)
                .AddPrerequisiteQuest(Quest.ChemicalP2, QuestStatus.Success) },
            { Quest.ChemicalP4, GetQuestData(Quest.ChemicalP4)
                .AddPrerequisiteQuest(Quest.ChemicalP3, QuestStatus.Success) },
            { Quest.OutOfCuriosity, GetQuestData(Quest.OutOfCuriosity)
                .AddPrerequisiteQuest(Quest.ChemicalP3, QuestStatus.Success) },
            { Quest.BigCustomer, GetQuestData(Quest.BigCustomer)
                .AddPrerequisiteQuest(Quest.ChemicalP4, QuestStatus.Started)
                .AddPrerequisiteQuest(Quest.ChemicalP3, QuestStatus.Success) },
            { Quest.BPDepot, GetQuestData(Quest.BPDepot)
                .AddPrerequisiteQuest(Quest.DeliveryFromThePast, QuestStatus.Success) },
            { Quest.ThePunisherP1, GetQuestData(Quest.ThePunisherP1)
                .AddPrerequisiteQuest(Quest.ShakingUpTeller, QuestStatus.Success) },
            { Quest.ThePunisherP2, GetQuestData(Quest.ThePunisherP2)
                .AddPrerequisiteQuest(Quest.ThePunisherP1, QuestStatus.Success) },
            { Quest.ThePunisherP3, GetQuestData(Quest.ThePunisherP3)
                .AddPrerequisiteQuest(Quest.ThePunisherP2, QuestStatus.Success) },
            { 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.OurOwnLand, GetQuestData(Quest.OurOwnLand)
                .AddPrerequisiteQuest(Quest.ThePunisherP5, QuestStatus.StartedSuccess) },
            { Quest.TrustRegain, GetQuestData(Quest.TrustRegain)
                .AddPrerequisiteQuest(Quest.OutOfCuriosity, QuestStatus.Fail)
                .AddPrerequisiteQuest(Quest.ChemicalP4, QuestStatus.Success) },
            { Quest.LoyaltyBuyout, GetQuestData(Quest.LoyaltyBuyout)
                .AddPrerequisiteQuest(Quest.OutOfCuriosity, QuestStatus.Success) },
            { Quest.NoOffence, GetQuestData(Quest.NoOffence)
                .AddPrerequisiteQuest(Quest.BigCustomer, QuestStatus.Fail) },
            { 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.SpaTourP6, GetQuestData(Quest.SpaTourP6)
                .AddPrerequisiteQuest(Quest.SpaTourP5, QuestStatus.Success) },
            { Quest.SpaTourP7, GetQuestData(Quest.SpaTourP7)
                .AddPrerequisiteQuest(Quest.SpaTourP6, QuestStatus.Success) },
            { Quest.FishingGear, GetQuestData(Quest.FishingGear)
                .AddPrerequisiteQuest(Quest.FriendFromTheWestP1, QuestStatus.Success) },
            { Quest.TigrSafari, GetQuestData(Quest.TigrSafari)
                .AddPrerequisiteQuest(Quest.FishingGear, QuestStatus.Success) },
            { Quest.ScrapMetal, GetQuestData(Quest.ScrapMetal)
                .AddPrerequisiteQuest(Quest.TigrSafari, QuestStatus.Success) },
            { Quest.EagleEye, GetQuestData(Quest.EagleEye)
                .AddPrerequisiteQuest(Quest.ScrapMetal, QuestStatus.Success) },
            { Quest.HumanitarianSupplies, GetQuestData(Quest.HumanitarianSupplies)
                .AddPrerequisiteQuest(Quest.EagleEye, QuestStatus.Success) },
            { Quest.TheCultP1, GetQuestData(Quest.TheCultP1)
                .AddPrerequisiteQuest(Quest.HumanitarianSupplies, QuestStatus.Success)
                .AddPrerequisiteQuest(Quest.EagleEye, QuestStatus.Success)},
            { Quest.TheCultP2, GetQuestData(Quest.TheCultP2)
                .AddPrerequisiteQuest(Quest.TheCultP1, QuestStatus.Success) },
            { Quest.CargoXP1, GetQuestData(Quest.CargoXP1)
                .AddPrerequisiteQuest(Quest.SpaTourP7, QuestStatus.Success) },
            { Quest.CargoXP2, GetQuestData(Quest.CargoXP2)
                .AddPrerequisiteQuest(Quest.CargoXP1, QuestStatus.Success) },
            { Quest.CargoXP3, GetQuestData(Quest.CargoXP3)
                .AddPrerequisiteQuest(Quest.CargoXP2, QuestStatus.Success) },
            { Quest.CargoXP4, GetQuestData(Quest.CargoXP4)
                .AddPrerequisiteQuest(Quest.CargoXP3, QuestStatus.Success) },
            { Quest.WetJobP1, GetQuestData(Quest.WetJobP1)
                .AddPrerequisiteQuest(Quest.SpaTourP7, QuestStatus.Success) },
            { Quest.WetJobP2, GetQuestData(Quest.WetJobP2)
                .AddPrerequisiteQuest(Quest.WetJobP1, QuestStatus.Success) },
            { Quest.WetJobP3, GetQuestData(Quest.WetJobP3)
                .AddPrerequisiteQuest(Quest.WetJobP2, QuestStatus.Success) },
            { Quest.WetJobP4, GetQuestData(Quest.WetJobP4)
                .AddPrerequisiteQuest(Quest.WetJobP3, QuestStatus.Success) },
            { Quest.WetJobP5, GetQuestData(Quest.WetJobP5)
                .AddPrerequisiteQuest(Quest.WetJobP4, QuestStatus.Success) },
            { Quest.WetJobP6, GetQuestData(Quest.WetJobP6)
                .AddPrerequisiteQuest(Quest.WetJobP5, QuestStatus.Success) },
            { Quest.FriendFromTheWestP1, GetQuestData(Quest.FriendFromTheWestP1)
                .AddPrerequisiteQuest(Quest.GoldenSwag, QuestStatus.Success) },
            { Quest.FriendFromTheWestP2, GetQuestData(Quest.FriendFromTheWestP2)
                .AddPrerequisiteQuest(Quest.FriendFromTheWestP1, QuestStatus.Success) },
            { Quest.HippocraticOath, GetQuestData(Quest.HippocraticOath)
                .AddPrerequisiteQuest(Quest.CarRepair, QuestStatus.Success)
                .AddPrerequisiteQuest(Quest.Stirrup, QuestStatus.Success)},
            { Quest.HealthCarePrivacyP1, GetQuestData(Quest.HealthCarePrivacyP1)
                .AddPrerequisiteQuest(Quest.Pharmacist, QuestStatus.Success) },
            { Quest.HealthCarePrivacyP2, GetQuestData(Quest.HealthCarePrivacyP2)
                .AddPrerequisiteQuest(Quest.HealthCarePrivacyP1, QuestStatus.Success) },
            { Quest.HealthCarePrivacyP3, GetQuestData(Quest.HealthCarePrivacyP3)
                .AddPrerequisiteQuest(Quest.HealthCarePrivacyP2, QuestStatus.Success) },
            { Quest.HealthCarePrivacyP4, GetQuestData(Quest.HealthCarePrivacyP4)
                .AddPrerequisiteQuest(Quest.HealthCarePrivacyP3, QuestStatus.Success) },
            { Quest.HealthCarePrivacyP5, GetQuestData(Quest.HealthCarePrivacyP5)
                .AddPrerequisiteQuest(Quest.HealthCarePrivacyP4, QuestStatus.Success) },
            { Quest.GunsmithP1, GetQuestData(Quest.GunsmithP1) },
            { Quest.GunsmithP2, GetQuestData(Quest.GunsmithP2)
                .AddPrerequisiteQuest(Quest.GunsmithP1, QuestStatus.Success) },
            { Quest.GunsmithP3, GetQuestData(Quest.GunsmithP3)
                .AddPrerequisiteQuest(Quest.GunsmithP1, QuestStatus.Success) },
            { Quest.GunsmithP4, GetQuestData(Quest.GunsmithP4)
                .AddPrerequisiteQuest(Quest.GunsmithP2, QuestStatus.Success)
                .AddPrerequisiteQuest(Quest.GunsmithP3, QuestStatus.Success) },
            { Quest.GunsmithP5, GetQuestData(Quest.GunsmithP5)
                .AddPrerequisiteQuest(Quest.GunsmithP4, QuestStatus.Success) },
            { Quest.GunsmithP6, GetQuestData(Quest.GunsmithP6)
                .AddPrerequisiteQuest(Quest.GunsmithP5, QuestStatus.Success) },
            { Quest.GunsmithP7, GetQuestData(Quest.GunsmithP7)
                .AddPrerequisiteQuest(Quest.GunsmithP6, QuestStatus.Success) },
            { Quest.GunsmithP8, GetQuestData(Quest.GunsmithP8)
                .AddPrerequisiteQuest(Quest.GunsmithP7, QuestStatus.Success) },
            { Quest.GunsmithP9, GetQuestData(Quest.GunsmithP9)
                .AddPrerequisiteQuest(Quest.GunsmithP8, QuestStatus.Success) },
            { Quest.GunsmithP10, GetQuestData(Quest.GunsmithP10)
                .AddPrerequisiteQuest(Quest.GunsmithP9, QuestStatus.Success) },
            { Quest.GunsmithP11, GetQuestData(Quest.GunsmithP11)
                .AddPrerequisiteQuest(Quest.GunsmithP10, QuestStatus.Success) },
            { Quest.GunsmithP12, GetQuestData(Quest.GunsmithP12)
                .AddPrerequisiteQuest(Quest.GunsmithP11, QuestStatus.Success) },
            { Quest.GunsmithP13, GetQuestData(Quest.GunsmithP13)
                .AddPrerequisiteQuest(Quest.GunsmithP12, QuestStatus.Success) },
            { Quest.GunsmithP14, GetQuestData(Quest.GunsmithP14)
                .AddPrerequisiteQuest(Quest.GunsmithP13, QuestStatus.Success) },
            { Quest.GunsmithP15, GetQuestData(Quest.GunsmithP15)
                .AddPrerequisiteQuest(Quest.GunsmithP14, QuestStatus.Success) },
            { Quest.GunsmithP16, GetQuestData(Quest.GunsmithP16)
                .AddPrerequisiteQuest(Quest.GunsmithP15, QuestStatus.Success) },
            { Quest.GunsmithP17, GetQuestData(Quest.GunsmithP17)
                .AddPrerequisiteQuest(Quest.GunsmithP16, QuestStatus.Success) },
            { Quest.GunsmithP18, GetQuestData(Quest.GunsmithP18)
                .AddPrerequisiteQuest(Quest.GunsmithP17, QuestStatus.Success) },
            { Quest.GunsmithP19, GetQuestData(Quest.GunsmithP19)
                .AddPrerequisiteQuest(Quest.GunsmithP18, QuestStatus.Success) },
            { Quest.GunsmithP20, GetQuestData(Quest.GunsmithP20)
                .AddPrerequisiteQuest(Quest.GunsmithP19, QuestStatus.Success) },
            { Quest.GunsmithP21, GetQuestData(Quest.GunsmithP21)
                .AddPrerequisiteQuest(Quest.GunsmithP20, QuestStatus.Success) },
            { Quest.GunsmithP22, GetQuestData(Quest.GunsmithP22)
                .AddPrerequisiteQuest(Quest.GunsmithP21, QuestStatus.Success) },
            { Quest.FarmingP1, GetQuestData(Quest.FarmingP1)
                .AddPrerequisiteQuest(Quest.GunsmithP1, QuestStatus.Success) },
            { Quest.FarmingP2, GetQuestData(Quest.FarmingP2)
                .AddPrerequisiteQuest(Quest.FarmingP1, QuestStatus.Success) },
            { Quest.FarmingP3, GetQuestData(Quest.FarmingP3)
                .AddPrerequisiteQuest(Quest.FarmingP2, QuestStatus.Success) },
            { Quest.FarmingP4, GetQuestData(Quest.FarmingP4)
                .AddPrerequisiteQuest(Quest.FarmingP3, QuestStatus.Success) },
            { Quest.SignalP1, GetQuestData(Quest.SignalP1)
                .AddPrerequisiteQuest(Quest.GunsmithP2, QuestStatus.Success) },
            { Quest.SignalP2, GetQuestData(Quest.SignalP2)
                .AddPrerequisiteQuest(Quest.SignalP1, QuestStatus.Success) },
            { Quest.SignalP3, GetQuestData(Quest.SignalP3)
                .AddPrerequisiteQuest(Quest.SignalP2, QuestStatus.Success) },
            { Quest.SignalP4, GetQuestData(Quest.SignalP4)
                .AddPrerequisiteQuest(Quest.SignalP3, QuestStatus.Success) },
            { Quest.BadHabit, GetQuestData(Quest.BadHabit)
                .AddPrerequisiteQuest(Quest.FarmingP2, QuestStatus.Success) },
            { Quest.Scout, GetQuestData(Quest.Scout)
                .AddPrerequisiteQuest(Quest.SignalP2, QuestStatus.Success) },
            { Quest.Insider, GetQuestData(Quest.Insider)
                .AddPrerequisiteQuest(Quest.SignalP1, QuestStatus.Success)
                .AddPrerequisiteQuest(Quest.GunsmithP3, QuestStatus.Success) },
            { Quest.OnlyBusiness, GetQuestData(Quest.OnlyBusiness)},
            { Quest.MakeUltraGreatAgain, GetQuestData(Quest.MakeUltraGreatAgain)
                .AddPrerequisiteQuest(Quest.OnlyBusiness, QuestStatus.Success) },
            { Quest.BigSale, GetQuestData(Quest.BigSale)
                .AddPrerequisiteQuest(Quest.OnlyBusiness, QuestStatus.Success) },
            { Quest.DressedToKill, GetQuestData(Quest.DressedToKill)
                .AddPrerequisiteQuest(Quest.TheBloodOfWarP1, QuestStatus.Success) },
            { Quest.DatabaseP1, GetQuestData(Quest.DatabaseP1)
                .AddPrerequisiteQuest(Quest.BigSale, QuestStatus.Success) },
            { Quest.DatabaseP2, GetQuestData(Quest.DatabaseP2)
                .AddPrerequisiteQuest(Quest.DatabaseP1, QuestStatus.Success) },
            { Quest.SewItGoodP1, GetQuestData(Quest.SewItGoodP1)
                .AddPrerequisiteQuest(Quest.DatabaseP2, QuestStatus.Success) },
            { Quest.SewItGoodP2, GetQuestData(Quest.SewItGoodP2)
                .AddPrerequisiteQuest(Quest.SewItGoodP1, QuestStatus.Success) },
            { Quest.SewItGoodP3, GetQuestData(Quest.SewItGoodP3)
                .AddPrerequisiteQuest(Quest.SewItGoodP2, QuestStatus.Success) },
            { Quest.SewItGoodP4, GetQuestData(Quest.SewItGoodP4)
                .AddPrerequisiteQuest(Quest.SewItGoodP3, QuestStatus.Success) },
            { Quest.TheKeyToSuccess, GetQuestData(Quest.TheKeyToSuccess)
                .AddPrerequisiteQuest(Quest.SewItGoodP2, QuestStatus.Success) },
            { Quest.CharismaBringsSuccess, GetQuestData(Quest.CharismaBringsSuccess)
                .AddPrerequisiteQuest(Quest.SewItGoodP4, QuestStatus.Success) },
            { Quest.NoFussNeeded, GetQuestData(Quest.NoFussNeeded)
                .AddPrerequisiteQuest(Quest.TheKeyToSuccess, QuestStatus.Success) },
            { Quest.Gratitude, GetQuestData(Quest.Gratitude)
                .AddPrerequisiteQuest(Quest.DressedToKill, QuestStatus.Success)
                .AddPrerequisiteQuest(Quest.DatabaseP2, QuestStatus.Success) },
            { Quest.SalesNight, GetQuestData(Quest.SalesNight)
                .AddPrerequisiteQuest(Quest.Gratitude, QuestStatus.Success) },
            { Quest.Supervisor, GetQuestData(Quest.Supervisor)
                .AddPrerequisiteQuest(Quest.SalesNight, QuestStatus.Success)
                .AddPrerequisiteQuest(Quest.TheKeyToSuccess, QuestStatus.Success)},
            { Quest.LivingHighIsNotACrime, GetQuestData(Quest.LivingHighIsNotACrime)
                .AddPrerequisiteQuest(Quest.SewItGoodP3, QuestStatus.Success) },
            { Quest.HotDelivery, GetQuestData(Quest.HotDelivery)
                .AddPrerequisiteQuest(Quest.Gratitude, QuestStatus.Success) },
            { Quest.Minibus, GetQuestData(Quest.Minibus)
                .AddPrerequisiteQuest(Quest.DatabaseP2, QuestStatus.Success) },
            { Quest.VitaminsP1, GetQuestData(Quest.VitaminsP1)
                .AddPrerequisiteQuest(Quest.ChemicalP3, QuestStatus.Success) },
            { Quest.VitaminsP2, GetQuestData(Quest.VitaminsP2)
                .AddPrerequisiteQuest(Quest.VitaminsP1, QuestStatus.Success) },
            { Quest.InformedMeansArmed, GetQuestData(Quest.InformedMeansArmed)
                .AddPrerequisiteQuest(Quest.FriendFromTheWestP2, QuestStatus.Success) },
            { Quest.Chumming, GetQuestData(Quest.Chumming)
                .AddPrerequisiteQuest(Quest.InformedMeansArmed, QuestStatus.Success) },
            { Quest.TheTarkovShooterP1, GetQuestData(Quest.TheTarkovShooterP1)
                .AddPrerequisiteQuest(Quest.TheSurvivalistPathUnprotectedButDangerous, QuestStatus.Success) },
            { Quest.TheTarkovShooterP2, GetQuestData(Quest.TheTarkovShooterP2)
                .AddPrerequisiteQuest(Quest.TheTarkovShooterP1, QuestStatus.Success) },
            { Quest.TheTarkovShooterP3, GetQuestData(Quest.TheTarkovShooterP3)
                .AddPrerequisiteQuest(Quest.TheTarkovShooterP2, QuestStatus.Success) },
            { Quest.TheTarkovShooterP4, GetQuestData(Quest.TheTarkovShooterP4)
                .AddPrerequisiteQuest(Quest.TheTarkovShooterP3, QuestStatus.Success) },
            { Quest.TheTarkovShooterP5, GetQuestData(Quest.TheTarkovShooterP5)
                .AddPrerequisiteQuest(Quest.TheTarkovShooterP4, QuestStatus.Success) },
            { Quest.TheTarkovShooterP6, GetQuestData(Quest.TheTarkovShooterP6)
                .AddPrerequisiteQuest(Quest.TheTarkovShooterP5, QuestStatus.Success) },
            { Quest.TheTarkovShooterP7, GetQuestData(Quest.TheTarkovShooterP7)
                .AddPrerequisiteQuest(Quest.TheTarkovShooterP6, QuestStatus.Success) },
            { Quest.TheTarkovShooterP8, GetQuestData(Quest.TheTarkovShooterP8)
                .AddPrerequisiteQuest(Quest.TheTarkovShooterP7, QuestStatus.Success) },
            { Quest.Bullshit, GetQuestData(Quest.Bullshit)
                .AddPrerequisiteQuest(Quest.SilentCaliber, QuestStatus.Success) },
            { Quest.SilentCaliber, GetQuestData(Quest.SilentCaliber)
                .AddPrerequisiteQuest(Quest.Chumming, QuestStatus.Success) },
            { Quest.Insomnia, GetQuestData(Quest.Insomnia)
                .AddPrerequisiteQuest(Quest.Grenadier, QuestStatus.Success) },
            { Quest.TestDriveP1, GetQuestData(Quest.TestDriveP1)
                .AddPrerequisiteQuest(Quest.Grenadier, QuestStatus.Success) },
            { Quest.Flint, GetQuestData(Quest.Flint)
                .AddPrerequisiteQuest(Quest.Chumming, QuestStatus.Success) },
            { Quest.AShooterBornInHeaven, GetQuestData(Quest.AShooterBornInHeaven)
                .AddPrerequisiteQuest(Quest.FarmingP3, QuestStatus.Success) },
            { Quest.PsychoSniper, GetQuestData(Quest.PsychoSniper)
                .AddPrerequisiteQuest(Quest.WetJobP6, QuestStatus.Success) },
            { Quest.PrivateClinic, GetQuestData(Quest.PrivateClinic)
                .AddPrerequisiteQuest(Quest.HealthCarePrivacyP4, QuestStatus.Success) },
            { Quest.Athlete, GetQuestData(Quest.Athlete)
                .AddPrerequisiteQuest(Quest.HealthCarePrivacyP4, QuestStatus.Success) },
            { Quest.LendLeaseP1, GetQuestData(Quest.LendLeaseP1)
                .AddPrerequisiteQuest(Quest.FriendFromTheWestP2, 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.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.BigSale, QuestStatus.Success) },
            { Quest.TheBloodOfWarP2, GetQuestData(Quest.TheBloodOfWarP2)
                .AddPrerequisiteQuest(Quest.SewItGoodP1, QuestStatus.Success) },
            { Quest.TheBloodOfWarP3, GetQuestData(Quest.TheBloodOfWarP3)
                .AddPrerequisiteQuest(Quest.TheBloodOfWarP2, QuestStatus.Success) },
            { Quest.Fertilizers, GetQuestData(Quest.Fertilizers)
                .AddPrerequisiteQuest(Quest.FarmingP4, QuestStatus.Success) },
            { Quest.Scavenger, GetQuestData(Quest.Scavenger)
                .AddPrerequisiteQuest(Quest.HotDelivery, QuestStatus.Success) },
            { Quest.LivingHighIsNotACrimeP2, GetQuestData(Quest.LivingHighIsNotACrimeP2)
                .AddPrerequisiteQuest(Quest.TheBloodOfWarP3, QuestStatus.Success) },
            { Quest.Setup, GetQuestData(Quest.Setup)
                .AddPrerequisiteQuest(Quest.Bullshit, QuestStatus.Success) },
            { Quest.PerfectMediator, GetQuestData(Quest.PerfectMediator)
                .AddPrerequisiteQuest(Quest.ShakingUpTeller, QuestStatus.Success) },
            { Quest.Import, GetQuestData(Quest.Import)
                .AddPrerequisiteQuest(Quest.FarmingP4, QuestStatus.Success) },
            { Quest.Collector, GetQuestData(Quest.Collector) },
            { Quest.Introduction, GetQuestData(Quest.Introduction)
                .AddPrerequisiteQuest(Quest.GunsmithP1, QuestStatus.Started)},
            { Quest.Acquaintance, GetQuestData(Quest.Acquaintance)
                .AddPrerequisiteQuest(Quest.Introduction, QuestStatus.Success) },
            { Quest.TheSurvivalistPathUnprotectedButDangerous, GetQuestData(Quest.TheSurvivalistPathUnprotectedButDangerous)
                .AddPrerequisiteQuest(Quest.Acquaintance, QuestStatus.Success) },
            { Quest.TheSurvivalistPathThrifty, GetQuestData(Quest.TheSurvivalistPathThrifty)
                .AddPrerequisiteQuest(Quest.TheSurvivalistPathUnprotectedButDangerous, QuestStatus.Success) },
            { Quest.TheSurvivalistPathZhivchik, GetQuestData(Quest.TheSurvivalistPathZhivchik)
                .AddPrerequisiteQuest(Quest.TheSurvivalistPathThrifty, QuestStatus.Success) },
            { Quest.TheSurvivalistPathWoundedBeast, GetQuestData(Quest.TheSurvivalistPathWoundedBeast)
                .AddPrerequisiteQuest(Quest.TheSurvivalistPathZhivchik, QuestStatus.Success) },
            { Quest.TheSurvivalistPathToughGuy, GetQuestData(Quest.TheSurvivalistPathToughGuy)
                .AddPrerequisiteQuest(Quest.TheSurvivalistPathWoundedBeast, QuestStatus.Success) },
            { Quest.TheSurvivalistPathColdBlooded, GetQuestData(Quest.TheSurvivalistPathColdBlooded)
                .AddPrerequisiteQuest(Quest.TheSurvivalistPathWoundedBeast, QuestStatus.Success) },
            { Quest.TheSurvivalistPathEagleOwl, GetQuestData(Quest.TheSurvivalistPathEagleOwl)
                .AddPrerequisiteQuest(Quest.TheSurvivalistPathToughGuy, QuestStatus.Success) },
            { Quest.TheSurvivalistPathCombatMedic, GetQuestData(Quest.TheSurvivalistPathCombatMedic)
                .AddPrerequisiteQuest(Quest.TheSurvivalistPathEagleOwl, QuestStatus.Success) },
            { Quest.TheSurvivalistPathJunkie, GetQuestData(Quest.TheSurvivalistPathJunkie)
                .AddPrerequisiteQuest(Quest.TheSurvivalistPathColdBlooded, 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)
                .AddPrerequisiteQuest(Quest.HuntsmanPathSecuredPerimeter, QuestStatus.Success) },
            { Quest.HuntsmanPathController, GetQuestData(Quest.HuntsmanPathController)
                .AddPrerequisiteQuest(Quest.HuntsmanPathWoodsCleaning, QuestStatus.Success) },
            { Quest.HuntsmanPathSellOut, GetQuestData(Quest.HuntsmanPathSellOut)
                .AddPrerequisiteQuest(Quest.HuntsmanPathWoodsCleaning, 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) },
            { Quest.HuntsmanPathFactoryChief, GetQuestData(Quest.HuntsmanPathFactoryChief)
                .AddPrerequisiteQuest(Quest.HuntsmanPathWoodsCleaning, QuestStatus.Success)
                .AddPrerequisiteQuest(Quest.Scout, QuestStatus.Success)},
            { Quest.HuntsmanPathEraser, GetQuestData(Quest.HuntsmanPathEraser)
                .AddPrerequisiteQuest(Quest.PestControl, QuestStatus.Success) },
            { Quest.HuntsmanPathEraserP2, GetQuestData(Quest.HuntsmanPathEraserP2)
                .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) },
            { Quest.HuntsmanPathRelentless, GetQuestData(Quest.HuntsmanPathRelentless) },
            { Quest.Ambulance, GetQuestData(Quest.Ambulance)
                .AddPrerequisiteQuest(Quest.ShadyBusiness, QuestStatus.Success) },
            { Quest.CourtesyVisit, GetQuestData(Quest.CourtesyVisit)
                .AddPrerequisiteQuest(Quest.TheSurvivalistPathToughGuy, QuestStatus.Success) },
            { Quest.ShadyBusiness, GetQuestData(Quest.ShadyBusiness)
                .AddPrerequisiteQuest(Quest.WhatsOnTheFlashDrive, QuestStatus.Success) },
            { Quest.Nostalgia, GetQuestData(Quest.Nostalgia)
                .AddPrerequisiteQuest(Quest.CourtesyVisit, QuestStatus.Success) },
            { Quest.FishingPlace, GetQuestData(Quest.FishingPlace)
                .AddPrerequisiteQuest(Quest.Nostalgia, QuestStatus.Success) },
            { Quest.HuntingTrip, GetQuestData(Quest.HuntingTrip)
                .AddPrerequisiteQuest(Quest.HuntsmanPathWoodsKeeper, QuestStatus.Success) },
            { Quest.Reserv, GetQuestData(Quest.Reserv)
                .AddPrerequisiteQuest(Quest.HuntsmanPathSecuredPerimeter, QuestStatus.Success) },
            { Quest.RegulatedMaterials, GetQuestData(Quest.RegulatedMaterials)
                .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.TheKeyToSuccess, QuestStatus.Success) },
            { Quest.TextileP1Usec, GetQuestData(Quest.TextileP1Usec)
                .AddPrerequisiteQuest(Quest.SewItGoodP4, QuestStatus.Success) },
            { Quest.TextileP2Usec, GetQuestData(Quest.TextileP2Usec)
                .AddPrerequisiteQuest(Quest.TextileP1Usec, QuestStatus.Success) },
            { Quest.TextileP1Bear, GetQuestData(Quest.TextileP1Bear)
                .AddPrerequisiteQuest(Quest.SewItGoodP4, QuestStatus.Success) },
            { Quest.TextileP2Bear, GetQuestData(Quest.TextileP2Bear)
                .AddPrerequisiteQuest(Quest.TextileP1Bear, QuestStatus.Success) },
            { Quest.BunkerP1, GetQuestData(Quest.BunkerP1)
                .AddPrerequisiteQuest(Quest.BPDepot, QuestStatus.Success) },
            { Quest.BunkerP2, GetQuestData(Quest.BunkerP2)
                .AddPrerequisiteQuest(Quest.BunkerP1, QuestStatus.Success) },
            { Quest.Anesthesia, GetQuestData(Quest.Anesthesia)
                .AddPrerequisiteQuest(Quest.ShakingUpTeller, QuestStatus.Success) },
            { Quest.Samples, GetQuestData(Quest.Samples)
                .AddPrerequisiteQuest(Quest.Anesthesia, QuestStatus.Success) },
            { Quest.ColleaguesP1, GetQuestData(Quest.ColleaguesP1)
                .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)
                .AddPrerequisiteQuest(Quest.Anesthesia, QuestStatus.Success) },
            { Quest.TerraGroupEmployee, GetQuestData(Quest.TerraGroupEmployee)
                .AddPrerequisiteQuest(Quest.HuntsmanPathSadist, QuestStatus.Success)
                .AddPrerequisiteQuest(Quest.Samples, QuestStatus.Success) },
            { Quest.TheChemistryCloset, GetQuestData(Quest.TheChemistryCloset)
                .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)
                .AddPrerequisiteQuest(Quest.HuntsmanPathWoodsKeeper, QuestStatus.Success) },
            { Quest.BackDoor, GetQuestData(Quest.HuntsmanPathSecuredPerimeter)
                .AddPrerequisiteQuest(Quest.SurplusGoods, QuestStatus.Success) },
            { Quest.SafeCorridor, GetQuestData(Quest.SafeCorridor)
                .AddPrerequisiteQuest(Quest.ChemicalP4, QuestStatus.Success) },
            { Quest.InventoryCheck, GetQuestData(Quest.InventoryCheck)
                .AddPrerequisiteQuest(Quest.FuelMatter, QuestStatus.Success) },
            { Quest.FuelMatter, GetQuestData(Quest.FuelMatter)
                .AddPrerequisiteQuest(Quest.TheBloodOfWarP1, QuestStatus.Success) },
            { Quest.DiseaseHistory, GetQuestData(Quest.DiseaseHistory)
                .AddPrerequisiteQuest(Quest.Pharmacist, QuestStatus.Success) },
            { Quest.Documents, GetQuestData(Quest.Documents)
                .AddPrerequisiteQuest(Quest.NoPlaceForRenegades, QuestStatus.Success)
                .AddPrerequisiteQuest(Quest.IceCreamCones, QuestStatus.Success) },
            { Quest.SurplusGoods, GetQuestData(Quest.SurplusGoods)
                .AddPrerequisiteQuest(Quest.Scout, QuestStatus.Success) },
            { Quest.ClassifiedTechnologies, GetQuestData(Quest.ClassifiedTechnologies)
                .AddPrerequisiteQuest(Quest.Revision, QuestStatus.Success) },
            { Quest.LongLine, GetQuestData(Quest.LongLine)
                .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)
                .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)
                .AddPrerequisiteQuest(Quest.DiseaseHistory, QuestStatus.StartedSuccess)
                .AddPrerequisiteQuest(Quest.Pharmacist, QuestStatus.Success) },
            { 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.TheHermit, GetQuestData(Quest.TheHermit)
                .AddPrerequisiteQuest(Quest.CourtesyVisit, QuestStatus.StartedSuccess)},
            { Quest.LongRoad, GetQuestData(Quest.LongRoad)
                .AddPrerequisiteQuest(Quest.FriendFromTheWestP2, QuestStatus.Success) },
            { Quest.MissingCargo, GetQuestData(Quest.MissingCargo)
                .AddPrerequisiteQuest(Quest.LongRoad, QuestStatus.Success) },
            { Quest.Counteraction, GetQuestData(Quest.Counteraction)
                .AddPrerequisiteQuest(Quest.SpaTourP3, QuestStatus.Success) },
            { Quest.Overpopulation, GetQuestData(Quest.Overpopulation)
                .AddPrerequisiteQuest(Quest.SpaTourP1, QuestStatus.Success) },
            //{ Quest.CommunicationDifficulties, GetQuestData(Quest.CommunicationDifficulties).AddPrerequisiteQuest(Quest.MakeUltraGreatAgain, QuestStatus.Success) },
            { Quest.EnergyCrisis, GetQuestData(Quest.EnergyCrisis)
                .AddPrerequisiteQuest(Quest.FarmingP4, QuestStatus.StartedSuccess)
                .AddPrerequisiteQuest(Quest.PostmanPatP2, QuestStatus.Success) },
            { Quest.CorporateSecrets, GetQuestData(Quest.CorporateSecrets)
                .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) },
            { Quest.Escort, GetQuestData(Quest.Escort)
                .AddPrerequisiteQuest(Quest.ThePunisherP6, QuestStatus.Success) },
            { Quest.CapturingOutposts, GetQuestData(Quest.CapturingOutposts)
                .AddPrerequisiteQuest(Quest.ThePunisherP6, QuestStatus.Success) },
            { Quest.Intimidator, GetQuestData(Quest.Intimidator)
                .AddPrerequisiteQuest(Quest.ThePunisherP6, QuestStatus.Success) },
            { Quest.Crisis, GetQuestData(Quest.Crisis) },
            { Quest.TheCleaner, GetQuestData(Quest.TheCleaner)
                .AddPrerequisiteQuest(Quest.TheGuide, QuestStatus.Success) },
            { Quest.Calibration, GetQuestData(Quest.Calibration)
                .AddPrerequisiteQuest(Quest.TheChemistryCloset, QuestStatus.Success)},
            { Quest.CompensationForDamageTrust, GetQuestData(Quest.CompensationForDamageTrust) },
            { Quest.CompensationForDamageWager, GetQuestData(Quest.CompensationForDamageWager) },
            { Quest.CompensationForDamageWergild, GetQuestData(Quest.CompensationForDamageWergild) },
            { Quest.CompensationForDamageCollection, GetQuestData(Quest.CompensationForDamageCollection) },
            { Quest.CompensationForDamageBarkeep, GetQuestData(Quest.CompensationForDamageBarkeep) },
            { Quest.DrugTrafficking, GetQuestData(Quest.DrugTrafficking)
                .AddPrerequisiteQuest(Quest.LostContact, QuestStatus.Success)},
            { Quest.Reconnaissance, GetQuestData(Quest.Reconnaissance)
                .AddPrerequisiteQuest(Quest.EasyJobPart1, QuestStatus.Success)},
            { Quest.TopSecret, GetQuestData(Quest.TopSecret)
                .AddPrerequisiteQuest(Quest.MissingCargo, QuestStatus.Success)},
            { Quest.BroadcastPart1, GetQuestData(Quest.BroadcastPart1)
                .AddPrerequisiteQuest(Quest.FarmingP2, QuestStatus.Success)},
            { Quest.StrayDogs, GetQuestData(Quest.StrayDogs)
                .AddPrerequisiteQuest(Quest.HuntsmanPathTheTrophy, QuestStatus.Success)},
            { Quest.Trophies, GetQuestData(Quest.Trophies)
                .AddPrerequisiteQuest(Quest.TheCleaner, QuestStatus.Success)},
            { Quest.SpecialEquipment, GetQuestData(Quest.SpecialEquipment)
                .AddPrerequisiteQuest(Quest.Trophies, QuestStatus.Success)},
            { Quest.TheCourier, GetQuestData(Quest.TheCourier)
                .AddPrerequisiteQuest(Quest.Calibration, QuestStatus.Success)},
            { Quest.EventLetters, GetQuestData(Quest.EventLetters) },
            { Quest.TheDeliciousSausage, GetQuestData(Quest.TheDeliciousSausage)
                .AddPrerequisiteQuest(Quest.TheSurvivalistPathThrifty, QuestStatus.Success)},
            { Quest.TestDriveP2, GetQuestData(Quest.TestDriveP2)
                .AddPrerequisiteQuest(Quest.TestDriveP1, QuestStatus.Success)},
            { Quest.PopulationCensus, GetQuestData(Quest.PopulationCensus)
                .AddPrerequisiteQuest(Quest.Pharmacist, QuestStatus.Success)},
            { Quest.UrbanMedicine, GetQuestData(Quest.UrbanMedicine)
                .AddPrerequisiteQuest(Quest.PopulationCensus, QuestStatus.Success)},
            { Quest.HouseArrestPart1, GetQuestData(Quest.HouseArrestPart1)
                .AddPrerequisiteQuest(Quest.Debtor, QuestStatus.Success)},
            { Quest.HouseArrestPart2, GetQuestData(Quest.HouseArrestPart2)
                .AddPrerequisiteQuest(Quest.HouseArrestPart1, QuestStatus.Success)},
              { Quest.Audiophile, GetQuestData(Quest.Audiophile)
                  .AddPrerequisiteQuest(Quest.BalletLover, QuestStatus.Success)
                  .AddPrerequisiteQuest(Quest.Minibus, QuestStatus.Success) },
            { Quest.GloryToCPSU, GetQuestData(Quest.GloryToCPSU)
                .AddPrerequisiteQuest(Quest.YouveGotMail, QuestStatus.Success)},
            { Quest.BalletLover, GetQuestData(Quest.BalletLover)
                .AddPrerequisiteQuest(Quest.Audit, QuestStatus.Success)},
            { Quest.YouveGotMail, GetQuestData(Quest.YouveGotMail)
                .AddPrerequisiteQuest(Quest.PostmanPatP1, QuestStatus.Success)},
            { Quest.YourCarNeedsAService, GetQuestData(Quest.YourCarNeedsAService)
                .AddPrerequisiteQuest(Quest.CargoXP4, QuestStatus.Success)},
            { Quest.Audit, GetQuestData(Quest.Audit)
                .AddPrerequisiteQuest(Quest.OnlyBusiness, QuestStatus.Success)},
            { Quest.BroadcastPart3, GetQuestData(Quest.BroadcastPart3)
                .AddPrerequisiteQuest(Quest.BroadcastPart2, QuestStatus.Success)},
            { Quest.Debtor, GetQuestData(Quest.Debtor)
                .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.KingsOfTheRooftops, GetQuestData(Quest.KingsOfTheRooftops)
                .AddPrerequisiteQuest(Quest.ThePunisherP4, QuestStatus.Success)},
            { Quest.WatchingYou, GetQuestData(Quest.WatchingYou)
                .AddPrerequisiteQuest(Quest.BroadcastPart2, QuestStatus.Success)},
              { Quest.HarleyForever, GetQuestData(Quest.HarleyForever)
                  .AddPrerequisiteQuest(Quest.Audiophile, QuestStatus.Success)},
            { Quest.TheHuntsmanPathAdministrator, GetQuestData(Quest.TheHuntsmanPathAdministrator)
                .AddPrerequisiteQuest(Quest.HuntsmanPathWoodsCleaning, QuestStatus.Success) },
        //    { Quest.GreenCorridor, GetQuestData(Quest.GreenCorridor)
        //          .AddPrerequisiteQuest(Quest., QuestStatus.Success)}, // NO DATA YET
              { Quest.RevisionStreetsOfTarkov, GetQuestData(Quest.RevisionStreetsOfTarkov)
                .AddPrerequisiteQuest(Quest.Revision, QuestStatus.Success) },
            { Quest.Surveillance, GetQuestData(Quest.Surveillance)
                .AddPrerequisiteQuest(Quest.BroadcastPart2, QuestStatus.Success) },
        //      { Quest.NetworkProviderPart1, GetQuestData(Quest.NetworkProviderPart1)
        //          .AddPrerequisiteQuest(Quest., QuestStatus.Success)}, // NO DATA YET
        //      { Quest.NetworkProviderPart2, GetQuestData(Quest.NetworkProviderPart2)
        //          .AddPrerequisiteQuest(Quest., QuestStatus.Success)}, // NO DATA YET
        //      { Quest.AssessmentPart1, GetQuestData(Quest.AssessmentPart1)
        //          .AddPrerequisiteQuest(Quest., QuestStatus.Success)}, // NO DATA YET
        //      { Quest.AssessmentPart2, GetQuestData(Quest.AssessmentPart2)
        //          .AddPrerequisiteQuest(Quest., QuestStatus.Success)}, // NO DATA YET
        //      { Quest.AssessmentPart3, GetQuestData(Quest.AssessmentPart3)
        //          .AddPrerequisiteQuest(Quest., QuestStatus.Success)}, // NO DATA YET
        //      { Quest.KeyToTheTower, GetQuestData(Quest.KeyToTheTower)
        //          .AddPrerequisiteQuest(Quest., QuestStatus.Success)}, // NO DATA YET
        //      { Quest.KnockKnock, GetQuestData(Quest.KnockKnock)
        //          .AddPrerequisiteQuest(Quest., QuestStatus.Success)},// NO DATA YET
        //      { Quest.GettingAcquainted, GetQuestData(Quest.GettingAcquainted)
        //          .AddPrerequisiteQuest(Quest., QuestStatus.Success)},// NO DATA YET
        //      { Quest.MakeAmendsBuyout, GetQuestData(Quest.MakeAmendsBuyout)
        //          .AddPrerequisiteQuest(Quest., QuestStatus.Success)},// NO DATA YET
        //      { Quest.MakeAmendsEquipment, GetQuestData(Quest.MakeAmendsEquipment)
        //          .AddPrerequisiteQuest(Quest., QuestStatus.Success)},// NO DATA YET
        //      { Quest.MakeAmendsSecurity, GetQuestData(Quest.MakeAmendsSecurity)
        //          .AddPrerequisiteQuest(Quest., QuestStatus.Success)},// NO DATA YET
        //      { Quest.MakeAmendsSoftware, GetQuestData(Quest.MakeAmendsSoftware)
        //          .AddPrerequisiteQuest(Quest., QuestStatus.Success)},// NO DATA YET
        //      { Quest.MakeAmendsQuarantine, GetQuestData(Quest.MakeAmendsQuarantine)
        //          .AddPrerequisiteQuest(Quest., QuestStatus.Success)},// NO DATA YET
        //      { Quest.HomeComfort, GetQuestData(Quest.HomeComfort)
        //          .AddPrerequisiteQuest(Quest., QuestStatus.Success)},// NO DATA YET
            { Quest.Slaughterhouse, GetQuestData(Quest.Slaughterhouse)
                .AddPrerequisiteQuest(Quest.TheHuntsmanPathAdministrator, QuestStatus.Success)
                .AddPrerequisiteQuest(Quest.BroadcastPart4, QuestStatus.Success)},
              { Quest.DangerousRoad, GetQuestData(Quest.DangerousRoad)
                  .AddPrerequisiteQuest(Quest.SupplyPlans, QuestStatus.SuccessFail)},
            { Quest.WorstJobInTheWorld, GetQuestData(Quest.WorstJobInTheWorld)
                .AddPrerequisiteQuest(Quest.RevisionStreetsOfTarkov, QuestStatus.Success)
                .AddPrerequisiteQuest(Quest.WetJobP5, QuestStatus.Success)},
        //      { Quest.BestJobInTheWorld, GetQuestData(Quest.BestJobInTheWorld)
        //          .AddPrerequisiteQuest(Quest., QuestStatus.Success)},// NO DATA YET
            { Quest.BroadcastPart4, GetQuestData(Quest.BroadcastPart4)
                .AddPrerequisiteQuest(Quest.BroadcastPart3, QuestStatus.Success)},
              { Quest.RoadClosed, GetQuestData(Quest.RoadClosed)
                  .AddPrerequisiteQuest(Quest.SpaTourP7, QuestStatus.Success)},
        //      { Quest.MakeAmends, GetQuestData(Quest.MakeAmends)
        //          .AddPrerequisiteQuest(Quest., QuestStatus.Success)}// NO DATA YET
        };

        private static QuestData GetQuestData(Quest quest)
        {
            return new QuestData
            {
                Id = QuestNames.GetIdByEnum(quest),
                Name = QuestNames.GetNameByEnum(quest),
            };
        }

        public static List<PreRequisite> GetQuestRequirements(string questId)
        {
            Quest quest = QuestNames.GetEnumById(questId);
            if (questWithPreceedingQuestDict.ContainsKey(quest))
            {
                return questWithPreceedingQuestDict[quest].PreRequisites;
            }

            return null;
        }
    }
}