From 24fd838db0da8fe6910ba5da500b670a47c0a007 Mon Sep 17 00:00:00 2001 From: Ben C Date: Sat, 25 Mar 2023 18:50:46 -0400 Subject: [PATCH 01/17] Docs Fix --- docs/content/pages/secret.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/content/pages/secret.md b/docs/content/pages/secret.md index 335f5f3b..9e54ecdf 100644 --- a/docs/content/pages/secret.md +++ b/docs/content/pages/secret.md @@ -21,3 +21,5 @@ aaaaaaaaaaaaaaaaaaaaaaaaa ## 9/2/22 Where were you when new horizons docs died, im going gorbo mode + + From cdff79c159deb2ebd422295f244d66c5c93efb08 Mon Sep 17 00:00:00 2001 From: Ben C Date: Sat, 25 Mar 2023 18:53:26 -0400 Subject: [PATCH 02/17] Fix Docs Triggers Idk why the triggers don't work on the release build action --- .github/workflows/docs_build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs_build.yml b/.github/workflows/docs_build.yml index 17303ec7..3a3ce87a 100644 --- a/.github/workflows/docs_build.yml +++ b/.github/workflows/docs_build.yml @@ -12,7 +12,7 @@ on: branches: [main] paths: - docs/** - - NewHorizons/Schemas/*.xsd + - NewHorizons/Schemas/* env: URL_PREFIX: '/' From 9865ce4698719567cdfe23aecf26faa4e00df74a Mon Sep 17 00:00:00 2001 From: Ben C Date: Sat, 25 Mar 2023 18:57:39 -0400 Subject: [PATCH 03/17] Remove on release build --- .github/workflows/release_build.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/.github/workflows/release_build.yml b/.github/workflows/release_build.yml index f59e71b4..e657fbd5 100644 --- a/.github/workflows/release_build.yml +++ b/.github/workflows/release_build.yml @@ -35,13 +35,6 @@ jobs: with: artifact_name: NewHorizons-Schemas-Release secrets: inherit - Update_Docs: - name: 'Update Docs' - needs: Build - if: ${{ needs.Build.outputs.schemas_changed == 'true' && github.ref == 'refs/heads/main' }} # Same thing with docs - uses: './.github/workflows/docs_build.yml' - with: - schemas_artifact: NewHorizons-Schemas-Debug Update_Release: name: 'Create/Update Release Asset' needs: Build From a81f1e986a938a1d7a1c2cfc3cc31348b27aef8b Mon Sep 17 00:00:00 2001 From: Nick Date: Sun, 26 Mar 2023 13:47:04 -0400 Subject: [PATCH 04/17] Fix parenting issue, add more dialogue verbose logs --- NewHorizons/Builder/Props/DetailBuilder.cs | 5 ++++- NewHorizons/Builder/Props/DialogueBuilder.cs | 8 +++++++- NewHorizons/Builder/Props/PropBuildManager.cs | 8 ++++++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index 7192715e..de12038a 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -170,6 +170,8 @@ namespace NewHorizons.Builder.Props if (detail.removeComponents) { + NHLogger.LogVerbose($"Removing all components from [{prop.name}]"); + // Just swap all the children to a new game object var newDetailGO = new GameObject(prop.name); newDetailGO.transform.position = prop.transform.position; @@ -185,7 +187,8 @@ namespace NewHorizons.Builder.Props { child.parent = newDetailGO.transform; } - GameObject.Destroy(prop); + // Have to destroy it right away, else parented props might get attached to the old one + GameObject.DestroyImmediate(prop); prop = newDetailGO; } diff --git a/NewHorizons/Builder/Props/DialogueBuilder.cs b/NewHorizons/Builder/Props/DialogueBuilder.cs index 03fbc290..e05981f1 100644 --- a/NewHorizons/Builder/Props/DialogueBuilder.cs +++ b/NewHorizons/Builder/Props/DialogueBuilder.cs @@ -16,9 +16,15 @@ namespace NewHorizons.Builder.Props // Returns the character dialogue tree and remote dialogue trigger, if applicable. public static (CharacterDialogueTree, RemoteDialogueTrigger) Make(GameObject go, Sector sector, DialogueInfo info, IModBehaviour mod) { + NHLogger.LogVerbose($"[DIALOGUE] Created a new character dialogue [{info.rename}] on [{info.parentPath}]"); + // In stock I think they disable dialogue stuff with conditions // Here we just don't make it at all - if (info.blockAfterPersistentCondition != null && PlayerData.GetPersistentCondition(info.blockAfterPersistentCondition)) return (null, null); + if (!string.IsNullOrEmpty(info.blockAfterPersistentCondition) && PlayerData.GetPersistentCondition(info.blockAfterPersistentCondition)) + { + NHLogger.LogVerbose($"[DIALOGUE] Persistent condition [{info.blockAfterPersistentCondition}] was met for [{info.rename}], aborting"); + return (null, null); + } var dialogue = MakeConversationZone(go, sector, info, mod.ModHelper); diff --git a/NewHorizons/Builder/Props/PropBuildManager.cs b/NewHorizons/Builder/Props/PropBuildManager.cs index 5c00d553..b0b6c76d 100644 --- a/NewHorizons/Builder/Props/PropBuildManager.cs +++ b/NewHorizons/Builder/Props/PropBuildManager.cs @@ -106,11 +106,15 @@ namespace NewHorizons.Builder.Props { try { - DialogueBuilder.Make(go, sector, dialogueInfo, mod); + var (dialogue, trigger) = DialogueBuilder.Make(go, sector, dialogueInfo, mod); + if (dialogue == null) + { + NHLogger.LogVerbose($"[DIALOGUE] Failed to create dialogue [{dialogueInfo.xmlFile}]"); + } } catch (Exception ex) { - NHLogger.LogError($"Couldn't make dialogue [{dialogueInfo.xmlFile}] for [{go.name}]:\n{ex}"); + NHLogger.LogError($"[DIALOGUE] Couldn't make dialogue [{dialogueInfo.xmlFile}] for [{go.name}]:\n{ex}"); } } } From 667dc12df54bf33b2198dabd3895dbcec4dfa944 Mon Sep 17 00:00:00 2001 From: Nick Date: Sun, 26 Mar 2023 13:55:22 -0400 Subject: [PATCH 05/17] Update manifest.json --- NewHorizons/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NewHorizons/manifest.json b/NewHorizons/manifest.json index 5236f06a..0d89590d 100644 --- a/NewHorizons/manifest.json +++ b/NewHorizons/manifest.json @@ -4,7 +4,7 @@ "author": "xen, Bwc9876, clay, MegaPiggy, John, Trifid, Hawkbar, Book", "name": "New Horizons", "uniqueName": "xen.NewHorizons", - "version": "1.10.0", + "version": "1.10.1", "owmlVersion": "2.9.0", "dependencies": [ "JohnCorby.VanillaFix", "_nebula.MenuFramework", "xen.CommonCameraUtility", "dgarro.CustomShipLogModes" ], "conflicts": [ "Raicuparta.QuantumSpaceBuddies", "PacificEngine.OW_CommonResources" ], From 28df733eaba3e2598a8902573715e482655c4772 Mon Sep 17 00:00:00 2001 From: Nick Date: Sun, 26 Mar 2023 14:55:24 -0400 Subject: [PATCH 06/17] Fix details with removeComponents being active too early --- NewHorizons/Builder/Props/DetailBuilder.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index de12038a..59f6bf08 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -174,6 +174,7 @@ namespace NewHorizons.Builder.Props // Just swap all the children to a new game object var newDetailGO = new GameObject(prop.name); + newDetailGO.SetActive(false); newDetailGO.transform.position = prop.transform.position; newDetailGO.transform.parent = prop.transform.parent; From e536ab2d230f05ccffcca35ef421a7507c3cd7e2 Mon Sep 17 00:00:00 2001 From: Nick Date: Sun, 26 Mar 2023 17:01:45 -0400 Subject: [PATCH 07/17] Make physics bodies support parenting --- NewHorizons/Components/AddPhysics.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/NewHorizons/Components/AddPhysics.cs b/NewHorizons/Components/AddPhysics.cs index 42f8342d..d4c0b2e0 100644 --- a/NewHorizons/Components/AddPhysics.cs +++ b/NewHorizons/Components/AddPhysics.cs @@ -33,6 +33,7 @@ public class AddPhysics : MonoBehaviour var bodyGo = new GameObject($"{name}_Body"); bodyGo.SetActive(false); + bodyGo.transform.parent = transform.parent; bodyGo.transform.position = transform.position; bodyGo.transform.rotation = transform.rotation; From 031ad5266ccc542845bfa4b6cc3251f704894abc Mon Sep 17 00:00:00 2001 From: Nick Date: Sun, 26 Mar 2023 22:39:29 -0400 Subject: [PATCH 08/17] Added AudioSourceInfo as a new prop, refactors signals --- .../Builder/Props/Audio/AudioSourceBuilder.cs | 21 +++++++ .../Props/Audio/GeneralAudioBuilder.cs | 44 +++++++++++++ .../Props/{ => Audio}/SignalBuilder.cs | 55 ++++------------ .../Builder/Props/BrambleNodeBuilder.cs | 2 + NewHorizons/Builder/Props/PropBuildManager.cs | 15 +++++ .../Builder/Volumes/AudioVolumeBuilder.cs | 6 +- NewHorizons/External/Configs/PlanetConfig.cs | 3 +- NewHorizons/External/Modules/PropModule.cs | 8 ++- .../Modules/Props/Audio/AudioSourceInfo.cs | 15 +++++ .../Modules/Props/Audio/BaseAudioInfo.cs | 29 +++++++++ .../Modules/Props/Audio/SignalInfo.cs | 61 ++++++++++++++++++ NewHorizons/External/Modules/SignalModule.cs | 63 +------------------ NewHorizons/Main.cs | 1 + NewHorizons/NewHorizonsApi.cs | 4 +- .../AchievementsPlus/AchievementInfo.cs | 2 +- .../PlayerPatches/PlayerDataPatches.cs | 2 +- .../SignalPatches/AudioSignalPatches.cs | 2 +- .../SignalPatches/SignalscopePatches.cs | 2 +- NewHorizons/Utility/NewHorizonExtensions.cs | 9 ++- NewHorizons/manifest.json | 2 +- 20 files changed, 231 insertions(+), 115 deletions(-) create mode 100644 NewHorizons/Builder/Props/Audio/AudioSourceBuilder.cs create mode 100644 NewHorizons/Builder/Props/Audio/GeneralAudioBuilder.cs rename NewHorizons/Builder/Props/{ => Audio}/SignalBuilder.cs (73%) create mode 100644 NewHorizons/External/Modules/Props/Audio/AudioSourceInfo.cs create mode 100644 NewHorizons/External/Modules/Props/Audio/BaseAudioInfo.cs create mode 100644 NewHorizons/External/Modules/Props/Audio/SignalInfo.cs diff --git a/NewHorizons/Builder/Props/Audio/AudioSourceBuilder.cs b/NewHorizons/Builder/Props/Audio/AudioSourceBuilder.cs new file mode 100644 index 00000000..da71a269 --- /dev/null +++ b/NewHorizons/Builder/Props/Audio/AudioSourceBuilder.cs @@ -0,0 +1,21 @@ +using NewHorizons.External.Modules.Props.Audio; +using NewHorizons.Utility; +using OWML.Common; +using UnityEngine; + +namespace NewHorizons.Builder.Props.Audio +{ + public static class AudioSourceBuilder + { + public static GameObject Make(GameObject planetGO, Sector sector, AudioSourceInfo info, IModBehaviour mod) + { + var owAudioSource = GeneralAudioBuilder.Make(planetGO, sector, info, mod); + + owAudioSource.SetTrack(info.track.ConvertToOW()); + + owAudioSource.gameObject.SetActive(true); + + return owAudioSource.gameObject; + } + } +} diff --git a/NewHorizons/Builder/Props/Audio/GeneralAudioBuilder.cs b/NewHorizons/Builder/Props/Audio/GeneralAudioBuilder.cs new file mode 100644 index 00000000..88eeb206 --- /dev/null +++ b/NewHorizons/Builder/Props/Audio/GeneralAudioBuilder.cs @@ -0,0 +1,44 @@ +using NewHorizons.External.Modules.Props.Audio; +using NewHorizons.Utility.Files; +using NewHorizons.Utility.OuterWilds; +using OWML.Common; +using UnityEngine; + +namespace NewHorizons.Builder.Props.Audio +{ + public static class GeneralAudioBuilder + { + public static AnimationCurve CustomCurve => new( + new Keyframe(0.0333f, 1f, -30.012f, -30.012f, 0.3333f, 0.3333f), + new Keyframe(0.0667f, 0.5f, -7.503f, -7.503f, 0.3333f, 0.3333f), + new Keyframe(0.1333f, 0.25f, -1.8758f, -1.8758f, 0.3333f, 0.3333f), + new Keyframe(0.2667f, 0.125f, -0.4689f, -0.4689f, 0.3333f, 0.3333f), + new Keyframe(0.5333f, 0.0625f, -0.1172f, -0.1172f, 0.3333f, 0.3333f), + new Keyframe(1f, 0f, -0.0333f, -0.0333f, 0.3333f, 0.3333f) + ); + + public static OWAudioSource Make(GameObject planetGO, Sector sector, BaseAudioInfo info, IModBehaviour mod) + { + var signalGO = GeneralPropBuilder.MakeNew($"{(string.IsNullOrEmpty(info.rename) ? "AudioSource" : info.rename)}", planetGO, sector, info); + signalGO.layer = Layer.AdvancedEffectVolume; + + var source = signalGO.AddComponent(); + var owAudioSource = signalGO.AddComponent(); + owAudioSource._audioSource = source; + + source.loop = true; + source.minDistance = info.minDistance; + source.maxDistance = info.maxDistance; + source.velocityUpdateMode = AudioVelocityUpdateMode.Fixed; + source.rolloffMode = AudioRolloffMode.Custom; + source.spatialBlend = 1f; + source.volume = info.volume; + source.dopplerLevel = 0; + + source.SetCustomCurve(AudioSourceCurveType.CustomRolloff, CustomCurve); + AudioUtilities.SetAudioClip(owAudioSource, info.audio, mod); + + return owAudioSource; + } + } +} diff --git a/NewHorizons/Builder/Props/SignalBuilder.cs b/NewHorizons/Builder/Props/Audio/SignalBuilder.cs similarity index 73% rename from NewHorizons/Builder/Props/SignalBuilder.cs rename to NewHorizons/Builder/Props/Audio/SignalBuilder.cs index 4e220d3f..2c366fd0 100644 --- a/NewHorizons/Builder/Props/SignalBuilder.cs +++ b/NewHorizons/Builder/Props/Audio/SignalBuilder.cs @@ -7,14 +7,12 @@ using OWML.Common; using OWML.Utils; using System.Collections.Generic; using UnityEngine; +using NewHorizons.External.Modules.Props.Audio; - -namespace NewHorizons.Builder.Props +namespace NewHorizons.Builder.Props.Audio { public static class SignalBuilder { - private static AnimationCurve _customCurve = null; - private static Dictionary _customSignalNames; private static Dictionary _customFrequencyNames; @@ -56,7 +54,7 @@ namespace NewHorizons.Builder.Props public static SignalFrequency AddFrequency(string str) { if (_customFrequencyNames == null) Init(); - + var freq = CollectionUtilities.KeyByValue(_customFrequencyNames, str); if (freq != default) return freq; @@ -74,7 +72,7 @@ namespace NewHorizons.Builder.Props NumberOfFrequencies = EnumUtils.GetValues().Length; // This stuff happens after the signalscope is Awake so we have to change the number of frequencies now - GameObject.FindObjectOfType()._strongestSignals = new AudioSignal[NumberOfFrequencies + 1]; + Object.FindObjectOfType()._strongestSignals = new AudioSignal[NumberOfFrequencies + 1]; return freq; } @@ -90,7 +88,7 @@ namespace NewHorizons.Builder.Props public static SignalName AddSignalName(string str) { if (_customSignalNames == null) Init(); - + var name = CollectionUtilities.KeyByValue(_customSignalNames, str); if (name != default) return name; @@ -110,14 +108,10 @@ namespace NewHorizons.Builder.Props return name; } - public static GameObject Make(GameObject planetGO, Sector sector, SignalModule.SignalInfo info, IModBehaviour mod) + public static GameObject Make(GameObject planetGO, Sector sector, SignalInfo info, IModBehaviour mod) { - var signalGO = GeneralPropBuilder.MakeNew($"Signal_{info.name}", planetGO, sector, info); - signalGO.layer = Layer.AdvancedEffectVolume; - - var source = signalGO.AddComponent(); - var owAudioSource = signalGO.AddComponent(); - owAudioSource._audioSource = source; + var owAudioSource = GeneralAudioBuilder.Make(planetGO, sector, info, mod); + var signalGO = owAudioSource.gameObject; var audioSignal = signalGO.AddComponent(); audioSignal._owAudioSource = owAudioSource; @@ -137,36 +131,11 @@ namespace NewHorizons.Builder.Props audioSignal._identificationDistance = info.identificationRadius; audioSignal._canBePickedUpByScope = true; audioSignal._outerFogWarpVolume = planetGO.GetComponentInChildren(); // shouldn't break non-bramble signals - - source.loop = true; - source.minDistance = 0; - source.maxDistance = 30; - source.velocityUpdateMode = AudioVelocityUpdateMode.Fixed; - source.rolloffMode = AudioRolloffMode.Custom; - if (_customCurve == null) - { - _customCurve = new AnimationCurve( - new Keyframe(0.0333f, 1f, -30.012f, -30.012f, 0.3333f, 0.3333f), - new Keyframe(0.0667f, 0.5f, -7.503f, -7.503f, 0.3333f, 0.3333f), - new Keyframe(0.1333f, 0.25f, -1.8758f, -1.8758f, 0.3333f, 0.3333f), - new Keyframe(0.2667f, 0.125f, -0.4689f, -0.4689f, 0.3333f, 0.3333f), - new Keyframe(0.5333f, 0.0625f, -0.1172f, -0.1172f, 0.3333f, 0.3333f), - new Keyframe(1f, 0f, -0.0333f, -0.0333f, 0.3333f, 0.3333f)); - } - - source.SetCustomCurve(AudioSourceCurveType.CustomRolloff, _customCurve); // If it can be heard regularly then we play it immediately - source.playOnAwake = !info.onlyAudibleToScope; - source.spatialBlend = 1f; - source.volume = 0.5f; - source.dopplerLevel = 0; - - owAudioSource.SetTrack(OWAudioMixer.TrackName.Signal); - AudioUtilities.SetAudioClip(owAudioSource, info.audio, mod); + owAudioSource.playOnAwake = !info.onlyAudibleToScope; // Frequency detection trigger volume - var sphereShape = signalGO.AddComponent(); var owTriggerVolume = signalGO.AddComponent(); var audioSignalDetectionTrigger = signalGO.AddComponent(); @@ -175,6 +144,8 @@ namespace NewHorizons.Builder.Props audioSignalDetectionTrigger._signal = audioSignal; audioSignalDetectionTrigger._trigger = owTriggerVolume; + owAudioSource.SetTrack(OWAudioMixer.TrackName.Signal); + signalGO.SetActive(true); // Track certain special signal things @@ -186,12 +157,12 @@ namespace NewHorizons.Builder.Props private static SignalFrequency StringToFrequency(string str) { - return EnumUtils.TryParse(str, out SignalFrequency frequency) ? frequency : AddFrequency(str); + return EnumUtils.TryParse(str, out SignalFrequency frequency) ? frequency : AddFrequency(str); } public static SignalName StringToSignalName(string str) { - return EnumUtils.TryParse(str, out SignalName name) ? name : AddSignalName(str); + return EnumUtils.TryParse(str, out SignalName name) ? name : AddSignalName(str); } } } diff --git a/NewHorizons/Builder/Props/BrambleNodeBuilder.cs b/NewHorizons/Builder/Props/BrambleNodeBuilder.cs index 4962cc46..fc958b6c 100644 --- a/NewHorizons/Builder/Props/BrambleNodeBuilder.cs +++ b/NewHorizons/Builder/Props/BrambleNodeBuilder.cs @@ -1,5 +1,7 @@ using NewHorizons.Builder.Body; +using NewHorizons.Builder.Props.Audio; using NewHorizons.External.Configs; +using NewHorizons.External.Modules.Props.Audio; using NewHorizons.Handlers; using NewHorizons.Utility; using NewHorizons.Utility.OuterWilds; diff --git a/NewHorizons/Builder/Props/PropBuildManager.cs b/NewHorizons/Builder/Props/PropBuildManager.cs index b0b6c76d..ddd96c13 100644 --- a/NewHorizons/Builder/Props/PropBuildManager.cs +++ b/NewHorizons/Builder/Props/PropBuildManager.cs @@ -1,4 +1,5 @@ using NewHorizons.Builder.Body; +using NewHorizons.Builder.Props.Audio; using NewHorizons.Builder.Props.TranslatorText; using NewHorizons.Builder.ShipLog; using NewHorizons.External; @@ -269,6 +270,20 @@ namespace NewHorizons.Builder.Props } } } + if (config.Props.audioSources != null) + { + foreach (var audioSource in config.Props.audioSources) + { + try + { + AudioSourceBuilder.Make(go, sector, audioSource, mod); + } + catch (Exception ex) + { + NHLogger.LogError($"Couldn't make audio source [{audioSource.audio}] for [{go.name}]:\n{ex}"); + } + } + } } } } diff --git a/NewHorizons/Builder/Volumes/AudioVolumeBuilder.cs b/NewHorizons/Builder/Volumes/AudioVolumeBuilder.cs index 59a7b10c..6b961a79 100644 --- a/NewHorizons/Builder/Volumes/AudioVolumeBuilder.cs +++ b/NewHorizons/Builder/Volumes/AudioVolumeBuilder.cs @@ -1,9 +1,9 @@ using NewHorizons.Builder.Props; using NewHorizons.External.Modules.Volumes.VolumeInfos; +using NewHorizons.Utility; using NewHorizons.Utility.Files; using NewHorizons.Utility.OuterWilds; using OWML.Common; -using OWML.Utils; using UnityEngine; namespace NewHorizons.Builder.Volumes @@ -21,8 +21,8 @@ namespace NewHorizons.Builder.Volumes owAudioSource._audioSource = audioSource; owAudioSource.loop = info.loop; owAudioSource.SetMaxVolume(info.volume); - owAudioSource.SetClipSelectionType(EnumUtils.Parse(info.clipSelection.ToString())); - owAudioSource.SetTrack(EnumUtils.Parse(info.track.ToString())); + owAudioSource.SetClipSelectionType(info.clipSelection.ConvertToOW()); + owAudioSource.SetTrack(info.track.ConvertToOW()); AudioUtilities.SetAudioClip(owAudioSource, info.audio, mod); var audioVolume = go.AddComponent(); diff --git a/NewHorizons/External/Configs/PlanetConfig.cs b/NewHorizons/External/Configs/PlanetConfig.cs index c934a721..b44fcac8 100644 --- a/NewHorizons/External/Configs/PlanetConfig.cs +++ b/NewHorizons/External/Configs/PlanetConfig.cs @@ -1,5 +1,6 @@ using NewHorizons.External.Modules; using NewHorizons.External.Modules.Props; +using NewHorizons.External.Modules.Props.Audio; using NewHorizons.External.Modules.Props.Dialogue; using NewHorizons.External.Modules.Props.Quantum; using NewHorizons.External.Modules.VariableSize; @@ -408,7 +409,7 @@ namespace NewHorizons.External.Configs if (Signal?.signals != null) { if (Props == null) Props = new PropModule(); - if (Props.signals == null) Props.signals = new SignalModule.SignalInfo[0]; + if (Props.signals == null) Props.signals = new SignalInfo[0]; Props.signals = Props.signals.Concat(Signal.signals).ToArray(); } diff --git a/NewHorizons/External/Modules/PropModule.cs b/NewHorizons/External/Modules/PropModule.cs index dd6860c6..e6bc7d5e 100644 --- a/NewHorizons/External/Modules/PropModule.cs +++ b/NewHorizons/External/Modules/PropModule.cs @@ -1,4 +1,5 @@ using NewHorizons.External.Modules.Props; +using NewHorizons.External.Modules.Props.Audio; using NewHorizons.External.Modules.Props.Dialogue; using NewHorizons.External.Modules.Props.EchoesOfTheEye; using NewHorizons.External.Modules.Props.Quantum; @@ -89,7 +90,7 @@ namespace NewHorizons.External.Modules /// /// Add signalscope signals to this planet /// - public SignalModule.SignalInfo[] signals; + public SignalInfo[] signals; /// /// Add projection pools/platforms, whiteboards, and stones to this planet @@ -106,6 +107,11 @@ namespace NewHorizons.External.Modules /// public NomaiWarpTransmitterInfo[] warpTransmitters; + /// + /// Add audio point sources to this planet. For audio across an entire area, look for AudioVolumes under the Volumes module. + /// + public AudioSourceInfo[] audioSources; + [Obsolete("reveal is deprecated. Use Volumes->revealVolumes instead.")] public RevealVolumeInfo[] reveal; [Obsolete("audioVolumes is deprecated. Use Volumes->audioVolumes instead.")] public AudioVolumeInfo[] audioVolumes; diff --git a/NewHorizons/External/Modules/Props/Audio/AudioSourceInfo.cs b/NewHorizons/External/Modules/Props/Audio/AudioSourceInfo.cs new file mode 100644 index 00000000..d2579780 --- /dev/null +++ b/NewHorizons/External/Modules/Props/Audio/AudioSourceInfo.cs @@ -0,0 +1,15 @@ +using NewHorizons.External.SerializableEnums; +using Newtonsoft.Json; +using System.ComponentModel; + +namespace NewHorizons.External.Modules.Props.Audio +{ + [JsonObject] + public class AudioSourceInfo : BaseAudioInfo + { + /// + /// The audio track of this audio source + /// + [DefaultValue("environment")] public NHAudioMixerTrackName track = NHAudioMixerTrackName.Environment; + } +} diff --git a/NewHorizons/External/Modules/Props/Audio/BaseAudioInfo.cs b/NewHorizons/External/Modules/Props/Audio/BaseAudioInfo.cs new file mode 100644 index 00000000..5f4f615c --- /dev/null +++ b/NewHorizons/External/Modules/Props/Audio/BaseAudioInfo.cs @@ -0,0 +1,29 @@ +using Newtonsoft.Json; +using System.ComponentModel; + +namespace NewHorizons.External.Modules.Props.Audio +{ + [JsonObject] + public abstract class BaseAudioInfo : GeneralPointPropInfo + { + /// + /// The audio to use. Can be a path to a .wav/.ogg/.mp3 file, or taken from the AudioClip list. + /// + public string audio; + + /// + /// At this distance the sound is at its loudest. + /// + public float minDistance; + + /// + /// The sound will drop off by this distance (Note: for signals, this only effects when it is heard aloud and not via the signalscope). + /// + [DefaultValue(5f)] public float maxDistance = 30f; + + /// + /// How loud the sound will play + /// + [DefaultValue(0.5f)] public float volume = 0.5f; + } +} diff --git a/NewHorizons/External/Modules/Props/Audio/SignalInfo.cs b/NewHorizons/External/Modules/Props/Audio/SignalInfo.cs new file mode 100644 index 00000000..c41740c7 --- /dev/null +++ b/NewHorizons/External/Modules/Props/Audio/SignalInfo.cs @@ -0,0 +1,61 @@ +using Newtonsoft.Json; +using System; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; + +namespace NewHorizons.External.Modules.Props.Audio +{ + [JsonObject] + public class SignalInfo : BaseAudioInfo + { + [Obsolete("audioClip is deprecated, please use audio instead")] + public string audioClip; + + [Obsolete("audioFilePath is deprecated, please use audio instead")] + public string audioFilePath; + + /// + /// How close the player must get to the signal to detect it. This is when you get the "Unknown Signal Detected" + /// notification. + /// + [Range(0f, double.MaxValue)] public float detectionRadius; + + /// + /// The frequency ID of the signal. The built-in game values are `Default`, `Traveler`, `Quantum`, `EscapePod`, + /// `Statue`, `WarpCore`, `HideAndSeek`, and `Radio`. You can also put a custom value. + /// + public string frequency; + + /// + /// How close the player must get to the signal to identify it. This is when you learn its name. + /// + [DefaultValue(10f)] + [Range(0f, double.MaxValue)] + public float identificationRadius = 10f; + + /// + /// Only set to `true` if you are putting this signal inside a cloaking field. + /// + public bool insideCloak; + + /// + /// The unique ID of the signal. + /// + public string name; + + /// + /// `false` if the player can hear the signal without equipping the signal-scope. + /// + [DefaultValue(true)] public bool onlyAudibleToScope = true; + + /// + /// A ship log fact to reveal when the signal is identified. + /// + [DefaultValue("")] public string reveals = ""; + + /// + /// Radius of the sphere giving off the signal. + /// + [DefaultValue(1f)] public float sourceRadius = 1f; + } +} diff --git a/NewHorizons/External/Modules/SignalModule.cs b/NewHorizons/External/Modules/SignalModule.cs index ee54f9ad..855c3f96 100644 --- a/NewHorizons/External/Modules/SignalModule.cs +++ b/NewHorizons/External/Modules/SignalModule.cs @@ -1,6 +1,7 @@ using System; using System.ComponentModel; using System.ComponentModel.DataAnnotations; +using NewHorizons.External.Modules.Props.Audio; using Newtonsoft.Json; namespace NewHorizons.External.Modules @@ -8,67 +9,7 @@ namespace NewHorizons.External.Modules [JsonObject] public class SignalModule { - /// - /// List of signals to add (Why did xen do it like this) - /// + [Obsolete("signals is deprecated, please use Props->signals instead")] public SignalInfo[] signals; - - [JsonObject] - public class SignalInfo : GeneralPointPropInfo - { - [Obsolete("audioClip is deprecated, please use audio instead")] - public string audioClip; - - [Obsolete("audioFilePath is deprecated, please use audio instead")] - public string audioFilePath; - - /// - /// The audio to use. Can be a path to a .wav/.ogg/.mp3 file, or taken from the AudioClip list. - /// - public string audio; - - /// - /// How close the player must get to the signal to detect it. This is when you get the "Unknown Signal Detected" - /// notification. - /// - [Range(0f, double.MaxValue)] public float detectionRadius; - - /// - /// The frequency ID of the signal. The built-in game values are `Default`, `Traveler`, `Quantum`, `EscapePod`, - /// `Statue`, `WarpCore`, `HideAndSeek`, and `Radio`. You can also put a custom value. - /// - public string frequency; - - /// - /// How close the player must get to the signal to identify it. This is when you learn its name. - /// - [DefaultValue(10f)] [Range(0f, double.MaxValue)] - public float identificationRadius = 10f; - - /// - /// Only set to `true` if you are putting this signal inside a cloaking field. - /// - public bool insideCloak; - - /// - /// The unique ID of the signal. - /// - public string name; - - /// - /// `false` if the player can hear the signal without equipping the signal-scope. - /// - [DefaultValue(true)] public bool onlyAudibleToScope = true; - - /// - /// A ship log fact to reveal when the signal is identified. - /// - [DefaultValue("")] public string reveals = ""; - - /// - /// Radius of the sphere giving off the signal. - /// - [DefaultValue(1f)] public float sourceRadius = 1f; - } } } \ No newline at end of file diff --git a/NewHorizons/Main.cs b/NewHorizons/Main.cs index 4412aae3..7d743a0d 100644 --- a/NewHorizons/Main.cs +++ b/NewHorizons/Main.cs @@ -32,6 +32,7 @@ using UnityEngine.SceneManagement; using NewHorizons.Utility.DebugTools; using NewHorizons.Utility.DebugTools.Menu; +using NewHorizons.Builder.Props.Audio; namespace NewHorizons { diff --git a/NewHorizons/NewHorizonsApi.cs b/NewHorizons/NewHorizonsApi.cs index 5e627fcb..b34a741b 100644 --- a/NewHorizons/NewHorizonsApi.cs +++ b/NewHorizons/NewHorizonsApi.cs @@ -1,7 +1,9 @@ using NewHorizons.Builder.Props; +using NewHorizons.Builder.Props.Audio; using NewHorizons.External; using NewHorizons.External.Modules; using NewHorizons.External.Modules.Props; +using NewHorizons.External.Modules.Props.Audio; using NewHorizons.External.Modules.Props.Dialogue; using NewHorizons.Utility; using NewHorizons.Utility.OWML; @@ -174,7 +176,7 @@ namespace NewHorizons float sourceRadius = 1f, float detectionRadius = 20f, float identificationRadius = 10f, bool insideCloak = false, bool onlyAudibleToScope = true, string reveals = "") { - var info = new SignalModule.SignalInfo() + var info = new SignalInfo() { audio = audio, detectionRadius = detectionRadius, diff --git a/NewHorizons/OtherMods/AchievementsPlus/AchievementInfo.cs b/NewHorizons/OtherMods/AchievementsPlus/AchievementInfo.cs index 79629c77..2c0c0cbf 100644 --- a/NewHorizons/OtherMods/AchievementsPlus/AchievementInfo.cs +++ b/NewHorizons/OtherMods/AchievementsPlus/AchievementInfo.cs @@ -1,4 +1,4 @@ -using NewHorizons.Builder.Props; +using NewHorizons.Builder.Props.Audio; using NewHorizons.Handlers; using Newtonsoft.Json; using System.Linq; diff --git a/NewHorizons/Patches/PlayerPatches/PlayerDataPatches.cs b/NewHorizons/Patches/PlayerPatches/PlayerDataPatches.cs index 3811cfee..8b4ad81e 100644 --- a/NewHorizons/Patches/PlayerPatches/PlayerDataPatches.cs +++ b/NewHorizons/Patches/PlayerPatches/PlayerDataPatches.cs @@ -1,5 +1,5 @@ using HarmonyLib; -using NewHorizons.Builder.Props; +using NewHorizons.Builder.Props.Audio; using NewHorizons.External; using NewHorizons.Handlers; using NewHorizons.OtherMods.AchievementsPlus; diff --git a/NewHorizons/Patches/SignalPatches/AudioSignalPatches.cs b/NewHorizons/Patches/SignalPatches/AudioSignalPatches.cs index 32318a5c..068b1e1f 100644 --- a/NewHorizons/Patches/SignalPatches/AudioSignalPatches.cs +++ b/NewHorizons/Patches/SignalPatches/AudioSignalPatches.cs @@ -1,5 +1,5 @@ using HarmonyLib; -using NewHorizons.Builder.Props; +using NewHorizons.Builder.Props.Audio; using NewHorizons.External; using NewHorizons.Handlers; using System; diff --git a/NewHorizons/Patches/SignalPatches/SignalscopePatches.cs b/NewHorizons/Patches/SignalPatches/SignalscopePatches.cs index 6b401d45..a348152e 100644 --- a/NewHorizons/Patches/SignalPatches/SignalscopePatches.cs +++ b/NewHorizons/Patches/SignalPatches/SignalscopePatches.cs @@ -1,5 +1,5 @@ using HarmonyLib; -using NewHorizons.Builder.Props; +using NewHorizons.Builder.Props.Audio; namespace NewHorizons.Patches.SignalPatches { diff --git a/NewHorizons/Utility/NewHorizonExtensions.cs b/NewHorizons/Utility/NewHorizonExtensions.cs index 9321e804..91c492fa 100644 --- a/NewHorizons/Utility/NewHorizonExtensions.cs +++ b/NewHorizons/Utility/NewHorizonExtensions.cs @@ -254,6 +254,13 @@ namespace NewHorizons.Utility return xCorrect && yCorrect && zCorrect; } - public static FluidVolume.Type ConvertToOW(this NHFluidType fluidType, FluidVolume.Type @default = FluidVolume.Type.NONE) => EnumUtils.Parse(fluidType.ToString().ToUpper(), @default); + public static FluidVolume.Type ConvertToOW(this NHFluidType fluidType, FluidVolume.Type @default = FluidVolume.Type.NONE) + => EnumUtils.Parse(fluidType.ToString().ToUpper(), @default); + + public static OWAudioMixer.TrackName ConvertToOW(this NHAudioMixerTrackName trackName, OWAudioMixer.TrackName @default = OWAudioMixer.TrackName.Environment) + => EnumUtils.Parse(trackName.ToString().ToUpper(), @default); + + public static OWAudioSource.ClipSelectionOnPlay ConvertToOW(this NHClipSelectionType clipSelection, OWAudioSource.ClipSelectionOnPlay @default = OWAudioSource.ClipSelectionOnPlay.RANDOM) + => EnumUtils.Parse(clipSelection.ToString().ToUpper(), @default); } } diff --git a/NewHorizons/manifest.json b/NewHorizons/manifest.json index 0d89590d..cfffbfb1 100644 --- a/NewHorizons/manifest.json +++ b/NewHorizons/manifest.json @@ -4,7 +4,7 @@ "author": "xen, Bwc9876, clay, MegaPiggy, John, Trifid, Hawkbar, Book", "name": "New Horizons", "uniqueName": "xen.NewHorizons", - "version": "1.10.1", + "version": "1.10.2", "owmlVersion": "2.9.0", "dependencies": [ "JohnCorby.VanillaFix", "_nebula.MenuFramework", "xen.CommonCameraUtility", "dgarro.CustomShipLogModes" ], "conflicts": [ "Raicuparta.QuantumSpaceBuddies", "PacificEngine.OW_CommonResources" ], From 42944479f5019c9102067ad64b67dab7895a3406 Mon Sep 17 00:00:00 2001 From: Ben C Date: Mon, 27 Mar 2023 02:46:57 +0000 Subject: [PATCH 09/17] Updated Schemas --- NewHorizons/Schemas/body_schema.json | 160 +++++++++++++++++++-------- 1 file changed, 116 insertions(+), 44 deletions(-) diff --git a/NewHorizons/Schemas/body_schema.json b/NewHorizons/Schemas/body_schema.json index 1be5476f..3ed03cf8 100644 --- a/NewHorizons/Schemas/body_schema.json +++ b/NewHorizons/Schemas/body_schema.json @@ -1102,6 +1102,13 @@ "items": { "$ref": "#/definitions/NomaiWarpTransmitterInfo" } + }, + "audioSources": { + "type": "array", + "description": "Add audio point sources to this planet. For audio across an entire area, look for AudioVolumes under the Volumes module.", + "items": { + "$ref": "#/definitions/AudioSourceInfo" + } } } }, @@ -2161,6 +2168,27 @@ "type": "object", "additionalProperties": false, "properties": { + "audio": { + "type": "string", + "description": "The audio to use. Can be a path to a .wav/.ogg/.mp3 file, or taken from the AudioClip list." + }, + "minDistance": { + "type": "number", + "description": "At this distance the sound is at its loudest.", + "format": "float" + }, + "maxDistance": { + "type": "number", + "description": "The sound will drop off by this distance (Note: for signals, this only effects when it is heard aloud and not via the signalscope).", + "format": "float", + "default": 5.0 + }, + "volume": { + "type": "number", + "description": "How loud the sound will play", + "format": "float", + "default": 0.5 + }, "position": { "description": "Position of the object", "$ref": "#/definitions/MVector3" @@ -2177,10 +2205,6 @@ "type": "string", "description": "An optional rename of this object" }, - "audio": { - "type": "string", - "description": "The audio to use. Can be a path to a .wav/.ogg/.mp3 file, or taken from the AudioClip list." - }, "detectionRadius": { "type": "number", "description": "How close the player must get to the signal to detect it. This is when you get the \"Unknown Signal Detected\"\nnotification.", @@ -2538,6 +2562,94 @@ } } }, + "AudioSourceInfo": { + "type": "object", + "additionalProperties": false, + "properties": { + "audio": { + "type": "string", + "description": "The audio to use. Can be a path to a .wav/.ogg/.mp3 file, or taken from the AudioClip list." + }, + "minDistance": { + "type": "number", + "description": "At this distance the sound is at its loudest.", + "format": "float" + }, + "maxDistance": { + "type": "number", + "description": "The sound will drop off by this distance (Note: for signals, this only effects when it is heard aloud and not via the signalscope).", + "format": "float", + "default": 5.0 + }, + "volume": { + "type": "number", + "description": "How loud the sound will play", + "format": "float", + "default": 0.5 + }, + "position": { + "description": "Position of the object", + "$ref": "#/definitions/MVector3" + }, + "parentPath": { + "type": "string", + "description": "The relative path from the planet to the parent of this object. Optional (will default to the root sector)." + }, + "isRelativeToParent": { + "type": "boolean", + "description": "Whether the positional and rotational coordinates are relative to parent instead of the root planet object." + }, + "rename": { + "type": "string", + "description": "An optional rename of this object" + }, + "track": { + "description": "The audio track of this audio source", + "default": "environment", + "$ref": "#/definitions/NHAudioMixerTrackName" + } + } + }, + "NHAudioMixerTrackName": { + "type": "string", + "description": "", + "x-enumNames": [ + "Undefined", + "Menu", + "Music", + "Environment", + "Environment_Unfiltered", + "EndTimes_SFX", + "Signal", + "Death", + "Player", + "Player_External", + "Ship", + "Map", + "EndTimes_Music", + "MuffleWhileRafting", + "MuffleIndoors", + "SlideReelMusic" + ], + "enum": [ + "undefined", + "menu", + "music", + "environment", + "environmentUnfiltered", + "endTimesSfx", + "signal", + "death", + "player", + "playerExternal", + "ship", + "map", + "endTimesMusic", + "muffleWhileRafting", + "muffleIndoors", + "slideReelMusic" + ] + }, "ReferenceFrameModule": { "type": "object", "additionalProperties": false, @@ -3277,46 +3389,6 @@ "manual" ] }, - "NHAudioMixerTrackName": { - "type": "string", - "description": "", - "x-enumNames": [ - "Undefined", - "Menu", - "Music", - "Environment", - "Environment_Unfiltered", - "EndTimes_SFX", - "Signal", - "Death", - "Player", - "Player_External", - "Ship", - "Map", - "EndTimes_Music", - "MuffleWhileRafting", - "MuffleIndoors", - "SlideReelMusic" - ], - "enum": [ - "undefined", - "menu", - "music", - "environment", - "environmentUnfiltered", - "endTimesSfx", - "signal", - "death", - "player", - "playerExternal", - "ship", - "map", - "endTimesMusic", - "muffleWhileRafting", - "muffleIndoors", - "slideReelMusic" - ] - }, "DestructionVolumeInfo": { "type": "object", "additionalProperties": false, From feeab3c7a91974bf10595912ecfd2aae2670be0d Mon Sep 17 00:00:00 2001 From: Nick Date: Mon, 27 Mar 2023 00:00:54 -0400 Subject: [PATCH 10/17] Fix bug giving Archaeologist achievement early --- NewHorizons/Patches/ShipLogPatches/ShipLogManagerPatches.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/NewHorizons/Patches/ShipLogPatches/ShipLogManagerPatches.cs b/NewHorizons/Patches/ShipLogPatches/ShipLogManagerPatches.cs index 831bb888..536bf9c8 100644 --- a/NewHorizons/Patches/ShipLogPatches/ShipLogManagerPatches.cs +++ b/NewHorizons/Patches/ShipLogPatches/ShipLogManagerPatches.cs @@ -91,8 +91,12 @@ namespace NewHorizons.Patches.ShipLogPatches [HarmonyPatch(nameof(ShipLogManager.CheckForCompletionAchievement))] public static bool ShipLogManager_CheckForCompletionAchievement(ShipLogManager __instance) { + // In other star systems they won't have the base game ship log facts, so they'll instantly get the achievement. + if (Main.Instance.CurrentStarSystem != "SolarSystem") return false; + foreach (KeyValuePair keyValuePair in __instance._factDict) { + // Don't want to include modded facts, otherwise this is the same as the vanilla method if (!ShipLogHandler.IsModdedFact(keyValuePair.Key) && !keyValuePair.Value.IsRumor() && !keyValuePair.Value.IsRevealed() && !keyValuePair.Key.Equals("TH_VILLAGE_X3") && !keyValuePair.Key.Equals("GD_GABBRO_ISLAND_X1") && __instance.GetEntry(keyValuePair.Value.GetEntryID()).GetCuriosityName() != CuriosityName.InvisiblePlanet) { return false; From ea7aae4abe6f53b31c05f72897a37132fe8bb5a8 Mon Sep 17 00:00:00 2001 From: Ben C Date: Fri, 31 Mar 2023 20:27:32 -0400 Subject: [PATCH 11/17] Update Menagerie For Docs --- docs/Pipfile.lock | 241 ++++++++++++++++++++++------------------------ 1 file changed, 114 insertions(+), 127 deletions(-) diff --git a/docs/Pipfile.lock b/docs/Pipfile.lock index 57e6d3dd..9ab2ac19 100644 --- a/docs/Pipfile.lock +++ b/docs/Pipfile.lock @@ -27,11 +27,10 @@ }, "beautifulsoup4": { "hashes": [ - "sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30", - "sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693" + "sha256:2130a5ad7f513200fae61a17abb5e338ca980fa28c439c0571014bc0217e9591", ], "markers": "python_full_version >= '3.6.0'", - "version": "==4.11.1" + "version": "==4.12.0" }, "certifi": { "hashes": [ @@ -43,97 +42,84 @@ }, "charset-normalizer": { "hashes": [ - "sha256:00d3ffdaafe92a5dc603cb9bd5111aaa36dfa187c8285c543be562e61b755f6b", - "sha256:024e606be3ed92216e2b6952ed859d86b4cfa52cd5bc5f050e7dc28f9b43ec42", - "sha256:0298eafff88c99982a4cf66ba2efa1128e4ddaca0b05eec4c456bbc7db691d8d", - "sha256:02a51034802cbf38db3f89c66fb5d2ec57e6fe7ef2f4a44d070a593c3688667b", - "sha256:083c8d17153ecb403e5e1eb76a7ef4babfc2c48d58899c98fcaa04833e7a2f9a", - "sha256:0a11e971ed097d24c534c037d298ad32c6ce81a45736d31e0ff0ad37ab437d59", - "sha256:0bf2dae5291758b6f84cf923bfaa285632816007db0330002fa1de38bfcb7154", - "sha256:0c0a590235ccd933d9892c627dec5bc7511ce6ad6c1011fdf5b11363022746c1", - "sha256:0f438ae3532723fb6ead77e7c604be7c8374094ef4ee2c5e03a3a17f1fca256c", - "sha256:109487860ef6a328f3eec66f2bf78b0b72400280d8f8ea05f69c51644ba6521a", - "sha256:11b53acf2411c3b09e6af37e4b9005cba376c872503c8f28218c7243582df45d", - "sha256:12db3b2c533c23ab812c2b25934f60383361f8a376ae272665f8e48b88e8e1c6", - "sha256:14e76c0f23218b8f46c4d87018ca2e441535aed3632ca134b10239dfb6dadd6b", - "sha256:16a8663d6e281208d78806dbe14ee9903715361cf81f6d4309944e4d1e59ac5b", - "sha256:292d5e8ba896bbfd6334b096e34bffb56161c81408d6d036a7dfa6929cff8783", - "sha256:2c03cc56021a4bd59be889c2b9257dae13bf55041a3372d3295416f86b295fb5", - "sha256:2e396d70bc4ef5325b72b593a72c8979999aa52fb8bcf03f701c1b03e1166918", - "sha256:2edb64ee7bf1ed524a1da60cdcd2e1f6e2b4f66ef7c077680739f1641f62f555", - "sha256:31a9ddf4718d10ae04d9b18801bd776693487cbb57d74cc3458a7673f6f34639", - "sha256:356541bf4381fa35856dafa6a965916e54bed415ad8a24ee6de6e37deccf2786", - "sha256:358a7c4cb8ba9b46c453b1dd8d9e431452d5249072e4f56cfda3149f6ab1405e", - "sha256:37f8febc8ec50c14f3ec9637505f28e58d4f66752207ea177c1d67df25da5aed", - "sha256:39049da0ffb96c8cbb65cbf5c5f3ca3168990adf3551bd1dee10c48fce8ae820", - "sha256:39cf9ed17fe3b1bc81f33c9ceb6ce67683ee7526e65fde1447c772afc54a1bb8", - "sha256:3ae1de54a77dc0d6d5fcf623290af4266412a7c4be0b1ff7444394f03f5c54e3", - "sha256:3b590df687e3c5ee0deef9fc8c547d81986d9a1b56073d82de008744452d6541", - "sha256:3e45867f1f2ab0711d60c6c71746ac53537f1684baa699f4f668d4c6f6ce8e14", - "sha256:3fc1c4a2ffd64890aebdb3f97e1278b0cc72579a08ca4de8cd2c04799a3a22be", - "sha256:4457ea6774b5611f4bed5eaa5df55f70abde42364d498c5134b7ef4c6958e20e", - "sha256:44ba614de5361b3e5278e1241fda3dc1838deed864b50a10d7ce92983797fa76", - "sha256:4a8fcf28c05c1f6d7e177a9a46a1c52798bfe2ad80681d275b10dcf317deaf0b", - "sha256:4b0d02d7102dd0f997580b51edc4cebcf2ab6397a7edf89f1c73b586c614272c", - "sha256:502218f52498a36d6bf5ea77081844017bf7982cdbe521ad85e64cabee1b608b", - "sha256:503e65837c71b875ecdd733877d852adbc465bd82c768a067badd953bf1bc5a3", - "sha256:5995f0164fa7df59db4746112fec3f49c461dd6b31b841873443bdb077c13cfc", - "sha256:59e5686dd847347e55dffcc191a96622f016bc0ad89105e24c14e0d6305acbc6", - "sha256:601f36512f9e28f029d9481bdaf8e89e5148ac5d89cffd3b05cd533eeb423b59", - "sha256:608862a7bf6957f2333fc54ab4399e405baad0163dc9f8d99cb236816db169d4", - "sha256:62595ab75873d50d57323a91dd03e6966eb79c41fa834b7a1661ed043b2d404d", - "sha256:70990b9c51340e4044cfc394a81f614f3f90d41397104d226f21e66de668730d", - "sha256:71140351489970dfe5e60fc621ada3e0f41104a5eddaca47a7acb3c1b851d6d3", - "sha256:72966d1b297c741541ca8cf1223ff262a6febe52481af742036a0b296e35fa5a", - "sha256:74292fc76c905c0ef095fe11e188a32ebd03bc38f3f3e9bcb85e4e6db177b7ea", - "sha256:761e8904c07ad053d285670f36dd94e1b6ab7f16ce62b9805c475b7aa1cffde6", - "sha256:772b87914ff1152b92a197ef4ea40efe27a378606c39446ded52c8f80f79702e", - "sha256:79909e27e8e4fcc9db4addea88aa63f6423ebb171db091fb4373e3312cb6d603", - "sha256:7e189e2e1d3ed2f4aebabd2d5b0f931e883676e51c7624826e0a4e5fe8a0bf24", - "sha256:7eb33a30d75562222b64f569c642ff3dc6689e09adda43a082208397f016c39a", - "sha256:81d6741ab457d14fdedc215516665050f3822d3e56508921cc7239f8c8e66a58", - "sha256:8499ca8f4502af841f68135133d8258f7b32a53a1d594aa98cc52013fff55678", - "sha256:84c3990934bae40ea69a82034912ffe5a62c60bbf6ec5bc9691419641d7d5c9a", - "sha256:87701167f2a5c930b403e9756fab1d31d4d4da52856143b609e30a1ce7160f3c", - "sha256:88600c72ef7587fe1708fd242b385b6ed4b8904976d5da0893e31df8b3480cb6", - "sha256:8ac7b6a045b814cf0c47f3623d21ebd88b3e8cf216a14790b455ea7ff0135d18", - "sha256:8b8af03d2e37866d023ad0ddea594edefc31e827fee64f8de5611a1dbc373174", - "sha256:8c7fe7afa480e3e82eed58e0ca89f751cd14d767638e2550c77a92a9e749c317", - "sha256:8eade758719add78ec36dc13201483f8e9b5d940329285edcd5f70c0a9edbd7f", - "sha256:911d8a40b2bef5b8bbae2e36a0b103f142ac53557ab421dc16ac4aafee6f53dc", - "sha256:93ad6d87ac18e2a90b0fe89df7c65263b9a99a0eb98f0a3d2e079f12a0735837", - "sha256:95dea361dd73757c6f1c0a1480ac499952c16ac83f7f5f4f84f0658a01b8ef41", - "sha256:9ab77acb98eba3fd2a85cd160851816bfce6871d944d885febf012713f06659c", - "sha256:9cb3032517f1627cc012dbc80a8ec976ae76d93ea2b5feaa9d2a5b8882597579", - "sha256:9cf4e8ad252f7c38dd1f676b46514f92dc0ebeb0db5552f5f403509705e24753", - "sha256:9d9153257a3f70d5f69edf2325357251ed20f772b12e593f3b3377b5f78e7ef8", - "sha256:a152f5f33d64a6be73f1d30c9cc82dfc73cec6477ec268e7c6e4c7d23c2d2291", - "sha256:a16418ecf1329f71df119e8a65f3aa68004a3f9383821edcb20f0702934d8087", - "sha256:a60332922359f920193b1d4826953c507a877b523b2395ad7bc716ddd386d866", - "sha256:a8d0fc946c784ff7f7c3742310cc8a57c5c6dc31631269876a88b809dbeff3d3", - "sha256:ab5de034a886f616a5668aa5d098af2b5385ed70142090e2a31bcbd0af0fdb3d", - "sha256:c22d3fe05ce11d3671297dc8973267daa0f938b93ec716e12e0f6dee81591dc1", - "sha256:c2ac1b08635a8cd4e0cbeaf6f5e922085908d48eb05d44c5ae9eabab148512ca", - "sha256:c512accbd6ff0270939b9ac214b84fb5ada5f0409c44298361b2f5e13f9aed9e", - "sha256:c75ffc45f25324e68ab238cb4b5c0a38cd1c3d7f1fb1f72b5541de469e2247db", - "sha256:c95a03c79bbe30eec3ec2b7f076074f4281526724c8685a42872974ef4d36b72", - "sha256:cadaeaba78750d58d3cc6ac4d1fd867da6fc73c88156b7a3212a3cd4819d679d", - "sha256:cd6056167405314a4dc3c173943f11249fa0f1b204f8b51ed4bde1a9cd1834dc", - "sha256:db72b07027db150f468fbada4d85b3b2729a3db39178abf5c543b784c1254539", - "sha256:df2c707231459e8a4028eabcd3cfc827befd635b3ef72eada84ab13b52e1574d", - "sha256:e62164b50f84e20601c1ff8eb55620d2ad25fb81b59e3cd776a1902527a788af", - "sha256:e696f0dd336161fca9adbb846875d40752e6eba585843c768935ba5c9960722b", - "sha256:eaa379fcd227ca235d04152ca6704c7cb55564116f8bc52545ff357628e10602", - "sha256:ebea339af930f8ca5d7a699b921106c6e29c617fe9606fa7baa043c1cdae326f", - "sha256:f4c39b0e3eac288fedc2b43055cfc2ca7a60362d0e5e87a637beac5d801ef478", - "sha256:f5057856d21e7586765171eac8b9fc3f7d44ef39425f85dbcccb13b3ebea806c", - "sha256:f6f45710b4459401609ebebdbcfb34515da4fc2aa886f95107f556ac69a9147e", - "sha256:f97e83fa6c25693c7a35de154681fcc257c1c41b38beb0304b9c4d2d9e164479", - "sha256:f9d0c5c045a3ca9bedfc35dca8526798eb91a07aa7a2c0fee134c6c6f321cbd7", - "sha256:ff6f3db31555657f3163b15a6b7c6938d08df7adbfc9dd13d9d19edad678f1e8" + "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6", + "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1", + "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e", + "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373", + "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62", + "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230", + "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be", + "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c", + "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0", + "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448", + "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f", + "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649", + "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d", + "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0", + "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706", + "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a", + "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59", + "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23", + "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5", + "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb", + "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e", + "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e", + "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c", + "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28", + "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d", + "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41", + "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974", + "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce", + "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f", + "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1", + "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d", + "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8", + "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017", + "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31", + "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7", + "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8", + "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e", + "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14", + "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd", + "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d", + "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795", + "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b", + "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b", + "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b", + "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203", + "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f", + "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19", + "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1", + "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a", + "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac", + "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9", + "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0", + "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137", + "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f", + "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6", + "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5", + "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909", + "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f", + "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0", + "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324", + "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755", + "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb", + "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854", + "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c", + "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60", + "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84", + "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0", + "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b", + "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1", + "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531", + "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1", + "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11", + "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326", + "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df", + "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab" ], - "markers": "python_version >= '3.6'", - "version": "==3.0.1" + "markers": "python_full_version >= '3.7.0'", + "version": "==3.1.0" }, "click": { "hashes": [ @@ -153,11 +139,11 @@ }, "elementpath": { "hashes": [ - "sha256:6122419481a4c73101918714274b2cec907feecd04a44b623b4bae4292853328", - "sha256:cca18742dc0f354f79874c41a906e6ce4cc15230b7858d22a861e1ec5946940f" + "sha256:2b1b524223d70fd6dd63a36b9bc32e4919c96a272c2d1454094c4d85086bc6f8", + "sha256:dbd7eba3cf0b3b4934f627ba24851a3e0798ef2bc9104555a4cd831f2e6e8e14" ], "markers": "python_version >= '3.7'", - "version": "==3.0.2" + "version": "==4.1.0" }, "htmlmin": { "hashes": [ @@ -190,11 +176,11 @@ }, "json-schema-for-humans": { "hashes": [ - "sha256:1d4359e25717418e06cd673aec9c5cea2c89466d077ba118884dffa058fe05a6", - "sha256:6c8f470f645ae4d89d0aac7d4fcd1c123e00a0570f90fe2e5200058465c551c2" + "sha256:1e34f1ae053c0884a52bcfc415f8de10a9dc918554523912f53015d202549f37", + "sha256:62a72dd2edb064fb6f2cb6939670185b80a79317b1e7cdb2132634287b142493" ], "markers": "python_version >= '3.7' and python_version < '4.0'", - "version": "==0.44" + "version": "==0.44.4" }, "jsonschema": { "hashes": [ @@ -225,11 +211,11 @@ }, "markdown2": { "hashes": [ - "sha256:528f978beb3dbcf529a139b6c76f6ac6ecf8bb96c131beab751bb095b3873b58", - "sha256:f65b4dbe1e16591b14fd40bc659b8b58d285eab70c1da21f390294fcdec42bb0" + "sha256:7d49ca871d3e0e412c65d7d21fcbc13ae897f7876f3e5f14dd4db3b7fbf27f10", + "sha256:90475aca3d9c8e7df6d70c51de5bbbe9edf7fcf6a380bd1044d321500f5445da" ], "markers": "python_version >= '3.5' and python_version < '4'", - "version": "==2.4.6" + "version": "==2.4.8" }, "markupsafe": { "hashes": [ @@ -304,26 +290,27 @@ }, "menagerie-docs": { "hashes": [ - "sha256:214fb87bf94ce1b814c718ae98e319ef470fe3ea0b01f215ab43e46623289e92", - "sha256:b20d0f099edd3316f00e72ef754d885982a3f80c80c70ca8a01d43721388813b" + "sha256:ad6ff178b3edc493b7e031d932616e4aaef788c2e796494e729fb2fb96c334eb", + "sha256:bfd5b78c8a2931983a1941ee2e96204b93e5ff90f5bbc0e0178c763de42b844f" ], "index": "pypi", - "version": "==0.1.13" + "version": "==0.1.14" }, "more-itertools": { "hashes": [ - "sha256:250e83d7e81d0c87ca6bd942e6aeab8cc9daa6096d12c5308f3f92fa5e5c1f41", - "sha256:5a6257e40878ef0520b1803990e3e22303a41b5714006c32a3fd8304b26ea1ab" + "sha256:cabaa341ad0389ea83c17a94566a53ae4c9d07349861ecb14dc6d0345cf9ac5d", + "sha256:d2bc7f02446e86a68911e58ded76d6561eea00cddfb2a91e7019bbb586c799f3" ], "markers": "python_version >= '3.7'", - "version": "==9.0.0" + "version": "==9.1.0" }, "mypy-extensions": { "hashes": [ - "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", - "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" + "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", + "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782" ], - "version": "==0.4.3" + "markers": "python_version >= '3.5'", + "version": "==1.0.0" }, "ndicts": { "hashes": [ @@ -467,10 +454,10 @@ }, "pytz": { "hashes": [ - "sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c", - "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326" + "sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588", + "sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb" ], - "version": "==2021.3" + "version": "==2023.3" }, "pyyaml": { "hashes": [ @@ -584,19 +571,19 @@ }, "soupsieve": { "hashes": [ - "sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759", - "sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d" + "sha256:49e5368c2cda80ee7e84da9dbe3e110b70a4575f196efb74e51b94549d921955", + "sha256:e28dba9ca6c7c00173e34e4ba57448f0688bb681b7c5e8bf4971daafc093d69a" ], - "markers": "python_version >= '3.6'", - "version": "==2.3.2.post1" + "markers": "python_version >= '3.7'", + "version": "==2.4" }, "typing-extensions": { "hashes": [ - "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa", - "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e" + "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb", + "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4" ], "markers": "python_version >= '3.7'", - "version": "==4.4.0" + "version": "==4.5.0" }, "typing-inspect": { "hashes": [ @@ -607,19 +594,19 @@ }, "urllib3": { "hashes": [ - "sha256:076907bf8fd355cde77728471316625a4d2f7e713c125f51953bb5b3eecf4f72", - "sha256:75edcdc2f7d85b137124a6c3c9fc3933cdeaa12ecb9a6a959f22797a0feca7e1" + "sha256:8a388717b9476f934a21484e8c8e61875ab60644d29b9b39e11e4b9dc1c6b305", + "sha256:aa751d169e23c7479ce47a0cb0da579e3ede798f994f5816a74e4f4500dcea42" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", - "version": "==1.26.14" + "version": "==1.26.15" }, "xmlschema": { "hashes": [ - "sha256:5717a8a239637a9ad7d7563ce676dddf0a8989644c833f96bfc6d157c3cb3750", - "sha256:5ca34ff15dd3276cfb2e3e7b4c8dde4b7d4d27080f333a93b6c3f817e90abddf" + "sha256:0caa96668807b4b51c42a0fe2b6610752bc59f069615df3e34dcfffb962973fd", + "sha256:557f3632b54b6ff10576736bba62e43db84eb60f6465a83818576cd9ffcc1799" ], "markers": "python_version >= '3.7'", - "version": "==2.1.1" + "version": "==2.2.2" } } } From adc5ad01c4cc3bd86eb346fa99578301db0c51d4 Mon Sep 17 00:00:00 2001 From: Ben C Date: Fri, 31 Mar 2023 20:27:45 -0400 Subject: [PATCH 12/17] Update Pipfile.lock --- docs/Pipfile.lock | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Pipfile.lock b/docs/Pipfile.lock index 9ab2ac19..4bb7eed8 100644 --- a/docs/Pipfile.lock +++ b/docs/Pipfile.lock @@ -28,6 +28,7 @@ "beautifulsoup4": { "hashes": [ "sha256:2130a5ad7f513200fae61a17abb5e338ca980fa28c439c0571014bc0217e9591", + "sha256:c5fceeaec29d09c84970e47c65f2f0efe57872f7cff494c9691a26ec0ff13234" ], "markers": "python_full_version >= '3.6.0'", "version": "==4.12.0" From cb08f4710d184b778bb4d92e995ba264186744bb Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Mon, 3 Apr 2023 20:34:07 -0700 Subject: [PATCH 13/17] patch forget frequency --- NewHorizons/External/NewHorizonsData.cs | 10 ++++++++++ .../PlayerPatches/PlayerDataPatches.cs | 19 ++++++++++++++----- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/NewHorizons/External/NewHorizonsData.cs b/NewHorizons/External/NewHorizonsData.cs index 60fdcd01..b691b622 100644 --- a/NewHorizons/External/NewHorizonsData.cs +++ b/NewHorizons/External/NewHorizonsData.cs @@ -128,6 +128,16 @@ namespace NewHorizons.External } } + public static void ForgetFrequency(string frequency) + { + if (_activeProfile == null) return; + if (KnowsFrequency(frequency)) + { + _activeProfile.KnownFrequencies.Remove(frequency); + Save(); + } + } + public static bool KnowsMultipleFrequencies() { return _activeProfile != null && _activeProfile.KnownFrequencies.Count > 0; diff --git a/NewHorizons/Patches/PlayerPatches/PlayerDataPatches.cs b/NewHorizons/Patches/PlayerPatches/PlayerDataPatches.cs index 8b4ad81e..16056c7b 100644 --- a/NewHorizons/Patches/PlayerPatches/PlayerDataPatches.cs +++ b/NewHorizons/Patches/PlayerPatches/PlayerDataPatches.cs @@ -40,6 +40,19 @@ namespace NewHorizons.Patches.PlayerPatches return true; } + [HarmonyPrefix] + [HarmonyPatch(nameof(PlayerData.ForgetFrequency))] + public static bool PlayerData_ForgetFrequency(SignalFrequency frequency) + { + var freqString = SignalBuilder.GetCustomFrequencyName(frequency); + if (!string.IsNullOrEmpty(freqString)) + { + NewHorizonsData.ForgetFrequency(freqString); + return false; + } + return true; + } + [HarmonyPrefix] [HarmonyPatch(nameof(PlayerData.KnowsSignal))] public static bool PlayerData_KnowsSignal(SignalName signalName, ref bool __result) @@ -60,11 +73,7 @@ namespace NewHorizons.Patches.PlayerPatches var customSignalName = SignalBuilder.GetCustomSignalName(signalName); if (!string.IsNullOrEmpty(customSignalName)) { - if (!NewHorizonsData.KnowsSignal(customSignalName)) - { - NewHorizonsData.LearnSignal(customSignalName); - } - + NewHorizonsData.LearnSignal(customSignalName); AchievementHandler.OnLearnSignal(); return false; From 2f913fc8b0d859045a1d3eab183c24cf90471f5b Mon Sep 17 00:00:00 2001 From: Joshua Thome Date: Tue, 18 Apr 2023 21:34:40 -0500 Subject: [PATCH 14/17] Fix NRE on spawned vessels with physics --- NewHorizons/Handlers/VesselWarpHandler.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/NewHorizons/Handlers/VesselWarpHandler.cs b/NewHorizons/Handlers/VesselWarpHandler.cs index 935c4399..91e52323 100644 --- a/NewHorizons/Handlers/VesselWarpHandler.cs +++ b/NewHorizons/Handlers/VesselWarpHandler.cs @@ -145,6 +145,7 @@ namespace NewHorizons.Handlers var hasParentBody = !string.IsNullOrEmpty(system.Config.Vessel?.vesselSpawn?.parentBody); var hasPhysics = system.Config.Vessel?.hasPhysics ?? !hasParentBody; + var planetGO = hasParentBody ? vesselObject.transform.parent.gameObject : null; if (hasPhysics) { @@ -167,8 +168,6 @@ namespace NewHorizons.Handlers var attachWarpExitToVessel = system.Config.Vessel?.warpExit?.attachToVessel ?? false; var warpExitParent = vesselWarpController._targetWarpPlatform.transform.parent; - var planetGO = hasPhysics ? vesselObject.transform.parent.gameObject : null; - var warpExit = GeneralPropBuilder.MakeFromExisting(vesselWarpController._targetWarpPlatform.gameObject, planetGO, null, system.Config.Vessel?.warpExit, parentOverride: attachWarpExitToVessel ? warpExitParent : null); if (attachWarpExitToVessel) { From d6ef4124800bf7d3b7bc75b3320b950e3c4b244b Mon Sep 17 00:00:00 2001 From: Joshua Thome Date: Tue, 18 Apr 2023 21:35:26 -0500 Subject: [PATCH 15/17] Make API call ignore remoteTrigger if radius is zero or negative --- NewHorizons/NewHorizonsApi.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/NewHorizons/NewHorizonsApi.cs b/NewHorizons/NewHorizonsApi.cs index b34a741b..ee3ea62f 100644 --- a/NewHorizons/NewHorizonsApi.cs +++ b/NewHorizons/NewHorizonsApi.cs @@ -206,11 +206,11 @@ namespace NewHorizons radius = radius, range = range, xmlFile = xmlFile, - remoteTrigger = new RemoteTriggerInfo() + remoteTrigger = remoteTriggerRadius > 0f ? new RemoteTriggerInfo() { position = null, radius = remoteTriggerRadius, - }, + } : null, }; return DialogueBuilder.Make(root, null, info, mod); From 425be7d033442ea47ada6d6530644a048095ebdd Mon Sep 17 00:00:00 2001 From: Nick Date: Fri, 21 Apr 2023 22:56:17 -0400 Subject: [PATCH 16/17] Add a description to warp pad frequency --- NewHorizons/External/Modules/WarpPad/NomaiWarpPadInfo.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/NewHorizons/External/Modules/WarpPad/NomaiWarpPadInfo.cs b/NewHorizons/External/Modules/WarpPad/NomaiWarpPadInfo.cs index f4cd7515..94a9218d 100644 --- a/NewHorizons/External/Modules/WarpPad/NomaiWarpPadInfo.cs +++ b/NewHorizons/External/Modules/WarpPad/NomaiWarpPadInfo.cs @@ -5,6 +5,11 @@ namespace NewHorizons.External.Modules.WarpPad [JsonObject] public abstract class NomaiWarpPadInfo : GeneralPropInfo { + /// + /// This can be anything. To have a warp pad transmitter send you to a receiver you must give them the same frequency. + /// Try to make it something unique so it does not overlap with other warp pad pairs. + /// Futhermore, multiple transmitters can send you to the same receiver if they all have the same frequency. + /// public string frequency; } } From f82a04c4f80482e29d0e96583448ad0c027b4029 Mon Sep 17 00:00:00 2001 From: Ben C Date: Sat, 22 Apr 2023 02:58:30 +0000 Subject: [PATCH 17/17] Updated Schemas --- NewHorizons/Schemas/body_schema.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/NewHorizons/Schemas/body_schema.json b/NewHorizons/Schemas/body_schema.json index 3ed03cf8..2e17f844 100644 --- a/NewHorizons/Schemas/body_schema.json +++ b/NewHorizons/Schemas/body_schema.json @@ -2440,7 +2440,8 @@ "additionalProperties": false, "properties": { "frequency": { - "type": "string" + "type": "string", + "description": "This can be anything. To have a warp pad transmitter send you to a receiver you must give them the same frequency. \nTry to make it something unique so it does not overlap with other warp pad pairs.\nFuthermore, multiple transmitters can send you to the same receiver if they all have the same frequency." }, "rotation": { "description": "Rotation of the object", @@ -2521,7 +2522,8 @@ "additionalProperties": false, "properties": { "frequency": { - "type": "string" + "type": "string", + "description": "This can be anything. To have a warp pad transmitter send you to a receiver you must give them the same frequency. \nTry to make it something unique so it does not overlap with other warp pad pairs.\nFuthermore, multiple transmitters can send you to the same receiver if they all have the same frequency." }, "rotation": { "description": "Rotation of the object",