{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "Star System Schema", "type": "object", "description": "Configuration for a specific star system", "additionalProperties": false, "properties": { "freeMapAngle": { "type": "boolean", "description": "In this system should the player be able to rotate their map camera freely or be stuck above the plane of the solar system?" }, "returnToSolarSystemWhenTooFar": { "type": "boolean", "description": "When well past the furthest orbit, should the player be summoned back to the star?" }, "farClipPlaneOverride": { "type": "number", "description": "An override value for the far clip plane. Allows you to see farther.", "format": "float" }, "canEnterViaWarpDrive": { "type": "boolean", "description": "Whether this system can be warped to via the warp drive. If you set factRequiredForWarp, this will be true.", "default": true }, "destroyStockPlanets": { "type": "boolean", "description": "Do you want a clean slate for this star system? Or will it be a modified version of the original.", "default": true }, "enableTimeLoop": { "type": "boolean", "description": "Should the time loop be enabled in this system?", "default": true }, "factRequiredForWarp": { "type": "string", "description": "The FactID that must be revealed before it can be warped to. Don't set `canEnterViaWarpDrive` to `false` if\nyou're using this, because it will be overwritten." }, "loopDuration": { "type": "number", "description": "The duration of the time loop in minutes. This is the time the sun explodes. End Times plays 85 seconds before this time, and your memories get sent back about 40 seconds after this time.", "format": "float", "default": 22.0 }, "mapRestricted": { "type": "boolean", "description": "Should the player not be able to view the map in this system?" }, "Skybox": { "description": "Customize the skybox for this system", "$ref": "#/definitions/SkyboxModule" }, "startHere": { "type": "boolean", "description": "Set to `true` if you want to spawn here after dying, not Timber Hearth. You can still warp back to the main star system." }, "respawnHere": { "type": "boolean", "description": "Set to `true` if you want the player to stay in this star system if they die in it." }, "GlobalMusic": { "description": "Replace music that plays globally", "$ref": "#/definitions/GlobalMusicModule" }, "Vessel": { "description": "Configure warping to this system with the vessel", "$ref": "#/definitions/VesselModule" }, "entryPositions": { "type": "array", "description": "Manually layout ship log 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" } }, "shipLogStartingPlanetID": { "type": "string", "description": "The planet to focus on when entering the ship log for the first time in a loop. If not set this will be the planet at navtigation position (1, 0)" }, "curiosities": { "type": "array", "description": "List colors of curiosity entries", "items": { "$ref": "#/definitions/CuriosityColorInfo" } }, "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": { "SkyboxModule": { "type": "object", "additionalProperties": false, "properties": { "destroyStarField": { "type": "boolean", "description": "Whether to destroy the star field around the player" }, "useCube": { "type": "boolean", "description": "Whether to use a cube for the skybox instead of a smooth sphere" }, "rightPath": { "type": "string", "description": "Relative filepath to the texture to use for the skybox's positive X direction" }, "leftPath": { "type": "string", "description": "Relative filepath to the texture to use for the skybox's negative X direction" }, "topPath": { "type": "string", "description": "Relative filepath to the texture to use for the skybox's positive Y direction" }, "bottomPath": { "type": "string", "description": "Relative filepath to the texture to use for the skybox's negative Y direction" }, "frontPath": { "type": "string", "description": "Relative filepath to the texture to use for the skybox's positive Z direction" }, "backPath": { "type": "string", "description": "Relative filepath to the texture to use for the skybox's negative Z direction" } } }, "GlobalMusicModule": { "type": "object", "additionalProperties": false, "properties": { "travelAudio": { "type": "string", "description": "The audio that will play when travelling in space. Can be a path to a .wav/.ogg/.mp3 file, or taken from the AudioClip list." }, "endTimesAudio": { "type": "string", "description": "The audio that will play right before the loop ends. Can be a path to a .wav/.ogg/.mp3 file, or taken from the AudioClip list." }, "endTimesDreamAudio": { "type": "string", "description": "The audio that will play right before the loop ends while inside the dreamworld. Can be a path to a .wav/.ogg/.mp3 file, or taken from the AudioClip list." }, "brambleDimensionAudio": { "type": "string", "description": "The audio that will play when travelling through a bramble dimension. Can be a path to a .wav/.ogg/.mp3 file, or taken from the AudioClip list." }, "finalEndTimesIntroAudio": { "type": "string", "description": "The audio that will play when you leave the ash twin project after taking out the advanced warp core. Can be a path to a .wav/.ogg/.mp3 file, or taken from the AudioClip list." }, "finalEndTimesLoopAudio": { "type": "string", "description": "The audio that will loop after the final end times intro. Can be a path to a .wav/.ogg/.mp3 file, or taken from the AudioClip list." }, "finalEndTimesBrambleDimensionAudio": { "type": "string", "description": "The audio that will loop after the final end times intro while inside a bramble dimension. Can be a path to a .wav/.ogg/.mp3 file, or taken from the AudioClip list." } } }, "VesselModule": { "type": "object", "additionalProperties": false, "properties": { "coords": { "description": "Coordinates that the vessel can use to warp to your solar system.", "$ref": "#/definitions/NomaiCoordinates" }, "promptFact": { "type": "string", "description": "A ship log fact which will make a prompt appear showing the coordinates when you're in the Vessel." }, "alwaysPresent": { "type": "boolean", "description": "Whether the vessel should spawn in this system even if it wasn't used to warp to it. This will automatically power on the vessel." }, "spawnOnVessel": { "type": "boolean", "description": "Whether to always spawn the player on the vessel, even if it wasn't used to warp to the system." }, "hasPhysics": { "type": [ "boolean", "null" ], "description": "Whether the vessel should have physics enabled. Defaults to false if parentBody is set, and true otherwise." }, "hasZeroGravityVolume": { "type": [ "boolean", "null" ], "description": "Whether the vessel should have a zero-gravity volume around it. Defaults to false if parentBody is set, and true otherwise." }, "vesselSpawn": { "description": "The location that the vessel will warp to.", "$ref": "#/definitions/VesselInfo" }, "warpExit": { "description": "The location that you will be teleported to when you exit the vessel through the black hole.", "$ref": "#/definitions/WarpExitInfo" } } }, "NomaiCoordinates": { "type": "object", "additionalProperties": false, "properties": { "x": { "type": "array", "maxItems": 6, "minItems": 2, "uniqueItems": true, "items": { "type": "integer", "format": "int32" } }, "y": { "type": "array", "maxItems": 6, "minItems": 2, "uniqueItems": true, "items": { "type": "integer", "format": "int32" } }, "z": { "type": "array", "maxItems": 6, "minItems": 2, "uniqueItems": true, "items": { "type": "integer", "format": "int32" } } } }, "VesselInfo": { "type": "object", "additionalProperties": false, "properties": { "parentBody": { "type": "string", "description": "The name of the planet that will be used with `parentPath`. Must be set if `parentPath` is set." }, "rotation": { "description": "Rotation of the object", "$ref": "#/definitions/MVector3" }, "alignRadial": { "type": [ "boolean", "null" ], "description": "Do we try to automatically align this object to stand upright relative to the body's center? Stacks with rotation.\nDefaults to true for geysers, tornados, and volcanoes, and false for everything else." }, "position": { "description": "Position of the object", "$ref": "#/definitions/MVector3" }, "isRelativeToParent": { "type": "boolean", "description": "Whether the positional and rotational coordinates are relative to parent instead of the root planet 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" } } }, "MVector3": { "type": "object", "additionalProperties": false, "properties": { "x": { "type": "number", "format": "float" }, "y": { "type": "number", "format": "float" }, "z": { "type": "number", "format": "float" } } }, "WarpExitInfo": { "type": "object", "additionalProperties": false, "properties": { "parentBody": { "type": "string", "description": "The name of the planet that will be used with `parentPath`. Must be set if `parentPath` is set." }, "rotation": { "description": "Rotation of the object", "$ref": "#/definitions/MVector3" }, "alignRadial": { "type": [ "boolean", "null" ], "description": "Do we try to automatically align this object to stand upright relative to the body's center? Stacks with rotation.\nDefaults to true for geysers, tornados, and volcanoes, and false for everything else." }, "position": { "description": "Position of the object", "$ref": "#/definitions/MVector3" }, "isRelativeToParent": { "type": "boolean", "description": "Whether the positional and rotational coordinates are relative to parent instead of the root planet 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" }, "attachToVessel": { "type": "boolean", "description": "If set, keeps the warp exit attached to the vessel. Overrides `parentPath`." } } }, "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" } } }, "MVector2": { "type": "object", "additionalProperties": false, "properties": { "x": { "type": "number", "format": "float" }, "y": { "type": "number", "format": "float" } } }, "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." } } }, "MColor": { "type": "object", "additionalProperties": false, "properties": { "r": { "type": "integer", "description": "The red component of this colour from 0-255, higher values will make the colour glow if applicable.", "format": "int32", "maximum": 2147483647.0, "minimum": 0.0 }, "g": { "type": "integer", "description": "The green component of this colour from 0-255, higher values will make the colour glow if applicable.", "format": "int32", "maximum": 2147483647.0, "minimum": 0.0 }, "b": { "type": "integer", "description": "The blue component of this colour from 0-255, higher values will make the colour glow if applicable.", "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 } } } }, "$docs": { "title": "Star System Schema", "description": "Schema for a star system in New Horizons" } }