static public void Initialize() { try { var settings = System.Text.Json.JsonSerializer.Deserialize <ScrambledBugs.JsonSettings> ( System.IO.File.ReadAllText(System.IO.Path.Combine(Main.ExecutingAssemblyDirectoryName, $"{Main.ExecutingAssemblyName}.json")), new System.Text.Json.JsonSerializerOptions() { AllowTrailingCommas = true, PropertyNameCaseInsensitive = true, ReadCommentHandling = System.Text.Json.JsonCommentHandling.Skip } ); Log.Information($"Initializing...\n{System.Text.Json.JsonSerializer.Serialize<ScrambledBugs.JsonSettings>(settings, new System.Text.Json.JsonSerializerOptions() { PropertyNamingPolicy = System.Text.Json.JsonNamingPolicy.CamelCase, WriteIndented = true })}"); // Fixes if (settings?.Fixes?.ActorValuePercentage ?? false) { settings.Fixes.ActorValuePercentage = ScrambledBugs.Fixes.ActorValuePercentage.Fix(); } if (settings?.Fixes?.HarvestedFlags ?? false) { settings.Fixes.HarvestedFlags = ScrambledBugs.Fixes.HarvestedFlags.Fix(); } if (settings?.Fixes?.HitEffectRaceCondition ?? false) { settings.Fixes.HitEffectRaceCondition = ScrambledBugs.Fixes.HitEffectRaceCondition.Fix(); } if (settings?.Fixes?.MagicEffectConditions ?? false) { settings.Fixes.MagicEffectConditions = ScrambledBugs.Fixes.MagicEffectConditions.Fix(); } if (settings?.Fixes?.MagicEffectFlags ?? false) { settings.Fixes.MagicEffectFlags = ScrambledBugs.Fixes.MagicEffectFlags.Fix(); } if (settings?.Fixes?.ModArmorWeightPerkEntryPoint ?? false) { settings.Fixes.ModArmorWeightPerkEntryPoint = ScrambledBugs.Fixes.ModArmorWeightPerkEntryPoint.Fix(); } if ((settings?.Fixes?.QuickShot ?? false) && (settings?.Fixes?.QuickShotPlaybackSpeed.HasValue ?? false)) { settings.Fixes.QuickShot = ScrambledBugs.Fixes.QuickShot.Fix(settings.Fixes.QuickShotPlaybackSpeed.Value); } if (settings?.Fixes?.SpeedMultUpdates ?? false) { settings.Fixes.SpeedMultUpdates = ScrambledBugs.Fixes.SpeedMultUpdates.Fix(); } if (settings?.Fixes?.TerrainDecals ?? false) { settings.Fixes.TerrainDecals = ScrambledBugs.Fixes.TerrainDecals.Fix(); } if (settings?.Fixes?.TrainingMenuText ?? false) { settings.Fixes.TrainingMenuText = ScrambledBugs.Fixes.TrainingMenuText.Fix(); } if (settings?.Fixes?.WeaponCharge ?? false) { settings.Fixes.WeaponCharge = ScrambledBugs.Fixes.WeaponCharge.Fix(); } // Patches if (settings?.Patches?.AccumulatingMagnitude ?? false) { settings.Patches.AccumulatingMagnitude = ScrambledBugs.Patches.AccumulatingMagnitude.Patch(); } if (settings?.Patches?.AlreadyCaughtPickpocketing ?? false) { settings.Patches.AlreadyCaughtPickpocketing = ScrambledBugs.Patches.AlreadyCaughtPickpocketing.Patch(); } if (settings?.Patches?.ApplySpellPerkEntryPoints?.MultipleSpells ?? false) { settings.Patches.ApplySpellPerkEntryPoints.MultipleSpells = ScrambledBugs.Patches.ApplySpellPerkEntryPoints.MultipleSpells.Patch(settings?.Patches?.ApplySpellPerkEntryPoints?.CastSpells ?? false); } else if (settings?.Patches?.ApplySpellPerkEntryPoints?.CastSpells ?? false) { settings.Patches.ApplySpellPerkEntryPoints.CastSpells = ScrambledBugs.Patches.ApplySpellPerkEntryPoints.CastSpells.Patch(); } if (settings?.Patches?.AttachHitEffectArt ?? false) { settings.Patches.AttachHitEffectArt = ScrambledBugs.Patches.AttachHitEffectArt.Patch(); } if (settings?.Patches?.EquipBestAmmo ?? false) { settings.Patches.EquipBestAmmo = ScrambledBugs.Patches.EquipBestAmmo.Patch(); } if (settings?.Patches?.LeveledCharacters ?? false) { settings.Patches.LeveledCharacters = ScrambledBugs.Patches.LeveledCharacters.Patch(); } if (settings?.Patches?.LockpickingExperience ?? false) { settings.Patches.LockpickingExperience = ScrambledBugs.Patches.LockpickingExperience.Patch(); } if (settings?.Patches?.MultipleHitEffects ?? false) { settings.Patches.MultipleHitEffects = ScrambledBugs.Patches.MultipleHitEffects.Patch(); } if (settings?.Patches?.PausedGameHitEffects ?? false) { settings.Patches.PausedGameHitEffects = ScrambledBugs.Patches.PausedGameHitEffects.Patch(); } if (settings?.Patches?.PowerAttackStamina ?? false) { settings.Patches.PowerAttackStamina = ScrambledBugs.Patches.PowerAttackStamina.Patch(); } if (settings?.Patches?.ReflectDamage ?? false) { settings.Patches.ReflectDamage = ScrambledBugs.Patches.ReflectDamage.Patch(); } if (settings?.Patches?.TeammateDifficulty ?? false) { settings.Patches.TeammateDifficulty = ScrambledBugs.Patches.TeammateDifficulty.Patch(); } if (settings?.Patches?.UnderfilledSoulGems ?? false) { settings.Patches.UnderfilledSoulGems = ScrambledBugs.Patches.UnderfilledSoulGems.Patch(); } // Fixes if (settings?.Fixes?.ApplySpellPerkEntryPoints?.Arrows ?? false) { settings.Fixes.ApplySpellPerkEntryPoints.Arrows = ScrambledBugs.Fixes.ApplySpellPerkEntryPoints.Arrows.Fix(); } Trampoline.Commit(); Log.Information($"Initialized.\n{System.Text.Json.JsonSerializer.Serialize<ScrambledBugs.JsonSettings>(settings, new System.Text.Json.JsonSerializerOptions() { PropertyNamingPolicy = System.Text.Json.JsonNamingPolicy.CamelCase, WriteIndented = true })}"); } catch (System.Exception exception) // System.IO.FileNotFoundException, System.Text.Json.JsonException { Log.Information($"{exception}"); throw; } }