assortmentunlock checks
This commit is contained in:
parent
b898acf1ea
commit
91d66f3b51
@ -21,7 +21,7 @@ namespace QuestValidator
|
|||||||
var liveQuestData = QuestHelper.GetLiveQuestData();
|
var liveQuestData = QuestHelper.GetLiveQuestData();
|
||||||
|
|
||||||
CheckForMissingQuestsInAkiFile(liveQuestData, questData);
|
CheckForMissingQuestsInAkiFile(liveQuestData, questData);
|
||||||
|
|
||||||
foreach (var item in questData)
|
foreach (var item in questData)
|
||||||
{
|
{
|
||||||
var quest = item.Value;
|
var quest = item.Value;
|
||||||
@ -42,13 +42,20 @@ namespace QuestValidator
|
|||||||
CheckStartedRewardItems(quest, relatedLiveQuest);
|
CheckStartedRewardItems(quest, relatedLiveQuest);
|
||||||
|
|
||||||
CheckAvailableForFinishConditionItems(quest, relatedLiveQuest);
|
CheckAvailableForFinishConditionItems(quest, relatedLiveQuest);
|
||||||
|
|
||||||
LoggingHelpers.LogInfo("");
|
LoggingHelpers.LogInfo("");
|
||||||
LoggingHelpers.LogInfo("-----");
|
LoggingHelpers.LogInfo("-----");
|
||||||
LoggingHelpers.LogInfo("");
|
LoggingHelpers.LogInfo("");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void LogQuestDetails(Models.Quest quest)
|
||||||
|
{
|
||||||
|
var questName = QuestHelper.GetQuestNameById(quest._id);
|
||||||
|
LoggingHelpers.LogInfo($"### Quest name: {questName} ({quest._id})");
|
||||||
|
LoggingHelpers.LogInfo($"Wiki: https://escapefromtarkov.fandom.com/wiki/{questName.Replace(' ', '_')}");
|
||||||
|
}
|
||||||
|
|
||||||
private static void CheckRootItemValues(Models.Quest quest, Models.Quest relatedLiveQuest)
|
private static void CheckRootItemValues(Models.Quest quest, Models.Quest relatedLiveQuest)
|
||||||
{
|
{
|
||||||
// Check image id matches
|
// Check image id matches
|
||||||
@ -113,7 +120,7 @@ namespace QuestValidator
|
|||||||
// Check item stack count
|
// Check item stack count
|
||||||
if (questSuccessRewardItem.items[0] != null && questSuccessRewardItem.items[0].upd != null)
|
if (questSuccessRewardItem.items[0] != null && questSuccessRewardItem.items[0].upd != null)
|
||||||
{
|
{
|
||||||
CheckValuesMatch(questSuccessRewardItem.items[0].upd.StackObjectsCount, relatedLiveRewardItem.items[0].upd.StackObjectsCount, "mismatch for StackObjectsCount", questSuccessRewardItem.items[0]._id);
|
CheckValuesMatch(questSuccessRewardItem.items[0].upd.StackObjectsCount, questSuccessRewardItem.items[0].upd.StackObjectsCount, "mismatch for success item StackObjectsCount", questSuccessRewardItem.items[0]._id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -146,8 +153,16 @@ namespace QuestValidator
|
|||||||
|
|
||||||
foreach (var questSuccessRewardItem in quest.rewards.Success.Where(x => x.type == "AssortmentUnlock"))
|
foreach (var questSuccessRewardItem in quest.rewards.Success.Where(x => x.type == "AssortmentUnlock"))
|
||||||
{
|
{
|
||||||
var relatedLiveRewardItem = liveQuestSuccessRewardItems.FirstOrDefault(x => x.target == questSuccessRewardItem.target && x.type == "AssortmentUnlock");
|
var relatedLiveRewardItem = liveQuestSuccessRewardItems.Find(x => x.id == questSuccessRewardItem.id && x.type == "AssortmentUnlock");
|
||||||
if (!ItemExists(relatedLiveRewardItem, "TraderStanding success reward item", questSuccessRewardItem.index))
|
if (relatedLiveRewardItem == null)
|
||||||
|
{
|
||||||
|
relatedLiveRewardItem = liveQuestSuccessRewardItems.Find(x => x.traderId == questSuccessRewardItem.traderId
|
||||||
|
&& x.index == questSuccessRewardItem.index
|
||||||
|
&& x.type == "AssortmentUnlock"
|
||||||
|
&& x.items[0]._tpl == questSuccessRewardItem.items[0]._tpl);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ItemExists(relatedLiveRewardItem, "AssortmentUnlock success reward item", questSuccessRewardItem.index))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -159,7 +174,7 @@ namespace QuestValidator
|
|||||||
CheckValuesMatch(questSuccessRewardItem.traderId, relatedLiveRewardItem.traderId, "traderId value mismatch", questSuccessRewardItem.id);
|
CheckValuesMatch(questSuccessRewardItem.traderId, relatedLiveRewardItem.traderId, "traderId value mismatch", questSuccessRewardItem.id);
|
||||||
|
|
||||||
// check target equals items[0].id
|
// check target equals items[0].id
|
||||||
CheckValuesMatch(questSuccessRewardItem.target, relatedLiveRewardItem.items[0]._id, "target value does not match items[0].id mismatch", questSuccessRewardItem.id);
|
CheckValuesMatch(questSuccessRewardItem.target, questSuccessRewardItem.items[0]._id, "target value does not match items[0].id mismatch", questSuccessRewardItem.id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -167,42 +182,69 @@ namespace QuestValidator
|
|||||||
{
|
{
|
||||||
var liveQuestStartedRewardItems = relatedLiveQuest.rewards.Started;
|
var liveQuestStartedRewardItems = relatedLiveQuest.rewards.Started;
|
||||||
|
|
||||||
foreach (var questSuccessRewardItem in quest.rewards.Started.Where(x => x.type == "Item"))
|
foreach (var questStartedRewardItem in quest.rewards.Started.Where(x => x.type == "Item"))
|
||||||
{
|
{
|
||||||
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 == questSuccessRewardItem.index && x.type == "Item");
|
var relatedLiveRewardItem = liveQuestStartedRewardItems.Find(x => x.index == questStartedRewardItem.index && x.type == "Item");
|
||||||
if (relatedLiveRewardItem == null)
|
if (relatedLiveRewardItem == 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 == questSuccessRewardItem.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 == null)
|
||||||
{
|
{
|
||||||
LoggingHelpers.LogError($"ERROR unable to find started reward item in live quest data by index: ({questSuccessRewardItem.index}) OR template id: {questSuccessRewardItem.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: {questSuccessRewardItem.id}");
|
LoggingHelpers.LogError($"ERROR Skipping quest started item: {questStartedRewardItem.id}");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure target matches the objects items[0].id value
|
// Ensure target matches the objects items[0].id value
|
||||||
if (questSuccessRewardItem.items[0]?._id != questSuccessRewardItem.target)
|
if (questStartedRewardItem.items[0]?._id != questStartedRewardItem.target)
|
||||||
{
|
{
|
||||||
LoggingHelpers.LogWarning($"WARNING target does not match first item: {questSuccessRewardItem.target}, expected {questSuccessRewardItem.items[0]?._id}");
|
LoggingHelpers.LogWarning($"WARNING target does not match first item: {questStartedRewardItem.target}, expected {questStartedRewardItem.items[0]?._id}");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check template ids match
|
// Check template ids match
|
||||||
CheckValuesMatch(questSuccessRewardItem.items[0]._tpl, relatedLiveRewardItem.items[0]._tpl, "mismatch for template id", questSuccessRewardItem.items[0]._id, true);
|
CheckValuesMatch(questStartedRewardItem.items[0]._tpl, relatedLiveRewardItem.items[0]._tpl, "mismatch for template id", questStartedRewardItem.items[0]._id, true);
|
||||||
|
|
||||||
// Check value values match
|
// Check value values match
|
||||||
CheckValuesMatch(questSuccessRewardItem.value, relatedLiveRewardItem.value, "mismatch for success item reward value", questSuccessRewardItem.id);
|
CheckValuesMatch(questStartedRewardItem.value, relatedLiveRewardItem.value, "mismatch for success item reward value", questStartedRewardItem.id);
|
||||||
|
|
||||||
// Check item stack count
|
// Check item stack count
|
||||||
if (questSuccessRewardItem.items[0] != null && questSuccessRewardItem.items[0].upd != null)
|
if (questStartedRewardItem.items[0] != null && questStartedRewardItem.items[0].upd != null)
|
||||||
{
|
{
|
||||||
CheckValuesMatch(questSuccessRewardItem.items[0].upd.StackObjectsCount, relatedLiveRewardItem.items[0].upd.StackObjectsCount, "mismatch for StackObjectsCount", questSuccessRewardItem.items[0]._id);
|
CheckValuesMatch(questStartedRewardItem.items[0].upd.StackObjectsCount, relatedLiveRewardItem.items[0].upd.StackObjectsCount, "mismatch for started item StackObjectsCount", questStartedRewardItem.items[0]._id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach (var questStartedRewardItem in quest.rewards.Started.Where(x => x.type == "AssortmentUnlock"))
|
||||||
|
{
|
||||||
|
// Get live reward item by id
|
||||||
|
var relatedLiveRewardItem = liveQuestStartedRewardItems.FirstOrDefault(x => x.id == questStartedRewardItem.id && x.type == "AssortmentUnlock");
|
||||||
|
if (relatedLiveRewardItem == null)
|
||||||
|
{
|
||||||
|
// Cant find live reward item by id, get my template id inside items[0]
|
||||||
|
relatedLiveRewardItem = liveQuestStartedRewardItems.Find(x => x.traderId == questStartedRewardItem.traderId
|
||||||
|
&& x.index == questStartedRewardItem.index
|
||||||
|
&& x.type == "AssortmentUnlock"
|
||||||
|
&& x.items[0]._tpl == questStartedRewardItem.items[0]._tpl);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ItemExists(relatedLiveRewardItem, "AssortmentUnlock started reward item", questStartedRewardItem.index))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check loyalty level
|
||||||
|
CheckValuesMatch(questStartedRewardItem.loyaltyLevel.Value, relatedLiveRewardItem.loyaltyLevel.Value, "loyalty level value mismatch", questStartedRewardItem.id);
|
||||||
|
|
||||||
|
// Check traderId
|
||||||
|
CheckValuesMatch(questStartedRewardItem.traderId, relatedLiveRewardItem.traderId, "traderId value mismatch", questStartedRewardItem.id);
|
||||||
|
|
||||||
|
// check target equals items[0].id
|
||||||
|
CheckValuesMatch(questStartedRewardItem.target, questStartedRewardItem.items[0]._id, "target value does not match items[0].id mismatch", questStartedRewardItem.id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void CheckAvailableForFinishConditionItems(Models.Quest quest, Models.Quest relatedLiveQuest)
|
private static void CheckAvailableForFinishConditionItems(Models.Quest quest, Models.Quest relatedLiveQuest)
|
||||||
@ -227,14 +269,6 @@ namespace QuestValidator
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static void LogQuestDetails(Models.Quest quest)
|
|
||||||
{
|
|
||||||
var questName = QuestHelper.GetQuestNameById(quest._id);
|
|
||||||
LoggingHelpers.LogInfo($"### Quest name: {questName} ({quest._id})");
|
|
||||||
LoggingHelpers.LogInfo($"Wiki: https://escapefromtarkov.fandom.com/wiki/{questName.Replace(' ', '_')}");
|
|
||||||
}
|
|
||||||
|
|
||||||
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 == null)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user