diff --git a/NewHorizons/Main.cs b/NewHorizons/Main.cs
index d60478d1..bc398979 100644
--- a/NewHorizons/Main.cs
+++ b/NewHorizons/Main.cs
@@ -58,6 +58,7 @@ namespace NewHorizons
public string DefaultStarSystem => SystemDict.ContainsKey(_defaultSystemOverride) ? _defaultSystemOverride : _defaultStarSystem;
public string CurrentStarSystem => _currentStarSystem;
+ public bool TimeLoopEnabled => SystemDict[CurrentStarSystem]?.Config?.enableTimeLoop ?? true;
public bool IsWarpingFromShip { get; private set; } = false;
public bool IsWarpingFromVessel { get; private set; } = false;
public bool IsWarpingBackToEye { get; internal set; } = false;
diff --git a/NewHorizons/Patches/TimeLoopPatches.cs b/NewHorizons/Patches/TimeLoopPatches.cs
new file mode 100644
index 00000000..ac10a9ec
--- /dev/null
+++ b/NewHorizons/Patches/TimeLoopPatches.cs
@@ -0,0 +1,50 @@
+using HarmonyLib;
+
+namespace NewHorizons.Patches
+{
+ [HarmonyPatch]
+ public static class TimeLoopPatches
+ {
+ ///
+ /// Disables starfield updates
+ ///
+ [HarmonyPrefix]
+ [HarmonyPatch(typeof(StarfieldController), nameof(StarfieldController.Update))]
+ public static bool StarfieldController_Update() => Main.Instance.TimeLoopEnabled;
+
+ ///
+ /// Disables interloper destruction
+ ///
+ [HarmonyPrefix]
+ [HarmonyPatch(typeof(TempCometCollisionFix), nameof(TempCometCollisionFix.Update))]
+ public static bool TempCometCollisionFix_Update() => Main.Instance.TimeLoopEnabled;
+
+ ///
+ /// Disables sun logic
+ ///
+ [HarmonyPrefix]
+ [HarmonyPatch(typeof(SunController), nameof(SunController.Update))]
+ public static bool SunController_Update(SunController __instance) => Main.Instance.TimeLoopEnabled && __instance.isActiveAndEnabled;
+
+ ///
+ /// Disables sun expansion
+ ///
+ [HarmonyPrefix]
+ [HarmonyPatch(typeof(SunController), nameof(SunController.UpdateScale))]
+ public static bool SunController_UpdateScale(SunController __instance) => Main.Instance.TimeLoopEnabled && __instance.isActiveAndEnabled;
+
+ ///
+ /// Disables sun collapse SFX
+ ///
+ [HarmonyPrefix]
+ [HarmonyPatch(typeof(SunController), nameof(SunController.OnTriggerSupernova))]
+ public static bool SunController_OnTriggerSupernova(SunController __instance) => Main.Instance.TimeLoopEnabled && __instance.isActiveAndEnabled;
+
+ ///
+ /// Disables end times music
+ ///
+ [HarmonyPrefix]
+ [HarmonyPatch(typeof(GlobalMusicController), nameof(GlobalMusicController.UpdateEndTimesMusic))]
+ public static bool GlobalMusicController_UpdateEndTimesMusic() => Main.Instance.TimeLoopEnabled;
+ }
+}