From 7cdf7d096d7f7d083397066500e0c6261d7c5931 Mon Sep 17 00:00:00 2001 From: Chomp Date: Sun, 9 Jan 2022 20:36:05 +0000 Subject: [PATCH] Quest improvements --- GenerateQuestFile/Program.cs | 90 +++++++++++++++++++++++++++++++++++- 1 file changed, 89 insertions(+), 1 deletion(-) diff --git a/GenerateQuestFile/Program.cs b/GenerateQuestFile/Program.cs index 622bca7..77697ed 100644 --- a/GenerateQuestFile/Program.cs +++ b/GenerateQuestFile/Program.cs @@ -110,10 +110,98 @@ namespace GenerateQuestFile } } } - } 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 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); + } + } + + /// + /// Look up the quests name by guid and add human readable string to quest object + /// + /// + private static void AddQuestName(KeyValuePair 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, ""); + } + + /// + /// Loop over live quests and use if it exists, otherwise use existing data + /// + private static List GetMissingQuestsNotInLiveFile(Dictionary existingQuests, QuestRoot liveQuestData) + { + var missingQuestsToReturn = new List(); + 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; + } } }