public static void Save() { if (BackupOptions != null && BackupOptions.Enabled && DateTime.Now - BackupOptions.LastBackup >= TimeSpan.FromDays(BackupOptions.Days)) { BackupProfiles(); } JObject json = new JObject { { "LanguageOverride", LanguageOverride.ToString() }, { "LastProfile", LastProfile }, { "UpdateGumpVersion", UpdateGumpVersion?.ToString() ?? "0.0.0.0" }, { "SavePasswords", SavePasswords }, { "SavePasswordsOnlyBlank", SavePasswordsOnlyBlank }, { "UserId", UserId }, { "UseCUOClilocLanguage", UseCUOClilocLanguage }, #if !DEVELOP { "WindowWidth", WindowWidth }, { "WindowHeight", WindowHeight }, #endif }; BackupOptions?.Serialize(json); JArray linkedProfilesArray = new JArray(); foreach (JObject linkedObj in _linkedProfiles.Select(profile => new JObject { { "Serial", profile.Key }, { "Profile", profile.Value } })) { linkedProfilesArray.Add(linkedObj); } json.Add("Profiles", linkedProfilesArray); JArray savedPasswordsArray = new JArray(); foreach (KeyValuePair <string, string> kvp in SavedPasswords) { savedPasswordsArray.Add(new JObject { { "Username", kvp.Key }, { "Password", Crypter.Encrypt(kvp.Value) } }); } json.Add("SavedPasswords", savedPasswordsArray); JArray assembliesArray = new JArray(); foreach (string assembly in Assemblies ?? new string[0]) { assembliesArray.Add(assembly); } json.Add("Assemblies", assembliesArray); File.WriteAllText(Path.Combine(Engine.StartupPath ?? Environment.CurrentDirectory, "Assistant.json"), json.ToString(Formatting.Indented)); }