{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "Celestial Body Schema", "type": "object", "description": "Describes a body to generate", "additionalProperties": false, "required": [ "name" ], "properties": { "name": { "type": "string", "description": "Unique name of your planet", "minLength": 1 }, "starSystem": { "type": "string", "description": "Unique star system containing your planet. If you set this to be a custom solar system remember to add a Spawn module to one of the bodies, or else you can't get to the system.", "default": "SolarSystem" }, "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" }, "Bramble": { "description": "Add bramble nodes to this planet and/or make this planet a bramble dimension", "$ref": "#/definitions/BrambleModule" }, "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?", "default": true }, "Cloak": { "description": "Add a cloaking field to this planet", "$ref": "#/definitions/CloakModule" }, "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?" }, "isStellarRemnant": { "type": "boolean", "description": "Does this config describe a stellar remnant of a custom star defined in another file?" }, "Lava": { "description": "Add lava to this planet", "$ref": "#/definitions/LavaModule" }, "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" }, "ReferenceFrame": { "description": "Reference frame properties of this body", "$ref": "#/definitions/ReferenceFrameModule" }, "removeChildren": { "type": "array", "description": "A list of paths to child GameObjects to destroy on this planet", "items": { "type": "string" } }, "Rings": { "type": "array", "description": "Create rings around the planet", "items": { "$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" }, "ShockEffect": { "description": "Settings for shock effect on planet when the nearest star goes supernova", "$ref": "#/definitions/ShockEffectModule" }, "Spawn": { "description": "Spawn the player at this planet", "$ref": "#/definitions/SpawnModule" }, "Star": { "description": "Make this body a star", "$ref": "#/definitions/StarModule" }, "Water": { "description": "Add water to this planet", "$ref": "#/definitions/WaterModule" }, "Volumes": { "description": "Add various volumes on this body", "$ref": "#/definitions/VolumesModule" }, "extras": { "type": "object", "description": "Extra data that may be used by extension mods", "additionalProperties": { "type": "object" } }, "$schema": { "type": "string", "description": "The schema to validate with" } }, "definitions": { "AsteroidBeltModule": { "type": "object", "additionalProperties": false, "properties": { "amount": { "type": "integer", "description": "Amount of asteroids to create.", "format": "int32", "default": -1, "maximum": 200.0, "minimum": -1.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, "maximum": 255.0, "minimum": 0.0 } } }, "AtmosphereModule": { "type": "object", "additionalProperties": false, "properties": { "atmosphereTint": { "description": "Colour of atmospheric shader on the planet.", "$ref": "#/definitions/MColor" }, "atmosphereSunIntensity": { "type": "number", "description": "How intense should the sun appear in the sky.\nAlso affects general atmosphere brightness.\nDefault value of 1 matches Timber Hearth.\nIf not set, this will be determined based off the distance to the sun.", "format": "float", "minimum": 0.0 }, "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." }, "hasTrees": { "type": "boolean", "description": "Does this planet have trees? This will change the \"Oxygen tank refilled\" to \"Trees detected, oxygen tank refilled\"." }, "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." }, "hasShockLayer": { "type": "boolean", "description": "Whether this atmosphere will have flames appear when your ship goes a certain speed.", "default": true }, "minShockSpeed": { "type": "number", "description": "Minimum speed that your ship can go in the atmosphere where flames will appear.", "format": "float", "default": 100.0 }, "maxShockSpeed": { "type": "number", "description": "Maximum speed that your ship can go in the atmosphere where flames will appear at their brightest.", "format": "float", "default": 300.0 } } }, "CloudInfo": { "type": "object", "additionalProperties": false, "properties": { "cloudsPrefab": { "description": "Should these clouds be based on Giant's Deep's banded clouds, or the Quantum Moon's non-banded clouds?", "$ref": "#/definitions/CloudPrefabType" }, "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.", "default": "cloud", "$ref": "#/definitions/FluidType" }, "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." }, "rotationSpeed": { "type": "number", "description": "How fast the clouds will rotate relative to the planet in degrees per second.", "format": "float", "default": 0.0 } } }, "CloudPrefabType": { "type": "string", "description": "", "x-enumNames": [ "GiantsDeep", "QuantumMoon", "Basic", "Transparent" ], "enum": [ "giantsDeep", "quantumMoon", "basic", "transparent" ] }, "FluidType": { "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." }, "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.", "default": "linear", "$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." }, "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 }, "soiOverride": { "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" }, "zeroGravityRadius": { "type": "number", "description": "Radius of the zero gravity volume. This will make it so no gravity from any planet will affect you. Useful for satellites.", "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" ] }, "BrambleModule": { "type": "object", "additionalProperties": false, "properties": { "dimension": { "description": "Defining this value will make this body a bramble dimension. Leave it null to not do that.", "$ref": "#/definitions/BrambleDimensionInfo" }, "nodes": { "type": "array", "description": "Place nodes/seeds that take you to other bramble dimensions", "items": { "$ref": "#/definitions/BrambleNodeInfo" } } } }, "BrambleDimensionInfo": { "type": "object", "additionalProperties": false, "properties": { "fogTint": { "description": "The color of the fog inside this dimension. \nLeave blank for the default grayish color: (84, 83, 73)", "$ref": "#/definitions/MColor" }, "fogDensity": { "type": "number", "description": "The density of the fog inside this dimension. The default is 6.", "format": "float", "default": 6.0 }, "linksTo": { "type": "string", "description": "The name of the *node* that the player is taken to when exiting this dimension." }, "radius": { "type": "number", "description": "The internal radius (in meters) of the dimension. \nThe default is 750 for the Hub, Escape Pod, and Angler Nest dimensions, and 500 for the others.", "format": "float", "default": 750.0 }, "allowedEntrances": { "type": "array", "description": "An array of integers from 0-5. By default, all entrances are allowed. To force this dimension to warp players in from only one point (like the anglerfish nest dimension in the base game) set this value to [3], [5], or similar. Values of 0-5 only.", "items": { "type": "integer", "format": "int32" } } } }, "BrambleNodeInfo": { "type": "object", "additionalProperties": false, "properties": { "position": { "description": "The physical position of the node", "$ref": "#/definitions/MVector3" }, "rotation": { "description": "The physical rotation of the node", "$ref": "#/definitions/MVector3" }, "scale": { "type": "number", "description": "The physical scale of the node, as a multiplier of the original size. \nNodes are 150m across, seeds are 10m across.", "format": "float", "default": 1.0 }, "linksTo": { "type": "string", "description": "The name of the planet that hosts the dimension this node links to" }, "name": { "type": "string", "description": "The name of this node. Only required if this node should serve as an exit." }, "isSeed": { "type": "boolean", "description": "Set this to true to make this node a seed instead of a node the player can enter", "default": false }, "fogTint": { "description": "The color of the fog inside the node. \nLeave blank for the default yellowish white color: (255, 245, 217, 255)", "$ref": "#/definitions/MColor" }, "lightTint": { "description": "The color of the light from the node. Alpha controls brightness.\nLeave blank for the default white color.", "$ref": "#/definitions/MColor" }, "hasFogLight": { "type": [ "boolean", "null" ], "description": "Should this node have a point of light from afar? \nBy default, nodes will have a foglight, while seeds won't, and neither will if not in a dimension." }, "possibleExits": { "type": "array", "description": "An array of integers from 0-5. By default, all exits are allowed. To force this node to warp players out from only one hole set this value to [3], [5], or similar. Values of 0-5 only.", "items": { "type": "integer", "format": "int32" } } } }, "CloakModule": { "type": "object", "additionalProperties": false, "properties": { "radius": { "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" }, "audio": { "type": "string", "description": "The audio that will play when entering the cloaking field. Can be a path to a .wav/.ogg/.mp3 file, or taken from the AudioClip list." } } }, "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 object 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", "default": "sand", "$ref": "#/definitions/FunnelType" } } }, "TimeValuePair": { "type": "object", "additionalProperties": false, "properties": { "time": { "type": "number", "description": "A specific point in time", "format": "float" }, "value": { "type": "number", "description": "The value for this point in time", "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." }, "resolution": { "type": "integer", "description": "Resolution of the heightmap.\nHigher values means more detail but also more memory/cpu/gpu usage.\nThis value will be 1:1 with the heightmap texture width, but only at the equator.", "format": "int32", "default": 204, "maximum": 2000.0, "minimum": 4.0 }, "emissionMap": { "type": "string", "description": "Relative filepath to the texture used for emission. Optional." }, "emissionColor": { "description": "Color multiplier of the emission texture. Defaults to white.", "$ref": "#/definitions/MColor" } } }, "LavaModule": { "type": "object", "additionalProperties": false, "properties": { "curve": { "type": "array", "description": "Scale this object 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": { "staticPosition": { "description": "Specify this if you want the body to remain stationary at a given location (ie not orbit its parent). Required for Bramble dimensions", "$ref": "#/definitions/MVector3" }, "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? If staticPosition is not set, the initial position\nwill be determined using its orbital parameters." }, "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" } }, "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" } }, "quantumGroups": { "type": "array", "description": "A list of quantum groups that props can be added to. An example of a group would be a list of possible locations for a QuantumSocketedObject.", "items": { "$ref": "#/definitions/QuantumGroupInfo" } }, "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" } }, "singularities": { "type": "array", "description": "Add black/white-holes to this planet", "items": { "$ref": "#/definitions/SingularityModule" } }, "signals": { "type": "array", "description": "Add signalscope signals to this planet", "items": { "$ref": "#/definitions/SignalInfo" } }, "remotes": { "type": "array", "description": "Add projection pools/platforms, whiteboards, and stones to this planet", "items": { "$ref": "#/definitions/RemoteInfo" } } } }, "DetailInfo": { "type": "object", "additionalProperties": false, "properties": { "rename": { "type": "string", "description": "An optional rename of the detail" }, "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" }, "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 }, "quantumGroupID": { "type": "string", "description": "If this value is not null, this prop will be quantum. Assign this field to the id of the quantum group it should be a part of. The group it is assigned to determines what kind of quantum object it is" }, "parentPath": { "type": "string", "description": "The path (not including the root planet object) of the parent of this game object. Optional (will default to the root sector)." }, "keepLoaded": { "type": "boolean", "description": "Should this detail stay loaded even if you're outside the sector (good for very large props)" } } }, "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" }, "range": { "type": "number", "description": "Distance from radius the prompt appears", "format": "float", "default": 2.0 }, "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" }, "offset": { "type": "number", "description": "Vertical offset of the geyser. From 0, the bubbles start at a height of 10, the shaft at 67, and the spout at 97.5.", "format": "float", "default": -97.5 }, "force": { "type": "number", "description": "Force of the geyser on objects", "format": "float", "default": 55.0 }, "activeDuration": { "type": "number", "description": "Time in seconds eruptions last for", "format": "float", "default": 10.0 }, "inactiveDuration": { "type": "number", "description": "Time in seconds between eruptions", "format": "float", "default": 19.0 }, "tint": { "description": "Color of the geyser. Alpha sets the particle density.", "$ref": "#/definitions/MColor" }, "disableBubbles": { "type": "boolean", "description": "Disable the individual particle systems of the geyser" }, "disableShaft": { "type": "boolean", "description": "Disable the individual particle systems of the geyser" }, "disableSpout": { "type": "boolean", "description": "Disable the individual particle systems of the geyser" }, "volume": { "type": "number", "description": "Loudness of the geyser", "format": "float", "default": 0.7 } } }, "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.", "default": "wall", "$ref": "#/definitions/NomaiTextType" }, "location": { "description": "The location of this object. ", "default": "unspecified", "$ref": "#/definitions/NomaiTextLocation" }, "xmlFile": { "type": "string", "description": "The relative path to the xml file for this object." }, "parentPath": { "type": "string", "description": "The relative path from the planet to the parent of this object. Optional (will default to the root sector)." }, "rename": { "type": "string", "description": "An optional rename of this object" } } }, "NomaiTextArcInfo": { "type": "object", "additionalProperties": false, "properties": { "mirror": { "type": "boolean", "description": "Whether to flip the spiral from left-curling to right-curling or vice versa." }, "position": { "description": "The local position of this object on the wall.", "$ref": "#/definitions/MVector2" }, "type": { "description": "The type of text to display.", "default": "adult", "$ref": "#/definitions/NomaiTextArcType" }, "variation": { "type": "integer", "description": "Which variation of the chosen type to place. If not specified, a random variation will be selected based on the seed provided in the parent module.", "format": "int32", "default": -1 }, "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": "string", "description": "", "x-enumNames": [ "Adult", "Child", "Stranger" ], "enum": [ "adult", "child", "stranger" ] }, "NomaiTextType": { "type": "string", "description": "", "x-enumNames": [ "Wall", "Scroll", "Computer", "Cairn", "Recorder", "PreCrashRecorder", "PreCrashComputer", "Trailmarker" ], "enum": [ "wall", "scroll", "computer", "cairn", "recorder", "preCrashRecorder", "preCrashComputer", "trailmarker" ] }, "NomaiTextLocation": { "type": "string", "description": "", "x-enumNames": [ "UNSPECIFIED", "A", "B" ], "enum": [ "unspecified", "a", "b" ] }, "RaftInfo": { "type": "object", "additionalProperties": false, "properties": { "position": { "description": "Position of the raft", "$ref": "#/definitions/MVector3" } } }, "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" }, "minHeight": { "type": [ "null", "number" ], "description": "The lowest height that these object will be placed at (only relevant if there's a heightmap)", "format": "float" }, "maxHeight": { "type": [ "null", "number" ], "description": "The highest height that these objects will be placed at (only relevant if there's a heightmap)", "format": "float" }, "keepLoaded": { "type": "boolean", "description": "Should this detail stay loaded even if you're outside the sector (good for very large props)" } } }, "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.", "default": "slideReel", "$ref": "#/definitions/SlideShowType" }, "parentPath": { "type": "string", "description": "The relative path from the planet to the parent of this slideshow. Optional (will default to the root sector)." } } }, "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", "VisionTorchTarget", "StandingVisionTorch" ], "enum": [ "slideReel", "autoProjector", "visionTorchTarget", "standingVisionTorch" ] }, "QuantumGroupInfo": { "type": "object", "additionalProperties": false, "properties": { "type": { "description": "What type of group this is: does it define a list of states a single quantum object could take or a list of sockets one or more quantum objects could share?", "$ref": "#/definitions/QuantumGroupType" }, "id": { "type": "string", "description": "A unique string used by props (that are marked as quantum) use to refer back to this group" }, "sockets": { "type": "array", "description": "Only required if type is `sockets`. This lists all the possible locations for any props assigned to this group.", "items": { "$ref": "#/definitions/QuantumSocketInfo" } }, "hasEmptyState": { "type": "boolean", "description": "Optional. Only used if type is `states`. If this is true, then the first prop made part of this group will be used to construct a visibility box for an empty game object, which will be considered one of the states." }, "sequential": { "type": "boolean", "description": "Optional. Only used if type is `states`. If this is true, then the states will be presented in order, rather than in a random order" }, "loop": { "type": "boolean", "description": "Optional. Only used if type is `states` and `sequential` is true. If this is false, then after the last state has appeared, the object will no longer change state", "default": true } } }, "QuantumGroupType": { "type": "string", "description": "", "x-enumNames": [ "Sockets", "States", "FailedValidation" ], "enum": [ "sockets", "states", "FailedValidation" ] }, "QuantumSocketInfo": { "type": "object", "additionalProperties": false, "properties": { "position": { "description": "The location of this socket", "$ref": "#/definitions/MVector3" }, "rotation": { "description": "The rotation the quantum object will take if it's occupying this socket", "$ref": "#/definitions/MVector3" }, "probability": { "type": "number", "description": "The probability any props that are part of this group will occupy this socket", "format": "float", "default": 1.0 } } }, "TornadoInfo": { "type": "object", "additionalProperties": false, "properties": { "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.", "default": "upwards", "$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" }, "audioDistance": { "type": "number", "description": "The maximum distance at which you'll hear the sounds of the cyclone. If not set it will scale relative to the size of the cyclone.", "format": "float" }, "fluidType": { "description": "Fluid type for sounds/effects when colliding with this tornado.", "default": "cloud", "$ref": "#/definitions/FluidType" } } }, "TornadoType": { "type": "string", "description": "", "x-enumNames": [ "Upwards", "Downwards", "Hurricane" ], "enum": [ "upwards", "downwards", "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", "default": 20.0 }, "maxLaunchSpeed": { "type": "number", "description": "Maximum random speed at which meteors are launched.", "format": "float", "default": 150.0 }, "minInterval": { "type": "number", "description": "Minimum time between meteor launches.", "format": "float", "default": 5.0 }, "minLaunchSpeed": { "type": "number", "description": "Minimum random speed at which meteors are launched.", "format": "float", "default": 50.0 }, "position": { "description": "Position of this volcano.", "$ref": "#/definitions/MVector3" }, "scale": { "type": "number", "description": "Scale of the meteors.", "format": "float" }, "stoneTint": { "description": "The colour of the meteor's stone.", "$ref": "#/definitions/MColor" } } }, "SingularityModule": { "type": "object", "additionalProperties": false, "properties": { "curve": { "type": "array", "description": "Scale this object 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 uniqueID 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" }, "uniqueID": { "type": "string", "description": "The uniqueID of this white hole or black hole. If not set it will default to the name of the planet" }, "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" ] }, "SignalInfo": { "type": "object", "additionalProperties": false, "properties": { "audio": { "type": "string", "description": "The audio to use. Can be a path to a .wav/.ogg/.mp3 file, or taken from the AudioClip list." }, "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 }, "parentPath": { "type": "string", "description": "The relative path from the planet to the parent of this signal. Optional (will default to the root sector)." } } }, "RemoteInfo": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "description": "The unique remote id" }, "decalPath": { "type": "string", "description": "Icon that the will show on the stone, pedastal of the whiteboard, and pedastal of the platform." }, "whiteboard": { "description": "Whiteboard that the stones can put text onto", "$ref": "#/definitions/WhiteboardInfo" }, "platform": { "description": "Camera platform that the stones can project to and from", "$ref": "#/definitions/PlatformInfo" }, "stones": { "type": "array", "description": "Projection stones", "items": { "$ref": "#/definitions/StoneInfo" } } } }, "WhiteboardInfo": { "type": "object", "additionalProperties": false, "properties": { "nomaiText": { "type": "array", "description": "The text for each stone", "items": { "$ref": "#/definitions/SharedNomaiTextInfo" } }, "position": { "description": "The location of this platform.", "$ref": "#/definitions/MVector3" }, "rotation": { "description": "The rotation of this platform.", "$ref": "#/definitions/MVector3" }, "parentPath": { "type": "string", "description": "The relative path from the planet to the parent of this object. Optional (will default to the root sector)." }, "rename": { "type": "string", "description": "An optional rename of this object" }, "disableWall": { "type": "boolean", "description": "Disable the wall, leaving only the pedestal and text." } } }, "SharedNomaiTextInfo": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "description": "The id of the stone this text will appear for" }, "arcInfo": { "type": "array", "description": "Additional information about each arc in the text", "items": { "$ref": "#/definitions/NomaiTextArcInfo" } }, "seed": { "type": "integer", "description": "The random seed used to pick what the text arcs will look like.", "format": "int32" }, "location": { "description": "The location of this object. ", "default": "unspecified", "$ref": "#/definitions/NomaiTextLocation" }, "xmlFile": { "type": "string", "description": "The relative path to the xml file for this object." }, "rename": { "type": "string", "description": "An optional rename of this object" } } }, "PlatformInfo": { "type": "object", "additionalProperties": false, "properties": { "position": { "description": "The location of this platform.", "$ref": "#/definitions/MVector3" }, "rotation": { "description": "The rotation of this platform.", "$ref": "#/definitions/MVector3" }, "parentPath": { "type": "string", "description": "The relative path from the planet to the parent of this object. Optional (will default to the root sector)." }, "rename": { "type": "string", "description": "An optional rename of this object" }, "reveals": { "type": "string", "description": "A ship log fact to reveal when the platform is connected to.", "default": "" }, "disableStructure": { "type": "boolean", "description": "Disable the structure, leaving only the pedestal." }, "disablePool": { "type": "boolean", "description": "Disable the pool that rises when you place a stone." } } }, "StoneInfo": { "type": "object", "additionalProperties": false, "properties": { "position": { "description": "The location of this stone.", "$ref": "#/definitions/MVector3" }, "rotation": { "description": "The rotation of this stone.", "$ref": "#/definitions/MVector3" }, "parentPath": { "type": "string", "description": "The relative path from the planet to the parent of this object. Optional (will default to the root sector)." }, "rename": { "type": "string", "description": "An optional rename of this object" } } }, "ReferenceFrameModule": { "type": "object", "additionalProperties": false, "properties": { "enabled": { "type": "boolean", "description": "Allows the object to be targeted.", "default": true }, "hideInMap": { "type": "boolean", "description": "Stop the object from being targeted on the map." }, "bracketRadius": { "type": "number", "description": "Radius of the brackets that show up when you target this. Defaults to the sphere of influence.", "format": "float", "default": -1.0 }, "targetWhenClose": { "type": "boolean", "description": "If it should be targetable even when super close." }, "maxTargetDistance": { "type": "number", "description": "The maximum distance that the reference frame can be targeted from. Defaults to 100km and cannot be greater than that.", "format": "float" }, "targetColliderRadius": { "type": "number", "description": "The radius of the sphere around the planet which you can click on to target it. Defaults to twice the sphere of influence.", "format": "float" }, "localPosition": { "description": "Position of the reference frame relative to the object.", "$ref": "#/definitions/MVector3" } } }, "RingModule": { "type": "object", "additionalProperties": false, "properties": { "fluidType": { "description": "Fluid type for sounds/effects when colliding with this ring.", "$ref": "#/definitions/FluidType" }, "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?" }, "scaleCurve": { "type": "array", "description": "Scale rings over time. Optional. Value between 0-1, time is in minutes.", "items": { "$ref": "#/definitions/TimeValuePair" } }, "opacityCurve": { "type": "array", "description": "Fade rings in/out over time. Optional. Value between 0-1, time is in minutes.", "items": { "$ref": "#/definitions/TimeValuePair" } }, "rename": { "type": "string", "description": "An optional rename of this object" } } }, "SandModule": { "type": "object", "additionalProperties": false, "properties": { "curve": { "type": "array", "description": "Scale this object 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": { "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." } } }, "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" } } }, "ShockEffectModule": { "type": "object", "additionalProperties": false, "properties": { "hasSupernovaShockEffect": { "type": "boolean", "description": "Does this planet have a shock effect when the nearest star goes supernova? Automatically disabled for stars, focal points, and stellar remnants.", "default": true }, "radius": { "type": [ "null", "number" ], "description": "Override the calculated radius of the shock effect", "format": "float" }, "assetBundle": { "type": "string", "description": "Asset Bundle that contains the shock effect mesh" }, "meshPath": { "type": "string", "description": "Path to the replacement mesh for the planet's supernova shock effect in the supplied asset bundle" } } }, "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 object over time", "items": { "$ref": "#/definitions/TimeValuePair" } }, "endTint": { "description": "Colour of the star at the end of its lifespan.", "$ref": "#/definitions/MColor" }, "lifespan": { "type": "number", "description": "How long in minutes this star will last until it supernovas.", "format": "float", "default": 22.0 }, "hasStarController": { "type": "boolean", "description": "Should we add a star controller to this body? If you want clouds to work on a binary brown dwarf system, set this to false.", "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. Defaults to yellowish.", "$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 }, "supernovaSize": { "type": "number", "description": "Radius of the supernova. Any planets within this will be destroyed.", "format": "float", "default": 50000.0, "minimum": 0.0 }, "supernovaSpeed": { "type": "number", "description": "Speed of the supernova wall in meters per second.", "format": "float", "default": 1000.0, "minimum": 1.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" }, "starRampTexture": { "type": "string", "description": "Path to the texture to put as the star ramp. Optional." }, "starCollapseRampTexture": { "type": "string", "description": "Path to the texture to put as the star ramp while it is collapsing. Optional." }, "lightRadius": { "type": "number", "description": "How far the light from the star can reach.", "format": "float", "default": 50000.0, "minimum": 0.0 }, "stellarDeathType": { "description": "The type of death your star will have.", "default": "default", "$ref": "#/definitions/StellarDeathType" }, "stellarRemnantType": { "description": "The type of stellar remnant your star will leave behind.", "default": "default", "$ref": "#/definitions/StellarRemnantType" } } }, "StellarDeathType": { "type": "string", "description": "", "x-enumNames": [ "Default", "None", "PlanetaryNebula", "Supernova" ], "enum": [ "default", "none", "planetaryNebula", "supernova" ] }, "StellarRemnantType": { "type": "string", "description": "", "x-enumNames": [ "Default", "WhiteDwarf", "NeutronStar", "Pulsar", "BlackHole", "Custom" ], "enum": [ "default", "whiteDwarf", "neutronStar", "pulsar", "blackHole", "custom" ] }, "WaterModule": { "type": "object", "additionalProperties": false, "properties": { "curve": { "type": "array", "description": "Scale this object 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" } } }, "VolumesModule": { "type": "object", "additionalProperties": false, "properties": { "audioVolumes": { "type": "array", "description": "Add audio volumes to this planet.", "items": { "$ref": "#/definitions/AudioVolumeInfo" } }, "hazardVolumes": { "type": "array", "description": "Add hazard volumes to this planet.", "items": { "$ref": "#/definitions/HazardVolumeInfo" } }, "interferenceVolumes": { "type": "array", "description": "Add interference volumes to this planet.", "items": { "$ref": "#/definitions/VolumeInfo" } }, "insulatingVolumes": { "type": "array", "description": "Add insulating volumes to this planet. These will stop electricty hazard volumes from affecting you (just like the jellyfish).", "items": { "$ref": "#/definitions/VolumeInfo" } }, "mapRestrictionVolumes": { "type": "array", "description": "Add map restriction volumes to this planet.", "items": { "$ref": "#/definitions/VolumeInfo" } }, "notificationVolumes": { "type": "array", "description": "Add notification volumes to this planet.", "items": { "$ref": "#/definitions/NotificationVolumeInfo" } }, "revealVolumes": { "type": "array", "description": "Add triggers that reveal parts of the ship log on this planet.", "items": { "$ref": "#/definitions/RevealVolumeInfo" } }, "reverbVolumes": { "type": "array", "description": "Add reverb volumes to this planet. Great for echoes in caves.", "items": { "$ref": "#/definitions/VolumeInfo" } } } }, "AudioVolumeInfo": { "type": "object", "additionalProperties": false, "properties": { "position": { "description": "The location of this volume. Optional (will default to 0,0,0).", "$ref": "#/definitions/MVector3" }, "radius": { "type": "number", "description": "The radius of this volume.", "format": "float" }, "parentPath": { "type": "string", "description": "The relative path from the planet to the parent of this object. Optional (will default to the root sector)." }, "rename": { "type": "string", "description": "An optional rename of this volume." }, "audio": { "type": "string", "description": "The audio to use. Can be a path to a .wav/.ogg/.mp3 file, or taken from the AudioClip list." }, "track": { "description": "The audio track of this audio volume", "default": "environment", "$ref": "#/definitions/AudioMixerTrackName" }, "loop": { "type": "boolean", "description": "Whether to loop this audio while in this audio volume or just play it once", "default": true } } }, "AudioMixerTrackName": { "type": "string", "description": "", "x-enumNames": [ "Undefined", "Menu", "Music", "Environment", "Environment_Unfiltered", "EndTimes_SFX", "Signal", "Death", "Player", "Player_External", "Ship", "Map", "EndTimes_Music", "MuffleWhileRafting", "MuffleIndoors", "SlideReelMusic" ], "enum": [ "undefined", "menu", "music", "environment", "environmentUnfiltered", "endTimesSfx", "signal", "death", "player", "playerExternal", "ship", "map", "endTimesMusic", "muffleWhileRafting", "muffleIndoors", "slideReelMusic" ] }, "HazardVolumeInfo": { "type": "object", "additionalProperties": false, "properties": { "position": { "description": "The location of this volume. Optional (will default to 0,0,0).", "$ref": "#/definitions/MVector3" }, "radius": { "type": "number", "description": "The radius of this volume.", "format": "float" }, "parentPath": { "type": "string", "description": "The relative path from the planet to the parent of this object. Optional (will default to the root sector)." }, "rename": { "type": "string", "description": "An optional rename of this volume." }, "type": { "description": "The type of hazard for this volume.", "default": "general", "$ref": "#/definitions/HazardType" }, "damagePerSecond": { "type": "number", "description": "The amount of damage you will take per second while inside this volume.", "format": "float", "default": 10.0 }, "firstContactDamageType": { "description": "The type of damage you will take when you first touch this volume.", "default": "impact", "$ref": "#/definitions/InstantDamageType" }, "firstContactDamage": { "type": "number", "description": "The amount of damage you will take when you first touch this volume.", "format": "float" } } }, "HazardType": { "type": "string", "description": "", "x-enumNames": [ "NONE", "GENERAL", "DARKMATTER", "HEAT", "FIRE", "SANDFALL", "ELECTRICITY", "RAPIDS" ], "enum": [ "none", "general", "ghostMatter", "heat", "fire", "sandfall", "electricity", "rapids" ] }, "InstantDamageType": { "type": "string", "description": "", "x-enumNames": [ "Impact", "Puncture", "Electrical" ], "enum": [ "impact", "puncture", "electrical" ] }, "VolumeInfo": { "type": "object", "additionalProperties": false, "properties": { "position": { "description": "The location of this volume. Optional (will default to 0,0,0).", "$ref": "#/definitions/MVector3" }, "radius": { "type": "number", "description": "The radius of this volume.", "format": "float" }, "parentPath": { "type": "string", "description": "The relative path from the planet to the parent of this object. Optional (will default to the root sector)." }, "rename": { "type": "string", "description": "An optional rename of this volume." } } }, "NotificationVolumeInfo": { "type": "object", "additionalProperties": false, "properties": { "position": { "description": "The location of this volume. Optional (will default to 0,0,0).", "$ref": "#/definitions/MVector3" }, "radius": { "type": "number", "description": "The radius of this volume.", "format": "float" }, "parentPath": { "type": "string", "description": "The relative path from the planet to the parent of this object. Optional (will default to the root sector)." }, "rename": { "type": "string", "description": "An optional rename of this volume." }, "target": { "description": "What the notification will show for.", "default": "all", "$ref": "#/definitions/NotificationTarget" }, "entryNotification": { "description": "The notification that will play when you enter this volume.", "$ref": "#/definitions/NotificationInfo" }, "exitNotification": { "description": "The notification that will play when you exit this volume.", "$ref": "#/definitions/NotificationInfo" } } }, "NotificationTarget": { "type": "string", "description": "", "x-enumNames": [ "All", "Ship", "Player" ], "enum": [ "all", "ship", "player" ] }, "NotificationInfo": { "type": "object", "additionalProperties": false, "properties": { "displayMessage": { "type": "string", "description": "The message that will be displayed." }, "duration": { "type": "number", "description": "The duration this notification will be displayed.", "format": "float", "default": 5.0 } } }, "RevealVolumeInfo": { "type": "object", "additionalProperties": false, "properties": { "position": { "description": "The location of this volume. Optional (will default to 0,0,0).", "$ref": "#/definitions/MVector3" }, "radius": { "type": "number", "description": "The radius of this volume.", "format": "float" }, "parentPath": { "type": "string", "description": "The relative path from the planet to the parent of this object. Optional (will default to the root sector)." }, "rename": { "type": "string", "description": "An optional rename of this volume." }, "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" }, "revealOn": { "description": "What needs to be done to the volume to unlock the facts", "default": "enter", "$ref": "#/definitions/RevealVolumeType" }, "reveals": { "type": "array", "description": "A list of facts to reveal", "items": { "type": "string" } }, "achievementID": { "type": "string", "description": "An achievement to unlock. Optional." } } }, "RevealVolumeType": { "type": "string", "description": "", "x-enumNames": [ "Enter", "Observe", "Snapshot" ], "enum": [ "enter", "observe", "snapshot" ] } }, "$docs": { "title": "Celestial Body Schema", "description": "Schema for a celestial body in New Horizons" } }