Quest improvements

This commit is contained in:
Chomp 2022-01-09 20:36:05 +00:00
parent f0c6bda9dc
commit 7cdf7d096d

View File

@ -110,10 +110,98 @@ namespace GenerateQuestFile
} }
} }
} }
} }
JsonWriter.WriteJson(questsToOutputToFile, "output", Directory.GetCurrentDirectory(), "quests"); JsonWriter.WriteJson(questsToOutputToFile, "output", Directory.GetCurrentDirectory(), "quests");
} }
private static void CheckAndFixMissingProperties(Quest missingQuest)
{
if (missingQuest.description is null)
{
missingQuest.description = $"{missingQuest._id} description";
}
if (missingQuest.failMessageText is null)
{
missingQuest.failMessageText = $"{missingQuest._id} failMessageText";
}
if (missingQuest.name is null)
{
missingQuest.name = $"{missingQuest._id} name";
}
if (missingQuest.note is null)
{
missingQuest.note = $"{missingQuest._id} note";
}
if (missingQuest.startedMessageText is null)
{
missingQuest.startedMessageText = $"{missingQuest._id} startedMessageText";
}
if (missingQuest.successMessageText is null)
{
missingQuest.successMessageText = $"{missingQuest._id} successMessageText";
}
if (missingQuest.templateId is null)
{
missingQuest.templateId = $"{missingQuest._id} successMessageText";
}
}
private static void AddMissingAvailableForStartConditions(Quest originalQuest, KeyValuePair<string, Quest> questToUpdate)
{
// Iterate over quest requirements in existing quest file
foreach (var questRequirementToAdd in originalQuest.conditions.AvailableForStart.ToList())
{
//Exists already, skip
if (questToUpdate.Value.conditions.AvailableForStart.Any(x => x._parent == questRequirementToAdd._parent
&& x._props.target?.ToString() == questRequirementToAdd._props.target?.ToString()))
{
continue;
}
questToUpdate.Value.conditions.AvailableForStart.Add(questRequirementToAdd);
}
}
/// <summary>
/// Look up the quests name by guid and add human readable string to quest object
/// </summary>
/// <param name="quest"></param>
private static void AddQuestName(KeyValuePair<string, Quest> quest)
{
var questName = QuestHelper.GetQuestNameById(quest.Value._id); // special characters like ", brake the client when it parses it, gotta remove
var rgx = new Regex("[^a-zA-Z0-9 -]");
quest.Value.QuestName = rgx.Replace(questName, "");
}
/// <summary>
/// Loop over live quests and use if it exists, otherwise use existing data
/// </summary>
private static List<Quest> GetMissingQuestsNotInLiveFile(Dictionary<string, Quest> existingQuests, QuestRoot liveQuestData)
{
var missingQuestsToReturn = new List<Quest>();
foreach (var quest in existingQuests.Values)
{
var liveQuest = liveQuestData.data.Find(x => x._id == quest._id);
if (liveQuest is null)
{
missingQuestsToReturn.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.");
}
}
return missingQuestsToReturn;
}
} }
} }