## Improvements
- Updated Polish translation
- Shader replacement will now work on underwater effects among other
things
- Improved error message when SlideReelCache is out of date

## Bug fixes
- Fixed prop placer details potentially being invisible when placed.
- Fix warp receiver computer not working
- Fix inactive signals being used with signalscope strongest signal
method. This bug prevented some vanilla frequencies from showing up in
custom systems.
This commit is contained in:
xen-42 2024-07-14 14:55:44 -04:00 committed by GitHub
commit 39e982b092
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 81 additions and 6 deletions

View File

@ -1,6 +1,20 @@
{
"$schema": "https://raw.githubusercontent.com/xen-42/outer-wilds-new-horizons/main/NewHorizons/Schemas/translation_schema.json",
"DialogueDictionary": {
"NEW_HORIZONS_WARP_DRIVE_DIALOGUE_1": "Twój statek jest teraz wyposażony z napędem warp!",
"NEW_HORIZONS_WARP_DRIVE_DIALOGUE_2": "Możesz użyć nowy \"Tryb międzygwiezdny\" w Dzienniku Pokładowym żeby zablokować twój autopilot na inny Układ Gwiazdy.",
"NEW_HORIZONS_WARP_DRIVE_DIALOGUE_3": "A potem zapnij pasy i zaangażój wypaczanie!"
},
"UIDictionary": {
"INTERSTELLAR_MODE": "Tryb międzygwiezdny",
"FREQ_STATUE": "Statua Nomai",
"FREQ_WARP_CORE": "Strumień Anty-Grawitonowy",
"FREQ_UNKNOWN": "???",
"ENGAGE_WARP_PROMPT": "Zaangażować Wypaczanie do {0}",
"WARP_LOCKED": "AUTOPILOT ZABLOKOWANY NA:\n{0}",
"LOCK_AUTOPILOT_WARP": "Zablokuj Autopilot na Układ Gwiazdy",
"RICH_PRESENCE_EXPLORING": "Eksploruje {0}.",
"RICH_PRESENCE_WARPING": "Wypaczanie do {0}.",
"Vessel": "Statku"
}
}
}

View File

@ -28,6 +28,7 @@ namespace NewHorizons.Builder.Props
// Trifid is a Nomai ruins genius
_platformContainerPrefab = SearchUtilities.Find("BrittleHollow_Body/Sector_BH/Sector_SouthHemisphere/Sector_SouthPole/Sector_Observatory/Interactables_Observatory/Prefab_NOM_RemoteViewer/Structure_NOM_RemoteViewer")
.InstantiateInactive()
.Rename("Prefab_NOM_PlatformContainer")
.DontDestroyOnLoad();
_platformContainerPrefab.transform.localScale = new Vector3(0.85f, 3f, 0.85f);
}
@ -39,12 +40,12 @@ namespace NewHorizons.Builder.Props
_detailedReceiverPrefab = new GameObject("NomaiWarpReceiver");
var detailedReceiver = thReceiver.InstantiateInactive();
var detailedReceiver = thReceiver.InstantiateInactive().Rename("Prefab_NOM_WarpReceiver");
detailedReceiver.transform.parent = _detailedReceiverPrefab.transform;
detailedReceiver.transform.localPosition = Vector3.zero;
detailedReceiver.transform.localRotation = Quaternion.identity;
var lamp = thReceiverLamp.InstantiateInactive();
var lamp = thReceiverLamp.InstantiateInactive().Rename("Structure_NOM_WarpReceiver_Lamp");
lamp.transform.parent = _detailedReceiverPrefab.transform;
lamp.transform.localPosition = thReceiver.transform.InverseTransformPoint(thReceiverLamp.transform.position);
lamp.transform.localRotation = thReceiver.transform.InverseTransformRotation(thReceiverLamp.transform.rotation);
@ -62,10 +63,11 @@ namespace NewHorizons.Builder.Props
{
_receiverPrefab = SearchUtilities.Find("SunStation_Body/Sector_SunStation/Sector_WarpModule/Interactables_WarpModule/Prefab_NOM_WarpReceiver")
.InstantiateInactive()
.Rename("Prefab_NOM_WarpReceiver")
.DontDestroyOnLoad();
Object.Destroy(_receiverPrefab.GetComponentInChildren<NomaiWarpStreaming>().gameObject);
var structure = _platformContainerPrefab.Instantiate();
var structure = _platformContainerPrefab.Instantiate().Rename("Structure_NOM_PlatformContainer");
structure.transform.parent = _receiverPrefab.transform;
structure.transform.localPosition = new Vector3(0, 0.8945f, 0);
structure.transform.localRotation = Quaternion.identity;
@ -76,10 +78,11 @@ namespace NewHorizons.Builder.Props
{
_transmitterPrefab = SearchUtilities.Find("TowerTwin_Body/Sector_TowerTwin/Sector_Tower_SS/Interactables_Tower_SS/Tower_SS_VisibleFrom_TowerTwin/Prefab_NOM_WarpTransmitter")
.InstantiateInactive()
.Rename("Prefab_NOM_WarpTransmitter")
.DontDestroyOnLoad();
Object.Destroy(_transmitterPrefab.GetComponentInChildren<NomaiWarpStreaming>().gameObject);
var structure = _platformContainerPrefab.Instantiate();
var structure = _platformContainerPrefab.Instantiate().Rename("Structure_NOM_PlatformContainer");
structure.transform.parent = _transmitterPrefab.transform;
structure.transform.localPosition = new Vector3(0, 0.8945f, 0);
structure.transform.localRotation = Quaternion.identity;
@ -157,6 +160,7 @@ namespace NewHorizons.Builder.Props
var computerLogger = computerObject.AddComponent<NomaiWarpComputerLogger>();
computerLogger._warpReceiver = receiver;
computerLogger.Awake(); // Redo awake because OnReceiveWarpedBody doesn't get added to otherwise
computerObject.SetActive(true);
}

View File

@ -1,4 +1,6 @@
using HarmonyLib;
using System.Collections.Generic;
using System.Linq;
namespace NewHorizons.Patches
{
@ -108,5 +110,12 @@ namespace NewHorizons.Patches
_mapSatellite = null;
_sunStation = null;
}
[HarmonyPostfix]
[HarmonyPatch(nameof(Locator.GetAudioSignals))]
public static void Locator_GetAudioSignals(ref List<AudioSignal> __result)
{
__result = __result.Where(signal => signal.IsActive()).ToList();
}
}
}

