diff --git a/NewHorizons/Builder/General/DetectorBuilder.cs b/NewHorizons/Builder/General/DetectorBuilder.cs index 9da557ec..4a62d5b6 100644 --- a/NewHorizons/Builder/General/DetectorBuilder.cs +++ b/NewHorizons/Builder/General/DetectorBuilder.cs @@ -143,13 +143,15 @@ namespace NewHorizons.Builder.General // It's a planet if (binaryFocalPoint.Primary != null && binaryFocalPoint.Secondary != null) { - forceDetector._detectableFields = new ForceVolume[] { parentGravityVolume }; + if (!parentGravityVolume) NHLogger.LogError($"{astroObject?.name} trying to orbit {primaryBody?.name}, which has no gravity volume!"); + forceDetector._detectableFields = parentGravityVolume ? new ForceVolume[] { parentGravityVolume } : new ForceVolume[0]; } } } else { - forceDetector._detectableFields = new ForceVolume[] { parentGravityVolume }; + if (!parentGravityVolume) NHLogger.LogError($"{astroObject?.name} trying to orbit {primaryBody?.name}, which has no gravity volume!"); + forceDetector._detectableFields = parentGravityVolume ? new ForceVolume[] { parentGravityVolume } : new ForceVolume[0]; } } @@ -164,7 +166,7 @@ namespace NewHorizons.Builder.General var primaryGV = primary.GetGravityVolume(); var secondaryGV = secondary.GetGravityVolume(); - if (primaryGV._falloffType != secondaryGV._falloffType) + if (primaryGV && secondaryGV && primaryGV._falloffType != secondaryGV._falloffType) { NHLogger.LogError($"Binaries must have the same gravity falloff! {primaryGV._falloffType} != {secondaryGV._falloffType}"); return; @@ -173,15 +175,17 @@ namespace NewHorizons.Builder.General var pointForceDetector = point.GetAttachedOWRigidbody().GetAttachedForceDetector(); // Set detectable fields - primaryCFD._detectableFields = new ForceVolume[] { secondaryGV }; + if (!secondaryGV) NHLogger.LogError($"{point.PrimaryName} trying to orbit {point.SecondaryName}, which has no gravity volume!"); + primaryCFD._detectableFields = secondaryGV ? new ForceVolume[] { secondaryGV } : new ForceVolume[0]; primaryCFD._inheritDetector = pointForceDetector; primaryCFD._activeInheritedDetector = pointForceDetector; primaryCFD._inheritElement0 = false; - secondaryCFD._detectableFields = new ForceVolume[] { primaryGV }; + if (!primaryGV) NHLogger.LogError($"{point.SecondaryName} trying to orbit {point.PrimaryName}, which has no gravity volume!"); + secondaryCFD._detectableFields = primaryGV ? new ForceVolume[] { primaryGV } : new ForceVolume[0]; secondaryCFD._inheritDetector = pointForceDetector; secondaryCFD._activeInheritedDetector = pointForceDetector; secondaryCFD._inheritElement0 = false; } } -} \ No newline at end of file +} diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index 5e9c80d9..66c16a95 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -382,8 +382,9 @@ namespace NewHorizons.Builder.Props else if (component is NomaiInterfaceOrb orb) { // detect planet gravity + // somehow Intervention has GetAttachedOWRigidbody as null sometimes, idk why var gravityVolume = planetGO.GetAttachedOWRigidbody()?.GetAttachedGravityVolume(); - orb.GetComponent()._detectableFields = gravityVolume ? new ForceVolume[] { gravityVolume } : new ForceVolume[] { }; + orb.GetComponent()._detectableFields = gravityVolume ? new ForceVolume[] { gravityVolume } : new ForceVolume[0]; } else if (component is VisionTorchItem torchItem) diff --git a/NewHorizons/Builder/Props/GravityCannonBuilder.cs b/NewHorizons/Builder/Props/GravityCannonBuilder.cs index e86ccd42..44b1f075 100644 --- a/NewHorizons/Builder/Props/GravityCannonBuilder.cs +++ b/NewHorizons/Builder/Props/GravityCannonBuilder.cs @@ -137,7 +137,10 @@ namespace NewHorizons.Builder.Props orbBody._lastVelocity = velocity; orbBody._currentVelocity = velocity; - orb.GetComponent()._detectableFields = new ForceVolume[] { planetGO.GetComponentInChildren() }; + // detect planet gravity + // somehow Intervention has GetAttachedOWRigidbody as null sometimes, idk why + var gravityVolume = planetGO.GetAttachedOWRigidbody()?.GetAttachedGravityVolume(); + orb.GetComponent()._detectableFields = gravityVolume ? new ForceVolume[] { gravityVolume } : new ForceVolume[0]; Delay.RunWhenAndInNUpdates(() => { diff --git a/NewHorizons/NewHorizons.csproj b/NewHorizons/NewHorizons.csproj index 8b620bac..97051df9 100644 --- a/NewHorizons/NewHorizons.csproj +++ b/NewHorizons/NewHorizons.csproj @@ -15,9 +15,8 @@ none - - + diff --git a/NewHorizons/Patches/PlayerPatches/PlayerHazardDetectorPatches.cs b/NewHorizons/Patches/DetectorPatches/PlayerHazardDetectorPatches.cs similarity index 93% rename from NewHorizons/Patches/PlayerPatches/PlayerHazardDetectorPatches.cs rename to NewHorizons/Patches/DetectorPatches/PlayerHazardDetectorPatches.cs index 032f8f9b..0584023d 100644 --- a/NewHorizons/Patches/PlayerPatches/PlayerHazardDetectorPatches.cs +++ b/NewHorizons/Patches/DetectorPatches/PlayerHazardDetectorPatches.cs @@ -1,7 +1,7 @@ using HarmonyLib; using NewHorizons.Utility.OWML; -namespace NewHorizons.Patches.PlayerPatches +namespace NewHorizons.Patches.DetectorPatches { [HarmonyPatch(typeof(HazardDetector))] public static class PlayerHazardDetectorPatches diff --git a/NewHorizons/manifest.json b/NewHorizons/manifest.json index 0c3366f1..42fe40e5 100644 --- a/NewHorizons/manifest.json +++ b/NewHorizons/manifest.json @@ -4,8 +4,8 @@ "author": "xen, Bwc9876, clay, MegaPiggy, John, Trifid, Hawkbar, Book", "name": "New Horizons", "uniqueName": "xen.NewHorizons", - "version": "1.16.3", - "owmlVersion": "2.9.3", + "version": "1.16.4", + "owmlVersion": "2.9.7", "dependencies": [ "JohnCorby.VanillaFix", "_nebula.MenuFramework", "xen.CommonCameraUtility", "dgarro.CustomShipLogModes" ], "conflicts": [ "Raicuparta.QuantumSpaceBuddies", "PacificEngine.OW_CommonResources" ], "pathsToPreserve": [ "planets", "systems", "translations" ]