Skip to content

List Import Format

Matan Lurey edited this page Oct 11, 2021 · 3 revisions

The mod supports importing lists from external list builders that conform to the following JSON schema:

{
  "author": {
    "description": "What tool was used to generate this format, i.e. Tabletop Admiral or Legion HQ",
    "type": "string"
  },
  "points": { "type": "integer" },
  "armyFaction": {
    "type": "string",
    "pattern": "^rebel|imperial|separatist|republic$"
  },
  "commandCards": {
    "type": "array",
    "items": { "type": "string" }
  },
  "contingencies": {
    "type": "array",
    "items": { "type": "string" }
  },
  "units": {
    "type": "array",
    "items": {
      "type": "object",
      "properties": {
        "name": { "type": "string" },
        "upgrades": { "type": "array", "items": { "type": "string" } },
        "loadout": { "type": "array", "items": { "type": "string" } }
      }
    }
  },
  "battlefieldDeck": {
    "type": "object",
    "properties": {
      "scenario": {
        "enum": ["standard", "skirmish", "scenario", "community"]
      },
      "conditions": { "type": "array", "items": { "type": "string" } },
      "deployment": { "type": "array", "items": { "type": "string" } },
      "objective": { "type": "array", "items": { "type": "string" } }
    }
  }
}

Unit and Upgrade Naming Convention

NOTE: You can download and reference cards.json to validate naming.

All card names must conform to these rules:

  • The string must match the title exactly as it appears on FFG's cards
  • Units that have a subtitle must concatenate that subtitle

Examples:

  • Commander Luke => "Luke Skywalker Hero of the Rebellion"
  • Operative Luke => "Luke Skywalker Jedi Knight"
  • Rebel Commandos (full-size unit) => "Rebel Commandos"
  • Rebel Commandos (strike team) => "Rebel Commandos Strike Team"
  • Mandalorians => "Mandalorian Resistance"
  • Clan Wren => "Mandalorian Resistance Clan Wren"

Flippable Upgrade Cards

Flippable cards should use the following strings as their names:

  • Offensive Stance / Defensive Stance => Offensive Stance
  • A-180 Pistol Config / A-180 Rifle Config => A-180 Config
  • A-300 Short Range Config / A-300 Long Range Config => A-300 Config
  • A280-CFE Sniper Config / A280-CFE Pistol Config => A280-CFE Config
  • E11-D Grenade Launcher Config / E11-D-Focused Fire Config => E11-D Config
  • J-19 Bo-rifle Staff / J-19 Bo-rifle Blaster => J-19 Bo-rifle

Additional Notes

Counterparts

  • For intents of the mod, Counterparts should be added as an upgrade of their parent unit
  • Naming must follow the same convention shown above (e.g. (e.g., C-3PO => "C-3PO Human Cyborg Relations")
  • Upgrades attached to Counterparts should be attached as an upgrade of their parent unit

Loadout

  • Units with Loadout should list the set-aside upgrades in a separate array ("loadout": [...]) from the primary "upgrades".

Flawed

  • Units with the Flawed keyword should include their flaw card in the unit's upgrades list.

Example List

The following is an example of JSON text that will successfully import into the mod:

{
  "author": "My Favorite List Builder",
  "points": 430,
  "armyFaction": "rebel",
  "commandCards": [
    "Ambush",
    "Son of Skywalker",
    "Push",
    "My Ally is the Force",
    "Assault",
    "Return of the Jedi",
    "Standing Orders"
  ],
  "contingencies": [],
  "units": [
    {
      "name": "Luke Skywalker Hero of the Rebellion",
      "upgrades": ["Force Push", "Recon Intel"]
    },
    {
      "name": "Cassian Andor Capable Intelligence Agent",
      "upgrades": ["Offensive Push", "Duck and Cover"],
      "loadout": ["Situational Awareness", "Tenacity"]
    },
    {
      "name": "R2-D2 Hero of a Thousand Devices",
      "upgrades": ["C-3PO Human Cyborg Relations"]
    },
    { "name": "Rebel Troopers", "upgrades": ["Z-6 Trooper"] },
    { "name": "Rebel Troopers", "upgrades": ["Z-6 Trooper"] },
    { "name": "Rebel Troopers", "upgrades": [] }
  ],
  "battlefieldDeck": {
    "conditions": [
      "Clear Conditions",
      "Hostile Environment",
      "Limited Visibility",
      "Minefield"
    ],
    "deployment": [
      "Advanced Positions",
      "Battlelines",
      "Major Offensive",
      "Hemmed In"
    ],
    "objective": [
      "Breakthrough",
      "Intercept the Transmissions",
      "Key Positions",
      "Recover the Supplies"
    ]
  }
}

The following is an example of a list using the loadout mechanic:

{
  "author": "Legion HQ",
  "points": 152,
  "armyFaction": "imperial",
  "commandCards": [],
  "contingencies": [],
  "units": [
    {
      "name": "Iden Versio Inferno Squad Leader",
      "upgrades": [
        "Offensive Push",
        "Overwatch",
        "Ascension Cables",
        "Iden's TL-50 Repeater",
        "Iden's ID10 Seeker Droid Droid",
        "HQ Uplink"
      ],
      "loadout": [
        "Situational Awareness",
        "Recon Intel",
        "Iden's DLT-20A Rifle",
        "Comms Relay"
      ]
    }
  ],
  "battlefieldDeck": {
    "conditions": [],
    "deployment": [],
    "objective": []
  }
}

The following is an example of a list that will spawn unrecognized placeholder cards:

{
  "author": "My Flawed List Builder",
  "points": 100,
  "armyFaction": "rebel",
  "commandCards": [
    "GONK GONK GONK!"
  ],
  "contingencies": [],
  "units": [
    {
      "name": "GONK Droid",
      "upgrades": ["Big Booma"]
    }
  ],
  "battlefieldDeck": {
    "conditions": [
      "Clear Conditions",
      "Hostile Environment",
      "Limited Visibility",
      "Minefield"
    ],
    "deployment": [
      "Advanced Positions",
      "Battlelines",
      "Major Offensive",
      "Hemmed In"
    ],
    "objective": [
      "Breakthrough",
      "Intercept the Transmissions",
      "Key Positions",
      "Recover the Supplies"
    ]
  }
}