mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
1.23.3 (#967)
## Bug fixes - Fix an issue where a signal from Astral Codec mistakenly thought it was inside Dark Bramble if the Outsider was installed. (closes #966) - Fix moving satellites of satellites of planets (closes #960) - Fix size of tornado force volumes
This commit is contained in:
commit
c20b2a4248
@ -171,7 +171,15 @@ namespace NewHorizons.Builder.Props.Audio
|
|||||||
audioSignal._onlyAudibleToScope = info.onlyAudibleToScope;
|
audioSignal._onlyAudibleToScope = info.onlyAudibleToScope;
|
||||||
audioSignal._identificationDistance = info.identificationRadius;
|
audioSignal._identificationDistance = info.identificationRadius;
|
||||||
audioSignal._canBePickedUpByScope = true;
|
audioSignal._canBePickedUpByScope = true;
|
||||||
|
// The outsider adds outer fog warp volumes to Bramble which break any signals NH places there
|
||||||
|
if (Main.Instance.ModHelper.Interaction.ModExists("SBtT.TheOutsider") && planetGO.GetComponent<AstroObject>()._name == AstroObject.Name.DarkBramble)
|
||||||
|
{
|
||||||
|
audioSignal._outerFogWarpVolume = null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
audioSignal._outerFogWarpVolume = planetGO.GetComponentInChildren<OuterFogWarpVolume>(); // shouldn't break non-bramble signals
|
audioSignal._outerFogWarpVolume = planetGO.GetComponentInChildren<OuterFogWarpVolume>(); // shouldn't break non-bramble signals
|
||||||
|
}
|
||||||
|
|
||||||
// If it can be heard regularly then we play it immediately
|
// If it can be heard regularly then we play it immediately
|
||||||
owAudioSource.playOnAwake = !info.onlyAudibleToScope;
|
owAudioSource.playOnAwake = !info.onlyAudibleToScope;
|
||||||
|
|||||||
@ -158,7 +158,7 @@ namespace NewHorizons.Builder.Props
|
|||||||
// Resize it so the force volume goes all the way up
|
// Resize it so the force volume goes all the way up
|
||||||
var fluidGO = tornadoGO.transform.Find(downwards ? "MockDownTornado_FluidCenter" : "MockUpTornado_FluidCenter");
|
var fluidGO = tornadoGO.transform.Find(downwards ? "MockDownTornado_FluidCenter" : "MockUpTornado_FluidCenter");
|
||||||
fluidGO.GetComponent<TornadoFluidVolume>()._fluidType = info.fluidType.ConvertToOW(FluidVolume.Type.CLOUD);
|
fluidGO.GetComponent<TornadoFluidVolume>()._fluidType = info.fluidType.ConvertToOW(FluidVolume.Type.CLOUD);
|
||||||
fluidGO.localScale = new Vector3(1, 2f, 1);
|
fluidGO.localPosition = Vector3.up * 4.8f;
|
||||||
|
|
||||||
if (info.tint != null)
|
if (info.tint != null)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -61,6 +61,7 @@ namespace NewHorizons.External.Modules
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Relative filepath to the fog color ramp texture, if you put fog.
|
/// Relative filepath to the fog color ramp texture, if you put fog.
|
||||||
/// x axis is angle to sun (left at midnight, right at noon), y axis is distance to camera (close at bottom, far at top).
|
/// x axis is angle to sun (left at midnight, right at noon), y axis is distance to camera (close at bottom, far at top).
|
||||||
|
/// Optional. If you set fogTint, a default fog ramp will be tinted for you.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string fogRampPath;
|
public string fogRampPath;
|
||||||
|
|
||||||
|
|||||||
@ -91,6 +91,9 @@ public static class HeldItemHandler
|
|||||||
|
|
||||||
private static void OnStarSystemChanging(string _)
|
private static void OnStarSystemChanging(string _)
|
||||||
{
|
{
|
||||||
|
// Double check we're still holding it
|
||||||
|
_currentlyHeldItem = Locator.GetToolModeSwapper().GetItemCarryTool().GetHeldItem()?.gameObject;
|
||||||
|
|
||||||
if (_currentlyHeldItem != null)
|
if (_currentlyHeldItem != null)
|
||||||
{
|
{
|
||||||
// Track it so that when we return to this system we can delete the original
|
// Track it so that when we return to this system we can delete the original
|
||||||
|
|||||||
@ -848,6 +848,8 @@ namespace NewHorizons.Handlers
|
|||||||
|
|
||||||
// Get ready to move all the satellites
|
// Get ready to move all the satellites
|
||||||
var relativeMoonPositions = children.Select(x => x.transform.position - go.transform.position).ToArray();
|
var relativeMoonPositions = children.Select(x => x.transform.position - go.transform.position).ToArray();
|
||||||
|
var relativeMoonMoonPositions = children.Select(x => AstroObjectLocator.GetChildren(x.GetComponent<AstroObject>())
|
||||||
|
.Select(childchild => (childchild?.transform?.position ?? Vector3.zero) - go.transform.position)).ToArray();
|
||||||
|
|
||||||
// If its tidally locked change the alignment
|
// If its tidally locked change the alignment
|
||||||
var alignment = go.GetComponent<AlignWithTargetBody>();
|
var alignment = go.GetComponent<AlignWithTargetBody>();
|
||||||
@ -874,11 +876,15 @@ namespace NewHorizons.Handlers
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
var j = 0;
|
||||||
foreach (var childChild in AstroObjectLocator.GetChildren(childAO))
|
foreach (var childChild in AstroObjectLocator.GetChildren(childAO))
|
||||||
{
|
{
|
||||||
if (childChild == null) continue;
|
if (childChild != null)
|
||||||
var dPos = childChild.transform.position - child.transform.position;
|
{
|
||||||
childChild.transform.position = go.transform.position + relativeMoonPositions[i] + dPos;
|
var dPos = relativeMoonMoonPositions[i].ElementAt(j);
|
||||||
|
childChild.transform.position = go.transform.position + dPos;
|
||||||
|
}
|
||||||
|
j++;
|
||||||
}
|
}
|
||||||
// Make sure the moons get updated to the new AO
|
// Make sure the moons get updated to the new AO
|
||||||
childAO._primaryBody = newAO;
|
childAO._primaryBody = newAO;
|
||||||
|
|||||||
@ -146,7 +146,8 @@ namespace NewHorizons
|
|||||||
void DefineStarSystem(string name, string config, IModBehaviour mod);
|
void DefineStarSystem(string name, string config, IModBehaviour mod);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Allows creation of dialogue by directly passing the xml and dialogueInfo json contents as strings
|
/// Allows creation of dialogue by directly passing the xml and dialogueInfo json contents as strings.
|
||||||
|
/// Must be called at least 2 frames before entering dialogue if you're using ReuseDialogueOptionsFrom
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="textAssetID">TextAsset name used for compatibility with voice mod. Just has to be a unique identifier.</param>
|
/// <param name="textAssetID">TextAsset name used for compatibility with voice mod. Just has to be a unique identifier.</param>
|
||||||
/// <param name="xml">The contents of the dialogue xml file as a string</param>
|
/// <param name="xml">The contents of the dialogue xml file as a string</param>
|
||||||
|
|||||||
@ -23,7 +23,10 @@ namespace NewHorizons.Patches.WarpPatches
|
|||||||
if (!Main.Instance.IsWarpingFromVessel)
|
if (!Main.Instance.IsWarpingFromVessel)
|
||||||
PlayerData.SaveWarpedToTheEye(TimeLoopUtilities.GetVanillaSecondsRemaining());
|
PlayerData.SaveWarpedToTheEye(TimeLoopUtilities.GetVanillaSecondsRemaining());
|
||||||
|
|
||||||
|
// This is totally letting us see the interior of bramble when warping
|
||||||
Locator.GetPlayerSectorDetector().RemoveFromAllSectors();
|
Locator.GetPlayerSectorDetector().RemoveFromAllSectors();
|
||||||
|
// This is a very jank workaround to stop us seeing all that #957
|
||||||
|
Locator.GetPlayerCamera().farClipPlane = 0;
|
||||||
LoadManager.EnableAsyncLoadTransition();
|
LoadManager.EnableAsyncLoadTransition();
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@ -370,7 +370,7 @@
|
|||||||
},
|
},
|
||||||
"fogRampPath": {
|
"fogRampPath": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"description": "Relative filepath to the fog color ramp texture, if you put fog.\nx axis is angle to sun (left at midnight, right at noon), y axis is distance to camera (close at bottom, far at top)."
|
"description": "Relative filepath to the fog color ramp texture, if you put fog.\nx axis is angle to sun (left at midnight, right at noon), y axis is distance to camera (close at bottom, far at top).\nOptional. If you set fogTint, a default fog ramp will be tinted for you."
|
||||||
},
|
},
|
||||||
"hasOxygen": {
|
"hasOxygen": {
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
"author": "xen, Bwc9876, JohnCorby, MegaPiggy, Trifid, and friends",
|
"author": "xen, Bwc9876, JohnCorby, MegaPiggy, Trifid, and friends",
|
||||||
"name": "New Horizons",
|
"name": "New Horizons",
|
||||||
"uniqueName": "xen.NewHorizons",
|
"uniqueName": "xen.NewHorizons",
|
||||||
"version": "1.23.2",
|
"version": "1.23.3",
|
||||||
"owmlVersion": "2.12.1",
|
"owmlVersion": "2.12.1",
|
||||||
"dependencies": [ "JohnCorby.VanillaFix", "xen.CommonCameraUtility", "dgarro.CustomShipLogModes" ],
|
"dependencies": [ "JohnCorby.VanillaFix", "xen.CommonCameraUtility", "dgarro.CustomShipLogModes" ],
|
||||||
"conflicts": [ "PacificEngine.OW_CommonResources" ],
|
"conflicts": [ "PacificEngine.OW_CommonResources" ],
|
||||||
|
|||||||
@ -27,6 +27,26 @@ A persistent condition is similar to a condition, except it _persists_ through l
|
|||||||
|
|
||||||
A remote trigger is used to have an NPC talk to you from a distance; ex: Slate stopping you for the umpteenth time to tell you information you already knew.
|
A remote trigger is used to have an NPC talk to you from a distance; ex: Slate stopping you for the umpteenth time to tell you information you already knew.
|
||||||
|
|
||||||
|
### ReuseDialogueOptionsListFrom
|
||||||
|
|
||||||
|
This is a custom XML node introduced by New Horizons. Use it when adding new dialogue to existing characters, to repeat the dialogue options list from another node.
|
||||||
|
|
||||||
|
For example, Slate's first dialogue with options is named `Scientist5`. To make a custom DialogueNode using these dialogue options (meaning new dialogue said by Slate, but reusing the possible player responses) you can write:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<DialogueNode>
|
||||||
|
<Name>...</Name>
|
||||||
|
<Dialogue>
|
||||||
|
<Page>NEW DIALOGUE FOR SLATE HERE.</Page>
|
||||||
|
</Dialogue>
|
||||||
|
<DialogueOptionsList>
|
||||||
|
<ReuseDialogueOptionsListFrom>Scientist5</ReuseDialogueOptionsListFrom>
|
||||||
|
</DialogueOptionsList>
|
||||||
|
</DialogueNode>
|
||||||
|
```
|
||||||
|
|
||||||
|
Note: If you're loading dialogue in code, 2 frames must pass before entering the conversation in order for ReuseDialogueOptionsListFrom to take effect.
|
||||||
|
|
||||||
## Example XML
|
## Example XML
|
||||||
|
|
||||||
Here's an example dialogue XML:
|
Here's an example dialogue XML:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user