{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "Celestial Body Schema", "type": "object", "description": "Describes a body to generate", "additionalProperties": false, "properties": { "AsteroidBelt": { "description": "Generate asteroids around this body", "$ref": "#/definitions/AsteroidBeltModule" }, "Atmosphere": { "description": "Describes this Body's atmosphere", "$ref": "#/definitions/AtmosphereModule" }, "Base": { "description": "Base Properties of this Body", "$ref": "#/definitions/BaseModule" }, "buildPriority": { "type": "integer", "description": "Set to a higher number if you wish for this body to be built sooner", "format": "int32", "default": -1 }, "canShowOnTitle": { "type": "boolean", "description": "Should this planet ever be shown on the title screen?" }, "destroy": { "type": "boolean", "description": "`true` if you want to delete this planet" }, "FocalPoint": { "description": "Make this body into a focal point (barycenter)", "$ref": "#/definitions/FocalPointModule" }, "Funnel": { "description": "Add funnel from this planet to another", "$ref": "#/definitions/FunnelModule" }, "HeightMap": { "description": "Generate the surface of this planet using a heightmap", "$ref": "#/definitions/HeightMapModule" }, "isQuantumState": { "type": "boolean", "description": "Does this config describe a quantum state of a custom planet defined in another file?" }, "Lava": { "description": "Add lava to this planet", "$ref": "#/definitions/LavaModule" }, "name": { "type": "string", "description": "Unique name of your planet" }, "Orbit": { "description": "Describes this Body's orbit (or lack there of)", "$ref": "#/definitions/OrbitModule" }, "ProcGen": { "description": "Procedural Generation", "$ref": "#/definitions/ProcGenModule" }, "Props": { "description": "Spawn various objects on this body", "$ref": "#/definitions/PropModule" }, "removeChildren": { "type": "array", "description": "A list of paths to child GameObjects to destroy on this planet", "items": { "type": "string" } }, "Ring": { "description": "Creates a ring around the planet", "$ref": "#/definitions/RingModule" }, "Sand": { "description": "Add sand to this planet", "$ref": "#/definitions/SandModule" }, "ShipLog": { "description": "Add ship log entries to this planet and describe how it looks in map mode", "$ref": "#/definitions/ShipLogModule" }, "Signal": { "description": "Add signals that can be heard via the signal-scope to this planet", "$ref": "#/definitions/SignalModule" }, "Singularity": { "description": "Add a black or white hole to this planet", "$ref": "#/definitions/SingularityModule" }, "Spawn": { "description": "Spawn the player at this planet", "$ref": "#/definitions/SpawnModule" }, "Star": { "description": "Make this body a star", "$ref": "#/definitions/StarModule" }, "starSystem": { "type": "string", "description": "Unique star system containing your planet", "default": "SolarSystem" }, "version": { "type": "string", "description": "Version of New Horizons this config is using (Doesn't do anything)" }, "Water": { "description": "Add water to this planet", "$ref": "#/definitions/WaterModule" } }, "definitions": { "AsteroidBeltModule": { "type": "object", "additionalProperties": false, "properties": { "amount": { "type": "integer", "description": "Amount of asteroids to create.", "format": "int32", "default": -1, "maximum": 200.0, "minimum": 0.0 }, "inclination": { "type": "number", "description": "Angle between the rings and the equatorial plane of the planet.", "format": "float" }, "innerRadius": { "type": "number", "description": "Lowest distance from the planet asteroids can spawn", "format": "float", "minimum": 0.0 }, "longitudeOfAscendingNode": { "type": "number", "description": "Angle defining the point where the rings rise up from the planet's equatorial plane if inclination is nonzero.", "format": "float" }, "maxSize": { "type": "number", "description": "Maximum size of the asteroids.", "format": "float", "default": 50, "minimum": 0.0 }, "minSize": { "type": "number", "description": "Minimum size of the asteroids.", "format": "float", "default": 20, "minimum": 0.0 }, "outerRadius": { "type": "number", "description": "Greatest distance from the planet asteroids can spawn", "format": "float", "minimum": 0.0 }, "procGen": { "description": "How the asteroids are generated", "$ref": "#/definitions/ProcGenModule" }, "randomSeed": { "type": "integer", "description": "Number used to randomize asteroid positions", "format": "int32" } } }, "ProcGenModule": { "type": "object", "additionalProperties": false, "properties": { "color": { "$ref": "#/definitions/MColor" }, "scale": { "type": "number", "format": "float", "minimum": 0.0 } } }, "MColor": { "type": "object", "additionalProperties": false, "properties": { "r": { "type": "integer", "description": "The red component of this colour", "format": "int32", "maximum": 2147483647.0, "minimum": 0.0 }, "g": { "type": "integer", "description": "The green component of this colour", "format": "int32", "maximum": 2147483647.0, "minimum": 0.0 }, "b": { "type": "integer", "description": "The blue component of this colour", "format": "int32", "maximum": 2147483647.0, "minimum": 0.0 }, "a": { "type": "integer", "description": "The alpha (opacity) component of this colour", "format": "int32", "default": 255.0, "maximum": 255.0, "minimum": 0.0 } } }, "AtmosphereModule": { "type": "object", "additionalProperties": false, "properties": { "atmosphereTint": { "description": "Colour of atmospheric shader on the planet.", "$ref": "#/definitions/MColor" }, "clouds": { "description": "Describes the clouds in the atmosphere", "$ref": "#/definitions/CloudInfo" }, "fogDensity": { "type": "number", "description": "How dense the fog is, if you put fog.", "format": "float", "maximum": 1.0, "minimum": 0.0 }, "fogSize": { "type": "number", "description": "Radius of fog sphere, independent of the atmosphere. This has to be set for there to be fog.", "format": "float", "minimum": 0.0 }, "fogTint": { "description": "Colour of fog on the planet, if you put fog.", "$ref": "#/definitions/MColor" }, "hasOxygen": { "type": "boolean", "description": "Lets you survive on the planet without a suit." }, "hasRain": { "type": "boolean", "description": "Does this planet have rain?" }, "hasSnow": { "type": "boolean", "description": "Does this planet have snow?" }, "size": { "type": "number", "description": "Scale height of the atmosphere", "format": "float" }, "useAtmosphereShader": { "type": "boolean", "description": "Whether we use an atmospheric shader on the planet. Doesn't affect clouds, fog, rain, snow, oxygen, etc. Purely\nvisual." } } }, "CloudInfo": { "type": "object", "additionalProperties": false, "properties": { "capPath": { "type": "string", "description": "Relative filepath to the cloud cap texture, if the planet has clouds." }, "fluidType": { "description": "Fluid type for sounds/effects when colliding with this cloud.", "$ref": "#/definitions/CloudFluidType" }, "hasLightning": { "type": "boolean", "description": "Add lightning to this planet like on Giant's Deep." }, "innerCloudRadius": { "type": "number", "description": "Radius from the center to the inner layer of the clouds.", "format": "float" }, "lightningGradient": { "type": "array", "description": "Colour gradient of the lightning, time is in seconds.", "items": { "$ref": "#/definitions/MGradient" } }, "outerCloudRadius": { "type": "number", "description": "Radius from the center to the outer layer of the clouds.", "format": "float" }, "rampPath": { "type": "string", "description": "Relative filepath to the cloud ramp texture, if the planet has clouds. If you don't put anything here it will be\nauto-generated." }, "texturePath": { "type": "string", "description": "Relative filepath to the cloud texture, if the planet has clouds." }, "tint": { "description": "Colour of the inner cloud layer.", "$ref": "#/definitions/MColor" }, "unlit": { "type": "boolean", "description": "If the top layer shouldn't have shadows. Set to true if you're making a brown dwarf for example." }, "useBasicCloudShader": { "type": "boolean", "description": "Set to `false` in order to use Giant's deep shader. Set to `true` to just apply the cloud texture as is." } } }, "CloudFluidType": { "type": "string", "description": "", "x-enumNames": [ "None", "Water", "Cloud", "Sand", "Plasma" ], "enum": [ "NONE", "WATER", "CLOUD", "SAND", "PLASMA" ] }, "MGradient": { "type": "object", "additionalProperties": false, "properties": { "Time": { "type": "number", "format": "float" }, "Tint": { "$ref": "#/definitions/MColor" } } }, "BaseModule": { "type": "object", "additionalProperties": false, "properties": { "ambientLight": { "type": "number", "description": "The intensity of light the dark side of the body should have. Timber Hearth has `1.4` for reference", "format": "float" }, "centerOfSolarSystem": { "type": "boolean", "description": "Set this to true if you are replacing the sun with a different body. Only one object in a star system should ever\nhave this set to true." }, "cloakRadius": { "type": "number", "description": "Radius of the cloaking field around the planet. It's a bit finicky so experiment with different values. If you\ndon't want a cloak, leave this as 0.", "format": "float" }, "cometTailRotation": { "description": "If it has a comet tail, it'll be oriented according to these Euler angles.", "$ref": "#/definitions/MVector3" }, "gravityFallOff": { "description": "How gravity falls off with distance. Most planets use linear but the sun and some moons use inverseSquared.", "$ref": "#/definitions/GravityFallOff" }, "groundSize": { "type": "number", "description": "Radius of a simple sphere used as the ground for the planet. If you want to use more complex terrain, leave this as\n0.", "format": "float" }, "hasCometTail": { "type": "boolean", "description": "If you want the body to have a tail like the Interloper." }, "hasMapMarker": { "type": "boolean", "description": "If the body should have a marker on the map screen." }, "hasReferenceFrame": { "type": "boolean", "description": "Allows the object to be targeted on the map.", "default": true }, "invulnerableToSun": { "type": "boolean", "description": "Can this planet survive entering a star?" }, "showMinimap": { "type": "boolean", "description": "Do we show the minimap when walking around this planet?", "default": true }, "sphereOfInfluence": { "type": "number", "description": "An override for the radius of the planet's gravitational sphere of influence. Optional", "format": "float" }, "surfaceGravity": { "type": "number", "description": "The acceleration due to gravity felt as the surfaceSize. Timber Hearth has 12 for reference", "format": "float" }, "surfaceSize": { "type": "number", "description": "A scale height used for a number of things. Should be the approximate radius of the body.", "format": "float" } } }, "MVector3": { "type": "object", "additionalProperties": false, "properties": { "X": { "type": "number", "format": "float" }, "Y": { "type": "number", "format": "float" }, "Z": { "type": "number", "format": "float" } } }, "GravityFallOff": { "type": "string", "description": "", "x-enumNames": [ "Linear", "InverseSquared" ], "enum": [ "linear", "inverseSquared" ] }, "FocalPointModule": { "type": "object", "additionalProperties": false, "properties": { "primary": { "type": "string", "description": "Name of the primary planet in this binary system" }, "secondary": { "type": "string", "description": "Name of the secondary planet in this binary system" } } }, "FunnelModule": { "type": "object", "additionalProperties": false, "properties": { "Curve": { "type": "array", "description": "Scale this module over time", "items": { "$ref": "#/definitions/TimeValuePair" } }, "target": { "type": "string", "description": "The planet the funnel will flow to" }, "tint": { "description": "Tint of the funnel", "$ref": "#/definitions/MColor" }, "type": { "description": "Type of fluid the funnel transfers", "$ref": "#/definitions/FunnelType" } } }, "TimeValuePair": { "type": "object", "additionalProperties": false, "properties": { "Time": { "type": "number", "format": "float" }, "Value": { "type": "number", "format": "float" } } }, "FunnelType": { "type": "string", "description": "", "x-enumNames": [ "Sand", "Water", "Lava", "Star" ], "enum": [ "Sand", "Water", "Lava", "Star" ] }, "HeightMapModule": { "type": "object", "additionalProperties": false, "properties": { "heightMap": { "type": "string", "description": "Relative filepath to the texture used for the terrain height." }, "maxHeight": { "type": "number", "description": "The highest points on your planet will be at this height.", "format": "float", "minimum": 0.0 }, "minHeight": { "type": "number", "description": "The lowest points on your planet will be at this height.", "format": "float", "minimum": 0.0 }, "stretch": { "description": "The scale of the terrain.", "$ref": "#/definitions/MVector3" }, "textureMap": { "type": "string", "description": "Relative filepath to the texture used for the terrain." } } }, "LavaModule": { "type": "object", "additionalProperties": false, "properties": { "Curve": { "type": "array", "description": "Scale this module over time", "items": { "$ref": "#/definitions/TimeValuePair" } }, "size": { "type": "number", "description": "Size of the lava sphere", "format": "float" }, "tint": { "description": "Tint of the lava", "$ref": "#/definitions/MColor" } } }, "OrbitModule": { "type": "object", "additionalProperties": false, "properties": { "PrimaryBody": { "type": "string", "description": "The name of the body this one will orbit around" }, "IsMoon": { "type": "boolean", "description": "Is this the moon of a planet? Used for determining when its name is shown on the map." }, "AxialTilt": { "type": "number", "description": "The angle between the normal to the orbital plane and its axis of rotation.", "format": "float" }, "SiderealPeriod": { "type": "number", "description": "Rotation period in minutes.", "format": "float" }, "IsTidallyLocked": { "type": "boolean", "description": "Should the body always have one side facing its primary?" }, "AlignmentAxis": { "description": "If it is tidally locked, this direction will face towards the primary. Ex: Interloper uses `0, -1, 0`. Most planets\nwill want something like `-1, 0, 0`.", "$ref": "#/definitions/MVector3" }, "ShowOrbitLine": { "type": "boolean", "description": "Referring to the orbit line in the map screen.", "default": true }, "DottedOrbitLine": { "type": "boolean", "description": "Should the orbit line be dotted?" }, "IsStatic": { "type": "boolean", "description": "Is the body meant to stay in one place without moving?" }, "Tint": { "description": "Colour of the orbit-line in the map view.", "$ref": "#/definitions/MColor" }, "TrackingOrbitLine": { "type": "boolean", "description": "Should we just draw a line behind its orbit instead of the entire circle/ellipse?" }, "semiMajorAxis": { "type": "number", "description": "The semi-major axis of the ellipse that is the body's orbit. For a circular orbit this is the radius.", "format": "float", "default": 5000.0, "minimum": 0.0 }, "inclination": { "type": "number", "description": "The angle (in degrees) between the body's orbit and the plane of the star system", "format": "float" }, "longitudeOfAscendingNode": { "type": "number", "description": "An angle (in degrees) defining the point where the orbit of the body rises above the orbital plane if it has\nnonzero inclination.", "format": "float" }, "eccentricity": { "type": "number", "description": "At 0 the orbit is a circle. The closer to 1 it is, the more oval-shaped the orbit is.", "format": "float", "maximum": 1.0, "minimum": 0.0 }, "argumentOfPeriapsis": { "type": "number", "description": "An angle (in degrees) defining the location of the periapsis (the closest distance to it's primary body) if it has\nnonzero eccentricity.", "format": "float" }, "trueAnomaly": { "type": "number", "description": "Where the planet should start off in its orbit in terms of the central angle.", "format": "float" } } }, "PropModule": { "type": "object", "additionalProperties": false, "properties": { "details": { "type": "array", "description": "Place props in predefined positions on the planet", "items": { "$ref": "#/definitions/DetailInfo" } }, "dialogue": { "type": "array", "description": "Add dialogue triggers to this planet", "items": { "$ref": "#/definitions/DialogueInfo" } }, "entryLocation": { "type": "array", "description": "Add ship log entry locations on this planet", "items": { "$ref": "#/definitions/EntryLocationInfo" } }, "geysers": { "type": "array", "description": "Add Geysers to this planet", "items": { "$ref": "#/definitions/GeyserInfo" } }, "nomaiText": { "type": "array", "description": "Add translatable text to this planet", "items": { "$ref": "#/definitions/NomaiTextInfo" } }, "proxyDetails": { "type": "array", "description": "Details which will be shown from 50km away. Meant to be lower resolution.", "items": { "$ref": "#/definitions/DetailInfo" } }, "rafts": { "type": "array", "description": "Add rafts to this planet", "items": { "$ref": "#/definitions/RaftInfo" } }, "reveal": { "type": "array", "description": "Add triggers that reveal parts of the ship log on this planet", "items": { "$ref": "#/definitions/RevealInfo" } }, "scatter": { "type": "array", "description": "Scatter props around this planet's surface", "items": { "$ref": "#/definitions/ScatterInfo" } }, "slideShows": { "type": "array", "description": "Add slideshows (from the DLC) to the planet", "items": { "$ref": "#/definitions/ProjectionInfo" } }, "tornados": { "type": "array", "description": "Add tornadoes to this planet", "items": { "$ref": "#/definitions/TornadoInfo" } }, "volcanoes": { "type": "array", "description": "Add volcanoes to this planet", "items": { "$ref": "#/definitions/VolcanoInfo" } } } }, "DetailInfo": { "type": "object", "additionalProperties": false, "properties": { "alignToNormal": { "type": "boolean", "description": "Do we override rotation and try to automatically align this object to stand upright on the body's surface?" }, "assetBundle": { "type": "string", "description": "Relative filepath to an asset-bundle to load the prefab defined in `path` from/" }, "mtlFilePath": { "type": "string", "description": "[DEPRECATED] Path to the .mtl file to load a 3d model from" }, "objFilePath": { "type": "string", "description": "[DEPRECATED] Path to the .obj file to load a 3d model from" }, "path": { "type": "string", "description": "Either the path in the scene hierarchy of the item to copy or the path to the object in the supplied asset bundle" }, "position": { "description": "Position of this prop relative to the body's center", "$ref": "#/definitions/MVector3" }, "removeChildren": { "type": "array", "description": "A list of children to remove from this detail", "items": { "type": "string" } }, "removeComponents": { "type": "boolean", "description": "Do we reset all the components on this object? Useful for certain props that have dialogue components attached to\nthem." }, "rotation": { "description": "Rotate this prop", "$ref": "#/definitions/MVector3" }, "scale": { "type": "number", "description": "Scale the prop", "format": "float", "default": 1.0 } } }, "DialogueInfo": { "type": "object", "additionalProperties": false, "properties": { "blockAfterPersistentCondition": { "type": "string", "description": "Prevents the dialogue from being created after a specific persistent condition is set. Useful for remote dialogue\ntriggers that you want to have happen only once." }, "lookAtRadius": { "type": "number", "description": "If a pathToAnimController is supplied, if you are within this distance the character will look at you. If it is set\nto 0, they will only look at you when spoken to.", "format": "float" }, "pathToAnimController": { "type": "string", "description": "If this dialogue is meant for a character, this is the relative path from the planet to that character's\nCharacterAnimController or SolanumAnimController." }, "position": { "description": "When you enter into dialogue, you will look here.", "$ref": "#/definitions/MVector3" }, "radius": { "type": "number", "description": "Radius of the spherical collision volume where you get the \"talk to\" prompt when looking at. If you use a\nremoteTriggerPosition, you can set this to 0 to make the dialogue only trigger remotely.", "format": "float" }, "remoteTriggerPosition": { "description": "Allows you to trigger dialogue from a distance when you walk into an area.", "$ref": "#/definitions/MVector3" }, "remoteTriggerRadius": { "type": "number", "description": "The radius of the remote trigger volume.", "format": "float" }, "xmlFile": { "type": "string", "description": "Relative path to the xml file defining the dialogue." } } }, "EntryLocationInfo": { "type": "object", "additionalProperties": false, "properties": { "cloaked": { "type": "boolean", "description": "Whether this location is cloaked" }, "id": { "type": "string", "description": "ID of the entry this location relates to" }, "position": { "description": "The position of this entry location", "$ref": "#/definitions/MVector3" } } }, "GeyserInfo": { "type": "object", "additionalProperties": false, "properties": { "position": { "description": "Position of the geyser", "$ref": "#/definitions/MVector3" } } }, "NomaiTextInfo": { "type": "object", "additionalProperties": false, "properties": { "arcInfo": { "type": "array", "description": "Additional information about each arc in the text", "items": { "$ref": "#/definitions/NomaiTextArcInfo" } }, "normal": { "description": "The normal vector for this object. Used for writing on walls and positioning computers.", "$ref": "#/definitions/MVector3" }, "position": { "description": "Position of the root of this text", "$ref": "#/definitions/MVector3" }, "rotation": { "description": "The euler angle rotation of this object. Not required if setting the normal. Computers and cairns will orient\nthemselves to the surface of the planet automatically.", "$ref": "#/definitions/MVector3" }, "seed": { "type": "integer", "description": "The random seed used to pick what the text arcs will look like.", "format": "int32" }, "type": { "description": "The type of object this is.", "$ref": "#/definitions/NomaiTextType" }, "xmlFile": { "type": "string", "description": "The relative path to the xml file for this object." } } }, "NomaiTextArcInfo": { "type": "object", "additionalProperties": false, "properties": { "position": { "description": "The local position of this object on the wall.", "$ref": "#/definitions/MVector2" }, "type": { "description": "The type of text to display.", "$ref": "#/definitions/NomaiTextArcType" }, "zRotation": { "type": "number", "description": "The z euler angle for this arc.", "format": "float", "maximum": 360.0, "minimum": 0.0 } } }, "MVector2": { "type": "object", "additionalProperties": false, "properties": { "X": { "type": "number", "format": "float" }, "Y": { "type": "number", "format": "float" } } }, "NomaiTextArcType": { "type": "integer", "description": "", "x-enumNames": [ "Adult", "Child", "Stranger" ], "enum": [ 0, 1, 2 ] }, "NomaiTextType": { "type": "string", "description": "", "x-enumNames": [ "Wall", "Scroll", "Computer", "Cairn", "Recorder" ], "enum": [ "wall", "scroll", "Computer", "Cairn", "Recorder" ] }, "RaftInfo": { "type": "object", "additionalProperties": false, "properties": { "position": { "description": "Position of the raft", "$ref": "#/definitions/MVector3" } } }, "RevealInfo": { "type": "object", "additionalProperties": false, "properties": { "maxAngle": { "type": "number", "description": "The max view angle (in degrees) the player can see the volume with to unlock the fact (`observe` only)", "format": "float" }, "maxDistance": { "type": "number", "description": "The max distance the user can be away from the volume to reveal the fact (`snapshot` and `observe` only)", "format": "float" }, "position": { "description": "The position to place this volume at", "$ref": "#/definitions/MVector3" }, "radius": { "type": "number", "description": "The radius of this reveal volume", "format": "float" }, "revealOn": { "description": "What needs to be done to the volume to unlock the facts", "$ref": "#/definitions/RevealVolumeType" }, "reveals": { "type": "array", "description": "A list of facts to reveal", "items": { "type": "string" } } } }, "RevealVolumeType": { "type": "string", "description": "", "x-enumNames": [ "Enter", "Observe", "Snapshot" ], "enum": [ "enter", "observe", "snapshot" ] }, "ScatterInfo": { "type": "object", "additionalProperties": false, "properties": { "assetBundle": { "type": "string", "description": "Relative filepath to an asset-bundle\"" }, "count": { "type": "integer", "description": "Number of props to scatter", "format": "int32" }, "offset": { "description": "Offset this prop once it is placed", "$ref": "#/definitions/MVector3" }, "path": { "type": "string", "description": "Either the path in the scene hierarchy of the item to copy or the path to the object in the supplied asset bundle" }, "rotation": { "description": "Rotate this prop once it is placed", "$ref": "#/definitions/MVector3" }, "scale": { "type": "number", "description": "Scale this prop once it is placed", "format": "float" }, "seed": { "type": "integer", "description": "The number used as entropy for scattering the props", "format": "int32" } } }, "ProjectionInfo": { "type": "object", "additionalProperties": false, "properties": { "position": { "description": "The position of this slideshow.", "$ref": "#/definitions/MVector3" }, "reveals": { "type": "array", "description": "The ship log entries revealed after finishing this slide reel.", "items": { "type": "string" } }, "rotation": { "description": "The rotation of this slideshow.", "$ref": "#/definitions/MVector3" }, "slides": { "type": "array", "description": "The list of slides for this object.", "items": { "$ref": "#/definitions/SlideInfo" } }, "type": { "description": "The type of object this is.", "$ref": "#/definitions/SlideShowType" } } }, "SlideInfo": { "type": "object", "additionalProperties": false, "properties": { "ambientLightColor": { "description": "Ambient light colour when viewing this slide.", "$ref": "#/definitions/MColor" }, "ambientLightIntensity": { "type": "number", "description": "Ambient light intensity when viewing this slide.", "format": "float" }, "ambientLightRange": { "type": "number", "description": "Ambient light range when viewing this slide.", "format": "float" }, "backdropAudio": { "type": "string", "description": "The name of the AudioClip that will continuously play while watching these slides" }, "backdropFadeTime": { "type": "number", "description": "The time to fade into the backdrop audio", "format": "float" }, "beatAudio": { "type": "string", "description": "The name of the AudioClip for a one-shot sound when opening the slide." }, "beatDelay": { "type": "number", "description": "The time delay until the one-shot audio", "format": "float" }, "blackFrameDuration": { "type": "number", "description": "Before viewing this slide, there will be a black frame for this many seconds.", "format": "float" }, "imagePath": { "type": "string", "description": "The path to the image file for this slide." }, "playTimeDuration": { "type": "number", "description": "Play-time duration for auto-projector slides.", "format": "float" }, "reveal": { "type": "string", "description": "Ship log entry revealed when viewing this slide" }, "spotIntensityMod": { "type": "number", "description": "Spotlight intensity modifier when viewing this slide.", "format": "float" } } }, "SlideShowType": { "type": "string", "description": "", "x-enumNames": [ "SlideReel", "AutoProjector" ], "enum": [ "slideReel", "autoProjector" ] }, "TornadoInfo": { "type": "object", "additionalProperties": false, "properties": { "downwards": { "type": "boolean", "description": "[DEPRECATED] Should this tornado shoot you down instead of up?" }, "elevation": { "type": "number", "description": "Alternative to setting the position. Will choose a random place at this elevation.", "format": "float" }, "height": { "type": "number", "description": "The height of this tornado.", "format": "float", "default": 30.0 }, "position": { "description": "Position of the tornado", "$ref": "#/definitions/MVector3" }, "tint": { "description": "The colour of the tornado.", "$ref": "#/definitions/MColor" }, "type": { "description": "What type of cyclone should this be? Upwards and downwards are both tornados and will push in that direction.", "$ref": "#/definitions/TornadoType" }, "wanderDegreesX": { "type": "number", "description": "Angular distance from the starting position that it will wander, in terms of the angle around the x-axis.", "format": "float", "default": 45.0 }, "wanderDegreesZ": { "type": "number", "description": "Angular distance from the starting position that it will wander, in terms of the angle around the z-axis.", "format": "float", "default": 45.0 }, "wanderRate": { "type": "number", "description": "The rate at which the tornado will wander around the planet. Set to 0 for it to be stationary. Should be around\n0.1.", "format": "float" } } }, "TornadoType": { "type": "string", "description": "", "x-enumNames": [ "Downwards", "Upwards", "Hurricane" ], "enum": [ "downwards", "upwards", "hurricane" ] }, "VolcanoInfo": { "type": "object", "additionalProperties": false, "properties": { "lavaTint": { "description": "The colour of the meteor's lava.", "$ref": "#/definitions/MColor" }, "maxInterval": { "type": "number", "description": "Maximum time between meteor launches.", "format": "float" }, "maxLaunchSpeed": { "type": "number", "description": "Maximum random speed at which meteors are launched.", "format": "float" }, "minInterval": { "type": "number", "description": "Minimum time between meteor launches.", "format": "float" }, "minLaunchSpeed": { "type": "number", "description": "Minimum random speed at which meteors are launched.", "format": "float" }, "position": { "description": "Position of this volcano", "$ref": "#/definitions/MVector3" }, "scale": { "type": "number", "description": "Scale of this volcano", "format": "float" }, "stoneTint": { "description": "The colour of the meteor's stone.", "$ref": "#/definitions/MColor" } } }, "RingModule": { "type": "object", "additionalProperties": false, "properties": { "Curve": { "type": "array", "description": "Scale this module over time", "items": { "$ref": "#/definitions/TimeValuePair" } }, "fluidType": { "description": "Fluid type for sounds/effects when colliding with this ring.", "$ref": "#/definitions/CloudFluidType2" }, "inclination": { "type": "number", "description": "Angle between the rings and the equatorial plane of the planet.", "format": "float" }, "innerRadius": { "type": "number", "description": "Inner radius of the disk", "format": "float", "minimum": 0.0 }, "longitudeOfAscendingNode": { "type": "number", "description": "Angle defining the point where the rings rise up from the planet's equatorial plane if inclination is nonzero.", "format": "float" }, "outerRadius": { "type": "number", "description": "Outer radius of the disk", "format": "float", "minimum": 0.0 }, "rotationSpeed": { "type": "number", "description": "Allows the rings to rotate.", "format": "float" }, "texture": { "type": "string", "description": "Relative filepath to the texture used for the rings." }, "unlit": { "type": "boolean", "description": "Should this ring be unlit?" } } }, "CloudFluidType2": { "type": "integer", "description": "", "x-enumNames": [ "None", "Water", "Cloud", "Sand", "Plasma" ], "enum": [ 0, 1, 2, 3, 4 ] }, "SandModule": { "type": "object", "additionalProperties": false, "properties": { "Curve": { "type": "array", "description": "Scale this module over time", "items": { "$ref": "#/definitions/TimeValuePair" } }, "Size": { "type": "number", "description": "Size of the sand", "format": "float" }, "Tint": { "description": "Tint of the sand", "$ref": "#/definitions/MColor" } } }, "ShipLogModule": { "type": "object", "additionalProperties": false, "properties": { "curiosities": { "type": "array", "description": "List colors of curiosity entries", "items": { "$ref": "#/definitions/CuriosityColorInfo" } }, "entryPositions": { "type": "array", "description": "Manually layout entries in detective mode", "items": { "$ref": "#/definitions/EntryPositionInfo" } }, "initialReveal": { "type": "array", "description": "A list of fact IDs to reveal when the game starts.", "items": { "type": "string" } }, "mapMode": { "description": "Describe what this planet looks and like in map mode", "$ref": "#/definitions/MapModeInfo" }, "spriteFolder": { "type": "string", "description": "A path to the folder where entry sprites are stored." }, "xmlFile": { "type": "string", "description": "The relative path to the xml file to load ship log entries from." } } }, "CuriosityColorInfo": { "type": "object", "additionalProperties": false, "properties": { "color": { "description": "The color to apply to entries with this curiosity.", "$ref": "#/definitions/MColor" }, "highlightColor": { "description": "The color to apply to highlighted entries with this curiosity.", "$ref": "#/definitions/MColor" }, "id": { "type": "string", "description": "The ID of the curiosity to apply the color to." } } }, "EntryPositionInfo": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "description": "The name of the entry to apply the position to." }, "position": { "description": "Position of the entry", "$ref": "#/definitions/MVector2" } } }, "MapModeInfo": { "type": "object", "additionalProperties": false, "properties": { "details": { "type": "array", "description": "Place non-selectable objects in map mode (like sand funnels).", "items": { "$ref": "#/definitions/ShipLogDetailInfo" } }, "invisibleWhenHidden": { "type": "boolean", "description": "Hide the planet completely if unexplored instead of showing an outline." }, "manualNavigationPosition": { "description": "Specify where this planet is in terms of navigation.", "$ref": "#/definitions/MVector2" }, "manualPosition": { "description": "Manually place this planet at the specified position.", "$ref": "#/definitions/MVector2" }, "offset": { "type": "number", "description": "Extra distance to apply to this object in map mode.", "format": "float" }, "outlineSprite": { "type": "string", "description": "The path to the sprite to show when the planet is unexplored in map mode." }, "remove": { "type": "boolean", "description": "Completely remove this planet (and it's children) from map mode." }, "revealedSprite": { "type": "string", "description": "The path to the sprite to show when the planet is revealed in map mode." }, "scale": { "type": "number", "description": "Scale to apply to the planet in map mode.", "format": "float", "default": 1.0 } } }, "ShipLogDetailInfo": { "type": "object", "additionalProperties": false, "properties": { "invisibleWhenHidden": { "type": "boolean", "description": "Whether to completely hide this detail when the parent AstroBody is unexplored." }, "outlineSprite": { "type": "string", "description": "The sprite to show when the parent AstroBody is rumored/unexplored." }, "position": { "description": "The position (relative to the parent) to place the detail.", "$ref": "#/definitions/MVector2" }, "revealedSprite": { "type": "string", "description": "The sprite to show when the parent AstroBody is revealed." }, "rotation": { "type": "number", "description": "The angle in degrees to rotate the detail.", "format": "float" }, "scale": { "description": "The amount to scale the x and y-axis of the detail by.", "$ref": "#/definitions/MVector2" } } }, "SignalModule": { "type": "object", "additionalProperties": false, "properties": { "signals": { "type": "array", "description": "List of signals to add (Why did xen do it like this)", "items": { "$ref": "#/definitions/SignalInfo" } } } }, "SignalInfo": { "type": "object", "additionalProperties": false, "properties": { "audioClip": { "type": "string", "description": "Name of an existing AudioClip in the game that will player over the signal." }, "audioFilePath": { "type": "string", "description": "Relative filepath to the .wav file to use as the audio. Mutually exclusive with audioClip." }, "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.", "format": "float", "minimum": 0.0 }, "frequency": { "type": "string", "description": "The frequency ID of the signal. The built-in game values are `Default`, `Traveler`, `Quantum`, `EscapePod`,\n`Statue`, `WarpCore`, `HideAndSeek`, and `Radio`. You can also put a custom value." }, "identificationRadius": { "type": "number", "description": "How close the player must get to the signal to identify it. This is when you learn its name.", "format": "float", "default": 10.0, "minimum": 0.0 }, "insideCloak": { "type": "boolean", "description": "Only set to `true` if you are putting this signal inside a cloaking field." }, "name": { "type": "string", "description": "The unique ID of the signal." }, "onlyAudibleToScope": { "type": "boolean", "description": "`false` if the player can hear the signal without equipping the signal-scope.", "default": true }, "position": { "description": "Position of the signal's source", "$ref": "#/definitions/MVector3" }, "reveals": { "type": "string", "description": "A ship log fact to reveal when the signal is identified.", "default": "" }, "sourceRadius": { "type": "number", "description": "Radius of the sphere giving off the signal.", "format": "float", "default": 1.0 } } }, "SingularityModule": { "type": "object", "additionalProperties": false, "properties": { "Curve": { "type": "array", "description": "Scale this module over time", "items": { "$ref": "#/definitions/TimeValuePair" } }, "makeZeroGVolume": { "type": "boolean", "description": "Only for White Holes. Should this white hole repel the player from it.", "default": true }, "pairedSingularity": { "type": "string", "description": "The name of the white hole or black hole that is paired to this one. If you don't set a value, entering will kill\nthe player" }, "position": { "description": "Position of the singularity", "$ref": "#/definitions/MVector3" }, "size": { "type": "number", "description": "Radius of the singularity. Note that this isn't the same as the event horizon, but includes the entire volume that\nhas warped effects in it.", "format": "float", "minimum": 0.0 }, "targetStarSystem": { "type": "string", "description": "If you want a black hole to load a new star system scene, put its name here." }, "type": { "description": "Type of singularity (white hole or black hole)", "$ref": "#/definitions/SingularityType" } } }, "SingularityType": { "type": "string", "description": "", "x-enumNames": [ "BlackHole", "WhiteHole" ], "enum": [ "BlackHole", "WhiteHole" ] }, "SpawnModule": { "type": "object", "additionalProperties": false, "properties": { "playerSpawnPoint": { "description": "If you want the player to spawn on the new body, set a value for this. Press `P` in game with Debug mode on to have\nthe game log the position you're looking at to find a good value for this.", "$ref": "#/definitions/MVector3" }, "playerSpawnRotation": { "description": "Euler angles by which the player will be oriented.", "$ref": "#/definitions/MVector3" }, "shipSpawnPoint": { "description": "Required for the system to be accessible by warp drive.", "$ref": "#/definitions/MVector3" }, "shipSpawnRotation": { "description": "Euler angles by which the ship will be oriented.", "$ref": "#/definitions/MVector3" }, "startWithSuit": { "type": "boolean", "description": "If you spawn on a planet with no oxygen, you probably want to set this to true ;;)" } } }, "StarModule": { "type": "object", "additionalProperties": false, "properties": { "Curve": { "type": "array", "description": "Scale this module over time", "items": { "$ref": "#/definitions/TimeValuePair" } }, "endTint": { "description": "Colour of the star at the end of its life.", "$ref": "#/definitions/MColor" }, "goSupernova": { "type": "boolean", "description": "Should this star explode after 22 minutes?", "default": true }, "hasAtmosphere": { "type": "boolean", "description": "The default sun has its own atmosphere that is different from regular planets. If you want that, set this to\n`true`.", "default": true }, "lightTint": { "description": "Colour of the light given off.", "$ref": "#/definitions/MColor" }, "size": { "type": "number", "description": "Radius of the star.", "format": "float", "default": 2000.0, "minimum": 0.0 }, "solarLuminosity": { "type": "number", "description": "Relative strength of the light compared to the sun.", "format": "float", "default": 1.0, "minimum": 0.0 }, "supernovaTint": { "description": "The tint of the supernova this star creates when it dies.", "$ref": "#/definitions/MColor" }, "tint": { "description": "Colour of the star.", "$ref": "#/definitions/MColor" } } }, "WaterModule": { "type": "object", "additionalProperties": false, "properties": { "Curve": { "type": "array", "description": "Scale this module over time", "items": { "$ref": "#/definitions/TimeValuePair" } }, "size": { "type": "number", "description": "Size of the water sphere", "format": "float" }, "tint": { "description": "Tint of the water", "$ref": "#/definitions/MColor" } } } } }