lots of work on making quest to assort mapping work automatically
This commit is contained in:
parent
a5c91995f2
commit
d7f32db3f1
@ -45,7 +45,7 @@ namespace AssortUpdater
|
||||
}
|
||||
}
|
||||
}
|
||||
assortToAddTo.SubItems.Add(subAssort);
|
||||
assortToAddTo?.SubItems.Add(subAssort);
|
||||
}
|
||||
|
||||
return results;
|
||||
@ -95,24 +95,6 @@ namespace AssortUpdater
|
||||
return results;
|
||||
}
|
||||
|
||||
public class FlatAssort
|
||||
{
|
||||
public FlatAssort()
|
||||
{
|
||||
SubItems = new List<Assort.Item>();
|
||||
BarterDetails = new List<Assort.BarterDetails>();
|
||||
}
|
||||
|
||||
public string AssortId { get; set; }
|
||||
public string ItemId { get; set; }
|
||||
public string ItemName { get; set; }
|
||||
public List<Assort.Item> SubItems { get; set; }
|
||||
public Assort.Item RawItem { get;set;}
|
||||
public int Level { get; set; }
|
||||
public bool IsMoney { get; set; }
|
||||
public List<Assort.BarterDetails> BarterDetails { get; set; }
|
||||
}
|
||||
|
||||
public static Assort UnFlatten(List<FlatAssort> flatAssorts)
|
||||
{
|
||||
var result = new Assort();
|
||||
|
@ -1,4 +1,5 @@
|
||||
using AssortValidator.Common.Helpers;
|
||||
using AssortValidator.Common.Models;
|
||||
using static AssortUpdater.AssortFlattener;
|
||||
|
||||
namespace AssortUpdater
|
||||
|
@ -34,15 +34,15 @@ class Program
|
||||
//LogItemsMissingInLiveAssorts(trader.Key.ToString(), flattenedExistingAssorts, flattenedLiveAssorts);
|
||||
//LogItemsMissingInExistingAssorts(trader.Key.ToString(), flattenedExistingAssorts, flattenedLiveAssorts);
|
||||
|
||||
var flatAssorts = AssortMerger.CreateMergedFlattenedAssorts(trader.Key.ToString(), flattenedLiveAssorts, flattenedExistingAssorts);
|
||||
List<FlatAssort>? flatAssorts = AssortMerger.CreateMergedFlattenedAssorts(trader.Key.ToString(), flattenedLiveAssorts, flattenedExistingAssorts);
|
||||
|
||||
LoggingHelpers.LogInfo($"trader: {TraderHelper.GetTraderIdByName(trader.Key)}");
|
||||
AssortMerger.ListDuplicatesInMergedAssorts(flatAssorts);
|
||||
|
||||
Assort unflattenedAssorts = AssortFlattener.UnFlatten(flatAssorts);
|
||||
JsonWriter.WriteJson(unflattenedAssorts, traderId, Directory.GetCurrentDirectory(), "assort");
|
||||
//JsonWriter.WriteJson(unflattenedAssorts, traderId, Directory.GetCurrentDirectory(), "assort");
|
||||
|
||||
var questAssorts = QuestHelper.CreateQuestAssortsList(traderQuestAssortUnlocks);
|
||||
var questAssorts = QuestHelper.CreateQuestAssortsList(trader.Key, traderQuestAssortUnlocks, flatAssorts);
|
||||
LogQuestUnlocks(questAssorts, unflattenedAssorts);
|
||||
JsonWriter.WriteJson(questAssorts, traderId, Directory.GetCurrentDirectory(), "questassort");
|
||||
}
|
||||
@ -57,11 +57,11 @@ class Program
|
||||
|
||||
var assortData = unflattenedAssorts.items.Find(x => x._id == assortId);
|
||||
|
||||
LoggingHelpers.LogToConsole($"Item {assortId} {assortData?.ItemName} is unlocked by quest {QuestNames.GetNameById(questId)}");
|
||||
LoggingHelpers.LogToConsole($"Assort: {assortId} Item: {assortData?.ItemName} is unlocked by quest {QuestNames.GetNameById(questId)}");
|
||||
}
|
||||
}
|
||||
|
||||
private static void LogItemsMissingInExistingAssorts(string traderName, List<AssortFlattener.FlatAssort> flattenedExistingAssorts, List<AssortFlattener.FlatAssort> flattenedLiveAssorts)
|
||||
private static void LogItemsMissingInExistingAssorts(string traderName, List<FlatAssort> flattenedExistingAssorts, List<FlatAssort> flattenedLiveAssorts)
|
||||
{
|
||||
foreach (var liveAssort in flattenedLiveAssorts)
|
||||
{
|
||||
@ -94,7 +94,7 @@ class Program
|
||||
}
|
||||
}
|
||||
|
||||
private static void LogItemsMissingInLiveAssorts(string traderName, List<AssortFlattener.FlatAssort> flattenedExistingAssorts, List<AssortFlattener.FlatAssort> flattenedLiveAssorts)
|
||||
private static void LogItemsMissingInLiveAssorts(string traderName, List<FlatAssort> flattenedExistingAssorts, List<FlatAssort> flattenedLiveAssorts)
|
||||
{
|
||||
foreach (var existingAssort in flattenedExistingAssorts)
|
||||
{
|
||||
|
33
AssortValidator.Common/Helpers/CurrencyHelper.cs
Normal file
33
AssortValidator.Common/Helpers/CurrencyHelper.cs
Normal file
@ -0,0 +1,33 @@
|
||||
using AssortValidator.Common.Models;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace AssortValidator.Common.Helpers
|
||||
{
|
||||
public static class CurrencyHelper
|
||||
{
|
||||
private static readonly Dictionary<CurrencyEnum, string> questLookup = new()
|
||||
{
|
||||
{ CurrencyEnum.Rouble, "5936d90786f7742b1420ba5b" },
|
||||
{ CurrencyEnum.Euro, "5936da9e86f7742d65037edf" },
|
||||
{ CurrencyEnum.USD, "59674cd986f7744ab26e32f2" },
|
||||
};
|
||||
|
||||
public static string GetCurrencyByEnum(CurrencyEnum currencyType)
|
||||
{
|
||||
return questLookup[currencyType];
|
||||
}
|
||||
|
||||
public static CurrencyEnum GetCurrencyById(string itemId)
|
||||
{
|
||||
foreach (var item in questLookup)
|
||||
{
|
||||
if (item.Value == itemId)
|
||||
{
|
||||
return item.Key;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
65
AssortValidator.Common/Helpers/QuestAssortMappingHelper.cs
Normal file
65
AssortValidator.Common/Helpers/QuestAssortMappingHelper.cs
Normal file
@ -0,0 +1,65 @@
|
||||
using AssortValidator.Common.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using static AssortValidator.Common.Models.Assort;
|
||||
|
||||
namespace AssortValidator.Common.Helpers
|
||||
{
|
||||
public static class QuestAssortMappingHelper
|
||||
{
|
||||
private static readonly Dictionary<string, List<QuestAssortMapping>> mappings = new()
|
||||
{
|
||||
{
|
||||
"59689ee586f7740d1570bbd5",
|
||||
new List<QuestAssortMapping>() { new QuestAssortMapping { QuestType = QuestEnum.SanitaryStandardsP1, ItemTplId = "590c661e86f7741e566b646a", Level = 1, Trader = Trader.Therapist, IsMoneyBarter = false } }
|
||||
}, // car first aid
|
||||
{
|
||||
"5c0bde0986f77479cf22c2f8",
|
||||
new List<QuestAssortMapping>() { new QuestAssortMapping { QuestType = QuestEnum.AShooterBornInHeaven, ItemTplId = "5c127c4486f7745625356c13", Level = 3, Trader = Trader.Mechanic, IsMoneyBarter = false } }
|
||||
},
|
||||
{
|
||||
"5967725e86f774601a446662",
|
||||
new List<QuestAssortMapping>() { new QuestAssortMapping { QuestType = QuestEnum.ShakingUpTeller, ItemTplId = "59c0ec5b86f77435b128bfca", Level = 2, Trader = Trader.Skier, IsMoneyBarter = false } }
|
||||
|
||||
}, // Hexagon 12K 12ga sound suppressor
|
||||
{
|
||||
"5a27b7d686f77460d847e6a6",
|
||||
new List<QuestAssortMapping>() { new QuestAssortMapping { QuestType = QuestEnum.ScrapMetal, ItemTplId = "5926bb2186f7744b1c6c6e60", Trader = Trader.Peacekeeper, Level = 2, IsMoneyBarter = true, SubItemCount = 7 } }
|
||||
|
||||
}, // HK MP5 9x19 submachine gun (Navy 3 Round Burst)
|
||||
{
|
||||
"5ae327c886f7745c7b3f2f3f",
|
||||
new List<QuestAssortMapping>() { new QuestAssortMapping { QuestType = QuestEnum.GunsmithP10, ItemTplId = "5447a9cd4bdc2dbd208b4567", Trader = Trader.Mechanic, Level = 3, IsMoneyBarter = false } }
|
||||
|
||||
}, // Colt M4A1 5.56x45 assault rifle (variant SOPMOD I)
|
||||
{
|
||||
"5c0bbaa886f7746941031d82",
|
||||
new List<QuestAssortMapping>()
|
||||
{ new QuestAssortMapping { QuestType = QuestEnum.Bullshit, ItemTplId = "5c1127d0d174af29be75cf68", Trader = Trader.Skier, Level = 3, IsMoneyBarter = false }, // 12/70 RIP 5 shell ammo box
|
||||
new QuestAssortMapping { QuestType = QuestEnum.Bullshit, ItemTplId = "606587252535c57a13424cfd", Trader = Trader.Skier, Level = 3, IsMoneyBarter = true }} //mutant mk47
|
||||
|
||||
},
|
||||
|
||||
};
|
||||
|
||||
public static List<QuestAssortMapping> GetQuestAssortMappingDetails(string questId)
|
||||
{
|
||||
return mappings[questId];
|
||||
}
|
||||
}
|
||||
|
||||
public class QuestAssortMapping
|
||||
{
|
||||
public QuestEnum QuestType { get; set; }
|
||||
public string ItemTplId { get; set; }
|
||||
public Trader Trader { get; set; }
|
||||
public bool IsMoneyBarter { get; set; }
|
||||
public int Level { get; set; }
|
||||
public CurrencyEnum? CurrencyTypeId { get; set; }
|
||||
|
||||
public int SubItemCount { get; set; }
|
||||
}
|
||||
}
|
@ -1,6 +1,8 @@
|
||||
using AssortHelpers.Common.Helpers;
|
||||
using AssortValidator.Common.Helpers.Models;
|
||||
using AssortValidator.Common.Models;
|
||||
using AssortValidator.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
@ -300,14 +302,15 @@ namespace AssortValidator.Common.Helpers
|
||||
{
|
||||
foreach (var assortUnlockReward in quest.rewards.Success.Where(x => x.type == "AssortmentUnlock"))
|
||||
{
|
||||
results.Add(new QuestAssortUnlock{
|
||||
results.Add(new QuestAssortUnlock
|
||||
{
|
||||
QuestId = quest._id,
|
||||
QuestName = GetQuestNameById(quest._id),
|
||||
TraderId = assortUnlockReward.traderId,
|
||||
TraderType = TraderHelper.GetTraderTypeById(assortUnlockReward.traderId),
|
||||
AssortId = assortUnlockReward.items[0]._id,
|
||||
AssortItems = assortUnlockReward.items,
|
||||
AssortTemplateId = assortUnlockReward.items[0]._tpl,
|
||||
LoyaltyLevel = assortUnlockReward.loyaltyLevel.GetValueOrDefault(0),
|
||||
LoyaltyLevel = assortUnlockReward.loyaltyLevel.GetValueOrDefault(1),
|
||||
QuestState = "success"
|
||||
});
|
||||
}
|
||||
@ -316,17 +319,78 @@ namespace AssortValidator.Common.Helpers
|
||||
return results;
|
||||
}
|
||||
|
||||
public static QuestAssorts CreateQuestAssortsList(IEnumerable<QuestAssortUnlock> questAssortData)
|
||||
public static QuestAssorts CreateQuestAssortsList(Trader trader, IEnumerable<QuestAssortUnlock> questAssortData, List<FlatAssort> flatAssorts)
|
||||
{
|
||||
var result = new QuestAssorts();
|
||||
int count = 1;
|
||||
foreach (var questAssortUnlock in questAssortData)
|
||||
{
|
||||
result.success.Add(questAssortUnlock.AssortId, questAssortUnlock.QuestId);
|
||||
if (questAssortUnlock.QuestId == "5c0bbaa886f7746941031d82")
|
||||
{
|
||||
var x = 1;
|
||||
}
|
||||
|
||||
// find assort by item tpl and level
|
||||
IEnumerable<FlatAssort> associatedAssort = flatAssorts.Where(x => x.ItemId == questAssortUnlock.AssortItems[0]._tpl && x.Level == questAssortUnlock.LoyaltyLevel);
|
||||
|
||||
if (associatedAssort is null || !associatedAssort.Any())
|
||||
{
|
||||
//throw new System.Exception($"no assort found for quest {questAssortUnlock.QuestName}");
|
||||
result.success.Add($"MISSING{count}", questAssortUnlock.QuestId);
|
||||
count++;
|
||||
continue;
|
||||
}
|
||||
|
||||
// just one item found, woo yeah
|
||||
if (associatedAssort.Count() == 1)
|
||||
{
|
||||
result.success.Add(associatedAssort.Single().AssortId, questAssortUnlock.QuestId);
|
||||
continue;
|
||||
}
|
||||
|
||||
// multiple found, time to use hand-made data from QuestAssortMappingHelper
|
||||
if (associatedAssort.Count() > 1)
|
||||
{
|
||||
var matchingAssort = GetMatchingAssortUsingManualMapping(trader, associatedAssort, questAssortUnlock);
|
||||
|
||||
if (matchingAssort.Count == 1)
|
||||
{
|
||||
result.success.Add(associatedAssort.FirstOrDefault().AssortId, questAssortUnlock.QuestId);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (matchingAssort.Count == 0)
|
||||
{
|
||||
result.success.Add($"none found {Guid.NewGuid()}", questAssortUnlock.QuestId);
|
||||
continue;
|
||||
}
|
||||
|
||||
result.success.Add($"too many {Guid.NewGuid()}", questAssortUnlock.QuestId);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private static List<FlatAssort> GetMatchingAssortUsingManualMapping(Trader trader, IEnumerable<FlatAssort> possibleAssorts, QuestAssortUnlock questToFindAssortFor)
|
||||
{
|
||||
var results = new List<FlatAssort>();
|
||||
List<QuestAssortMapping> manualAssortMappings = QuestAssortMappingHelper.GetQuestAssortMappingDetails(questToFindAssortFor.QuestId);
|
||||
var singleMapping = manualAssortMappings.Single(x => x.Trader == trader && x.ItemTplId == questToFindAssortFor.AssortTemplateId && x.Level == questToFindAssortFor.LoyaltyLevel);
|
||||
results = possibleAssorts.Where(x => x.IsMoney == singleMapping.IsMoneyBarter
|
||||
&& trader == singleMapping.Trader
|
||||
&& x.Level == singleMapping.Level
|
||||
&& x.RawItem._tpl == singleMapping.ItemTplId
|
||||
).ToList();
|
||||
|
||||
if (results.Count > 1)
|
||||
{
|
||||
results = results.Where(x => x.SubItems.Count == singleMapping.SubItemCount).ToList();
|
||||
}
|
||||
|
||||
return results;
|
||||
}
|
||||
|
||||
public class QuestAssorts
|
||||
{
|
||||
public QuestAssorts()
|
||||
|
545
AssortValidator.Common/Helpers/QuestNames.cs
Normal file
545
AssortValidator.Common/Helpers/QuestNames.cs
Normal file
@ -0,0 +1,545 @@
|
||||
using AssortValidator.Common.Models;
|
||||
using System.Collections.Generic;
|
||||
namespace QuestValidator.Common.Helpers
|
||||
{
|
||||
public static class QuestNames
|
||||
{
|
||||
private static readonly Dictionary<QuestEnum, string> questLookup = new()
|
||||
{
|
||||
{ QuestEnum.Debut, "5936d90786f7742b1420ba5b" },
|
||||
{ QuestEnum.Checking, "5936da9e86f7742d65037edf"},
|
||||
{ QuestEnum.ShootoutPicnic, "59674cd986f7744ab26e32f2"},
|
||||
{ QuestEnum.DeliveryFromThePast, "59674eb386f774539f14813a"},
|
||||
{ QuestEnum.BadRepEvidence, "5967530a86f77462ba22226b"},
|
||||
{ QuestEnum.IceCreamCones, "59675d6c86f7740a842fc482"},
|
||||
{ QuestEnum.PostmanPatP1, "59675ea386f77414b32bded2"},
|
||||
{ QuestEnum.PostmanPatP2, "596760e186f7741e11214d58"},
|
||||
{ QuestEnum.ShakingUpTeller, "5967725e86f774601a446662"},
|
||||
{ QuestEnum.Shortage, "5967733e86f774602332fc84"},
|
||||
{ QuestEnum.SanitaryStandardsP1, "59689ee586f7740d1570bbd5"},
|
||||
{ QuestEnum.OperationAquarius, "59689fbd86f7740d137ebfc4"},
|
||||
{ QuestEnum.OperationAquariusP2, "5968eb3186f7741dde183a4d"},
|
||||
{ QuestEnum.Painkiller, "5969f90786f77420d2328015"},
|
||||
{ QuestEnum.Pharmacist, "5969f9e986f7741dde183a50"},
|
||||
{ QuestEnum.SupplyPlans, "596a0e1686f7741ddf17dbee"},
|
||||
{ QuestEnum.KindOfSabotage, "596a101f86f7741ddb481582" },
|
||||
{ QuestEnum.GeneralWares, "596a1e6c86f7741ddc2d3206"},
|
||||
{ QuestEnum.SanitaryStandardsP2, "596a204686f774576d4c95de"},
|
||||
{ QuestEnum.CarRepair, "596a218586f77420d232807c"},
|
||||
{ QuestEnum.Supplier, "596b36c586f77450d6045ad2"},
|
||||
{ QuestEnum.TheExtortionist, "596b43fb86f77457ca186186"},
|
||||
{ QuestEnum.Stirrup, "596b455186f77457cb50eccb"},
|
||||
{ QuestEnum.WhatsOnTheFlashDrive, "5979ed3886f77431307dc512"},
|
||||
{ QuestEnum.GoldenSwag, "5979eee086f774311955e614"},
|
||||
{ QuestEnum.PolikhimHobo, "5979f8bb86f7743ec214c7a6"},
|
||||
{ QuestEnum.ChemicalP1, "5979f9ba86f7740f6c3fe9f2"},
|
||||
{ QuestEnum.ChemicalP2, "597a0b2986f77426d66c0633"},
|
||||
{ QuestEnum.ChemicalP3, "597a0e5786f77426d66c0636"},
|
||||
{ QuestEnum.ChemicalP4, "597a0f5686f774273b74f676"},
|
||||
{ QuestEnum.OutOfCuriosity, "597a160786f77477531d39d2"},
|
||||
{ QuestEnum.BigCustomer, "597a171586f77405ba6887d3"},
|
||||
{ QuestEnum.BPDepot, "59c124d686f774189b3c843f"},
|
||||
{ QuestEnum.ThePunisherP1, "59c50a9e86f7745fef66f4ff"},
|
||||
{ QuestEnum.ThePunisherP2, "59c50c8886f7745fed3193bf"},
|
||||
{ QuestEnum.ThePunisherP3, "59c512ad86f7741f0d09de9b"},
|
||||
{ QuestEnum.TrustRegain, "59c9392986f7742f6923add2"},
|
||||
{ QuestEnum.LoyaltyBuyout, "59c93e8e86f7742a406989c4"},
|
||||
{ QuestEnum.NoOffence, "59ca1a6286f774509a270942"},
|
||||
{ QuestEnum.ThePunisherP4, "59ca264786f77445a80ed044"},
|
||||
{ QuestEnum.ThePunisherP5, "59ca29fb86f77445ab465c87"},
|
||||
{ QuestEnum.ThePunisherP6, "59ca2eb686f77445a80ed049"},
|
||||
{ QuestEnum.NoQuestNameGiven, "59f9da6786f774714230d751"},
|
||||
{ QuestEnum.SpaTourP1, "5a03153686f77442d90e2171"},
|
||||
{ QuestEnum.SpaTourP2, "5a03173786f77451cb427172"},
|
||||
{ QuestEnum.SpaTourP3, "5a0327ba86f77456b9154236"},
|
||||
{ QuestEnum.SpaTourP4, "5a03296886f774569778596a"},
|
||||
{ QuestEnum.SpaTourP5, "5a0449d586f77474e66227b7"},
|
||||
{ QuestEnum.FishingGear, "5a27b75b86f7742e97191958"},
|
||||
{ QuestEnum.TigrSafari, "5a27b7a786f774579c3eb376"},
|
||||
{ QuestEnum.ScrapMetal, "5a27b7d686f77460d847e6a6"},
|
||||
{ QuestEnum.EagleEye, "5a27b80086f774429a5d7e20"},
|
||||
{ QuestEnum.HumanitarianSupplies, "5a27b87686f77460de0252a8"},
|
||||
{ QuestEnum.TheCultP1, "5a27b9de86f77464e5044585"},
|
||||
{ QuestEnum.TheCultP2, "5a27ba1c86f77461ea5a3c56"},
|
||||
{ QuestEnum.SpaTourP6, "5a27ba9586f7741b543d8e85"},
|
||||
{ QuestEnum.SpaTourP7, "5a27bafb86f7741c73584017"},
|
||||
{ QuestEnum.CargoXP1, "5a27bb1e86f7741f27621b7e"},
|
||||
{ QuestEnum.CargoXP2, "5a27bb3d86f77411ea361a21"},
|
||||
{ QuestEnum.CargoXP3, "5a27bb5986f7741dfb660900"},
|
||||
{ QuestEnum.WetJobP1, "5a27bb8386f7741c770d2d0a"},
|
||||
{ QuestEnum.WetJobP2, "5a27bbf886f774333a418eeb"},
|
||||
{ QuestEnum.WetJobP3, "5a27bc1586f7741f6d40fa2f"},
|
||||
{ QuestEnum.WetJobP4, "5a27bc3686f7741c73584026"},
|
||||
{ QuestEnum.WetJobP5, "5a27bc6986f7741c7358402b"},
|
||||
{ QuestEnum.WetJobP6, "5a27bc8586f7741b543d8ea4"},
|
||||
{ QuestEnum.FriendFromTheWestP1, "5a27c99a86f7747d2c6bdd8e"},
|
||||
{ QuestEnum.FriendFromTheWestP2, "5a27d2af86f7744e1115b323"},
|
||||
{ QuestEnum.HippocraticVow, "5a5642ce86f77445c63c3419"},
|
||||
{ QuestEnum.HealthCarePrivacyP1, "5a68661a86f774500f48afb0"},
|
||||
{ QuestEnum.HealthCarePrivacyP2, "5a68663e86f774501078f78a"},
|
||||
{ QuestEnum.HealthCarePrivacyP3, "5a68665c86f774255929b4c7"},
|
||||
{ QuestEnum.HealthCarePrivacyP4, "5a68667486f7742607157d28"},
|
||||
{ QuestEnum.HealthCarePrivacyP5, "5a68669a86f774255929b4d4"},
|
||||
{ QuestEnum.GunsmithP1, "5ac23c6186f7741247042bad"},
|
||||
{ QuestEnum.GunsmithP2, "5ac2426c86f774138762edfe"},
|
||||
{ QuestEnum.GunsmithP3, "5ac2428686f77412450b42bf"},
|
||||
{ QuestEnum.GunsmithP5, "5ac242ab86f77412464f68b4"},
|
||||
{ QuestEnum.GunsmithP6, "5ac244c486f77413e12cf945"},
|
||||
{ QuestEnum.GunsmithP4, "5ac244eb86f7741356335af1"},
|
||||
{ QuestEnum.FarmingP1, "5ac345dc86f774288030817f"},
|
||||
{ QuestEnum.FarmingP2, "5ac3460c86f7742880308185"},
|
||||
{ QuestEnum.FarmingP3, "5ac3462b86f7741d6118b983"},
|
||||
{ QuestEnum.FarmingP4, "5ac3464c86f7741d651d6877"},
|
||||
{ QuestEnum.SignalP1, "5ac3467986f7741d6224abc2"},
|
||||
{ QuestEnum.SignalP2, "5ac346a886f7744e1b083d67"},
|
||||
{ QuestEnum.SignalP3, "5ac346cf86f7741d63233a02"},
|
||||
{ QuestEnum.SignalP4, "5ac346e886f7741d6118b99b"},
|
||||
{ QuestEnum.BadHabit, "5ac3475486f7741d6224abd3"},
|
||||
{ QuestEnum.Scout, "5ac3477486f7741d651d6885"},
|
||||
{ QuestEnum.Insider, "5ac3479086f7742880308199"},
|
||||
{ QuestEnum.GunsmithP7, "5ae3267986f7742a413592fe"},
|
||||
{ QuestEnum.GunsmithP8, "5ae3270f86f77445ba41d4dd"},
|
||||
{ QuestEnum.GunsmithP9, "5ae3277186f7745973054106"},
|
||||
{ QuestEnum.GunsmithP10, "5ae327c886f7745c7b3f2f3f"},
|
||||
{ QuestEnum.GunsmithP11, "5ae3280386f7742a41359364"},
|
||||
{ QuestEnum.OnlyBusiness, "5ae448a386f7744d3730fff0"},
|
||||
{ QuestEnum.MakeUltraGreatAgain, "5ae448bf86f7744d733e55ee"},
|
||||
{ QuestEnum.BigSale, "5ae448e586f7744dcf0c2a67"},
|
||||
{ QuestEnum.TheBloodOfWar, "5ae448f286f77448d73c0131"},
|
||||
{ QuestEnum.DressedToKill, "5ae4490786f7744ca822adcc"},
|
||||
{ QuestEnum.DatabaseP1, "5ae4493486f7744efa289417"},
|
||||
{ QuestEnum.DatabaseP2, "5ae4493d86f7744b8e15aa8f"},
|
||||
{ QuestEnum.SewItGoodP1, "5ae4495086f77443c122bc40"},
|
||||
{ QuestEnum.SewItGoodP2, "5ae4495c86f7744e87761355"},
|
||||
{ QuestEnum.SewItGoodP3, "5ae4496986f774459e77beb6"},
|
||||
{ QuestEnum.SewItGoodP4, "5ae4497b86f7744cf402ed00"},
|
||||
{ QuestEnum.TheKeyToSuccess, "5ae4498786f7744bde357695"},
|
||||
{ QuestEnum.CharismaBringsSuccess, "5ae4499a86f77449783815db"},
|
||||
{ QuestEnum.NoFussNeeded, "5ae449a586f7744bde357696"},
|
||||
{ QuestEnum.Gratitude, "5ae449b386f77446d8741719"},
|
||||
{ QuestEnum.SalesNight, "5ae449c386f7744bde357697"},
|
||||
{ QuestEnum.Supervisor, "5ae449d986f774453a54a7e1"},
|
||||
{ QuestEnum.GunsmithP12, "5b47749f86f7746c5d6a5fd4"},
|
||||
{ QuestEnum.GunsmithP13, "5b47799d86f7746c5d6a5fd8"},
|
||||
{ QuestEnum.GunsmithP14, "5b477b6f86f7747290681823"},
|
||||
{ QuestEnum.GunsmithP15, "5b477f7686f7744d1b23c4d2"},
|
||||
{ QuestEnum.GunsmithP16, "5b47825886f77468074618d3"},
|
||||
{ QuestEnum.TheBloodOfWarP2, "5b47876e86f7744d1c353205"},
|
||||
{ QuestEnum.LivingHighIsNotACrime, "5b47891f86f7744d1b23c571"},
|
||||
{ QuestEnum.HotDelivery, "5b478b1886f7744d1b23c57d"},
|
||||
{ QuestEnum.Minibus, "5b478d0f86f7744d190d91b5"},
|
||||
{ QuestEnum.VitaminsP1, "5b478eca86f7744642012254"},
|
||||
{ QuestEnum.VitaminsP2, "5b478ff486f7744d184ecbbf"},
|
||||
{ QuestEnum.InformedMeansArmed, "5b47926a86f7747ccc057c15"},
|
||||
{ QuestEnum.LendLeaseP1, "5b4794cb86f774598100d5d4"},
|
||||
{ QuestEnum.Chumming, "5b4795fb86f7745876267770"},
|
||||
{ QuestEnum.TheTarkovShooterP1, "5bc4776586f774512d07cf05"},
|
||||
{ QuestEnum.TheTarkovShooterP2, "5bc479e586f7747f376c7da3"},
|
||||
{ QuestEnum.TheTarkovShooterP3, "5bc47dbf86f7741ee74e93b9"},
|
||||
{ QuestEnum.TheTarkovShooterP4, "5bc480a686f7741af0342e29"},
|
||||
{ QuestEnum.TheTarkovShooterP5, "5bc4826c86f774106d22d88b"},
|
||||
{ QuestEnum.TheTarkovShooterP6, "5bc4836986f7740c0152911c"},
|
||||
{ QuestEnum.TheTarkovShooterP7, "5bc4856986f77454c317bea7"},
|
||||
{ QuestEnum.TheTarkovShooterP8, "5bc4893c86f774626f5ebf3e"},
|
||||
{ QuestEnum.Bullshit, "5c0bbaa886f7746941031d82"},
|
||||
{ QuestEnum.SilentCaliber, "5c0bc91486f7746ab41857a2"},
|
||||
{ QuestEnum.Insomnia, "5c0bd01e86f7747cdd799e56"},
|
||||
{ QuestEnum.TestDriveP1, "5c0bd94186f7747a727f09b2"},
|
||||
{ QuestEnum.Flint, "5c0bdb5286f774166e38eed4"},
|
||||
{ QuestEnum.AShooterBornInHeaven, "5c0bde0986f77479cf22c2f8"},
|
||||
{ QuestEnum.PsychoSniper, "5c0be13186f7746f016734aa"},
|
||||
{ QuestEnum.PrivateClinic, "5c0be5fc86f774467a116593"},
|
||||
{ QuestEnum.Athlete, "5c0d0d5086f774363760aef2"},
|
||||
{ QuestEnum.LendLeaseP2, "5c0d0f1886f77457b8210226"},
|
||||
{ QuestEnum.Grenadier, "5c0d190cd09282029f5390d8"},
|
||||
{ QuestEnum.DecontaminationService, "5c0d1c4cd0928202a02a6f5c"},
|
||||
{ QuestEnum.PeacekeepingMission, "5c0d4c12d09282029f539173"},
|
||||
{ QuestEnum.TheGuide, "5c0d4e61d09282029f53920e"},
|
||||
{ QuestEnum.TheBloodOfWarP3, "5c10f94386f774227172c572"},
|
||||
{ QuestEnum.Fertilizers, "5c1128e386f7746565181106"},
|
||||
{ QuestEnum.Scavenger, "5c112d7e86f7740d6f647486"},
|
||||
{ QuestEnum.LivingHighIsNotACrimeP2, "5c1141f386f77430ff393792"},
|
||||
{ QuestEnum.Setup, "5c1234c286f77406fa13baeb"},
|
||||
{ QuestEnum.PerfectMediator, "5c12452c86f7744b83469073"},
|
||||
{ QuestEnum.Import, "5c139eb686f7747878361a6f"},
|
||||
{ QuestEnum.Collector, "5c51aac186f77432ea65c552"},
|
||||
{ QuestEnum.Introduction, "5d2495a886f77425cd51e403"},
|
||||
{ QuestEnum.Acquaintance, "5d24b81486f77439c92d6ba8"},
|
||||
{ QuestEnum.TheSurvivalistPathUnprotectedButDangerous, "5d25aed386f77442734d25d2"},
|
||||
{ QuestEnum.TheSurvivalistPathThrifty, "5d25b6be86f77444001e1b89"},
|
||||
{ QuestEnum.TheSurvivalistPathZhivchik, "5d25bfd086f77442734d3007"},
|
||||
{ QuestEnum.TheSurvivalistPathWoundedBeast, "5d25c81b86f77443e625dd71"},
|
||||
{ QuestEnum.TheSurvivalistPathToughGuy, "5d25cf2686f77443e75488d4"},
|
||||
{ QuestEnum.TheSurvivalistPathColdBlooded, "5d25d2c186f77443e35162e5"},
|
||||
{ QuestEnum.TheSurvivalistPathZatoichi, "5d25dae186f77443e55d2f78"},
|
||||
{ QuestEnum.TheSurvivalistPathEagleOwl, "5d25e29d86f7740a22516326"},
|
||||
{ QuestEnum.TheSurvivalistPathCombatMedic, "5d25e2a986f77409dd5cdf2a"},
|
||||
{ QuestEnum.TheSurvivalistPathJunkie, "5eaaaa7c93afa0558f3b5a1c"},
|
||||
{ QuestEnum.HuntsmanPathSecuredPerimeter, "5d25e2b486f77409de05bba0"},
|
||||
{ QuestEnum.HuntsmanPathTheTrophy, "5d25e2c386f77443e7549029"},
|
||||
{ QuestEnum.HuntsmanPathWoodsCleaning, "5d25e2cc86f77443e47ae019"},
|
||||
{ QuestEnum.HuntsmanPathController, "5d25e2d886f77442734d335e"},
|
||||
{ QuestEnum.HuntsmanPathSellOut, "5d25e2e286f77444001e2e48"},
|
||||
{ QuestEnum.HuntsmanPathWoodsKeeper, "5d25e2ee86f77443e35162ea"},
|
||||
{ QuestEnum.HuntsmanPathJustice, "5d25e43786f7740a212217fa"},
|
||||
{ QuestEnum.HuntsmanPathEvilWatchman, "5d25e44386f77409453bce7b"},
|
||||
{ QuestEnum.HuntsmanPathFactoryChief, "60c0c018f7afb4354815096a"},
|
||||
{ QuestEnum.HuntsmanPathEraser, "5d25e44f86f77443e625e385"},
|
||||
{ QuestEnum.HuntsmanPathEraserP2, "5d25e45e86f77408251c4bfa"},
|
||||
{ QuestEnum.Ambulance, "5d25e46e86f77409453bce7c"},
|
||||
{ QuestEnum.CourtesyVisit, "5d25e48186f77443e625e386"},
|
||||
{ QuestEnum.ShadyBusiness, "5d25e48d86f77408251c4bfb"},
|
||||
{ QuestEnum.Nostalgia, "5d25e4ad86f77443e625e387"},
|
||||
{ QuestEnum.FishingPlace, "5d25e4b786f77408251c4bfc"},
|
||||
{ QuestEnum.HuntingTrip, "5d25e4ca86f77409dd5cdf2c"},
|
||||
{ QuestEnum.Reserv, "5d25e4d586f77443e625e388"},
|
||||
{ QuestEnum.RegulatedMaterials, "5d4bec3486f7743cac246665"},
|
||||
{ QuestEnum.AnAppleADayKeepsTheDoctorAway, "5d6fb2c086f77449da599c24"},
|
||||
{ QuestEnum.Mentor, "5d6fbc2886f77449d825f9d3"},
|
||||
{ QuestEnum.TheStylishOne, "5dc53acb86f77469c740c893"},
|
||||
{ QuestEnum.TextileP1Usec, "5e381b0286f77420e3417a74"},
|
||||
{ QuestEnum.TextileP2Usec, "5e4d4ac186f774264f758336"},
|
||||
{ QuestEnum.TextileP1Bear, "5e383a6386f77465910ce1f3"},
|
||||
{ QuestEnum.TextileP2Bear, "5e4d515e86f77438b2195244"},
|
||||
{ QuestEnum.BunkerP1, "5ede55112c95834b583f052a"},
|
||||
{ QuestEnum.BunkerP2, "5ede567cfa6dc072ce15d6e3"},
|
||||
{ QuestEnum.Anesthesia, "5eda19f0edce541157209cee"},
|
||||
{ QuestEnum.HuntsmanPathSadist, "5edab4b1218d181e29451435"},
|
||||
{ QuestEnum.ColleaguesP1, "5edab736cc183c769d778bc2"},
|
||||
{ QuestEnum.ColleaguesP2, "5edaba7c0c502106f869bc02"},
|
||||
{ QuestEnum.ColleaguesP3, "5edac34d0bb72a50635c2bfa"},
|
||||
{ QuestEnum.RiggedGame, "5edabd13218d181e29451442"},
|
||||
{ QuestEnum.Samples, "5edac020218d181e29451446"},
|
||||
{ QuestEnum.TerraGroupEmployee, "5edac63b930f5454f51e128b"},
|
||||
{ QuestEnum.TheChemistryCloset, "5f04886a3937dc337a6b8238"},
|
||||
{ QuestEnum.SearchMission, "5fd9fad9c1ce6b1a3b486d00"},
|
||||
{ QuestEnum.Hunter, "600302d73b897b11364cd161"},
|
||||
{ QuestEnum.Revision, "6086c852c945025d41566124"},
|
||||
{ QuestEnum.PestControl, "608a768d82e40b3c727fd17d"},
|
||||
{ QuestEnum.BackDoor, "6089736efa70fc097863b8f6"},
|
||||
{ QuestEnum.SafeCorridor, "6089743983426423753cd58a"},
|
||||
{ QuestEnum.InventoryCheck, "608974af4b05530f55550c21"},
|
||||
{ QuestEnum.FuelMatter, "608974d01a66564e74191fc0"},
|
||||
{ QuestEnum.NoPlaceForRenegades, "60896bca6ee58f38c417d4f2"},
|
||||
{ QuestEnum.DiseaseHistory, "60896e28e4a85c72ef3fa301"},
|
||||
{ QuestEnum.Documents, "60896b7bfa70fc097863b8f5"},
|
||||
{ QuestEnum.SurplusGoods, "6089732b59b92115597ad789"},
|
||||
{ QuestEnum.ExperienceExchange, "60896888e4a85c72ef3fa300"},
|
||||
{ QuestEnum.LongLine, "60e71dc0a94be721b065bbfc" },
|
||||
{ QuestEnum.Booze, "60e71dc67fcf9c556f325056" },
|
||||
{ QuestEnum.HuntsmanPathRelentless, "60e71e8ed54b755a3b53eb67" },
|
||||
{ QuestEnum.SwiftOne, "60e729cf5698ee7b05057439"},
|
||||
{ QuestEnum.TheChoice, "60effd818b669d08a35bfad5" },
|
||||
{ QuestEnum.NightSweep, "60e71c11d54b755a3b53eb65" },
|
||||
{ QuestEnum.Intimidator, "60e71bb4e456d449cd47ca75"},
|
||||
{ QuestEnum.Crisis, "60e71c48c1bfa3050473b8e5"},
|
||||
{ QuestEnum.CapturingOutposts, "60e71b9bbd90872cb85440f3"},
|
||||
{ QuestEnum.Escort, "60e71b62a0beca400d69efc4"},
|
||||
{ QuestEnum.Calibration, "60e71d23c1bfa3050473b8e6"},
|
||||
{ QuestEnum.MutualInterest, "60e71c9ad54b755a3b53eb66"},
|
||||
{ QuestEnum.EasyJobPart1, "6179ac7511973d018217d0b9" },
|
||||
{ QuestEnum.EasyJobPart2, "6179acbdc760af5ad2053585" },
|
||||
{ QuestEnum.EnergyCrisis, "6179b3a12153c15e937d52bc" },
|
||||
{ QuestEnum.CommunicationDifficulties, "6179ad74bca27a099552e03a" },
|
||||
{ QuestEnum.Overpopulation, "6179aff8f57fb279792c60a1" },
|
||||
{ QuestEnum.SeasideVacation, "6179ad56c760af5ad2053587" },
|
||||
{ QuestEnum.CorporateSecrets, "6179b3bdc7560e13d23eeb8d" },
|
||||
{ QuestEnum.Counteraction, "6179b5eabca27a099552e052" },
|
||||
{ QuestEnum.HuntsmanPathOutcasts, "6179ad0a6e9dd54ac275e3f2" },
|
||||
{ QuestEnum.MissingCargo, "6179b4f16e9dd54ac275e407" },
|
||||
{ QuestEnum.RevisionPart2, "6179b4d1bca27a099552e04e" },
|
||||
{ QuestEnum.OurOwnLand, "6179b5b06e9dd54ac275e409" },
|
||||
{ QuestEnum.TheHermit, "61904daa7d0d857927447b9c" },
|
||||
{ QuestEnum.LongRoad, "6193850f60b34236ee0483de" },
|
||||
{ QuestEnum.CargoXP4, "61958c366726521dd96828ec" },
|
||||
{ QuestEnum.LostContact, "6179afd0bca27a099552e040"},
|
||||
{ QuestEnum.ActionTest, "613708a7f8333a5d15594368"}
|
||||
};
|
||||
|
||||
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 Part 1"},
|
||||
{ "596760e186f7741e11214d58", "Postman Pat Part 2"},
|
||||
{ "5967725e86f774601a446662", "Shaking up teller"},
|
||||
{ "5967733e86f774602332fc84", "Shortage"},
|
||||
{ "59689ee586f7740d1570bbd5", "Sanitary Standards Part 1"},
|
||||
{ "59689fbd86f7740d137ebfc4", "Operation Aquarius Part 1"},
|
||||
{ "5968eb3186f7741dde183a4d", "Operation Aquarius Part 2"},
|
||||
{ "5969f90786f77420d2328015", "Painkiller"},
|
||||
{ "5969f9e986f7741dde183a50", "Pharmacist"},
|
||||
{ "596a0e1686f7741ddf17dbee", "Supply plans"},
|
||||
{ "596a101f86f7741ddb481582", "Kind of sabotage" },
|
||||
{ "596a1e6c86f7741ddc2d3206", "General wares"},
|
||||
{ "596a204686f774576d4c95de", "Sanitary Standards Part 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 Part 1"},
|
||||
{ "597a0b2986f77426d66c0633", "Chemical Part 2"},
|
||||
{ "597a0e5786f77426d66c0636", "Chemical Part 3"},
|
||||
{ "597a0f5686f774273b74f676", "Chemical Part 4"},
|
||||
{ "597a160786f77477531d39d2", "Out of curiosity"},
|
||||
{ "597a171586f77405ba6887d3", "Big customer"},
|
||||
{ "59c124d686f774189b3c843f", "BP depot"},
|
||||
{ "59c50a9e86f7745fef66f4ff", "The Punisher Part 1"},
|
||||
{ "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", "No idea"},
|
||||
{ "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 Part 1"},
|
||||
{ "5b478ff486f7744d184ecbbf", "Vitamins Part 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 Part 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 Part 3" },
|
||||
{ "5c1128e386f7746565181106", "Fertilizers" },
|
||||
{ "5c112d7e86f7740d6f647486", "Scavenger" },
|
||||
{ "5c1141f386f77430ff393792", "Living high is not a crime Part 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 Part 1"},
|
||||
{ "5d25e45e86f77408251c4bfa", "Huntsman path Eraser Part 2"},
|
||||
{ "5edab4b1218d181e29451435", "Huntsman path Sadist"},
|
||||
{ "60e71e8ed54b755a3b53eb67", "Huntsman Path - Relentless" },
|
||||
{ "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 - Usec"},
|
||||
{ "5e4d4ac186f774264f758336", "Textile Part 2 - Usec"},
|
||||
{ "5e383a6386f77465910ce1f3", "Textile Part 1 - Bear"},
|
||||
{ "5e4d515e86f77438b2195244", "Textile Part 2 - Bear"},
|
||||
{ "5ede55112c95834b583f052a", "Bunker Part 1"},
|
||||
{ "5ede567cfa6dc072ce15d6e3", "Bunker Part 2"},
|
||||
{ "5eda19f0edce541157209cee", "Anesthesia"},
|
||||
{ "5edab736cc183c769d778bc2", "Colleagues Part 1"},
|
||||
{ "5edaba7c0c502106f869bc02", "Colleagues Part 2"},
|
||||
{ "5edac34d0bb72a50635c2bfa", "Colleagues Part 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" },
|
||||
{ "60e729cf5698ee7b05057439", "Swift One" },
|
||||
{ "60effd818b669d08a35bfad5", "The Choice" },
|
||||
{ "60e71c11d54b755a3b53eb65", "Night Sweep" },
|
||||
{ "60e71bb4e456d449cd47ca75", "Intimidator"},
|
||||
{ "60e71c48c1bfa3050473b8e5", "Crisis"},
|
||||
{ "60e71b9bbd90872cb85440f3", "Capturing Outposts"},
|
||||
{ "60e71b62a0beca400d69efc4", "Escort"},
|
||||
{ "60e71d23c1bfa3050473b8e6", "Calibration"},
|
||||
{ "60e71c9ad54b755a3b53eb66", "Mutual Interest"},
|
||||
{ "6179ac7511973d018217d0b9", "Easy Job Part 1" },
|
||||
{ "6179acbdc760af5ad2053585", "Easy Job Part 2" },
|
||||
{ "6179b3a12153c15e937d52bc", "Energy Crisis" },
|
||||
{ "6179ad74bca27a099552e03a", "Communication Difficulties" },
|
||||
{ "6179aff8f57fb279792c60a1", "Overpopulation" },
|
||||
{ "6179ad56c760af5ad2053587", "Seaside Vacation" },
|
||||
{ "6179b3bdc7560e13d23eeb8d", "Corporate Secrets" },
|
||||
{ "6179b5eabca27a099552e052", "Counteraction" },
|
||||
{ "6179ad0a6e9dd54ac275e3f2", "Huntsman Path Outcasts" },
|
||||
{ "6179b4f16e9dd54ac275e407", "MissingCargo" },
|
||||
{ "6179b4d1bca27a099552e04e", "Revision Part 2" },
|
||||
{ "6179b5b06e9dd54ac275e409", "Our Own Land" },
|
||||
{ "61904daa7d0d857927447b9c", "The Hermit" },
|
||||
{ "6193850f60b34236ee0483de", "Long Road" },
|
||||
{ "61958c366726521dd96828ec", "Cargo X Part 4" },
|
||||
{ "6179afd0bca27a099552e040", "Lost Contact"},
|
||||
{ "613708a7f8333a5d15594368", "Action Test"}
|
||||
};
|
||||
|
||||
public static string GetNameById(string id)
|
||||
{
|
||||
if (!questNames.ContainsKey(id))
|
||||
{
|
||||
return "Unknown quest";
|
||||
}
|
||||
|
||||
return questNames[id];
|
||||
}
|
||||
|
||||
internal static string GetIdByEnum(QuestEnum quest)
|
||||
{
|
||||
return questLookup[quest];
|
||||
}
|
||||
|
||||
internal static string GetNameByEnum(QuestEnum quest)
|
||||
{
|
||||
var id = GetIdByEnum(quest);
|
||||
return questNames[id];
|
||||
}
|
||||
|
||||
internal static QuestEnum GetEnumById(string questId)
|
||||
{
|
||||
foreach (var quest in questLookup)
|
||||
{
|
||||
if (quest.Value == questId)
|
||||
{
|
||||
return quest.Key;
|
||||
}
|
||||
}
|
||||
|
||||
return QuestEnum.NOQUESTFOUND;
|
||||
}
|
||||
}
|
||||
}
|
9
AssortValidator.Common/Models/CurrencyEnum.cs
Normal file
9
AssortValidator.Common/Models/CurrencyEnum.cs
Normal file
@ -0,0 +1,9 @@
|
||||
namespace AssortValidator.Common.Models
|
||||
{
|
||||
public enum CurrencyEnum
|
||||
{
|
||||
Rouble = 1,
|
||||
Euro = 2,
|
||||
USD = 3,
|
||||
}
|
||||
}
|
23
AssortValidator.Common/Models/FlatAssort.cs
Normal file
23
AssortValidator.Common/Models/FlatAssort.cs
Normal file
@ -0,0 +1,23 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace AssortValidator.Common.Models
|
||||
{
|
||||
public class FlatAssort
|
||||
{
|
||||
public FlatAssort()
|
||||
{
|
||||
SubItems = new List<Assort.Item>();
|
||||
BarterDetails = new List<Assort.BarterDetails>();
|
||||
}
|
||||
|
||||
public string AssortId { get; set; }
|
||||
public string ItemId { get; set; }
|
||||
public string ItemName { get; set; }
|
||||
public List<Assort.Item> SubItems { get; set; }
|
||||
public Assort.Item RawItem { get; set; }
|
||||
public int Level { get; set; }
|
||||
public bool IsMoney { get; set; }
|
||||
public List<Assort.BarterDetails> BarterDetails { get; set; }
|
||||
}
|
||||
|
||||
}
|
@ -1,4 +1,6 @@
|
||||
using AssortValidator.Common.Models;
|
||||
using AssortValidator.Models;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace AssortValidator.Common.Helpers.Models
|
||||
{
|
||||
@ -8,7 +10,7 @@ namespace AssortValidator.Common.Helpers.Models
|
||||
public string QuestName { get; set; }
|
||||
public string TraderId { get; set; }
|
||||
public Trader TraderType { get; set; }
|
||||
public string AssortId { get; set; }
|
||||
public List<QuestRewardItem> AssortItems { get; set; }
|
||||
public string AssortTemplateId { get; set; }
|
||||
public int LoyaltyLevel { get; set; }
|
||||
public string QuestState { get; internal set; }
|
||||
|
255
AssortValidator.Common/Models/QuestEnum.cs
Normal file
255
AssortValidator.Common/Models/QuestEnum.cs
Normal file
@ -0,0 +1,255 @@
|
||||
namespace AssortValidator.Common.Models
|
||||
{
|
||||
public enum QuestEnum
|
||||
{
|
||||
NOQUESTFOUND = 0,
|
||||
Debut = 1,
|
||||
Checking = 2,
|
||||
ShootoutPicnic = 3,
|
||||
DeliveryFromThePast = 4,
|
||||
BadRepEvidence = 5,
|
||||
IceCreamCones = 6,
|
||||
PostmanPatP1 = 7,
|
||||
PostmanPatP2 = 8,
|
||||
ShakingUpTeller = 9,
|
||||
Shortage = 10,
|
||||
SanitaryStandardsP1 = 11,
|
||||
OperationAquarius = 12,
|
||||
OperationAquariusP2 = 13,
|
||||
Painkiller = 14,
|
||||
Pharmacist = 15,
|
||||
SupplyPlans = 16,
|
||||
KindOfSabotage = 17,
|
||||
GeneralWares = 18,
|
||||
SanitaryStandardsP2 = 19,
|
||||
CarRepair = 20,
|
||||
Supplier = 21,
|
||||
TheExtortionist = 22,
|
||||
Stirrup = 23,
|
||||
WhatsOnTheFlashDrive = 24,
|
||||
GoldenSwag = 25,
|
||||
PolikhimHobo = 26,
|
||||
ChemicalP1 = 27,
|
||||
ChemicalP2 = 28,
|
||||
ChemicalP3 = 29,
|
||||
ChemicalP4 = 30,
|
||||
OutOfCuriosity = 31,
|
||||
BigCustomer = 32,
|
||||
BPDepot = 33,
|
||||
ThePunisherP1 = 34,
|
||||
ThePunisherP2 = 35,
|
||||
ThePunisherP3 = 36,
|
||||
TrustRegain = 37,
|
||||
LoyaltyBuyout = 38,
|
||||
NoOffence = 39,
|
||||
ThePunisherP4 = 40,
|
||||
ThePunisherP5 = 41,
|
||||
ThePunisherP6 = 42,
|
||||
NoQuestNameGiven = 43,
|
||||
SpaTourP1 = 44,
|
||||
SpaTourP2 = 45,
|
||||
SpaTourP3 = 46,
|
||||
SpaTourP4 = 47,
|
||||
SpaTourP5 = 48,
|
||||
FishingGear = 49,
|
||||
TigrSafari = 50,
|
||||
ScrapMetal = 51,
|
||||
EagleEye = 52,
|
||||
HumanitarianSupplies = 53,
|
||||
TheCultP1 = 54,
|
||||
TheCultP2 = 55,
|
||||
SpaTourP6 = 56,
|
||||
SpaTourP7 = 57,
|
||||
CargoXP1 = 58,
|
||||
CargoXP2 = 59,
|
||||
CargoXP3 = 60,
|
||||
WetJobP1 = 61,
|
||||
WetJobP2 = 62,
|
||||
WetJobP3 = 63,
|
||||
WetJobP4 = 64,
|
||||
WetJobP5 = 65,
|
||||
WetJobP6 = 66,
|
||||
FriendFromTheWestP1 = 67,
|
||||
FriendFromTheWestP2 = 68,
|
||||
HippocraticVow = 69,
|
||||
HealthCarePrivacyP1 = 70,
|
||||
HealthCarePrivacyP2 = 71,
|
||||
HealthCarePrivacyP3 = 72,
|
||||
HealthCarePrivacyP4 = 73,
|
||||
HealthCarePrivacyP5 = 74,
|
||||
GunsmithP1 = 75,
|
||||
GunsmithP2 = 76,
|
||||
GunsmithP3 = 77,
|
||||
GunsmithP4 = 78,
|
||||
GunsmithP5 = 79,
|
||||
GunsmithP6 = 80,
|
||||
FarmingP1 = 81,
|
||||
FarmingP2 = 82,
|
||||
FarmingP3 = 83,
|
||||
FarmingP4 = 84,
|
||||
SignalP1 = 85,
|
||||
SignalP2 = 86,
|
||||
SignalP3 = 87,
|
||||
SignalP4 = 88,
|
||||
BadHabit = 89,
|
||||
Scout = 90,
|
||||
Insider = 91,
|
||||
GunsmithP7 = 92,
|
||||
GunsmithP8 = 93,
|
||||
GunsmithP9 = 94,
|
||||
GunsmithP10 = 95,
|
||||
GunsmithP11 = 96,
|
||||
OnlyBusiness = 97,
|
||||
MakeUltraGreatAgain = 98,
|
||||
BigSale = 99,
|
||||
TheBloodOfWar = 100,
|
||||
DressedToKill = 101,
|
||||
DatabaseP1 = 102,
|
||||
DatabaseP2 = 103,
|
||||
SewItGoodP1 = 104,
|
||||
SewItGoodP2 = 105,
|
||||
SewItGoodP3 = 106,
|
||||
SewItGoodP4 = 107,
|
||||
TheKeyToSuccess = 108,
|
||||
CharismaBringsSuccess = 109,
|
||||
NoFussNeeded = 110,
|
||||
Gratitude = 111,
|
||||
SalesNight = 112,
|
||||
Supervisor = 113,
|
||||
GunsmithP12 = 114,
|
||||
GunsmithP13 = 115,
|
||||
GunsmithP14 = 116,
|
||||
GunsmithP15 = 117,
|
||||
GunsmithP16 = 118,
|
||||
TheBloodOfWarP2 = 119,
|
||||
LivingHighIsNotACrime = 120,
|
||||
HotDelivery = 121,
|
||||
Minibus = 122,
|
||||
VitaminsP1 = 123,
|
||||
VitaminsP2 = 124,
|
||||
InformedMeansArmed = 125,
|
||||
LendLeaseP1 = 126,
|
||||
Chumming = 127,
|
||||
TheTarkovShooterP1 = 128,
|
||||
TheTarkovShooterP2 = 129,
|
||||
TheTarkovShooterP3 = 130,
|
||||
TheTarkovShooterP4 = 131,
|
||||
TheTarkovShooterP5 = 132,
|
||||
TheTarkovShooterP6 = 133,
|
||||
TheTarkovShooterP7 = 134,
|
||||
TheTarkovShooterP8 = 135,
|
||||
Bullshit = 136,
|
||||
SilentCaliber = 137,
|
||||
Insomnia = 138,
|
||||
TestDriveP1 = 139,
|
||||
Flint = 140,
|
||||
AShooterBornInHeaven = 141,
|
||||
PsychoSniper = 142,
|
||||
PrivateClinic = 143,
|
||||
Athlete = 144,
|
||||
LendLeaseP2 = 145,
|
||||
Grenadier = 146,
|
||||
DecontaminationService = 147,
|
||||
PeacekeepingMission = 148,
|
||||
TheGuide = 149,
|
||||
Fertilizers = 150,
|
||||
TheBloodOfWarP3 = 151,
|
||||
Scavenger = 152,
|
||||
LivingHighIsNotACrimeP2 = 153,
|
||||
Setup = 154,
|
||||
PerfectMediator = 155,
|
||||
Import = 156,
|
||||
Collector = 157,
|
||||
Introduction = 158,
|
||||
Acquaintance = 159,
|
||||
TheSurvivalistPathUnprotectedButDangerous = 160,
|
||||
TheSurvivalistPathThrifty = 161,
|
||||
TheSurvivalistPathZhivchik = 162,
|
||||
TheSurvivalistPathWoundedBeast = 163,
|
||||
TheSurvivalistPathToughGuy = 164,
|
||||
TheSurvivalistPathColdBlooded = 165,
|
||||
TheSurvivalistPathZatoichi = 166,
|
||||
TheSurvivalistPathEagleOwl = 167,
|
||||
TheSurvivalistPathCombatMedic = 168,
|
||||
TheSurvivalistPathJunkie = 169,
|
||||
HuntsmanPathSecuredPerimeter = 170,
|
||||
HuntsmanPathTheTrophy = 171,
|
||||
HuntsmanPathWoodsCleaning = 172,
|
||||
HuntsmanPathController = 173,
|
||||
HuntsmanPathSellOut = 174,
|
||||
HuntsmanPathWoodsKeeper = 175,
|
||||
HuntsmanPathJustice = 176,
|
||||
HuntsmanPathEvilWatchman = 177,
|
||||
HuntsmanPathFactoryChief = 178,
|
||||
HuntsmanPathEraser = 179,
|
||||
HuntsmanPathEraserP2 = 180,
|
||||
Ambulance = 181,
|
||||
CourtesyVisit = 182,
|
||||
ShadyBusiness = 183,
|
||||
Nostalgia = 184,
|
||||
FishingPlace = 185,
|
||||
HuntingTrip = 186,
|
||||
Reserv = 187,
|
||||
RegulatedMaterials = 188,
|
||||
AnAppleADayKeepsTheDoctorAway = 189,
|
||||
Mentor = 190,
|
||||
TheStylishOne = 191,
|
||||
TextileP1Usec = 192,
|
||||
TextileP2Usec = 193,
|
||||
BunkerP1 = 194,
|
||||
BunkerP2 = 195,
|
||||
Anesthesia = 196,
|
||||
HuntsmanPathSadist = 197,
|
||||
ColleaguesP1 = 198,
|
||||
ColleaguesP2 = 199,
|
||||
ColleaguesP3 = 200,
|
||||
RiggedGame = 201,
|
||||
Samples = 202,
|
||||
TerraGroupEmployee = 203,
|
||||
TheChemistryCloset = 204,
|
||||
SearchMission = 205,
|
||||
Hunter = 206,
|
||||
Revision = 207,
|
||||
PestControl = 208,
|
||||
BackDoor = 209,
|
||||
SafeCorridor = 210,
|
||||
InventoryCheck = 211,
|
||||
FuelMatter = 212,
|
||||
NoPlaceForRenegades = 213,
|
||||
DiseaseHistory = 214,
|
||||
Documents = 215,
|
||||
SurplusGoods = 216,
|
||||
ExperienceExchange = 217,
|
||||
LongLine = 218,
|
||||
Booze = 219,
|
||||
HuntsmanPathRelentless = 220,
|
||||
SwiftOne = 221,
|
||||
TheChoice = 222,
|
||||
NightSweep = 223,
|
||||
Intimidator = 224,
|
||||
Crisis = 225,
|
||||
CapturingOutposts = 226,
|
||||
Escort = 227,
|
||||
Calibration = 228,
|
||||
MutualInterest = 229,
|
||||
TextileP1Bear = 230,
|
||||
TextileP2Bear = 231,
|
||||
EasyJobPart1 = 232,
|
||||
EasyJobPart2 = 233,
|
||||
EnergyCrisis = 234,
|
||||
CommunicationDifficulties = 235,
|
||||
Overpopulation = 236,
|
||||
SeasideVacation = 237,
|
||||
CorporateSecrets = 238,
|
||||
Counteraction = 239,
|
||||
HuntsmanPathOutcasts = 240,
|
||||
MissingCargo = 241,
|
||||
RevisionPart2 = 242,
|
||||
OurOwnLand = 243,
|
||||
TheHermit = 244,
|
||||
LongRoad = 245,
|
||||
CargoXP4 = 246,
|
||||
LostContact = 247,
|
||||
ActionTest = 248,
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user