use "is null" instead of "=="
This commit is contained in:
parent
dd458f80ab
commit
f0c6bda9dc
@ -23,77 +23,61 @@ namespace GenerateQuestFile
|
|||||||
var inputPath = DiskHelpers.CreateWorkingFolders();
|
var inputPath = DiskHelpers.CreateWorkingFolders();
|
||||||
InputFileHelper.SetInputFiles(inputPath);
|
InputFileHelper.SetInputFiles(inputPath);
|
||||||
|
|
||||||
//read in quest files
|
// Read in quest files
|
||||||
var questData = QuestHelper.GetQuestData();
|
var existingQuestData = QuestHelper.GetQuestData();
|
||||||
var liveQuestData = QuestHelper.GetLiveQuestData();
|
var liveQuestData = QuestHelper.GetLiveQuestData();
|
||||||
//var oldQuestData = QuestHelper.GetQuestData("oldQuests");
|
|
||||||
|
|
||||||
// Find the quests that are missing from the live file
|
// Find the quests that are missing from the live file from existing quest data
|
||||||
var missingQuests = new List<Quest>();
|
var missingQuests = GetMissingQuestsNotInLiveFile(existingQuestData, liveQuestData);
|
||||||
foreach (var quest in questData.Values)
|
|
||||||
{
|
|
||||||
var liveQuest = liveQuestData.data.Find(x => x._id == quest._id);
|
|
||||||
if (liveQuest == null)
|
|
||||||
{
|
|
||||||
missingQuests.Add(quest);
|
|
||||||
LoggingHelpers.LogError($"ERROR Quest {quest._id} {QuestHelper.GetQuestNameById(quest._id)} missing in live file. Will use fallback quests.json");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
LoggingHelpers.LogSuccess($"SUCCESS Quest {quest._id} {QuestHelper.GetQuestNameById(quest._id)} found in live file.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create a list of quests to output
|
// Create a list of quests to output
|
||||||
// use all quests in live file
|
// Use all quests in live file
|
||||||
// Use quests from quests.json to fill in missing quests
|
// Use quests from quests.json to fill in missing quests
|
||||||
var questsToOutputToFile = new Dictionary<string, Quest>();
|
var questsToOutputToFile = new Dictionary<string, Quest>();
|
||||||
//create live version of quests.json
|
|
||||||
foreach (var quest in liveQuestData.data)
|
// Add live quests to collection to return later
|
||||||
|
foreach (var liveQuest in liveQuestData.data)
|
||||||
{
|
{
|
||||||
var questName = QuestHelper.GetQuestNameById(quest._id); // special characters like ", brake the client when it parses it
|
questsToOutputToFile.Add(liveQuest._id, liveQuest);
|
||||||
var rgx = new Regex("[^a-zA-Z0-9 -]");
|
|
||||||
quest.QuestName = rgx.Replace(questName, "");
|
|
||||||
questsToOutputToFile.Add(quest._id, quest);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add missing quests from existing quest data to fill in blanks from live data
|
||||||
foreach (var missingQuest in missingQuests)
|
foreach (var missingQuest in missingQuests)
|
||||||
{
|
{
|
||||||
missingQuest.QuestName = QuestHelper.GetQuestNameById(missingQuest._id);
|
// Going from a pre-12.7.x version has problems, it doesnt have the new quest data format
|
||||||
|
CheckAndFixMissingProperties(missingQuest);
|
||||||
|
|
||||||
questsToOutputToFile.Add(missingQuest._id, missingQuest);
|
questsToOutputToFile.Add(missingQuest._id, missingQuest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!questsToOutputToFile.ContainsKey("5e383a6386f77465910ce1f3")) // TextileP1Bear
|
||||||
|
{
|
||||||
|
// add textileP1Bear
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!questsToOutputToFile.ContainsKey("5e4d515e86f77438b2195244")) // TextileP2Bear
|
||||||
|
{
|
||||||
|
// add TextileP2Bear
|
||||||
|
}
|
||||||
|
|
||||||
foreach (var quest in questsToOutputToFile)
|
foreach (var quest in questsToOutputToFile)
|
||||||
{
|
{
|
||||||
if (quest.Key == "597a160786f77477531d39d2")
|
AddQuestName(quest);
|
||||||
{
|
|
||||||
|
|
||||||
}
|
var originalQuest = existingQuestData.FirstOrDefault(x => x.Key == quest.Key).Value;
|
||||||
|
|
||||||
var originalQuest = questData.FirstOrDefault(x => x.Key == quest.Key).Value;
|
// quest has start conditions, check to ensure they're carried over
|
||||||
if (originalQuest.conditions.AvailableForStart.Count > 0)
|
if (originalQuest.conditions.AvailableForStart.Count > 0)
|
||||||
{
|
{
|
||||||
// Iterate over quest requirements in existing qeust file
|
AddMissingAvailableForStartConditions(originalQuest, quest);
|
||||||
foreach (var questRequirementToAdd in originalQuest.conditions.AvailableForStart.ToList())
|
|
||||||
{
|
|
||||||
//Exists already
|
|
||||||
if (quest.Value.conditions.AvailableForStart.Any(x => x._parent == questRequirementToAdd._parent
|
|
||||||
&& x._props.target?.ToString() == questRequirementToAdd._props.target?.ToString()))
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
quest.Value.conditions.AvailableForStart.Add(questRequirementToAdd);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// iterate over quest objects a final time and add hard coded quest requirements if they dont already exist
|
// Iterate over quest objects a final time and add hard coded quest requirements if they dont already exist
|
||||||
foreach (var quest in questsToOutputToFile)
|
foreach (var quest in questsToOutputToFile)
|
||||||
{
|
{
|
||||||
var questRequirements = QuestHelper.GetQuestDependancy(quest.Key);
|
var questRequirements = QuestHelper.GetQuestDependancy(quest.Key);
|
||||||
if (questRequirements == null || questRequirements.Count == 0)
|
if (questRequirements is null || questRequirements.Count == 0)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@ namespace QuestValidator.Common
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (_itemCache == null)
|
if (_itemCache is null)
|
||||||
{
|
{
|
||||||
var itemsFilePath = $"{Directory.GetCurrentDirectory()}\\Assets\\items.json";
|
var itemsFilePath = $"{Directory.GetCurrentDirectory()}\\Assets\\items.json";
|
||||||
if (!File.Exists(itemsFilePath))
|
if (!File.Exists(itemsFilePath))
|
||||||
|
@ -15,7 +15,7 @@ namespace QuestValidator.Common
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (_itemCache == null)
|
if (_itemCache is null)
|
||||||
{
|
{
|
||||||
var itemsFilePath = $"{Directory.GetCurrentDirectory()}\\Assets\\items.json";
|
var itemsFilePath = $"{Directory.GetCurrentDirectory()}\\Assets\\items.json";
|
||||||
if (!File.Exists(itemsFilePath))
|
if (!File.Exists(itemsFilePath))
|
||||||
|
@ -18,10 +18,10 @@ namespace AssortGenerator.Common.Helpers
|
|||||||
|
|
||||||
public static Dictionary<string, QuestValidator.Models.Quest> GetQuestData(string filename = "quests")
|
public static Dictionary<string, QuestValidator.Models.Quest> GetQuestData(string filename = "quests")
|
||||||
{
|
{
|
||||||
if (_questData == null)
|
if (_questData is null)
|
||||||
{
|
{
|
||||||
var questFilePath = InputFileHelper.GetInputFilePaths().FirstOrDefault(x => x.Contains(filename));
|
var questFilePath = InputFileHelper.GetInputFilePaths().FirstOrDefault(x => x.Contains(filename));
|
||||||
if (questFilePath == null)
|
if (questFilePath is null)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -35,10 +35,10 @@ namespace AssortGenerator.Common.Helpers
|
|||||||
|
|
||||||
public static QuestRoot GetLiveQuestData(string filename = "resp.client.quest.list")
|
public static QuestRoot GetLiveQuestData(string filename = "resp.client.quest.list")
|
||||||
{
|
{
|
||||||
if (_liveQuestData == null)
|
if (_liveQuestData is null)
|
||||||
{
|
{
|
||||||
var questFilePath = InputFileHelper.GetInputFilePaths().FirstOrDefault(x => x.Contains(filename));
|
var questFilePath = InputFileHelper.GetInputFilePaths().FirstOrDefault(x => x.Contains(filename));
|
||||||
if (questFilePath == null)
|
if (questFilePath is null)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -57,7 +57,7 @@ namespace AssortGenerator.Common.Helpers
|
|||||||
|
|
||||||
public static List<AssortUnlocks> GetAssortUnlocks()
|
public static List<AssortUnlocks> GetAssortUnlocks()
|
||||||
{
|
{
|
||||||
if (_assortUnlocks == null)
|
if (_assortUnlocks is null)
|
||||||
{
|
{
|
||||||
_assortUnlocks = new List<AssortUnlocks>();
|
_assortUnlocks = new List<AssortUnlocks>();
|
||||||
foreach (var quest in GetQuestData())
|
foreach (var quest in GetQuestData())
|
||||||
|
@ -9,7 +9,7 @@ namespace AssortGenerator.Common.Helpers
|
|||||||
|
|
||||||
public static Dictionary<Trader, string> GetTraders()
|
public static Dictionary<Trader, string> GetTraders()
|
||||||
{
|
{
|
||||||
if (_traders == null)
|
if (_traders is null)
|
||||||
{
|
{
|
||||||
_traders = new Dictionary<Trader, string>
|
_traders = new Dictionary<Trader, string>
|
||||||
{
|
{
|
||||||
|
@ -20,7 +20,7 @@ namespace QuestValidator
|
|||||||
var questData = QuestHelper.GetQuestData();
|
var questData = QuestHelper.GetQuestData();
|
||||||
var liveQuestData = QuestHelper.GetLiveQuestData();
|
var liveQuestData = QuestHelper.GetLiveQuestData();
|
||||||
|
|
||||||
if (questData == null || liveQuestData == null)
|
if (questData is null || liveQuestData is null)
|
||||||
{
|
{
|
||||||
LoggingHelpers.LogError("Unable to read quest data. Are you sure the both quest files are in 'QuestValidator//bin//Debug//netcoreapp3.1//input'");
|
LoggingHelpers.LogError("Unable to read quest data. Are you sure the both quest files are in 'QuestValidator//bin//Debug//netcoreapp3.1//input'");
|
||||||
return;
|
return;
|
||||||
@ -86,7 +86,7 @@ namespace QuestValidator
|
|||||||
{
|
{
|
||||||
var liveQuest = liveQuestData.data.FirstOrDefault(x=>x._id == quest._id);
|
var liveQuest = liveQuestData.data.FirstOrDefault(x=>x._id == quest._id);
|
||||||
|
|
||||||
if (liveQuest == null)
|
if (liveQuest is null)
|
||||||
{
|
{
|
||||||
missingQuests.Add(quest);
|
missingQuests.Add(quest);
|
||||||
LoggingHelpers.LogError($"ERROR Quest {quest._id} {QuestHelper.GetQuestNameById(quest._id)} missing in live");
|
LoggingHelpers.LogError($"ERROR Quest {quest._id} {QuestHelper.GetQuestNameById(quest._id)} missing in live");
|
||||||
@ -162,9 +162,6 @@ namespace QuestValidator
|
|||||||
// Check Fail reward count matches
|
// Check Fail reward count matches
|
||||||
CheckValuesMatch(quest.rewards.Fail.Count, relatedLiveQuest.rewards.Fail.Count, "fail item count mismatch");
|
CheckValuesMatch(quest.rewards.Fail.Count, relatedLiveQuest.rewards.Fail.Count, "fail item count mismatch");
|
||||||
|
|
||||||
// Check min level matches
|
|
||||||
CheckValuesMatch(quest.min_level, relatedLiveQuest.min_level, "min level value mismatch");
|
|
||||||
|
|
||||||
// Check location matches
|
// Check location matches
|
||||||
CheckValuesMatch(quest.location, relatedLiveQuest.location, "location value mismatch");
|
CheckValuesMatch(quest.location, relatedLiveQuest.location, "location value mismatch");
|
||||||
|
|
||||||
@ -184,7 +181,7 @@ namespace QuestValidator
|
|||||||
// Get live reward item by index and type
|
// Get live reward item by index and type
|
||||||
var relatedLiveRewardItem = GetLiveRewardItem(questSuccessRewardItem, liveQuestSuccessRewardItems);
|
var relatedLiveRewardItem = GetLiveRewardItem(questSuccessRewardItem, liveQuestSuccessRewardItems);
|
||||||
|
|
||||||
if (relatedLiveRewardItem == null)
|
if (relatedLiveRewardItem is null)
|
||||||
{
|
{
|
||||||
LogUnableToFindSuccessItemInLiveData(questSuccessRewardItem, relatedLiveRewardItem);
|
LogUnableToFindSuccessItemInLiveData(questSuccessRewardItem, relatedLiveRewardItem);
|
||||||
continue;
|
continue;
|
||||||
@ -258,13 +255,13 @@ namespace QuestValidator
|
|||||||
relatedLiveRewardItem = possibleLiveRewardItems.FirstOrDefault(x=>x.index == questSuccessRewardItem.index);
|
relatedLiveRewardItem = possibleLiveRewardItems.FirstOrDefault(x=>x.index == questSuccessRewardItem.index);
|
||||||
|
|
||||||
// nothing found by index, try by
|
// nothing found by index, try by
|
||||||
if (relatedLiveRewardItem == null)
|
if (relatedLiveRewardItem is null)
|
||||||
{
|
{
|
||||||
relatedLiveRewardItem = possibleLiveRewardItems.FirstOrDefault(x => x.traderId == questSuccessRewardItem.traderId);
|
relatedLiveRewardItem = possibleLiveRewardItems.FirstOrDefault(x => x.traderId == questSuccessRewardItem.traderId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (relatedLiveRewardItem == null)
|
if (relatedLiveRewardItem is null)
|
||||||
{
|
{
|
||||||
relatedLiveRewardItem = liveQuestSuccessRewardItems.Find(x => x.traderId == questSuccessRewardItem.traderId
|
relatedLiveRewardItem = liveQuestSuccessRewardItems.Find(x => x.traderId == questSuccessRewardItem.traderId
|
||||||
&& x.index == questSuccessRewardItem.index
|
&& x.index == questSuccessRewardItem.index
|
||||||
@ -294,11 +291,11 @@ namespace QuestValidator
|
|||||||
{
|
{
|
||||||
// find live item by slotid
|
// find live item by slotid
|
||||||
var liveCounterpart = relatedLiveRewardItem.items.Where(x => x.slotId == subItem.slotId);
|
var liveCounterpart = relatedLiveRewardItem.items.Where(x => x.slotId == subItem.slotId);
|
||||||
if (liveCounterpart == null || liveCounterpart.Count() == 0)
|
if (liveCounterpart is null || liveCounterpart.Count() == 0)
|
||||||
{
|
{
|
||||||
// Look for live item by template id
|
// Look for live item by template id
|
||||||
liveCounterpart = relatedLiveRewardItem.items.Where(x => x._tpl == subItem._tpl);
|
liveCounterpart = relatedLiveRewardItem.items.Where(x => x._tpl == subItem._tpl);
|
||||||
if (liveCounterpart == null || liveCounterpart.Count() == 0)
|
if (liveCounterpart is null || liveCounterpart.Count() == 0)
|
||||||
{
|
{
|
||||||
LoggingHelpers.LogWarning($"a live counterpart for the subItem {subItem.slotId} could not be found by slotid or tpId, skipping subItem check");
|
LoggingHelpers.LogWarning($"a live counterpart for the subItem {subItem.slotId} could not be found by slotid or tpId, skipping subItem check");
|
||||||
continue;
|
continue;
|
||||||
@ -317,7 +314,7 @@ namespace QuestValidator
|
|||||||
|
|
||||||
private static void LogUnableToFindSuccessItemInLiveData(RewardStatus questSuccessRewardItem, RewardStatus relatedLiveRewardItem)
|
private static void LogUnableToFindSuccessItemInLiveData(RewardStatus questSuccessRewardItem, RewardStatus relatedLiveRewardItem)
|
||||||
{
|
{
|
||||||
if (relatedLiveRewardItem == null)
|
if (relatedLiveRewardItem is null)
|
||||||
{
|
{
|
||||||
LoggingHelpers.LogError($"ERROR unable to find success reward item in live quest data by index: ({questSuccessRewardItem.index}) OR template id: {questSuccessRewardItem.items[0]._tpl} ({ItemTemplateHelper.GetTemplateById(questSuccessRewardItem.items[0]._tpl)._name})");
|
LoggingHelpers.LogError($"ERROR unable to find success reward item in live quest data by index: ({questSuccessRewardItem.index}) OR template id: {questSuccessRewardItem.items[0]._tpl} ({ItemTemplateHelper.GetTemplateById(questSuccessRewardItem.items[0]._tpl)._name})");
|
||||||
|
|
||||||
@ -350,7 +347,7 @@ namespace QuestValidator
|
|||||||
var liveRewardItemByIndex = LiveItemRewards.FirstOrDefault(x => x.index == questSuccessRewardItem.index);
|
var liveRewardItemByIndex = LiveItemRewards.FirstOrDefault(x => x.index == questSuccessRewardItem.index);
|
||||||
|
|
||||||
// no item found by index, find by template id
|
// no item found by index, find by template id
|
||||||
if (liveRewardItemByIndex == null)
|
if (liveRewardItemByIndex is null)
|
||||||
{
|
{
|
||||||
foreach (var liveItem in LiveItemRewards
|
foreach (var liveItem in LiveItemRewards
|
||||||
.SelectMany(liveItem => liveItem.items
|
.SelectMany(liveItem => liveItem.items
|
||||||
@ -379,11 +376,11 @@ namespace QuestValidator
|
|||||||
var errorMessage = string.Empty;
|
var errorMessage = string.Empty;
|
||||||
// Get live reward item by index and type
|
// Get live reward item by index and type
|
||||||
var relatedLiveRewardItem = liveQuestStartedRewardItems.Find(x => x.index == questStartedRewardItem.index && x.type == "Item");
|
var relatedLiveRewardItem = liveQuestStartedRewardItems.Find(x => x.index == questStartedRewardItem.index && x.type == "Item");
|
||||||
if (relatedLiveRewardItem == null)
|
if (relatedLiveRewardItem is null)
|
||||||
{
|
{
|
||||||
// Get live reward item by templateId and type as we cant find it by index
|
// Get live reward item by templateId and type as we cant find it by index
|
||||||
relatedLiveRewardItem = liveQuestStartedRewardItems.Find(x => x.items != null && x.items[0]?._tpl == questStartedRewardItem.items[0]?._tpl && x.type == "Item");
|
relatedLiveRewardItem = liveQuestStartedRewardItems.Find(x => x.items != null && x.items[0]?._tpl == questStartedRewardItem.items[0]?._tpl && x.type == "Item");
|
||||||
if (relatedLiveRewardItem == null)
|
if (relatedLiveRewardItem is null)
|
||||||
{
|
{
|
||||||
LoggingHelpers.LogError($"ERROR unable to find started reward item in live quest data by index: ({questStartedRewardItem.index}) OR template id: {questStartedRewardItem.items[0]._tpl}");
|
LoggingHelpers.LogError($"ERROR unable to find started reward item in live quest data by index: ({questStartedRewardItem.index}) OR template id: {questStartedRewardItem.items[0]._tpl}");
|
||||||
LoggingHelpers.LogError($"ERROR Skipping quest started item: {questStartedRewardItem.id}");
|
LoggingHelpers.LogError($"ERROR Skipping quest started item: {questStartedRewardItem.id}");
|
||||||
@ -414,7 +411,7 @@ namespace QuestValidator
|
|||||||
{
|
{
|
||||||
// Get live reward item by id
|
// Get live reward item by id
|
||||||
var relatedLiveRewardItem = liveQuestStartedRewardItems.FirstOrDefault(x => x.id == questStartedRewardItem.id && x.type == "AssortmentUnlock");
|
var relatedLiveRewardItem = liveQuestStartedRewardItems.FirstOrDefault(x => x.id == questStartedRewardItem.id && x.type == "AssortmentUnlock");
|
||||||
if (relatedLiveRewardItem == null)
|
if (relatedLiveRewardItem is null)
|
||||||
{
|
{
|
||||||
// Cant find live reward item by id, get my template id inside items[0]
|
// Cant find live reward item by id, get my template id inside items[0]
|
||||||
relatedLiveRewardItem = liveQuestStartedRewardItems.Find(x => x.traderId == questStartedRewardItem.traderId
|
relatedLiveRewardItem = liveQuestStartedRewardItems.Find(x => x.traderId == questStartedRewardItem.traderId
|
||||||
@ -472,7 +469,7 @@ namespace QuestValidator
|
|||||||
|
|
||||||
private static bool ItemExists(object itemToCheck, string message, int index = -1)
|
private static bool ItemExists(object itemToCheck, string message, int index = -1)
|
||||||
{
|
{
|
||||||
if (itemToCheck == null)
|
if (itemToCheck is null)
|
||||||
{
|
{
|
||||||
if (index == -1)
|
if (index == -1)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user