mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
1.22.3 (#922)
## 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:
commit
39e982b092
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
{
|
||||
|
||||
@ -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" ],
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user