diff --git a/NewHorizons/Builder/Atmosphere/VolumesBuilder.cs b/NewHorizons/Builder/Atmosphere/VolumesBuilder.cs index a59cfd8b..7f681c29 100644 --- a/NewHorizons/Builder/Atmosphere/VolumesBuilder.cs +++ b/NewHorizons/Builder/Atmosphere/VolumesBuilder.cs @@ -32,6 +32,8 @@ namespace NewHorizons.Builder.Atmosphere PR._useMinimap = useMiniMap; PR._useAltimeter = useMiniMap; + rulesetGO.AddComponent(); + EffectRuleset ER = rulesetGO.AddComponent(); ER._type = EffectRuleset.BubbleType.Underwater; var gdRuleset = GameObject.Find("GiantsDeep_Body/Sector_GD/Volumes_GD/RulesetVolumes_GD").GetComponent(); diff --git a/NewHorizons/Builder/General/AmbientLightBuilder.cs b/NewHorizons/Builder/General/AmbientLightBuilder.cs index 932c6858..307683fa 100644 --- a/NewHorizons/Builder/General/AmbientLightBuilder.cs +++ b/NewHorizons/Builder/General/AmbientLightBuilder.cs @@ -3,7 +3,7 @@ namespace NewHorizons.Builder.General { public static class AmbientLightBuilder { - public static void Make(GameObject planetGO, Sector sector, float scale) + public static void Make(GameObject planetGO, Sector sector, float scale, float intensity = 0.5f) { GameObject lightGO = GameObject.Instantiate(GameObject.Find("BrittleHollow_Body/AmbientLight_BH_Surface"), sector?.transform ?? planetGO.transform); lightGO.transform.position = planetGO.transform.position; @@ -19,7 +19,7 @@ namespace NewHorizons.Builder.General light.color = new Color(0.0f, 0.0f, 0.8f, 0.0225f); light.range = scale; - light.intensity = 0.5f; + light.intensity = intensity; } } } diff --git a/NewHorizons/Builder/Props/SignalBuilder.cs b/NewHorizons/Builder/Props/SignalBuilder.cs index 56c46456..7febf1d8 100644 --- a/NewHorizons/Builder/Props/SignalBuilder.cs +++ b/NewHorizons/Builder/Props/SignalBuilder.cs @@ -142,10 +142,12 @@ namespace NewHorizons.Builder.Props var source = signalGO.AddComponent(); var owAudioSource = signalGO.AddComponent(); + owAudioSource._audioSource = source; AudioSignal audioSignal; if (info.InsideCloak) audioSignal = signalGO.AddComponent(); else audioSignal = signalGO.AddComponent(); + audioSignal._owAudioSource = owAudioSource; var frequency = StringToFrequency(info.Frequency); var name = StringToSignalName(info.Name); diff --git a/NewHorizons/Components/QuantumPlanet.cs b/NewHorizons/Components/QuantumPlanet.cs index 9627540e..4b932df9 100644 --- a/NewHorizons/Components/QuantumPlanet.cs +++ b/NewHorizons/Components/QuantumPlanet.cs @@ -107,6 +107,8 @@ namespace NewHorizons.Components if (newState.orbit != null && newState.orbit != oldState.orbit) SetNewOrbit(primaryBody, orbitalParams); _currentIndex = newIndex; + + GlobalMessenger.FireEvent("QuantumMoonChangeState", _rb); } // Be completely sure we move the visibility tracker back to our planet diff --git a/NewHorizons/External/Modules/BaseModule.cs b/NewHorizons/External/Modules/BaseModule.cs index 39e14eaf..6454a5ad 100644 --- a/NewHorizons/External/Modules/BaseModule.cs +++ b/NewHorizons/External/Modules/BaseModule.cs @@ -4,7 +4,9 @@ namespace NewHorizons.External.Modules public class BaseModule { public bool HasMapMarker { get; set; } + [System.Obsolete("HasAmbientLight is deprecated, please use AmbientLight instead")] public bool HasAmbientLight { get; set; } + public float AmbientLight { get; set; } public float SurfaceGravity { get; set; } public string GravityFallOff { get; set; } = "linear"; public float SurfaceSize { get; set; } diff --git a/NewHorizons/Handlers/PlanetCreationHandler.cs b/NewHorizons/Handlers/PlanetCreationHandler.cs index 25d0527d..c15db259 100644 --- a/NewHorizons/Handlers/PlanetCreationHandler.cs +++ b/NewHorizons/Handlers/PlanetCreationHandler.cs @@ -378,7 +378,11 @@ namespace NewHorizons.Handlers { var sphereOfInfluence = GetSphereOfInfluence(body); - if (body.Config.Base.HasAmbientLight) + if (body.Config.Base.AmbientLight != 0) + { + AmbientLightBuilder.Make(go, sector, sphereOfInfluence, body.Config.Base.AmbientLight); + } + else if (body.Config.Base.HasAmbientLight) { AmbientLightBuilder.Make(go, sector, sphereOfInfluence); } diff --git a/NewHorizons/Patches/AudioSignalPatches.cs b/NewHorizons/Patches/AudioSignalPatches.cs index 4dcb2fe2..10fb8640 100644 --- a/NewHorizons/Patches/AudioSignalPatches.cs +++ b/NewHorizons/Patches/AudioSignalPatches.cs @@ -125,5 +125,12 @@ namespace NewHorizons.Patches } return true; } + + [HarmonyPrefix] + [HarmonyPatch(typeof(TravelerAudioManager), nameof(TravelerAudioManager.Update))] + public static void TravelerAudioManager_Update(TravelerAudioManager __instance) + { + __instance._signals.RemoveAll(signal => signal == null || signal.gameObject == null || signal._owAudioSource == null || signal._owAudioSource._audioSource == null); + } } } diff --git a/NewHorizons/Schemas/body_schema.json b/NewHorizons/Schemas/body_schema.json index 856f314f..2a5a116a 100644 --- a/NewHorizons/Schemas/body_schema.json +++ b/NewHorizons/Schemas/body_schema.json @@ -209,10 +209,10 @@ "default": false, "description": "If the body should have a marker on the map screen." }, - "hasAmbientLight": { - "type": "boolean", - "default": false, - "description": "If the dark side of the body should have some slight amount of light" + "ambientLight": { + "type": "number", + "default": 0, + "description": "The intensity of light the dark side of the body should have. Timber Hearth has 1.4 for reference" }, "surfaceGravity": { "type": "number",