{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://salvageunion.com/schemas/chassis.schema.json","title":"chassis","description":"Mech chassis definitions in Salvage Union","type":"array","items":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"asset_url":{"type":"string","format":"uri","description":"URL to an image asset for this entity"},"content":{"type":"array","items":{"description":"Block of structured content for rendering (paragraph, heading, list item, etc.)","type":"object","properties":{"type":{"default":"paragraph","type":"string","enum":["paragraph","heading","list-item","label","datavalues","hint","flavor"],"description":"Type of content block for rendering structured text"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"object","properties":{"label":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Display label for this data value"},"value":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"The data value"},"type":{"type":"string","description":"Type classification for this data value"}},"required":["label"],"additionalProperties":false,"description":"A data value with label, optional value, and optional type"},"description":"Array of data values when type is 'datavalues'"}]},"label":{"type":"string"},"level":{"type":"integer","minimum":1,"maximum":6},"items":{"type":"array","items":{"type":"object","properties":{"type":{"default":"paragraph","type":"string","enum":["paragraph","heading","list-item","label","datavalues","hint","flavor"],"description":"Type of content block for rendering structured text"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"object","properties":{"label":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Display label for this data value"},"value":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"The data value"},"type":{"type":"string","description":"Type classification for this data value"}},"required":["label"],"additionalProperties":false,"description":"A data value with label, optional value, and optional type"},"description":"Array of data values when type is 'datavalues'"}]},"label":{"type":"string"},"level":{"type":"integer","minimum":1,"maximum":6}},"required":["type"],"additionalProperties":false}}},"required":["type"],"additionalProperties":false},"description":"Descriptive content blocks for this entity"},"id":{"type":"string","description":"Unique identifier for this entity"},"indexable":{"default":true,"description":"Whether this entity appears in search results","type":"boolean"},"blackMarket":{"default":false,"description":"Whether this entity is only available on the black market","type":"boolean"},"name":{"type":"string","minLength":1,"description":"Display name of this entity"},"source":{"type":"string","enum":["Salvage Union Workshop Manual","Mech Monday","We Were Here First!","Rainmaker","False Flag"],"description":"Source book this entity appears in"},"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"description":"Page number in the source book"},"structurePoints":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Structure points (mech health)"},"energyPoints":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Energy points for powering systems"},"heatCapacity":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Maximum heat before overheating"},"systemSlots":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of system slots available"},"moduleSlots":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of module slots available"},"cargoCapacity":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Cargo carrying capacity"},"techLevel":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"string","const":"B"},{"type":"string","const":"N"}],"description":"Technology level of the item or entity (number, 'B' for Bio, or 'N' for Nanite)"},"salvageValue":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Scrap value when salvaged"},"chassisAbilities":{"type":"array","items":{"type":"string"},"description":"Array of chassis ability names that reference actions.json"},"patterns":{"type":"array","items":{"description":"A preset mech loadout defining systems and modules for a chassis","type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Name of this mech pattern"},"content":{"type":"array","items":{"description":"Block of structured content for rendering (paragraph, heading, list item, etc.)","type":"object","properties":{"type":{"default":"paragraph","type":"string","enum":["paragraph","heading","list-item","label","datavalues","hint","flavor"],"description":"Type of content block for rendering structured text"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"object","properties":{"label":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Display label for this data value"},"value":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"The data value"},"type":{"type":"string","description":"Type classification for this data value"}},"required":["label"],"additionalProperties":false,"description":"A data value with label, optional value, and optional type"},"description":"Array of data values when type is 'datavalues'"}]},"label":{"type":"string"},"level":{"type":"integer","minimum":1,"maximum":6},"items":{"type":"array","items":{"type":"object","properties":{"type":{"default":"paragraph","type":"string","enum":["paragraph","heading","list-item","label","datavalues","hint","flavor"],"description":"Type of content block for rendering structured text"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"object","properties":{"label":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Display label for this data value"},"value":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"The data value"},"type":{"type":"string","description":"Type classification for this data value"}},"required":["label"],"additionalProperties":false,"description":"A data value with label, optional value, and optional type"},"description":"Array of data values when type is 'datavalues'"}]},"label":{"type":"string"},"level":{"type":"integer","minimum":1,"maximum":6}},"required":["type"],"additionalProperties":false}}},"required":["type"],"additionalProperties":false},"description":"Descriptive content for this pattern"},"legalStarting":{"type":"boolean","description":"Whether this is a valid starting pattern"},"source":{"type":"string","enum":["Salvage Union Workshop Manual","Mech Monday","We Were Here First!","Rainmaker","False Flag"],"description":"Source book for this pattern"},"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"description":"Page number in the source book"},"systems":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Name of the system or module"},"count":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of this system/module in the pattern"},"preselectedChoices":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","minLength":1,"description":"Name of the entry"},"description":"Preselected choices for this system or module, keyed by choice ID"}},"required":["name"],"additionalProperties":false,"description":"System or module configuration within a pattern"},"description":"Systems included in this pattern"},"modules":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Name of the system or module"},"count":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of this system/module in the pattern"},"preselectedChoices":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","minLength":1,"description":"Name of the entry"},"description":"Preselected choices for this system or module, keyed by choice ID"}},"required":["name"],"additionalProperties":false,"description":"System or module configuration within a pattern"},"description":"Modules included in this pattern"},"drones":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Name of this drone configuration"},"systems":{"type":"array","items":{"type":"string"},"description":"System names installed on this drone"},"modules":{"type":"array","items":{"type":"string"},"description":"Module names installed on this drone"}},"required":["name","systems","modules"],"additionalProperties":false,"description":"Named drone configuration for patterns with multiple drones"},"description":"Named drone configurations for this pattern"}},"required":["name","systems","modules"],"additionalProperties":false},"description":"Available mech patterns for this chassis"},"npc":{"description":"NPC crew member associated with this chassis","type":"object","properties":{"position":{"type":"string","minLength":1,"description":"Role or position title of this NPC"},"content":{"type":"array","items":{"description":"Block of structured content for rendering (paragraph, heading, list item, etc.)","type":"object","properties":{"type":{"default":"paragraph","type":"string","enum":["paragraph","heading","list-item","label","datavalues","hint","flavor"],"description":"Type of content block for rendering structured text"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"object","properties":{"label":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Display label for this data value"},"value":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"The data value"},"type":{"type":"string","description":"Type classification for this data value"}},"required":["label"],"additionalProperties":false,"description":"A data value with label, optional value, and optional type"},"description":"Array of data values when type is 'datavalues'"}]},"label":{"type":"string"},"level":{"type":"integer","minimum":1,"maximum":6},"items":{"type":"array","items":{"type":"object","properties":{"type":{"default":"paragraph","type":"string","enum":["paragraph","heading","list-item","label","datavalues","hint","flavor"],"description":"Type of content block for rendering structured text"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"object","properties":{"label":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Display label for this data value"},"value":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"The data value"},"type":{"type":"string","description":"Type classification for this data value"}},"required":["label"],"additionalProperties":false,"description":"A data value with label, optional value, and optional type"},"description":"Array of data values when type is 'datavalues'"}]},"label":{"type":"string"},"level":{"type":"integer","minimum":1,"maximum":6}},"required":["type"],"additionalProperties":false}}},"required":["type"],"additionalProperties":false},"description":"Descriptive content about this NPC"},"hitPoints":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Hit points of this NPC"},"choices":{"type":"array","items":{"description":"A player-facing choice with options to select from","type":"object","properties":{"id":{"type":"string","description":"Unique identifier for this choice"},"name":{"type":"string","minLength":1,"description":"Display name for this choice"},"choiceType":{"type":"string","enum":["permanent","session","freeform"],"description":"permanent: recorded on sheet; session: made during gameplay; freeform: arbitrary text"},"content":{"type":"array","items":{"description":"Block of structured content for rendering (paragraph, heading, list item, etc.)","type":"object","properties":{"type":{"default":"paragraph","type":"string","enum":["paragraph","heading","list-item","label","datavalues","hint","flavor"],"description":"Type of content block for rendering structured text"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"object","properties":{"label":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Display label for this data value"},"value":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"The data value"},"type":{"type":"string","description":"Type classification for this data value"}},"required":["label"],"additionalProperties":false,"description":"A data value with label, optional value, and optional type"},"description":"Array of data values when type is 'datavalues'"}]},"label":{"type":"string"},"level":{"type":"integer","minimum":1,"maximum":6},"items":{"type":"array","items":{"type":"object","properties":{"type":{"default":"paragraph","type":"string","enum":["paragraph","heading","list-item","label","datavalues","hint","flavor"],"description":"Type of content block for rendering structured text"},"value":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"object","properties":{"label":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Display label for this data value"},"value":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"The data value"},"type":{"type":"string","description":"Type classification for this data value"}},"required":["label"],"additionalProperties":false,"description":"A data value with label, optional value, and optional type"},"description":"Array of data values when type is 'datavalues'"}]},"label":{"type":"string"},"level":{"type":"integer","minimum":1,"maximum":6}},"required":["type"],"additionalProperties":false}}},"required":["type"],"additionalProperties":false},"description":"Descriptive content for this choice"},"rollTable":{"type":"string","description":"Roll table name to use for random selection"},"schemaEntities":{"type":"array","items":{"type":"string"},"description":"Specific entity names to choose from"},"schema":{"type":"array","items":{"type":"string","enum":["abilities","ability-tree-requirements","bio-titans","chassis","classes","crawler-bays","crawler-tech-levels","crawlers","creatures","distances","drones","equipment","guides","keywords","factions","meld","modules","npcs","roll-tables","sources","squads","tech-levels","systems","traits","vehicles"],"description":"Name of the entity schema collection"},"description":"Schema collections to choose from"},"customSystemOptions":{"type":"array","items":{"type":"object","properties":{"structurePoints":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Structure points (mech health)"},"energyPoints":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Energy points for powering systems"},"heatCapacity":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Maximum heat before overheating"},"systemSlots":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of system slots available"},"moduleSlots":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of module slots available"},"cargoCapacity":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Cargo carrying capacity"},"techLevel":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"string","const":"B"},{"type":"string","const":"N"}],"description":"Technology level of the item or entity (number, 'B' for Bio, or 'N' for Nanite)"},"salvageValue":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Scrap value when salvaged"},"slotsRequired":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of slots this system/module occupies"},"recommended":{"type":"boolean","description":"Whether this is a recommended starting system/module"},"count":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of this system/module installed"},"actions":{"type":"array","items":{"type":"string"},"description":"Action names this system/module provides"}},"required":["techLevel","salvageValue","slotsRequired","actions"],"additionalProperties":false,"description":"A system or module that can be installed on a mech"},"description":"Custom system/module options for this choice"},"setIndexable":{"type":"boolean","description":"Whether to update indexable flag based on this choice"},"multiSelect":{"type":"boolean","description":"If true, this choice can be selected multiple times"},"choiceOptions":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"},"description":{"type":"string"}},"required":["label","value"],"additionalProperties":false},"description":"Structured options for this choice (similar to actionOptions)"},"constraints":{"type":"object","properties":{"field":{"type":"string"},"min":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Non-negative integer (0 or greater)"},"max":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Non-negative integer (0 or greater)"},"scalesWithField":{"type":"string","description":"Dynamic max: resolve this field name from the parent entity to use as max"}},"additionalProperties":false,"description":"Constraints on selection count"}},"required":["id","name"],"additionalProperties":false},"description":"Choices available when interacting with this NPC"}},"required":["position","hitPoints"],"additionalProperties":false}},"required":["id","indexable","blackMarket","name","source","page","chassisAbilities","patterns"],"additionalProperties":false,"description":"Mech chassis definitions in Salvage Union"}}