diff --git a/NewHorizons/Builder/Props/SignalBuilder.cs b/NewHorizons/Builder/Props/SignalBuilder.cs index 72895387..7b9f8d95 100644 --- a/NewHorizons/Builder/Props/SignalBuilder.cs +++ b/NewHorizons/Builder/Props/SignalBuilder.cs @@ -22,8 +22,8 @@ namespace NewHorizons.Builder.Props public static int NumberOfFrequencies; - public static List QMSignals { get; private set; } - public static List CloakedSignals { get; private set; } + private static List _qmSignals; + private static List _cloakedSignals; public static bool Initialized; @@ -77,12 +77,22 @@ namespace NewHorizons.Builder.Props _nextCustomFrequencyName = 256; NumberOfFrequencies = 8; - QMSignals = new List() { SignalName.Quantum_QM }; - CloakedSignals = new List(); + _qmSignals = new List() { SignalName.Quantum_QM }; + _cloakedSignals = new List(); Initialized = true; } + public static bool IsCloaked(SignalName signalName) + { + return _cloakedSignals.Contains(signalName); + } + + public static bool IsOnQuantumMoon(SignalName signalName) + { + return _qmSignals.Contains(signalName); + } + public static SignalFrequency AddFrequency(string str) { Logger.Log($"Registering new frequency name [{str}]"); @@ -220,8 +230,8 @@ namespace NewHorizons.Builder.Props signalGO.SetActive(true); // Track certain special signal things - if (planetGO.GetComponent()?.GetAstroObjectName() == AstroObject.Name.QuantumMoon) QMSignals.Add(name); - if (info.insideCloak) CloakedSignals.Add(name); + if (planetGO.GetComponent()?.GetAstroObjectName() == AstroObject.Name.QuantumMoon) _qmSignals.Add(name); + if (info.insideCloak) _cloakedSignals.Add(name); return signalGO; } diff --git a/NewHorizons/Patches/AudioSignalPatches.cs b/NewHorizons/Patches/AudioSignalPatches.cs index 18544af3..a5087919 100644 --- a/NewHorizons/Patches/AudioSignalPatches.cs +++ b/NewHorizons/Patches/AudioSignalPatches.cs @@ -119,7 +119,10 @@ namespace NewHorizons.Patches { if (!SignalBuilder.Initialized) return true; - if (!SignalBuilder.CloakedSignals.Contains(__instance._name) && !SignalBuilder.QMSignals.Contains(__instance._name)) return true; + var isCloaked = SignalBuilder.IsCloaked(__instance._name); + var isOnQuantumMoon = SignalBuilder.IsOnQuantumMoon(__instance._name); + + if (!isCloaked && !isOnQuantumMoon) return true; __instance._canBePickedUpByScope = false; if (__instance._sunController != null && __instance._sunController.IsPointInsideSupernova(__instance.transform.position)) @@ -130,7 +133,7 @@ namespace NewHorizons.Patches } // This part is modified from the original to include all QM signals - if (Locator.GetQuantumMoon() != null && Locator.GetQuantumMoon().IsPlayerInside() && !SignalBuilder.QMSignals.Contains(__instance._name)) + if (Locator.GetQuantumMoon() != null && Locator.GetQuantumMoon().IsPlayerInside() && !isOnQuantumMoon) { __instance._signalStrength = 0f; __instance._degreesFromScope = 180f; @@ -167,7 +170,7 @@ namespace NewHorizons.Patches } // If it's a cloaked signal we don't want to hear it outside the cloak field - if (SignalBuilder.CloakedSignals.Contains(__instance._name)) + if (isCloaked) { if (!PlayerState.InCloakingField()) {