{
  "$schema": "https://json-schema.org/draft-07/schema",
  "$id": "https://homol.work/json/legendarydb/card-schema.json",
  "type": "object",
  "title": "Generic Legendary Card",
  "description": "This schema comprises all possible combinations for any card.",
  "default": {},
  "additionalProperties": true,
  "required": [
    "Name",
    "Character",
    "StartingDeck",
    "Type",
    "Classification",
    "Ability",
    "Keywords",
    "IsRecruitable",
    "Expansion"
  ],
  "properties": {
    "Name": {
      "$id": "#/properties/Name",
      "type": "string",
      "title": "The Name of the Card",
      "description": "Nearly all cards have a name.  It can be blank if none exists.",
      "default": "",
      "examples": [
        "Divine Lightning",
        "Pumpkin Bombs",
        "Emma Frost, the White Queen",
        "Mind Gem"
      ]
    },
    "Character": {
      "$id": "#/properties/Character",
      "type": "string",
      "title": "The character that the card is related to",
      "description": "Many cards essentially have a subtitle - this would typically be when the subtitle is actually a hero or adversary name.  It can be blank if none exists.",
      "default": "",
      "examples": ["Thor", "Green Goblin", "Captain America"]
    },
    "StartingDeck": {
      "$id": "#/properties/StartingDeck",
      "type": "string",
      "title": "The Starting Deck for a card",
      "description": "The deck that a card starts the game in - there are only so many.",
      "default": "Hero",
      "examples": ["Hero", "Villain", "Sidekick", "Wound", "Transformed"],
      "enum": [
        "Hero",
        "Villain",
        "Officer",
        "Sidekick",
        "Wound",
        "Bystander",
        "Mastermind",
        "Token",
        "Transformed"
      ]
    },
    "Type": {
      "$id": "#/properties/Type",
      "type": "string",
      "title": "The Type of card",
      "description": "The type of card is one of the core building blocks of the game.",
      "default": "Playable",
      "examples": ["Wound", "Bystander", "Scheme", "Enemy Leader", "Playable"],
      "enum": [
        "Wound",
        "Token",
        "Officer",
        "Sidekick",
        "Bystander",
        "Scheme",
        "Enemy Leader",
        "Enemy Support",
        "Enemy Group",
        "Playable"
      ]
    },
    "Classification": {
      "$id": "#/properties/Classification",
      "type": "string",
      "title": "The Classification Schema",
      "description": "An explanation about the purpose of this instance.",
      "default": "Hero",
      "examples": [
        "Grievous Wound",
        "Officer",
        "Hero",
        "Special Sidekick",
        "Backup Adversaries",
        "Villain"
      ],
      "enum": [
        "Wound",
        "Grievous Wound",
        "Bindings",
        "Villain",
        "Officer",
        "Madame Hydra",
        "Hero",
        "Special Sidekick",
        "Bystander",
        "Recruitable Bystander",
        "Scheme",
        "Plot",
        "Mastermind",
        "Commander",
        "Henchmen",
        "Backup Adversaries",
        "Adversary"
      ]
    },
    "Teams": {
      "$id": "#/properties/Teams",
      "type": "array",
      "title": "The Teams a card is associated with",
      "description": "Almost all recruitable heros and villains are associate to one or more teams.",
      "default": [],
      "examples": [["Shield", "Avengers", "X-Men"]],
      "additionalItems": true,
      "items": {
        "$id": "#/properties/Teams/items",
        "type": "string",
        "title": "A team found on the card",
        "description": "Team is in the top left of the card for heros and villains, as well as a few special cards.",
        "default": "Shield",
        "examples": ["Shield", "Avengers", "X-Men"],
        "enum": [
          "Shield",
          "Avengers",
          "X-Men",
          "Champions",
          "Fantastic Four",
          "Heroes of Asgard",
          "Sinister 6",
          "Hydra",
          "Foes of Asgard",
          "Crime Syndicate",
          "Brotherhood",
          "Cabal",
          "Guardians of the Galaxy",
          "Illuminati",
          "Marvel Knights",
          "Mercs for Money",
          "New Mutants",
          "New Warriors",
          "Spider Friends",
          "Venomverse",
          "Warbound",
          "X-Force"
        ]
      },
      "minItems": 1,
      "uniqueItems": true
    },
    "Classes": {
      "$id": "#/properties/Classes",
      "type": "array",
      "title": "The Classes a card is associated with",
      "description": "Almost all recruitable heros and villains are associated to one or more classes.",
      "default": ["Basic"],
      "examples": [
        ["Instinct", "Ranged", "Strength", "Covert", "Tech", "Basic"]
      ],
      "additionalItems": true,
      "items": {
        "$id": "#/properties/Classes/items",
        "type": "string",
        "title": "A class found on the card",
        "description": "Class is in the top left of the card for heros and villains, as well as a few special cards, just below the team.",
        "default": "Basic",
        "examples": [
          "Instinct",
          "Ranged",
          "Strength",
          "Covert",
          "Tech",
          "Basic"
        ],
        "enum": ["Instinct", "Ranged", "Strength", "Covert", "Tech", "Basic"]
      },
      "minItems": 1,
      "uniqueItems": true
    },
    "Colors": {
      "$id": "#/properties/Colors",
      "type": "array",
      "title": "The Colors a card is associated with",
      "description": "Almost all recruitable heros and villains are associated to one or more colors.",
      "default": ["Grey"],
      "examples": ["Yellow", "Blue", "Green", "Red", "Silver", "Grey"],
      "additionalItems": true,
      "items": {
        "$id": "#/properties/Colors/items",
        "type": "string",
        "title": "A color found with the card",
        "description": "Color is directly tied to the class of the card.",
        "default": "Grey",
        "examples": ["Yellow", "Blue", "Green", "Red", "Silver", "Grey"],
        "enum": ["Yellow", "Blue", "Green", "Red", "Silver", "Grey"]
      },
      "minItems": 1,
      "uniqueItems": true
    },
    "Ability": {
      "$id": "#/properties/Ability",
      "type": "string",
      "title": "The Ability of the card.  Can be blank if nothing is printed.",
      "description": "The ability is the central area of text in the lower middle portion of the card.  The majority of cards have an ability.",
      "default": ""
    },
    "Keywords": {
      "$id": "#/properties/Keywords",
      "type": "array",
      "title": "Any and all keywords found on the card",
      "description": "Keywords are any word found in bold on the Ability section of the card.  They have a meaning defined in the set or expansion handbook.",
      "default": [],
      "examples": [["Healing", "Betrayal", "Ambush"]],
      "additionalItems": true,
      "items": {
        "$id": "#/properties/Keywords/items",
        "type": "string",
        "title": "A keyword found on the card",
        "description": "Keywords are typically found in the Ability section of a card.",
        "default": "",
        "examples": ["Healing", "Betrayal", "Ambush"],
        "enum": ["Healing", "Betrayal", "Ambush", "Moonlight", "Sunlight"]
      },
      "minItems": 1,
      "uniqueItems": true
    },
    "CombinationSymbols": {
      "$id": "#/properties/CombinationSymbols",
      "type": "array",
      "title": "Any combination symbols found in the ability.",
      "description": "Combinations symbols help to define any superpowers specified in the Ability text that trigger only from a Combo.",
      "default": [],
      "examples": [
        ["Tech", "Tech"],
        ["Shield", "Shield", "Shield"]
      ],
      "additionalItems": true,
      "items": {
        "$id": "#/properties/CombinationSymbols/items",
        "type": "null",
        "title": "A symbol that contributes to a combo",
        "description": "Any of the symbols that can be used for combos in the game.",
        "default": null,
        "examples": ["Instinct", "Ranged", "Strength", "Covert", "Tech"],
        "enum": [
          "Shield",
          "Avengers",
          "X-Men",
          "Champions",
          "Fantastic Four",
          "Heroes of Asgard",
          "Sinister 6",
          "Hydra",
          "Foes of Asgard",
          "Crime Syndicate",
          "Brotherhood",
          "Cabal",
          "Guardians of the Galaxy",
          "Illuminati",
          "Marvel Knights",
          "Mercs for Money",
          "New Mutants",
          "New Warriors",
          "Spider Friends",
          "Venomverse",
          "Warbound",
          "X-Force",
          "Instinct",
          "Ranged",
          "Strength",
          "Covert",
          "Tech"
        ]
      },
      "minItems": 1,
      "uniqueItems": true
    },
    "CombinationEffect": {
      "$id": "#/properties/CombinationEffect",
      "type": "string",
      "title": "The Combination Effect",
      "description": "A set of Combination Symbols trigger an effect.  This is the text of the effect (to the right of the arrow).",
      "default": "",
      "examples": [""]
    },
    "Expansion": {
      "$id": "#/properties/Expansion",
      "type": "string",
      "title": "The Expansion",
      "description": "The name fo the boxed product that the card appears in.",
      "default": "",
      "examples": ["Core", "Villains", "Civil War", "X-Men", "S.H.I.E.L.D."],
      "enum": [
        "Core",
        "Fantastic Four",
        "Dark City",
        "Villains",
        "Paint the Town Red",
        "Guardians of the Galaxy",
        "Villains: Fear Itself",
        "Secret Wars: Volume 1",
        "Secret Wars: Volume 2",
        "Captain America 75th Anniversary",
        "Deadpool",
        "Civil War",
        "Noir",
        "X-Men",
        "Spider-man Homecoming",
        "Champions",
        "World War Hulk",
        "Marvel Studios 10th Anniversary",
        "Ant-Man",
        "Venom",
        "Dimensions",
        "Revelations",
        "S.H.I.E.L.D.",
        "Heroes of Asgard",
        "New Mutants"
      ]
    },
    "AlwaysLeads": {
      "$id": "#/properties/AlwaysLeads",
      "type": "string",
      "title": "The Alwaysleads Schema",
      "description": "An explanation about the purpose of this instance.",
      "default": "",
      "examples": [""]
    },
    "CommandMasterStrike": {
      "$id": "#/properties/CommandMasterStrike",
      "type": "string",
      "title": "The Commandmasterstrike Schema",
      "description": "An explanation about the purpose of this instance.",
      "default": "",
      "examples": [""]
    },
    "VictoryPoints": {
      "$id": "#/properties/VictoryPoints",
      "type": "integer",
      "title": "The Victorypoints Schema",
      "description": "An explanation about the purpose of this instance.",
      "default": 0,
      "examples": [6.0]
    },
    "Attack": {
      "$id": "#/properties/Attack",
      "type": "integer",
      "title": "The Attack Schema",
      "description": "An explanation about the purpose of this instance.",
      "default": 0
    },
    "Recruit": {
      "$id": "#/properties/Recruit",
      "type": "integer",
      "title": "The Recruit Schema",
      "description": "An explanation about the purpose of this instance.",
      "default": 0
    },
    "PiercingEnergy": {
      "$id": "#/properties/PiercingEnergy",
      "type": "integer",
      "title": "The Piercing Energy for a card",
      "description": "Piercing Energy appears in the same area as attack or recruit for playable cards.  It should always coincide with a Piercing Energy keyword.",
      "default": 0
    },
    "RecruitCost": {
      "$id": "#/properties/RecruitCost",
      "type": "integer",
      "title": "The Recruitcost Schema",
      "description": "An explanation about the purpose of this instance.",
      "default": 0,
      "examples": [3.0]
    },
    "IsRecruitable": {
      "$id": "#/properties/IsRecruitable",
      "type": "boolean",
      "title": "The Isrecruitable Schema",
      "description": "An explanation about the purpose of this instance.",
      "default": false,
      "examples": [true]
    },
    "Setup": {
      "$id": "#/properties/Setup",
      "type": "string",
      "title": "The Setup Schema",
      "description": "An explanation about the purpose of this instance.",
      "default": "",
      "examples": [""]
    },
    "Twist": {
      "$id": "#/properties/Twist",
      "type": "string",
      "title": "The Twist Schema",
      "description": "An explanation about the purpose of this instance.",
      "default": "",
      "examples": [""]
    },
    "NumTwists": {
      "$id": "#/properties/NumTwists",
      "type": "object",
      "title": "The Numtwists Schema",
      "description": "An explanation about the purpose of this instance.",
      "default": {},
      "examples": [
        {
          "1": 9.0,
          "2": 9.0,
          "3": 9.0,
          "4": 6.0,
          "5": 6.0
        }
      ],
      "additionalProperties": true,
      "required": ["1", "2", "3", "4", "5"],
      "properties": {
        "1": {
          "$id": "#/properties/NumTwists/properties/1",
          "type": "integer",
          "title": "The 1 Schema",
          "description": "An explanation about the purpose of this instance.",
          "default": 0,
          "examples": [9.0]
        },
        "2": {
          "$id": "#/properties/NumTwists/properties/2",
          "type": "integer",
          "title": "The 2 Schema",
          "description": "An explanation about the purpose of this instance.",
          "default": 0,
          "examples": [9.0]
        },
        "3": {
          "$id": "#/properties/NumTwists/properties/3",
          "type": "integer",
          "title": "The 3 Schema",
          "description": "An explanation about the purpose of this instance.",
          "default": 0,
          "examples": [9.0]
        },
        "4": {
          "$id": "#/properties/NumTwists/properties/4",
          "type": "integer",
          "title": "The 4 Schema",
          "description": "An explanation about the purpose of this instance.",
          "default": 0,
          "examples": [6.0]
        },
        "5": {
          "$id": "#/properties/NumTwists/properties/5",
          "type": "integer",
          "title": "The 5 Schema",
          "description": "An explanation about the purpose of this instance.",
          "default": 0,
          "examples": [6.0]
        }
      }
    },
    "NumHeros": {
      "$id": "#/properties/NumHeros",
      "type": "object",
      "title": "The Numheros Schema",
      "description": "An explanation about the purpose of this instance.",
      "default": {},
      "examples": [
        {
          "3": 5.0,
          "4": 5.0,
          "5": 6.0,
          "1": 4.0,
          "2": 5.0
        }
      ],
      "additionalProperties": true,
      "required": ["1", "2", "3", "4", "5"],
      "properties": {
        "1": {
          "$id": "#/properties/NumHeros/properties/1",
          "type": "integer",
          "title": "The 1 Schema",
          "description": "An explanation about the purpose of this instance.",
          "default": 0,
          "examples": [4.0]
        },
        "2": {
          "$id": "#/properties/NumHeros/properties/2",
          "type": "integer",
          "title": "The 2 Schema",
          "description": "An explanation about the purpose of this instance.",
          "default": 0,
          "examples": [5.0]
        },
        "3": {
          "$id": "#/properties/NumHeros/properties/3",
          "type": "integer",
          "title": "The 3 Schema",
          "description": "An explanation about the purpose of this instance.",
          "default": 0,
          "examples": [5.0]
        },
        "4": {
          "$id": "#/properties/NumHeros/properties/4",
          "type": "integer",
          "title": "The 4 Schema",
          "description": "An explanation about the purpose of this instance.",
          "default": 0,
          "examples": [5.0]
        },
        "5": {
          "$id": "#/properties/NumHeros/properties/5",
          "type": "integer",
          "title": "The 5 Schema",
          "description": "An explanation about the purpose of this instance.",
          "default": 0,
          "examples": [6.0]
        }
      }
    },
    "NumVillains": {
      "$id": "#/properties/NumVillains",
      "type": "object",
      "title": "The Numvillains Schema",
      "description": "An explanation about the purpose of this instance.",
      "default": {},
      "examples": [
        {
          "4": 3.0,
          "5": 4.0,
          "1": 1.0,
          "2": 2.0,
          "3": 3.0
        }
      ],
      "additionalProperties": true,
      "required": ["1", "2", "3", "4", "5"],
      "properties": {
        "1": {
          "$id": "#/properties/NumVillains/properties/1",
          "type": "integer",
          "title": "The 1 Schema",
          "description": "An explanation about the purpose of this instance.",
          "default": 0,
          "examples": [1.0]
        },
        "2": {
          "$id": "#/properties/NumVillains/properties/2",
          "type": "integer",
          "title": "The 2 Schema",
          "description": "An explanation about the purpose of this instance.",
          "default": 0,
          "examples": [2.0]
        },
        "3": {
          "$id": "#/properties/NumVillains/properties/3",
          "type": "integer",
          "title": "The 3 Schema",
          "description": "An explanation about the purpose of this instance.",
          "default": 0,
          "examples": [3.0]
        },
        "4": {
          "$id": "#/properties/NumVillains/properties/4",
          "type": "integer",
          "title": "The 4 Schema",
          "description": "An explanation about the purpose of this instance.",
          "default": 0,
          "examples": [3.0]
        },
        "5": {
          "$id": "#/properties/NumVillains/properties/5",
          "type": "integer",
          "title": "The 5 Schema",
          "description": "An explanation about the purpose of this instance.",
          "default": 0,
          "examples": [4.0]
        }
      }
    },
    "SchemeWins": {
      "$id": "#/properties/SchemeWins",
      "type": "string",
      "title": "The Schemewins Schema",
      "description": "An explanation about the purpose of this instance.",
      "default": "",
      "examples": [""]
    },
    "SpecialRules": {
      "$id": "#/properties/SpecialRules",
      "type": "string",
      "title": "The Specialrules Schema",
      "description": "An explanation about the purpose of this instance.",
      "default": "",
      "examples": [""]
    }
  }
}
