diff --git a/NewHorizons/Builder/Orbital/InitialMotionBuilder.cs b/NewHorizons/Builder/Orbital/InitialMotionBuilder.cs
index c6405bd9..420fa2bf 100644
--- a/NewHorizons/Builder/Orbital/InitialMotionBuilder.cs
+++ b/NewHorizons/Builder/Orbital/InitialMotionBuilder.cs
@@ -24,10 +24,12 @@ namespace NewHorizons.Builder.Orbital
initialMotion._initAngularSpeed = orbit.siderealPeriod == 0 ? 0f : 2f * Mathf.PI / (orbit.siderealPeriod * 60f);
var rotationAxis = Quaternion.AngleAxis(orbit.axialTilt, Vector3.right) * Vector3.up;
- // For things with children this is broken
+ // For stock planets with unsuspended rigidbody children this is broken
+ // For planets with rafts this is broken
if (AstroObjectLocator.GetChildren(secondaryBody).Length == 0)
{
secondaryBody.transform.rotation = Quaternion.FromToRotation(Vector3.up, rotationAxis);
+ secondaryBody.transform.Rotate(rotationAxis, orbit.initialRotation);
}
if (!orbit.isStatic && primaryBody != null)
diff --git a/NewHorizons/External/Modules/OrbitModule.cs b/NewHorizons/External/Modules/OrbitModule.cs
index 84fa1d89..e3a6a566 100644
--- a/NewHorizons/External/Modules/OrbitModule.cs
+++ b/NewHorizons/External/Modules/OrbitModule.cs
@@ -34,6 +34,12 @@ namespace NewHorizons.External.Modules
///
public float siderealPeriod;
+ ///
+ /// Offsets the planet's starting sidereal rotation. In degrees.
+ ///
+ [Range(0f, 360f)]
+ public float initialRotation;
+
///
/// Should the body always have one side facing its primary?
///