Skip to content
John A edited this page Oct 19, 2025 · 3 revisions

Overview

Frame data can be stored as a library in frames.json or in License Collection Format.

Definition

frames.json

{
  "id": string,
  "name": string,
  "source": string,
  "license_id": string,
  "license_level": number,
  "mechtype": string[],
  "description": string,
  "mounts": MountType[],
  "stats": {
    "size": number,
    "structure": number,
    "stress": number,
    "armor": number,
    "hp": number,
    "evasion": number,
    "edef": number,
    "heatcap": number,
    "repcap": number,
    "sensor_range": number,
    "tech_attack": number,
    "save": number,
    "speed": number,
    "sp": number
  },
  "traits": IFrameTraitData[],
  "core_system": ICoreSystemData,
  "specialty"?: boolean | IPrerequisite
  "variant"?: string,
  "image_url"?: string
  "y_pos"?: number, // used for vertical alignment of the mech in banner views (like in the new mech selector)
},

Required Fields

id

Internal identifier. This must be globally unique. See Item ID Guidelines for more information.

name

The display name of the item

source

The source field must match a Manufacturer ID.

license_id

This is only required if variant = true. This links a variant frame to the main license frame. This must match the id of the target frame.

license_level

The license_level represents the license level of at which the equipment is unlocked for use. This is a value from 0-3, with 0 being available to all PCs at LL0.

mechtype

An array of one or more strings denoting mech type. This is a UI element/player hint that does not have a mechanical effect, though at least one is required.

description

Flavor text for Compendium and expanded item cards. HTML syntax is allowed.

mounts

An array of one or more MounType strings:

MountType

String Description
Main Main Mount
Heavy Heavy Mount
Aux/Aux Aux/Aux Mount
Aux Aux Mount
Main/Aux Main/Aux Mount
Flex Flex Mount
Integrated Integrated Mount

stats

All stats must be positive integers, with the exception of size.

Frame sizes can be any positive integer or 0.5, which will be correctly rendered as 1/2 in the app. No other fractional size is recognized. All other number values must be integers.

traits

An array of IFrameTraitData. See Frame Traits for more information.

core_system

An ICoreSystemData object. See Core Systems for more information.

Optional Fields

specialty

The specialty field is used to denote nonstandard, frameless licenses in homebrew, expansions, etc. This is a boolean that, if true, will hide the associated frame and mark the license with a "Specialty" flag, but may also take an IPrerequisite object:

{
  "source": string,
  "min_rank": number
  "cumulative"?: boolean
}

Where source is a Manufacturer ID and min_rank indicates the minimum rank of one of that Manufacturer's licenses the Pilot must have unlocked to get access to this license.

If the cumulative flag is set, the Pilot must have at least a min_rank of that manufacturer's licenses, similar to how CORE Bonuses are gated.

For further information, see Kai Tave's "Field Guide to Suldan" supplement.

variant

The ID of the frame for which this item is a variant. This is only required if the frame is a variant of another frame. This should match the id of the target frame.

This may also be the name of the target frame, for compatibility with older data files, but using the id is preferred.

img_url

A remotely hosted image URL for default frame artwork.

y_pos

A vertical offset for frame artwork in COMP/CON's frame banner UI

Examples

from lancer-data/lib/frames.json

{
  "id": "mf_deaths_head",
  "license_level": 2,
  "source": "SSC",
  "name": "Death’s Head",
  "mechtype": ["Artillery"],
  "y_pos": 40,
  "description": "The Death’s Head is Smith-Shimano’s answer to the need for a chassis solution to long-range, low-splash strike actions. Sacrificing raw hull strength for peerless stability and alacrity, the Death’s Head is a maneuverable fire-support platform able to avoid incoming fire while maintaining a near-perfect lock on its targets. Its unique hexapedal form allows for rapid, low-profile movement in all directions.<br>As an aggressive and line-focused chassis, the Death’s Head is one of the most popular models for Union Navy and Union Department of Justice and Human Rights officers. It is a combat chassis through and through; as the Death’s Head is a chassis produced under SSC’s BELLA CIAO line, there is no civilian analog.",
  "mounts": ["Main/Aux", "Heavy"],
  "stats": {
    "size": 1,
    "structure": 4,
    "stress": 4,
    "armor": 0,
    "hp": 8,
    "evasion": 10,
    "edef": 8,
    "heatcap": 6,
    "repcap": 2,
    "sensor_range": 20,
    "tech_attack": 0,
    "save": 10,
    "speed": 5,
    "sp": 6
  },
  "traits": [
    {
      "name": "Neurolink",
      "description": "The Death’s Head may reroll its first ranged attack each round, but must keep the second result.",
      "active_effects": [
        {
          "name": "Neurolink",
          "frequency": "1/round",
          "condition": "You make a ranged attack",
          "detail": "You may reroll your first ranged attack each round, but must keep the second result."
        }
      ]
    },
    {
      "name": "Perfected Targeting",
      "description": "The Death’s Head gains an additional +1 to all ranged attack rolls.",
      "bonuses": [
        {
          "id": "attack",
          "val": 1,
          "weapon_types": ["Rifle", "Cannon", "Launcher", "CQB", "Nexus"]
        }
      ]
    }
  ],
  "core_system": {
    "name": "Precognitive Targeting",
    "description": "Precognition is the next step in human/AI interaction. Using a neural bridge, SSC’s precognitive targeting system allows pilots to learn constantly and unconsciously from data gathered in the field, equipping them to read situations before they develop. Precognition is highly experimental and the precise mechanisms unknown even to the designers, so SSC recommends limited, monitored use of this system.",
    "active_name": "Neural Shunt",
    "active_effect": "For the rest of this scene, you gain the Mark for Death action.",
    "active_effects": [
      {
        "name": "Mark for Death Focus",
        "detail": "Deal bonus damage to your Marked for Death target based on weapon size (aux: 1d6, main: 2d6, heavy or larger: 3d6) on ranged critical hits against them, as long as they aren’t in cover or within range 5.",
        "condition": "You are focusing on a target (Marked for Death)"
      }
    ],
    "active_actions": [
      {
        "name": "Mark for Death",
        "activation": "Full",
        "detail": "Choose a character within range 30 but further than range 5 to focus on; while focusing, you become Immobilized and can’t take reactions, but you deal bonus damage based on weapon size (aux: 1d6, main: 2d6, heavy or larger: 3d6) on ranged critical hits against them, as long as they aren’t in cover or within range 5.<br>You may only focus on one character at a time. As a protocol, you may cease focusing on a target.",
        "range": [
          {
            "type": "Burst",
            "val": 30,
            "min": 5
          }
        ],
        "add_status": [
          {
            "id": "immobilized",
            "target": "self"
          }
        ]
      },
      {
        "name": "Cease Focus",
        "activation": "Protocol",
        "detail": "End your focus on a <b>Mark for Death</b> target."
      }
    ],
    "active_synergies": [
      {
        "locations": ["attack"],
        "detail": "While focused (Marked for Death) on a target, you deal bonus damage based on weapon size (aux: 1d6, main: 2d6, heavy or larger: 3d6) on ranged critical hits against them, as long as they aren’t in cover or within range 5."
      }
    ],
    "use": "Encounter",
    "activation": "Protocol"
  },
  "data_type": "frame",
  "image_url": "https://d2c79xe1p61csc.cloudfront.net/frames/mf_deaths_head.png",
  "license_id": "mf_deaths_head"
}

Clone this wiki locally