View File

@ -11,6 +11,13 @@ namespace NewHorizons.Patches.SignalPatches
[HarmonyPatch(typeof(AudioSignal))]
public static class AudioSignalPatches
{
[HarmonyPostfix]
[HarmonyPatch(nameof(AudioSignal.IsActive))]
public static void AudioSignal_IsActive(AudioSignal __instance, ref bool __result)
{
__result = __result && __instance.gameObject.activeInHierarchy;
}
[HarmonyPrefix]
[HarmonyPatch(nameof(AudioSignal.SignalNameToString))]
public static bool AudioSignal_SignalNameToString(SignalName name, ref string __result)

View File

@ -156,6 +156,7 @@ namespace NewHorizons.Utility.DebugTools
{
position = data.pos,
rotation = data.rot.eulerAngles,
keepLoaded = true
};
var prop = DetailBuilder.Make(planetGO, sector, null, prefab, detailInfo);

View File

@ -155,6 +155,42 @@ namespace NewHorizons.Utility.Files
}
}
}
// for dream world underwater fog
foreach (var ruleset in prefab.GetComponentsInChildren<EffectRuleset>(true))
{
var material = ruleset._material;
if (material == null) continue;
var replacementShader = Shader.Find(material.shader.name);
if (replacementShader == null) continue;
// preserve override tag and render queue (for Standard shader)
// keywords and properties are already preserved
if (material.renderQueue != material.shader.renderQueue)
{
var renderType = material.GetTag("RenderType", false);
var renderQueue = material.renderQueue;
material.shader = replacementShader;
material.SetOverrideTag("RenderType", renderType);
material.renderQueue = renderQueue;
}
else
{
material.shader = replacementShader;
}
}
// for raft splash
foreach (var fluidDetector in prefab.GetComponentsInChildren<FluidDetector>(true))
{
if (fluidDetector._splashEffects == null) continue;
foreach (var splashEffect in fluidDetector._splashEffects)
{
if (splashEffect == null) continue;
if (splashEffect.splashPrefab == null) continue;
AssetBundleUtilities.ReplaceShaders(splashEffect.splashPrefab);
}
}
}
}
}

View File

@ -79,6 +79,10 @@ public class SlideReelAsyncImageLoader
if (hasError)
{
NHLogger.LogError($"Failed to load {index}:{url} - {uwr.error}");
if (url.Contains("SlideReelCache"))
{
NHLogger.LogError("Missing image in SlideReelCache: If you are a dev, try deleting the folder so that New Horizons can regenerate the cache. If you are a player: do that and then complain to the mod dev.");
}
}
else
{

View File

@ -4,7 +4,7 @@
"author": "xen, Bwc9876, JohnCorby, MegaPiggy, Clay, Trifid, and friends",
"name": "New Horizons",
"uniqueName": "xen.NewHorizons",
"version": "1.22.2",
"version": "1.22.3",
"owmlVersion": "2.12.1",
"dependencies": [ "JohnCorby.VanillaFix", "xen.CommonCameraUtility", "dgarro.CustomShipLogModes" ],
"conflicts": [ "PacificEngine.OW_CommonResources" ],