Match quest to assort by items mods if item has them
This commit is contained in:
parent
89f1b6e998
commit
4e20e6a03b
@ -44,7 +44,8 @@ namespace AssortGenerator.Common.Helpers
|
|||||||
QuestRewardId = reward.id,
|
QuestRewardId = reward.id,
|
||||||
TraderId = reward.traderId,
|
TraderId = reward.traderId,
|
||||||
TraderType = TraderHelper.GetTraderTypeById(reward.traderId),
|
TraderType = TraderHelper.GetTraderTypeById(reward.traderId),
|
||||||
Criteria = "Success"
|
Criteria = "Success",
|
||||||
|
Items = reward.items
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -63,7 +64,8 @@ namespace AssortGenerator.Common.Helpers
|
|||||||
QuestRewardId = reward.id,
|
QuestRewardId = reward.id,
|
||||||
TraderId = reward.traderId,
|
TraderId = reward.traderId,
|
||||||
TraderType = TraderHelper.GetTraderTypeById(reward.traderId),
|
TraderType = TraderHelper.GetTraderTypeById(reward.traderId),
|
||||||
Criteria = "Started"
|
Criteria = "Started",
|
||||||
|
Items = reward.items
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
namespace AssortGenerator.Models.Other
|
using AssortGenerator.Models.Input;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace AssortGenerator.Models.Other
|
||||||
{
|
{
|
||||||
public class AssortUnlocks
|
public class AssortUnlocks
|
||||||
{
|
{
|
||||||
@ -11,5 +14,6 @@
|
|||||||
public Trader TraderType { get; set; }
|
public Trader TraderType { get; set; }
|
||||||
public int LoyaltyLevel { get; set; }
|
public int LoyaltyLevel { get; set; }
|
||||||
public string Criteria { get; set; }
|
public string Criteria { get; set; }
|
||||||
|
public List<QuestRewardItem> Items { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -206,24 +206,21 @@ namespace AssortGenerator
|
|||||||
|
|
||||||
// Find assort unlocks
|
// Find assort unlocks
|
||||||
List<AssortUnlocks> assortUnlocks = QuestHelper.GetAssortUnlocks();
|
List<AssortUnlocks> assortUnlocks = QuestHelper.GetAssortUnlocks();
|
||||||
var assortItemsThatMatchBlackList = new List<string>(); // store items already matched here
|
|
||||||
|
// Store already matched items
|
||||||
|
var assortItemsThatMatchBlackList = new List<string>();
|
||||||
foreach (var assortUnlock in assortUnlocks.Where(x => x.TraderType == trader))
|
foreach (var assortUnlock in assortUnlocks.Where(x => x.TraderType == trader))
|
||||||
{
|
{
|
||||||
if (assortUnlock.ItemUnlockedTemplateId == "62a0a043cf4a99369e2624a5")
|
if (assortUnlock.ItemUnlockedTemplateId == "58948c8e86f77409493f7266")
|
||||||
{
|
{
|
||||||
var x = 2;
|
var x = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get unlock items name
|
// Get unlock item details
|
||||||
var assortItemName = ItemTemplateHelper.Items
|
var assortItemDetailsDB = ItemTemplateHelper.Items.FirstOrDefault(x => x.Key == assortUnlock.ItemUnlockedTemplateId);
|
||||||
.FirstOrDefault(x => x.Key == assortUnlock.ItemUnlockedTemplateId).Value._name;
|
var ItemName = assortItemDetailsDB.Value._name;
|
||||||
|
var assortItemMods = assortUnlock.Items.Where(x => x.parentId == assortUnlock.ItemUnlockedId);
|
||||||
|
|
||||||
// TODO: handle started
|
|
||||||
// TODO: handle fail
|
|
||||||
|
|
||||||
// Handle quest success for now
|
|
||||||
//if (assortUnlock.Criteria.ToLower() == "success")
|
|
||||||
//{
|
|
||||||
//Find assorts that match the quest unlocks item template
|
//Find assorts that match the quest unlocks item template
|
||||||
List<Item> assortItemsThatMatch = assortRoot.items
|
List<Item> assortItemsThatMatch = assortRoot.items
|
||||||
.Where(x => x._tpl == assortUnlock.ItemUnlockedTemplateId && x.slotId == "hideout")
|
.Where(x => x._tpl == assortUnlock.ItemUnlockedTemplateId && x.slotId == "hideout")
|
||||||
@ -232,7 +229,7 @@ namespace AssortGenerator
|
|||||||
// No assort found for this unlock, log and skip it
|
// No assort found for this unlock, log and skip it
|
||||||
if (assortItemsThatMatch == null || assortItemsThatMatch.Count == 0)
|
if (assortItemsThatMatch == null || assortItemsThatMatch.Count == 0)
|
||||||
{
|
{
|
||||||
LoggingHelpers.LogError($"{trader} item templateId: {assortUnlock.ItemUnlockedTemplateId}. questId: {assortUnlock.QuestId}. no assort item found. ({assortItemName})");
|
LoggingHelpers.LogError($"{trader} item templateId: {assortUnlock.ItemUnlockedTemplateId}. questId: {assortUnlock.QuestId}. no assort item found. ({ItemName})");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -248,14 +245,14 @@ namespace AssortGenerator
|
|||||||
if (associatedLoyaltyLevelItem.Key == null)
|
if (associatedLoyaltyLevelItem.Key == null)
|
||||||
{
|
{
|
||||||
// Skip item if no record found in loyalty level array
|
// Skip item if no record found in loyalty level array
|
||||||
LoggingHelpers.LogError($"{trader} item templateId: {assortUnlock.ItemUnlockedTemplateId} ({assortItemName}). questId: {assortUnlock.QuestId}. no loyalty record found. ");
|
LoggingHelpers.LogError($"{trader} item templateId: {assortUnlock.ItemUnlockedTemplateId} ({ItemName}). questId: {assortUnlock.QuestId}. no loyalty record found. ");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (associatedLoyaltyLevelItem.Value != assortUnlock.LoyaltyLevel)
|
if (associatedLoyaltyLevelItem.Value != assortUnlock.LoyaltyLevel)
|
||||||
{
|
{
|
||||||
// Loyalty level is different to what was expected, skip and try next
|
// Loyalty level is different to what was expected, skip and try next
|
||||||
LoggingHelpers.LogWarning($"{trader} item templateId: {assortUnlock.ItemUnlockedTemplateId} ({assortItemName}). questId: {assortUnlock.QuestId}. no match found in LL array. expected LL{associatedLoyaltyLevelItem.Value}. found: LL{assortUnlock.LoyaltyLevel}");
|
LoggingHelpers.LogWarning($"{trader} item templateId: {assortUnlock.ItemUnlockedTemplateId} ({ItemName}). questId: {assortUnlock.QuestId}. no match found in LL array. expected LL{associatedLoyaltyLevelItem.Value}. found: LL{assortUnlock.LoyaltyLevel}");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -266,6 +263,33 @@ namespace AssortGenerator
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Try matching by mods on item if they exist
|
||||||
|
if (assortItemMods.Any())
|
||||||
|
{
|
||||||
|
var matchedItemMods = assortRoot.items.Where(x => x.parentId == match._id).ToList();
|
||||||
|
if (assortItemMods.Count() != matchedItemMods.Count)
|
||||||
|
{
|
||||||
|
LoggingHelpers.LogWarning($"{trader} item templateId: {assortUnlock.ItemUnlockedTemplateId} ({ItemName}). questId: {assortUnlock.QuestId}. mismatch of mod count, skipping");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
var badMatch = false;
|
||||||
|
foreach (var desiredMod in assortItemMods)
|
||||||
|
{
|
||||||
|
var matchingModInCurrentMatch = matchedItemMods.FirstOrDefault(x => x._tpl == desiredMod._tpl);
|
||||||
|
if (matchingModInCurrentMatch == null)
|
||||||
|
{
|
||||||
|
badMatch = true;
|
||||||
|
LoggingHelpers.LogWarning($"{trader} item templateId: {assortUnlock.ItemUnlockedTemplateId} ({ItemName}). questId: {assortUnlock.QuestId}. mismatch of mods, skipping");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (badMatch)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Add assort item id to blacklist so it wont be matched again
|
// Add assort item id to blacklist so it wont be matched again
|
||||||
assortItemsThatMatchBlackList.Add(associatedLoyaltyLevelItem.Key);
|
assortItemsThatMatchBlackList.Add(associatedLoyaltyLevelItem.Key);
|
||||||
|
|
||||||
@ -276,17 +300,17 @@ namespace AssortGenerator
|
|||||||
|
|
||||||
if (result.success.ContainsKey(assortIdUnlockedByQuest))
|
if (result.success.ContainsKey(assortIdUnlockedByQuest))
|
||||||
{
|
{
|
||||||
LoggingHelpers.LogWarning($"{trader} item templateId: {assortUnlock.ItemUnlockedTemplateId} ({assortItemName}). questId: {assortUnlock.QuestId}. ALREADY EXISTS. SKIPPING");
|
LoggingHelpers.LogWarning($"{trader} item templateId: {assortUnlock.ItemUnlockedTemplateId} ({ItemName}). questId: {assortUnlock.QuestId}. ALREADY EXISTS. SKIPPING");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (assortIdUnlockedByQuest.Length == 0)
|
if (assortIdUnlockedByQuest.Length == 0)
|
||||||
{
|
{
|
||||||
LoggingHelpers.LogError($"{trader} item templateId: {assortUnlock.ItemUnlockedTemplateId} ({assortItemName}). questId: {assortUnlock.QuestId}. no assortId found");
|
LoggingHelpers.LogError($"{trader} item templateId: {assortUnlock.ItemUnlockedTemplateId} ({ItemName}). questId: {assortUnlock.QuestId}. no assortId found");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
LoggingHelpers.LogSuccess($"{trader} item templateId: {assortUnlock.ItemUnlockedTemplateId} ({assortItemName}). questId: {assortUnlock.QuestId}. ADDING TO QUEST-ASSORT");
|
LoggingHelpers.LogSuccess($"{trader} item templateId: {assortUnlock.ItemUnlockedTemplateId} ({ItemName}). questId: {assortUnlock.QuestId}. ADDING TO QUEST-ASSORT");
|
||||||
|
|
||||||
if (assortUnlock.Criteria == "Success")
|
if (assortUnlock.Criteria == "Success")
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user